diff options
Diffstat (limited to 'kdevdesigner/designer/hierarchyview.h')
-rw-r--r-- | kdevdesigner/designer/hierarchyview.h | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/kdevdesigner/designer/hierarchyview.h b/kdevdesigner/designer/hierarchyview.h new file mode 100644 index 00000000..ffd269b7 --- /dev/null +++ b/kdevdesigner/designer/hierarchyview.h @@ -0,0 +1,249 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qt Designer. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition +** licenses may use this file in accordance with the Qt Commercial License +** Agreement provided with the Software. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for +** information about Qt Commercial License Agreements. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#ifndef HIRARCHYVIEW_H +#define HIRARCHYVIEW_H + +#include <qvariant.h> +#include <qlistview.h> +#include <qtabwidget.h> +#include <qguardedptr.h> +#include <private/qcom_p.h> +#include "../interfaces/classbrowserinterface.h" + +class FormWindow; +class QCloseEvent; +class QPopupMenu; +class QKeyEvent; +class QMouseEvent; +class QWizard; +class SourceEditor; + +class HierarchyItem : public QListViewItem +{ +public: + enum Type { + Widget, + SlotParent, + SlotPublic, + SlotProtected, + SlotPrivate, + Slot, + DefinitionParent, + Definition, + Event, + EventFunction, + FunctParent, + FunctPublic, + FunctProtected, + FunctPrivate, + Function, + VarParent, + VarPublic, + VarProtected, + VarPrivate, + Variable + }; + + HierarchyItem( Type type, QListViewItem *parent, QListViewItem *after, + const QString &txt1, const QString &txt2, const QString &txt3 ); + HierarchyItem( Type type, QListView *parent, QListViewItem *after, + const QString &txt1, const QString &txt2, const QString &txt3 ); + + void paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align ); + void updateBackColor(); + + void setObject( QObject *o ); + QObject *object() const; + + void setText( int col, const QString &txt ) { if ( !txt.isEmpty() ) QListViewItem::setText( col, txt ); } + + int rtti() const { return (int)typ; } + +private: + void okRename( int col ); + void cancelRename( int col ); + +private: + QColor backgroundColor(); + QColor backColor; + QObject *obj; + Type typ; + +}; + +class HierarchyList : public QListView +{ + Q_OBJECT + +public: + HierarchyList( QWidget *parent, FormWindow *fw, bool doConnects = TRUE ); + + virtual void setup(); + virtual void setCurrent( QObject *o ); + void setOpen( QListViewItem *i, bool b ); + void changeNameOf( QObject *o, const QString &name ); + void changeDatabaseOf( QObject *o, const QString &info ); + void setFormWindow( FormWindow *fw ) { formWindow = fw; } + void drawContentsOffset( QPainter *p, int ox, int oy, + int cx, int cy, int cw, int ch ) { + setUpdatesEnabled( FALSE ); + triggerUpdate(); + setUpdatesEnabled( TRUE ); + QListView::drawContentsOffset( p, ox, oy, cx, cy, cw, ch ); + } + + void insertEntry( QListViewItem *i, const QPixmap &pix = QPixmap(), const QString &s = QString::null ); + +protected: + void keyPressEvent( QKeyEvent *e ); + void keyReleaseEvent( QKeyEvent *e ); + void viewportMousePressEvent( QMouseEvent *e ); + void viewportMouseReleaseEvent( QMouseEvent *e ); + +public slots: + void addTabPage(); + void removeTabPage(); + +private: + void insertObject( QObject *o, QListViewItem *parent ); + QObject *findObject( QListViewItem *i ); + QListViewItem *findItem( QObject *o ); + QObject *current() const; + QObject *handleObjectClick( QListViewItem *i ); + +private slots: + virtual void objectClicked( QListViewItem *i ); + virtual void objectDoubleClicked( QListViewItem *i ); + virtual void showRMBMenu( QListViewItem *, const QPoint & ); + +protected: + FormWindow *formWindow; + QPopupMenu *normalMenu, *tabWidgetMenu; + bool deselect; + + QPixmap DesignerFormPix; + QPixmap DesignerLayoutPix; + QPixmap DesignerFolderPix; + QPixmap DesignerEditSlotsPix; + +}; + +class FormDefinitionView : public HierarchyList +{ + Q_OBJECT + +public: + FormDefinitionView( QWidget *parent, FormWindow *fw ); + + void setup(); + void setupVariables(); + void refresh(); + void setCurrent( QWidget *w ); + +protected: + void contentsMouseDoubleClickEvent( QMouseEvent *e ); + +private: + void save( QListViewItem *p, QListViewItem *i ); + void execFunctionDialog( const QString &access, const QString &type, bool addFunc ); + void addVariable( const QString &varName, const QString &access ); + +private slots: + void objectClicked( QListViewItem *i ); + void showRMBMenu( QListViewItem *, const QPoint & ); + void renamed( QListViewItem *i ); + +private: + bool popupOpen; + HierarchyItem *itemSlots, *itemPrivate, *itemProtected, *itemPublic; + HierarchyItem *itemFunct, *itemFunctPriv, *itemFunctProt, *itemFunctPubl; + HierarchyItem *itemVar, *itemVarPriv, *itemVarProt, *itemVarPubl; +}; + + +class HierarchyView : public QTabWidget +{ + Q_OBJECT + +public: + HierarchyView( QWidget *parent ); + ~HierarchyView(); + + void setFormWindow( FormWindow *fw, QObject *o ); + FormWindow *formWindow() const; + SourceEditor *sourceEditor() const { return editor; } + void clear(); + + void showClasses( SourceEditor *se ); + void updateClassBrowsers(); + + void widgetInserted( QWidget *w ); + void widgetRemoved( QWidget *w ); + void widgetsInserted( const QWidgetList &l ); + void widgetsRemoved( const QWidgetList &l ); + void namePropertyChanged( QWidget *w, const QVariant &old ); + void databasePropertyChanged( QWidget *w, const QStringList& info ); + void tabsChanged( QTabWidget *w ); + void pagesChanged( QWizard *w ); + void rebuild(); + void closed( FormWindow *fw ); + void updateFormDefinitionView(); + + FormDefinitionView *formDefinitionView() const { return fView; } + HierarchyList *hierarchyList() const { return listview; } + +protected slots: + void jumpTo( const QString &func, const QString &clss,int type ); + void showClassesTimeout(); + +protected: + void closeEvent( QCloseEvent *e ); + +signals: + void hidden(); + +private: + struct ClassBrowser + { + ClassBrowser( QListView * = 0, ClassBrowserInterface * = 0 ); + ~ClassBrowser(); + QListView *lv; + QInterfacePtr<ClassBrowserInterface> iface; + + Q_DUMMY_COMPARISON_OPERATOR( ClassBrowser ) + }; + FormWindow *formwindow; + HierarchyList *listview; + FormDefinitionView *fView; + SourceEditor *editor; + QMap<QString, ClassBrowser> *classBrowsers; + QGuardedPtr<SourceEditor> lastSourceEditor; + +}; + + +#endif |