File indexing completed on 2024-04-28 04:39:03
0001 /* 0002 SPDX-FileCopyrightText: 2010 Friedrich W. H. Kossebau <kossebau@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #ifndef OKTETADOCUMENT_H 0008 #define OKTETADOCUMENT_H 0009 0010 // Kasten core 0011 #include <Kasten/KastenCore> 0012 // KDevPlatform 0013 #include <sublime/urldocument.h> 0014 #include <interfaces/idocument.h> 0015 0016 namespace Kasten { 0017 class ByteArrayDocument; 0018 class AbstractDocument; 0019 } 0020 0021 namespace KDevelop 0022 { 0023 class ICore; 0024 class OktetaPlugin; 0025 0026 0027 class OktetaDocument : public Sublime::UrlDocument, public IDocument 0028 { 0029 Q_OBJECT 0030 Q_INTERFACES(KDevelop::IDocument) 0031 0032 public: 0033 OktetaDocument( const QUrl &url, ICore* core ); 0034 0035 ~OktetaDocument() override; 0036 0037 public: // KDevelop::IDocument API 0038 KTextEditor::Cursor cursorPosition() const override; 0039 bool isActive() const override; 0040 QMimeType mimeType() const override; 0041 KParts::Part* partForView( QWidget* widget ) const override; 0042 DocumentState state() const override; 0043 KTextEditor::Document* textDocument() const override; 0044 QUrl url() const override; 0045 0046 void activate( Sublime::View* view, KParts::MainWindow* mainWindow ) override; 0047 bool close( IDocument::DocumentSaveMode = IDocument::Default ) override; 0048 void reload() override; 0049 bool save( IDocument::DocumentSaveMode = IDocument::Default ) override; 0050 void setCursorPosition( const KTextEditor::Cursor& cursor ) override; 0051 void setTextSelection( const KTextEditor::Range& range ) override; 0052 0053 public: // Sublime::Document API 0054 bool closeDocument(bool silent) override; 0055 0056 public: 0057 OktetaPlugin* plugin() const; 0058 Kasten::ByteArrayDocument* byteArrayDocument() const; 0059 0060 public: 0061 void setPlugin( OktetaPlugin* plugin ); 0062 0063 protected Q_SLOTS: // Sublime::Document API 0064 Sublime::View* newView( Sublime::Document* document ) override; 0065 0066 protected Q_SLOTS: 0067 void onByteArrayDocumentChanged(); 0068 // Moc is too primitive to know about namespace aliases 0069 void onByteArrayDocumentLoaded( Kasten::AbstractDocument* document ); 0070 0071 private: 0072 OktetaPlugin* mPlugin; 0073 0074 Kasten::ByteArrayDocument* mByteArrayDocument; 0075 }; 0076 0077 0078 inline OktetaPlugin* OktetaDocument::plugin() const { return mPlugin; } 0079 inline Kasten::ByteArrayDocument* OktetaDocument::byteArrayDocument() const { return mByteArrayDocument; } 0080 0081 } 0082 0083 #endif