• Skip to content
  • Skip to link menu
Trinity API Reference
  • Trinity API Reference
  • KDevelop Documentation Part Interfaces Library
 

KDevelop Documentation Part Interfaces Library

  • parts
  • documentation
  • interfaces
kdevdocumentationplugin.h
1 /* This file is part of the KDE project
2  Copyright (C) 2004 by Alexander Dymo <cloudtemple@mksat.net>
3 
4  This library is free software; you can redistribute it and/or
5  modify it under the terms of the GNU Library General Public
6  License as published by the Free Software Foundation; either
7  version 2 of the License, or (at your option) any later version.
8 
9  This library is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  Library General Public License for more details.
13 
14  You should have received a copy of the GNU Library General Public License
15  along with this library; see the file COPYING.LIB. If not, write to
16  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  Boston, MA 02110-1301, USA.
18 */
19 #ifndef KDEV_DOC_PLUGIN_H
20 #define KDEV_DOC_PLUGIN_H
21 
22 #include <tqmap.h>
23 #include <tqvaluelist.h>
24 #include <tqpair.h>
25 
26 #include <tdelistbox.h>
27 #include <tdelistview.h>
28 #include <kurl.h>
29 #include <tdefile.h>
30 
31 #define CACHE_VERSION "3"
32 
35 class DocumentationItem: public TDEListViewItem
36 {
37 public:
39  enum Type {
40  Collection ,
41  Catalog ,
42  Book ,
43  Document
44  };
45 
46  DocumentationItem(Type type, TDEListView *parent, const TQString &name);
47  DocumentationItem(Type type, TDEListView *parent, TDEListViewItem *after, const TQString &name);
48  DocumentationItem(Type type, TDEListViewItem *parent, const TQString &name);
49  DocumentationItem(Type type, TDEListViewItem *parent, TDEListViewItem *after, const TQString &name);
50 
51  virtual void setURL(const KURL &url) { m_url = url; }
52  virtual KURL url() const { return m_url; }
53 
54  Type type() const { return m_type; }
55 
56  void setType(Type t) {
57  if(t != m_type) {
58  m_type = t;
59  init();
60  }
61  }
62 private:
63  void init();
64 
65  KURL m_url;
66  Type m_type;
67 };
68 
69 class DocumentationPlugin;
70 
72 class DocumentationCatalogItem: public DocumentationItem
73 {
74 public:
75  DocumentationCatalogItem(DocumentationPlugin* plugin, TDEListView *parent, TDEListViewItem *after, const TQString &name);
76  DocumentationCatalogItem(DocumentationPlugin* plugin, DocumentationItem *parent, const TQString &name);
77  virtual ~DocumentationCatalogItem();
78 
79  DocumentationPlugin* plugin() const { return m_plugin; }
80 
81  virtual void setOpen(bool o);
82  void load();
83 
84  virtual bool isProjectDocumentationItem() const { return m_isProjectDocumentationItem; }
85  virtual void setProjectDocumentationItem(bool b) { m_isProjectDocumentationItem = b; }
86 
87  virtual TQString cacheVersion() const { return ""; }
88 
89 protected:
90  virtual void activate();
91 
92 private:
93  DocumentationPlugin* m_plugin;
94  bool isLoaded;
95  bool isActivated;
96  bool m_isProjectDocumentationItem;
97 };
98 
99 class IndexBox;
100 
103 class IndexItemProto
104 {
105 public:
106  IndexItemProto(DocumentationPlugin *plugin, DocumentationCatalogItem *catalog, IndexBox *listbox,
107  const TQString &text, const TQString &description);
108  ~IndexItemProto();
109 
110  void addURL(const KURL &url) { m_url = url; }
111  KURL url() const { return m_url; }
112  TQString text() const { return m_text; }
113  TQString description() const { return m_description; }
114 
115 private:
116  KURL m_url;
117  IndexBox *m_listbox;
118  TQString m_text;
119  TQString m_description;
120 };
121 
123 class IndexItem: public TQListBoxText {
124 public:
125  typedef TQPair<TQString, KURL> URL;
126  typedef TQValueList<URL> List;
127 
128  IndexItem(IndexBox *listbox, const TQString &text);
129 
130  List urls() const;
131 
132 private:
133  IndexBox *m_listbox;
134 };
135 
137 class IndexBox: public TDEListBox{
138 public:
139  IndexBox(TQWidget *parent = 0, const char *name = 0);
140 
141  virtual void addIndexItem(IndexItemProto *item);
142  virtual void removeIndexItem(IndexItemProto *item);
143  virtual void fill();
144  virtual void refill();
145  virtual void setDirty(bool dirty);
146 // virtual void refill(TQValueList<IndexItemProto*> &items);
147 
148 private:
149  TQMap<TQString, TQValueList<IndexItemProto*> > items;
150  friend class IndexItem;
151 
152  bool m_dirty;
153 };
154 
155 class TQPainter;
156 class TQColorGroup;
157 class TQFontMetrics;
158 class DocumentationPlugin;
159 
161 class ConfigurationItem: public TQCheckListItem
162 {
163 public:
164  ConfigurationItem(TQListView *parent, DocumentationPlugin * plugin, const TQString &title, const TQString &url,
165  bool indexPossible, bool fullTextSearchPossible);
166 
167  virtual TQString title() const { return m_title; }
168  virtual void setTitle(const TQString title) { setText(3, m_title = title); }
169  virtual TQString url() const { return m_url; }
170  virtual void setURL(const TQString url) { setText(4, m_url = url); }
171 
172  virtual bool isChanged() const { return m_title == m_origTitle; }
173  virtual TQString origTitle() const {return m_origTitle; }
174 
175  virtual void paintCell(TQPainter *p, const TQColorGroup &cg, int column, int width, int align);
176  virtual int width(const TQFontMetrics &fm, const TQListView *lv, int c) const;
177 
178  bool contents() const { return m_contents; }
179  void setContents(bool contents) { m_contents = contents; }
180  bool index() const { return m_index; }
181  void setIndex(bool index) { m_index = index; }
182  bool fullTextSearch() const { return m_fullTextSearch; }
183  void setFullTextSearch(bool fullTextSearch) { m_fullTextSearch = fullTextSearch; }
184 
185  bool indexPossible() const { return m_indexPossible; }
186  bool fullTextSearchPossible() const { return m_fullTextSearchPossible; }
187 
188  DocumentationPlugin * docPlugin() { return m_docPlugin; }
189 
190 private:
191  TQString m_title;
192  TQString m_url;
193  TQString m_origTitle;
194 
195  bool m_contents;
196  bool m_index;
197  bool m_fullTextSearch;
198 
199  bool m_indexPossible;
200  bool m_fullTextSearchPossible;
201 
202  DocumentationPlugin * m_docPlugin;
203 };
204 
205 
206 class ProjectDocumentationPlugin;
207 
217 class DocumentationPlugin: public TQObject
218 {
219  Q_OBJECT
220 
221 public:
223  enum Capability { Index=1 ,
224  FullTextSearch=2 ,
225  ProjectDocumentation=8 ,
226  ProjectUserManual=16 };
228  enum ProjectDocType { APIDocs, UserManual };
229 
236  DocumentationPlugin(TDEConfig *pluginConfig, TQObject *parent =0, const char *name =0);
237  virtual ~DocumentationPlugin();
238 
240  virtual TQString pluginName() const = 0;
241 
244  virtual DocumentationCatalogItem *createCatalog(TDEListView *contents, TDEListViewItem *after, const TQString &title, const TQString &url) = 0;
245 
249  virtual void init(TDEListView *contents);
256  virtual void reinit(TDEListView *contents, IndexBox *index, TQStringList restrictions);
260  virtual void autoSetup();
262  virtual void autoSetupPlugin() = 0;
263 
267  virtual bool catalogEnabled(const TQString &name) const;
269  virtual void setCatalogEnabled(const TQString &name, bool e);
270 
274  virtual bool needRefreshIndex(DocumentationCatalogItem *item) = 0;
278  virtual bool indexEnabled(DocumentationCatalogItem *item) const;
280  virtual void setIndexEnabled(DocumentationCatalogItem *item, bool e);
286  virtual void createIndex(IndexBox *index, DocumentationCatalogItem *item) = 0;
287 
291  virtual void createTOC(DocumentationCatalogItem *item) = 0;
295  virtual void setCatalogURL(DocumentationCatalogItem *item) = 0;
296  virtual TQStringList fullTextSearchLocations() = 0;
297 
299  virtual void loadCatalogConfiguration(TDEListView *configurationView);
303  virtual void saveCatalogConfiguration(TDEListView *configurationView);
305  virtual void addCatalogConfiguration(TDEListView *configurationView,
306  const TQString &title, const TQString &url);
308  virtual void editCatalogConfiguration(ConfigurationItem *configurationItem,
309  const TQString &title, const TQString &url);
311  virtual void deleteCatalogConfiguration(const ConfigurationItem *const configurationItem);
312 
314  virtual TQPair<KFile::Mode, TQString> catalogLocatorProps() = 0;
316  virtual TQString catalogTitle(const TQString &url) = 0;
317 
319  virtual void clear();
320 
322  bool hasCapability(Capability cap) const { return m_capabilities & cap; }
323 
326  void setDirtyIndex(bool dirty) { m_indexCreated = dirty; }
327 
331  virtual void cacheIndex(DocumentationCatalogItem *item);
335  virtual bool loadCachedIndex(IndexBox *index, DocumentationCatalogItem *item);
336 
339  virtual ProjectDocumentationPlugin *projectDocumentationPlugin(ProjectDocType /* type */) { return 0; }
340 
341 public slots:
345  virtual void createIndex(IndexBox *index);
346 
347 protected:
349  TQValueList<DocumentationCatalogItem*> catalogs;
351  TQMap<TQString, DocumentationCatalogItem*> namedCatalogs;
353  TQMap<DocumentationCatalogItem*, TQValueList<IndexItemProto*> > indexes;
354 
356  void setCapabilities(int caps) { m_capabilities = caps; }
358  virtual void clearCatalogIndex(DocumentationCatalogItem *item);
360  void loadIndex(IndexBox *index, DocumentationCatalogItem *item);
361 
363  TDEListViewItem* findCatalogPosition(const TQString &key, const TDEListView *contents) const;
364 
367  TQStringList deletedConfigurationItems;
368 
370  TDEConfig *config;
371 
372 private:
374  virtual void addCatalog(DocumentationCatalogItem *item);
376  virtual void clearCatalog(DocumentationCatalogItem *item);
377 
378  int m_capabilities;
379  bool m_indexCreated;
380 
381 
382 friend class IndexItemProto;
383 friend class DocumentationCatalogItem;
384 };
385 
386 
392 class ProjectDocumentationPlugin: public TQObject {
393  Q_OBJECT
394 
395 public:
396  ProjectDocumentationPlugin(DocumentationPlugin *docPlugin, DocumentationPlugin::ProjectDocType type);
397  virtual ~ProjectDocumentationPlugin();
398 
400  virtual void init(TDEListView *contents, IndexBox *index, const TQString &url);
402  virtual void deinit();
403 
404  TQString pluginName() const;
405  TQString catalogURL() const;
406 
407 public slots:
409  virtual void reinit();
410 
411 protected:
413  TDEListViewItem* findCatalogPosition(const TQString &key, const TDEListView *contents) const;
414 
415  DocumentationPlugin *m_docPlugin;
416  DocumentationCatalogItem *m_catalog;
417 
418 private:
419  DocumentationPlugin::ProjectDocType m_type;
420 
421  class KDirWatch *m_watch;
422  class TDEListView *m_contents;
423  class IndexBox *m_index;
424  TQString m_url;
425 };
426 
427 #endif
DocumentationItem::Book
Book - a document with nested documents.
Definition: kdevdocumentationplugin.h:42
DocumentationPlugin::setDirtyIndex
void setDirtyIndex(bool dirty)
Sets dirty flag for all indices.
Definition: kdevdocumentationplugin.h:326
DocumentationPlugin::namedCatalogs
TQMap< TQString, DocumentationCatalogItem * > namedCatalogs
A map of names of loaded documentation catalogs.
Definition: kdevdocumentationplugin.h:351
IndexItem
Documentation index item.
Definition: kdevdocumentationplugin.h:123
DocumentationPlugin::config
TDEConfig * config
Configuration object used by a plugin.
Definition: kdevdocumentationplugin.h:370
DocumentationItem::Collection
Collection - a collection of catalogs, folder with catalogs.
Definition: kdevdocumentationplugin.h:40
DocumentationCatalogItem
Documentation catalog list item.
Definition: kdevdocumentationplugin.h:72
DocumentationPlugin::Capability
Capability
Capability of documentation plugin.
Definition: kdevdocumentationplugin.h:223
DocumentationPlugin::setCapabilities
void setCapabilities(int caps)
Sets capabilities of documentation plugin.
Definition: kdevdocumentationplugin.h:356
ConfigurationItem
Documentation configuration item.
Definition: kdevdocumentationplugin.h:161
IndexItemProto
Prototype of index item.
Definition: kdevdocumentationplugin.h:103
DocumentationPlugin::projectDocumentationPlugin
virtual ProjectDocumentationPlugin * projectDocumentationPlugin(ProjectDocType)
Returns associated project documentation plugin.
Definition: kdevdocumentationplugin.h:339
DocumentationPlugin::catalogs
TQValueList< DocumentationCatalogItem * > catalogs
A list of loaded documentation catalogs.
Definition: kdevdocumentationplugin.h:349
DocumentationPlugin::hasCapability
bool hasCapability(Capability cap) const
Checks if documentation plugin has given capability.
Definition: kdevdocumentationplugin.h:322
DocumentationPlugin::deletedConfigurationItems
TQStringList deletedConfigurationItems
Stores items deleted from configuration.
Definition: kdevdocumentationplugin.h:367
DocumentationPlugin::indexes
TQMap< DocumentationCatalogItem *, TQValueList< IndexItemProto * > > indexes
A map of indices of loaded documentation catalogs.
Definition: kdevdocumentationplugin.h:353
DocumentationItem
Documentation list item.
Definition: kdevdocumentationplugin.h:35
IndexBox
Documentation index view.
Definition: kdevdocumentationplugin.h:137
DocumentationPlugin::ProjectDocType
ProjectDocType
Possible project documentation types.
Definition: kdevdocumentationplugin.h:228
DocumentationPlugin
Documentation Plugin Interface.
Definition: kdevdocumentationplugin.h:217
DocumentationItem::Type
Type
Type of documentation which is represented by this item.
Definition: kdevdocumentationplugin.h:39
ProjectDocumentationPlugin
Project documentation plugin.
Definition: kdevdocumentationplugin.h:392
DocumentationItem::Document
Document.
Definition: kdevdocumentationplugin.h:43
DocumentationItem::Catalog
Catalog - a term which defines a document or a group of documents.
Definition: kdevdocumentationplugin.h:41

KDevelop Documentation Part Interfaces Library

Skip menu "KDevelop Documentation Part Interfaces Library"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members

KDevelop Documentation Part Interfaces Library

Skip menu "KDevelop Documentation Part Interfaces Library"
  • buildtools
  •   lib
  •     base
  •     parsers
  •       autotools
  •       qmake
  •     widgets
  •   api
  • languages
  •   lib
  •     debugger
  •     designer_integration
  •     interfaces
  • lib
  •   catalog
  •   interfaces
  •     extensions
  •     external
  •     extras
  •   util
  •   widgets
  •     propeditor
  • parts
  •   documentation
  •     interfaces
  • src
  •   profileengine
  •     lib
Generated for KDevelop Documentation Part Interfaces Library by doxygen 1.8.13
This website is maintained by Timothy Pearson.