KDevelop API Documentation

languages/java/debugger/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.0.4.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Oct 19 08:01:43 2004 by doxygen 1.3.7 written by Dimitri van Heesch, © 1997-2003