document.h
00001 /* This file is part of the KDE libraries 00002 Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org> 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License version 2 as published by the Free Software Foundation. 00007 00008 This library is distributed in the hope that it will be useful, 00009 but WITHOUT ANY WARRANTY; without even the implied warranty of 00010 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00011 Library General Public License for more details. 00012 00013 You should have received a copy of the GNU Library General Public License 00014 along with this library; see the file COPYING.LIB. If not, write to 00015 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00016 Boston, MA 02110-1301, USA. 00017 */ 00018 00019 #ifndef _KATE_DOCUMENT_INCLUDE_ 00020 #define _KATE_DOCUMENT_INCLUDE_ 00021 00022 #include <tdetexteditor/document.h> 00023 #include <tdetexteditor/view.h> 00024 #include <tdetexteditor/editinterface.h> 00025 #include <tdetexteditor/undointerface.h> 00026 #include <tdetexteditor/cursorinterface.h> 00027 #include <tdetexteditor/documentinfo.h> 00028 #include <tdetexteditor/selectioninterface.h> 00029 #include <tdetexteditor/selectioninterfaceext.h> 00030 #include <tdetexteditor/blockselectioninterface.h> 00031 #include <tdetexteditor/searchinterface.h> 00032 #include <tdetexteditor/highlightinginterface.h> 00033 #include <tdetexteditor/configinterface.h> 00034 #include <tdetexteditor/configinterfaceextension.h> 00035 #include <tdetexteditor/markinterface.h> 00036 #include <tdetexteditor/markinterfaceextension.h> 00037 #include <tdetexteditor/wordwrapinterface.h> 00038 #include <tdetexteditor/printinterface.h> 00039 #include <tdetexteditor/variableinterface.h> 00040 00041 #include <tdeaction.h> 00042 00043 class TDECompletion; 00044 00050 namespace Kate 00051 { 00052 00053 class View; 00054 00055 class KATEPARTINTERFACES_EXPORT Cursor : public KTextEditor::Cursor 00056 { 00057 public: 00058 Cursor () { ; }; 00059 virtual ~Cursor () { ; }; 00060 }; 00061 00062 class KATEPARTINTERFACES_EXPORT ConfigPage : public KTextEditor::ConfigPage 00063 { 00064 Q_OBJECT 00065 00066 public: 00067 ConfigPage ( TQWidget *parent=0, const char *name=0 ) : KTextEditor::ConfigPage (parent, name) { ; }; 00068 virtual ~ConfigPage () { ; }; 00069 00070 public slots: 00071 virtual void apply () { ; }; 00072 virtual void reload () { ; }; 00073 virtual void reset () {}; 00074 virtual void defaults () {}; 00075 00076 protected slots: 00077 void slotChanged(); 00078 }; 00079 00080 class KATEPARTINTERFACES_EXPORT ActionMenu : public TDEActionMenu 00081 { 00082 Q_OBJECT 00083 00084 public: 00085 ActionMenu ( const TQString& text, TQObject* parent = 0, const char* name = 0 ) 00086 : TDEActionMenu(text, parent, name) { ; }; 00087 virtual ~ActionMenu () { ; }; 00088 00089 public: 00090 virtual void updateMenu (class Document *) = 0; 00091 }; 00092 00096 class KATEPARTINTERFACES_EXPORT Command 00097 { 00098 public: 00099 Command () {}; 00100 virtual ~Command () {}; 00101 00102 public: 00107 virtual TQStringList cmds () = 0; 00108 00113 virtual bool exec (View *view, const TQString &cmd, TQString &msg) = 0; 00114 00119 virtual bool help (View *view, const TQString &cmd, TQString &msg) = 0; 00120 }; 00121 00129 class CommandExtension 00130 { 00131 public: 00132 CommandExtension() {;} 00133 virtual ~CommandExtension() {;} 00134 //### this is yet to be tried 00146 virtual void flagCompletions( TQStringList& /*list*/ ) {;} 00147 00157 virtual TDECompletion *completionObject( const TQString & cmdname, Kate::View * /*view*/ ) { Q_UNUSED(cmdname); return 0L; } 00158 00169 virtual bool wantsToProcessText( const TQString &cmdname ) { Q_UNUSED(cmdname); return false; } 00170 // ### yet to be tested. The obvious candidate is isearch. 00177 virtual void processText( Kate::View *view, const TQString &text ) { Q_UNUSED(view); Q_UNUSED(text); } 00178 }; 00179 00182 class KATEPARTINTERFACES_EXPORT Document : public KTextEditor::Document, public KTextEditor::EditInterface, 00183 public KTextEditor::UndoInterface, public KTextEditor::CursorInterface, 00184 public KTextEditor::SelectionInterface, public KTextEditor::SearchInterface, 00185 public KTextEditor::HighlightingInterface, public KTextEditor::BlockSelectionInterface, 00186 public KTextEditor::ConfigInterface, public KTextEditor::MarkInterface, 00187 public KTextEditor::PrintInterface, public KTextEditor::WordWrapInterface, 00188 public KTextEditor::MarkInterfaceExtension, 00189 public KTextEditor::SelectionInterfaceExt 00190 { 00191 Q_OBJECT 00192 00193 public: 00194 Document (); 00195 Document ( TQObject* parent, const char* name ); 00196 virtual ~Document (); 00197 00201 public: 00202 static bool registerCommand (Command *cmd); 00203 static bool unregisterCommand (Command *cmd); 00204 static Command *queryCommand (const TQString &cmd); 00205 00206 public: 00212 virtual void isModOnHD(bool =false) { ; }; 00213 00217 virtual TQString docName () { return 0L; }; 00218 00225 virtual void setDocName (TQString ) { ; }; 00226 00227 virtual ActionMenu *hlActionMenu (const TQString& , TQObject* =0, const char* = 0) = 0; 00228 virtual ActionMenu *exportActionMenu (const TQString& , TQObject* =0, const char* = 0) = 0; 00229 00230 public slots: 00231 // clear buffer/filename - update the views 00232 virtual void flush () { ; }; 00233 00237 virtual void reloadFile() = 0; 00238 00242 virtual void spellcheck() {}; 00243 00244 virtual void exportAs(const TQString &) = 0; 00245 00246 virtual void applyWordWrap () = 0; 00247 00248 00249 public: 00250 virtual void setWordWrap (bool ) = 0; 00251 virtual bool wordWrap () = 0; 00252 00253 virtual void setWordWrapAt (unsigned int) = 0; 00254 virtual uint wordWrapAt () = 0; 00255 00256 00257 virtual void setEncoding (const TQString &e) = 0; 00258 virtual TQString encoding() const = 0; 00259 00261 // FIXME: Remove when BIC allowed. 00262 public: 00264 virtual ConfigPage *colorConfigPage (TQWidget *) = 0; 00266 virtual ConfigPage *fontConfigPage (TQWidget *) = 0; 00268 virtual ConfigPage *indentConfigPage (TQWidget *) = 0; 00270 virtual ConfigPage *selectConfigPage (TQWidget *) = 0; 00272 virtual ConfigPage *editConfigPage (TQWidget *) = 0; 00274 virtual ConfigPage *keysConfigPage (TQWidget *) = 0; 00276 virtual ConfigPage *kSpellConfigPage (TQWidget *) { return 0L; } 00278 virtual ConfigPage *hlConfigPage (TQWidget *) = 0; 00279 00280 public: 00281 virtual uint configFlags () = 0; 00282 virtual void setConfigFlags (uint flags) = 0; 00283 00284 // Flags for katedocument config ! 00285 enum ConfigFlags 00286 { 00287 cfAutoIndent= 0x1, 00288 cfBackspaceIndents= 0x2, 00289 cfWordWrap= 0x4, 00290 cfReplaceTabs= 0x8, 00291 cfRemoveSpaces = 0x10, 00292 cfWrapCursor= 0x20, 00293 cfAutoBrackets= 0x40, 00294 cfPersistent= 0x80, 00295 cfKeepSelection= 0x100, 00296 cfDelOnInput= 0x400, 00297 cfXorSelect= 0x800, 00298 cfOvr= 0x1000, 00299 cfMark= 0x2000, 00300 cfKeepIndentProfile= 0x8000, 00301 cfKeepExtraSpaces= 0x10000, 00302 cfTabIndents= 0x80000, 00303 cfShowTabs= 0x200000, 00304 cfSpaceIndent= 0x400000, 00305 cfSmartHome = 0x800000 00306 }; 00307 00308 signals: 00319 void modifiedOnDisc (Kate::Document *doc, bool isModified, unsigned char reason); 00320 00321 /* 00322 * there static methodes are usefull to turn on/off the dialogs 00323 * kate part shows up on open file errors + file changed warnings 00324 * open file errors default on, file changed warnings default off, better 00325 * for other apps beside kate app using the part 00326 */ 00327 public: 00328 // default true 00329 static void setOpenErrorDialogsActivated (bool on); 00330 00331 // default false 00332 static void setFileChangedDialogsActivated (bool on); 00333 00334 static const TQString &defaultEncoding (); 00335 00336 protected: 00337 static bool s_openErrorDialogsActivated; 00338 static bool s_fileChangedDialogsActivated; 00339 00340 static TQString s_defaultEncoding; 00341 }; 00342 00347 class KATEPARTINTERFACES_EXPORT DocumentExt 00348 : public KTextEditor::DocumentInfoInterface, 00349 public KTextEditor::VariableInterface 00350 { 00351 public: 00352 DocumentExt (); 00353 virtual ~DocumentExt (); 00354 00355 public: 00359 enum ModifiedOnDiskReason { 00360 Unmodified = 0, 00361 Modified = 1, 00362 Created = 2, 00363 Deleted = 3 00364 }; 00365 00366 public: 00372 virtual void setModifiedOnDisk( int reason ) = 0; 00373 00377 public: 00383 virtual void slotModifiedOnDisk( View *v=0 ) = 0; 00384 }; 00385 00391 KATEPARTINTERFACES_EXPORT Document *document (KTextEditor::Document *doc); 00392 00398 KATEPARTINTERFACES_EXPORT DocumentExt *documentExt (KTextEditor::Document *doc); 00399 00403 KATEPARTINTERFACES_EXPORT Document *createDocument ( TQObject *parent = 0, const char *name = 0 ); 00404 00405 } 00406 00407 #endif