From Slicer Wiki
Jump to: navigation, search
Home < Slicer3:UIDesign:WorkingProblems:SlicerFlexibleLayout:UXP3

Back to Flexible Layouts Overview

Adding multiple tabs to a Slicer application window

  • Challenge: Will be useful to specify and switch among multiple tabs in the main application window.
    • Each tab can display a layout, and that layout may include multiple views, multiple module guis, etc.
  • Displaying multiple module guis at once requires each module UI to contain module select/navigate controls.
  • Need controls for adding a tab, deleting current tab.
  • Slicer starts up: first time user sees welcome module in a single tab.
  • Slicer starts up: returning user sees their tabs from last session restored.

CHALLENGES: teasing apart LAYOUTS and MODULE GUIs (work in progress)

  • The Main Application Window can contain one or multiple Tabs.
  • Each Tab contains a layout.
  • Each Layout may contain:
    • one, multiple, or NO module GUIs,
    • one, multiple, or NO viewers.
  • Within a tab, a user can change the layout by
    • selecting from among default layouts
    • selecting from saved custom layouts
    • specifying a new custom layout
    • selecting a new module from a module GUI that requires a different layout.

Workflows and open questions

If a layout contains a module UI, within that UI, a user can select a NEW module.

  • Workflow A if the current layout contains only ONE module GUI,
    • and the newly selected module is designed with a different specialized layout,
      • the layout in the tab will change.
  • Workflow B + Question if the current layout contains MULTIPLE module GUIs,
    • and the newly selected module is designed with a different specialized layout that does NOT admit the other GUI panels in the currently layout, then WHAT?
  • Workflow C + Question: if the current layout contains MULTIPLE module GUIs or NO module GUIs,
    • and a new module is selected from the Application Toolbar, then what is a well-designed behavior?
      • idea: (consistently open all (shortcut) Application Toolbar selections in a new tab?)
  • Workflow D + Question: Too muddy for comfort! Some module selections will preserve current layout and change only the Module GUI panel. However, some modules will be designed with their own custom layouts. In that case, some module selections will ALSO change the layout!
    • if Layout_A is being displayed and user selects "Module_B" which has a custom layout, Layout should change to support module. This can be confusing!
    • Do we pop up a message and options: "This module requires a specific layout. Please choose:"
      • Change layout to support "Module_B"
      • Open "Module_B" in a new tab"
      • "Cancel"
  • Workflow E + Question: What happens when user selects "+" to add a new tab?
    • new tab is added with same layout as previously raised tab.
    • Question: what module is selected -- home? none?

Default layout at startup

Ok: we've just fired up Slicer and we see the following presentation (which is presumably restored from the application registry).

  • We see Slicer's Logo
  • The data module (my home module) is presented
  • A first tab indicating this module is shown (and indicator that shows I can create other tabs).
  • The data module GUI now contains controls for changing the raised module, or navigating among previously used modules.
  • If I use the module selector, or the module shortcuts in the toolbar, the tab name will change to reflect the module selected in this tab.
  • YUK: the line between navigating among modules and "layouts" can become blurry.
    • For instance: a developer may design their module to use a custom layout: say there are two GUI panels, a 3Dviewer and a plot viewer in MyCustomModule.
    • In the layout below, I have previously selected the "Data Module" and a "Conventional Layout". Now I choose "MyCustomModule" and both the GUI panel(s) and the layout change.
    • Question: What happens when I select the "last module" button to go back to the Data Module? -- does the layout change as well?


Annotations of modifications to main application layout to accommodate tabs (and multiple module GUIs)


Adding a new tab

  • user clicks the "+" to add a new tab.
  • new tab is added and raised.
  • option1: tab shows same layout as previously raised tab, and a blank module GUI with no module yet selected.
    • tab is named "untitled" until a module GUI is selected or a custom layout is defined and named.
  • option2: tab shows "home" module (if no singleton problems)
    • tab is named after the home module, and either
    • same layout as previously raised tab, or
    • a layout required by "home" module.
  • user selects "Volumes" module and GUI is populated.
  • user changes layout in this tab.
  • (I prefer option 1 -- probably more efficient too). Comments & other ideas?


Adding a tab with a user-specified custom layout containing multiple module GUIs.

  • User clicks the + icon to create a new tab.
  • Tab is raised:
  • User selects Layouts->Define Custom Layout from toolbar
  • Layout designer interface pops up and
    • user defines a grid,
    • assigns views and UIs to panes,
    • names the new layout "Custom".
    • user exits the layout designer.
  • new pane is now presented according to "Custom" layout and is named "Custom_1".
  • user selects volumes module in one GUI panel, and data module in another UI panel in "Custom_1" tab.
  • If user selects "Models Module" from the toolbar:
    • Question: Which GUI panel changes?