00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef QEDITORPART_H
00023 #define QEDITORPART_H
00024
00025 #include <kdeversion.h>
00026 #include <ktexteditor/editor.h>
00027 #include <ktexteditor/document.h>
00028 #include <ktexteditor/editinterface.h>
00029 #include <ktexteditor/undointerface.h>
00030 #include <ktexteditor/cursorinterface.h>
00031 #include <ktexteditor/selectioninterface.h>
00032 #include <ktexteditor/highlightinginterface.h>
00033 #include <ktexteditor/searchinterface.h>
00034 #include <ktexteditor/markinterface.h>
00035 #include <ktexteditor/configinterface.h>
00036 #if (KDE_VERSION > 305)
00037 # include <ktexteditor/markinterfaceextension.h>
00038 #else
00039 # include "kde30x_markinterfaceextension.h"
00040 #endif
00041 #include <qptrlist.h>
00042
00043 #include "qeditor_factory.h"
00044
00045 class QWidget;
00046 class QPainter;
00047 class KURL;
00048 class QEditorView;
00049 class QEditorIndenter;
00050 class QEditorBrowserExtension;
00051 class KAboutData;
00052 class HLMode;
00053 class KConfig;
00054 class QSourceColorizer;
00055 class KDialogBase;
00056
00057 class QEditorPart:
00058 public KTextEditor::Document,
00059 public KTextEditor::EditInterface,
00060 public KTextEditor::UndoInterface,
00061 public KTextEditor::CursorInterface,
00062 public KTextEditor::SelectionInterface,
00063 public KTextEditor::HighlightingInterface,
00064 public KTextEditor::SearchInterface,
00065 public KTextEditor::MarkInterface,
00066 public KTextEditor::MarkInterfaceExtension,
00067 public KTextEditor::ConfigInterface
00068 {
00069 Q_OBJECT
00070 public:
00074 QEditorPart(QWidget *parentWidget, const char *widgetName,
00075 QObject *parent, const char *name, const QStringList &args);
00076
00080 virtual ~QEditorPart();
00081
00087 virtual void setReadWrite(bool rw);
00088
00092 virtual void setModified(bool modified);
00093
00094 QSourceColorizer* colorizer() const;
00095 QEditorIndenter* indenter() const;
00096
00097 signals:
00098 void fileNameChanged();
00099 void configWidget( KDialogBase* );
00100
00101
00102 public slots:
00108 virtual void readConfig ();
00109 virtual void writeConfig ();
00110
00115 virtual void readConfig (KConfig *);
00116 virtual void writeConfig (KConfig *);
00117
00121 virtual void readSessionConfig (KConfig *);
00122 virtual void writeSessionConfig (KConfig *);
00123
00127 virtual void configDialog();
00128
00129
00130 public:
00131 virtual uint mark (uint line);
00132
00133 virtual void setMark (uint line, uint markType);
00134 virtual void clearMark (uint line);
00135
00136 virtual void addMark (uint line, uint markType);
00137 virtual void removeMark (uint line, uint markType);
00138
00139 virtual QPtrList<KTextEditor::Mark> marks ();
00140 virtual void clearMarks ();
00141
00142 signals:
00143 void marksChanged();
00144
00145
00146 public:
00147 virtual void setPixmap(MarkInterface::MarkTypes, const QPixmap &);
00148 virtual void setDescription(MarkInterface::MarkTypes, const QString &);
00149 virtual void setMarksUserChangable(uint markMask);
00150
00151 signals:
00152 virtual void markChanged (KTextEditor::Mark mark,
00153 KTextEditor::MarkInterfaceExtension::MarkChangeAction action);
00154
00155
00156 public:
00157 virtual bool searchText (unsigned int startLine, unsigned int startCol,
00158 const QString &text, unsigned int *foundAtLine, unsigned int *foundAtCol,
00159 unsigned int *matchLen, bool casesensitive = true, bool backwards = false);
00160
00161 virtual bool searchText (unsigned int startLine, unsigned int startCol,
00162 const QRegExp ®exp, unsigned int *foundAtLine,
00163 unsigned int *foundAtCol, unsigned int *matchLen, bool backwards = false);
00164
00165
00166 public:
00167 QEditorView* currentView() const { return m_currentView; }
00168
00174 virtual KTextEditor::View *createView ( QWidget *parent, const char *name = 0 );
00175
00176
00177
00178
00179
00180
00181 virtual QPtrList<KTextEditor::View> views () const;
00182
00183
00184 public:
00188 virtual unsigned int hlMode ();
00189
00193 virtual bool setHlMode (unsigned int mode);
00194
00198 virtual unsigned int hlModeCount ();
00199
00203 virtual QString hlModeName (unsigned int mode);
00204
00208 virtual QString hlModeSectionName (unsigned int mode);
00209
00210 signals:
00211 void hlChanged ();
00212
00213 private:
00214 void setupHighlighting();
00215 int findMode( const QString& );
00216
00217 private:
00218 QPtrList<HLMode> m_modes;
00219 unsigned int m_currentMode;
00220
00221
00222 public:
00223 virtual void clearUndo ();
00224 virtual void clearRedo ();
00225 virtual unsigned int undoCount () const;
00226 virtual unsigned int redoCount () const;
00227 virtual unsigned int undoSteps () const;
00228 virtual void setUndoSteps ( unsigned int steps );
00229
00230 public slots:
00231 virtual void undo ();
00232 virtual void redo ();
00233
00234 signals:
00235 void undoChanged ();
00236
00237
00238 public:
00242 virtual QString text () const;
00243
00247 virtual QString text ( unsigned int startLine, unsigned int startCol, unsigned int endLine, unsigned int endCol ) const;
00248
00252 virtual QString textLine ( unsigned int line ) const;
00253
00257 virtual unsigned int numLines () const;
00258
00262 virtual unsigned int length () const;
00263
00267 virtual int lineLength ( unsigned int line ) const;
00268
00273 virtual bool setText ( const QString &text );
00274
00279 virtual bool clear ();
00280
00285 virtual bool insertText ( unsigned int line, unsigned int col, const QString &text );
00286
00291 virtual bool removeText ( unsigned int startLine, unsigned int startCol, unsigned int endLine, unsigned int endCol );
00292
00297 virtual bool insertLine ( unsigned int line, const QString &text );
00298
00303 virtual bool removeLine ( unsigned int line );
00304
00305 signals:
00306 void textChanged ();
00307 void newStatus ();
00308 void charactersInteractivelyInserted(int ,int ,const QString&);
00309
00310
00311 public:
00315 virtual KTextEditor::Cursor *createCursor ( );
00316
00317
00318
00319
00320 virtual QPtrList<KTextEditor::Cursor> cursors () const;
00321
00322
00323 public:
00327 virtual bool setSelection ( unsigned int startLine, unsigned int startCol, unsigned int endLine, unsigned int endCol );
00328
00332 virtual bool clearSelection ();
00333
00337 virtual bool hasSelection () const;
00338
00342 virtual QString selection () const;
00343
00347 virtual bool removeSelectedText ();
00348
00352 virtual bool selectAll();
00353
00354 signals:
00355 void selectionChanged ();
00356
00357 protected:
00361 virtual bool openFile();
00362
00366 virtual bool saveFile();
00367
00368 public slots:
00369 void fileReload();
00370
00371 protected slots:
00372 void fileOpen();
00373 void fileSaveAs();
00374
00375 private:
00376 QEditorView* m_currentView;
00377 QPtrList<KTextEditor::View> m_views;
00378 QPtrList<KTextEditor::Cursor> m_cursors;
00379 QPtrList<KTextEditor::Mark> m_marks;
00380 QEditorBrowserExtension* m_extension;
00381 };
00382
00383 #endif // QEDITORPART_H