00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include <qcheckbox.h>
00013 #include <qcombobox.h>
00014 #include <qtextedit.h>
00015 #include <qfile.h>
00016 #include <qfileinfo.h>
00017
00018 #include <kstandarddirs.h>
00019 #include <kconfig.h>
00020
00021 #include "cppsupportfactory.h"
00022 #include "classgeneratorconfig.h"
00023
00024 ClassGeneratorConfig::ClassGeneratorConfig(QWidget* parent, const char* name, WFlags fl)
00025 : ClassGeneratorConfigBase(parent,name,fl)
00026 {
00027 readConfig();
00028 currTemplate = &cppHeaderText;
00029 template_edit->setText(*currTemplate);
00030 }
00031
00032 ClassGeneratorConfig::ClassGeneratorConfig(QString v_cppHeaderText, QString v_cppSourceText,
00033 QString v_objcHeaderText, QString v_objcSourceText,
00034 QString v_gtkHeaderText, QString v_gtkSourceText,
00035 NameCase v_fileCase, NameCase v_defCase, NameCase v_superCase,
00036 bool v_showAuthor, bool v_genDoc, bool v_reformat,
00037 QWidget* parent, const char* name, WFlags fl )
00038 : ClassGeneratorConfigBase(parent,name,fl),
00039 cppHeaderText(v_cppHeaderText), cppSourceText(v_cppSourceText),
00040 objcHeaderText(v_objcHeaderText), objcSourceText(v_objcSourceText),
00041 gtkHeaderText(v_gtkHeaderText), gtkSourceText(v_gtkSourceText)
00042 {
00043 filecase_box->setCurrentItem((int)v_fileCase);
00044 defcase_box->setCurrentItem((int)v_defCase);
00045 supercase_box->setCurrentItem((int)v_superCase);
00046 author_box->setChecked(v_showAuthor);
00047 doc_box->setChecked(v_genDoc);
00048 reformat_box->setChecked(v_reformat);
00049
00050 currTemplate = &cppHeaderText;
00051 }
00052
00053 ClassGeneratorConfig::~ClassGeneratorConfig()
00054 {
00055 }
00056
00057
00058 void ClassGeneratorConfig::templateTypeChanged(int type)
00059 {
00060 *currTemplate = template_edit->text();
00061
00062 currTemplate = identifyTemplate(type);
00063 template_edit->setText(*currTemplate);
00064 }
00065
00066 QString ClassGeneratorConfig::cppHeader()
00067 {
00068 if (currTemplate == &cppHeaderText)
00069 *currTemplate = template_edit->text();
00070 return cppHeaderText;
00071 }
00072
00073 QString ClassGeneratorConfig::cppSource()
00074 {
00075 if (currTemplate == &cppSourceText)
00076 *currTemplate = template_edit->text();
00077 return cppSourceText;
00078 }
00079
00080 QString ClassGeneratorConfig::objcHeader()
00081 {
00082 if (currTemplate == &objcHeaderText)
00083 *currTemplate = template_edit->text();
00084 return objcHeaderText;
00085 }
00086
00087 QString ClassGeneratorConfig::objcSource()
00088 {
00089 if (currTemplate == &objcSourceText)
00090 *currTemplate = template_edit->text();
00091 return objcSourceText;
00092 }
00093
00094 QString ClassGeneratorConfig::gtkHeader()
00095 {
00096 if (currTemplate == >kHeaderText)
00097 *currTemplate = template_edit->text();
00098 return gtkHeaderText;
00099 }
00100
00101 QString ClassGeneratorConfig::gtkSource()
00102 {
00103 if (currTemplate == >kSourceText)
00104 *currTemplate = template_edit->text();
00105 return gtkSourceText;
00106 }
00107
00108 ClassGeneratorConfig::NameCase ClassGeneratorConfig::fileCase()
00109 {
00110 return (NameCase)filecase_box->currentItem();
00111 }
00112
00113 ClassGeneratorConfig::NameCase ClassGeneratorConfig::defCase()
00114 {
00115 return (NameCase)defcase_box->currentItem();
00116 }
00117
00118 ClassGeneratorConfig::NameCase ClassGeneratorConfig::superCase()
00119 {
00120 return (NameCase)supercase_box->currentItem();
00121 }
00122
00123 bool ClassGeneratorConfig::showAuthor()
00124 {
00125 return author_box->isChecked();
00126 }
00127
00128 bool ClassGeneratorConfig::genDoc()
00129 {
00130 return doc_box->isChecked();
00131 }
00132
00133 QString *ClassGeneratorConfig::identifyTemplate(int value)
00134 {
00135 switch( value ){
00136 case 0: return &cppHeaderText;
00137 case 1: return &cppSourceText;
00138 case 2: return &objcHeaderText;
00139 case 3: return &objcSourceText;
00140 case 4: return >kHeaderText;
00141 case 5: return >kSourceText;
00142 }
00143 return 0;
00144 }
00145
00146 void ClassGeneratorConfig::readConfig()
00147 {
00148 KConfig *config = CppSupportFactory::instance()->config();
00149 if (config)
00150 {
00151 config->setGroup("Class Generator");
00152
00153 filecase_box->setCurrentItem(config->readNumEntry("File Name Case", 0));
00154 defcase_box->setCurrentItem(config->readNumEntry("Defines Case", 1));
00155 supercase_box->setCurrentItem(config->readNumEntry("Superclasss Name Case", 0));
00156
00157 author_box->setChecked(config->readBoolEntry("Show Author Name", 1));
00158 doc_box->setChecked(config->readBoolEntry("Generate Empty Documentation", 1));
00159
00160 reformat_box->setChecked(config->readBoolEntry("Reformat Source", 0));
00161
00162 KStandardDirs *dirs = CppSupportFactory::instance()->dirs();
00163
00164 cppHeaderText = templateText( dirs->findResource("newclasstemplates", "cpp_header") );
00165 cppSourceText = templateText( dirs->findResource("newclasstemplates", "cpp_source") );
00166 objcHeaderText = templateText( dirs->findResource("newclasstemplates", "objc_header") );
00167 objcSourceText = templateText( dirs->findResource("newclasstemplates", "objc_source") );
00168 gtkHeaderText = templateText( dirs->findResource("newclasstemplates", "gtk_header") );
00169 gtkSourceText = templateText( dirs->findResource("newclasstemplates", "gtk_source") );
00170 }
00171 }
00172
00173
00174 QString ClassGeneratorConfig::templateText(QString path)
00175 {
00176 QFileInfo f(path);
00177 if (f.exists())
00178 {
00179 QFile file(path);
00180 if (file.open(IO_ReadOnly))
00181 {
00182 QTextStream stream( &file );
00183 return stream.read();
00184 }
00185 else
00186 return "";
00187 }
00188 else
00189 return "";
00190 }
00191
00192 void ClassGeneratorConfig::storeConfig()
00193 {
00194 KConfig *config = CppSupportFactory::instance()->config();
00195 if (config)
00196 {
00197 config->setGroup("Class Generator");
00198
00199 config->writeEntry("File Name Case", filecase_box->currentItem());
00200 config->writeEntry("Defines Case", defcase_box->currentItem());
00201 config->writeEntry("Superclasss Name Case", supercase_box->currentItem());
00202
00203 config->writeEntry("Show Author Name", author_box->isChecked());
00204 config->writeEntry("Generate Empty Documentation", doc_box->isChecked());
00205
00206 config->writeEntry("Reformat Source", reformat_box->isChecked());
00207
00208 KStandardDirs *dirs = CppSupportFactory::instance()->dirs();
00209
00210 saveTemplateText( dirs->saveLocation("newclasstemplates")+"cpp_header", cppHeader() );
00211 saveTemplateText( dirs->saveLocation("newclasstemplates")+"cpp_source", cppSource() );
00212 saveTemplateText( dirs->saveLocation("newclasstemplates")+"objc_header", objcHeader() );
00213 saveTemplateText( dirs->saveLocation("newclasstemplates")+"objc_source", objcSource() );
00214 saveTemplateText( dirs->saveLocation("newclasstemplates")+"gtk_header", gtkHeader() );
00215 saveTemplateText( dirs->saveLocation("newclasstemplates")+"gtk_source", gtkSource() );
00216 }
00217 }
00218
00219 void ClassGeneratorConfig::saveTemplateText(QString path, QString content)
00220 {
00221 QFile f(path);
00222 if (f.open(IO_WriteOnly) )
00223 {
00224 QTextStream stream( &f );
00225 stream << content;
00226 f.close();
00227 }
00228 }
00229
00230 #include "classgeneratorconfig.moc"