You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
250 lines
6.8 KiB
250 lines
6.8 KiB
/**********************************************************************
|
|
** 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
|