summaryrefslogtreecommitdiffstats
path: root/src/__TODO/IndentHandler.h
diff options
context:
space:
mode:
authorMichele Calgaro <michele.calgaro@yahoo.it>2022-09-18 20:19:47 +0900
committerMichele Calgaro <michele.calgaro@yahoo.it>2022-09-18 20:39:48 +0900
commita80a494efee7979c28ab1090734270e5c0515352 (patch)
tree1cdaee39e3e5a2b32c171f8389b29b15c519c607 /src/__TODO/IndentHandler.h
parent14f7e49438caa24af81a0d7d7864ce71d96791e4 (diff)
downloaduniversal-indent-gui-tqt-a80a494efee7979c28ab1090734270e5c0515352.tar.gz
universal-indent-gui-tqt-a80a494efee7979c28ab1090734270e5c0515352.zip
Added main window menubar GUI. The logic of each action has not been implemented yet.
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'src/__TODO/IndentHandler.h')
-rw-r--r--src/__TODO/IndentHandler.h195
1 files changed, 195 insertions, 0 deletions
diff --git a/src/__TODO/IndentHandler.h b/src/__TODO/IndentHandler.h
new file mode 100644
index 0000000..f576518
--- /dev/null
+++ b/src/__TODO/IndentHandler.h
@@ -0,0 +1,195 @@
+/***************************************************************************
+ * 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 <tntqwidget.h>
+
+class UiGuiErrorMessage;
+class UiGuiIniFileParser;
+
+class TQMenu;
+class TQVBoxLayout;
+class TQLabel;
+class TQSpinBox;
+class TQComboBox;
+class TQCheckBox;
+class TQLineEdit;
+class TQToolButton;
+class TQToolBox;
+
+
+class IndentHandler : public TQWidget
+{
+ Q_OBJECT
+
+ public:
+ IndentHandler(int indenterID, TQWidget *mainWindow = NULL, TQWidget *parent = NULL);
+ ~IndentHandler();
+
+ TQString generateShellScript(const TQString &configFilename);
+ TQString callIndenter(TQString sourceCode, TQString inputFileExtension);
+ bool loadConfigFile(TQString filePathName);
+ void resetToDefaultValues();
+ TQStringList getAvailableIndenters();
+ TQString getPossibleIndenterFileExtensions();
+ TQString getParameterString();
+ TQString getIndenterCfgFile();
+ TQString getManual();
+ void retranslateUi();
+ TQString getCurrentIndenterName();
+ TQMenu* getIndenterMenu();
+ TQList<TQAction*> getIndenterMenuActions();
+ void contextMenuEvent(TQContextMenuEvent *event);
+ void setParameterChangedCallback(void (*paramChangedCallback)(void));
+ void setWindowClosedCallback(void (*winClosedCallback)(void));
+ int getIndenterId();
+
+ signals:
+ void indenterSettingsChanged();
+ void selectedIndenterIndexChanged(int index);
+
+ protected:
+ bool event(TQEvent *event);
+ void closeEvent(TQCloseEvent *event);
+ void wheelEvent(TQWheelEvent *event);
+
+ private slots:
+ void setIndenter(int indenterID);
+ void showIndenterManual();
+ void openConfigFileDialog();
+ void saveasIndentCfgFileDialog();
+ void createIndenterCallShellScript();
+ void resetIndenterParameter();
+ void handleChangedIndenterSettings();
+ void updateDrawing();
+
+ private:
+ TQString callExecutableIndenter(TQString sourceCode, TQString inputFileExtension);
+ TQString callJavaScriptIndenter(TQString sourceCode);
+ void saveConfigFile(TQString filePathName, TQString parameterString);
+ void readIndentIniFile(TQString iniFilePath);
+ bool createIndenterCallString();
+ void initIndenterMenu();
+
+ //! Holds a reference to all created pages of the parameter categories toolbox and the pages
+ // boxlayout
+ struct IndenterParameterCategoryPage
+ {
+ TQWidget *widget;
+ TQVBoxLayout *vboxLayout;
+ };
+
+ TQVector<IndenterParameterCategoryPage> _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<ParamBoolean> _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<ParamString> _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<ParamNumeric> _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<ParamMultiple> _paramMultiples;
+
+ TQComboBox *_indenterSelectionCombobox;
+ TQToolButton *_indenterParameterHelpButton;
+ //! Vertical layout box, into which the toolbox will be added
+ TQVBoxLayout *_toolBoxContainerLayout;
+ TQToolBox *_indenterParameterCategoriesToolBox;
+ UiGuiIniFileParser *_indenterSettings;
+ TQStringList _indenterParameters;
+ //! The indenters name in a descriptive form
+ TQString _indenterName;
+ //! The indenters file name (w/o extension), that is being called
+ TQString _indenterFileName;
+ TQString _indenterDirctoryStr;
+ TQString _tempDirctoryStr;
+ TQString _settingsDirctoryStr;
+ TQStringList _indenterIniFileList;
+ TQString _parameterOrder;
+ TQString _globalConfigFilename;
+ TQString _cfgFileParameterEnding;
+ TQString _inputFileParameter;
+ TQString _inputFileName;
+ TQString _outputFileParameter;
+ TQString _outputFileName;
+ TQString _fileTypes;
+ TQString _useCfgFileParameter;
+ TQString _indenterShowHelpParameter;
+ TQWidget *_mainWindow;
+ UiGuiErrorMessage *_errorMessageDialog;
+ TQString _indenterExecutableCallString;
+ TQString _indenterExecutableSuffix;
+
+ TQMenu *_menuIndenter;
+ TQAction *_actionLoadIndenterConfigFile;
+ TQAction *_actionSaveIndenterConfigFile;
+ TQAction *_actionCreateShellScript;
+ TQAction *_actionResetIndenterParameters;
+ //! Needed for the NPP plugin.
+ void (*_parameterChangedCallback)(void);
+ //! Needed for the NPP plugin.
+ void (*_windowClosedCallback)(void);
+
+ //TODO: This function should go into a string helper/tool class/file.
+ TQString encodeToHTML(const TQString &text);
+};
+
+#endif // INDENTHANDLER_H