]> git.sven.stormbind.net Git - sven/vym.git/blobdiff - src/codeeditor.h
New upstream version 2.9.22
[sven/vym.git] / src / codeeditor.h
diff --git a/src/codeeditor.h b/src/codeeditor.h
new file mode 100644 (file)
index 0000000..7ca78b5
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef CODEEDITOR_H
+#define CODEEDITOR_H
+
+#include <QObject>
+#include <QPlainTextEdit>
+
+class QPaintEvent;
+class QResizeEvent;
+class QSize;
+class QWidget;
+
+class LineNumberArea;
+
+class CodeEditor : public QPlainTextEdit {
+    Q_OBJECT
+
+  public:
+    CodeEditor(QWidget *parent = 0);
+
+    void lineNumberAreaPaintEvent(QPaintEvent *event);
+    int lineNumberAreaWidth();
+
+  protected:
+    void resizeEvent(QResizeEvent *event) override;
+
+  private slots:
+    void updateLineNumberAreaWidth(int newBlockCount);
+    void highlightCurrentLine();
+    void updateLineNumberArea(const QRect &, int);
+
+  private:
+    QWidget *lineNumberArea;
+};
+
+class LineNumberArea : public QWidget {
+  public:
+    LineNumberArea(CodeEditor *editor) : QWidget(editor)
+    {
+        codeEditor = editor;
+    }
+
+    QSize sizeHint() const override
+    {
+        return QSize(codeEditor->lineNumberAreaWidth(), 0);
+    }
+
+  protected:
+    void paintEvent(QPaintEvent *event) override
+    {
+        codeEditor->lineNumberAreaPaintEvent(event);
+    }
+
+  private:
+    CodeEditor *codeEditor;
+};
+
+#endif
\ No newline at end of file