From d5dad489bf82631e8bf256a2d67947e2770581be Mon Sep 17 00:00:00 2001 From: Thomas Jentzsch Date: Mon, 6 Sep 2021 10:31:48 +0200 Subject: [PATCH] enhanced tooltips (per cell and/or whole widget) for DataGridWidget updated debugger doc --- docs/debugger.html | 8 ++++---- docs/graphics/debugger_iotab.png | Bin 5128 -> 5357 bytes src/debugger/gui/DataGridWidget.cxx | 19 +++++++++++++++---- src/debugger/gui/DataGridWidget.hxx | 2 ++ src/debugger/gui/RiotWidget.cxx | 2 ++ 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/docs/debugger.html b/docs/debugger.html index 1171d4864..875c996bc 100644 --- a/docs/debugger.html +++ b/docs/debugger.html @@ -1098,11 +1098,11 @@ in another part of the debugger).

As with the TIA tab, most of the values here will be self-explanatory to a 2600 -developer, and almost all can be modified. However, the SWCHx registers need +developer, and many can be modified. However, the SWCHx registers need further explanation:

-

SWCHx(W) can be modified; here, the (W) stands for write. Similarly, -SWACNT/SWBCNT can be directly modified. However, the results of reading back from -the SWCHx register are influenced by SWACNT/SWBCNT, and SWCHx(R) is a read-only display +

SWCHx(W/R) can be modified; here (W) stands for write, (R) for read. +Similarly, SWxCNT can be directly modified. However, the results of reading +back from the SWCHx register are influenced by SWxCNT, and SWCHx(R) is reflecting this result.

diff --git a/docs/graphics/debugger_iotab.png b/docs/graphics/debugger_iotab.png index a83fd33ad5a368953682cf7b1aaa1ecb900102b4..67b6fbdd4b180f45dd1333d02cdf37a752413d56 100644 GIT binary patch literal 5357 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 0 && row < _rows && column >= 0 && column < _cols) + _toolTipList[row * _cols + column] = text; +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - int DataGridWidget::getToolTipIndex(const Common::Point& pos) const { @@ -607,9 +615,12 @@ string DataGridWidget::getToolTip(const Common::Point& pos) const const Int32 val = _valueList[idx]; ostringstream buf; - buf << _toolTipText - << "$" << Common::Base::toString(val, Common::Base::Fmt::_16) - << " = #" << val; + if(_toolTipList[idx] != EmptyString) + buf << _toolTipList[idx]; + else + buf << _toolTipText; + buf << "$" << Common::Base::toString(val, Common::Base::Fmt::_16) + << " = #" << val; if(val < 0x100) { if(val >= 0x80) diff --git a/src/debugger/gui/DataGridWidget.hxx b/src/debugger/gui/DataGridWidget.hxx index d89b530ce..99f50bddc 100644 --- a/src/debugger/gui/DataGridWidget.hxx +++ b/src/debugger/gui/DataGridWidget.hxx @@ -84,6 +84,7 @@ class DataGridWidget : public EditableWidget void setCrossed(bool enable); + void setGridToolTip(int column, int row, const string& text); string getToolTip(const Common::Point& pos) const override; bool changedToolTip(const Common::Point& oldPos, const Common::Point& newPos) const override; @@ -129,6 +130,7 @@ class DataGridWidget : public EditableWidget IntArray _addrList; IntArray _valueList; StringList _valueStringList; + StringList _toolTipList; BoolArray _changedList; BoolArray _hiliteList; diff --git a/src/debugger/gui/RiotWidget.cxx b/src/debugger/gui/RiotWidget.cxx index cbb577e8e..092bde657 100644 --- a/src/debugger/gui/RiotWidget.cxx +++ b/src/debugger/gui/RiotWidget.cxx @@ -157,6 +157,8 @@ RiotWidget::RiotWidget(GuiObject* boss, const GUI::Font& lfont, } xpos += t->getWidth() + _fontWidth / 2; myTimRead = new DataGridWidget(boss, nfont, xpos, ypos, 1, 4, 4, 30, Common::Base::Fmt::_16); + myTimRead->setGridToolTip(0, 1, "Timer interrupt flag in bit 7.\n"); + myTimRead->setGridToolTip(0, 2, "Number of CPU cycles since last TIMxxT write.\n"); myTimRead->setTarget(this); myTimRead->setEditable(false);