Switching between decimal and hex watch-display
jbb
jbb at kdevelop.org
Fri Feb 6 03:02:03 UTC 2004
Soooo... open source does work :-)
Added your patch Robert - many thanks
Also added global output radix to debugger options.
Still a little bit more to do on this. I've updated the bug report with the
problem. Robert, would you like to do this?
jbb
On Fri, 06 Feb 2004 12:18, rgruber at users.sourceforge.net wrote:
> Hello,
>
> I\'ve done a lot of debugging last week and I was very confused about the
> fact that KDevelop still has no possibility to switch between decimal and
> hex watch-display. So I\'ve decided to hack a bit and here it is!
>
> I\'ve added an entry to the popup menu which opens if you righ-click a
> variable that is already in the watch-list. Everytime you select that
> entry, the selected watch toggles between no formating and hex-value
> formating. The converting is done by adding \"/x\" infront of the
> variablename. I\'ve tested it pretty hard and for me it workes very well.
>
> If you\'re interested in adding this to KDevelop, you can download
> variablewidget.[cpp,h] from http://kmp3indexer.sf.net/misc/ or
> alternatively I\'ve appended the cvs diffs for the two files.
>
> Best regards,
> Robert Gruber
>
> BTW: This will close the bug #60670 from bugs.kde.org
>
> ---
> Robert Gruber -=- rgruber at users.sourceforge.net
>
>
>
> CVS Diffs:
> ----------
> Index: variablewidget.cpp
> ===================================================================
> RCS file: /home/kde/kdevelop/languages/cpp/debugger/variablewidget.cpp,v
> retrieving revision 1.34
> diff -r1.34 variablewidget.cpp
> 78a79
>
> 132a134
>
> 154a157
>
> > connect( this, SIGNAL(toggleRadix(QListViewItem*)),
> > SLOT(slotToggleRadix(QListViewItem*)) );
>
> 187a191
>
> > int idToggleRadix = popup.insertItem( i18n(\"Toggle
> > Hex/Decimal\") );
>
> 192a197,198
>
> > if (res == idToggleRadix)
> > emit toggleRadix(item);
>
> 378a385,412
>
> > /* rgruber:
> > * this it the slot which is connected to the toggleRadix() signal
> > * it removes the given watch variable an replaces it by another
> > * watch that includes a format modifier
> > */
> > void VariableTree::slotToggleRadix(QListViewItem * item)
> > {
> > if (item==NULL) //no item->nothing to do
> > return;
> >
> > VarItem *pOldItem = dynamic_cast<VarItem*>(item);
> > VarItem *pNewItem = NULL;
> >
> > QString strName = pOldItem->text(VarNameCol);
> > if (strName.left(3) == \"/x \") //are we already in hex-view ???
> > strName = strName.right(strName.length()-3); //stripe the
> > hex-formater else
> > strName = QString(\"/x \")+strName; //add the hex-formater
> >
> > pNewItem = new VarItem((TrimmableItem *) item->parent(), strName,
> > typeUnknown); emit expandItem(pNewItem);
> >
> > pNewItem->moveItem(pOldItem); //move the new item up right under the
> > old one
> >
> > delete item; //remove the old one so that is seam as if it was
> > replaced by the new item pOldItem=NULL;
> > }
>
> 453a488,491
>
> > bool bRenew=false; //this indicates if the current item needs to be
> > replaced by a new one. //the problem is, that the debugger always
> > replaces already //format-modified local item with non-mofified ones. So
> > with every //run we need to newly modify the outcome of the debugger
>
> 457c495,501
> < if (child->text(VarNameCol) == match) {
> ---
>
> > QString strMatch = child->text(VarNameCol);
> > bRenew=false;
> > if (strMatch.left(3) == \"/x \") { //is the current item format
> > modified? strMatch = strMatch.right(strMatch.length()-3);
> > bRenew=true;
> > }
> > if (strMatch == match) {
>
> 459,460c503,514
> < if (item->getDataType() == type)
> < return item;
> ---
>
> > if (item->getDataType() == type) {
> > if (bRenew && dynamic_cast<VarItem*>(item)) { //do we
> > need to replace? VarItem* pNewItem = new VarItem((TrimmableItem *)
> > item->parent(), child->text(VarNameCol), typeUnknown); emit
> > ((VariableTree*)pNewItem->listView())->expandItem(pNewItem);
> > pNewItem->moveItem(item);
> > delete item;
> > item=NULL;
> > item=pNewItem;
> > }
> > return item;
> > }
>
> 594a649,650
>
> > QString strData=data;
>
> 604a661
>
> 607c664
> < QListViewItem::setText(column, data);
> ---
>
> > QListViewItem::setText(column, strData);
>
> 919a977
>
> 920a979,980
>
>
>
> Index: variablewidget.h
> ===================================================================
> RCS file: /home/kde/kdevelop/languages/cpp/debugger/variablewidget.h,v
> retrieving revision 1.12
> diff -r1.12 variablewidget.h
> 72a73,74
>
> > //rgruber: we need this to be able to emit expandItem() from within
> > TrimmableItem friend class TrimmableItem;
>
> 106a109,110
>
> > //rgruber
> > void toggleRadix(QListViewItem *item);
>
> 108a113
>
> > void slotToggleRadix(QListViewItem * item);
>
> _______________________________________________
> Kdevelop-devel mailing list
> Kdevelop-devel at barney.cs.uni-potsdam.de
> http://barney.cs.uni-potsdam.de/mailman/listinfo/kdevelop-devel
More information about the KDevelop-devel
mailing list