/*************************************************************************** * Copyright (C) 2006-2012 by Thomas Schweitzer * * thomas-schweitzer(at)arcor.de * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License version 2.0 as * * published by the Free Software Foundation. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program in the file LICENSE.GPL; if not, write to the * * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ #ifndef INDENTHANDLER_H #define INDENTHANDLER_H #include class MainWindow; class UiGuiErrorMessage; ///-- class UiGuiIniFileParser; class TQComboBox; class TQToolBox; class TQToolButton; class TQVBoxLayout; ///-- class TQMenu; ///-- class TQLabel; ///-- class TQSpinBox; ///-- class TQCheckBox; ///-- class TQLineEdit; class IndentHandler : public TQWidget { Q_OBJECT public: IndentHandler(int indenterID, MainWindow *mainWindow = nullptr, TQWidget *parent = nullptr); ~IndentHandler(); ///-- TQString generateShellScript(const TQString &configFilename); ///-- TQString callIndenter(TQString sourceCode, TQString inputFileExtension); bool loadConfigFile(const TQString &filePathName); void resetToDefaultValues(); TQStringList getAvailableIndenters(); ///-- TQString getPossibleIndenterFileExtensions(); TQString getParameterString(); TQString getIndenterCfgFile(); ///-- TQString getManual(); ///-- TQString getCurrentIndenterName(); void contextMenuEvent(TQContextMenuEvent *event); ///-- int getIndenterId(); ///-- signals: void indenterSettingsChanged(); ///-- void selectedIndenterIndexChanged(int index); ///-- protected: ///-- bool event(TQEvent *event); ///-- void wheelEvent(TQWheelEvent *event); ///-- private slots: void setIndenter(int indenterID); void showIndenterManual() const; void openConfigFileDialog(); void saveasIndentCfgFileDialog(); void createIndenterCallShellScript(); void resetIndenterParameter(); void handleChangedIndenterSettings(); private: ///-- TQString callExecutableIndenter(TQString sourceCode, TQString inputFileExtension); ///-- TQString callJavaScriptIndenter(TQString sourceCode); void saveConfigFile(const TQString &filePathName, const TQString ¶meterString); void readIndentIniFile(const TQString &iniFilePath); bool createIndenterCallString(); ///-- ///-- // Holds a reference to all created pages of the parameter categories toolbox and the pages ///-- // boxlayout ///-- struct IndenterParameterCategoryPage ///-- { ///-- TQWidget *widget; ///-- TQVBoxLayout *vboxLayout; ///-- }; ///-- ///-- TQVector _indenterParameterCategoryPages; ///-- ///-- // Holds a reference to all checkboxes needed for boolean parameter setting and the parameters ///-- // name ///-- struct ParamBoolean ///-- { ///-- TQString paramName; ///-- TQString trueString; ///-- TQString falseString; ///-- TQCheckBox *checkBox; ///-- }; ///-- ///-- TQVector _paramBooleans; ///-- ///-- // Holds a reference to all line edits needed for parameter setting and the parameters name ///-- struct ParamString ///-- { ///-- TQString paramName; ///-- TQString paramCallName; ///-- TQCheckBox *valueEnabledChkBox; ///-- TQLineEdit *lineEdit; ///-- TQLabel *label; ///-- }; ///-- ///-- TQVector _paramStrings; ///-- ///-- // Hold a reference to all spin boxes needed for parameter setting and the parameters name ///-- struct ParamNumeric ///-- { ///-- TQString paramName; ///-- TQString paramCallName; ///-- TQCheckBox *valueEnabledChkBox; ///-- TQSpinBox *spinBox; ///-- TQLabel *label; ///-- }; ///-- ///-- TQVector _paramNumerics; ///-- ///-- // Hold a reference to all combo boxes needed for parameter setting and the parameters name ///-- struct ParamMultiple ///-- { ///-- TQString paramName; ///-- TQString paramCallName; ///-- TQCheckBox *valueEnabledChkBox; ///-- TQComboBox *comboBox; ///-- TQStringList choicesStrings; ///-- TQStringList choicesStringsReadable; ///-- }; ///-- ///-- TQVector _paramMultiples; ///-- TQComboBox *m_indenterSelectionCombobox; TQToolButton *m_indenterParameterHelpButton; ///-- // Vertical layout box, into which the toolbox will be added TQVBoxLayout *m_toolBoxContainerLayout; TQToolBox *m_indenterParameterCategoriesToolBox; ///-- UiGuiIniFileParser *m_indenterSettings; ///-- TQStringList _indenterParameters; ///-- // The indenters name in a descriptive form ///-- TQString _indenterName; ///-- // The indenters file name (w/o extension), that is being called TQString m_indenterFileName; TQString m_indenterDirectoryStr; TQString m_tempDirectoryStr; TQString m_settingsDirectoryStr; TQStringList m_indenterIniFileList; ///-- TQString _parameterOrder; TQString m_globalConfigFilename; ///-- TQString _cfgFileParameterEnding; ///-- TQString _inputFileParameter; ///-- TQString _inputFileName; ///-- TQString _outputFileParameter; ///-- TQString _outputFileName; ///-- TQString _fileTypes; ///-- TQString _useCfgFileParameter; ///-- TQString _indenterShowHelpParameter; MainWindow *m_mainWindow; TQWidget *m_parent; UiGuiErrorMessage *m_errorMessageDialog; TQString m_indenterExecutableCallString; TQString m_indenterExecutableSuffix; ///-- ///-- //TODO: This function should go into a string helper/tool class/file. ///-- TQString encodeToHTML(const TQString &text); }; #endif // INDENTHANDLER_H