1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
|
#ifndef CONFIGDIALOG_H
#define CONFIGDIALOG_H
#include "config_builder.h"
#include "datatype.h"
#include "common/bihash.h"
#include "guiSQLiteStudio_global.h"
#include <QDialog>
namespace Ui {
class ConfigDialog;
}
class QListWidgetItem;
class QTreeWidgetItem;
class CustomConfigWidgetPlugin;
class QSignalMapper;
class Plugin;
class PluginType;
class QComboBox;
class QToolButton;
class QTreeWidget;
class QListWidget;
class QTableWidget;
class ConfigMapper;
class MultiEditorWidgetPlugin;
class ConfigNotifiablePlugin;
class UiConfiguredPlugin;
class SyntaxHighlighterPlugin;
class QPlainTextEdit;
class QSyntaxHighlighter;
class SqlEditor;
#define CFG_UI_NAME "Ui"
#define CFG_COLORS_NAME "Colors"
class GUI_API_EXPORT ConfigDialog : public QDialog
{
Q_OBJECT
public:
explicit ConfigDialog(QWidget *parent = 0);
~ConfigDialog();
void configureDataEditors(const QString& dataTypeString);
static QString getFilterString(QWidget* widget);
static QString getFilterString(QComboBox* widget);
static QString getFilterString(QTreeWidget* widget);
static QString getFilterString(QListWidget* widget);
static QString getFilterString(QTableWidget* widget);
protected:
void showEvent(QShowEvent* event);
private:
void init();
void load();
void initPageMap();
void initInternalCustomConfigWidgets();
void initFormatterPlugins();
void initPlugins();
void initPluginsPage();
bool initPluginPage(Plugin* plugin, bool skipConfigLoading);
void deinitPluginPage(Plugin* pluginName);
void initDataEditors();
void initShortcuts();
void initShortcuts(CfgCategory* cfgCategory);
void initLangs();
void initTooltips();
void initColors();
void updateColorsAfterLoad();
void toggleColorButtonState(CfgEntry* colorCheckEntry);
void applyStyle(QWidget* widget, QStyle* style);
QTreeWidgetItem* getPluginsCategoryItem() const;
QTreeWidgetItem* getPluginsCategoryItem(PluginType* type) const;
QTreeWidgetItem* getPluginItem(Plugin* plugin) const;
QTreeWidgetItem* createPluginsTypeItem(const QString& widgetName, const QString& title) const;
QTreeWidgetItem* getItemByTitle(const QString& title) const;
void switchPageToPlugin(QTreeWidgetItem* item);
bool isPluginCategoryItem(QTreeWidgetItem *item) const;
void codeFormatterUnloaded();
void codeFormatterLoaded();
void updatePluginCategoriesVisibility(QTreeWidgetItem* categoryItem);
QString collectLoadedPlugins() const;
QHash<QWidget*,QTreeWidgetItem*> buildPageToCategoryItemMap() const;
QList<QTreeWidgetItem*> getAllCategoryItems() const;
QList<MultiEditorWidgetPlugin*> getDefaultEditorsForType(DataType::Enum dataType);
QList<MultiEditorWidgetPlugin*> updateCustomDataTypeEditors(const QStringList& editorsOrder);
QList<MultiEditorWidgetPlugin*> updateDefaultDataTypeEditors(DataType::Enum typeEnum);
void addDataTypeEditor(const QString& pluginName);
void addDataTypeEditor(MultiEditorWidgetPlugin* plugin);
void removeDataTypeEditor(QListWidgetItem* item, const QString& pluginName);
void removeDataTypeEditor(int idx);
void transformDataTypeEditorsToCustomList(QListWidgetItem* typeItem);
QStringList getPluginNamesFromDataTypeItem(QListWidgetItem* typeItem, bool* exists = nullptr);
void setPluginNamesForDataTypeItem(QListWidgetItem* typeItem, const QStringList& pluginNames);
void addDataType(const QString& typeStr);
void rollbackPluginConfigs();
void rollbackColorsConfig();
void commitPluginConfigs();
void commitColorsConfig();
void connectMapperSignals(ConfigMapper* mapper);
QList<CfgMain*> getShortcutsCfgMains() const;
QList<CfgCategory*> getShortcutsCfgCategories() const;
void refreshColorsInSyntaxHighlighters();
void colorChanged();
QList<QWidget*> prepareCodeSyntaxColorsForStyle();
void adjustSyntaxColorsForStyle(QList<QWidget*>& unmodifiedColors);
void highlighterPluginLoaded(SyntaxHighlighterPlugin* plugin);
void highlighterPluginUnloaded(SyntaxHighlighterPlugin* plugin);
Ui::ConfigDialog *ui = nullptr;
QStyle* previewStyle = nullptr;
QHash<QString,QWidget*> nameToPage;
BiHash<QTreeWidgetItem*,QString> pluginListItemToPluginNameMap;
QHash<PluginType*,QTreeWidgetItem*> pluginTypeToItemMap;
QHash<Plugin*,QTreeWidgetItem*> pluginToItemMap;
QHash<QString,QComboBox*> formatterLangToPluginComboMap;
QHash<QString,QToolButton*> formatterLangToConfigButtonMap;
ConfigMapper* configMapper = nullptr;
QHash<UiConfiguredPlugin*,ConfigMapper*> pluginConfigMappers;
QAction* dataEditRenameAction = nullptr;
QAction* dataEditDeleteAction = nullptr;
bool updatingDataEditorItem = false;
bool modifiedFlag = false;
QList<ConfigNotifiablePlugin*> notifiablePlugins;
bool requiresSchemasRefresh = false;
QList<QPlainTextEdit*> colorPreviewEditors;
SqlEditor* codePreviewSqlEditor = nullptr;
QList<QSyntaxHighlighter*> colorPreviewHighlighters;
BiHash<QPlainTextEdit*, SyntaxHighlighterPlugin*> highlightingPluginForPreviewEditor;
bool resettingColors = false;
private slots:
void refreshFormattersPage();
void pageSwitched();
void updateDataTypeEditors();
void updateDataTypeListState();
void dataEditorItemEdited(QListWidgetItem* item);
void dataEditorAvailableChanged(QListWidgetItem* item);
void dataEditorTabsOrderChanged(int from, int to);
void addDataType();
void renameDataType();
void delDataType();
void dataTypesHelp();
void switchPage(QTreeWidgetItem* item);
void updateStylePreview();
void apply();
void save();
void storeSelectedFormatters();
void markModified();
void setModified(bool modified);
void updateModified();
void applyFilter(const QString& filter);
void updateActiveFormatterState();
void configureFormatter(const QString& pluginTitle);
void activeFormatterChanged();
void detailsClicked(const QString& pluginName);
void failedToLoadPlugin(const QString& pluginName);
void loadUnloadPlugin(QTreeWidgetItem* item, int column);
void pluginAboutToUnload(Plugin* plugin, PluginType* type);
void pluginLoaded(Plugin* plugin, PluginType* type, bool skipConfigLoading = false);
void pluginUnloaded(const QString& pluginName, PluginType* type);
void updatePluginCategoriesVisibility();
void updateBuiltInPluginsVisibility();
void applyShortcutsFilter(const QString& filter);
void markRequiresSchemasRefresh();
void notifyPluginsAboutModification(QWidget*, CfgEntry* key, const QVariant& value);
void resetCodeSyntaxColors();
public slots:
void accept();
};
#endif // CONFIGDIALOG_H
|