Multiple module panels


I do my best to develop extensions that are modular so that I can use them for many different tasks. However, the division in functionality results in me having to switch modules in the module panel frequently, which is time consuming and tedious.

I was wondering if there was ever interest in enabling the creation of multiple dockable/floating module panels instead of just the single module panel + backward/forward/recent navigation widgets that currently exist. I think it would be useful for users that must perform a task multiple times that requires three or more distinct modules over its course.

I understand that I could build this functionality into my own modules with persistent dialogs, but I think this problem may occur for more than just me, and it also would be better solved if these widgets were able to have the current module panel widget’s docking functionality.


1 Like

Hi Rachel -

For now it’s pretty easy to show any module widget as a floating window with code like this:

>>> ww = slicer.modules.addscalarvolumes.widgetRepresentation()

It will get re-docked to the mainwindow if the user selects that module from the module menu, but otherwise it should be usable. These could also be put into a new layout for grouping them.

It would be nice to have some conventions for this.


In the last decade, we’ve used Slicer for probably over a hundred different projects. We’ve found that projects go through several phases and current Slicer capabilities are generally satisfy needs for each phase:

  1. Engineering prototyping

Use Slicer as is, to find a suitable workflow. In this phase, we experiment with a large number of modules, use it in various combinations. We certainly switch between many modules while using Slicer this way. Module selector controls (previous, next, history) and search (hit Ctrl+F, type part of module name, then hit Enter) can make switches relatively painless.


  1. Clinical prototyping

Once a clinically acceptable workflow is determined, we develop scripted module, which sets up the scene (create transforms, set default visualization options, etc.) and provides a user interface that makes all necessary features available in one place. These prototypes are still mostly used by researchers or engineers because you can still get lost among the many features and options available, but the software can be used quite efficiently (number of clicks to achieve a certain operation is already minimized).

  1. Clinical use

Once a prototypes proves to be clinically useful, you can create a custom application (slicelet) from your module by disabling/hiding all unnecessary features, customizing branding (replace Slicer logo, etc. with your own company logo), further optimizing your custom module. in this phase, you also need to produce a fair amount of documentation, test results, etc. for obtaining regulatory approval. In this stage, the software is simple enough so that it can be operated by clinicians who are not experienced Slicer users.

Showing multiple module user interfaces at once:

  • might slightly help in some cases in engineering prototyping phase, but usability is not really a focus of this phase anyway. In this phase, you spend your time with figuring out what modules to use, with what settings, with what combination of other modules.
  • is not a usable approach for clinical prototyping (or later) phase, as you would need to do a lot of manual work (setting up the scene, arranging module user interfaces, paying attention to use modules in the correct order, etc).

Since this feature would have narrow use case and could potentially make the user interface very complicated, there is very little incentive to implement it.

Also you can move back and forth through the module history. On the mac it is command-left-arrow and command-right-arrow. I think it’s control-left and control-right on the windows (can someone confirm?). I don’t see this on the wiki but we can add it.

1 Like

I’ve just tried and Ctrl + Left/Right arrow switches between modules on Windows (unless you are in an text editor or other widget that uses this shortcut).

Thanks @piper, I’ve learnt something new about Slicer today!


Thanks for confirming - I updated the wiki (4.8 and Nightly) with this info.