View Issue Details
|ID||Project||Category||View Status||Date Submitted||Last Update|
|0001743||Slicer4||Core: Base Code||public||2012-02-22 07:05||2017-09-27 12:26|
|Product Version||Slicer 4.0.1|
|Target Version||backlog||Fixed in Version|
|Summary||0001743: Redesign the link mechanism|
Given the previous email exchanges and all the information, we worked on a solution based on the "anonymous payload mechanism".
The SliceLogic will either Invoke the InteractionEvent or not through the SliceNode with its own logic as you can see in the simplified enclosed diagram.
The main idea is to trigger the broadcasting with VTK event instead of a MRML node property.
This solution is similar in the case of the GUI input events instead of the 3D view and will be exactly the same using the SliceCompositeNode instead.
On Fri, Jan 6, 2012 at 12:03 PM, Michael Jeulin wrote:
On Fri, Jan 6, 2012 at 9:17 AM, Miller, James V (GE Global Research) <firstname.lastname@example.org> wrote:
I am sorry it is not currently the plan for me to go to Salt Lake.
My main interest is keeping all the logic about what is linked and how that is broadcast around to be within the SliceLinkLogic. This keeps it all in one place.
Actually the only difference here and the main idea is to put all the logic in the SliceLogic instead of the SliceLinkLogic; the SliceLinkLogic is in our mind just a broadcaster which forward the information given the "InteractionFlag" (could be a bit analog to a MUX in such way).
I am not sure I understand why it would be better to handle this with a VTK event as opposed to a state on the node.
2) Then it avoids to Modify() a node, when it doesn't really get modified:
Where we have gotten in trouble in the past is that we did not have a way to know whether we were in a particular state and hence whether we needed to broadcast a change to other viewers in response to an event. For example, the user modifies a node through the gui, it broadcasts to another node, that node then tries to rebroadcast to the rest of the nodes. Aside from being inefficient, it caused a number of difficult to manage side effects dealing with the order in which operations were applied.
The event mechanism avoids that behavior because it prevents automatic broadcasting. Broadcasting or not is a conscious choice made by the GUI from its internal events (user interaction) and not the state of a node.
Again, this goes back to separating an "Event" from a "Command". The user interaction with a node in an event. In response to that event, the link logic needs to issue a number of commands to the other viewers
I also enclosed the revisited diagram where the last condition has been changed.
|Tags||No tags attached.|
|2012-02-22 07:05||finetjul||New Issue|
|2012-02-22 07:05||finetjul||Status||new => assigned|
|2012-02-22 07:05||finetjul||Assigned To||=> Michael Jeulin-L|
|2012-02-22 07:05||finetjul||File Added: LinkLogicDiagramv1.2.png|
|2012-08-20 11:50||jcfr||Assigned To||Michael Jeulin-L => finetjul|
|2012-08-20 11:50||jcfr||Target Version||Slicer 4.2.0 - Feature freeze Sept 1st 2012 => Slicer 4.2.5|
|2012-08-21 09:39||jcfr||Target Version||Slicer 4.2.5 => Slicer 4.3.0|
|2013-08-09 04:39||finetjul||Target Version||Slicer 4.3.0 => Slicer 4.4.0|
|2014-05-13 11:04||jcfr||Target Version||Slicer 4.4.0 => Slicer 4.5.0-1|
|2014-05-13 12:50||jcfr||Status||assigned => acknowledged|
|2015-11-02 11:58||jcfr||Target Version||Slicer 4.5.0-1 => Slicer 4.6.0|
|2016-10-12 15:12||jcfr||Target Version||Slicer 4.6.0 => Slicer 4.7.0|
|2017-09-27 12:26||lassoan||Target Version||Slicer 4.7.0 => backlog|