File indexing completed on 2024-04-28 04:37:20
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_PARTDOCUMENT_H 0008 #define KDEVPLATFORM_PARTDOCUMENT_H 0009 0010 #include <interfaces/idocument.h> 0011 #include <sublime/urldocument.h> 0012 0013 #include "shellexport.h" 0014 0015 namespace KParts { 0016 class Part; 0017 } 0018 0019 namespace KDevelop { 0020 class PartDocumentPrivate; 0021 0022 /** 0023 The generic document which represents KParts. 0024 0025 This document is used by shell when more specific document classes 0026 are incapable of loading the url. 0027 0028 This document loads one KPart (read-only or read-write) per view 0029 and sets part widget to be a view widget. 0030 */ 0031 class KDEVPLATFORMSHELL_EXPORT PartDocument: public Sublime::UrlDocument, public KDevelop::IDocument { 0032 Q_OBJECT 0033 Q_INTERFACES(KDevelop::IDocument) 0034 0035 public: 0036 PartDocument(const QUrl &url, ICore* core, const QString& preferredPart = QString() ); 0037 ~PartDocument() override; 0038 0039 QUrl url() const override; 0040 void setUrl(const QUrl& newUrl); 0041 0042 QWidget *createViewWidget(QWidget *parent = nullptr) override; 0043 KParts::Part *partForView(QWidget *view) const override; 0044 0045 QMimeType mimeType() const override; 0046 KTextEditor::Document* textDocument() const override; 0047 bool save(DocumentSaveMode mode = Default) override; 0048 void reload() override; 0049 ///Closes and deletes the document. Asks the user before if needed. 0050 bool close(DocumentSaveMode mode = Default) override; 0051 bool isActive() const override; 0052 DocumentState state() const override; 0053 0054 void setPrettyName(const QString& name) override; 0055 0056 void activate(Sublime::View *activeView, KParts::MainWindow *mainWindow) override; 0057 0058 KTextEditor::Cursor cursorPosition() const override; 0059 void setCursorPosition(const KTextEditor::Cursor &cursor) override; 0060 void setTextSelection(const KTextEditor::Range &range) override; 0061 0062 //Overridden from Sublime::Document 0063 bool closeDocument(bool silent) override; 0064 bool askForCloseFeedback() override; 0065 protected: 0066 /** Gives us access to the KParts */ 0067 QMap<QWidget*, KParts::Part*> partForView() const; 0068 0069 /** Lets us override the createViewWidget method safely */ 0070 void addPartForView(QWidget* widget, KParts::Part* part); 0071 0072 private: 0073 const QScopedPointer<class PartDocumentPrivate> d_ptr; 0074 Q_DECLARE_PRIVATE(PartDocument) 0075 }; 0076 0077 } 0078 0079 #endif 0080