KDevelop API Documentation

kdevdocumentationplugin.h

Go to the documentation of this file.
00001 /* This file is part of the KDE project
00002    Copyright (C) 2004 by Alexander Dymo <cloudtemple@mksat.net>
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 as published by the Free Software Foundation; either
00007    version 2 of the License, or (at your option) any later version.
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 #ifndef KDEV_DOC_PLUGIN_H
00020 #define KDEV_DOC_PLUGIN_H
00021 
00022 #include <qmap.h>
00023 #include <qvaluelist.h>
00024 #include <qpair.h>
00025 
00026 #include <klistbox.h>
00027 #include <klistview.h>
00028 #include <kurl.h>
00029 #include <kfile.h>
00030 
00031 #define CACHE_VERSION "3"
00032 
00033 class DocumentationItem: public KListViewItem
00034 {
00035 public:
00036     enum Type { Collection, Catalog, Book, Document };
00037 
00038     DocumentationItem(Type type, KListView *parent, const QString &name);
00039     DocumentationItem(Type type, KListView *parent, KListViewItem *after, const QString &name);
00040     DocumentationItem(Type type, KListViewItem *parent, const QString &name);
00041     DocumentationItem(Type type, KListViewItem *parent, KListViewItem *after, const QString &name);
00042 
00043     virtual void setURL(const KURL &url) { m_url = url; }
00044     virtual KURL url() const { return m_url; }
00045     
00046     Type type() const { return m_type; }
00047 
00048 private:
00049     void init();
00050         
00051     KURL m_url;
00052     Type m_type;
00053 };
00054 
00055 class DocumentationPlugin;
00056 
00057 class DocumentationCatalogItem: public DocumentationItem
00058 {
00059 public:
00060     DocumentationCatalogItem(DocumentationPlugin* plugin, KListView *parent, const QString &name);
00061     DocumentationCatalogItem(DocumentationPlugin* plugin, DocumentationItem *parent, const QString &name);
00062     virtual ~DocumentationCatalogItem();
00063     
00064     DocumentationPlugin* plugin() const { return m_plugin; }
00065     
00066     virtual void setOpen(bool o);
00067     void load();
00068     
00069     virtual bool isProjectDocumentationItem() const { return m_isProjectDocumentationItem; }
00070     virtual void setProjectDocumentationItem(bool b) { m_isProjectDocumentationItem = b; }
00071     
00072 protected:
00073     virtual void activate();
00074     
00075 private:
00076     DocumentationPlugin* m_plugin;
00077     bool isLoaded;
00078     bool isActivated;
00079     bool m_isProjectDocumentationItem;
00080 };
00081 
00082 class IndexBox;
00083 
00084 class IndexItemProto
00085 {
00086 public:
00087     IndexItemProto(DocumentationPlugin *plugin, DocumentationCatalogItem *catalog, IndexBox *listbox,
00088         const QString &text, const QString &description);
00089     ~IndexItemProto();
00090 
00091     void addURL(const KURL &url) { m_url = url; }
00092     KURL url() const { return m_url; }
00093     QString text() const { return m_text; }
00094     QString description() const { return m_description; }
00095     
00096 private:
00097     KURL m_url;
00098     IndexBox *m_listbox;
00099     QString m_text;
00100     QString m_description;
00101 };
00102 
00103 class IndexItem: public QListBoxText {
00104 public:
00105     typedef QPair<QString, KURL> URL;
00106     typedef QValueList<URL> List;
00107     
00108     IndexItem(IndexBox *listbox, const QString &text);
00109 
00110     List urls() const;
00111 
00112 private:
00113     IndexBox *m_listbox;
00114 };
00115 
00116 class IndexBox: public KListBox{
00117 public:
00118     IndexBox(QWidget *parent = 0, const char *name = 0);
00119     
00120     virtual void addIndexItem(IndexItemProto *item);
00121     virtual void removeIndexItem(IndexItemProto *item);
00122     virtual void fill();
00123     virtual void refill();
00124     virtual void setDirty(bool dirty);
00125 //    virtual void refill(QValueList<IndexItemProto*> &items);
00126     
00127 private:
00128     QMap<QString, QValueList<IndexItemProto*> > items;
00129     friend class IndexItem;
00130     
00131     bool m_dirty;
00132 };
00133 
00134 class QPainter;
00135 class QColorGroup;
00136 class QFontMetrics;
00137 
00138 class ConfigurationItem: public QCheckListItem
00139 {
00140 public:
00141     ConfigurationItem(QListView *parent, const QString &title, const QString &url,
00142         bool indexPossible, bool fullTextSearchPossible);
00143 
00144     virtual QString title() const { return m_title; }
00145     virtual void setTitle(const QString title) { setText(3, m_title = title); }
00146     virtual QString url() const { return m_url; }
00147     virtual void setURL(const QString url) { setText(4, m_url = url); }
00148 
00149     virtual bool isChanged() const { return m_title == m_origTitle; }
00150     virtual QString origTitle() const {return m_origTitle; }
00151 
00152     virtual void paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int align);
00153     virtual int width(const QFontMetrics &fm, const QListView *lv, int c) const;
00154 
00155     bool contents() const { return m_contents; }
00156     void setContents(bool contents) { m_contents = contents; }
00157     bool index() const { return m_index; }
00158     void setIndex(bool index) { m_index = index; }
00159     bool fullTextSearch() const { return m_fullTextSearch; }
00160     void setFullTextSearch(bool fullTextSearch) { m_fullTextSearch = fullTextSearch; }
00161     
00162     bool indexPossible() const { return m_indexPossible; }
00163     bool fullTextSearchPossible() const { return m_fullTextSearchPossible; }
00164 
00165 private:
00166     QString m_title;
00167     QString m_url;
00168     QString m_origTitle;
00169 
00170     bool m_contents;
00171     bool m_index;
00172     bool m_fullTextSearch;
00173     
00174     bool m_indexPossible;
00175     bool m_fullTextSearchPossible;
00176 };
00177 
00178 
00179 class ProjectDocumentationPlugin;
00180 
00190 class DocumentationPlugin: public QObject
00191 {
00192     Q_OBJECT
00193 public:
00195     enum Capability { Index=1 ,
00196                       FullTextSearch=2 ,
00197                       CustomDocumentationTitles=4 ,
00198                       ProjectDocumentation=8 ,
00199                       ProjectUserManual=16  };
00201     enum ProjectDocType { APIDocs, UserManual };
00202     
00209     DocumentationPlugin(KConfig *pluginConfig, QObject *parent =0, const char *name =0);
00210     virtual ~DocumentationPlugin();
00211     
00213     virtual QString pluginName() const = 0;
00214     
00216     virtual DocumentationCatalogItem *createCatalog(KListView *contents, const QString &title, const QString &url) = 0;
00217     
00221     virtual void init(KListView *contents);
00228     virtual void reinit(KListView *contents, IndexBox *index, QStringList restrictions);
00232     virtual void autoSetup();
00234     virtual void autoSetupPlugin() = 0;
00235 
00239     virtual bool catalogEnabled(const QString &name) const;
00241     virtual void setCatalogEnabled(const QString &name, bool e);
00242     
00246     virtual bool needRefreshIndex(DocumentationCatalogItem *item) = 0;
00250     virtual bool indexEnabled(DocumentationCatalogItem *item) const;
00252     virtual void setIndexEnabled(DocumentationCatalogItem *item, bool e);
00257     virtual void createIndex(IndexBox *index, DocumentationCatalogItem *item) = 0;
00258 
00262     virtual void createTOC(DocumentationCatalogItem *item) = 0;
00266     virtual void setCatalogURL(DocumentationCatalogItem *item) = 0;
00267     virtual QStringList fullTextSearchLocations() = 0;
00268 
00270     virtual void loadCatalogConfiguration(KListView *configurationView);
00274     virtual void saveCatalogConfiguration(KListView *configurationView);
00276     virtual void addCatalogConfiguration(KListView *configurationView, 
00277         const QString &title, const QString &url);
00279     virtual void editCatalogConfiguration(ConfigurationItem *configurationItem,
00280         const QString &title, const QString &url);
00282     virtual void deleteCatalogConfiguration(const ConfigurationItem *const configurationItem);
00283     
00285     virtual QPair<KFile::Mode, QString> catalogLocatorProps() = 0;
00287     virtual QString catalogTitle(const QString &url) = 0;
00288     
00290     virtual void reload();
00292     virtual void clear();
00293     
00295     bool hasCapability(Capability cap) const { return m_capabilities & cap; }
00296     
00299     void setDirtyIndex(bool dirty) { m_indexCreated = dirty; }
00300 
00304     virtual void cacheIndex(DocumentationCatalogItem *item);
00308     virtual bool loadCachedIndex(IndexBox *index, DocumentationCatalogItem *item);
00309     
00312     virtual ProjectDocumentationPlugin *projectDocumentationPlugin(ProjectDocType type) { return 0; }
00313     
00314 public slots:
00318     virtual void createIndex(IndexBox *index);
00319         
00320 protected:
00322     QValueList<DocumentationCatalogItem*> catalogs;
00324     QMap<QString, DocumentationCatalogItem*> namedCatalogs;
00326     QMap<DocumentationCatalogItem*, QValueList<IndexItemProto*> > indexes;
00327 
00329     void setCapabilities(int caps) { m_capabilities = caps; }
00331     virtual void clearCatalogIndex(DocumentationCatalogItem *item);
00333     void loadIndex(IndexBox *index, DocumentationCatalogItem *item);
00334     
00337     QStringList deletedConfigurationItems;
00338 
00340     KConfig *config;
00341         
00342 private:
00344     virtual void addCatalog(DocumentationCatalogItem *item);
00346     virtual void clearCatalog(DocumentationCatalogItem *item);
00347     
00348     int m_capabilities;
00349     bool m_indexCreated;
00350     
00351 
00352 friend class IndexItemProto;
00353 friend class DocumentationCatalogItem;
00354 };
00355 
00356 
00362 class ProjectDocumentationPlugin: public QObject {
00363     Q_OBJECT
00364 public:
00365     ProjectDocumentationPlugin(DocumentationPlugin *docPlugin, DocumentationPlugin::ProjectDocType type);
00366     virtual ~ProjectDocumentationPlugin();
00367 
00369     virtual void init(KListView *contents, IndexBox *index, const QString &url);
00371     virtual void deinit();
00372     
00373     QString pluginName() const;
00374     QString catalogURL() const;
00375 
00376 public slots:
00378     virtual void reinit();
00379         
00380 protected:
00381     DocumentationPlugin *m_docPlugin;
00382     DocumentationCatalogItem *m_catalog;
00383     
00384 private:
00385     DocumentationPlugin::ProjectDocType m_type;
00386 
00387     class KDirWatch *m_watch;
00388     class KListView *m_contents;
00389     class IndexBox *m_index;
00390     QString m_url;
00391 };
00392 
00393 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:36 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003