File indexing completed on 2024-04-28 04:37:27
0001 /* 0002 SPDX-FileCopyrightText: 2007 Alexander Dymo <adymo@kdevelop.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KDEVPLATFORM_TEXTDOCUMENT_H 0008 #define KDEVPLATFORM_TEXTDOCUMENT_H 0009 0010 #include <QWidget> 0011 0012 #include <sublime/view.h> 0013 0014 #include "partdocument.h" 0015 0016 #include "shellexport.h" 0017 0018 class QMenu; 0019 0020 namespace KTextEditor { 0021 class View; 0022 } 0023 0024 namespace KDevelop { 0025 0026 class TextViewPrivate; 0027 class TextDocumentPrivate; 0028 0029 /** 0030 Text document which represents KTextEditor documents. 0031 0032 Usually Kate documents are represented by this class but TextDocument is not 0033 limited to Kate. Each conforming text editor will work. 0034 */ 0035 class KDEVPLATFORMSHELL_EXPORT TextDocument: public PartDocument { 0036 Q_OBJECT 0037 public: 0038 TextDocument(const QUrl &url, ICore*, const QString& encoding ); 0039 ~TextDocument() override; 0040 0041 QWidget *createViewWidget(QWidget *parent = nullptr) override; 0042 KParts::Part *partForView(QWidget *view) const override; 0043 0044 bool save(DocumentSaveMode mode = Default) override; 0045 DocumentState state() const override; 0046 0047 KTextEditor::Cursor cursorPosition() const override; 0048 void setCursorPosition(const KTextEditor::Cursor &cursor) override; 0049 0050 KTextEditor::Range textSelection() const override; 0051 void setTextSelection(const KTextEditor::Range &range) override; 0052 0053 QString text(const KTextEditor::Range &range) const override; 0054 0055 QString textLine() const override; 0056 QString textWord() const override; 0057 0058 KTextEditor::Document* textDocument() const override; 0059 0060 QString documentType() const override; 0061 0062 QIcon defaultIcon() const override; 0063 0064 KTextEditor::View* activeTextView() const override; 0065 0066 public Q_SLOTS: 0067 void reload() override; 0068 0069 protected: 0070 Sublime::View *newView(Sublime::Document *doc) override; 0071 0072 private: 0073 Q_PRIVATE_SLOT(d_func(), void saveSessionConfig()) 0074 Q_PRIVATE_SLOT(d_func(), void modifiedOnDisk(KTextEditor::Document *, bool, KTextEditor::ModificationInterface::ModifiedOnDiskReason)) 0075 0076 void newDocumentStatus(KTextEditor::Document*); 0077 void populateContextMenu(KTextEditor::View*, QMenu*); 0078 void unpopulateContextMenu(); 0079 void textChanged(KTextEditor::Document*); 0080 void documentUrlChanged(KTextEditor::Document*); 0081 void slotDocumentLoaded(); 0082 void documentSaved(KTextEditor::Document*,bool); 0083 void repositoryCheckFinished(bool); 0084 0085 private: 0086 const QScopedPointer<class TextDocumentPrivate> d_ptr; 0087 Q_DECLARE_PRIVATE(TextDocument) 0088 friend class TextDocumentPrivate; 0089 }; 0090 0091 class KDEVPLATFORMSHELL_EXPORT TextView : public Sublime::View 0092 { 0093 Q_OBJECT 0094 public: 0095 explicit TextView(TextDocument* doc); 0096 ~TextView() override; 0097 0098 QWidget *createWidget(QWidget *parent = nullptr) override; 0099 0100 KTextEditor::View *textView() const; 0101 0102 QString viewStatus() const override; 0103 0104 void readSessionConfig(KConfigGroup & config) override; 0105 void writeSessionConfig(KConfigGroup & config) override; 0106 0107 void setInitialRange(const KTextEditor::Range& range); 0108 KTextEditor::Range initialRange() const; 0109 0110 private: 0111 void sendStatusChanged(); 0112 0113 private: 0114 const QScopedPointer<class TextViewPrivate> d_ptr; 0115 Q_DECLARE_PRIVATE(TextView) 0116 }; 0117 0118 } 0119 0120 0121 #endif 0122