Slicer3:Developers:Projects:QtSlicer/OpenDiscussions
From Slicer Wiki
Home < Slicer3:Developers:Projects:QtSlicer < OpenDiscussions
Introduction
This page gathers discussions about code architecture/implementation/design of the Slicer port to Qt. This page is mainly for developers as it concerns the internal/implementation part of Slicer, discussions about the interface design should be listed on the UIDesign wiki page. User feedbacks should be reported on the Usability wiki page.
- Please add your ideas/comments/remarks/feedback/suggestions/problems/... below.
- Points will be discussed during regular TCon meetings , on the Slicer developer list and/or by email.
- Decisions resulting from discussions should be tracked into the Mantis under the category:
QtGUI
.
Open Issues
- Usability of the slider widget
- Issue: The usability of the slider widget both in KWSlicer and QtSlicer may not provide sufficient flexibility.
- Reporter: Andrey Fedorov
- Motivation: Both in the KW and Qt versions of Slicer, precise adjustment of the values with the slider widget is difficult. Often, it is only possible by manually entering the value, which is not very convenient. Also, see related discussion on kwwidgets mail list. I checked the Qt version, and click on 'through' area increments by 1. In the context of Transform, 1 mm or 1 degree can bee too coarse granularity for some applications.
- Suggestion: Discuss whether the widget can be improved in the Qt version. Possible ideas:
- Handle additional events (Ctrl-click/Shift-click in the 'through' area) and change the position by smaller increments?
- Introduce additional ('advanced'?) field in the Transform module, which would allow to specify the increment granularity?
- Decision: TBD
- Result: TBD
- Note: TBD
|
- Have 2 Modules open at the same time
- Motivation: It would be good for the Reporting module if we could access the module as well as the volume module to change how the image displayed in the image while annotating the image at the same time
- Suggestion: Create a pop up window which can host any module
- Decision: TBD
- Result: TBD
- Note: TBD
- See design sketch for tabbed UI panels.
- Widget to automatically set values
- Issue: Add more features to qCTKSliderSpinBoxWidget for a user-friendly way of setting values to parameters
- Reporter: Steve Pieper
- Motivation: Setting parameter values is key in Slicer, it should be made easy for the user to select a value
- Suggestion:
- ValueIsChanging: Currently a signal (valueChanged) is emitted any time the slider is moved or the spinbox value is changed, the widget should support a Tracking property to emit another kind of signal: valueIsChanging ( similar to QAbstractSlider::tracking). Doing so would decrease the number of valueChanged signals emitted (for time-consuming slots connected to the signal).
- Min/Max: we should think about how the min/max is handled (some cases don't have min/max and others do). We should also think about the resolution of the slider in the case when max-min is very large
- Expert mode: we should have some good ways for expert users to quickly get to the numbers they want. Something like Control-drag and Shift-drag on the slider changing the 'gain' with respect to the value changes.
- Name: Perhaps qCTKValueSetter is clearer? Perhaps this can be a subclass that has more of this custom behavior.
- Templates for modules
- Issue: Guiding the developers to develop Qt modules
- Reporter: Alexander Yarmarkovich
- Motivation: Consistency between all the Qt modules
- Suggestion: Templates for the Qt modules
- Style and naming conventions
- Issue: What indentation and variable/method naming to use in different classes
- Reporter: Alexander Yarmarkovich
- Motivation: Consistency and readability of code
- Suggestion: Follow convention of superclass see Slicer3 style conventions
- Widget naming conventions
- Issue: How do we name custom widgets that we want developers to use for sake of consistency, application interface usability, etc?
- Reporter: wjp
- Motivation: Widgets like the multi-column list being developed in the Reporting Module should be made available to all developers -- the custom widget will contain options for 'select all', 'deselect all', 'delete selected', 'make all visible', 'make all invisible' (with accompanying logic), which can be exposed or hidden. What are we calling these classes, and how will we promote their use?
- General Coding issues
- Issues:
- using private classes vs public
- where initialization should happen
- using separate slots for each parameter vs one slot
- logic observing only parameter node
- Issues:
Closed Issues
- Module Logic
- Issue: Change qSlicerModuleLogic into vtkSlicerModuleLogic
- Reporter: Alexander Yarmarkovich
- Motivation: A lot of slicer logics already exist, using qSlicerModuleLogic implies to wrap this logics. Why not directly use the vtkSlicerModuleLogic?
- Decision: Talked by email and over the phone during the Tuesday TCon (01/26/10). The suggestion has been accepted.
- Result: The change has been committed on 01/28/10 (r11850, r11852, r11853, r11854)
- Note: While new module logics must derive from vtkSlicerModuleLogic, logics deriving from vtkSlicerLogic are supported for backward compatibility reasons (the core module logics derive from vtkSlicerLogic).