Repository navigation
Components
This is an overview of Periscope's components.
The types described here are generally abstract types, with methods that need to be overridden for a given visualizer. This project has a simple demo visualizer which shows what needs to be overridden; screenshots come from that visualizer.
This is the base type for the config object, which determines the current window's state, and which is passed to the debuggee side to get the needed data about the visualized expression.
The base type for the visualizer. This opens a new window which inherits from VisualizerWindowBase, and passes the initial config to the window.
The base class for the visualizer window. This adds the following UI elements to the window chrome:

-
Expression textbox shows the current expression being visualized. Note that the visualizer API doesn't expose the actual expression (see here and here), so when the visualizer needs the expression and it's empty, the user will be prompted:

But the value can also be set directly in the textbox.
-
Settings link shows a popup which can contain a view and view-model for the config object, specific to the visualizer.

When clicking out of the popup, the visualizer window will check if the config has been changed. If it has, the window will re-request data for the visualized expression, based on the new config.

These commands can be added to your view-model and triggered via binding.
This command takes a format string into which the initial visualized expression is plugged in. The resulting format string is then copied to the clipboard.

Ideally, the command would actually add the watch, instead of just copying the necessary expression to the clipboard; tracked under #2.
This command allows your view-model to request a new window be opened, with a possibly modified config.
