Difference between revisions of "Slicer3:UIDesign:WorkingProblems:SlicerFlexibleLayout:UXP3"

From Slicer Wiki
Jump to: navigation, search
m (Text replacement - "\[http:\/\/www\.slicer\.org\/slicerWiki\/index\.php\/([^ ]+) ([^]]+)]" to "$2")
 
(19 intermediate revisions by one other user not shown)
Line 1: Line 1:
  
[http://www.slicer.org/slicerWiki/index.php/Slicer3:UIDesign#Working_problem:_Customizable_layouts_for_Slicer3 Back to Flexible Layouts Overview ]
+
[[Slicer3:UIDesign#Working_problem:_Customizable_layouts_for_Slicer3|Back to Flexible Layouts Overview ]]
  
 
=Adding multiple tabs to a Slicer application window =
 
=Adding multiple tabs to a Slicer application window =
Line 11: Line 11:
 
*Slicer starts up: returning user sees their tabs from last session restored.
 
*Slicer starts up: returning user sees their tabs from last session restored.
  
== CHALLENGES: teasing apart '''LAYOUTS''' and '''MODULES''' (work in progress) ==
+
== CHALLENGES: teasing apart '''LAYOUTS''' and '''MODULE GUIs''' (work in progress) ==
*Each TAB contains a layout.
+
*The Main Application Window can contain one or multiple Tabs.
 +
*Each Tab contains a layout.
 
*Each Layout may contain:
 
*Each Layout may contain:
 
** one, multiple, or NO module GUIs,  
 
** one, multiple, or NO module GUIs,  
Line 20: Line 21:
 
** selecting from saved custom layouts
 
** selecting from saved custom layouts
 
** specifying a new custom layout
 
** specifying a new custom layout
*Within any module UI, a user can select a NEW module.
+
** selecting a new module from a module GUI that requires a different layout.
** if the current layout contains only ONE module GUI,
+
 
 +
== 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,  
 
** and the newly selected module is designed with a different specialized layout,  
 
*** the layout in the tab will change.
 
*** the layout in the tab will change.
** '''Question:''' if the current layout contains MULTIPLE module GUIs,
+
*'''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?
 
** 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,
+
*'''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?
+
** 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?
+
*** 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.  
 
** new tab is added with same layout as previously raised tab.  
 
** '''Question:''' what module is selected -- home? none?
 
** '''Question:''' what module is selected -- home? none?
 
= Open questions=
 
* '''Question:''' What is the desired behavior when user selects a module from the toolbar?
 
** switch the currently raised tab's GUI.
 
 
* '''Question:''' What happens if the layout contains multiple GUI panels and user selects a new module from the toolbar?
 
** new module GUI replaces last module GUI to be touched (?) or
 
** new tab opens with module selected from the toolbar and layout associated with that module (?)
 
** Currently, we assume that each layout contains a module GUI somewhere. New, flexible layout designs may mean that layouts have NO module GUI! In that case, Module navigation can not happen at the application level. Instead, it only makes sense from within a module GUI. So each module GUI panel will keep its own history of modules it has displayed, and navigation will happen only within a module GUI's history.
 
* However, toolbar essentially provides module navigation at the application level.
 
** How about if the '''toolbar''' automatically open a selected module GUI in a new tab, that displays a layout associated to the selected module.
 
  
 
== Default layout at startup ==
 
== Default layout at startup ==
Line 63: Line 65:
  
 
== Adding a new tab ==
 
== 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?'''
  
 
[[image:TabbedApplicationWindowNewTab.png]]
 
[[image:TabbedApplicationWindowNewTab.png]]
Line 70: Line 84:
 
* User clicks the '''+''' icon to create a new tab.
 
* User clicks the '''+''' icon to create a new tab.
 
* Tab is raised:  
 
* 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
 
* User selects Layouts->Define Custom Layout from toolbar
 
* Layout designer interface pops up and  
 
* Layout designer interface pops up and  
Line 84: Line 96:
  
 
[[image:TabbedApplicationWindowCustomLayout.png]]
 
[[image: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?
 

Latest revision as of 02:33, 27 November 2019

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?

TabbedApplicationWindowStartup.png

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

TabbedApplicationWindowStartupAnno.png

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?

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:
  • 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