View linking design

I have figured out how to view different images that are linked. at least it is working for the two over two view I am currently at.
Where is the documentation explaining how it works? (to lazy to google)
Also, I have been confused about how it works in the past, but now that I need to explain it to someone else, I think I need to know some more details.

If I change anything in the slice controller section of the View Controllers module while the views are linked all the linked views update to the same thing. e.g. selecting a different image, or the (Axial, Saggital, Coronal) view orientation, and 3d view visibility.

In the image panels, moving one image moves the other images, and It appears that window level and window width are also linked?

Is there a way to toggle what “linking” means. e.g. when linking is turned on it can be defined accordingly to only sync a subset of the possible linkings?

An example might be that I have two views, and I want them to be linked for image views, but not linked when I change the image volumes. lets say I want to visually inspect 4 different volumes with one other volume one at a time, but I don’t want a view that compares all 5 at the same time, I would need to toggle the linking every time I change the image volume?

current behavior:

  1. unlink
  2. change image
  3. re-link

desired behavior:

  1. In a menu panel toggle off sync for everything but view sync
  2. turn on link
  3. change image volume

In general, such low-level internal mechanisms are not described in documentation separately from the code. You can rely on comments in the code and understand it by reading the code or execute step-by-step in a debugger, and if there are any particular details that you cannot figure out then you can ask here.

Image display window/level is stored in the volume’s display node. Usually you only have one display node for a volume, which is used in all views. So, window/level changes show up in all views, regardless of view link settings. [quote=“kayarre, post:1, topic:10694”]
Is there a way to toggle what “linking” means. e.g. when linking is turned on it can be defined accordingly to only sync a subset of the possible linkings?
[/quote]

You could only customize this by modifying Slicer source code. I don’t recall ever receiving requests for this, so we don’t plan to implement this feature.

When you have a very specific workflow in mind then you can implement that in your own module. For example add a volume selector section in your module GUI that automatically disables/enables view sync.

You might also find view groups useful. Properties are only synchronized between views in the same group.

@lassoan Along this line, at least would be possible to synchronize the segmentation field of the slice view controllers with the Segment Editor and Segmentation modules. It gets confusing and possibly error prone, when you are working with multiple segmentations. This can be a one-way setting (e.g., controlled from Segment Editor, so when I switch a segment, it automatically alters the segmentation node being displayed in the viewer).

In contrast to foreground, background, and label volume, there is no limitation on how many segmentations you display at the same time. We wanted to make the transition from labelmaps to segmentations easier, that’s why we added a small section to adjust segmentation display properties, but if you find it confusing then we could remove it and use Data module and Segmentations module to show/hide segmentations (similarly to models, markups, etc.).