kate Library API Documentation

katedocmanager.h

00001 /* This file is part of the KDE project
00002    Copyright (C) 2001 Christoph Cullmann <cullmann@kde.org>
00003    Copyright (C) 2002 Joseph Wenninger <jowenn@kde.org>
00004 
00005    This library is free software; you can redistribute it and/or
00006    modify it under the terms of the GNU Library General Public
00007    License version 2 as published by the Free Software Foundation.
00008 
00009    This library is distributed in the hope that it will be useful,
00010    but WITHOUT ANY WARRANTY; without even the implied warranty of
00011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012    Library General Public License for more details.
00013 
00014    You should have received a copy of the GNU Library General Public License
00015    along with this library; see the file COPYING.LIB.  If not, write to
00016    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00017    Boston, MA 02111-1307, USA.
00018 */
00019 
00020 #ifndef __KATE_DOCMANAGER_H__
00021 #define __KATE_DOCMANAGER_H__
00022 
00023 #include "katemain.h"
00024 #include "../interfaces/documentmanager.h"
00025 
00026 #include <kate/document.h>
00027 
00028 #include <qguardedptr.h>
00029 #include <qptrlist.h>
00030 #include <qobject.h>
00031 #include <qptrdict.h>
00032 #include <qintdict.h>
00033 
00034 namespace KParts { class Factory; }
00035 
00036 class KConfig;
00037 class DCOPObject;
00038 
00039 class KateDocumentInfo
00040 {
00041   public:
00042     KateDocumentInfo ()
00043      : modifiedOnDisc (false),
00044        modifiedOnDiscReason (0)
00045     {
00046     }
00047 
00048     bool modifiedOnDisc;
00049     unsigned char modifiedOnDiscReason;
00050 };
00051 
00052 class KateDocManager : public QObject
00053 {
00054   Q_OBJECT
00055 
00056   public:
00057     KateDocManager (QObject *parent);
00058     ~KateDocManager ();
00059 
00060     static KateDocManager *self ();
00061 
00062     Kate::DocumentManager *documentManager () { return m_documentManager; };
00063 
00064     Kate::Document *createDoc ();
00065     void deleteDoc (Kate::Document *doc);
00066 
00067     Kate::Document *document (uint n);
00068 
00069     Kate::Document *activeDocument ();
00070     void setActiveDocument (Kate::Document *doc);
00071 
00072     Kate::Document *firstDocument ();
00073     Kate::Document *nextDocument ();
00074 
00075     // search document with right documentNumber()
00076     Kate::Document *documentWithID (uint id);
00077 
00078     const KateDocumentInfo *documentInfo (Kate::Document *doc);
00079 
00080     int findDocument (Kate::Document *doc);
00082     int findDocument (KURL url);
00083     // Anders: The above is not currently stable ?
00084     Kate::Document *findDocumentByUrl( KURL url );
00085 
00086     bool isOpen(KURL url);
00087 
00088     uint documents ();
00089 
00090     QPtrList<Kate::Document> &documentList () { return m_docList; };
00091 
00092     Kate::Document *openURL(const KURL&,const QString &encoding=QString::null,uint *id =0);
00093 
00094     bool closeDocument(class Kate::Document *,bool closeURL=true);
00095     bool closeDocument(uint);
00096     bool closeDocumentWithID(uint);
00097     bool closeAllDocuments(bool closeURL=true);
00098 
00099     QPtrList<Kate::Document> modifiedDocumentList();
00100     bool queryCloseDocuments(KateMainWindow *w);
00101 
00102     void saveDocumentList (class KConfig *config);
00103     void restoreDocumentList (class KConfig *config);
00104 
00105     DCOPObject *dcopObject () { return m_dcop; };
00106 
00107     inline bool getSaveMetaInfos() { return m_saveMetaInfos; };
00108     inline void setSaveMetaInfos(bool b) { m_saveMetaInfos = b; };
00109 
00110     inline int getDaysMetaInfos() { return m_daysMetaInfos; };
00111     inline void setDaysMetaInfos(int i) { m_daysMetaInfos = i; };
00112 
00113   public slots:
00118     void saveAll();
00119 
00120   signals:
00121     void documentCreated (Kate::Document *doc);
00122     void documentDeleted (uint documentNumber);
00123     void documentChanged ();
00124     void initialDocumentReplaced ();
00125 
00126   private slots:
00127     void slotModifiedOnDisc (Kate::Document *doc, bool b, unsigned char reason);
00128     void slotModChanged(Kate::Document *doc);
00129 
00130   private:
00131     bool loadMetaInfos(Kate::Document *doc, const KURL &url);
00132     void saveMetaInfos(Kate::Document *doc);
00133     bool computeUrlMD5(const KURL &url, QCString &result);
00134 
00135     Kate::DocumentManager *m_documentManager;
00136     QPtrList<Kate::Document> m_docList;
00137     QIntDict<Kate::Document> m_docDict;
00138     QPtrDict<KateDocumentInfo> m_docInfos;
00139     QGuardedPtr<Kate::Document> m_currentDoc;
00140     KConfig *m_metaInfos;
00141     bool m_saveMetaInfos;
00142     int m_daysMetaInfos;
00143 
00144     DCOPObject *m_dcop;
00145 
00146     KParts::Factory *m_factory;
00147 
00148 };
00149 
00150 #endif
00151 // kate: space-indent on; indent-width 2; replace-tabs on;
KDE Logo
This file is part of the documentation for kate Library Version 3.4.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Fri Nov 4 00:45:18 2005 by doxygen 1.4.0 written by Dimitri van Heesch, © 1997-2003