File indexing completed on 2024-05-05 08:00:16
0001 /* 0002 SPDX-FileCopyrightText: 2009 Erlend Hamberg <ehamberg@gmail.com> 0003 SPDX-FileCopyrightText: 2011 Svyatoslav Kuzmich <svatoslav1@gmail.com> 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 */ 0007 0008 #ifndef KATEVI_APP_COMMANDS_H 0009 #define KATEVI_APP_COMMANDS_H 0010 0011 #include <KTextEditor/Command> 0012 #include <QObject> 0013 #include <QRegularExpression> 0014 0015 namespace KTextEditor 0016 { 0017 class MainWindow; 0018 } 0019 0020 namespace KateVi 0021 { 0022 class AppCommands : public KTextEditor::Command 0023 { 0024 AppCommands(); 0025 static AppCommands *m_instance; 0026 0027 public: 0028 ~AppCommands() override; 0029 bool exec(KTextEditor::View *view, const QString &cmd, QString &msg, const KTextEditor::Range &range = KTextEditor::Range::invalid()) override; 0030 bool help(KTextEditor::View *view, const QString &cmd, QString &msg) override; 0031 0032 static AppCommands *self() 0033 { 0034 if (m_instance == nullptr) { 0035 m_instance = new AppCommands(); 0036 } 0037 return m_instance; 0038 } 0039 0040 private: 0041 /** 0042 * @returns a view in the given \p window that does not share a split 0043 * view with the given \p view. If such view could not be found, then 0044 * nullptr is returned. 0045 */ 0046 static KTextEditor::View *findViewInDifferentSplitView(KTextEditor::MainWindow *window, KTextEditor::View *view); 0047 0048 private: 0049 void closeCurrentDocument(); 0050 void closeDocuments(const QList<KTextEditor::Document *> &documents); 0051 void closeCurrentView(); 0052 void closeCurrentSplitView(); 0053 void closeOtherSplitViews(); 0054 void quit(); 0055 0056 private: 0057 const QRegularExpression re_write; 0058 const QRegularExpression re_close; 0059 const QRegularExpression re_quit; 0060 const QRegularExpression re_exit; 0061 const QRegularExpression re_edit; 0062 const QRegularExpression re_tabedit; 0063 const QRegularExpression re_new; 0064 const QRegularExpression re_split; 0065 const QRegularExpression re_vsplit; 0066 const QRegularExpression re_vclose; 0067 const QRegularExpression re_only; 0068 }; 0069 0070 class BufferCommands : public KTextEditor::Command 0071 { 0072 BufferCommands(); 0073 static BufferCommands *m_instance; 0074 0075 public: 0076 ~BufferCommands() override; 0077 bool exec(KTextEditor::View *view, const QString &cmd, QString &msg, const KTextEditor::Range &range = KTextEditor::Range::invalid()) override; 0078 bool help(KTextEditor::View *view, const QString &cmd, QString &msg) override; 0079 0080 static BufferCommands *self() 0081 { 0082 if (m_instance == nullptr) { 0083 m_instance = new BufferCommands(); 0084 } 0085 return m_instance; 0086 } 0087 0088 private: 0089 void switchDocument(KTextEditor::View *, const QString &doc); 0090 void prevBuffer(KTextEditor::View *); 0091 void nextBuffer(KTextEditor::View *); 0092 void firstBuffer(KTextEditor::View *); 0093 void lastBuffer(KTextEditor::View *); 0094 void prevTab(KTextEditor::View *); 0095 void nextTab(KTextEditor::View *); 0096 void firstTab(KTextEditor::View *); 0097 void lastTab(KTextEditor::View *); 0098 0099 static void activateDocument(KTextEditor::View *, KTextEditor::Document *); 0100 static QList<KTextEditor::Document *> documents(); 0101 }; 0102 } 0103 0104 #endif /* KATEVI_APP_COMMANDS_H */