Slicer3:Developers:Projects:QtSlicer/OpenDiscussions

From Slicer Wiki
Jump to: navigation, search
Home < Slicer3:Developers:Projects:QtSlicer < OpenDiscussions

QtSlicer

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

  • Flexible layouts
    • Issue: Improve usability and capability of Slicer visualization views and view layouts.
    • Reporter: Andrey Fedorov
    • Motivation: The current layout configuration is in some ways restricted by not allowing to set arbitrary configuration of slice view/3D view combinations. Additionally, the types of views are restricted to only 2 types (slice or 3D).
    • Suggestion: Evaluate the applicability of the flexible layout framework used in Paraview for adoption in QtSlicer (see the screenshot attached). The nice features observed in Paraview layout framework, which in my opinion are highly applicable to Slicer are:
      • any view can be split vertically or horizontally with just a click of a button in the corner of the view -- very flexible
      • once the view is split, user is given a choice, which view should be created -- simple and intuitive
      • very cool view types that can be created: bar chart, plot, spreadsheet! Bar chart and plot features have been previously requested by Slicer users. Of course, introduction of new types will require re-thinking of the architecture.
    • Decision: TBD
    • Result: TBD
    • Note: TBD
Screenshot showing some of the capabilities of the flexible layouts in Paraview GUI
  • 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
  • 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

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).