MCPcopy Create free account
hub / github.com/Serial-Studio/Serial-Studio / JsCodeEditor

Method JsCodeEditor

app/src/DataModel/Editors/JsCodeEditor.cpp:56–132  ·  view source on GitHub ↗

* @brief Constructs the QML-side frame parser code editor. */

Source from the content-addressed store, hash-verified

54 * @brief Constructs the QML-side frame parser code editor.
55 */
56DataModel::JsCodeEditor::JsCodeEditor(QQuickItem* parent)
57 : QQuickPaintedItem(parent), m_sourceId(0), m_language(0), m_readingCode(false)
58{
59 setMipmap(false);
60 setAntialiasing(false);
61 setOpaquePainting(true);
62 setAcceptTouchEvents(true);
63 setFlag(ItemHasContents, true);
64 setFlag(ItemIsFocusScope, true);
65 setFlag(ItemAcceptsInputMethod, true);
66 setAcceptedMouseButtons(Qt::AllButtons);
67 setFillColor(Misc::ThemeManager::instance().getColor(QStringLiteral("base")));
68
69 m_widget.setTabReplace(true);
70 m_widget.setTabReplaceSize(2);
71 m_widget.setAutoIndentation(true);
72 m_widget.setHighlighter(new QJavascriptHighlighter());
73 m_widget.setFont(Misc::CommonFonts::instance().monoFont());
74 m_widget.setLayoutDirection(Qt::LeftToRight);
75 m_widget.setLanguageHint(QCodeEditor::LanguageHint::JavaScript);
76 m_widget.setCompleter(new DataModel::SerialStudioCompleter(false, &m_widget));
77
78 onThemeChanged();
79 connect(&Misc::ThemeManager::instance(),
80 &Misc::ThemeManager::themeChanged,
81 this,
82 &DataModel::JsCodeEditor::onThemeChanged);
83
84 connect(&m_widget, &QCodeEditor::textChanged, this, [this] { Q_EMIT modifiedChanged(); });
85 connect(&m_widget, &QCodeEditor::textChanged, this, &DataModel::JsCodeEditor::textChanged);
86
87 connect(&m_widget, &QCodeEditor::textChanged, this, [this] {
88 if (!m_readingCode)
89 ProjectModel::instance().storeFrameParserCode(m_sourceId, text());
90 });
91
92 connect(&DataModel::ProjectModel::instance(),
93 &DataModel::ProjectModel::frameParserCodeChanged,
94 this,
95 &DataModel::JsCodeEditor::readCode);
96
97 connect(&DataModel::ProjectModel::instance(),
98 &DataModel::ProjectModel::frameParserLanguageChanged,
99 this,
100 &DataModel::JsCodeEditor::readCode);
101
102 connect(&DataModel::ProjectModel::instance(),
103 &DataModel::ProjectModel::sourceFrameParserLanguageChanged,
104 this,
105 [this](int sourceId) {
106 if (sourceId == m_sourceId)
107 readCode();
108 });
109
110 connect(&DataModel::ProjectModel::instance(),
111 &DataModel::ProjectModel::sourceFrameParserCodeChanged,
112 this,
113 [this](int sourceId) {

Callers

nothing calls this directly

Calls 9

getColorMethod · 0.80
setTabReplaceMethod · 0.80
setTabReplaceSizeMethod · 0.80
setAutoIndentationMethod · 0.80
setHighlighterMethod · 0.80
setFontMethod · 0.80
setLanguageHintMethod · 0.80
setCompleterMethod · 0.80
storeFrameParserCodeMethod · 0.80

Tested by

no test coverage detected