1 /* 2 SPDX-FileCopyrightText: KDE Developers 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #ifndef KATE_ABSTRACT_INPUT_MODE_H 8 #define KATE_ABSTRACT_INPUT_MODE_H 9 10 class KateLayoutCache; 11 class KateViewInternal; 12 13 #include "katerenderer.h" 14 #include "ktexteditor/view.h" 15 #include "ktexteditor_export.h" // for tests 16 17 #include <KConfigGroup> 18 19 #include <QKeyEvent> 20 21 class KateViewInternal; 22 namespace KTextEditor 23 { 24 class ViewPrivate; 25 } 26 27 class KTEXTEDITOR_EXPORT KateAbstractInputMode 28 { 29 protected: 30 KateAbstractInputMode(KateViewInternal *); 31 32 public: 33 virtual ~KateAbstractInputMode() = default; 34 35 virtual KTextEditor::View::ViewMode viewMode() const = 0; 36 virtual QString viewModeHuman() const = 0; 37 virtual KTextEditor::View::InputMode viewInputMode() const = 0; 38 virtual QString viewInputModeHuman() const = 0; 39 40 virtual void activate() = 0; 41 virtual void deactivate() = 0; 42 virtual void reset() = 0; 43 44 virtual bool overwrite() const = 0; 45 virtual void overwrittenChar(const QChar &) = 0; 46 virtual void clearSelection() = 0; 47 virtual bool stealKey(QKeyEvent *k) = 0; 48 49 virtual void gotFocus() = 0; 50 virtual void lostFocus() = 0; 51 52 virtual void readSessionConfig(const KConfigGroup &config) = 0; 53 virtual void writeSessionConfig(KConfigGroup &config) = 0; 54 virtual void updateRendererConfig() = 0; 55 virtual void updateConfig() = 0; 56 virtual void readWriteChanged(bool rw) = 0; 57 58 virtual void find() = 0; 59 virtual void findSelectedForwards() = 0; 60 virtual void findSelectedBackwards() = 0; 61 virtual void findReplace() = 0; 62 virtual void findNext() = 0; 63 virtual void findPrevious() = 0; 64 65 virtual void activateCommandLine() = 0; 66 67 virtual bool keyPress(QKeyEvent *) = 0; 68 virtual bool blinkCaret() const = 0; 69 virtual KateRenderer::caretStyles caretStyle() const = 0; 70 71 virtual void toggleInsert() = 0; 72 virtual void launchInteractiveCommand(const QString &command) = 0; 73 74 virtual QString bookmarkLabel(int line) const = 0; 75 76 /* functions that are currently view private, but vi-mode needs to access them */ 77 public: 78 void updateCursor(const KTextEditor::Cursor newCursor); 79 KateLayoutCache *layoutCache() const; 80 int linesDisplayed() const; 81 void scrollViewLines(int offset); 82 83 protected: viewInternal()84 KateViewInternal *viewInternal() const 85 { 86 return m_viewInternal; 87 } view()88 KTextEditor::ViewPrivate *view() const 89 { 90 return m_view; 91 } 92 93 private: 94 KateViewInternal *m_viewInternal; 95 KTextEditor::ViewPrivate *m_view; 96 }; 97 98 #endif 99