You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/languages/cpp/classgeneratorconfig.cpp

237 lines
7.0 KiB

/***************************************************************************
* Copyright (C) 2003 by Alexander Dymo *
* cloudtemple@mksat.net *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qtextedit.h>
#include <qfile.h>
#include <qfileinfo.h>
#include <kstandarddirs.h>
#include <kconfig.h>
#include "cppsupportfactory.h"
#include "classgeneratorconfig.h"
ClassGeneratorConfig::ClassGeneratorConfig( QWidget* parent, const char* name, WFlags fl )
: ClassGeneratorConfigBase( parent, name, fl )
{
readConfig();
currTemplate = &cppHeaderText;
template_edit->setText( *currTemplate );
}
ClassGeneratorConfig::ClassGeneratorConfig( QString v_cppHeaderText, QString v_cppSourceText,
QString v_objcHeaderText, QString v_objcSourceText,
QString v_gtkHeaderText, QString v_gtkSourceText,
NameCase v_fileCase, NameCase v_defCase, NameCase v_superCase,
bool v_showAuthor, bool v_genDoc, bool v_reformat,
QWidget* parent, const char* name, WFlags fl )
: ClassGeneratorConfigBase( parent, name, fl ),
cppHeaderText( v_cppHeaderText ), cppSourceText( v_cppSourceText ),
objcHeaderText( v_objcHeaderText ), objcSourceText( v_objcSourceText ),
gtkHeaderText( v_gtkHeaderText ), gtkSourceText( v_gtkSourceText )
{
filecase_box->setCurrentItem( ( int ) v_fileCase );
defcase_box->setCurrentItem( ( int ) v_defCase );
supercase_box->setCurrentItem( ( int ) v_superCase );
author_box->setChecked( v_showAuthor );
doc_box->setChecked( v_genDoc );
reformat_box->setChecked( v_reformat );
currTemplate = &cppHeaderText;
}
ClassGeneratorConfig::~ClassGeneratorConfig()
{}
/*$SPECIALIZATION$*/
void ClassGeneratorConfig::templateTypeChanged( int type )
{
*currTemplate = template_edit->text();
currTemplate = identifyTemplate( type );
template_edit->setText( *currTemplate );
}
QString ClassGeneratorConfig::cppHeader()
{
if ( currTemplate == &cppHeaderText )
* currTemplate = template_edit->text();
return cppHeaderText;
}
QString ClassGeneratorConfig::cppSource()
{
if ( currTemplate == &cppSourceText )
* currTemplate = template_edit->text();
return cppSourceText;
}
QString ClassGeneratorConfig::objcHeader()
{
if ( currTemplate == &objcHeaderText )
* currTemplate = template_edit->text();
return objcHeaderText;
}
QString ClassGeneratorConfig::objcSource()
{
if ( currTemplate == &objcSourceText )
* currTemplate = template_edit->text();
return objcSourceText;
}
QString ClassGeneratorConfig::gtkHeader()
{
if ( currTemplate == &gtkHeaderText )
* currTemplate = template_edit->text();
return gtkHeaderText;
}
QString ClassGeneratorConfig::gtkSource()
{
if ( currTemplate == &gtkSourceText )
* currTemplate = template_edit->text();
return gtkSourceText;
}
ClassGeneratorConfig::NameCase ClassGeneratorConfig::fileCase()
{
return ( NameCase ) filecase_box->currentItem();
}
ClassGeneratorConfig::NameCase ClassGeneratorConfig::defCase()
{
return ( NameCase ) defcase_box->currentItem();
}
ClassGeneratorConfig::NameCase ClassGeneratorConfig::superCase()
{
return ( NameCase ) supercase_box->currentItem();
}
bool ClassGeneratorConfig::showAuthor()
{
return author_box->isChecked();
}
bool ClassGeneratorConfig::genDoc()
{
return doc_box->isChecked();
}
QString *ClassGeneratorConfig::identifyTemplate( int value )
{
switch ( value )
{
case 0:
return & cppHeaderText;
case 1:
return &cppSourceText;
case 2:
return &objcHeaderText;
case 3:
return &objcSourceText;
case 4:
return &gtkHeaderText;
case 5:
return &gtkSourceText;
}
return 0;
}
void ClassGeneratorConfig::readConfig()
{
KConfig * config = CppSupportFactory::instance() ->config();
if ( config )
{
config->setGroup( "Class Generator" );
filecase_box->setCurrentItem( config->readNumEntry( "File Name Case", 0 ) );
defcase_box->setCurrentItem( config->readNumEntry( "Defines Case", 1 ) );
supercase_box->setCurrentItem( config->readNumEntry( "Superclasss Name Case", 0 ) );
author_box->setChecked( config->readBoolEntry( "Show Author Name", 1 ) );
doc_box->setChecked( config->readBoolEntry( "Generate Empty Documentation", 1 ) );
reformat_box->setChecked( config->readBoolEntry( "Reformat Source", 0 ) );
KStandardDirs *dirs = CppSupportFactory::instance() ->dirs();
cppHeaderText = templateText( dirs->findResource( "newclasstemplates", "cpp_header" ) );
cppSourceText = templateText( dirs->findResource( "newclasstemplates", "cpp_source" ) );
objcHeaderText = templateText( dirs->findResource( "newclasstemplates", "objc_header" ) );
objcSourceText = templateText( dirs->findResource( "newclasstemplates", "objc_source" ) );
gtkHeaderText = templateText( dirs->findResource( "newclasstemplates", "gtk_header" ) );
gtkSourceText = templateText( dirs->findResource( "newclasstemplates", "gtk_source" ) );
}
}
QString ClassGeneratorConfig::templateText( QString path )
{
QFileInfo f( path );
if ( f.exists() )
{
QFile file( path );
if ( file.open( IO_ReadOnly ) )
{
QTextStream stream( &file );
return stream.read();
}
else
return "";
}
else
return "";
}
void ClassGeneratorConfig::storeConfig()
{
KConfig * config = CppSupportFactory::instance() ->config();
if ( config )
{
config->setGroup( "Class Generator" );
config->writeEntry( "File Name Case", filecase_box->currentItem() );
config->writeEntry( "Defines Case", defcase_box->currentItem() );
config->writeEntry( "Superclasss Name Case", supercase_box->currentItem() );
config->writeEntry( "Show Author Name", author_box->isChecked() );
config->writeEntry( "Generate Empty Documentation", doc_box->isChecked() );
config->writeEntry( "Reformat Source", reformat_box->isChecked() );
KStandardDirs *dirs = CppSupportFactory::instance() ->dirs();
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "cpp_header", cppHeader() );
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "cpp_source", cppSource() );
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "objc_header", objcHeader() );
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "objc_source", objcSource() );
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "gtk_header", gtkHeader() );
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "gtk_source", gtkSource() );
}
}
void ClassGeneratorConfig::saveTemplateText( QString path, QString content )
{
QFile f( path );
if ( f.open( IO_WriteOnly ) )
{
QTextStream stream( &f );
stream << content;
f.close();
}
}
#include "classgeneratorconfig.moc"