From Slicer Wiki
Jump to: navigation, search
Home < Slicer3:UIDesign:WorkingProblems:ModuleManagementWizard:Draft1

Back to Slicer3:UIDesign

 (wjp): please add comments and i can make fixes!
 (sp's comments): 
    * I've started using the term 'Extensions' to refer to any module type (scriptable, 
loadable, cli...) that is built outside of the core of Slicer3.  Maybe we can use the same 
terminology and call the tool the "Extension Management Wizard" 
    * At the meeting we discussed that the manifest info would be bundled with the Slicer3 
installer (or tar file).  After thinking about it I realize that kind of defeats the point, 
so I like the idea of the first dialog specifying a server to search (xnd in the example).  
The manifest file can be downloaded from there.  I hope to have an example site set up soon.
    * on step 2 it would be great if the homepage links could be made active so people can 
preview the module
(ron's comments):
   * I am concerned about the mixing of install and uninstall functionalities. It would 
be easy for the ADD crowd to click the wrong button. How about uninstall and install 
columns which are mutually exclusive and then an apply button at the bottom? 

Step 1/3:

First step notes:

  • suggested title: module management (lets you add/remove modules). "loadable" implies add only. "download" implies add only. "configuration" is close, but could imply tuning individual modules.
  • Choosing either "Find & Install" or "Either" enables the cache directory browser and clear cache button, and the host menubutton. Choosing "Uninstall" disables those things (since they are not relevant).
  • delete icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerDeleteIcon()
  • either recommend a host for users who aren't sure where to go, or choose recommended by default.
  • don't enable "next" button until a cache directory is specified.
  • when "next" is clicked, do the requested module search. If a search error occurs, raise an appropriate error message.


  • If "Uninstall" is selected, disable the need to select cache directory and remote host.
  • When "next" is clicked, search for modules on disk.
  • If no modules are found, raise an appropriate message.


Step 2/3:

3 sub-steps: selection, download|uninstall, finish.

Module selection

  • Display helpful message at top. Icon optional.
  • if user requested to "Uninstall" in previous step, only show modules on disk.
  • if user requested "Find & Install" or "Either", display all modules on disk and all modules found on selected host.
  • if a module is on disk, but NOT on the selected host, note that in logic (will need to skip its download if user selects it) but don't flag it on GUI.
  • by default, select all modules NOT currently on disk.
  • disable the "next" button until a download or an uninstall is completed.
  • allocate enough space in columns for user to read module name, category and some of the description. Homepage and binaryURI can be clipped.
  • if "cancel" is selected before "download & instsall" or "uninstall" are selected, then just exit the wizard.
  • once something has been downloaded/installed or uninstalled, disable or remove the cancel button. (Assuming operation can't be undone or we don't have a way to expose that capability.)
  • seems reasonable to let user click "prev" and change from one management option to another (logic able to handle this?)


  • note: Icons for module status, and where to find them:
    • success icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerDoneIcon()
    • wait icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerWaitIcon()
    • cancelled icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerCancelledIcon()
    • error icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerErrorIcon()
    • found on disk icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerFoundOnDiskIcon()
    • not found on disk icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerNotFoundOnDiskIcon()
    • select all icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerSelectAllIcon()
    • deselect all icon: GetApplicationGUI()->GetFoundationIcons()->GetSlicerDeselectAllIcon()


Module download|uninstall

  • Confirm on uninstall: To address Ron's point about the likelihood of people confusing install versus uninstall and possible bad consequences of that confusion -- throw a vtkKWDialog to confirm prior to executing the uninstall operation.
  • Once user clicks "download&install" or "uninstall", change helpful message at top that alerts user to the non-instantaneous behavior of cancel.
  • Also, once either option is clicked, expose the "Stop" button.
  • Note cancel button is now gone or disabled. (this so "Cancel" is not overloaded: cancel means ONLY cancel the wizard and "stop" means interrupt the install/uninstall.)
  • Until we have progress feedback hooked up, display "wait" icon for module that's currently downloading or being marked for uninstall.
  • note: when user clicks "download&install", module gets downloaded, unzipped and copied into the right place. When user clicks uninstall, module gets removed (or moved away -- however the logic is handling it).
  • when operation on each module is finished, update module's status icon appropriately. Successfully installed & uninstalled modules should show the "done" status in this display.
  • seems reasonable to let user click "prev" and change from one management option to another (logic able to handle this?)



Wizard finish

  • As soon as all download/installs or uninstalls are finished, raise a message to user if appropriate:
    • if a modules were on disk, selected for download anyway, but were not present on selected host, tell user about it.
    • if any modules failed to download, install or uninstall, tell user about it (include module names).
  • Enable the "finish" (or "next") button. (Not sure when button text changes from "next" to "finish" in the wizard)
  • seems reasonable to let user click "prev" and change from one management option to another (logic able to handle this?)


Step 3/3:

  • Display helpful message letting user know what changes will take place and when.