00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
#include <qlayout.h>
00011
#include <qlabel.h>
00012
#include <qlineedit.h>
00013
#include <qcombobox.h>
00014
00015
#include <kurlrequester.h>
00016
#include <kdebug.h>
00017
#include <kconfig.h>
00018
00019
#include "kdevcompileroptions.h"
00020
00021
#include "service.h"
00022
#include "adaproject_part.h"
00023
#include "adaglobaloptionsdlg.h"
00024
00025 AdaGlobalOptionsDlg::AdaGlobalOptionsDlg(
AdaProjectPart *part,
QWidget* parent,
const char* name, WFlags fl)
00026 :
AdaProjectOptionsDlgBase(parent,name,fl), m_part(part)
00027 {
00028
delete config_label;
00029
delete config_combo;
00030
delete addconfig_button;
00031
delete removeconfig_button;
00032
delete compiler_label;
00033
delete configuration_layout;
00034
delete configuration_line;
00035
delete exec_label;
00036
delete exec_edit;
00037
delete mainSourceLabel;
00038
delete mainSourceUrl;
00039
delete defaultopts_button;
00040
00041
offers = KTrader::self()->query(
"KDevelop/CompilerOptions",
"[X-KDevelop-Language] == 'Ada'");
00042
00043 ServiceComboBox::insertStringList(compiler_box,
offers, &
service_names, &
service_execs);
00044
00045
if (
offers.isEmpty())
00046 options_button->setEnabled(
false);
00047
00048
currentCompiler = QString::null;
00049
00050
00051
00052
00053
00054 ServiceComboBox::setCurrentText(compiler_box, ServiceComboBox::defaultCompiler(),
service_names);
00055
compiler_box_activated(compiler_box->currentText());
00056 }
00057
00058 AdaGlobalOptionsDlg::~AdaGlobalOptionsDlg()
00059 {
00060 }
00061
00062 void AdaGlobalOptionsDlg::optionsButtonClicked()
00063 {
00064
QString name = ServiceComboBox::currentText(compiler_box,
service_names);
00065
KDevCompilerOptions *plugin =
m_part->
createCompilerOptions(name);
00066
00067
if (plugin) {
00068
QString flags = plugin->
exec(
this, options_edit->text());
00069 options_edit->setText(flags);
00070
delete plugin;
00071 }
00072 }
00073
00074 void AdaGlobalOptionsDlg::compiler_box_activated(
const QString& text)
00075 {
00076
kdDebug() <<
"text changed from " <<
currentCompiler <<
" to " <<
text <<
endl;
00077
if (
currentCompiler ==
text)
00078
return;
00079
if (!
currentCompiler.isEmpty())
00080
saveCompilerOpts(
currentCompiler);
00081
currentCompiler =
text;
00082
readCompilerOpts(
currentCompiler);
00083 }
00084
00085 void AdaGlobalOptionsDlg::accept()
00086 {
00087
saveCompilerOpts(
currentCompiler);
00088
00089
saveConfigCache();
00090 }
00091
00092 void AdaGlobalOptionsDlg::saveCompilerOpts(
QString compiler )
00093 {
00094
configCache[compiler] = options_edit->text();
00095 }
00096
00097 void AdaGlobalOptionsDlg::readCompilerOpts(
QString compiler )
00098 {
00099
QString settings =
configCache[compiler];
00100
if (settings.isEmpty())
00101 {
00102
KConfig *config =
KGlobal::config();
00103 config->
setGroup(
"Ada Compiler");
00104 settings = config->
readPathEntry(compiler);
00105 }
00106
00107 options_edit->setText(settings);
00108 }
00109
00110 void AdaGlobalOptionsDlg::readConfigCache( )
00111 {
00112
00113
00114
00115
00116
00117 }
00118
00119 void AdaGlobalOptionsDlg::saveConfigCache( )
00120 {
00121
KConfig *config =
KGlobal::config();
00122 config->
setGroup(
"Ada Compiler");
00123
00124
for (
QMap<QString, QString>::iterator it =
configCache.begin(); it !=
configCache.end(); ++it)
00125 {
00126 config->
writeEntry(it.key(), it.data());
00127 }
00128 }
00129
00130
#include "adaglobaloptionsdlg.moc"