diff options
Diffstat (limited to 'languages/pascal/compiler')
-rw-r--r-- | languages/pascal/compiler/Makefile.am | 6 | ||||
-rw-r--r-- | languages/pascal/compiler/dccoptions/Makefile.am | 16 | ||||
-rw-r--r-- | languages/pascal/compiler/dccoptions/dccoptionsplugin.cpp | 114 | ||||
-rw-r--r-- | languages/pascal/compiler/dccoptions/dccoptionsplugin.h | 56 | ||||
-rw-r--r-- | languages/pascal/compiler/dccoptions/kdevdccoptions.desktop | 54 | ||||
-rw-r--r-- | languages/pascal/compiler/dccoptions/optiontabs.cpp | 399 | ||||
-rw-r--r-- | languages/pascal/compiler/dccoptions/optiontabs.h | 116 | ||||
-rw-r--r-- | languages/pascal/compiler/fpcoptions/Makefile.am | 20 | ||||
-rw-r--r-- | languages/pascal/compiler/fpcoptions/fpcoptionsplugin.cpp | 126 | ||||
-rw-r--r-- | languages/pascal/compiler/fpcoptions/fpcoptionsplugin.h | 63 | ||||
-rw-r--r-- | languages/pascal/compiler/fpcoptions/kdevfpcoptions.desktop | 55 | ||||
-rw-r--r-- | languages/pascal/compiler/fpcoptions/optiontabs.cpp | 657 | ||||
-rw-r--r-- | languages/pascal/compiler/fpcoptions/optiontabs.h | 161 |
13 files changed, 1843 insertions, 0 deletions
diff --git a/languages/pascal/compiler/Makefile.am b/languages/pascal/compiler/Makefile.am new file mode 100644 index 00000000..c9f7528b --- /dev/null +++ b/languages/pascal/compiler/Makefile.am @@ -0,0 +1,6 @@ +# This is the collection of plugins. In contrast to the parts +# directory, these are 'transient' in a sense and don't +# share the complete KDevComponent interface. + +SUBDIRS = dccoptions fpcoptions + diff --git a/languages/pascal/compiler/dccoptions/Makefile.am b/languages/pascal/compiler/dccoptions/Makefile.am new file mode 100644 index 00000000..61dd304c --- /dev/null +++ b/languages/pascal/compiler/dccoptions/Makefile.am @@ -0,0 +1,16 @@ +# Here resides the gcc option dialog plugin. + +INCLUDES = -I$(top_srcdir)/lib/interfaces -I$(top_srcdir)/lib/interfaces/extras \ + -I$(top_srcdir)/lib/widgets $(all_includes) + +kde_module_LTLIBRARIES = libkdevdccoptions.la +libkdevdccoptions_la_LDFLAGS = -module $(all_libraries) $(KDE_PLUGIN) +libkdevdccoptions_la_LIBADD = $(top_builddir)/lib/libkdevelop.la \ + $(top_builddir)/lib/widgets/libkdevwidgets.la $(top_builddir)/lib/interfaces/extras/libkdevextras.la $(LIB_KHTML) + +libkdevdccoptions_la_SOURCES = dccoptionsplugin.cpp optiontabs.cpp + +METASOURCES = AUTO + +servicedir = $(kde_servicesdir) +service_DATA = kdevdccoptions.desktop diff --git a/languages/pascal/compiler/dccoptions/dccoptionsplugin.cpp b/languages/pascal/compiler/dccoptions/dccoptionsplugin.cpp new file mode 100644 index 00000000..a65ca9d6 --- /dev/null +++ b/languages/pascal/compiler/dccoptions/dccoptionsplugin.cpp @@ -0,0 +1,114 @@ +/*************************************************************************** + * Copyright (C) 2003 Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include <qvbox.h> +#include <qdialog.h> + +#include <kdebug.h> +#include <klocale.h> +#include <kgenericfactory.h> + +#include "dccoptionsplugin.h" + +#include "optiontabs.h" + +K_EXPORT_COMPONENT_FACTORY( libkdevdccoptions, KGenericFactory<DccOptionsPlugin>( "kdevdccoptions" ) ) + +DccOptionsPlugin::DccOptionsPlugin(QObject *parent, const char *name, const QStringList/* &args*/) + : KDevCompilerOptions(parent, name) +{ +} + +DccOptionsPlugin::~DccOptionsPlugin() +{ +} + +QString DccOptionsPlugin::exec(QWidget *parent, const QString &flags) +{ + DccOptionsDialog *dlg = new DccOptionsDialog(parent, "dcc options dialog"); + QString newFlags = flags; + dlg->setFlags(flags); + if(dlg->exec() == QDialog::Accepted) + newFlags = dlg->flags(); + delete dlg; + return newFlags; +} + + +DccOptionsDialog::DccOptionsDialog( QWidget * parent, const char * name ) + : KDialogBase(Tabbed, i18n("Delphi Compiler Options"), Ok|Cancel, Ok, parent, name, true) +{ + QVBox *vbox; + + vbox = addVBoxPage(i18n("General")); + general = new GeneralTab(vbox, "general tab"); + + vbox = addVBoxPage(i18n("Locations I")); + locations = new LocationsTab(vbox, "locations tab"); + + vbox = addVBoxPage(i18n("Locations II")); + locations2 = new Locations2Tab(vbox, "locations2 tab"); + + vbox = addVBoxPage(i18n("Code Generation")); + codegen = new CodegenTab(vbox, "codegen tab"); + + vbox = addVBoxPage(i18n("Debug && Optimization")); + debug_optim = new DebugOptimTab(vbox, "debug and optim tab"); + + vbox = addVBoxPage(i18n("Linker")); + linker = new LinkerTab(vbox, "linker tab"); +} + +DccOptionsDialog::~DccOptionsDialog( ) +{ +} + +void DccOptionsDialog::setFlags( const QString & flags ) +{ + QStringList flaglist = QStringList::split(" ", flags); + + general->readFlags(&flaglist); + codegen->readFlags(&flaglist); + debug_optim->readFlags(&flaglist); + locations->readFlags(&flaglist); + locations2->readFlags(&flaglist); + linker->readFlags(&flaglist); + + unrecognizedFlags = flaglist; +} + +QString DccOptionsDialog::flags( ) const +{ + QStringList flaglist; + + general->writeFlags(&flaglist); + locations->writeFlags(&flaglist); + locations2->writeFlags(&flaglist); + codegen->writeFlags(&flaglist); + debug_optim->writeFlags(&flaglist); + linker->writeFlags(&flaglist); + + QString flags; + QStringList::ConstIterator li; + for (li = flaglist.begin(); li != flaglist.end(); ++li) { + flags += (*li); + flags += " "; + } + + for (li = unrecognizedFlags.begin(); li != unrecognizedFlags.end(); ++li) { + flags += (*li); + flags += " "; + } + + flags.truncate(flags.length()-1); + return flags; +} + +#include "dccoptionsplugin.moc" diff --git a/languages/pascal/compiler/dccoptions/dccoptionsplugin.h b/languages/pascal/compiler/dccoptions/dccoptionsplugin.h new file mode 100644 index 00000000..35f34532 --- /dev/null +++ b/languages/pascal/compiler/dccoptions/dccoptionsplugin.h @@ -0,0 +1,56 @@ +/*************************************************************************** + * Copyright (C) 2003 Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef DCCOPTIONSPLUGIN_H +#define DCCOPTIONSPLUGIN_H + +#include <kdialogbase.h> + +#include "kdevcompileroptions.h" + +class DccOptionsPlugin : public KDevCompilerOptions +{ + Q_OBJECT + +public: + DccOptionsPlugin( QObject *parent, const char *name, const QStringList/* &args */); + ~DccOptionsPlugin(); + + virtual QString exec(QWidget *parent, const QString &flags); +}; + +class GeneralTab; +class LinkerTab; +class LocationsTab; +class Locations2Tab; +class CodegenTab; +class DebugOptimTab; + +class DccOptionsDialog : public KDialogBase +{ +public: + DccOptionsDialog( QWidget *parent=0, const char *name=0 ); + ~DccOptionsDialog(); + + void setFlags(const QString &flags); + QString flags() const; + +private: + GeneralTab *general; + LinkerTab *linker; + LocationsTab *locations; + Locations2Tab *locations2; + CodegenTab *codegen; + DebugOptimTab *debug_optim; + QStringList unrecognizedFlags; +}; + + +#endif diff --git a/languages/pascal/compiler/dccoptions/kdevdccoptions.desktop b/languages/pascal/compiler/dccoptions/kdevdccoptions.desktop new file mode 100644 index 00000000..8a577bb7 --- /dev/null +++ b/languages/pascal/compiler/dccoptions/kdevdccoptions.desktop @@ -0,0 +1,54 @@ +[Desktop Entry] +Type=Service +Exec=dcc +Comment=Borland Delphi Compiler +Comment[br]=Dastumer Delphi Borland +Comment[ca]=Compilador Delphi de Borland +Comment[da]=Borland Delphi oversætter +Comment[el]=Μεταγλωττιστής Borland Delphi +Comment[es]=Compilador de Delphi de Borland +Comment[et]=Borland Delphi kompilaator +Comment[eu]=Borland Delphi konpiladorea +Comment[fa]=مترجم برلند دلفی +Comment[fr]=Compilateur Delphi de Borland +Comment[ga]=Tiomsaitheoir Borland Delphi +Comment[gl]=Compilador Borland Delphi +Comment[hi]=बोरलैंड डेल्फ़ी कम्पायलर +Comment[hu]=Borland Delphi fordítóprogram +Comment[is]=Borland Delphi þýðandi +Comment[it]=Compilatore per Borland Delphi +Comment[ja]=Borland Delphi コンパイラ +Comment[nds]=Borland Delphi-Kompilerer +Comment[ne]=बोरल्यान्ड डेल्पी कम्पाइलर +Comment[nl]=Borland Delphi-compiler +Comment[pl]=Kompilator Borland Delphi +Comment[pt]=Compilador de Borland Delphi +Comment[pt_BR]=Compilador Delphi da Borland Delphi +Comment[ru]=Компилятор Borland Delphi +Comment[sk]=Borland Delphi kompilátor +Comment[sl]=Prevajalnik za Borland Delphi +Comment[sr]=Borland-ов преводилац Delphi-ја +Comment[sr@Latn]=Borland-ov prevodilac Delphi-ja +Comment[sv]=Borland Delphi kompilator +Comment[ta]=பொர்லான்ட் டெல்பி தொகுப்பி +Comment[tg]=Талфифгари Borland Delphi +Comment[tr]=Borland Delphi Derleyicisi +Comment[zh_CN]=Borland Delphi 编译器 +Comment[zh_TW]=Borland Delphi 編譯器 +Name=DccOptions +Name[da]=Delphi oversætter indstillinger +Name[de]=Delphi-Einstellungen (KDevelop) +Name[hi]=डीसीसी-विकल्प +Name[nds]=Delphi-Optschonen (KDevelop) +Name[pl]=Opcje Dcc +Name[sk]=Dcc možnosti +Name[sl]=Možnosti Dcc +Name[sv]=Alternativ för dcc +Name[ta]=Dccவிருப்பங்கள் +Name[tg]=DccИнтихобҳо +Name[zh_TW]=Dcc 選項 +ServiceTypes=KDevelop/CompilerOptions +X-KDE-Library=libkdevdccoptions +X-KDevelop-Version=5 +X-KDevelop-Language=Pascal +X-KDevelop-Args=dcc diff --git a/languages/pascal/compiler/dccoptions/optiontabs.cpp b/languages/pascal/compiler/dccoptions/optiontabs.cpp new file mode 100644 index 00000000..97622606 --- /dev/null +++ b/languages/pascal/compiler/dccoptions/optiontabs.cpp @@ -0,0 +1,399 @@ +/*************************************************************************** + * Copyright (C) 2003 by Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#include <kdialog.h> +#include <klocale.h> + +#include <qspinbox.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qvbuttongroup.h> +#include <qapplication.h> +#include <qpushbutton.h> + +#include "flagboxes.h" + +#include "optiontabs.h" + +LinkerTab::LinkerTab( QWidget * parent, const char * name ) + : QWidget(parent, name), radioController(new FlagRadioButtonController()), + pathController(new FlagPathEditController()), + editController(new FlagEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + QVButtonGroup *map_group = new QVButtonGroup(i18n("Map File"), this); + QRadioButton *m_defaultMap = new QRadioButton(i18n("Off"), map_group); + m_defaultMap->setChecked(true); + new FlagRadioButton(map_group, radioController, + "-GS", i18n("Segments")); + new FlagRadioButton(map_group, radioController, + "-GP", i18n("Publics")); + new FlagRadioButton(map_group, radioController, + "-GD", i18n("Detailed")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + new FlagPathEdit(this, "", pathController, + "--dynamicloader=", i18n("Default dynamic loader:"), KFile::File); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + new FlagSpinEdit(this, 0, 2147483647, 1024, 1048576, editController, + "-$M", i18n("Reserved address space:")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + layout->addStretch(); +} + +LinkerTab::~LinkerTab( ) +{ + delete radioController; + delete pathController; + delete editController; +} + +void LinkerTab::readFlags( QStringList * str ) +{ + pathController->readFlags(str); + radioController->readFlags(str); + editController->readFlags(str); +} + +void LinkerTab::writeFlags( QStringList * str ) +{ + pathController->writeFlags(str); + radioController->writeFlags(str); + editController->writeFlags(str); +} + + + +LocationsTab::LocationsTab( QWidget * parent, const char * name ) + :QWidget(parent, name), pathController(new FlagPathEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + new FlagPathEdit(this, ":", pathController, + "-I", i18n("Include search path (delimited by \":\"):")); + new FlagPathEdit(this, ":", pathController, + "-R", i18n("Resource search path (delimited by \":\"):")); + new FlagPathEdit(this, ":", pathController, + "-U", i18n("Unit search path (delimited by \":\"):")); + new FlagPathEdit(this, ":", pathController, + "-O", i18n("Object search path (delimited by \":\"):")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addStretch(); +} + +LocationsTab::~LocationsTab( ) +{ + delete pathController; +} + +void LocationsTab::readFlags( QStringList * str ) +{ + pathController->readFlags(str); +} + +void LocationsTab::writeFlags( QStringList * str ) +{ + pathController->writeFlags(str); +} + + + +Locations2Tab::Locations2Tab( QWidget * parent, const char * name ) + :QWidget(parent, name), pathController(new FlagPathEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + new FlagPathEdit(this, "", pathController, + "-E", i18n("Executable output directory:")); + new FlagPathEdit(this, "", pathController, + "-N", i18n("Unit output directory:")); + new FlagPathEdit(this, "", pathController, + "-LE", i18n("Package directory:")); + new FlagPathEdit(this, "", pathController, + "-LN", i18n("Package source code directory:")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addStretch(); +} + +Locations2Tab::~Locations2Tab( ) +{ + delete pathController; +} + +void Locations2Tab::readFlags( QStringList * str ) +{ + pathController->readFlags(str); +} + +void Locations2Tab::writeFlags( QStringList * str ) +{ + pathController->writeFlags(str); +} + + + +GeneralTab::GeneralTab( QWidget * parent, const char * name ) + :QWidget(parent, name), controller(new FlagCheckBoxController()), + editController(new FlagEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + QVButtonGroup *build_group = new QVButtonGroup(i18n("Build"), this); + new FlagCheckBox(build_group, controller, + "-B", i18n("Build all units")); + new FlagCheckBox(build_group, controller, + "-M", i18n("Make modified units")); + new FlagCheckBox(build_group, controller, + "-Q", i18n("Quiet compile")); + new FlagCheckBox(build_group, controller, + "-Z", i18n("Disable implicit package compilation")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addSpacing(10); + + new FlagListEdit(this, ":", editController, "-D", i18n("Conditional defines (delimited by \":\"):")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + new FlagListEdit(this, ":", editController, "-A", i18n("Unit aliases in form unit=alias (delimited by \":\"):")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addSpacing(10); + + QVButtonGroup *message_group = new QVButtonGroup(i18n("Messages"), this); + new FlagCheckBox(message_group, controller, + "-H", i18n("Output hint messages")); + new FlagCheckBox(message_group, controller, + "-W", i18n("Output warning messages")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addSpacing(10); + QVButtonGroup *package_group = new QVButtonGroup(i18n("Packages"), this); + new FlagListEdit(package_group, ":", editController, "-LU", i18n("Build with packages (delimited by \":\"):")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addStretch(); +} + +GeneralTab::~GeneralTab( ) +{ + delete controller; + delete editController; +} + +void GeneralTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + editController->readFlags(str); +} + +void GeneralTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + editController->writeFlags(str); +} + + + +CodegenTab::CodegenTab( QWidget * parent, const char * name ) + :QWidget(parent, name), controller(new FlagCheckBoxController()), + listController(new FlagEditController()), + radioController(new FlagRadioButtonController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); +// layout->setAutoAdd(true); + + QGridLayout *layout2 = new QGridLayout(layout, 2, 2, KDialog::spacingHint()); + + QVButtonGroup *align_group = new QVButtonGroup(i18n("Code Alignment && Stack Frames"), this); + QRadioButton *align_def = new QRadioButton(i18n("Default (-$A8)"), align_group); + align_def->setChecked(true); + new FlagRadioButton(align_group, radioController, + "'-$A1'", i18n("Never align")); + new FlagRadioButton(align_group, radioController, + "'-$A2'", i18n("On word boundaries")); + new FlagRadioButton(align_group, radioController, + "'-$A4'", i18n("On double word boundaries")); + new FlagRadioButton(align_group, radioController, + "'-$A8'", i18n("On quad word boundaries")); + new FlagCheckBox(align_group, controller, + "'-$W+'", i18n("Generate stack frames"), "'-$W-'"); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout2->addWidget(align_group, 0, 0); + + QVButtonGroup *enum_group = new QVButtonGroup(i18n("Enumeration Size"), this); + QRadioButton *enum_def = new QRadioButton(i18n("Default (-$Z1)"), enum_group); + enum_def->setChecked(true); + new FlagRadioButton(enum_group, radioController, + "'-$Z1'", i18n("Unsigned byte (256 values)")); + new FlagRadioButton(enum_group, radioController, + "'-$Z2'", i18n("Unsigned word (64K values)")); + new FlagRadioButton(enum_group, radioController, + "'-$Z4'", i18n("Unsigned double word (4096M values)")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout2->addWidget(enum_group, 0, 1); + + QVButtonGroup *compile_group = new QVButtonGroup(i18n("Compile Time Checks"), this); + new FlagCheckBox(compile_group, controller, + "'-$C+'", i18n("Assertions"), "'-$C-'", "'-$C+'"); + new FlagCheckBox(compile_group, controller, + "'-$B+'", i18n("Complete boolean evaluation"), "'-$B-'"); + new FlagCheckBox(compile_group, controller, + "'-$X+'", i18n("Extended syntax"), "'-$X-'", "'-$X+'"); + new FlagCheckBox(compile_group, controller, + "'-$H+'", i18n("Long strings"), "'-$H-'", "'-$H+'"); + new FlagCheckBox(compile_group, controller, + "'-$P+'", i18n("Open string parameters"), "'-$P-'", "'-$P+'"); + new FlagCheckBox(compile_group, controller, + "'-$T+'", i18n("Type-checked pointers"), "'-$T-'"); + new FlagCheckBox(compile_group, controller, + "'-$V+'", i18n("Var-string checking"), "'-$V-'", "'-$V+'"); + new FlagCheckBox(compile_group, controller, + "'-$J+'", i18n("Writable typed constants"), "'-$J-'"); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout2->addWidget(compile_group, 1, 0); + + QVButtonGroup *run_group = new QVButtonGroup(i18n("Run Time Checks"), this); + new FlagCheckBox(run_group, controller, + "'-$M+'", i18n("Runtime type information"), "'-$M-'"); + new FlagCheckBox(run_group, controller, + "'-$G+'", i18n("Imported data references"), "'-$G-'", "'-$G+'"); + new FlagCheckBox(run_group, controller, + "'-$I+'", i18n("Input/Output checking"), "'-$I-'", "'-$I+'"); + new FlagCheckBox(run_group, controller, + "'-$Q+'", i18n("Overflow checking"), "'-$Q-'"); + new FlagCheckBox(run_group, controller, + "'-$R+'", i18n("Range checking"), "'-$R-'"); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout2->addWidget(run_group, 1, 1); + + layout->addStretch(); +} + +CodegenTab::~CodegenTab( ) +{ + delete controller; + delete listController; + delete radioController; +} + +void CodegenTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + listController->readFlags(str); + radioController->readFlags(str); +} + +void CodegenTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + listController->writeFlags(str); + radioController->writeFlags(str); +} + + + +DebugOptimTab::DebugOptimTab( QWidget * parent, const char * name ) + : QWidget(parent, name), controller(new FlagCheckBoxController()), + radioController(new FlagRadioButtonController) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); +// layout->setAutoAdd(true); + + QVButtonGroup *optim_group = new QVButtonGroup(i18n("Optimization"), this); + new FlagCheckBox(optim_group, controller, + "'-$O+'", i18n("Enable optimizations"), "'-$O-'", "'-$O+'"); + layout->addWidget(optim_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QBoxLayout *layout2 = new QHBoxLayout(layout, KDialog::spacingHint()); + + QVButtonGroup *debug_group = new QVButtonGroup(i18n("Debugging"), this); + new FlagCheckBox(debug_group, controller, + "'-$D+'", i18n("Debug information"), "'-$D-'", "'-$D+'"); + new FlagCheckBox(debug_group, controller, + "'-$L+'", i18n("Local symbol information"), "'-$L-'", "'-$L+'"); + gdb = new FlagCheckBox(debug_group, controller, + "-V", i18n("Debug information for GDB")); + namespacedb = new FlagCheckBox(debug_group, controller, + "-VN", i18n("Namespace debug info")); + symboldb = new FlagCheckBox(debug_group, controller, + "-VR", i18n("Write symbol info in an .rsm file")); + layout2->addWidget(debug_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + QVButtonGroup *debug_add = new QVButtonGroup(i18n("Symbol Reference Information"), this); + QRadioButton *m_default = new QRadioButton(i18n("Default (-$YD)"), debug_add); + m_default->setChecked(true); + new FlagRadioButton(debug_add, radioController, + "'-$Y-'", i18n("No information")); + new FlagRadioButton(debug_add, radioController, + "'-$YD'", i18n("Definition information")); + new FlagRadioButton(debug_add, radioController, + "'-$Y+'", i18n("Full reference information")); + layout2->addWidget(debug_add); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QHBoxLayout *layout3 = new QHBoxLayout(layout, KDialog::spacingHint()); + QPushButton *release = new QPushButton(i18n("Release"), this); + QPushButton *debug = new QPushButton(i18n("Debug"), this); + layout3->addWidget(release); + layout3->addWidget(debug); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + connect(release, SIGNAL(clicked()), this, SLOT(setReleaseOptions())); + connect(debug, SIGNAL(clicked()), this, SLOT(setDebugOptions())); + + layout->addStretch(); +} + + DebugOptimTab::~ DebugOptimTab( ) +{ + delete controller; + delete radioController; +} + +void DebugOptimTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + radioController->readFlags(str); +} + +void DebugOptimTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + radioController->writeFlags(str); +} + +void DebugOptimTab::setReleaseOptions() +{ + QStringList sl = QStringList::split(",", "'-$O+','-$Y-','-$D-','-$L-'"); + readFlags(&sl); + gdb->setChecked(false); + namespacedb->setChecked(false); + symboldb->setChecked(false); +} + +void DebugOptimTab::setDebugOptions() +{ + QStringList sl = QStringList::split(",", "'-$O-','-$Y+','-$D+','-$L+',-V,-VN"); + readFlags(&sl); +} + +#include "optiontabs.moc" diff --git a/languages/pascal/compiler/dccoptions/optiontabs.h b/languages/pascal/compiler/dccoptions/optiontabs.h new file mode 100644 index 00000000..048684a5 --- /dev/null +++ b/languages/pascal/compiler/dccoptions/optiontabs.h @@ -0,0 +1,116 @@ +/*************************************************************************** + * Copyright (C) 2003 by Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + ***************************************************************************/ +#ifndef OPTIONTABS_H +#define OPTIONTABS_H + +#include <qwidget.h> + +class FlagRadioButtonController; +class FlagPathEditController; +class FlagCheckBoxController; +class FlagEditController; +class QRadioButton; +class FlagRadioButton; +class FlagCheckBox; + +class LinkerTab : public QWidget +{ +public: + LinkerTab( QWidget *parent=0, const char *name=0 ); + ~LinkerTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagRadioButtonController *radioController; + FlagPathEditController *pathController; + FlagEditController *editController; +}; + +class LocationsTab : public QWidget +{ +public: + LocationsTab( QWidget *parent=0, const char *name=0 ); + ~LocationsTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagPathEditController *pathController; +}; + +class Locations2Tab : public QWidget +{ +public: + Locations2Tab( QWidget *parent=0, const char *name=0 ); + ~Locations2Tab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagPathEditController *pathController; +}; + +class GeneralTab: public QWidget +{ +public: + GeneralTab( QWidget *parent=0, const char *name=0 ); + ~GeneralTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagEditController *editController; +}; + +class CodegenTab : public QWidget +{ +public: + CodegenTab( QWidget *parent=0, const char *name=0 ); + ~CodegenTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagEditController *listController; + FlagRadioButtonController *radioController; +}; + +class DebugOptimTab : public QWidget +{ + Q_OBJECT +public: + DebugOptimTab( QWidget *parent=0, const char *name=0 ); + ~DebugOptimTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagRadioButtonController *radioController; + + FlagCheckBox *gdb; + FlagCheckBox *namespacedb; + FlagCheckBox *symboldb; + +private slots: + void setReleaseOptions(); + void setDebugOptions(); +}; + +#endif diff --git a/languages/pascal/compiler/fpcoptions/Makefile.am b/languages/pascal/compiler/fpcoptions/Makefile.am new file mode 100644 index 00000000..2868bd01 --- /dev/null +++ b/languages/pascal/compiler/fpcoptions/Makefile.am @@ -0,0 +1,20 @@ +# Here resides the gcc option dialog plugin. + +INCLUDES = -I$(top_srcdir)/lib/interfaces -I$(top_srcdir)/lib/interfaces/extras \ + -I$(top_srcdir)/lib/widgets $(all_includes) + +kde_module_LTLIBRARIES = libkdevfpcoptions.la +libkdevfpcoptions_la_LDFLAGS = -module $(all_libraries) $(KDE_PLUGIN) +libkdevfpcoptions_la_LIBADD = $(top_builddir)/lib/libkdevelop.la \ + $(top_builddir)/lib/widgets/libkdevwidgets.la $(top_builddir)/lib/interfaces/extras/libkdevextras.la $(LIB_KHTML) + +libkdevfpcoptions_la_SOURCES = fpcoptionsplugin.cpp optiontabs.cpp + +METASOURCES = AUTO + +servicedir = $(kde_servicesdir) +service_DATA = kdevfpcoptions.desktop + + + + diff --git a/languages/pascal/compiler/fpcoptions/fpcoptionsplugin.cpp b/languages/pascal/compiler/fpcoptions/fpcoptionsplugin.cpp new file mode 100644 index 00000000..6fd73e5f --- /dev/null +++ b/languages/pascal/compiler/fpcoptions/fpcoptionsplugin.cpp @@ -0,0 +1,126 @@ +/*************************************************************************** + * Copyright (C) 2003 Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include <qvbox.h> + +#include <klocale.h> +#include <kgenericfactory.h> + +#include "optiontabs.h" +#include "fpcoptionsplugin.h" + +K_EXPORT_COMPONENT_FACTORY( libkdevfpcoptions, KGenericFactory<FpcOptionsPlugin>( "kdevfpcoptions" ) ) + +FpcOptionsPlugin::FpcOptionsPlugin(QObject *parent, const char *name, const QStringList& /*args*/) + : KDevCompilerOptions(parent, name) +{ +} + +FpcOptionsPlugin::~FpcOptionsPlugin() +{ +} + +QString FpcOptionsPlugin::exec(QWidget *parent, const QString &flags) +{ + FpcOptionsDialog *dlg = new FpcOptionsDialog(parent, "fpc options dialog"); + QString newFlags = flags; + dlg->setFlags(flags); + if (dlg->exec() == QDialog::Accepted) + newFlags = dlg->flags(); + delete dlg; + return newFlags; +} + + + +FpcOptionsDialog::FpcOptionsDialog( QWidget *parent, const char *name ) + : KDialogBase(Tabbed, i18n("Free Pascal Compiler Options"), Ok|Cancel, Ok, parent, name, true) +{ + QVBox *vbox; + + vbox = addVBoxPage(i18n("Language")); + language = new LanguageTab(vbox, "language tab"); + + vbox = addVBoxPage(i18n("Locations I")); + directories = new FilesAndDirectoriesTab(vbox, "directories tab"); + + vbox = addVBoxPage(i18n("Locations II")); + directories2 = new FilesAndDirectoriesTab2(vbox, "directories2 tab"); + + vbox = addVBoxPage(i18n("Debug && Optimization")); + debug_optim = new DebugOptimTab(vbox, "debug_optim tab"); + + vbox = addVBoxPage(i18n("Code Generation")); + codegen = new CodegenTab(vbox, "codegen tab"); + + vbox = addVBoxPage(i18n("Assembler")); + assembler = new AssemblerTab(vbox, "assembler tab"); + + vbox = addVBoxPage(i18n("Linker")); + linker = new LinkerTab(vbox, "linker tab"); + + vbox = addVBoxPage(i18n("Feedback")); + feedback = new FeedbackTab(vbox, "feedback tab"); + + vbox = addVBoxPage(i18n("Miscellaneous")); + misc = new MiscTab(vbox, "miscellaneous tab"); +} + +FpcOptionsDialog::~FpcOptionsDialog() +{ +} + +void FpcOptionsDialog::setFlags(const QString &flags) +{ + QStringList flaglist = QStringList::split(" ", flags); + + feedback->readFlags(&flaglist); + language->readFlags(&flaglist); + assembler->readFlags(&flaglist); + linker->readFlags(&flaglist); + codegen->readFlags(&flaglist); + debug_optim->readFlags(&flaglist); + directories->readFlags(&flaglist); + directories2->readFlags(&flaglist); + misc->readFlags(&flaglist); + unrecognizedFlags = flaglist; +} + +QString FpcOptionsDialog::flags() const +{ + QStringList flaglist; + + language->writeFlags(&flaglist); + directories->writeFlags(&flaglist); + directories2->writeFlags(&flaglist); + debug_optim->writeFlags(&flaglist); + codegen->writeFlags(&flaglist); + assembler->writeFlags(&flaglist); + linker->writeFlags(&flaglist); + feedback->writeFlags(&flaglist); + misc->writeFlags(&flaglist); + + QString flags; + QStringList::ConstIterator li; + for (li = flaglist.begin(); li != flaglist.end(); ++li) { + flags += (*li); + flags += " "; + } + + for (li = unrecognizedFlags.begin(); li != unrecognizedFlags.end(); ++li) { + flags += (*li); + flags += " "; + } + + flags.truncate(flags.length()-1); + return flags; +} + +#include "fpcoptionsplugin.moc" diff --git a/languages/pascal/compiler/fpcoptions/fpcoptionsplugin.h b/languages/pascal/compiler/fpcoptions/fpcoptionsplugin.h new file mode 100644 index 00000000..f6b15fff --- /dev/null +++ b/languages/pascal/compiler/fpcoptions/fpcoptionsplugin.h @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (C) 2003 Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef DCCOPTIONSPLUGIN_H +#define DCCOPTIONSPLUGIN_H + +#include <kdialogbase.h> + +#include "kdevcompileroptions.h" + +class FpcOptionsPlugin : public KDevCompilerOptions +{ + Q_OBJECT + +public: + FpcOptionsPlugin( QObject *parent, const char *name, const QStringList &args ); + ~FpcOptionsPlugin(); + + virtual QString exec(QWidget *parent, const QString &flags); +}; + + +class FeedbackTab; +class FilesAndDirectoriesTab; +class LanguageTab; +class CodegenTab; + +class FpcOptionsDialog : public KDialogBase +{ +public: + FpcOptionsDialog( QWidget *parent=0, const char *name=0 ); + ~FpcOptionsDialog(); + + void setFlags(const QString &flags); + QString flags() const; + +private: +/* GeneralTab *general; + OptimizationTab *optimization; + G77Tab *g77; + Warnings1Tab *warnings1; + Warnings2Tab *warnings2;*/ + + FeedbackTab *feedback; + FilesAndDirectoriesTab *directories; + FilesAndDirectoriesTab2 *directories2; + DebugOptimTab *debug_optim; + LanguageTab *language; + CodegenTab *codegen; + AssemblerTab *assembler; + LinkerTab *linker; + MiscTab *misc; + QStringList unrecognizedFlags; +}; + +#endif diff --git a/languages/pascal/compiler/fpcoptions/kdevfpcoptions.desktop b/languages/pascal/compiler/fpcoptions/kdevfpcoptions.desktop new file mode 100644 index 00000000..246cf08b --- /dev/null +++ b/languages/pascal/compiler/fpcoptions/kdevfpcoptions.desktop @@ -0,0 +1,55 @@ +[Desktop Entry] +Type=Service +Exec=fpc +Comment=Free Pascal Compiler +Comment[br]=Dastumer Pascal dieub +Comment[ca]=Compilador Free Pascal +Comment[da]=Free Pascal oversætter +Comment[el]=Μεταγλωττιστής Free Pascal +Comment[es]=Compilador Free Pascal +Comment[et]=Free Pascal kompilaator +Comment[eu]=Free Pascal konpiladorea +Comment[fa]=مترجم آزاد پاسکال +Comment[fr]=Compilateur Free Pascal +Comment[ga]=Tiomsaitheoir Saor Pascal +Comment[gl]=Compilador Free Pascal +Comment[hi]=फ्री पॉस्कल कम्पायलर +Comment[hu]=Szabad forráskódú Pascal fordítóprogram +Comment[is]=Frjáls Pascal þýðandi +Comment[it]=Compilatore per Free Pascal +Comment[ja]=Free Pascal コンパイラ +Comment[nds]=Free Pascal-Kompilerer +Comment[ne]=स्वतन्त्र पास्कल कम्पाइलर +Comment[nl]=Free Pascal-compiler +Comment[pt]=Compilador Free Pascal +Comment[pt_BR]=Compilador Free Pascal +Comment[ru]=Компилятор Free Pascal +Comment[sk]=Voľný Pascal kompilátor +Comment[sl]=Prevajalnik za Free Pascal +Comment[sr]=Слободни преводилац Pascal-а +Comment[sr@Latn]=Slobodni prevodilac Pascal-a +Comment[sv]=Fri Pascal-kompilator +Comment[ta]=இலவச பாஸ்கல் தொகுப்பி +Comment[tg]=Талфифгари Free Pascal +Comment[tr]=Serbest Pascal Derleyicisi +Comment[zh_CN]=Free Pascal 编译器 +Comment[zh_TW]=Free Pascal 編譯器 +Name=FpcOptions +Name[da]=Free Pascal oversætter indstillinger +Name[de]=Fpc-Einstellungen (KDevelop) +Name[hi]=एफपीसी-विकल्प +Name[nds]=Fpc-Optschonen (KDevelop) +Name[pl]=Opcje Fpc +Name[sk]=Fpc možnosti +Name[sl]=Možnosti Fpc +Name[sv]=Alternativ för fpc +Name[ta]=Fpcவிருப்பங்கள் +Name[tg]=FpcИнтихобҳо +Name[zh_TW]=Fpc 選項 +ServiceTypes=KDevelop/CompilerOptions +X-KDE-Library=libkdevfpcoptions +X-KDevelop-Version=5 +X-KDevelop-Language=Pascal +X-KDevelop-Args=fpc +X-KDevelop-Default=true + diff --git a/languages/pascal/compiler/fpcoptions/optiontabs.cpp b/languages/pascal/compiler/fpcoptions/optiontabs.cpp new file mode 100644 index 00000000..2579cb3c --- /dev/null +++ b/languages/pascal/compiler/fpcoptions/optiontabs.cpp @@ -0,0 +1,657 @@ +/*************************************************************************** + * Copyright (C) 2003 Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#include <kdialog.h> +#include <klocale.h> + +#include <qspinbox.h> +#include <qlabel.h> +#include <qlayout.h> +#include <qvbuttongroup.h> +#include <qapplication.h> +#include <qframe.h> +#include <qpushbutton.h> + +#include "flagboxes.h" + +#include "optiontabs.h" + +FeedbackTab::FeedbackTab(QWidget *parent, const char *name) + : QWidget(parent, name), controller(new FlagCheckBoxController(QStringList::split(",","-v"))) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + QVButtonGroup *output_group = new QVButtonGroup(i18n("Output"), this); + new FlagCheckBox(output_group, controller, + "-vr", i18n("Format errors like GCC does")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QVButtonGroup *verbose_group = new QVButtonGroup(i18n("Verbose"), this); + new FlagCheckBox(verbose_group, controller, + "-va", i18n("Write all possible info")); + new FlagCheckBox(verbose_group, controller, + "-v0", i18n("Write no messages")); + new FlagCheckBox(verbose_group, controller, + "-ve", i18n("Show only errors")); + new FlagCheckBox(verbose_group, controller, + "-vi", i18n("Show some general information")); + new FlagCheckBox(verbose_group, controller, + "-vw", i18n("Issue warnings")); + new FlagCheckBox(verbose_group, controller, + "-vn", i18n("Issue notes")); + new FlagCheckBox(verbose_group, controller, + "-vh", i18n("Issue hints")); + new FlagCheckBox(verbose_group, controller, + "-vd", i18n("Write other debugging info")); + + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QVButtonGroup *other_group = new QVButtonGroup(i18n("Other Information"), this); + new FlagCheckBox(other_group, controller, + "-vl", i18n("Show line numbers when processing files")); + new FlagCheckBox(other_group, controller, + "-vu", i18n("Print information on loaded units")); + new FlagCheckBox(other_group, controller, + "-vt", i18n("Print the names of loaded files")); + new FlagCheckBox(other_group, controller, + "-vm", i18n("Write which macros are defined")); + new FlagCheckBox(other_group, controller, + "-vc", i18n("Warn when processing a conditional")); + new FlagCheckBox(other_group, controller, + "-vp", i18n("Print the names of procedures and functions")); + new FlagCheckBox(other_group, controller, + "-vb", i18n("Show all procedure declarations if an overloaded function error occurs")); + + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addStretch(); +} + +FeedbackTab::~FeedbackTab() +{ + delete controller; +} + +void FeedbackTab::readFlags(QStringList *list) +{ + controller->readFlags(list); +} + +void FeedbackTab::writeFlags(QStringList *list) +{ + controller->writeFlags(list); +} + + + +FilesAndDirectoriesTab::FilesAndDirectoriesTab( QWidget * parent, const char * name ) + :QWidget(parent, name), controller(new FlagCheckBoxController()), + pathController(new FlagPathEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + new FlagPathEdit(this, ":", pathController, + "-Fu", i18n("Unit search path (delimited by \":\"):")); + new FlagPathEdit(this, ":", pathController, + "-Fi", i18n("Include file search path (delimited by \":\"):")); + new FlagPathEdit(this, ":", pathController, + "-Fo", i18n("Object file search path (delimited by \":\"):")); + new FlagPathEdit(this, ":", pathController, + "-Fl", i18n("Library search path (delimited by \":\"):")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addStretch(); +} + +FilesAndDirectoriesTab::~FilesAndDirectoriesTab( ) +{ + delete controller; + delete pathController; +} + +void FilesAndDirectoriesTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + pathController->readFlags(str); +} + +void FilesAndDirectoriesTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + pathController->writeFlags(str); +} + +FilesAndDirectoriesTab2::FilesAndDirectoriesTab2( QWidget * parent, const char * name ) + :QWidget(parent, name), controller(new FlagCheckBoxController()), + pathController(new FlagPathEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + new FlagPathEdit(this, "", pathController, + "-FE", i18n("Write executables and units in:")); + new FlagPathEdit(this, "", pathController, + "-FU", i18n("Write units in:")); + new FlagPathEdit(this, "", pathController, + "-o", i18n("Executable name:"), KFile::File); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(20); + + new FlagPathEdit(this, "", pathController, + "-e", i18n("Location of as and ld programs:")); + new FlagPathEdit(this, "", pathController, + "-FL", i18n("Dynamic linker executable:"), KFile::File); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(20); + + new FlagPathEdit(this, "", pathController, + "-Fr", i18n("Compiler messages file:"), KFile::File); + new FlagPathEdit(this, "", pathController, + "-Fe", i18n("Write compiler messages to file:"), KFile::File); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addStretch(); +} + +FilesAndDirectoriesTab2::~FilesAndDirectoriesTab2( ) +{ + delete controller; + delete pathController; +} + +void FilesAndDirectoriesTab2::readFlags( QStringList * str ) +{ + controller->readFlags(str); + pathController->readFlags(str); +} + +void FilesAndDirectoriesTab2::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + pathController->writeFlags(str); +} + + +LanguageTab::LanguageTab( QWidget * parent, const char * name ) + : QWidget(parent, name), controller(new FlagCheckBoxController(QStringList::split(",","-v"))) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + QVButtonGroup *compat_group = new QVButtonGroup(i18n("Pascal Compatibility"), this); + new FlagCheckBox(compat_group, controller, + "-S2", i18n("Switch on Delphi 2 extensions")); + new FlagCheckBox(compat_group, controller, + "-Sd", i18n("Strict Delphi compatibility mode")); + new FlagCheckBox(compat_group, controller, + "-So", i18n("Borland TP 7.0 compatibility mode")); + new FlagCheckBox(compat_group, controller, + "-Sp", i18n("GNU Pascal compatibility mode")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QVButtonGroup *ccompat_group = new QVButtonGroup(i18n("C/C++ Compatibility"), this); + new FlagCheckBox(ccompat_group, controller, + "-Sc", i18n("Support C style operators *=, +=, /=, -=")); + new FlagCheckBox(ccompat_group, controller, + "-Si", i18n("Support C++ style INLINE")); + new FlagCheckBox(ccompat_group, controller, + "-Sm", i18n("Support C style macros")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QVButtonGroup *lang_group = new QVButtonGroup(i18n("Language"), this); + new FlagCheckBox(lang_group, controller, + "-Sg", i18n("Support the label and goto commands")); + new FlagCheckBox(lang_group, controller, + "-Sh", i18n("Use ansistrings by default for strings")); + new FlagCheckBox(lang_group, controller, + "-Ss", i18n("Require the name of constructors to be init\n and the name of destructors to be done")); + new FlagCheckBox(lang_group, controller, + "-St", i18n("Allow the static keyword in objects")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addStretch(); +} + + LanguageTab::~ LanguageTab( ) +{ + delete controller; +} + +void LanguageTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); +} + +void LanguageTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); +} + +AssemblerTab::AssemblerTab( QWidget * parent, const char * name ) + : QWidget(parent, name), controller(new FlagCheckBoxController()), + asmController(new FlagRadioButtonController) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); +// layout->setAutoAdd(true); + + QBoxLayout *layout2 = new QHBoxLayout(layout, KDialog::spacingHint()); + + QVButtonGroup *info_group = new QVButtonGroup(i18n("Assembler Info"), this); + new FlagCheckBox(info_group, controller, + "-a", i18n("Do not delete assembler files")); + new FlagCheckBox(info_group, controller, + "-al", i18n("List source")); + new FlagCheckBox(info_group, controller, + "-ar", i18n("List register allocation and release info")); + new FlagCheckBox(info_group, controller, + "-at", i18n("List temporary allocations and deallocations")); + layout2->addWidget(info_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + //layout->addSpacing(10); + + QVButtonGroup *asmkind_group = new QVButtonGroup(i18n("Assembler Reader"), this); + QRadioButton *m_defaultkind = new QRadioButton(i18n("Use default reader"), asmkind_group); + m_defaultkind->setChecked(true); + new FlagRadioButton(asmkind_group, asmController, + "-Ratt", i18n("AT&T style assembler")); + new FlagRadioButton(asmkind_group, asmController, + "-Rintel", i18n("Intel style assembler")); + new FlagRadioButton(asmkind_group, asmController, + "-Rdirect", i18n("Direct assembler")); + layout2->addWidget(asmkind_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + + QVButtonGroup *asm_group = new QVButtonGroup(i18n("Assembler Output"), this); + new FlagCheckBox(asm_group, controller, + "-P", i18n("Use pipes instead of files when assembling")); + QRadioButton *m_default = new QRadioButton(i18n("Use default output"), asm_group); + m_default->setChecked(true); + new FlagRadioButton(asm_group, asmController, + "-Aas", i18n("Use GNU as")); + new FlagRadioButton(asm_group, asmController, + "-Aasout", i18n("Use GNU asaout")); + new FlagRadioButton(asm_group, asmController, + "-Anasmcoff", i18n("Use NASM coff")); + new FlagRadioButton(asm_group, asmController, + "-Anasmelf", i18n("Use NASM elf")); + new FlagRadioButton(asm_group, asmController, + "-Anasmobj", i18n("Use NASM obj")); + new FlagRadioButton(asm_group, asmController, + "-Amasm", i18n("Use MASM")); + new FlagRadioButton(asm_group, asmController, + "-Atasm", i18n("Use TASM")); + new FlagRadioButton(asm_group, asmController, + "-Acoff", i18n("Use coff")); + new FlagRadioButton(asm_group, asmController, + "-Apecoff", i18n("Use pecoff")); + layout->addWidget(asm_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addStretch(); +} + + AssemblerTab::~ AssemblerTab( ) +{ + delete controller; + delete asmController; +} + +void AssemblerTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + asmController->readFlags(str); +} + +void AssemblerTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + asmController->writeFlags(str); +} + + + +DebugOptimTab::DebugOptimTab( QWidget * parent, const char * name ) + : QWidget(parent, name), controller(new FlagCheckBoxController()), + optimController(new FlagRadioButtonController) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); +// layout->setAutoAdd(true); + + QBoxLayout *layout2 = new QHBoxLayout(layout, KDialog::spacingHint()); + + QBoxLayout *layout3 = new QVBoxLayout(layout2, KDialog::spacingHint()); + + QVButtonGroup *debug_group = new QVButtonGroup(i18n("Debugging"), this); + new FlagCheckBox(debug_group, controller, + "-g", i18n("Generate information for GDB"), "-!g"); + new FlagCheckBox(debug_group, controller, + "-gd", i18n("Generate information for DBX"), "-!gd"); + new FlagCheckBox(debug_group, controller, + "-gl", i18n("Use lineinfo unit"), "-!gl"); + new FlagCheckBox(debug_group, controller, + "-gh", i18n("Use heaptrc unit"), "-!gh"); + new FlagCheckBox(debug_group, controller, + "-gc", i18n("Generate checks for pointers"), "-!gc"); + layout3->addWidget(debug_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout3->addSpacing(10); + + QVButtonGroup *profile_group = new QVButtonGroup(i18n("Profiling"), this); + new FlagCheckBox(profile_group, controller, + "-pg", i18n("Generate profiler code for gprof"), "-!pg"); + layout3->addWidget(profile_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout3->addSpacing(10); + + QBoxLayout *layout4 = new QVBoxLayout(layout2, KDialog::spacingHint()); + + QVButtonGroup *optim_group1 = new QVButtonGroup(i18n("General Optimization"), this); + m_default = new QRadioButton(i18n("Default"), optim_group1); + m_default->setChecked(true); + new FlagRadioButton(optim_group1, optimController, + "-Og", i18n("Generate smaller code")); + optim1 = new FlagRadioButton(optim_group1, optimController, + "-OG", i18n("Generate faster code")); + layout4->addWidget(optim_group1); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout4->addSpacing(10); + + QVButtonGroup *optim_group2 = new QVButtonGroup(i18n("Optimization Levels"), this); + m_default2 = new QRadioButton(i18n("Default"), optim_group2); + m_default2->setChecked(true); + new FlagRadioButton(optim_group2, optimController, + "-O1", i18n("Level 1")); + new FlagRadioButton(optim_group2, optimController, + "-O2", i18n("Level 2")); + optim2 = new FlagRadioButton(optim_group2, optimController, + "-O3", i18n("Level 3")); + layout4->addWidget(optim_group2); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout4->addSpacing(10); + + QHBoxLayout *layout5 = new QHBoxLayout(layout, KDialog::spacingHint()); + + QVButtonGroup *optim_group3 = new QVButtonGroup(i18n("Architecture"), this); + m_default3 = new QRadioButton(i18n("Default"), optim_group3); + m_default3->setChecked(true); + new FlagRadioButton(optim_group3, optimController, + "-Op1", i18n("386/486")); + new FlagRadioButton(optim_group3, optimController, + "-Op2", i18n("Pentium/PentiumMMX")); + new FlagRadioButton(optim_group3, optimController, + "-Op2", i18n("PentiumPro/PII/Cyrix 6x86/K6")); + layout5->addWidget(optim_group3); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + QVButtonGroup *optim_group4 = new QVButtonGroup(i18n("Another Optimization"), this); + new FlagCheckBox(optim_group4, controller, + "-Or", i18n("Use register variables"), "-!Or"); + new FlagCheckBox(optim_group4, controller, + "-Ou", i18n("Uncertain optimizations"), "-!Ou"); + layout5->addWidget(optim_group4); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + QHBoxLayout *layout6 = new QHBoxLayout(layout, KDialog::spacingHint()); + QPushButton *release = new QPushButton(i18n("Release"), this); + QPushButton *debug = new QPushButton(i18n("Debug"), this); + layout6->addWidget(release); + layout6->addWidget(debug); + connect(release, SIGNAL(clicked()), this, SLOT(setReleaseOptions())); + connect(debug, SIGNAL(clicked()), this, SLOT(setDebugOptions())); + + layout->addStretch(); +} + + DebugOptimTab::~ DebugOptimTab( ) +{ + delete controller; + delete optimController; +} + +void DebugOptimTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + optimController->readFlags(str); +} + +void DebugOptimTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + optimController->writeFlags(str); +} + +void DebugOptimTab::setReleaseOptions() +{ + m_default->setChecked(true); + m_default2->setChecked(true); +// m_default3->setChecked(true); + QStringList sl = QStringList::split(",", "-!g,-!gd,-!gl,-!gh,-!gc,-!pg,-!Ou,-!Or"); + readFlags(&sl); + optim1->setChecked(true); + optim2->setChecked(true); +} + +void DebugOptimTab::setDebugOptions() +{ + QStringList sl = QStringList::split(",", "-g,-gl,-gh,-gc"); + readFlags(&sl); + m_default->setChecked(true); + m_default2->setChecked(true); +// m_default3->setChecked(true); +} + +CodegenTab::CodegenTab( QWidget * parent, const char * name ) + : QWidget(parent, name), controller(new FlagCheckBoxController()), + listController(new FlagEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + QVButtonGroup *compile_group = new QVButtonGroup(i18n("Compile Time Checks"), this); + new FlagCheckBox(compile_group, controller, + "-Sa", i18n("Include assert statements in compiled code")); + new FlagCheckBox(compile_group, controller, + "-Un", i18n("Do not check the unit name for being the same as the file name")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QVButtonGroup *run_group = new QVButtonGroup(i18n("Run Time Checks"), this); + new FlagCheckBox(run_group, controller, + "-Cr", i18n("Range checking")); + new FlagCheckBox(run_group, controller, + "-Ct", i18n("Stack checking")); + new FlagCheckBox(run_group, controller, + "-Ci", i18n("Input/Output checking")); + new FlagCheckBox(run_group, controller, + "-Co", i18n("Integer overflow checking")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + new FlagListEdit(this, ":", listController, "-d", i18n("Conditional defines (delimited by \":\"):")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + new FlagListEdit(this, ":", listController, "-u", i18n("Undefine conditional defines (delimited by \":\"):")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + new FlagSpinEdit(this, 1024, 67107840, 1, 131072, listController, + "-Cs", i18n("Stack size:")); + new FlagSpinEdit(this, 1024, 67107840, 1, 2097152, listController, + "-Ch", i18n("Heap size:")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addStretch(); +} + +CodegenTab::~ CodegenTab( ) +{ + delete controller; + delete listController; +} + +void CodegenTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + listController->readFlags(str); +} + +void CodegenTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + listController->writeFlags(str); +} + +LinkerTab::LinkerTab( QWidget * parent, const char * name ) + : QWidget(parent, name), controller(new FlagCheckBoxController()), + listController(new FlagEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + + QBoxLayout *layout2 = new QHBoxLayout(layout, KDialog::spacingHint()); + + QVButtonGroup *link_group = new QVButtonGroup(i18n("Linking Stage"), this); + new FlagCheckBox(link_group, controller, + "-CD", i18n("Create dynamic library")); + new FlagCheckBox(link_group, controller, + "-CX", i18n("Create smartlinked units")); + new FlagCheckBox(link_group, controller, + "-Ur", i18n("Generate release units")); + new FlagCheckBox(link_group, controller, + "-Cn", i18n("Omit the linking stage")); + new FlagCheckBox(link_group, controller, + "-s", i18n("Create assembling and linking script")); + layout2->addWidget(link_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + QVButtonGroup *exec_group = new QVButtonGroup(i18n("Executable Generation"), this); + new FlagCheckBox(exec_group, controller, + "-Xs", i18n("Strip the symbols from the executable")); + new FlagCheckBox(exec_group, controller, + "-XS", i18n("Link with static units")); + new FlagCheckBox(exec_group, controller, + "-XX", i18n("Link with smartlinked units")); + new FlagCheckBox(exec_group, controller, + "-XD", i18n("Link with dynamic libraries")); + new FlagCheckBox(exec_group, controller, + "-Xc", i18n("Link with the C library")); + layout2->addWidget(exec_group); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + FlagListEdit *led = new FlagListEdit(this, ":", listController, "-k", i18n("Options passed to the linker (delimited by \":\"):")); + layout->addWidget(led); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + + layout->addStretch(); +} + +LinkerTab::~LinkerTab( ) +{ + delete controller; + delete listController; +} + +void LinkerTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + listController->readFlags(str); +} + +void LinkerTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + listController->writeFlags(str); +} + +MiscTab::MiscTab( QWidget * parent, const char * name ) + : QWidget(parent, name), controller(new FlagCheckBoxController()), + radioController(new FlagRadioButtonController()), + pathController(new FlagPathEditController()), + editController(new FlagEditController()) +{ + QBoxLayout *layout = new QVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); + layout->setAutoAdd(true); + + new FlagCheckBox(this, controller, + "-B", i18n("Recompile all used units")); + new FlagCheckBox(this, controller, + "-n", i18n("Do not read default configuration file")); + new FlagPathEdit(this, "", pathController, + "@", i18n("Compiler configuration file:"), KFile::File); + new FlagSpinEdit(this, 1, 1000, 1, 50, editController, + "-Se", i18n("Stop after the error:")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QVButtonGroup *browser_group = new QVButtonGroup(i18n("Browser Info"), this); + QRadioButton *m_defaultBrowser = new QRadioButton(i18n("No browser info"), browser_group); + m_defaultBrowser->setChecked(true); + new FlagRadioButton(browser_group, radioController, + "-b", i18n("Global browser info")); + new FlagRadioButton(browser_group, radioController, + "-bl", i18n("Global and local browser info")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + QVButtonGroup *target_group = new QVButtonGroup(i18n("Target OS"), this); + QRadioButton *m_defaultTarget = new QRadioButton(i18n("Default"), target_group); + m_defaultTarget->setChecked(true); + new FlagRadioButton(target_group, radioController, + "-TGO32V1", i18n("DOS and version 1 of the DJ DELORIE extender")); + new FlagRadioButton(target_group, radioController, + "-TGO32V2", i18n("DOS and version 2 of the DJ DELORIE extender")); + new FlagRadioButton(target_group, radioController, + "-TLINUX", i18n("Linux")); + new FlagRadioButton(target_group, radioController, + "-TOS2", i18n("OS/2 (2.x) using the EMX extender")); + new FlagRadioButton(target_group, radioController, + "-TWIN32", i18n("WINDOWS 32 bit")); + new FlagRadioButton(target_group, radioController, + "-TSUNOS", i18n("SunOS/Solaris")); + new FlagRadioButton(target_group, radioController, + "-TBEOS", i18n("BeOS")); + QApplication::sendPostedEvents(this, QEvent::ChildInserted); + layout->addSpacing(10); + + layout->addStretch(); +} + +MiscTab::~ MiscTab( ) +{ + delete controller; + delete pathController; + delete radioController; + delete editController; +} + +void MiscTab::readFlags( QStringList * str ) +{ + controller->readFlags(str); + radioController->readFlags(str); + pathController->readFlags(str); + editController->readFlags(str); +} + +void MiscTab::writeFlags( QStringList * str ) +{ + controller->writeFlags(str); + radioController->writeFlags(str); + pathController->writeFlags(str); + editController->writeFlags(str); +} + +#include "optiontabs.moc" diff --git a/languages/pascal/compiler/fpcoptions/optiontabs.h b/languages/pascal/compiler/fpcoptions/optiontabs.h new file mode 100644 index 00000000..56109ae2 --- /dev/null +++ b/languages/pascal/compiler/fpcoptions/optiontabs.h @@ -0,0 +1,161 @@ +/*************************************************************************** + * Copyright (C) 2003 Alexander Dymo * + * cloudtemple@mksat.net * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ +#ifndef OPTIONTABS_H +#define OPTIONTABS_H + +#include <qwidget.h> + +class QSpinBox; +class QRadioButton; +class FlagRadioButton; +class FlagCheckBoxController; +class FlagRadioButtonController; +class FlagPathEditController; +class FlagEditController; + +class FeedbackTab : public QWidget +{ +public: + FeedbackTab( QWidget *parent=0, const char *name=0 ); + ~FeedbackTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; +}; + +class FilesAndDirectoriesTab: public QWidget +{ +public: + FilesAndDirectoriesTab( QWidget *parent = 0, const char *name = 0); + ~FilesAndDirectoriesTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagPathEditController *pathController; +}; + +class FilesAndDirectoriesTab2: public QWidget +{ +public: + FilesAndDirectoriesTab2( QWidget *parent = 0, const char *name = 0); + ~FilesAndDirectoriesTab2(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagPathEditController *pathController; +}; + +class LanguageTab : public QWidget +{ +public: + LanguageTab( QWidget *parent=0, const char *name=0 ); + ~LanguageTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; +}; + +class AssemblerTab : public QWidget +{ +public: + AssemblerTab( QWidget *parent=0, const char *name=0 ); + ~AssemblerTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagRadioButtonController *asmController; +}; + +class DebugOptimTab : public QWidget +{ + Q_OBJECT +public: + DebugOptimTab( QWidget *parent=0, const char *name=0 ); + ~DebugOptimTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagRadioButtonController *optimController; + + QRadioButton *m_default; + QRadioButton *m_default2; + QRadioButton *m_default3; + FlagRadioButton *optim1; + FlagRadioButton *optim2; + +private slots: + void setReleaseOptions(); + void setDebugOptions(); +}; + +class CodegenTab : public QWidget +{ +public: + CodegenTab( QWidget *parent=0, const char *name=0 ); + ~CodegenTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagEditController *listController; +}; + +class LinkerTab : public QWidget +{ +public: + LinkerTab( QWidget *parent=0, const char *name=0 ); + ~LinkerTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagEditController *listController; +}; + +class MiscTab : public QWidget +{ +public: + MiscTab( QWidget *parent=0, const char *name=0 ); + ~MiscTab(); + + void readFlags(QStringList *str); + void writeFlags(QStringList *str); + +private: + FlagCheckBoxController *controller; + FlagRadioButtonController *radioController; + FlagPathEditController *pathController; + FlagEditController *editController; +}; + +#endif |