]> git.sven.stormbind.net Git - sven/vym.git/blob - src/codeeditor.h
Replace Pierre as the maintainer
[sven/vym.git] / src / codeeditor.h
1 #ifndef CODEEDITOR_H
2 #define CODEEDITOR_H
3
4 #include <QObject>
5 #include <QPlainTextEdit>
6
7 class QPaintEvent;
8 class QResizeEvent;
9 class QSize;
10 class QWidget;
11
12 class LineNumberArea;
13
14 class CodeEditor : public QPlainTextEdit {
15     Q_OBJECT
16
17   public:
18     CodeEditor(QWidget *parent = 0);
19
20     void lineNumberAreaPaintEvent(QPaintEvent *event);
21     int lineNumberAreaWidth();
22
23   protected:
24     void resizeEvent(QResizeEvent *event) override;
25
26   private slots:
27     void updateLineNumberAreaWidth(int newBlockCount);
28     void highlightCurrentLine();
29     void updateLineNumberArea(const QRect &, int);
30
31   private:
32     QWidget *lineNumberArea;
33 };
34
35 class LineNumberArea : public QWidget {
36   public:
37     LineNumberArea(CodeEditor *editor) : QWidget(editor)
38     {
39         codeEditor = editor;
40     }
41
42     QSize sizeHint() const override
43     {
44         return QSize(codeEditor->lineNumberAreaWidth(), 0);
45     }
46
47   protected:
48     void paintEvent(QPaintEvent *event) override
49     {
50         codeEditor->lineNumberAreaPaintEvent(event);
51     }
52
53   private:
54     CodeEditor *codeEditor;
55 };
56
57 #endif