phpnewclassdlg.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "phpnewclassdlg.h"
00019 #include <klineedit.h>
00020 #include <kcompletion.h>
00021 #include <kfiledialog.h>
00022 #include <qtoolbutton.h>
00023 #include <iostream>
00024 #include <qregexp.h>
00025 #include <qtextedit.h>
00026 #include <kglobal.h>
00027 #include <kstandarddirs.h>
00028 #include <kinstance.h>
00029 #include <kdebug.h>
00030
00031 using namespace std;
00032
00033 PHPNewClassDlg::PHPNewClassDlg(const QStringList& baseClassNames,const QString& directory,QWidget *parent, const char *name) : PHPNewClassDlgBase(parent,name,true) {
00034 m_filenameModified = false;
00035 KCompletion *comp = new KCompletion();
00036 comp->setItems(baseClassNames);
00037 m_dirEdit->setText(directory);
00038
00039
00040 QString templateFile = KGlobal::instance()->dirs()->findResource("data","kdevphpsupport/newclasstemplate.txt");
00041 if(!templateFile.isNull()){
00042 QFile file(templateFile);
00043 QTextStream stream(&file);
00044 if(file.open(IO_ReadOnly)){
00045 m_classTemplate->setText(stream.read());
00046 file.close();
00047 }
00048 }
00049
00050
00051 m_baseClassEdit->setCompletionObject( comp );
00052 connect(m_baseClassEdit,SIGNAL(returnPressed(const QString&)),comp,SLOT(addItem(const QString&)));
00053 connect(m_classNameEdit,SIGNAL(textChanged(const QString&)),
00054 this,SLOT(classNameTextChanged(const QString&)));
00055 connect(m_fileNameEdit,SIGNAL(textChanged(const QString&)),
00056 this,SLOT(fileNameTextChanged(const QString&)));
00057 connect(m_dirButton,SIGNAL(clicked()),
00058 this,SLOT(slotDirButtonClicked()));
00059 }
00060 PHPNewClassDlg::~PHPNewClassDlg(){
00061 }
00062
00063 void PHPNewClassDlg::slotDirButtonClicked(){
00064 QString dir = KFileDialog::getExistingDirectory(m_dirEdit->text(),this);
00065 if(!dir.isEmpty()){
00066 m_dirEdit->setText(dir);
00067 }
00068 }
00069 void PHPNewClassDlg::classNameTextChanged(const QString& str){
00070 if(!m_filenameModified){
00071 m_fileNameEdit->setText(str.lower() + ".inc");
00072 }
00073 }
00074
00075 void PHPNewClassDlg::fileNameTextChanged(const QString&){
00076 if(m_fileNameEdit->hasFocus()){
00077 m_filenameModified = true;
00078 }
00079 }
00080 void PHPNewClassDlg::accept(){
00081 PHPNewClassDlgBase::accept();
00082
00083 QString text = m_classTemplate->text();
00084 QString classDir = m_dirEdit->text();
00085 if(!classDir.endsWith("/")) classDir += "/";
00086 QString absFileName = classDir + m_fileNameEdit->text();
00087
00088
00089 QString templateDir = KGlobal::instance()->dirs()->saveLocation("data") + "/kdevphpsupport/";
00090 QString templateFile = templateDir + "newclasstemplate.txt";
00091 QDir dir(templateDir);
00092 if(!dir.exists()){
00093 if(!dir.mkdir(templateDir)){
00094 kdWarning() << "Error on creating directory for the classtemplate" << templateDir << endl;
00095 }
00096 }
00097 QFile file(templateFile);
00098 QTextStream stream(&file);
00099
00100 if(file.open(IO_WriteOnly)){
00101 stream << text;
00102 file.close();
00103 }
00104
00105
00106 if(m_baseClassEdit->text().isEmpty()){
00107 text = text.replace(QRegExp("extends BASECLASS"),"");
00108 text = text.replace(QRegExp("BASECLASS\\:\\:BASECLASS\\(\\);"),"");
00109 }else{
00110 text = text.replace(QRegExp("BASECLASS"),m_baseClassEdit->text());
00111 }
00112 text = text.replace(QRegExp("CLASSNAME"),m_classNameEdit->text());
00113 text = text.replace(QRegExp("FILENAME"),m_fileNameEdit->text().upper());
00114 text = text.replace(QRegExp("AUTHOR"),"not implemented");
00115
00116 file.setName(absFileName);
00117 if(file.open(IO_WriteOnly)){
00118 stream << text;
00119 file.close();
00120 }
00121 }
00122
00123 #include "phpnewclassdlg.moc"
This file is part of the documentation for KDevelop Version 3.1.2.