diff options
Diffstat (limited to 'languages/php/phpconfigwidget.cpp')
-rw-r--r-- | languages/php/phpconfigwidget.cpp | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/languages/php/phpconfigwidget.cpp b/languages/php/phpconfigwidget.cpp new file mode 100644 index 00000000..829e3038 --- /dev/null +++ b/languages/php/phpconfigwidget.cpp @@ -0,0 +1,161 @@ +#include "domutil.h" +#include <kprocess.h> +#include <klineedit.h> +#include <qcheckbox.h> +#include <qmultilineedit.h> +#include <qcstring.h> +#include <iostream> +#include <qradiobutton.h> + +#include <kfiledialog.h> +#include <kstandarddirs.h> + +#include "phpinfodlg.h" +#include "phpconfigwidget.h" +#include "phpconfigdata.h" + +using namespace std; + +PHPConfigWidget::PHPConfigWidget(PHPConfigData* data,QWidget* parent, const char* name, WFlags fl ) + : PHPConfigWidgetBase( parent, name, fl ) +{ + configData = data; + m_phpInfo = ""; + + PHPConfigData::InvocationMode mode = configData->getInvocationMode(); + + // page "Invocation" + if (mode == PHPConfigData::Shell) { + callPHPDirectly_radio->setChecked(true); + } + + if (mode == PHPConfigData::Web) { + callWebserver_radio->setChecked(true); + } + + // page webserver + QString weburl = configData->getWebURL(); + if (weburl.isEmpty()) + weburl = "http://localhost/"; + weburl_edit->setText(weburl); + + // page shell + QString exepath = configData->getPHPExecPath(); + if (exepath.isEmpty()) { + QString fiexepath = KStandardDirs::findExe("php"); + + if (exepath.isEmpty()) + exepath = "/usr/local/bin/php"; + } + + exe_edit->setText(exepath); + + // page options + PHPConfigData::StartupFileMode phpStartupFileMode = configData->getStartupFileMode(); + QString phpStartupFile = configData->getStartupFile(); + + useDefaultFile_edit->setText(phpStartupFile); + + if(phpStartupFileMode == PHPConfigData::Current) { + useCurrentFile_radio->setChecked(true); + } + + if(phpStartupFileMode == PHPConfigData::Default) { + useDefaultFile_radio->setChecked(true); + } + + QString includepath = configData->getPHPIncludePath(); + include_path_edit->setText(includepath); + + codeCompletion_checkbox->setChecked(configData->getCodeCompletion()); + codeHinting_checkbox->setChecked(configData->getCodeHinting()); + realtimeParsing_checkbox->setChecked(configData->getRealtimeParsing()); +} + +/* + * Destroys the object and frees any allocated resources + */ +PHPConfigWidget::~PHPConfigWidget() +{ + // no need to delete child widgets, Qt does it all for us +} + +void PHPConfigWidget::accept() +{ + // invocation + if (callPHPDirectly_radio->isChecked()){ + configData->setInvocationMode(PHPConfigData::Shell); + } + if (callWebserver_radio->isChecked()){ + configData->setInvocationMode(PHPConfigData::Web); + } + + // webserver + configData->setWebURL(weburl_edit->text()); + + // shell + configData->setPHPExePath(exe_edit->text()); + + // config + configData->setPHPIniPath(ini_edit->text()); + + // options + configData->setStartupFile(useDefaultFile_edit->text()); + + if (useCurrentFile_radio->isChecked()) { + configData->setStartupFileMode(PHPConfigData::Current); + } + if (useDefaultFile_radio->isChecked()){ + configData->setStartupFileMode(PHPConfigData::Default); + } + + configData->setPHPIncludePath(include_path_edit->text()); + configData->setCodeCompletion(codeCompletion_checkbox->isChecked()); + configData->setCodeHinting(codeHinting_checkbox->isChecked()); + configData->setRealtimeParsing(realtimeParsing_checkbox->isChecked()); + + configData->storeConfig(); +} + +void PHPConfigWidget::slotZendButtonClicked() +{ + qWarning( "PHPConfigWidgetBase::slotZendButtonClicked(): Not implemented yet!" ); +} + +void PHPConfigWidget::slotAboutClicked() +{ + qWarning( "PHPConfigWidget::slotAboutClicked()" ); + KShellProcess proc("/bin/sh"); + proc << exe_edit->text(); + proc << "-m"; + + connect( &proc, SIGNAL(receivedStdout (KProcess*, char*, int)), + this, SLOT(slotReceivedPHPInfo (KProcess*, char*, int))); + proc.start(KProcess::Block,KProcess::Stdout); + PHPInfoDlg dlg(this,"phpinfo",true); + dlg.php_edit->setText(m_phpInfo); + dlg.exec(); + m_phpInfo = ""; +} + +void PHPConfigWidget::slotReceivedPHPInfo (KProcess* /*proc*/, char* buffer, int buflen){ + m_phpInfo += QCString(buffer,buflen+1); +} + +void PHPConfigWidget::slotPHPExeButtonClicked(){ + QString exe = KFileDialog::getOpenFileName(QFileInfo(exe_edit->text()).filePath()); + if (!exe.isEmpty()){ + exe_edit->setText(exe); + } +} + +void PHPConfigWidget::slotPHPIniButtonClicked() +{ + QString file = KFileDialog::getOpenFileName(QFileInfo(exe_edit->text()).filePath(), QString("*.ini|INI File (*.ini)")); + + if (!file.isEmpty()){ + ini_edit->setText(file); + } +} + +#include "phpconfigwidget.moc" |