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