Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Rubick65/dcemapper/llms.txt

Use this file to discover all available pages before exploring further.

DCEMapper is built for a keyboard-driven workflow. Every commonly used action — from stepping through slices and time frames, to activating ROI drawing tools, to toggling fullscreen — has a dedicated shortcut. Keeping your hands on the keyboard while reviewing a dataset dramatically accelerates quality control and ROI placement.

Shortcuts Reference

The table below reproduces every entry from shortcuts_dict in src/utils/misc.py:
KeyAction
Navigate to previous slice (Z-axis)
Navigate to next slice (Z-axis)
Navigate to next temporal frame
Navigate to previous temporal frame
SpaceToggle playback mode (Movie Mode)
HReset viewport to default orientation (Home)
RRestore default container dimensions
,Step back to previous zoom level
.Step forward to next zoom level
ZToggle interactive Zoom tool
MToggle interactive Pan (Move) tool
FToggle Full Screen mode
Ctrl + ZReset segmentation mask in current slice
Ctrl + EToggle elliptical ROI tool
Ctrl + RToggle rectangle ROI tool
Ctrl + PToggle polygonal ROI tool
EscapeCancel current ROI selection
TabSave current ROI

Shortcut Lifecycle

Shortcuts are re-registered every time a new file is opened. Internally, MainWindow.init_shortcuts() is called inside set_nifti(), which first calls cleanup_shortcuts() to disable and delete all existing QShortcut objects before creating the new set. This prevents duplicate activations when multiple files are loaded in sequence during the same session.

How shortcuts are initialised

def init_shortcuts(self):
    self.cleanup_shortcuts()
    shortcuts = {
        Qt.Key.Key_Left:   self.toolbar.go_back,
        Qt.Key.Key_Right:  self.toolbar.go_forward,
        Qt.Key.Key_Up:     self.update_time_from_up_key,
        Qt.Key.Key_Down:   self.update_time_from_down_key,
        Qt.Key.Key_Space:  self.toggle_movie_mode,
        Qt.Key.Key_H:      self.toolbar.home,
        Qt.Key.Key_R:      self.reset_layout,
        Qt.Key.Key_Comma:  self.toolbar.back,
        Qt.Key.Key_Period: self.toolbar.forward,
        Qt.Key.Key_Z:      self.handle_zoom_key,
        Qt.Key.Key_M:      self.handle_pan_key,
        Qt.Key.Key_F:      self.toggle_fullscreen,
        # ...ROI shortcuts...
        Qt.Key.Key_Escape: self.cancel_roi,
        Qt.Key.Key_Tab:    self.save_roi_state,
    }
    for key, callback in shortcuts.items():
        shortcut = QShortcut(QKeySequence(key), self)
        shortcut.activated.connect(callback)
        self._shortcuts[key] = shortcut

Shortcuts that are conditionally disabled

Some shortcuts are automatically disabled when they are not applicable:
Shortcut(s)Disabled when
, , SpaceA 3-D (single time-point) volume is loaded — temporal navigation is meaningless for static images.
Ctrl+ZViewing MAX RCE or TTP maps — ROI editing is not available in those read-only views.
These shortcuts are re-enabled when a 4-D DCE or RCE volume is reloaded.

Shortcuts Dialog

The full shortcuts table is also accessible at runtime via the Shortcuts menu item in the top menu bar. Clicking it opens the ShortcutsMenu dialog — a fixed 400 × 400 px window with a scrollable two-column table (Key | Action) that mirrors shortcuts_dict exactly. This is handy when learning DCEMapper or working on an unfamiliar keyboard layout.
The dialog is implemented in src/ui/file_explorer/shortcuts_menu.py as a QDialog containing a read-only QTableWidget. It can be opened and closed at any time without affecting the current analysis.

Build docs developers (and LLMs) love