History log of /haiku/src/apps/debugger/user_interface/gui/inspector_window/InspectorWindow.h
Revision Date Author Comments
# 03796a0c 16-May-2015 Rene Gollent <rene@gollent.com>

Debugger: Add Inspector UI controls for edit mode.

InspectorWindow:
- Add buttons to control edit mode, and helper functions to maintain
their state.
- Implement listener hook for memory change events, to track when
requested memory writes are completed, and update the view accordingly.

Together with the previous batch of commits, this implements the first part
of #9708.


# 76ada671 22-May-2015 Rene Gollent <rene@gollent.com>

Debugger: Extend MemoryView listener interface.

MemoryView::Listener:
- Add extra hooks for notifying listener of internal mode changes.
Implement accordingly in InspectorWindow.


# 5474c672 03-May-2015 Rene Gollent <rene@gollent.com>

Debugger: Add page protection indicator to inspector.

InspectorWindow:
- We now display a label indicating if the currently inspected block
is writable or not, so the user knows whether it's possible to modify
the contents.


# 81c848a1 14-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Rework expression parsing API.

ExpressionInfo:
- No longer stores an explicit result type (this is inferred from
evaluation of the expression itself now).
- Introduce class ExpressionResult for returning the result of an
expression computation. This can currently take the form of either
a primitive value, or a value node object.
- Adjust UserInterfaceListener and ExpressionInfo::Listener to take
the above changes into account, and correspondingly adjust all
callers/listeners.

CLanguageExpressionEvaluator:
- Introduce child class Operand. This subsumes the functionality that
was previously in the separate Number class, and can represent a
primitive value, a value node or a type. Also has functionality to
implicity handle type promotion/inferring when performing calculations
between operands.
- Adjust expression parser to operate in terms of Operands rather than
Numbers. This allows a number of improvements, most notably that an
expression can now return a value node as a result rather than only
a primitive number. This capability isn't yet fully used, but paves
the way for future uses such as an expression that evaluates to a data
member, a global variable, or an arbitrary pointer of a particular type.
- Various cleanups/simplifications that were possible as a result of the above
changes.

ExpressionEvaluationWindow/ExpressionPromptWindow:
- Remove type menu field, since the expression API no longer uses it.

Adding/removing expressions in the VariablesView is temporarily disabled,
pending some further rework there to properly handle the new result object.


# 3ea675fc 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix #11430.

InspectorWindow:
- Inherit from Team::Listener and implement hook for thread state
change events.
- On thread state change, if the new state is stopped, and we have
an active block, release it, and ask to re-inspect.
- Factor out helper function for updating the active block.
- Always ensure the MemoryView is updated when we change blocks.

MemoryView:
- Clean up acquisition of target memory block.

This ensures that the block data is kept up to date when stepping
through code with an inspector window open.


# d1c9ffed 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanup.

Team:
- Remove expression evaluation event / listener hook. This doesn't
really belong to the Team anyways.

UserInterfaceListener:
- ExpressionEvaluationRequested() now takes an ExpressionInfo object
rather than the individual subcomponents.

ExpressionEvaluationJob:
- Notification of expression evaluation completion is now handled
via the info object's listener interface rather than the Team.

Others:
- Adjust all users of expressions to set themselves up as
ExpressionInfo::Listener subclasses, and consequently add themselves
to the respective info object when requesting evaluation. This
significantly simplifies various things, and also ensures that no
one accidentally gets notified of an expression they didn't actually
ask for, which could occur with the previous Team-based listener
interface. Make all other required adjustments for new interface
usage.

No functional change intended.


# fdb2d5d9 29-Oct-2014 Rene Gollent <rene@gollent.com>

Debugger: Adapt expression eval users to async interface.

Factor out message constant for expression evaluation completion,
as multiple places will be using that.

ExpressionEvaluationWindow:
- Check for expression match immediately in listener hook, and
don't bother dispatching to the message loop in such a case.
Simplifies some of the other code.

InspectorWindow / WatchPromptWindow:
- Rather than attempting to evaluate an expression directly,
we now defer to the async interface. Clean up and adjust accordingly.

TeamWindow:
- Adjust window creation calls due to parameter changes.

This leaves only the CLI dump memory command to be adapted.


# b906e10a 25-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Fix crash in InspectorWindow.

- In the case where retrieval of a memory block failed, InspectorWindow
didn't handle the notification. Consequently, it never removed itself as
a listener from the failed block, nor did it release its reference for
it. Consequently, if one attempted to retrieve data from the same block
again, walking the listener list would crash due to the already-deleted
entry in the list.

- The success case had the same problem with regards to not removing its
listener, but was masked by virtue of the inspector currently being the
only user of the memory block manager, so in the latter case the blocks
would be properly released/destroyed and the aforementioned walk would
never occur.

- Adjust locking a bit to ensure that manipulating the listener list
always happens with the team lock held.

- Style fixes.


# 1b104893 05-May-2013 Rene Gollent <anevilyak@gmail.com>

Add listener interface to MemoryView.

- When the target address of the memory view changes, an attached
listener is now notified. This lets the inspector window's text input
keep in sync with the current address when keyboard navigating the
memory view.


# f4b1ddb5 23-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Coding style: normalize naming, some whitespace fixes

* TeamUISettings[Factory] -> TeamUiSettings[Factory]
* GUITeamUISettings -> GuiTeamUiSettings
* GUISettingsUtils -> GuiSettingsUtils


# 11102e38 19-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Reworked GUI settings storage.

- Simplified things so each window simply records all its settings into
a BMessage, which is what ultimately goes into the actual UI settings.

- Added settings storage/retrieval to the various sub views of the
team window. This means that the column widths/positioning on all
views hosting a column list view are now also preserved and restored.


# 787740e0 03-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Save and restore the inspector window's frame + mode settings.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43155 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80480954 18-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Add support for byte swapping to the memory inspector.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42238 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21e484ae 16-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Add previous/next block navigation buttons.
* Fix a calculation error with respect to the last line of the block.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42216 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2acfac81 15-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Refactored MemoryView to be more flexible ; it can now show a configurable
choice of hexadecimal and/or character displays of the memory data, with
different digit grouping sizes. Still needs some work but is basically
functional.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42204 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 348e6deb 13-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Move expression evaluation to the inspector window.
* Actually start rendering the memory data. Still has some drawing glitches
when scrolling though, will look into those tomorrow. Also doesn't yet
highlight the location which the target address actually points to within
the block.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42167 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3e3ce16f 09-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Introduce TeamMemoryBlock[Manager]. These provide an interface to raw memory
page data of the target team.
* Jobs: Add RetrieveMemoryBlockJob which performs a background read of the
target team's memory. Used by InspectRequested() to perform the actual work.
* TeamDebugger: Added InspectRequested() hooks to allow clients to ask for
a memory read to be performed.
* Introduce InspectorWindow and MemoryView to form the basis of a memory inspector.
As yet these are more or less stubs and not yet hooked in.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42080 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 03796a0cefd2568ee7c7eb3f0a0164f7f48cc9b1 16-May-2015 Rene Gollent <rene@gollent.com>

Debugger: Add Inspector UI controls for edit mode.

InspectorWindow:
- Add buttons to control edit mode, and helper functions to maintain
their state.
- Implement listener hook for memory change events, to track when
requested memory writes are completed, and update the view accordingly.

Together with the previous batch of commits, this implements the first part
of #9708.


# 76ada671ba3b389dcf1bdf22c140130572e14731 22-May-2015 Rene Gollent <rene@gollent.com>

Debugger: Extend MemoryView listener interface.

MemoryView::Listener:
- Add extra hooks for notifying listener of internal mode changes.
Implement accordingly in InspectorWindow.


# 5474c672709cc0fa65443dea8a35d95ad13c8a98 03-May-2015 Rene Gollent <rene@gollent.com>

Debugger: Add page protection indicator to inspector.

InspectorWindow:
- We now display a label indicating if the currently inspected block
is writable or not, so the user knows whether it's possible to modify
the contents.


# 81c848a14a380679a439cccb9e10b60d05bd6fbc 14-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Rework expression parsing API.

ExpressionInfo:
- No longer stores an explicit result type (this is inferred from
evaluation of the expression itself now).
- Introduce class ExpressionResult for returning the result of an
expression computation. This can currently take the form of either
a primitive value, or a value node object.
- Adjust UserInterfaceListener and ExpressionInfo::Listener to take
the above changes into account, and correspondingly adjust all
callers/listeners.

CLanguageExpressionEvaluator:
- Introduce child class Operand. This subsumes the functionality that
was previously in the separate Number class, and can represent a
primitive value, a value node or a type. Also has functionality to
implicity handle type promotion/inferring when performing calculations
between operands.
- Adjust expression parser to operate in terms of Operands rather than
Numbers. This allows a number of improvements, most notably that an
expression can now return a value node as a result rather than only
a primitive number. This capability isn't yet fully used, but paves
the way for future uses such as an expression that evaluates to a data
member, a global variable, or an arbitrary pointer of a particular type.
- Various cleanups/simplifications that were possible as a result of the above
changes.

ExpressionEvaluationWindow/ExpressionPromptWindow:
- Remove type menu field, since the expression API no longer uses it.

Adding/removing expressions in the VariablesView is temporarily disabled,
pending some further rework there to properly handle the new result object.


# 3ea675fc93a37f4697bc4970f93fa4a951880a82 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix #11430.

InspectorWindow:
- Inherit from Team::Listener and implement hook for thread state
change events.
- On thread state change, if the new state is stopped, and we have
an active block, release it, and ask to re-inspect.
- Factor out helper function for updating the active block.
- Always ensure the MemoryView is updated when we change blocks.

MemoryView:
- Clean up acquisition of target memory block.

This ensures that the block data is kept up to date when stepping
through code with an inspector window open.


# d1c9ffed344208f126f1b8fd446347556c03e976 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanup.

Team:
- Remove expression evaluation event / listener hook. This doesn't
really belong to the Team anyways.

UserInterfaceListener:
- ExpressionEvaluationRequested() now takes an ExpressionInfo object
rather than the individual subcomponents.

ExpressionEvaluationJob:
- Notification of expression evaluation completion is now handled
via the info object's listener interface rather than the Team.

Others:
- Adjust all users of expressions to set themselves up as
ExpressionInfo::Listener subclasses, and consequently add themselves
to the respective info object when requesting evaluation. This
significantly simplifies various things, and also ensures that no
one accidentally gets notified of an expression they didn't actually
ask for, which could occur with the previous Team-based listener
interface. Make all other required adjustments for new interface
usage.

No functional change intended.


# fdb2d5d961fed2e838859db047e284795cf5cb30 29-Oct-2014 Rene Gollent <rene@gollent.com>

Debugger: Adapt expression eval users to async interface.

Factor out message constant for expression evaluation completion,
as multiple places will be using that.

ExpressionEvaluationWindow:
- Check for expression match immediately in listener hook, and
don't bother dispatching to the message loop in such a case.
Simplifies some of the other code.

InspectorWindow / WatchPromptWindow:
- Rather than attempting to evaluate an expression directly,
we now defer to the async interface. Clean up and adjust accordingly.

TeamWindow:
- Adjust window creation calls due to parameter changes.

This leaves only the CLI dump memory command to be adapted.


# b906e10a5d3681c1a23008f85ff01ee30086d439 25-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Fix crash in InspectorWindow.

- In the case where retrieval of a memory block failed, InspectorWindow
didn't handle the notification. Consequently, it never removed itself as
a listener from the failed block, nor did it release its reference for
it. Consequently, if one attempted to retrieve data from the same block
again, walking the listener list would crash due to the already-deleted
entry in the list.

- The success case had the same problem with regards to not removing its
listener, but was masked by virtue of the inspector currently being the
only user of the memory block manager, so in the latter case the blocks
would be properly released/destroyed and the aforementioned walk would
never occur.

- Adjust locking a bit to ensure that manipulating the listener list
always happens with the team lock held.

- Style fixes.


# 1b104893478023f9d694271b701ca1e25c905322 05-May-2013 Rene Gollent <anevilyak@gmail.com>

Add listener interface to MemoryView.

- When the target address of the memory view changes, an attached
listener is now notified. This lets the inspector window's text input
keep in sync with the current address when keyboard navigating the
memory view.


# f4b1ddb580a6a390c7b11b66c799de95014c2c29 23-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Coding style: normalize naming, some whitespace fixes

* TeamUISettings[Factory] -> TeamUiSettings[Factory]
* GUITeamUISettings -> GuiTeamUiSettings
* GUISettingsUtils -> GuiSettingsUtils


# 11102e3848bcd78ce9a90478ad6992f966fae5c6 19-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Reworked GUI settings storage.

- Simplified things so each window simply records all its settings into
a BMessage, which is what ultimately goes into the actual UI settings.

- Added settings storage/retrieval to the various sub views of the
team window. This means that the column widths/positioning on all
views hosting a column list view are now also preserved and restored.


# 787740e0f9b9fc64b8ecf635e7b667699e5f80ea 03-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Save and restore the inspector window's frame + mode settings.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43155 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 80480954e22ab9345c14079a0974e943b63afc58 18-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Add support for byte swapping to the memory inspector.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42238 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 21e484aea9033ba164c993650b4c5dc25b43d7aa 16-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Add previous/next block navigation buttons.
* Fix a calculation error with respect to the last line of the block.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42216 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2acfac81cd0853fb6d6d505e9435f7caba54824e 15-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Refactored MemoryView to be more flexible ; it can now show a configurable
choice of hexadecimal and/or character displays of the memory data, with
different digit grouping sizes. Still needs some work but is basically
functional.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42204 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 348e6deb98ae68c9fbe55de2502fa60f1f9e6f4d 13-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Move expression evaluation to the inspector window.
* Actually start rendering the memory data. Still has some drawing glitches
when scrolling though, will look into those tomorrow. Also doesn't yet
highlight the location which the target address actually points to within
the block.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42167 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3e3ce16f5ea1cd92ef3d4fdb42a8822bde59d318 09-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Introduce TeamMemoryBlock[Manager]. These provide an interface to raw memory
page data of the target team.
* Jobs: Add RetrieveMemoryBlockJob which performs a background read of the
target team's memory. Used by InspectRequested() to perform the actual work.
* TeamDebugger: Added InspectRequested() hooks to allow clients to ask for
a memory read to be performed.
* Introduce InspectorWindow and MemoryView to form the basis of a memory inspector.
As yet these are more or less stubs and not yet hooked in.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42080 a95241bf-73f2-0310-859d-f6bbb57e9c96