Difference between revisions of "Slicer3:Interface Design and Usability"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(23 intermediate revisions by 2 users not shown)
Line 1: Line 1:
'''[[Slicer3|<< Back to Slicer3 main page]]'''
+
<big>'''Note:''' We are migrating this content to the slicer.org domain - <font color="orange">The newer page is [https://www.slicer.org/wiki/Slicer3:Interface_Design_and_Usability  here]</font></big>
 
 
[[Slicer3:Developers |Go to Slicer3 Developer Info >> ]]
 
 
 
 
 
<br />
 
 
 
= Project goals =
 
 
 
* Design and engineer Slicer3 UI.
 
* Develop human interface and style guidelines for developers.
 
* Develop a user-centered design practice for developers.
 
* Design a new brand for Slicer3.
 
* Develop visual communication guidelines for the Slicer3 brand.
 
 
 
= Project overview =
 
 
 
The scope of this effort is sorted into four categories: Engineering, UI design, Usability and Slicer3 branding. The subtasks of each category are itemized below and specific information about each category is located on the linked pages.
 
 
 
=== [[Slicer3:UIEngineering|UI Architecture & Engineering]] ===
 
 
 
'''Tasks:''' (more detailed UI Architecture & Engineering information can be found [[Slicer3:UIEngineering|on the UI Architecture & Engineering page]]).
 
 
 
* design thin GUI layer, separate from the control logic and data model;
 
* design a model for representing the UI and managing local events;
 
* extend the model for handling remote events;
 
* design means of mapping KWWidgets onto that model;
 
* set priorities with Kitware involving extensions & modifications to KWWidgets;
 
* determine the api to application logic, used by GUI and by scripts;
 
* design set of base classes for slicer modules and custom widgets that give module developers an easy pattern to follow;
 
* develop guidelines for slicer base developers and module developers;
 
* design mechanism for centrally specifying look & feel (and permitting overrides);
 
 
 
'''Status:''' complete. Mechanisms for automatic module detection, lazy GUI creation could be improved.
 
 
 
=== [[Slicer3:UIDesign|UI Design]] ===
 
 
 
'''Tasks:''' (more detailed UI Design information can be found [[Slicer3:UIDesign|on the UI Design page ]]).
 
 
 
* design overall look to Slicer3 application in keeping with core values;
 
* design look & feel applied to developer modules;
 
* implement Slicer3 Application GUI
 
* design conventions for specifying global and module-specific keyboard accelerators;
 
* specify and document global keyboard accelerators;
 
* iterate on prototype(s) and present them for comments and suggestions;
 
* develop and publish [[Slicer3:Human_Interface_and_Style_Guide_for_Developers | Human Interface & Slicer Style Guidelines for Developers]] (currently under development).
 
 
 
'''Status:''' main application GUI complete. Time should be allocated for user-centered refinement of  core module GUIs which were hurriedly assembled. Style guidelines are currently being drafted.
 
 
 
=== [[Slicer3:Usability|Usability]] ===
 
 
 
'''Tasks:''' (more detailed Usability information can be found [[Slicer3:Usability| on the Slicer3 Usability page ]]).
 
 
 
* develop and publish a [[Slicer3:Usability#Recommended_light-weight_user-centered_design_practice | light-weight user-centered design practice]] that support usability and software consistency.
 
* use this process to design and implement main application interface, and some core functionality.
 
* promote awareness of this process and encourage its adoption among developers
 
 
 
'''Status:''' practice is developed and published on the wiki. We have used this practice where appropriate on some base modules. The practice has not yet been actively promoted.
 
 
 
=== [[Slicer3:Slicer3Brand|3DSlicer Brand]] ===
 
 
 
'''Tasks:''' (Slicer3 brand sketches can be found[[Slicer3:Slicer3Brand| on the Slicer3 Brand page ]]).
 
 
 
* fully express new 3DSlicer brand: design logo, splash screen
 
* develop and publish [[media:3DSlicerBrandGuidelines.pdf | Slicer3 Visual Communication Guidelines]] to promote consistent use of the Slicer3 brand
 
 
 
'''Status:''' complete.
 
 
 
 
 
 
 
= Feature Requests, Resource Requests and Emerging Conventions =
 
 
 
We are collecting '''[[Slicer3:FeatureRequests|feature, conventions and resource requests]]''' from users and developers. Appropriate entries from [http://www.na-mic.org/Bug Slicer2's bug tracker] will be periodically added to this repository also.
 
 
 
<br />
 
 
 
= Working questions =
 
 
 
* Getting correct render window size information from vtkKWRenderWidget (answer: yes, vtkKWRenderWidget::GetWidth() is actually its superclass' vtkKWFrame::GetWidth(), which is misleading, it's more a "requested width" kind of option. What you did by calling Tk is OK).
 
* First pack/unpack of Nav/Zoom widget interacting with scrollbar, making display flash (answer: fixed, update KWWidgets, in vtkSlicerViewControlGUI::PackZoom/NavWidget replace "-fill x -fill y" by "-fill none" if it is still flashing)
 
* Registry and window size (answer: investigating)
 
* Progress feedback (answer: vtkKWWindowBase::GetProgressGauge()::SetValue())
 
* Using registry (what application and module state is reasonable to save?) (answer: I would recommend: the last selected module, the collapsed state of "Manipulate Slice Views", "Manipulate 3D View", the layout (i.e. 1 over 3, or 2x2,etc), if the slice controls are collapsed or not).
 
* In the toolbar, the indicator should be off, and we could use a different image for the selected and unselected state of a button. Sadly, doing so still seems to make the button recess/shift when it is selected (answer: investigated this one thoroughly, there is sadly no work around that, it's a Tk problem unfortunately).
 
 
 
[[Slicer3:Interface_Design | Return to Slicer3 Interface Design and Usability ]]
 
 
 
[[Slicer3 | Return to Slicer3 main page ]]
 

Latest revision as of 18:07, 10 July 2017

Home < Slicer3:Interface Design and Usability

Note: We are migrating this content to the slicer.org domain - The newer page is here