KTextEditor
document.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef KDELIBS_KTEXTEDITOR_DOCUMENT_H
00021 #define KDELIBS_KTEXTEDITOR_DOCUMENT_H
00022
00023 #include <ktexteditor/ktexteditor_export.h>
00024
00025 #include <ktexteditor/cursor.h>
00026 #include <ktexteditor/range.h>
00027
00028
00029 #include <kparts/part.h>
00030
00031
00032 #include <QtCore/QList>
00033 #include <QtCore/QMetaType>
00034
00035 namespace KTextEditor
00036 {
00037
00038 class Editor;
00039 class View;
00040
00110 class KTEXTEDITOR_EXPORT Document : public KParts::ReadWritePart
00111 {
00112 Q_OBJECT
00113
00114 public:
00122 Document ( QObject *parent = 0);
00123
00127 virtual ~Document ();
00128
00129
00130
00131
00132
00133 public:
00141 virtual Editor *editor () = 0;
00142
00148 virtual View *createView ( QWidget *parent ) = 0;
00149
00153 virtual View* activeView() const = 0;
00154
00158 virtual const QList<View*> &views() const = 0;
00159
00160 Q_SIGNALS:
00171 void viewCreated (KTextEditor::Document *document, KTextEditor::View *view);
00172
00173
00174
00175
00176 public:
00184 virtual const QString &documentName () const = 0;
00185
00190 virtual QString mimeType() = 0;
00191
00192
00193
00194
00195
00196 Q_SIGNALS:
00202 void documentNameChanged ( KTextEditor::Document *document );
00203
00209 void documentUrlChanged ( KTextEditor::Document *document );
00210
00219 void modifiedChanged ( KTextEditor::Document *document );
00220
00221
00222
00223
00224
00225 public:
00239 virtual bool setEncoding (const QString &encoding) = 0;
00240
00248 virtual const QString &encoding () const = 0;
00249
00250
00251
00252
00253
00254 public:
00262 virtual bool documentReload () = 0;
00263
00270 virtual bool documentSave () = 0;
00271
00278 virtual bool documentSaveAs () = 0;
00279
00280 Q_SIGNALS:
00285 void documentSavedOrUploaded(KTextEditor::Document* document,bool saveAs);
00286
00287
00288
00289
00290 public:
00313 virtual bool startEditing () = 0;
00314
00321 virtual bool endEditing () = 0;
00322
00323
00324
00325
00326 public:
00332 virtual QString text () const = 0;
00333
00342 virtual QString text ( const Range& range, bool block = false ) const = 0;
00343
00350 virtual QChar character( const Cursor& position ) const = 0;
00351
00361 virtual QStringList textLines ( const Range& range, bool block = false ) const = 0;
00362
00369 virtual QString line ( int line ) const = 0;
00370
00376 virtual int lines () const = 0;
00377
00383 virtual Cursor documentEnd() const = 0;
00384
00389 inline Range documentRange() const { return Range(Cursor::start(), documentEnd()); }
00390
00397 virtual int totalCharacters() const = 0;
00398
00402 virtual bool isEmpty() const;
00403
00411 virtual int lineLength ( int line ) const = 0;
00412
00418 inline Cursor endOfLine(int line) const { return Cursor(line, lineLength(line)); }
00419
00426 virtual bool setText ( const QString &text ) = 0;
00427
00434 virtual bool setText ( const QStringList &text ) = 0;
00435
00441 virtual bool clear () = 0;
00442
00451 virtual bool insertText ( const Cursor &position, const QString &text, bool block = false ) = 0;
00452
00461 virtual bool insertText ( const Cursor &position, const QStringList &text, bool block = false ) = 0;
00462
00471 virtual bool replaceText ( const Range &range, const QString &text, bool block = false );
00472
00481 virtual bool replaceText ( const Range &range, const QStringList &text, bool block = false );
00482
00490 virtual bool removeText ( const Range &range, bool block = false ) = 0;
00491
00499 virtual bool cursorInText(const Cursor &cursor);
00500
00513 virtual bool insertLine ( int line, const QString &text ) = 0;
00514
00527 virtual bool insertLines ( int line, const QStringList &text ) = 0;
00528
00535 virtual bool removeLine ( int line ) = 0;
00536
00537
00538
00539
00540
00541
00542 Q_SIGNALS:
00548 void textChanged(KTextEditor::Document *document);
00549
00558 void textInserted(KTextEditor::Document *document, const KTextEditor::Range& range);
00559
00567 void textRemoved(KTextEditor::Document *document, const KTextEditor::Range& range);
00568
00579 void textChanged(KTextEditor::Document *document, const KTextEditor::Range& oldRange, const KTextEditor::Range& newRange);
00580
00590 void aboutToClose(KTextEditor::Document *document);
00591
00601 void aboutToReload(KTextEditor::Document *document);
00602
00603
00604
00605
00606 public:
00612 virtual QString mode() const = 0;
00613
00619 virtual QString highlightingMode() const = 0;
00620
00626 virtual QStringList modes() const = 0;
00627
00633 virtual QStringList highlightingModes() const = 0;
00634
00641 virtual bool setMode(const QString &name) = 0;
00642
00649 virtual bool setHighlightingMode(const QString &name) = 0;
00650
00659 virtual QString highlightingModeSection( int index ) const = 0;
00660
00669 virtual QString modeSection( int index ) const = 0;
00670
00671
00672
00673
00674
00675
00676 Q_SIGNALS:
00684 void modeChanged(KTextEditor::Document *document);
00685
00693 void highlightingModeChanged(KTextEditor::Document *document);
00694
00695 private:
00696 class DocumentPrivate* const d;
00697
00698 public:
00706 void setSuppressOpeningErrorDialogs(bool suppress);
00707 bool suppressOpeningErrorDialogs() const;
00712 bool openingError() const;
00713 QString openingErrorMessage() const;
00714
00715 protected:
00716 void setOpeningError(bool errors);
00717 void setOpeningErrorMessage(const QString& message);
00718 };
00719
00720 }
00721
00722 Q_DECLARE_METATYPE(KTextEditor::Document*)
00723
00724 #endif
00725
00726
00727