Skip to content

Input Action Mapping & Shortcut Customization UI - #66

Open
alemuntoni wants to merge 30 commits into
cnr-isti-vclab:mainfrom
alemuntoni:save_settings
Open

Input Action Mapping & Shortcut Customization UI#66
alemuntoni wants to merge 30 commits into
cnr-isti-vclab:mainfrom
alemuntoni:save_settings

Conversation

@alemuntoni

Copy link
Copy Markdown
Member

This PR completely overhauls how input shortcuts are managed and introduces a fully featured Qt UI to let users view, edit, and serialize custom key bindings in the Settings Dialog.

Key Features & Changes:

  • New InputActionMap Architecture: Replaces the old BindingMap with InputActionMap and AbstractInputActionMap, providing a much more flexible infrastructure for input filtering and mapping.
  • Shortcuts Settings Tab: Introduces a new tab in the SettingsDialog with a dedicated UI (InputBindingsWidget & ShortcutButton) to view and customize keyboard and mouse shortcuts.
  • Enhanced Shortcut Support:
    • Allows assigning multiple shortcuts to a single action.
    • Adds the ability to completely disable specific actions.
    • Implements collision warnings when users try to assign a shortcut that is already in use.
  • Double Click & Mouse Atomic Actions: Introduces proper management for double click inputs and mouse atomic actions (e.g., focus), fixing drag event distinctions between single and double clicks.
  • Serialization & Persistence: Custom shortcuts can now be serialized and deserialized to/from the configuration file, allowing user preferences to persist across sessions.
  • Refactoring & Cleanups:
    • Action maps are now cleanly exposed and integrated across all settings classes (ViewerSettings, TrackballSettings, SelectionEditorSettings, MeshSelectorEditorSettings).
    • Embedded actions in AbstractViewerDrawer have been moved to global actions.

# Conflicts:
#	vclib/render/include/vclib/render/settings/trackball_settings.h
#	vclib/render/src/vclib/qt/gui/settings_dialog.cpp
# Conflicts:
#	vclib/render/src/vclib/qt/mesh_viewer.cpp
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant