KDevelop API Documentation

variablewidget.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           vartree.h  -  description
00003                              -------------------
00004     begin                : Sun Aug 8 1999
00005     copyright            : (C) 1999 by John Birch
00006     email                : jbb@kdevelop.org
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #ifndef _VARIABLEWIDGET_H_
00019 #define _VARIABLEWIDGET_H_
00020 
00021 #include <klistview.h>
00022 #include <qwidget.h>
00023 
00024 class KLineEdit;
00025 
00026 namespace JAVADebugger
00027 {
00028 
00029 enum { VarNameCol = 0, ValueCol = 1 };
00030 enum DataType { typeUnknown, typeValue, typePointer, typeReference,
00031                 typeStruct, typeArray, typeQString, typeWhitespace,
00032                 typeName };
00033 
00034 class FrameRoot;
00035 class WatchRoot;
00036 class VarItem;
00037 class VariableTree;
00038 class DbgController;
00039 
00040 class VariableWidget : public QWidget
00041 {
00042     Q_OBJECT
00043 
00044 public:
00045     VariableWidget( QWidget *parent=0, const char *name=0 );
00046     void clear();
00047 
00048     VariableTree *varTree() const
00049     { return varTree_; }
00050 
00051 private slots:
00052     void slotAddWatchVariable();
00053 
00054 private:
00055     VariableTree *varTree_;
00056     KLineEdit *watchVarEntry_;
00057     friend class VariableTree;
00058 };
00059 
00060 /***************************************************************************/
00061 /***************************************************************************/
00062 /***************************************************************************/
00063 
00064 class VariableTree : public KListView
00065 {
00066     Q_OBJECT
00067 
00068 public:
00069     VariableTree( VariableWidget *parent, const char *name=0 );
00070     virtual ~VariableTree();
00071 
00072     QListViewItem *lastChild() const;
00073 
00074     int activeFlag() const                { return activeFlag_; }
00075     void setActiveFlag()                  { activeFlag_++; }
00076 
00077     QListViewItem *findRoot(QListViewItem *item) const;
00078     FrameRoot *findFrame(int frameNo) const;
00079     WatchRoot *findWatch();
00080 
00081     // Remove items that are not active
00082     void trim();
00083     void trimExcessFrames();
00084     void setLocalViewState(bool localsOn, int frameNo);
00085 
00086 signals:
00087     void toggleWatchpoint(const QString &varName);
00088     void selectFrame(int frameNo);
00089     void expandItem(VarItem *item);
00090     void expandUserItem(VarItem *item, const QCString &request);
00091     void setLocalViewState(bool localsOn);
00092 
00093 public slots:
00094     void slotAddWatchVariable(const QString& watchVar);
00095 
00096 private slots:
00097     void slotContextMenu(KListView *, QListViewItem *item);
00098 
00099 private:
00100     int activeFlag_;
00101     DbgController *controller;
00102 
00103     friend class VarItem;
00104     friend class WatchRoot;
00105 };
00106 
00107 /***************************************************************************/
00108 /***************************************************************************/
00109 /***************************************************************************/
00110 
00111 class TrimmableItem : public QListViewItem
00112 {
00113 public:
00114     TrimmableItem(VariableTree *parent);
00115     TrimmableItem(TrimmableItem *parent);
00116 
00117     virtual ~TrimmableItem();
00118 
00119     virtual void trim();
00120     virtual QString getName() const         { return QString(text(VarNameCol)); }
00121     virtual TrimmableItem *findMatch(const QString& match, DataType type) const;
00122     QListViewItem *lastChild() const;
00123     int  rootActiveFlag() const;
00124     void setActive()                        { activeFlag_ = rootActiveFlag(); }
00125     bool isActive() const                   { return activeFlag_ == rootActiveFlag(); }
00126     QString getValue() const                { return QString(text(ValueCol)); }
00127     bool isTrimmable() const;
00128     void waitingForData ()                  { waitingForData_ = true; }
00129 
00130     virtual void updateValue(char */* buf */);
00131     virtual DataType getDataType() const;
00132 
00133     virtual void setCache(const QCString& value);
00134     virtual QCString getCache();
00135     virtual QString key( int column, bool ascending ) const;
00136 
00137 private:
00138     int activeFlag_;
00139     bool waitingForData_;
00140 };
00141 
00142 /***************************************************************************/
00143 /***************************************************************************/
00144 /***************************************************************************/
00145 
00146 class VarItem : public TrimmableItem
00147 {
00148 public:
00149     VarItem( TrimmableItem *parent, const QString &varName, DataType dataType );
00150 
00151     virtual ~VarItem();
00152 
00153     QString varPath() const;
00154     QString fullName() const;
00155     DataType getDataType() const;
00156 
00157     void updateValue(char *data);
00158 
00159     void setCache(const QCString& value);
00160     QCString getCache();
00161 
00162     void setOpen(bool open);
00163     void setText (int column, const QString& text);
00164 
00165 private:
00166     void checkForRequests();
00167     void paintCell( QPainter *p, const QColorGroup &cg,
00168                     int column, int width, int align );
00169 
00170 private:
00171     QCString  cache_;
00172     DataType  dataType_;
00173     bool      highlight_;
00174 };
00175 
00176 /***************************************************************************/
00177 /***************************************************************************/
00178 /***************************************************************************/
00179 
00180 class FrameRoot : public TrimmableItem
00181 {
00182 public:
00183     FrameRoot(VariableTree *parent, int frameNo);
00184     virtual ~FrameRoot();
00185 
00186     void setLocals(char *locals);
00187     void addLocal(QString name, QString type, QString value);
00188     void setParams(const QCString& params);
00189 
00190     void setOpen(bool open);
00191 
00192     int  getFrameNo() const                     { return frameNo_; }
00193     void setFrameName(const QString &frameName) { setText(VarNameCol, frameName); setText(ValueCol, ""); }
00194 
00195     bool needLocals() const                     { return needLocals_; }
00196 
00197 private:
00198     bool    needLocals_;
00199     int     frameNo_;
00200     QCString params_;
00201     QCString locals_;
00202 };
00203 
00204 /***************************************************************************/
00205 /***************************************************************************/
00206 /***************************************************************************/
00207 
00208 class WatchRoot : public TrimmableItem
00209 {
00210 public:
00211     WatchRoot(VariableTree *parent);
00212     virtual ~WatchRoot();
00213 
00214     void requestWatchVars();
00215 };
00216 
00217 /***************************************************************************/
00218 /***************************************************************************/
00219 /***************************************************************************/
00220 }
00221 
00222 #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 Wed Mar 23 00:03:46 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003