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.
237 lines
7.0 KiB
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 == >kHeaderText )
|
|
* currTemplate = template_edit->text();
|
|
return gtkHeaderText;
|
|
}
|
|
|
|
QString ClassGeneratorConfig::gtkSource()
|
|
{
|
|
if ( currTemplate == >kSourceText )
|
|
* 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 >kHeaderText;
|
|
case 5:
|
|
return >kSourceText;
|
|
}
|
|
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"
|