/*************************************************************************** * 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 #include class MainWindow; class UiGuiErrorMessage; class UiGuiIniFileParser; class UiGuiSettings; class TQCheckBox; class TQComboBox; class TQLabel; class TQLineEdit; class TQSpinBox; class TQToolBox; class TQToolButton; class TQVBoxLayout; class IndentHandler : public TQWidget { TQ_OBJECT public: IndentHandler(int indenterID, MainWindow *mainWindow = nullptr, TQWidget *parent = nullptr); ~IndentHandler(); TQString generateShellScript(const TQString &configFilename); TQString callIndenter(const TQString &sourceCode, const 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); signals: void indenterSettingsChanged(); private slots: void setIndenter(int indenterID); void showIndenterManual() const; void openConfigFileDialog(); void saveasIndentCfgFileDialog(); void createIndenterCallShellScript(); void resetIndenterParameter(); void handleChangedIndenterSettings(); void indenterProcessFinished(); private: TQString callExecutableIndenter(const TQString &sourceCode, const TQString &inputFileExt); 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 their layout struct IndenterParameterCategoryPage { TQWidget *widget; TQVBoxLayout *vboxLayout; }; TQValueVector m_indenterParameterCategoryPages; // Holds a reference to all checkboxes needed for boolean parameters and their names struct ParamBoolean { TQString paramName; TQString trueString; TQString falseString; TQCheckBox *checkBox; }; TQValueVector m_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; }; TQValueVector m_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; }; TQValueVector m_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; }; TQValueVector m_paramMultiples; UiGuiSettings *m_settings; 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 m_indenterParameters; // The indenters name in a descriptive form TQString m_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 m_globalConfigFilename; TQString m_cfgFileParameterEnding; TQString m_parameterOrder; TQString m_inputFileParameter; TQString m_inputFileName; TQString m_outputFileParameter; TQString m_outputFileName; TQString m_fileTypes; TQString m_useCfgFileParameter; TQString m_indenterShowHelpParameter; MainWindow *m_mainWindow; TQWidget *m_parent; UiGuiErrorMessage *m_errorMessageDialog; TQString m_indenterExecutableCallString; TQString m_indenterExecutableSuffix; bool m_indenterProcessFinished; bool m_useRegex; //TODO: This function should go into a string helper/tool class/file. TQString encodeToHTML(const TQString &text); }; #endif // INDENTHANDLER_H