aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/multieditor
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/multieditor')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp145
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h18
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp10
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp10
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp12
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp12
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp12
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp11
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp10
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp12
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h7
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h1
19 files changed, 207 insertions, 69 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp
index c99b774..d766738 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp
@@ -30,13 +30,13 @@
static QHash<QString,bool> missingEditorPluginsAlreadyWarned;
-MultiEditor::MultiEditor(QWidget *parent) :
+MultiEditor::MultiEditor(QWidget *parent, TabsMode tabsMode) :
QWidget(parent)
{
- init();
+ init(tabsMode);
}
-void MultiEditor::init()
+void MultiEditor::init(TabsMode tabsMode)
{
QVBoxLayout* vbox = new QVBoxLayout();
vbox->setMargin(margins);
@@ -73,14 +73,39 @@ void MultiEditor::init()
layout()->addWidget(tabs);
tabs->tabBar()->installEventFilter(this);
- configBtn = new QToolButton();
- configBtn->setToolTip(tr("Configure editors for this data type"));
- configBtn->setIcon(ICONS.CONFIGURE);
- configBtn->setFocusPolicy(Qt::NoFocus);
- configBtn->setAutoRaise(true);
- configBtn->setEnabled(false);
- connect(configBtn, SIGNAL(clicked()), this, SLOT(configClicked()));
- tabs->setCornerWidget(configBtn);
+ switch (tabsMode)
+ {
+ case CONFIGURABLE:
+ {
+ configBtn = new QToolButton();
+ configBtn->setToolTip(tr("Configure editors for this data type"));
+ configBtn->setIcon(ICONS.CONFIGURE);
+ configBtn->setFocusPolicy(Qt::NoFocus);
+ configBtn->setAutoRaise(true);
+ configBtn->setEnabled(false);
+ connect(configBtn, SIGNAL(clicked()), this, SLOT(configClicked()));
+ tabs->setCornerWidget(configBtn);
+ break;
+ }
+ case DYNAMIC:
+ {
+ initAddTabMenu();
+ addTabBtn = new QToolButton();
+ addTabBtn->setToolTip(tr("Open another tab"));
+ addTabBtn->setIcon(ICONS.PLUS);
+ addTabBtn->setFocusPolicy(Qt::NoFocus);
+ addTabBtn->setAutoRaise(true);
+ addTabBtn->setEnabled(true);
+ addTabBtn->setPopupMode(QToolButton::InstantPopup);
+ addTabBtn->setMenu(addTabMenu);
+ tabs->setCornerWidget(addTabBtn);
+ tabs->setTabsClosable(true);
+ connect(tabs, &QTabWidget::tabCloseRequested, this, &MultiEditor::removeTab);
+ break;
+ }
+ case PRECONFIGURED:
+ break;
+ }
QGraphicsColorizeEffect* effect = new QGraphicsColorizeEffect();
effect->setColor(Qt::black);
@@ -167,6 +192,25 @@ void MultiEditor::addEditor(MultiEditorWidget* editorWidget)
tabs->addTab(editorWidget, editorWidget->getTabLabel().replace("&", "&&"));
THEME_TUNER->manageCompactLayout(editorWidget);
editorWidget->installEventFilter(this);
+
+ connect(editorWidget, &MultiEditorWidget::aboutToBeDeleted, [this, editorWidget]()
+ {
+ int idx = tabs->indexOf(editorWidget);
+ tabs->removeTab(idx);
+ });
+
+ if (addTabMenu)
+ {
+ QAction* addTabAction = findFirst<QAction>(addTabMenu->actions(), [editorWidget](QAction* a)
+ {
+ return a->data().toString() == editorWidget->getTabLabel();
+ });
+
+ if (addTabAction)
+ addTabMenu->removeAction(addTabAction);
+ else
+ qWarning() << "Could not find action associated with added MultiEditorWidget:" << editorWidget->getTabLabel();
+ }
}
void MultiEditor::showTab(int idx)
@@ -235,11 +279,12 @@ void MultiEditor::setDataType(const DataType& dataType)
{
this->dataType = dataType;
- foreach (MultiEditorWidget* editorWidget, getEditorTypes(dataType))
+ for (MultiEditorWidget* editorWidget : getEditorTypes(dataType))
addEditor(editorWidget);
showTab(0);
- configBtn->setEnabled(true);
+ if (configBtn)
+ configBtn->setEnabled(true);
}
void MultiEditor::focusThisEditor()
@@ -271,6 +316,7 @@ void MultiEditor::loadBuiltInEditors()
QList<MultiEditorWidget*> MultiEditor::getEditorTypes(const DataType& dataType)
{
QList<MultiEditorWidget*> editors;
+ MultiEditorWidget* editor = nullptr;
QString typeStr = dataType.toString().trimmed().toUpper();
QHash<QString,QVariant> editorsOrder = CFG_UI.General.DataEditorsOrder.get();
@@ -290,7 +336,9 @@ QList<MultiEditorWidget*> MultiEditor::getEditorTypes(const DataType& dataType)
continue;
}
- editors << plugin->getInstance();
+ editor = plugin->getInstance();
+ editor->setTabLabel(plugin->getTabLabel());
+ editors << editor;
}
}
@@ -313,6 +361,7 @@ QList<MultiEditorWidget*> MultiEditor::getEditorTypes(const DataType& dataType)
editorWithPrio.first = plugin->getPriority(dataType);
editorWithPrio.second = plugin->getInstance();
+ editorWithPrio.second->setTabLabel(plugin->getTabLabel());
sortedEditors << editorWithPrio;
}
@@ -360,12 +409,17 @@ void MultiEditor::updateValue(const QVariant& newValue)
for (int i = 0; i < tabs->count(); i++)
{
editorWidget = dynamic_cast<MultiEditorWidget*>(tabs->widget(i));
- editorWidget->setValue(newValue);
- editorWidget->setUpToDate(true);
+ setValueToWidget(editorWidget, newValue);
}
invalidatingDisabled = false;
}
+void MultiEditor::setValueToWidget(MultiEditorWidget* editorWidget, const QVariant& newValue)
+{
+ editorWidget->setValue(newValue);
+ editorWidget->setUpToDate(true);
+}
+
void MultiEditor::updateLabel()
{
if (deleted)
@@ -380,3 +434,62 @@ QVariant MultiEditor::getValueOmmitNull() const
{
return dynamic_cast<MultiEditorWidget*>(tabs->currentWidget())->getValue();
}
+
+void MultiEditor::initAddTabMenu()
+{
+ addTabMenu = new QMenu(addTabBtn);
+ for (MultiEditorWidgetPlugin* plugin : PLUGINS->getLoadedPlugins<MultiEditorWidgetPlugin>())
+ addPluginToMenu(plugin);
+
+ sortAddTabMenu();
+}
+
+void MultiEditor::addPluginToMenu(MultiEditorWidgetPlugin* plugin)
+{
+ QAction* addTabAction = addTabMenu->addAction(plugin->getTabLabel());
+ addTabAction->setData(plugin->getTabLabel()); // for display-independent identification of action to avoid ampersand issue
+ connect(addTabAction, &QAction::triggered, [plugin, this]()
+ {
+ MultiEditorWidget* editor = plugin->getInstance();
+ editor->setTabLabel(plugin->getTabLabel());
+ addEditor(editor);
+ setValueToWidget(editor, valueBeforeNull);
+ showTab(tabs->count() - 1);
+ });
+}
+
+void MultiEditor::sortAddTabMenu()
+{
+ QList<QAction*> editorActions = addTabMenu->actions();
+ std::sort(editorActions.begin(), editorActions.end(), [](QAction* a1, QAction* a2)
+ {
+ return a1->data().toString().compare(a2->data().toString(), Qt::CaseInsensitive) < 0;
+ });
+
+ for (QAction* action : editorActions)
+ addTabMenu->removeAction(action);
+
+ addTabMenu->insertActions(nullptr, editorActions);
+}
+
+void MultiEditor::removeTab(int idx)
+{
+ MultiEditorWidget* editor = dynamic_cast<MultiEditorWidget*>(tabs->widget(idx));
+ QString label = editor->getTabLabel();
+ tabs->removeTab(idx);
+
+ // Re-add it to menu
+ MultiEditorWidgetPlugin* plugin = findFirst<MultiEditorWidgetPlugin>(
+ PLUGINS->getLoadedPlugins<MultiEditorWidgetPlugin>(),
+ [label](MultiEditorWidgetPlugin* p) {return p->getTabLabel() == label;}
+ );
+
+ if (!plugin)
+ {
+ qWarning() << "Missing MultiEditorWidgetPlugin after removing its tab for label:" << label;
+ return;
+ }
+
+ addPluginToMenu(plugin);
+ sortAddTabMenu();
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h
index 04b9af7..55d7f2e 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h
@@ -12,6 +12,7 @@ class MultiEditorWidget;
class QLabel;
class MultiEditorWidgetPlugin;
class QToolButton;
+class QMenu;
class GUI_API_EXPORT MultiEditor : public QWidget
{
@@ -31,7 +32,13 @@ class GUI_API_EXPORT MultiEditor : public QWidget
HEX
};
- explicit MultiEditor(QWidget *parent = 0);
+ enum TabsMode {
+ CONFIGURABLE, /**< Tabs are loaded from datatype and also have configure button visible. */
+ PRECONFIGURED, /**< Tabs are loaded from datatype. No config button is present. */
+ DYNAMIC /**< No tabs are loaded, but user has button to add new tabs, can close them and reorder them. */
+ };
+
+ explicit MultiEditor(QWidget *parent = nullptr, TabsMode tabsMode = CONFIGURABLE);
void addEditor(MultiEditorWidget* editorWidget);
void showTab(int idx);
@@ -50,12 +57,16 @@ class GUI_API_EXPORT MultiEditor : public QWidget
static void loadBuiltInEditors();
private:
- void init();
+ void init(TabsMode tabsMode);
void updateVisibility();
void updateNullEffect();
void updateValue(const QVariant& newValue);
+ void setValueToWidget(MultiEditorWidget* editorWidget, const QVariant& newValue);
void updateLabel();
QVariant getValueOmmitNull() const;
+ void initAddTabMenu();
+ void addPluginToMenu(MultiEditorWidgetPlugin* plugin);
+ void sortAddTabMenu();
static QList<MultiEditorWidget*> getEditorTypes(const DataType& dataType);
@@ -74,6 +85,8 @@ class GUI_API_EXPORT MultiEditor : public QWidget
bool valueModified = false;
QVariant valueBeforeNull;
QToolButton* configBtn = nullptr;
+ QToolButton* addTabBtn = nullptr;
+ QMenu* addTabMenu = nullptr;
DataType dataType;
/**
@@ -90,6 +103,7 @@ class GUI_API_EXPORT MultiEditor : public QWidget
void nullStateChanged(int state);
void invalidateValue();
void setModified();
+ void removeTab(int idx);
signals:
void modified();
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp
index ed7c260..1882335 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp
@@ -125,11 +125,6 @@ QList<QWidget*> MultiEditorBool::getNoScrollWidgets()
return list;
}
-QString MultiEditorBool::getTabLabel()
-{
- return tr("Boolean");
-}
-
void MultiEditorBool::focusThisWidget()
{
checkBox->setFocus();
@@ -213,3 +208,8 @@ int MultiEditorBoolPlugin::getPriority(const DataType& dataType)
}
return 100;
}
+
+QString MultiEditorBoolPlugin::getTabLabel()
+{
+ return tr("Boolean");
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h
index f328cf0..6aa11d5 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h
@@ -22,7 +22,6 @@ class GUI_API_EXPORT MultiEditorBool : public MultiEditorWidget
QVariant getValue();
void setReadOnly(bool boolValue);
QList<QWidget*> getNoScrollWidgets();
- QString getTabLabel();
void focusThisWidget();
private:
@@ -63,6 +62,7 @@ class GUI_API_EXPORT MultiEditorBoolPlugin : public BuiltInPlugin, public MultiE
MultiEditorWidget* getInstance();
bool validFor(const DataType& dataType);
int getPriority(const DataType& dataType);
+ QString getTabLabel();
};
#endif // MULTIEDITORBOOL_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp
index 44178f8..4059f96 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp
@@ -9,11 +9,6 @@ MultiEditorDate::MultiEditorDate(QWidget* parent)
setDisplayFormat(formats.first());
}
-QString MultiEditorDate::getTabLabel()
-{
- return tr("Date");
-}
-
void MultiEditorDate::staticInit()
{
formats << "yyyy-MM-dd";
@@ -85,3 +80,8 @@ int MultiEditorDatePlugin::getPriority(const DataType& dataType)
}
return 10;
}
+
+QString MultiEditorDatePlugin::getTabLabel()
+{
+ return tr("Date");
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h
index d51150b..3b53c32 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h
@@ -10,8 +10,6 @@ class GUI_API_EXPORT MultiEditorDate : public MultiEditorDateTime
public:
explicit MultiEditorDate(QWidget *parent = 0);
- QString getTabLabel();
-
static void staticInit();
protected:
@@ -34,6 +32,7 @@ class GUI_API_EXPORT MultiEditorDatePlugin : public BuiltInPlugin, public MultiE
MultiEditorWidget* getInstance();
bool validFor(const DataType& dataType);
int getPriority(const DataType& dataType);
+ QString getTabLabel();
};
#endif // MULTIEDITORDATE_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp
index bd1e244..99053b0 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp
@@ -106,7 +106,7 @@ QList<QWidget*> MultiEditorDateTime::getNoScrollWidgets()
QDateTime MultiEditorDateTime::fromString(const QString& value)
{
QDateTime dateTime;
- foreach (const QString& format, getParsingFormats())
+ for (const QString& format : getParsingFormats())
{
dateTime = QDateTime::fromString(value, format);
if (dateTime.isValid())
@@ -176,11 +176,6 @@ void MultiEditorDateTime::setReadOnly(bool value)
updateReadOnlyDisplay();
}
-QString MultiEditorDateTime::getTabLabel()
-{
- return tr("Date & time");
-}
-
void MultiEditorDateTime::focusThisWidget()
{
dateTimeEdit->setFocus();
@@ -273,3 +268,8 @@ int MultiEditorDateTimePlugin::getPriority(const DataType& dataType)
}
return 10;
}
+
+QString MultiEditorDateTimePlugin::getTabLabel()
+{
+ return tr("Date & time");
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h
index 59bd111..9038ede 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h
@@ -27,7 +27,6 @@ class GUI_API_EXPORT MultiEditorDateTime : public MultiEditorWidget
bool getReadOnly() const;
void setReadOnly(bool value);
- QString getTabLabel();
void focusThisWidget();
protected:
@@ -79,6 +78,7 @@ class GUI_API_EXPORT MultiEditorDateTimePlugin : public BuiltInPlugin, public Mu
MultiEditorWidget* getInstance();
bool validFor(const DataType& dataType);
int getPriority(const DataType& dataType);
+ QString getTabLabel();
};
#endif // MULTIEDITORDATETIME_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp
index 5a3cd28..a959e53 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp
@@ -9,8 +9,6 @@ MultiEditorHex::MultiEditorHex()
hexEdit = new QHexEdit();
layout()->addWidget(hexEdit);
- //hexEdit->setTabChangesFocus(true);
-
connect(hexEdit, SIGNAL(dataChanged()), this, SLOT(modificationChanged()));
setFocusProxy(hexEdit);
}
@@ -34,11 +32,6 @@ void MultiEditorHex::setReadOnly(bool value)
hexEdit->setReadOnly(value);
}
-QString MultiEditorHex::getTabLabel()
-{
- return tr("Hex");
-}
-
void MultiEditorHex::focusThisWidget()
{
hexEdit->setFocus();
@@ -92,3 +85,8 @@ int MultiEditorHexPlugin::getPriority(const DataType& dataType)
}
return 100;
}
+
+QString MultiEditorHexPlugin::getTabLabel()
+{
+ return tr("Hex");
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h
index 5fd32a0..e647f12 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h
@@ -20,7 +20,6 @@ class GUI_API_EXPORT MultiEditorHex : public MultiEditorWidget
void setValue(const QVariant& value);
QVariant getValue();
void setReadOnly(bool value);
- QString getTabLabel();
void focusThisWidget();
QList<QWidget*> getNoScrollWidgets();
@@ -45,6 +44,7 @@ class GUI_API_EXPORT MultiEditorHexPlugin : public BuiltInPlugin, public MultiEd
MultiEditorWidget* getInstance();
bool validFor(const DataType& dataType);
int getPriority(const DataType& dataType);
+ QString getTabLabel();
};
#endif // MULTIEDITORHEX_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp
index 526f5c4..6b1dd09 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp
@@ -18,7 +18,7 @@ MultiEditorNumeric::MultiEditorNumeric(QWidget* parent)
void MultiEditorNumeric::setValue(const QVariant& value)
{
- spinBox->setValue(value);
+ spinBox->setValue(value, false);
}
QVariant MultiEditorNumeric::getValue()
@@ -31,11 +31,6 @@ void MultiEditorNumeric::setReadOnly(bool value)
spinBox->setReadOnly(value);
}
-QString MultiEditorNumeric::getTabLabel()
-{
- return tr("Number", "numeric multi editor tab name");
-}
-
void MultiEditorNumeric::focusThisWidget()
{
spinBox->setFocus();
@@ -108,3 +103,8 @@ int MultiEditorNumericPlugin::getPriority(const DataType& dataType)
}
return 10;
}
+
+QString MultiEditorNumericPlugin::getTabLabel()
+{
+ return tr("Number", "numeric multi editor tab name");
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h
index c74d27a..224c6d4 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h
@@ -17,7 +17,6 @@ class GUI_API_EXPORT MultiEditorNumeric : public MultiEditorWidget
void setValue(const QVariant& value);
QVariant getValue();
void setReadOnly(bool value);
- QString getTabLabel();
void focusThisWidget();
QList<QWidget*> getNoScrollWidgets();
@@ -39,6 +38,7 @@ class GUI_API_EXPORT MultiEditorNumericPlugin : public BuiltInPlugin, public Mul
MultiEditorWidget* getInstance();
bool validFor(const DataType& dataType);
int getPriority(const DataType& dataType);
+ QString getTabLabel();
};
#endif // MULTIEDITORNUMERIC_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp
index 05db8e0..0d963a5 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp
@@ -5,6 +5,7 @@
#include <QVBoxLayout>
#include <QAction>
#include <QMenu>
+#include <QDebug>
CFG_KEYS_DEFINE(MultiEditorText)
@@ -40,11 +41,6 @@ void MultiEditorText::setReadOnly(bool value)
textEdit->setReadOnly(value);
}
-QString MultiEditorText::getTabLabel()
-{
- return tr("Text");
-}
-
QToolBar* MultiEditorText::getToolBar(int toolbar) const
{
UNUSED(toolbar);
@@ -182,3 +178,8 @@ int MultiEditorTextPlugin::getPriority(const DataType& dataType)
}
return 1;
}
+
+QString MultiEditorTextPlugin::getTabLabel()
+{
+ return tr("Text");
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h
index bd814ce..59d2a44 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h
@@ -44,7 +44,6 @@ class GUI_API_EXPORT MultiEditorText : public MultiEditorWidget, public ExtActio
void setValue(const QVariant& value);
QVariant getValue();
void setReadOnly(bool value);
- QString getTabLabel();
QToolBar* getToolBar(int toolbar) const;
void focusThisWidget();
QList<QWidget*> getNoScrollWidgets();
@@ -82,6 +81,7 @@ class GUI_API_EXPORT MultiEditorTextPlugin : public BuiltInPlugin, public MultiE
MultiEditorWidget* getInstance();
bool validFor(const DataType& dataType);
int getPriority(const DataType& dataType);
+ QString getTabLabel();
};
#endif // MULTIEDITORTEXT_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp
index 8b49715..35800ce 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp
@@ -11,11 +11,6 @@ MultiEditorTime::MultiEditorTime(QWidget *parent)
setDisplayFormat(formats.first());
}
-QString MultiEditorTime::getTabLabel()
-{
- return tr("Time");
-}
-
void MultiEditorTime::staticInit()
{
formats << "hh:mm:ss"
@@ -88,3 +83,8 @@ int MultiEditorTimePlugin::getPriority(const DataType& dataType)
}
return 10;
}
+
+QString MultiEditorTimePlugin::getTabLabel()
+{
+ return tr("Time");
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h
index 1fb05f3..e5b64a8 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h
@@ -11,8 +11,6 @@ class GUI_API_EXPORT MultiEditorTime : public MultiEditorDateTime
public:
explicit MultiEditorTime(QWidget *parent = 0);
- QString getTabLabel();
-
static void staticInit();
protected:
@@ -35,6 +33,7 @@ class GUI_API_EXPORT MultiEditorTimePlugin : public BuiltInPlugin, public MultiE
MultiEditorWidget* getInstance();
bool validFor(const DataType& dataType);
int getPriority(const DataType& dataType);
+ QString getTabLabel();
};
#endif // MULTIEDITORTIME_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp
index caea9a5..826728a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp
@@ -8,10 +8,20 @@ MultiEditorWidget::MultiEditorWidget(QWidget *parent) :
void MultiEditorWidget::installEventFilter(QObject* filterObj)
{
QObject::installEventFilter(filterObj);
- foreach (QWidget* w, getNoScrollWidgets())
+ for (QWidget* w : getNoScrollWidgets())
w->installEventFilter(filterObj);
}
+void MultiEditorWidget::setTabLabel(const QString& value)
+{
+ tabLabel = value;
+}
+
+QString MultiEditorWidget::getTabLabel()
+{
+ return tabLabel;
+}
+
bool MultiEditorWidget::isUpToDate() const
{
return upToDate;
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h
index 14bac26..dc98b1a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h
@@ -9,25 +9,28 @@ class GUI_API_EXPORT MultiEditorWidget : public QWidget
Q_OBJECT
public:
- explicit MultiEditorWidget(QWidget *parent = 0);
+ explicit MultiEditorWidget(QWidget *parent = nullptr);
virtual void setValue(const QVariant& value) = 0;
virtual QVariant getValue() = 0;
virtual void setReadOnly(bool value) = 0;
virtual QList<QWidget*> getNoScrollWidgets() = 0;
- virtual QString getTabLabel() = 0;
virtual void focusThisWidget() = 0;
void installEventFilter(QObject* filterObj);
+ void setTabLabel(const QString& value);
+ QString getTabLabel();
bool isUpToDate() const;
void setUpToDate(bool value);
private:
bool upToDate = true;
+ QString tabLabel;
signals:
void valueModified();
+ void aboutToBeDeleted();
};
#endif // MULTIEDITORWIDGET_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h
index 011bde5..7426006 100644
--- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h
+++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h
@@ -12,6 +12,7 @@ class GUI_API_EXPORT MultiEditorWidgetPlugin : public virtual Plugin
virtual MultiEditorWidget* getInstance() = 0;
virtual bool validFor(const DataType& dataType) = 0;
virtual int getPriority(const DataType& dataType) = 0;
+ virtual QString getTabLabel() = 0;
};
#endif // MULTIEDITORWIDGETPLUGIN_H