File indexing completed on 2024-05-05 16:17:46

0001 /*
0002     SPDX-FileCopyrightText: KDE Developers
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef KATE_ABSTRACT_INPUT_MODE_H
0008 #define KATE_ABSTRACT_INPUT_MODE_H
0009 
0010 class KateLayoutCache;
0011 class KateViewInternal;
0012 
0013 #include "katerenderer.h"
0014 #include "ktexteditor/view.h"
0015 #include "ktexteditor_export.h" // for tests
0016 
0017 #include <KConfigGroup>
0018 
0019 #include <QKeyEvent>
0020 
0021 class KateViewInternal;
0022 namespace KTextEditor
0023 {
0024 class ViewPrivate;
0025 }
0026 
0027 class KTEXTEDITOR_EXPORT KateAbstractInputMode
0028 {
0029 protected:
0030     KateAbstractInputMode(KateViewInternal *);
0031 
0032 public:
0033     virtual ~KateAbstractInputMode() = default;
0034 
0035     virtual KTextEditor::View::ViewMode viewMode() const = 0;
0036     virtual QString viewModeHuman() const = 0;
0037     virtual KTextEditor::View::InputMode viewInputMode() const = 0;
0038     virtual QString viewInputModeHuman() const = 0;
0039 
0040     virtual void activate() = 0;
0041     virtual void deactivate() = 0;
0042     virtual void reset() = 0;
0043 
0044     virtual bool overwrite() const = 0;
0045     virtual void overwrittenChar(const QChar &) = 0;
0046     virtual void clearSelection() = 0;
0047     virtual bool stealKey(QKeyEvent *k) = 0;
0048 
0049     virtual void gotFocus() = 0;
0050     virtual void lostFocus() = 0;
0051 
0052     virtual void readSessionConfig(const KConfigGroup &config) = 0;
0053     virtual void writeSessionConfig(KConfigGroup &config) = 0;
0054     virtual void updateRendererConfig() = 0;
0055     virtual void updateConfig() = 0;
0056     virtual void readWriteChanged(bool rw) = 0;
0057 
0058     virtual void find() = 0;
0059     virtual void findSelectedForwards() = 0;
0060     virtual void findSelectedBackwards() = 0;
0061     virtual void findReplace() = 0;
0062     virtual void findNext() = 0;
0063     virtual void findPrevious() = 0;
0064 
0065     virtual void activateCommandLine() = 0;
0066 
0067     virtual bool keyPress(QKeyEvent *) = 0;
0068     virtual bool blinkCaret() const = 0;
0069     virtual KateRenderer::caretStyles caretStyle() const = 0;
0070 
0071     virtual void toggleInsert() = 0;
0072     virtual void launchInteractiveCommand(const QString &command) = 0;
0073 
0074     virtual QString bookmarkLabel(int line) const = 0;
0075 
0076     /* functions that are currently view private, but vi-mode needs to access them */
0077 public:
0078     void updateCursor(const KTextEditor::Cursor newCursor);
0079     KateLayoutCache *layoutCache() const;
0080     int linesDisplayed() const;
0081     void scrollViewLines(int offset);
0082 
0083 protected:
0084     KateViewInternal *viewInternal() const
0085     {
0086         return m_viewInternal;
0087     }
0088     KTextEditor::ViewPrivate *view() const
0089     {
0090         return m_view;
0091     }
0092 
0093 private:
0094     KateViewInternal *m_viewInternal;
0095     KTextEditor::ViewPrivate *m_view;
0096 };
0097 
0098 #endif