/*************************************************************************** * 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 #include #include #include #include #include #include #include #include #include "flagboxes.h" #include "optiontabs.h" FeedbackTab::FeedbackTab(TQWidget *parent, const char *name) : TQWidget(parent, name), controller(new FlagCheckBoxController(TQStringList::split(",","-v"))) { TQBoxLayout *layout = new TQVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); layout->setAutoAdd(true); TQVButtonGroup *output_group = new TQVButtonGroup(i18n("Output"), this); new FlagCheckBox(output_group, controller, "-vr", i18n("Format errors like GCC does")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *verbose_group = new TQVButtonGroup(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *other_group = new TQVButtonGroup(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addStretch(); } FeedbackTab::~FeedbackTab() { delete controller; } void FeedbackTab::readFlags(TQStringList *list) { controller->readFlags(list); } void FeedbackTab::writeFlags(TQStringList *list) { controller->writeFlags(list); } FilesAndDirectoriesTab::FilesAndDirectoriesTab( TQWidget * parent, const char * name ) :TQWidget(parent, name), controller(new FlagCheckBoxController()), pathController(new FlagPathEditController()) { TQBoxLayout *layout = new TQVBoxLayout(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 \":\"):")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addStretch(); } FilesAndDirectoriesTab::~FilesAndDirectoriesTab( ) { delete controller; delete pathController; } void FilesAndDirectoriesTab::readFlags( TQStringList * str ) { controller->readFlags(str); pathController->readFlags(str); } void FilesAndDirectoriesTab::writeFlags( TQStringList * str ) { controller->writeFlags(str); pathController->writeFlags(str); } FilesAndDirectoriesTab2::FilesAndDirectoriesTab2( TQWidget * parent, const char * name ) :TQWidget(parent, name), controller(new FlagCheckBoxController()), pathController(new FlagPathEditController()) { TQBoxLayout *layout = new TQVBoxLayout(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); TQApplication::sendPostedEvents(this, TQEvent::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); TQApplication::sendPostedEvents(this, TQEvent::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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addStretch(); } FilesAndDirectoriesTab2::~FilesAndDirectoriesTab2( ) { delete controller; delete pathController; } void FilesAndDirectoriesTab2::readFlags( TQStringList * str ) { controller->readFlags(str); pathController->readFlags(str); } void FilesAndDirectoriesTab2::writeFlags( TQStringList * str ) { controller->writeFlags(str); pathController->writeFlags(str); } LanguageTab::LanguageTab( TQWidget * parent, const char * name ) : TQWidget(parent, name), controller(new FlagCheckBoxController(TQStringList::split(",","-v"))) { TQBoxLayout *layout = new TQVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); layout->setAutoAdd(true); TQVButtonGroup *compat_group = new TQVButtonGroup(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *ccompat_group = new TQVButtonGroup(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *lang_group = new TQVButtonGroup(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addStretch(); } LanguageTab::~ LanguageTab( ) { delete controller; } void LanguageTab::readFlags( TQStringList * str ) { controller->readFlags(str); } void LanguageTab::writeFlags( TQStringList * str ) { controller->writeFlags(str); } AssemblerTab::AssemblerTab( TQWidget * parent, const char * name ) : TQWidget(parent, name), controller(new FlagCheckBoxController()), asmController(new FlagRadioButtonController) { TQBoxLayout *layout = new TQVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); // layout->setAutoAdd(true); TQBoxLayout *layout2 = new TQHBoxLayout(layout, KDialog::spacingHint()); TQVButtonGroup *info_group = new TQVButtonGroup(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); //layout->addSpacing(10); TQVButtonGroup *asmkind_group = new TQVButtonGroup(i18n("Assembler Reader"), this); TQRadioButton *m_defaultkind = new TQRadioButton(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *asm_group = new TQVButtonGroup(i18n("Assembler Output"), this); new FlagCheckBox(asm_group, controller, "-P", i18n("Use pipes instead of files when assembling")); TQRadioButton *m_default = new TQRadioButton(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addStretch(); } AssemblerTab::~ AssemblerTab( ) { delete controller; delete asmController; } void AssemblerTab::readFlags( TQStringList * str ) { controller->readFlags(str); asmController->readFlags(str); } void AssemblerTab::writeFlags( TQStringList * str ) { controller->writeFlags(str); asmController->writeFlags(str); } DebugOptimTab::DebugOptimTab( TQWidget * parent, const char * name ) : TQWidget(parent, name), controller(new FlagCheckBoxController()), optimController(new FlagRadioButtonController) { TQBoxLayout *layout = new TQVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); // layout->setAutoAdd(true); TQBoxLayout *layout2 = new TQHBoxLayout(layout, KDialog::spacingHint()); TQBoxLayout *layout3 = new TQVBoxLayout(layout2, KDialog::spacingHint()); TQVButtonGroup *debug_group = new TQVButtonGroup(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout3->addSpacing(10); TQVButtonGroup *profile_group = new TQVButtonGroup(i18n("Profiling"), this); new FlagCheckBox(profile_group, controller, "-pg", i18n("Generate profiler code for gprof"), "-!pg"); layout3->addWidget(profile_group); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout3->addSpacing(10); TQBoxLayout *layout4 = new TQVBoxLayout(layout2, KDialog::spacingHint()); TQVButtonGroup *optim_group1 = new TQVButtonGroup(i18n("General Optimization"), this); m_default = new TQRadioButton(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout4->addSpacing(10); TQVButtonGroup *optim_group2 = new TQVButtonGroup(i18n("Optimization Levels"), this); m_default2 = new TQRadioButton(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout4->addSpacing(10); TQHBoxLayout *layout5 = new TQHBoxLayout(layout, KDialog::spacingHint()); TQVButtonGroup *optim_group3 = new TQVButtonGroup(i18n("Architecture"), this); m_default3 = new TQRadioButton(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); TQVButtonGroup *optim_group4 = new TQVButtonGroup(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); TQHBoxLayout *layout6 = new TQHBoxLayout(layout, KDialog::spacingHint()); TQPushButton *release = new TQPushButton(i18n("Release"), this); TQPushButton *debug = new TQPushButton(i18n("Debug"), this); layout6->addWidget(release); layout6->addWidget(debug); connect(release, TQT_SIGNAL(clicked()), this, TQT_SLOT(setReleaseOptions())); connect(debug, TQT_SIGNAL(clicked()), this, TQT_SLOT(setDebugOptions())); layout->addStretch(); } DebugOptimTab::~ DebugOptimTab( ) { delete controller; delete optimController; } void DebugOptimTab::readFlags( TQStringList * str ) { controller->readFlags(str); optimController->readFlags(str); } void DebugOptimTab::writeFlags( TQStringList * str ) { controller->writeFlags(str); optimController->writeFlags(str); } void DebugOptimTab::setReleaseOptions() { m_default->setChecked(true); m_default2->setChecked(true); // m_default3->setChecked(true); TQStringList sl = TQStringList::split(",", "-!g,-!gd,-!gl,-!gh,-!gc,-!pg,-!Ou,-!Or"); readFlags(&sl); optim1->setChecked(true); optim2->setChecked(true); } void DebugOptimTab::setDebugOptions() { TQStringList sl = TQStringList::split(",", "-g,-gl,-gh,-gc"); readFlags(&sl); m_default->setChecked(true); m_default2->setChecked(true); // m_default3->setChecked(true); } CodegenTab::CodegenTab( TQWidget * parent, const char * name ) : TQWidget(parent, name), controller(new FlagCheckBoxController()), listController(new FlagEditController()) { TQBoxLayout *layout = new TQVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); layout->setAutoAdd(true); TQVButtonGroup *compile_group = new TQVButtonGroup(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *run_group = new TQVButtonGroup(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); new FlagListEdit(this, ":", listController, "-d", i18n("Conditional defines (delimited by \":\"):")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); new FlagListEdit(this, ":", listController, "-u", i18n("Undefine conditional defines (delimited by \":\"):")); TQApplication::sendPostedEvents(this, TQEvent::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:")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addStretch(); } CodegenTab::~ CodegenTab( ) { delete controller; delete listController; } void CodegenTab::readFlags( TQStringList * str ) { controller->readFlags(str); listController->readFlags(str); } void CodegenTab::writeFlags( TQStringList * str ) { controller->writeFlags(str); listController->writeFlags(str); } LinkerTab::LinkerTab( TQWidget * parent, const char * name ) : TQWidget(parent, name), controller(new FlagCheckBoxController()), listController(new FlagEditController()) { TQBoxLayout *layout = new TQVBoxLayout(this, KDialog::marginHint(), KDialog::spacingHint()); TQBoxLayout *layout2 = new TQHBoxLayout(layout, KDialog::spacingHint()); TQVButtonGroup *link_group = new TQVButtonGroup(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); TQVButtonGroup *exec_group = new TQVButtonGroup(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); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); FlagListEdit *led = new FlagListEdit(this, ":", listController, "-k", i18n("Options passed to the linker (delimited by \":\"):")); layout->addWidget(led); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addStretch(); } LinkerTab::~LinkerTab( ) { delete controller; delete listController; } void LinkerTab::readFlags( TQStringList * str ) { controller->readFlags(str); listController->readFlags(str); } void LinkerTab::writeFlags( TQStringList * str ) { controller->writeFlags(str); listController->writeFlags(str); } MiscTab::MiscTab( TQWidget * parent, const char * name ) : TQWidget(parent, name), controller(new FlagCheckBoxController()), radioController(new FlagRadioButtonController()), pathController(new FlagPathEditController()), editController(new FlagEditController()) { TQBoxLayout *layout = new TQVBoxLayout(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:")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *browser_group = new TQVButtonGroup(i18n("Browser Info"), this); TQRadioButton *m_defaultBrowser = new TQRadioButton(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); TQVButtonGroup *target_group = new TQVButtonGroup(i18n("Target OS"), this); TQRadioButton *m_defaultTarget = new TQRadioButton(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")); TQApplication::sendPostedEvents(this, TQEvent::ChildInserted); layout->addSpacing(10); layout->addStretch(); } MiscTab::~ MiscTab( ) { delete controller; delete pathController; delete radioController; delete editController; } void MiscTab::readFlags( TQStringList * str ) { controller->readFlags(str); radioController->readFlags(str); pathController->readFlags(str); editController->readFlags(str); } void MiscTab::writeFlags( TQStringList * str ) { controller->writeFlags(str); radioController->writeFlags(str); pathController->writeFlags(str); editController->writeFlags(str); } #include "optiontabs.moc"