KDevelop API Documentation

parts/classview/classtreebase.h

Go to the documentation of this file.
00001 /*************************************************************************** 00002 * Copyright (C) 1999 by Jonas Nordin * 00003 * jonas.nordin@syncom.se * 00004 * Copyright (C) 2000-2001 by Bernd Gehrmann * 00005 * bernd@kdevelop.org * 00006 * * 00007 * This program is free software; you can redistribute it and/or modify * 00008 * it under the terms of the GNU General Public License as published by * 00009 * the Free Software Foundation; either version 2 of the License, or * 00010 * (at your option) any later version. * 00011 * * 00012 ***************************************************************************/ 00013 00014 #ifndef _CLASSTREEBASE_H_ 00015 #define _CLASSTREEBASE_H_ 00016 00017 #include <klistview.h> 00018 #include "parseditem.h" 00019 #include "parsedscopecontainer.h" 00020 #include "parsedclass.h" 00021 #include "parsedmethod.h" 00022 #include "parsedattribute.h" 00023 #include "classviewpart.h" 00024 #include "parsedscript.h" 00025 00026 class ClassTreeItem; 00027 class KPopupMenu; 00028 00029 00030 class ClassTreeBase : public KListView 00031 { 00032 Q_OBJECT 00033 00034 public: 00035 ClassTreeBase( ClassViewPart *part, QWidget *parent=0, const char *name=0 ); 00036 ~ClassTreeBase(); 00037 00038 protected: 00039 typedef QValueList<QStringList> TreeState; 00040 typedef QValueList<QStringList>::Iterator TreeStateIterator; 00041 TreeState treeState() const; 00042 void setTreeState(TreeState state); 00043 00044 ClassTreeItem *contextItem; 00045 virtual KPopupMenu *createPopup() = 0; 00046 00047 private slots: 00048 void slotItemExecuted(QListViewItem*); 00049 void slotItemPressed(int button, QListViewItem *item); 00050 void slotContextMenuRequested(QListViewItem *item, const QPoint &p); 00051 void slotGotoDeclaration(); 00052 void slotGotoImplementation(); 00053 void slotAddMethod(); 00054 void slotAddAttribute(); 00055 void slotClassBaseClasses(); 00056 void slotClassDerivedClasses(); 00057 void slotClassTool(); 00058 00059 protected: 00060 ClassViewPart *m_part; 00061 friend class ClassTreeItem; 00062 friend class ClassTreeScopeItem; 00063 }; 00064 00065 00066 class ClassTreeItem : public QListViewItem, public NotifyClient 00067 { 00068 public: 00069 ClassTreeItem( ClassTreeBase *parent, ClassTreeItem *lastSibling, ParsedItem *parsedItem ) 00070 : QListViewItem(parent, lastSibling), NotifyClient(), m_item(parsedItem) 00071 { 00072 init(); 00073 } 00074 ClassTreeItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, ParsedItem *parsedItem ) 00075 : QListViewItem(parent, lastSibling), NotifyClient(), m_item(parsedItem) 00076 { 00077 init(); 00078 } 00079 ClassTreeItem( const ClassTreeItem& other ) 00080 : QListViewItem( other.parent(), other.nextSibling()), NotifyClient() 00081 { 00082 m_item = other.m_item; 00083 init(); 00084 } 00085 ClassTreeItem& operator=( const ClassTreeItem& other ) 00086 { 00087 m_item = other.m_item; 00088 init(); 00089 return *this; 00090 } 00091 ~ClassTreeItem() 00092 { 00093 if ( m_item ) 00094 m_item->unregisterNotifyClient( (NotifyClient*)this ); 00095 } 00096 00097 // m_item has been deleted. 00098 void notify() { m_item = 0; } 00099 00100 KPopupMenu *createPopup(); 00101 bool isOrganizer() { return !m_item; } 00102 void init() 00103 { 00104 if ( m_item ) 00105 m_item->registerNotifyClient( (NotifyClient*)this ); 00106 } 00107 00108 void getDeclaration(QString *toFile, int *toLine); 00109 void getImplementation(QString *toFile, int *toLine); 00110 00111 virtual QString scopedText() const; 00112 virtual QString text( int ) const; 00113 virtual QString tipText() const; 00114 00115 protected: 00116 ClassTreeBase *classTree() 00117 { return static_cast<ClassTreeBase*>(listView()); } 00118 ParsedItem *m_item; 00119 }; 00120 00121 00122 class ClassTreeOrganizerItem : public ClassTreeItem 00123 { 00124 public: 00125 ClassTreeOrganizerItem( ClassTreeBase *parent, ClassTreeItem *lastSibling, 00126 const QString &text ) 00127 : ClassTreeItem(parent, lastSibling, 0 ) 00128 , m_text( text ) 00129 { init(); } 00130 ClassTreeOrganizerItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, 00131 const QString &text ) 00132 : ClassTreeItem(parent, lastSibling, 0 ) 00133 , m_text( text ) 00134 { init(); } 00135 ~ClassTreeOrganizerItem() 00136 {} 00137 00138 virtual QString text( int ) const { return m_text; } 00139 00140 private: 00141 QString m_text; 00142 00143 void init(); 00144 }; 00145 00146 00147 class ClassTreeScopeItem : public ClassTreeItem 00148 { 00149 public: 00150 ClassTreeScopeItem( ClassTreeBase *parent, ClassTreeItem *lastSibling, 00151 ParsedScopeContainer *parsedScope ) 00152 : ClassTreeItem(parent, lastSibling, parsedScope) 00153 { 00154 init(); 00155 } 00156 ClassTreeScopeItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, 00157 ParsedScopeContainer *parsedScope ) 00158 : ClassTreeItem(parent, lastSibling, parsedScope) 00159 { 00160 init(); 00161 } 00162 ~ClassTreeScopeItem() 00163 { 00164 } 00165 00166 virtual QString text( int ) const; 00167 virtual void setOpen(bool o); 00168 00169 private: 00170 void init(); 00171 }; 00172 00173 00174 class ClassTreeClassItem : public ClassTreeItem 00175 { 00176 public: 00177 ClassTreeClassItem( ClassTreeBase *parent, ClassTreeItem *lastSibling, 00178 ParsedClass *parsedClass, bool isStruct=false ) 00179 : ClassTreeItem(parent, lastSibling, parsedClass), m_isStruct( isStruct ) 00180 { 00181 init(); 00182 } 00183 ClassTreeClassItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, 00184 ParsedClass *parsedClass, bool isStruct=false ) 00185 : ClassTreeItem(parent, lastSibling, parsedClass), m_isStruct( isStruct ) 00186 { 00187 init(); 00188 } 00189 ~ClassTreeClassItem() 00190 { 00191 } 00192 00193 virtual void setOpen(bool o); 00194 00195 private: 00196 void init(); 00197 00198 private: 00199 bool m_isStruct; 00200 }; 00201 00202 00203 class ClassTreeMethodItem : public ClassTreeItem 00204 { 00205 public: 00206 ClassTreeMethodItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, 00207 ParsedMethod *parsedMethod ); 00208 ~ClassTreeMethodItem() 00209 { 00210 } 00211 00212 virtual QString text( int ) const; 00213 }; 00214 00215 00216 class ClassTreeAttrItem : public ClassTreeItem 00217 { 00218 public: 00219 ClassTreeAttrItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, 00220 ParsedAttribute *parsedAttr ); 00221 ~ClassTreeAttrItem() 00222 { 00223 } 00224 00225 virtual QString text( int ) const; 00226 }; 00227 00228 class ClassTreeScriptItem : public ClassTreeItem 00229 { 00230 public: 00231 ClassTreeScriptItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, 00232 ParsedScript *parsedScript ); 00233 ~ClassTreeScriptItem() 00234 { 00235 } 00236 00237 virtual QString text( int ) const; 00238 virtual void setOpen(bool o); 00239 }; 00240 00241 00242 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:50 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003