ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
ecvKeySequences Class Reference

Manage key sequences used for shortcuts. More...

#include <ecvKeySequences.h>

Inheritance diagram for ecvKeySequences:
Collaboration diagram for ecvKeySequences:

Public Member Functions

ecvModalShortcutactive (const QKeySequence &keySequence) const
 
ecvModalShortcutaddModalShortcut (const QKeySequence &keySequence, QAction *action, QWidget *parent)
 
void reorder (ecvModalShortcut *target)
 
void dumpShortcuts (const QKeySequence &keySequence) const
 

Static Public Member Functions

static ecvKeySequencesinstance ()
 

Protected Slots

virtual void disableSiblings ()
 
virtual void enableNextSibling ()
 
virtual void removeModalShortcut ()
 

Protected Member Functions

 ecvKeySequences (QObject *parent)
 
 ~ecvKeySequences () override=default
 

Protected Attributes

bool m_silence
 Set true in slot implementations to avoid signal/slot recursion. More...
 

Detailed Description

Manage key sequences used for shortcuts.

ParaView-style modal shortcut manager that prevents ambiguous activation by ensuring only one listener is active for each key sequence at a time.

Key features:

  • Automatic mutual exclusion: when one shortcut is enabled, all siblings are disabled
  • Visual feedback: widgets can show which one currently owns a shortcut
  • Context awareness: shortcuts can be limited to specific widgets

Usage:

QKeySequence(Qt::Key_S), myAction, myWidget);
ecvModalShortcut * addModalShortcut(const QKeySequence &keySequence, QAction *action, QWidget *parent)
static ecvKeySequences & instance()

Definition at line 39 of file ecvKeySequences.h.

Constructor & Destructor Documentation

◆ ecvKeySequences()

ecvKeySequences::ecvKeySequences ( QObject *  parent)
protected

Definition at line 58 of file ecvKeySequences.cpp.

References CVLog::PrintVerbose().

◆ ~ecvKeySequences()

ecvKeySequences::~ecvKeySequences ( )
overrideprotecteddefault

Member Function Documentation

◆ active()

ecvModalShortcut * ecvKeySequences::active ( const QKeySequence &  keySequence) const

Return the active shortcut for a given key sequence (if any).

Definition at line 64 of file ecvKeySequences.cpp.

◆ addModalShortcut()

ecvModalShortcut * ecvKeySequences::addModalShortcut ( const QKeySequence &  keySequence,
QAction *  action,
QWidget *  parent 
)

Register a modal shortcut with the manager.

Parameters
keySequenceThe key combination to listen for
actionThe action to trigger (optional)
parentThe context widget (optional)
Returns
The created modal shortcut (owned by the manager)

Definition at line 83 of file ecvKeySequences.cpp.

References disableSiblings(), ecvModalShortcut::enabled(), CVLog::PrintVerbose(), removeModalShortcut(), ecvModalShortcut::unregister(), and CVLog::Warning().

Referenced by cvPointPickingHelper::cvPointPickingHelper().

◆ disableSiblings

void ecvKeySequences::disableSiblings ( )
protectedvirtualslot

Called when a shortcut is enabled to ensure siblings are disabled.

Definition at line 187 of file ecvKeySequences.cpp.

References m_silence, and CVLog::PrintVerbose().

Referenced by addModalShortcut().

◆ dumpShortcuts()

void ecvKeySequences::dumpShortcuts ( const QKeySequence &  keySequence) const

Dump a list of shortcuts registered for a given key sequence (debug).

Definition at line 161 of file ecvKeySequences.cpp.

References CVLog::Print(), and CVLog::PrintVerbose().

◆ enableNextSibling

void ecvKeySequences::enableNextSibling ( )
protectedvirtualslot

Not currently used. Intended for use enabling next-most-recently-used shortcut.

Definition at line 229 of file ecvKeySequences.cpp.

References m_silence, and CVLog::PrintVerbose().

◆ instance()

ecvKeySequences & ecvKeySequences::instance ( )
static

Get the singleton instance.

Definition at line 52 of file ecvKeySequences.cpp.

Referenced by cvPointPickingHelper::cvPointPickingHelper(), and ecvShortcutDecorator::eventFilter().

◆ removeModalShortcut

void ecvKeySequences::removeModalShortcut ( )
protectedvirtualslot

Called when shortcuts are deleted to disable and unregister them.

Definition at line 300 of file ecvKeySequences.cpp.

References CVLog::PrintVerbose().

Referenced by addModalShortcut().

◆ reorder()

void ecvKeySequences::reorder ( ecvModalShortcut target)

Ask the manager to reorder shortcuts so that the currently-active one becomes the "next" in line to the passed target.

** NB: This method is currently a placeholder. **

Widgets should call this method before invoking ecvModalShortcut::setEnabled in response to user input.

This method has no effect if no sibling of target is active at the time it is invoked.

Definition at line 123 of file ecvKeySequences.cpp.

References ecvModalShortcut::isEnabled(), ecvModalShortcut::keySequence(), and CVLog::PrintVerbose().

Referenced by ecvShortcutDecorator::eventFilter().

Member Data Documentation

◆ m_silence

bool ecvKeySequences::m_silence
protected

Set true in slot implementations to avoid signal/slot recursion.

Definition at line 106 of file ecvKeySequences.h.

Referenced by disableSiblings(), and enableNextSibling().


The documentation for this class was generated from the following files: