summaryrefslogtreecommitdiffstats
path: root/parts/classview/classtreebase.h
diff options
context:
space:
mode:
Diffstat (limited to 'parts/classview/classtreebase.h')
-rw-r--r--parts/classview/classtreebase.h242
1 files changed, 242 insertions, 0 deletions
diff --git a/parts/classview/classtreebase.h b/parts/classview/classtreebase.h
new file mode 100644
index 00000000..e019bcc2
--- /dev/null
+++ b/parts/classview/classtreebase.h
@@ -0,0 +1,242 @@
+/***************************************************************************
+ * Copyright (C) 1999 by Jonas Nordin *
+ * Copyright (C) 2000-2001 by Bernd Gehrmann *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef _CLASSTREEBASE_H_
+#define _CLASSTREEBASE_H_
+
+#include <klistview.h>
+#include "parseditem.h"
+#include "parsedscopecontainer.h"
+#include "parsedclass.h"
+#include "parsedmethod.h"
+#include "parsedattribute.h"
+#include "classviewpart.h"
+#include "parsedscript.h"
+
+class ClassTreeItem;
+class KPopupMenu;
+
+
+class ClassTreeBase : public KListView
+{
+ Q_OBJECT
+
+public:
+ ClassTreeBase( ClassViewPart *part, QWidget *parent=0, const char *name=0 );
+ ~ClassTreeBase();
+
+protected:
+ typedef QValueList<QStringList> TreeState;
+ typedef QValueList<QStringList>::Iterator TreeStateIterator;
+ TreeState treeState() const;
+ void setTreeState(TreeState state);
+
+ ClassTreeItem *contextItem;
+ virtual KPopupMenu *createPopup() = 0;
+
+private slots:
+ void slotItemExecuted(QListViewItem*);
+ void slotItemPressed(int button, QListViewItem *item);
+ void slotContextMenuRequested(QListViewItem *item, const QPoint &p);
+ void slotGotoDeclaration();
+ void slotGotoImplementation();
+ void slotAddMethod();
+ void slotAddAttribute();
+ void slotClassBaseClasses();
+ void slotClassDerivedClasses();
+ void slotClassTool();
+
+protected:
+ ClassViewPart *m_part;
+ friend class ClassTreeItem;
+ friend class ClassTreeScopeItem;
+};
+
+
+class ClassTreeItem : public QListViewItem, public NotifyClient
+{
+public:
+ ClassTreeItem( ClassTreeBase *parent, ClassTreeItem *lastSibling, ParsedItem *parsedItem )
+ : QListViewItem(parent, lastSibling), NotifyClient(), m_item(parsedItem)
+ {
+ init();
+ }
+ ClassTreeItem( ClassTreeItem *parent, ClassTreeItem *lastSibling, ParsedItem *parsedItem )
+ : QListViewItem(parent, lastSibling), NotifyClient(), m_item(parsedItem)
+ {
+ init();
+ }
+ ClassTreeItem( const ClassTreeItem& other )
+ : QListViewItem( other.parent(), other.nextSibling()), NotifyClient()
+ {
+ m_item = other.m_item;
+ init();
+ }
+ ClassTreeItem& operator=( const ClassTreeItem& other )
+ {
+ m_item = other.m_item;
+ init();
+ return *this;
+ }
+ ~ClassTreeItem()
+ {
+ if ( m_item )
+ m_item->unregisterNotifyClient( (NotifyClient*)this );
+ }
+
+ // m_item has been deleted.
+ void notify() { m_item = 0; }
+
+ KPopupMenu *createPopup();
+ bool isOrganizer() { return !m_item; }
+ void init()
+ {
+ if ( m_item )
+ m_item->registerNotifyClient( (NotifyClient*)this );
+ }
+
+ void getDeclaration(QString *toFile, int *toLine);
+ void getImplementation(QString *toFile, int *toLine);
+
+ virtual QString scopedText() const;
+ virtual QString text( int ) const;
+ virtual QString tipText() const;
+
+protected:
+ ClassTreeBase *classTree()
+ { return static_cast<ClassTreeBase*>(listView()); }
+ ParsedItem *m_item;
+};
+
+
+class ClassTreeOrganizerItem : public ClassTreeItem
+{
+public:
+ ClassTreeOrganizerItem( ClassTreeBase *parent, ClassTreeItem *lastSibling,
+ const QString &text )
+ : ClassTreeItem(parent, lastSibling, 0 )
+ , m_text( text )
+ { init(); }
+ ClassTreeOrganizerItem( ClassTreeItem *parent, ClassTreeItem *lastSibling,
+ const QString &text )
+ : ClassTreeItem(parent, lastSibling, 0 )
+ , m_text( text )
+ { init(); }
+ ~ClassTreeOrganizerItem()
+ {}
+
+ virtual QString text( int ) const { return m_text; }
+
+private:
+ QString m_text;
+
+ void init();
+};
+
+
+class ClassTreeScopeItem : public ClassTreeItem
+{
+public:
+ ClassTreeScopeItem( ClassTreeBase *parent, ClassTreeItem *lastSibling,
+ ParsedScopeContainer *parsedScope )
+ : ClassTreeItem(parent, lastSibling, parsedScope)
+ {
+ init();
+ }
+ ClassTreeScopeItem( ClassTreeItem *parent, ClassTreeItem *lastSibling,
+ ParsedScopeContainer *parsedScope )
+ : ClassTreeItem(parent, lastSibling, parsedScope)
+ {
+ init();
+ }
+ ~ClassTreeScopeItem()
+ {
+ }
+
+ virtual QString text( int ) const;
+ virtual void setOpen(bool o);
+
+private:
+ void init();
+};
+
+
+class ClassTreeClassItem : public ClassTreeItem
+{
+public:
+ ClassTreeClassItem( ClassTreeBase *parent, ClassTreeItem *lastSibling,
+ ParsedClass *parsedClass, bool isStruct=false )
+ : ClassTreeItem(parent, lastSibling, parsedClass), m_isStruct( isStruct )
+ {
+ init();
+ }
+ ClassTreeClassItem( ClassTreeItem *parent, ClassTreeItem *lastSibling,
+ ParsedClass *parsedClass, bool isStruct=false )
+ : ClassTreeItem(parent, lastSibling, parsedClass), m_isStruct( isStruct )
+ {
+ init();
+ }
+ ~ClassTreeClassItem()
+ {
+ }
+
+ virtual void setOpen(bool o);
+
+private:
+ void init();
+
+private:
+ bool m_isStruct;
+};
+
+
+class ClassTreeMethodItem : public ClassTreeItem
+{
+public:
+ ClassTreeMethodItem( ClassTreeItem *parent, ClassTreeItem *lastSibling,
+ ParsedMethod *parsedMethod );
+ ~ClassTreeMethodItem()
+ {
+ }
+
+ virtual QString text( int ) const;
+};
+
+
+class ClassTreeAttrItem : public ClassTreeItem
+{
+public:
+ ClassTreeAttrItem( ClassTreeItem *parent, ClassTreeItem *lastSibling,
+ ParsedAttribute *parsedAttr );
+ ~ClassTreeAttrItem()
+ {
+ }
+
+ virtual QString text( int ) const;
+};
+
+class ClassTreeScriptItem : public ClassTreeItem
+{
+public:
+ ClassTreeScriptItem( ClassTreeItem *parent, ClassTreeItem *lastSibling,
+ ParsedScript *parsedScript );
+ ~ClassTreeScriptItem()
+ {
+ }
+
+ virtual QString text( int ) const;
+ virtual void setOpen(bool o);
+};
+
+
+#endif