Skip to content

Commit 1f7ef3b

Browse files
committed
Added capability to change Script Editor colors
1 parent 0effe6e commit 1f7ef3b

21 files changed

+696
-185
lines changed

src/core/gui/dialogs/core_dialogs.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,11 @@ QString mbCoreDialogs::getSaveFileName(QWidget *parent, const QString &caption,
101101
return f;
102102
}
103103

104+
QColor mbCoreDialogs::getColor(const QColor &initial, QWidget *parent, const QString &title, QColorDialog::ColorDialogOptions options)
105+
{
106+
return QColorDialog::getColor(initial, parent, title, options);
107+
}
108+
104109
bool mbCoreDialogs::editSystemSettings(const QString &title)
105110
{
106111
return m_settings->editSettings(title);

src/core/gui/dialogs/core_dialogs.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
#include <QInputDialog>
2727
#include <QFileDialog>
28+
#include <QColorDialog>
2829

2930
#include <project/core_project.h>
3031

@@ -79,7 +80,8 @@ class MB_EXPORT mbCoreDialogs
7980
const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options());
8081
QString getSaveFileName(QWidget *parent = nullptr, const QString &caption = QString(), const QString &dir = QString(),
8182
const QString &filter = QString(), QString *selectedFilter = nullptr, QFileDialog::Options options = QFileDialog::Options());
82-
83+
QColor getColor(const QColor &initial = Qt::white, QWidget *parent = nullptr, const QString &title = QString(),
84+
QColorDialog::ColorDialogOptions options = QColorDialog::ColorDialogOptions());
8385
bool editSystemSettings(const QString& title = QString());
8486
void showProjectInfo(mbCoreProject *project);
8587

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include "server_delegatesettingsscripteditorcolors.h"
2+
3+
#include <QEvent>
4+
5+
#include <server.h>
6+
#include <gui/server_ui.h>
7+
#include <gui/dialogs/server_dialogs.h>
8+
9+
mbServerDelegateSettingsScriptEditorColors::mbServerDelegateSettingsScriptEditorColors(QObject *parent)
10+
: QStyledItemDelegate{parent}
11+
{
12+
}
13+
14+
bool mbServerDelegateSettingsScriptEditorColors::editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index)
15+
{
16+
switch (event->type())
17+
{
18+
case QEvent::MouseButtonDblClick:
19+
{
20+
mbServerUi *ui = mbServer::global()->ui();
21+
QColor color1 = model->data(index, Qt::BackgroundRole).value<QColor>();
22+
QColor color2 = mbServer::global()->ui()->dialogs()->getColor(color1, ui, "Color");
23+
if (color2.isValid())
24+
model->setData(index, QVariant::fromValue(color2), Qt::BackgroundRole);
25+
}
26+
return true;
27+
default:
28+
return QStyledItemDelegate::editorEvent(event, model, option, index);
29+
}
30+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#ifndef MBSERVERDELEGATESETTINGSSCRIPTEDITORCOLORS_H
2+
#define MBSERVERDELEGATESETTINGSSCRIPTEDITORCOLORS_H
3+
4+
#include <QStyledItemDelegate>
5+
6+
class mbServerDelegateSettingsScriptEditorColors : public QStyledItemDelegate
7+
{
8+
public:
9+
explicit mbServerDelegateSettingsScriptEditorColors(QObject *parent = nullptr);
10+
11+
public:
12+
bool editorEvent(QEvent *event, QAbstractItemModel *model, const QStyleOptionViewItem &option, const QModelIndex &index) override;
13+
};
14+
15+
#endif // MBSERVERDELEGATESETTINGSSCRIPTEDITORCOLORS_H

src/server/gui/dialogs/settings/server_dialogsettings.cpp

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <server.h>
77

88
#include "server_widgetsettingsscript.h"
9+
#include <gui/script/server_scriptmanager.h>
910

1011
mbServerDialogSettings::Strings::Strings() //:
1112
//title(QStringLiteral("Settings")),
@@ -29,22 +30,28 @@ mbServerDialogSettings::mbServerDialogSettings(QWidget *parent) :
2930

3031
void mbServerDialogSettings::fillForm(const MBSETTINGS &m)
3132
{
32-
const mbServer::Strings &s = mbServer::Strings::instance();
33+
const mbServer::Strings &ssrv = mbServer::Strings::instance();
34+
const mbServerScriptManager::Strings &sscr = mbServerScriptManager::Strings::instance();
3335
mbCoreDialogSettings::fillForm(m);
3436

35-
m_script->setScriptEnable (m.value(s.settings_scriptEnable ).toBool ());
36-
m_script->setScriptUseOptimization (m.value(s.settings_scriptUseOptimization).toBool ());
37-
m_script->scriptSetManualExecutables(m.value(s.settings_scriptManual ).toStringList());
38-
m_script->scriptSetDefaultExecutable(m.value(s.settings_scriptDefault ).toString ());
37+
m_script->setScriptEnable (m.value(ssrv.settings_scriptEnable ).toBool ());
38+
m_script->setScriptUseOptimization (m.value(ssrv.settings_scriptUseOptimization).toBool ());
39+
m_script->setScriptGenerateComment (m.value(sscr.settings_scriptGenerateComment).toBool ());
40+
m_script->scriptSetEditorColorFormars(m.value(sscr.settings_colorFormats ).toString ());
41+
m_script->scriptSetManualExecutables (m.value(ssrv.settings_scriptManual ).toStringList());
42+
m_script->scriptSetDefaultExecutable (m.value(ssrv.settings_scriptDefault ).toString ());
3943
}
4044

4145
void mbServerDialogSettings::fillData(MBSETTINGS &m)
4246
{
43-
const mbServer::Strings &s = mbServer::Strings::instance();
47+
const mbServer::Strings &ssrv = mbServer::Strings::instance();
48+
const mbServerScriptManager::Strings &sscr = mbServerScriptManager::Strings::instance();
4449
mbCoreDialogSettings::fillData(m);
45-
m[s.settings_scriptEnable ] = m_script->scriptEnable ();
46-
m[s.settings_scriptUseOptimization] = m_script->scriptUseOptimization ();
47-
m[s.settings_scriptManual ] = m_script->scriptManualExecutables();
48-
m[s.settings_scriptDefault ] = m_script->scriptDefaultExecutable();
50+
m[ssrv.settings_scriptEnable ] = m_script->scriptEnable ();
51+
m[ssrv.settings_scriptUseOptimization] = m_script->scriptUseOptimization ();
52+
m[sscr.settings_scriptGenerateComment] = m_script->scriptGenerateComment ();
53+
m[sscr.settings_colorFormats ] = m_script->scriptEditorColorFormars();
54+
m[ssrv.settings_scriptManual ] = m_script->scriptManualExecutables ();
55+
m[ssrv.settings_scriptDefault ] = m_script->scriptDefaultExecutable ();
4956

5057
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
#include "server_modelsettingsscripteditorcolors.h"
2+
3+
mbServerModelSettingsScriptEditorColors::mbServerModelSettingsScriptEditorColors(QObject *parent)
4+
: QAbstractTableModel{parent},
5+
m_colorFormats({
6+
ColorFormat(mbServerScriptHighlighter::TextFormat ),
7+
ColorFormat(mbServerScriptHighlighter::KeywordFormat),
8+
ColorFormat(mbServerScriptHighlighter::NumberFormat ),
9+
ColorFormat(mbServerScriptHighlighter::CommentFormat),
10+
ColorFormat(mbServerScriptHighlighter::StringFormat ),
11+
ColorFormat(mbServerScriptHighlighter::SymbolFormat )
12+
})
13+
{
14+
}
15+
16+
QVariant mbServerModelSettingsScriptEditorColors::headerData(int section, Qt::Orientation orientation, int role) const
17+
{
18+
switch (role)
19+
{
20+
case Qt::DisplayRole:
21+
switch (orientation)
22+
{
23+
case Qt::Horizontal:
24+
switch (section)
25+
{
26+
case 0: return QStringLiteral("Color");
27+
}
28+
break;
29+
case Qt::Vertical:
30+
if (section < m_colorFormats.count())
31+
return m_colorFormats.at(section).name;
32+
break;
33+
}
34+
break;
35+
}
36+
return QVariant();
37+
}
38+
39+
int mbServerModelSettingsScriptEditorColors::rowCount(const QModelIndex &parent) const
40+
{
41+
return m_colorFormats.count();
42+
}
43+
44+
int mbServerModelSettingsScriptEditorColors::columnCount(const QModelIndex &parent) const
45+
{
46+
return 1;
47+
}
48+
49+
QVariant mbServerModelSettingsScriptEditorColors::data(const QModelIndex &index, int role) const
50+
{
51+
switch (role)
52+
{
53+
case Qt::BackgroundRole:
54+
{
55+
int r = index.row();
56+
if (r < m_colorFormats.count())
57+
return m_colorFormats.at(r).color;
58+
}
59+
break;
60+
}
61+
return QVariant();
62+
}
63+
64+
bool mbServerModelSettingsScriptEditorColors::setData(const QModelIndex &index, const QVariant &value, int role)
65+
{
66+
switch (role)
67+
{
68+
case Qt::BackgroundRole:
69+
{
70+
int r = index.row();
71+
if (r < m_colorFormats.count())
72+
{
73+
QColor color = value.value<QColor>();
74+
m_colorFormats[r].color = color;
75+
return true;
76+
}
77+
}
78+
break;
79+
}
80+
return false;
81+
}
82+
83+
mbServerScriptHighlighter::ColorFormats mbServerModelSettingsScriptEditorColors::colorFormats() const
84+
{
85+
mbServerScriptHighlighter::ColorFormats res;
86+
Q_FOREACH (const ColorFormat &f, m_colorFormats)
87+
res[f.type] = f.color;
88+
return res;
89+
}
90+
91+
void mbServerModelSettingsScriptEditorColors::setColorFormats(const mbServerScriptHighlighter::ColorFormats &fmt)
92+
{
93+
mbServerScriptHighlighter::ColorFormats::const_iterator it;
94+
mbServerScriptHighlighter::ColorFormats::const_iterator end = fmt.end();
95+
96+
for (ColorFormat &localfmt : m_colorFormats)
97+
{
98+
it = fmt.find(localfmt.type);
99+
if (it != end)
100+
localfmt.color = it.value();
101+
}
102+
Q_EMIT dataChanged(createIndex(0, 0), createIndex(m_colorFormats.count()-1, 0));
103+
}
104+
105+
void mbServerModelSettingsScriptEditorColors::setDefaultEditorColors()
106+
{
107+
mbServerScriptHighlighter::ColorFormats fmts = mbServerScriptHighlighter::Defaults::instance().colorFormats;
108+
setColorFormats(fmts);
109+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#ifndef MBSERVERMODELSETTINGSSCRIPTEDITORCOLORS_H
2+
#define MBSERVERMODELSETTINGSSCRIPTEDITORCOLORS_H
3+
4+
#include <QAbstractTableModel>
5+
6+
#include <gui/script/editor/server_scripthighlighter.h>
7+
8+
class mbServerModelSettingsScriptEditorColors : public QAbstractTableModel
9+
{
10+
Q_OBJECT
11+
12+
public:
13+
struct ColorFormat
14+
{
15+
ColorFormat(mbServerScriptHighlighter::ColorFormatType ftype) :
16+
type(ftype),
17+
name(mbServerScriptHighlighter::toString(ftype))
18+
{}
19+
20+
const mbServerScriptHighlighter::ColorFormatType type;
21+
const QString name;
22+
QColor color;
23+
};
24+
25+
typedef QList<ColorFormat> ColorFormats;
26+
27+
public:
28+
explicit mbServerModelSettingsScriptEditorColors(QObject *parent = nullptr);
29+
30+
public: // QAbstractItemModel interface
31+
QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
32+
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
33+
int columnCount(const QModelIndex &parent = QModelIndex()) const override;
34+
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
35+
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
36+
37+
public:
38+
mbServerScriptHighlighter::ColorFormats colorFormats() const;
39+
void setColorFormats(const mbServerScriptHighlighter::ColorFormats &f);
40+
41+
public Q_SLOTS:
42+
void setDefaultEditorColors();
43+
44+
private:
45+
ColorFormats m_colorFormats;
46+
};
47+
48+
#endif // MBSERVERMODELSETTINGSSCRIPTEDITORCOLORS_H

0 commit comments

Comments
 (0)