44 lines
1.0 KiB
C++
44 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <ScintillaEdit.h>
|
|
#include <ILexer.h>
|
|
|
|
#include <QFont>
|
|
#include <QString>
|
|
|
|
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;
|
|
};
|