There are already a couple of interactors/state machines that could be used to provide a different style of mouse interaction to CoreApp/ExtApp. We want to
- allow the user to select one of two interaction schemes (MITK/PACS) via application preferences.
- MITK scheme (as before):
- left button: center MPR here
- middle button: pan
- right button: zoom
- CTRL + left button: some other interactions e.g. for point sets
- PACS scheme (new):
- left button: one of
- center MPR here
- zoom
- pan
- level / window
- scroll sclies
- middle button: scroll slices (w/ mouse up / down)
- right button: level / window (w/ mouse up/down, left/right)
- Shift + right button: pan
- CTRL + right button: zoom
- left button: one of
- a small toolbar widget will be provided for GUI inclusion (user selection of left button action)
Logic to change schemes and current interactors/listeners will be encapsulated in a class mitk::MouseModeSwitcher.
Necessary communication with QmitkStdMultiWidget will be limited to the QmitkStdMultiWidget observing this class and acting passively.
QmitkMouseModeSwitcher(GUI?) will implement a QToolBar with a couple of buttons and communicate with mitk::MouseModeSwitcher.
New logic and GUI class will be instantiated and coupled with QmitkStdMultiWidget by the container which currently creates the QmitkStdMultiWidget. Specific instantiation of the toolbar widget will be discussed with Sascha/Michi.
Attached is a poor quality / high efficiency sketch of classes and implementation hints (German).