Comments (4)
Initially, I see the following workflow:
On visualizer start:
- Create a new settings object (TODO we can check if the file exists and read from the file if it does)
- pass the settings object to the debuggee side using TransferObject
- get back
VisualizerData
with the settings object - (TODO we can save the current settings to the file at this point)
When the settings popup is opened:
- Clone the settings object -- dedicated Clone method, stores the original as a private field
- Set the datacontext of the popup to the cloned object
- IsChanged property compares current values to original values, in original object
- On poup close, if IsChanged, then reload data context using TransferObject
This has one limitation -- settings cannot be modified on the VisualizerData
itself; there has to be some step that says "I've finished modifying the settings, now reload." In this case, it's the popup close.
But this makes sense for changes to settings that require the debuggee side (e.g. parser class name, to specify the rule name instead of the rule class type).
And for changes to settings which don't require the debuggee side, we can implement INPC on the settings object itself for those settings and listen for those changes and/or use two-way databinding from WPF.
from antlr4parsetreevisualizer.
Some settings require a round-trip to the debuggee side (parser class). Others do not (maximum window height/width).
Settings which require a round-trip need to be checked in the ShouldTriggerReload
property. Closing the popup checks this property, and if it returns true
, the config is sent to the debuggee side again.
Settings which don't require a round-trip should simply trigger an NPC event.
from antlr4parsetreevisualizer.
The underlying work is done; only the specific settings described here need to be implemented.
But I'm leaving this pinned, because we haven't tested the global settings yet.
from antlr4parsetreevisualizer.
I'm closing this; none of the settings here really justify keeping it open.
from antlr4parsetreevisualizer.
Related Issues (20)
- Navigation history + back/foward buttons
- Navigate to parent node via properties datagrid
- Include VS 2017 debuggers DLL as third-party reference HOT 2
- Consider using the annotater to add nullable-reference attributes to reference assemblies
- Simplify CI build
- Could not load this custom viewer HOT 6
- The visualizer tool doesn't work - VS 2017 Enterprise HOT 7
- Change modal message box about unloadable assemblies on the debuggee side, to something non-modal HOT 3
- Dialog size too large HOT 2
- Use Periscope HOT 2
- Allow choice of language when rendering property values
- Determine lexer/token list from tokens HOT 1
- Update wiki/README docs HOT 1
- Wiki: solution structure
- Reintegrate tests projects HOT 1
- Expose dependency properties on the controls HOT 1
- How to deal with "Evaluation timed out" problem? HOT 8
- Exception from HRESULT: 0x80131515 HOT 3
- Update for VS2022? HOT 1
- Visualizer is not listing parsers and lexers
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from antlr4parsetreevisualizer.