#pragma once #include #include #include #include class SciEdit : public ScintillaEdit { Q_OBJECT public: explicit SciEdit(QWidget * parent = nullptr); enum FoldType { NoFoldType, BoxFoldType, }; Q_ENUMS(FoldType) void setStyleFont(const QFont & font, int style = STYLE_DEFAULT); void setFolding(FoldType foldType, int margin = 2); void setLexer(Scintilla::ILexer5 * lexer); void setLineNumbersEnabled(bool enabled); void setEditorFont(const QFont &font); void applyTheme(bool dark); void sendColor(unsigned int iMessage, uptr_t wParam, const QColor &col) const; signals: void cursorPosChanged(int line, int index); void textChanged(); private: void setMarkerDefine(int markerNumber, int markerSymbol); void updateLineNumberMarginWidth(); void applyLexerStyles(); bool m_lineNumbersEnabled = false; int m_lastLineNumberDigits = 0; bool m_isDarkTheme = false; QFont m_editorFont; QString m_lexerName; };