1
/***************************************************************************
2
* Copyright (C) 2003 by Alexander Dymo *
3
* cloudtemple@mksat.net *
5
* This program is free software; you can redistribute it and/or modify *
6
* it under the terms of the GNU General Public License as published by *
7
* the Free Software Foundation; either version 2 of the License, or *
8
* (at your option) any later version. *
10
***************************************************************************/
12
#include <qcheckbox.h>
13
#include <qcombobox.h>
14
#include <qtextedit.h>
16
#include <qfileinfo.h>
18
#include <kstandarddirs.h>
21
#include "cppsupportfactory.h"
22
#include "classgeneratorconfig.h"
24
ClassGeneratorConfig::ClassGeneratorConfig( QWidget* parent, const char* name, WFlags fl )
25
: ClassGeneratorConfigBase( parent, name, fl )
28
currTemplate = &cppHeaderText;
29
template_edit->setText( *currTemplate );
32
ClassGeneratorConfig::ClassGeneratorConfig( QString v_cppHeaderText, QString v_cppSourceText,
33
QString v_objcHeaderText, QString v_objcSourceText,
34
QString v_gtkHeaderText, QString v_gtkSourceText,
35
NameCase v_fileCase, NameCase v_defCase, NameCase v_superCase,
36
bool v_showAuthor, bool v_genDoc, bool v_reformat,
37
QWidget* parent, const char* name, WFlags fl )
38
: ClassGeneratorConfigBase( parent, name, fl ),
39
cppHeaderText( v_cppHeaderText ), cppSourceText( v_cppSourceText ),
40
objcHeaderText( v_objcHeaderText ), objcSourceText( v_objcSourceText ),
41
gtkHeaderText( v_gtkHeaderText ), gtkSourceText( v_gtkSourceText )
43
filecase_box->setCurrentItem( ( int ) v_fileCase );
44
defcase_box->setCurrentItem( ( int ) v_defCase );
45
supercase_box->setCurrentItem( ( int ) v_superCase );
46
author_box->setChecked( v_showAuthor );
47
doc_box->setChecked( v_genDoc );
48
reformat_box->setChecked( v_reformat );
50
currTemplate = &cppHeaderText;
53
ClassGeneratorConfig::~ClassGeneratorConfig()
57
void ClassGeneratorConfig::templateTypeChanged( int type )
59
*currTemplate = template_edit->text();
61
currTemplate = identifyTemplate( type );
62
template_edit->setText( *currTemplate );
65
QString ClassGeneratorConfig::cppHeader()
67
if ( currTemplate == &cppHeaderText )
68
* currTemplate = template_edit->text();
72
QString ClassGeneratorConfig::cppSource()
74
if ( currTemplate == &cppSourceText )
75
* currTemplate = template_edit->text();
79
QString ClassGeneratorConfig::objcHeader()
81
if ( currTemplate == &objcHeaderText )
82
* currTemplate = template_edit->text();
83
return objcHeaderText;
86
QString ClassGeneratorConfig::objcSource()
88
if ( currTemplate == &objcSourceText )
89
* currTemplate = template_edit->text();
90
return objcSourceText;
93
QString ClassGeneratorConfig::gtkHeader()
95
if ( currTemplate == >kHeaderText )
96
* currTemplate = template_edit->text();
100
QString ClassGeneratorConfig::gtkSource()
102
if ( currTemplate == >kSourceText )
103
* currTemplate = template_edit->text();
104
return gtkSourceText;
107
ClassGeneratorConfig::NameCase ClassGeneratorConfig::fileCase()
109
return ( NameCase ) filecase_box->currentItem();
112
ClassGeneratorConfig::NameCase ClassGeneratorConfig::defCase()
114
return ( NameCase ) defcase_box->currentItem();
117
ClassGeneratorConfig::NameCase ClassGeneratorConfig::superCase()
119
return ( NameCase ) supercase_box->currentItem();
122
bool ClassGeneratorConfig::showAuthor()
124
return author_box->isChecked();
127
bool ClassGeneratorConfig::genDoc()
129
return doc_box->isChecked();
132
QString *ClassGeneratorConfig::identifyTemplate( int value )
137
return & cppHeaderText;
139
return &cppSourceText;
141
return &objcHeaderText;
143
return &objcSourceText;
145
return >kHeaderText;
147
return >kSourceText;
152
void ClassGeneratorConfig::readConfig()
154
KConfig * config = CppSupportFactory::instance() ->config();
157
config->setGroup( "Class Generator" );
159
filecase_box->setCurrentItem( config->readNumEntry( "File Name Case", 0 ) );
160
defcase_box->setCurrentItem( config->readNumEntry( "Defines Case", 1 ) );
161
supercase_box->setCurrentItem( config->readNumEntry( "Superclasss Name Case", 0 ) );
163
author_box->setChecked( config->readBoolEntry( "Show Author Name", 1 ) );
164
doc_box->setChecked( config->readBoolEntry( "Generate Empty Documentation", 1 ) );
166
reformat_box->setChecked( config->readBoolEntry( "Reformat Source", 0 ) );
168
KStandardDirs *dirs = CppSupportFactory::instance() ->dirs();
170
cppHeaderText = templateText( dirs->findResource( "newclasstemplates", "cpp_header" ) );
171
cppSourceText = templateText( dirs->findResource( "newclasstemplates", "cpp_source" ) );
172
objcHeaderText = templateText( dirs->findResource( "newclasstemplates", "objc_header" ) );
173
objcSourceText = templateText( dirs->findResource( "newclasstemplates", "objc_source" ) );
174
gtkHeaderText = templateText( dirs->findResource( "newclasstemplates", "gtk_header" ) );
175
gtkSourceText = templateText( dirs->findResource( "newclasstemplates", "gtk_source" ) );
180
QString ClassGeneratorConfig::templateText( QString path )
186
if ( file.open( IO_ReadOnly ) )
188
QTextStream stream( &file );
189
return stream.read();
198
void ClassGeneratorConfig::storeConfig()
200
KConfig * config = CppSupportFactory::instance() ->config();
203
config->setGroup( "Class Generator" );
205
config->writeEntry( "File Name Case", filecase_box->currentItem() );
206
config->writeEntry( "Defines Case", defcase_box->currentItem() );
207
config->writeEntry( "Superclasss Name Case", supercase_box->currentItem() );
209
config->writeEntry( "Show Author Name", author_box->isChecked() );
210
config->writeEntry( "Generate Empty Documentation", doc_box->isChecked() );
212
config->writeEntry( "Reformat Source", reformat_box->isChecked() );
214
KStandardDirs *dirs = CppSupportFactory::instance() ->dirs();
216
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "cpp_header", cppHeader() );
217
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "cpp_source", cppSource() );
218
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "objc_header", objcHeader() );
219
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "objc_source", objcSource() );
220
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "gtk_header", gtkHeader() );
221
saveTemplateText( dirs->saveLocation( "newclasstemplates" ) + "gtk_source", gtkSource() );
225
void ClassGeneratorConfig::saveTemplateText( QString path, QString content )
228
if ( f.open( IO_WriteOnly ) )
230
QTextStream stream( &f );
236
#include "classgeneratorconfig.moc"