1 /* 2 SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #ifndef KDEVPLATFORM_TEXTDOCUMENT_H 8 #define KDEVPLATFORM_TEXTDOCUMENT_H 9 10 #include <QWidget> 11 12 #include <sublime/view.h> 13 14 #include "partdocument.h" 15 16 #include "shellexport.h" 17 18 class QMenu; 19 20 namespace KTextEditor { 21 class View; 22 } 23 24 namespace KDevelop { 25 26 class TextViewPrivate; 27 class TextDocumentPrivate; 28 29 /** 30 Text document which represents KTextEditor documents. 31 32 Usually Kate documents are represented by this class but TextDocument is not 33 limited to Kate. Each conforming text editor will work. 34 */ 35 class KDEVPLATFORMSHELL_EXPORT TextDocument: public PartDocument { 36 Q_OBJECT 37 public: 38 TextDocument(const QUrl &url, ICore*, const QString& encoding ); 39 ~TextDocument() override; 40 41 QWidget *createViewWidget(QWidget *parent = nullptr) override; 42 KParts::Part *partForView(QWidget *view) const override; 43 44 bool save(DocumentSaveMode mode = Default) override; 45 DocumentState state() const override; 46 47 KTextEditor::Cursor cursorPosition() const override; 48 void setCursorPosition(const KTextEditor::Cursor &cursor) override; 49 50 KTextEditor::Range textSelection() const override; 51 void setTextSelection(const KTextEditor::Range &range) override; 52 53 QString text(const KTextEditor::Range &range) const override; 54 55 QString textLine() const override; 56 QString textWord() const override; 57 58 bool isTextDocument() const override; 59 KTextEditor::Document* textDocument() const override; 60 61 QString documentType() const override; 62 63 QIcon defaultIcon() const override; 64 65 KTextEditor::View* activeTextView() const override; 66 67 public Q_SLOTS: 68 void reload() override; 69 70 protected: 71 Sublime::View *newView(Sublime::Document *doc) override; 72 73 private: 74 Q_PRIVATE_SLOT(d_func(), void saveSessionConfig()) 75 Q_PRIVATE_SLOT(d_func(), void modifiedOnDisk(KTextEditor::Document *, bool, KTextEditor::ModificationInterface::ModifiedOnDiskReason)) 76 77 void newDocumentStatus(KTextEditor::Document*); 78 void populateContextMenu(KTextEditor::View*, QMenu*); 79 void unpopulateContextMenu(); 80 void textChanged(KTextEditor::Document*); 81 void documentUrlChanged(KTextEditor::Document*); 82 void slotDocumentLoaded(); 83 void documentSaved(KTextEditor::Document*,bool); 84 void repositoryCheckFinished(bool); 85 86 private: 87 const QScopedPointer<class TextDocumentPrivate> d_ptr; 88 Q_DECLARE_PRIVATE(TextDocument) 89 friend class TextDocumentPrivate; 90 }; 91 92 class KDEVPLATFORMSHELL_EXPORT TextView : public Sublime::View 93 { 94 Q_OBJECT 95 public: 96 explicit TextView(TextDocument* doc); 97 ~TextView() override; 98 99 QWidget *createWidget(QWidget *parent = nullptr) override; 100 101 KTextEditor::View *textView() const; 102 103 QString viewStatus() const override; 104 105 void readSessionConfig(KConfigGroup & config) override; 106 void writeSessionConfig(KConfigGroup & config) override; 107 108 void setInitialRange(const KTextEditor::Range& range); 109 KTextEditor::Range initialRange() const; 110 111 private: 112 void sendStatusChanged(); 113 114 private: 115 const QScopedPointer<class TextViewPrivate> d_ptr; 116 Q_DECLARE_PRIVATE(TextView) 117 }; 118 119 } 120 121 122 #endif 123 124