Slicer3:UIDesign:WorkingProblems:SlicerFlexibleLayout:UXP3

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 MODULES (work in progress)

  • 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
  • Within any module UI, a user can select a NEW module.
    • 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.
    • 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?
    • Question: if the current layout contains MULTIPLE module GUIs,
    • and a new module is selected from the Application Toolbar, then what is a well-designed behavior?
  • 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?
  • 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!

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?

TabbedApplicationWindowStartup.png

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

TabbedApplicationWindowStartupAnno.png

Adding a new tab

TabbedApplicationWindowNewTab.png

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:
    • Question: what module if any is displayed in new tab? -- suggest none: just a module selector with "Select module:" in menubutton. (other ideas?)
    • Question: what layout is displayed in new tab? -- suggest same layout that is in previously raised tab. (thoughts?)
  • 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?

TabbedApplicationWindowCustomLayout.png

  • If "Custom_1" tab contains NO module GUIs at all? -- say, just views and a plot widget:
    • Question: What happens when user selects "Models Module" from the toolbar?