Difference between revisions of "Projects:ARRA:SlicerEM:Developer:WorkflowManager"
From NAMIC Wiki
(Created page with '== Summary == * EMSegmenter has a fairly complicated workflow * Need a mechanism to validate user input and transition appropriately between steps of the workflow * Current plan…') |
|||
Line 3: | Line 3: | ||
* EMSegmenter has a fairly complicated workflow | * EMSegmenter has a fairly complicated workflow | ||
* Need a mechanism to validate user input and transition appropriately between steps of the workflow | * Need a mechanism to validate user input and transition appropriately between steps of the workflow | ||
+ | * Should be dependent on Qt only (and not VTK) | ||
* Current plan (subject to change) = use Qt's state machine implementation, with our own workflow manager on top | * Current plan (subject to change) = use Qt's state machine implementation, with our own workflow manager on top | ||
Line 24: | Line 25: | ||
** [http://public.kitware.com/KWWidgets/doc/nightly/html/classvtkKWWizardWidget.htm vtkKWWizardWidget ]: a wizard widget, embedding UI (buttons) and a wizard workflow engine | ** [http://public.kitware.com/KWWidgets/doc/nightly/html/classvtkKWWizardWidget.htm vtkKWWizardWidget ]: a wizard widget, embedding UI (buttons) and a wizard workflow engine | ||
** [http://public.kitware.com/KWWidgets/doc/nightly/html/classvtkKWWizardDialog.htm vtkKWWizardDialog ]: a wizard dialog, embedding a wizard widget in a toplevel/dialog window. | ** [http://public.kitware.com/KWWidgets/doc/nightly/html/classvtkKWWizardDialog.htm vtkKWWizardDialog ]: a wizard dialog, embedding a wizard widget in a toplevel/dialog window. | ||
+ | |||
+ | == GUI implementation in Qt == | ||
+ | * [http://doc.trolltech.com/4.6/qstackedwidget.html qStackedWidget] and/or [http://doc.trolltech.com/4.6/qtablewidget.html qTabWidget] | ||
+ | * plus [http://doc.trolltech.com/4.6/qdialog.html qDialog] | ||
+ | |||
+ | == Considerations to keep in mind == | ||
+ | * Undo / redo and forward/back transitions | ||
+ | * Branching workflows / skipped states | ||
== Additional ideas and questions == | == Additional ideas and questions == | ||
** | ** |
Revision as of 18:21, 14 July 2010
Home < Projects:ARRA:SlicerEM:Developer:WorkflowManagerContents
- 1 Summary
- 2 Previous workflow manager implementation in KWWidgets
- 3 Transition from KWWidgets state machines to Qt state machines
- 4 Transition from KWWidgets workflow manager to a workflow manager using Qt's state machines
- 5 GUI implementation in Qt
- 6 Considerations to keep in mind
- 7 Additional ideas and questions
Summary
- EMSegmenter has a fairly complicated workflow
- Need a mechanism to validate user input and transition appropriately between steps of the workflow
- Should be dependent on Qt only (and not VTK)
- Current plan (subject to change) = use Qt's state machine implementation, with our own workflow manager on top
Previous workflow manager implementation in KWWidgets
- Please see the documentation here, as it is already well described
Uses:
- KWWidgets state machines - incorporates states (ex. user interaction within a workflow step, validation of the user input within a workflow step), transitions (between states), and inputs (pushed onto a queue to trigger transitions)
- KWWidgets wizard workflow - provides additional functionality to manage workflow using a state machine (ex. bundles pairs of user interaction and validation states into a workflow "step", handles a navigation stack of steps encountered along the way that triggers updates of widgets and/or dialogs)
Transition from KWWidgets state machines to Qt state machines
- Core functionality in KWWidgets state machines that would be replicated for a "straight-forward" conversion:
- Representation of
Transition from KWWidgets workflow manager to a workflow manager using Qt's state machines
- Will likely need to reimplement the four KWWidget workflow manager classes:
- vtkKWWizardStep: a wizard step
- vtkKWWizardWorkflow : a wizard workflow
- vtkKWWizardWidget : a wizard widget, embedding UI (buttons) and a wizard workflow engine
- vtkKWWizardDialog : a wizard dialog, embedding a wizard widget in a toplevel/dialog window.
GUI implementation in Qt
- qStackedWidget and/or qTabWidget
- plus qDialog
Considerations to keep in mind
- Undo / redo and forward/back transitions
- Branching workflows / skipped states