KDevelop API Documentation

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.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:38 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003