35 #ifndef ANATOMIST_CONTROLER_CONTROL_H 36 #define ANATOMIST_CONTROLER_CONTROL_H 41 #include <qtabwidget.h> 48 class QTapAndHoldGesture;
94 Control(
int priority, std::string name );
108 const std::string&
name()
const {
return myName; }
141 if ( k.
key != key || k.
state != state )
146 {
return( !
operator == ( k ) ); }
152 if ( entry1.
key == entry2.
key )
154 return entry1.
key < entry2.
key;
194 typedef void (T:: * Callback)( );
204 Callback actionCallback;
211 virtual void execute(
int x,
int y,
int globalX,
int globalY ) = 0;
212 virtual Action* action() = 0;
220 typedef void (T:: * Callback)(
int x,
int y,
int globalX,
int globalY );
225 virtual void execute(
int x,
int y,
int globalX,
int globalY );
232 Callback actionCallback;
240 virtual void execute(
int delta,
int x,
int y,
int globalX,
int globalY ) = 0;
248 typedef void (T:: * Callback)(
int delta,
int x,
int y,
int globalX,
int globalY );
253 virtual void execute(
int delta,
int x,
int y,
int globalX,
int globalY );
259 Callback actionCallback;
274 typedef void (T:: * Callback)( );
284 Callback actionCallback;
299 typedef void (T:: * Callback)( );
309 Callback actionCallback;
316 virtual void execute(
int xOffset,
int yOffset,
int height,
int width ) = 0;
324 typedef void (T:: * Callback)(
int xOffset,
int yOffset,
int height,
int width );
329 virtual void execute(
int xOffset,
int yOffset,
int height,
int width );
334 Callback actionCallback;
341 virtual void execute(
int posX = 0,
int posY = 0,
int oldPosX = 0,
int oldPosY = 0 ) = 0;
349 typedef void (T:: * Callback)( int, int, int, int );
354 virtual void execute(
int posX = 0,
int posY = 0,
int oldPosX = 0,
int oldPosY = 0 );
359 Callback actionCallback;
383 Callback actionCallback;
390 virtual void execute(
int height,
int width,
int oldHeight,
int oldWidth ) = 0;
398 typedef void (T:: * Callback)(
int height,
int width,
int oldHeight,
404 virtual void execute(
int height,
int width,
int oldHeight,
410 Callback actionCallback;
417 virtual void execute(
bool spontaneous ) = 0;
425 typedef void (T:: * Callback)(
bool spontaneous );
430 virtual void execute(
bool spontaneous );
435 Callback actionCallback;
450 typedef void (T:: * Callback)(
bool spontaneous );
461 Callback actionCallback;
468 virtual void execute( QPinchGesture* ) = 0;
472 template <
typename T>
476 typedef void (T:: * Callback)( QPinchGesture* );
482 virtual void execute( QPinchGesture * );
487 Callback actionCallback;
494 virtual void execute( QPanGesture* ) = 0;
498 template <
typename T>
502 typedef void (T:: * Callback)( QPanGesture* );
508 virtual void execute( QPanGesture * );
513 Callback actionCallback;
520 virtual void execute( QTapGesture* ) = 0;
524 template <
typename T>
528 typedef void (T:: * Callback)( QTapGesture* );
534 virtual void execute( QTapGesture * );
539 Callback actionCallback;
546 virtual void execute( QTapAndHoldGesture* ) = 0;
550 template <
typename T>
554 typedef void (T:: * Callback)( QTapAndHoldGesture* );
560 virtual void execute( QTapAndHoldGesture * );
565 Callback actionCallback;
572 virtual void execute( QSwipeGesture* ) = 0;
576 template <
typename T>
580 typedef void (T:: * Callback)( QSwipeGesture* );
586 virtual void execute( QSwipeGesture * );
591 Callback actionCallback;
597 std::map<std::string, anatomist::ActionPtr>
actions( )
619 virtual void showEvent ( QShowEvent * event );
620 virtual void hideEvent ( QHideEvent * event );
623 #if QT_VERSION >= 0x040600 624 virtual void gestureEvent( QGestureEvent * event );
625 virtual bool pinchGesture( QPinchGesture * gesture );
626 virtual bool panGesture( QPanGesture * gesture );
627 virtual bool tapGesture( QTapGesture* gesture );
628 virtual bool tapAndHoldGesture( QTapAndHoldGesture* gesture );
629 virtual bool swipeGesture( QSwipeGesture* gesture );
633 Qt::KeyboardModifiers buttonState,
635 const std::string & name =
"" );
638 Qt::KeyboardModifiers buttonState,
640 const std::string & name =
"" );
643 Qt::KeyboardModifiers
state,
645 const std::string & name =
"" );
648 Qt::KeyboardModifiers state,
650 const std::string & name =
"" );
654 Qt::KeyboardModifiers state,
656 const std::string & name =
"" );
659 Qt::KeyboardModifiers state,
661 const std::string & name =
"" );
664 int startingKey, Qt::KeyboardModifiers startingButtonState,
666 Qt::MouseButtons longButton, Qt::KeyboardModifiers longState,
668 int endingKey, Qt::KeyboardModifiers endingButtonState,
670 bool exclusiveAction );
673 Qt::KeyboardModifiers startingButtonState,
677 bool exclusiveAction );
680 Qt::KeyboardModifiers startingButtonState,
684 Qt::KeyboardModifiers endingButtonState,
686 bool exclusiveAction,
687 float temporalStep );
729 Qt::KeyboardModifiers buttonState,
732 Qt::KeyboardModifiers buttonState);
736 Qt::KeyboardModifiers buttonState,
739 Qt::KeyboardModifiers buttonState);
743 Qt::KeyboardModifiers state,
746 Qt::KeyboardModifiers state );
751 Qt::KeyboardModifiers state,
754 Qt::KeyboardModifiers state );
759 Qt::KeyboardModifiers state,
763 Qt::KeyboardModifiers state );
767 Qt::KeyboardModifiers state,
770 Qt::KeyboardModifiers state );
773 Qt::KeyboardModifiers startingButtonState,
774 Qt::MouseButtons longButton,
775 Qt::KeyboardModifiers longState,
777 Qt::KeyboardModifiers endingButtonState );
780 Qt::KeyboardModifiers startingButtonState );
783 Qt::KeyboardModifiers startingButtonState,
785 Qt::KeyboardModifiers endingButtonState );
829 const std::string & name )
const;
831 const std::string & name )
const;
833 const std::string & name )
const;
835 const std::string & name )
const;
837 const std::string & name )
const;
861 std::map<KeyMapKey, KeyActionLink*, LessKeyMap> myKeyPressActionMap;
862 std::map<KeyMapKey, KeyActionLink*, LessKeyMap> myKeyReleaseActionMap;
863 std::map<MouseButtonMapKey, MouseActionLink*, LessMouseMap>
864 myMousePressButtonActionMap;
865 std::map<MouseButtonMapKey, MouseActionLink*, LessMouseMap>
866 myMouseReleaseButtonActionMap;
867 std::map<MouseButtonMapKey, MouseActionLink*, LessMouseMap>
868 myMouseDoubleClickButtonActionMap;
869 std::map<MouseButtonMapKey, MouseActionLink*, LessMouseMap>
870 myMouseMoveActionMap;
889 std::map<std::string, KeyActionLink*> _keyPressActionsByName;
890 std::map<std::string, KeyActionLink*> _keyReleaseActionsByName;
891 std::map<std::string, MouseActionLink*> _mousePressActionsByName;
892 std::map<std::string, MouseActionLink*> _mouseReleaseActionsByName;
893 std::map<std::string, MouseActionLink*> _mouseDoubleClickActionsByName;
894 std::map<std::string, MouseActionLink*> _mouseMoveActionsByName;
908 bool exclusiveAction );
921 void executeLong(
int x,
int y,
int globalX,
int globalY );
931 bool myExclusiveAction;
944 bool exclusiveAction );
951 {
return myStartingEvent; }
953 {
return myStartingAction; }
955 {
return myLongEvent; }
957 {
return myLongAction; }
959 {
return myEndingEvent; }
961 {
return myEndingAction; }
964 void executeStart(
int x,
int y,
int globalX,
int globalY );
965 void executeLong(
int x,
int y,
int globalX,
int globalY );
966 void executeEnd(
int x,
int y,
int globalX,
int globalY );
967 void setMouseTracking(
bool );
976 bool myExclusiveAction;
988 bool submitKeyPressEvent( QKeyEvent * event );
989 bool submitKeyReleaseEvent( QKeyEvent * event );
990 bool submitMousePressEvent( QMouseEvent * event );
991 bool submitMouseReleaseEvent( QMouseEvent * event );
992 bool submitMouseMoveEvent( QMouseEvent * event );
996 Qt::KeyboardModifiers startingButtonState,
998 Qt::MouseButtons longButton,
999 Qt::KeyboardModifiers longState,
1002 Qt::KeyboardModifiers endingButtonState,
1004 bool exclusiveAction );
1007 Qt::MouseButtons startingButton,
1008 Qt::KeyboardModifiers startingButtonState,
1012 bool exclusiveAction );
1016 Qt::KeyboardModifiers startingButtonState,
1019 Qt::KeyboardModifiers endingButtonState,
1021 bool exclusiveAction,
1022 float temporalStep );
1026 Qt::KeyboardModifiers startingButtonState,
1027 Qt::MouseButtons longButton,
1028 Qt::KeyboardModifiers longState,
1030 Qt::KeyboardModifiers endingButtonState );
1033 Qt::MouseButtons startingButton,
1034 Qt::KeyboardModifiers startingButtonState );
1038 Qt::KeyboardModifiers startingButtonState,
1040 Qt::KeyboardModifiers endingButtonState );
1042 void setMouseTracking(
bool );
1045 std::map<Control::KeyMapKey, KeyAndMouseLongEvent*, Control::LessKeyMap>
1046 myKeyAndMouseLongEventMap;
1047 std::map<Control::KeyMapKey, KeyRepetitiveEvent*, Control::LessKeyMap>
1048 myKeyRepetitiveEventMap;
1051 std::map<Control::KeyMapKey, KeyRepetitiveEvent*, Control::LessKeyMap>
1052 myActiveKeyRepetitiveEvents;
1054 MouseLongEvent* myActiveMouseLongEvent;
1058 int currentMouseGlobalX;
1059 int currentMouseGlobalY;
1073 bool exclusiveAction,
1074 float temporalStep );
1078 {
return myStartingEvent; }
1080 {
return myStartingAction; }
1081 void executeStart( );
1084 {
return myEndingEvent; }
1086 {
return myEndingAction; }
1099 bool myExclusiveAction;
1100 float myTemporalStep;
virtual ~FocusActionLinkOf()
bool enterEventSubscribe(const EnterLeaveActionLink &actionMethod)
virtual void paintEvent(QPaintEvent *)
bool operator==(const KeyMapKey &k) const
const anatomist::Control::KeyMapKey & endingEvent() const
bool mouseMoveEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
const Control::MouseButtonMapKey & endingEvent() const
bool focusOutEventUnsubscribe()
MouseActionLink * mousePressActionLinkByName(const std::string &name) const
bool showEventUnsubscribe()
virtual void moveEvent(QMoveEvent *)
bool keyPressEventUnsubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethods)
obsolete, use the other one
virtual void doAlsoOnDeselect(ActionPool *)
bool paintEventSubscribe(const PaintActionLink &actionMethod)
virtual ~TapAndHoldActionLinkOf()
bool keyAndMouseLongEventUnsubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, Qt::MouseButtons longButton, Qt::KeyboardModifiers longState, int endingKey, Qt::KeyboardModifiers endingButtonState)
virtual void eventAutoSubscription(anatomist::ActionPool *actionPool)
bool focusInEventSubscribe(const FocusActionLink &actionMethod)
virtual void dropEvent(QDropEvent *)
bool moveEventSubscribe(const MoveOrDragActionLink &actionMethod)
virtual ~SwipeActionLinkOf()
bool paintEventUnsubscribe()
virtual std::string description() const
std::map< std::string, anatomist::ActionPtr > actions()
bool wheelEventSubscribe(const WheelActionLink &actionMethod)
std::set< std::string > keyPressActionLinkNames() const
Control(int priority, std::string name)
MouseActionLink * mouseReleaseActionLinkByName(const std::string &name) const
void doOnSelect(ActionPool *pool)
bool panEventSubscribe(const PanActionLink &startMethod, const PanActionLink &moveMethod, const PanActionLink &stopMethod, const PanActionLink &cancelMethod)
KeyActionLink * keyPressActionLinkByName(const std::string &name) const
virtual void enterEvent()
bool exclusiveAction() const
bool operator!=(const KeyMapKey &k) const
virtual ~ShowHideActionLinkOf()
bool tapAndHoldEventUnsubscribe()
bool dragLeaveEventUnsubscribe()
bool panEventUnsubscribe()
bool swipeEventSubscribe(const SwipeActionLink &startMethod, const SwipeActionLink &moveMethod, const SwipeActionLink &stopMethod, const SwipeActionLink &cancelMethod)
const anatomist::Control::KeyMapKey & startingEvent() const
virtual void dragMoveEvent()
std::set< std::string > mouseDoubleClickActionLinkNames() const
const Control::MouseActionLink * startingAction() const
const Control::KeyActionLink * startingAction() const
bool tapEventSubscribe(const TapActionLink &startMethod, const TapActionLink &moveMethod, const TapActionLink &stopMethod, const TapActionLink &cancelMethod)
virtual void dragEnterEvent()
bool keyAndMouseLongEventSubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, const KeyActionLink &startingActionMethod, Qt::MouseButtons longButton, Qt::KeyboardModifiers longState, const MouseActionLink &longActionMethod, int endingKey, Qt::KeyboardModifiers endingButtonState, const KeyActionLink &endingActionMethod, bool exclusiveAction)
const anatomist::Control::KeyActionLink * endingAction() const
bool tapAndHoldEventSubscribe(const TapAndHoldActionLink &startMethod, const TapAndHoldActionLink &moveMethod, const TapAndHoldActionLink &stopMethod, const TapAndHoldActionLink &cancelMethod)
void doOnDeselect(ActionPool *pool)
bool mouseLongEventUnsubscribe(Qt::MouseButtons startingButton, Qt::KeyboardModifiers startingButtonState)
const AlgorithmCaller::LaunchExecution execute
bool wheelEventUnsubscribe()
static ControlPtr creator(int priority, const std::string &name)
virtual ~KeyActionLinkOf()
bool leaveEventSubscribe(const EnterLeaveActionLink &actionMethod)
bool pinchEventSubscribe(const PinchActionLink &startMethod, const PinchActionLink &moveMethod, const PinchActionLink &stopMethod, const PinchActionLink &cancelMethod)
virtual void leaveEvent()
bool dragMoveEventSubscribe(const MoveOrDragActionLink &actionMethod)
bool mouseReleaseButtonEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
virtual ~MoveOrDragActionLinkOf()
bool resizeEventSubscribe(const ResizeActionLink &actionMethod)
virtual ~TapActionLinkOf()
virtual ~EnterLeaveActionLinkOf()
bool focusOutEventSubscribe(const FocusActionLink &actionMethod)
bool dragEnterEventUnsubscribe()
const Control::MouseActionLink * longAction() const
virtual void showEvent(QShowEvent *event)
bool mouseDoubleClickEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
bool dragLeaveEventSubscribe(const MoveOrDragActionLink &actionMethod)
WheelActionLink * wheelActionLink() const
bool moveEventUnsubscribe()
std::list< std::string > myControlLinksDescription
std::set< std::string > mouseMoveActionLinkNames() const
bool keyRepetitiveEventUnsubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, int endingKey, Qt::KeyboardModifiers endingButtonState)
virtual void mouseDoubleClickEvent(QMouseEvent *)
bool selectionChangedEventUnsubscribe()
std::set< std::string > mouseReleaseActionLinkNames() const
const Control::MouseActionLink * longAction() const
virtual void wheelEvent(QWheelEvent *)
bool mousePressButtonEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
bool hideEventSubscribe(const ShowHideActionLink &actionMethod)
std::set< std::string > keyReleaseActionLinkNames() const
bool keyReleaseEventUnsubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethods)
obsolete, use the other one
bool dropEventUnsubscribe()
virtual ~PanActionLinkOf()
virtual ~WheelActionLinkOf()
KeyActionLink * keyReleaseActionLinkByName(const std::string &name) const
bool mousePressButtonEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
bool mouseDoubleClickEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
virtual void selectionChangedEvent()
bool exclusiveAction() const
virtual void focusInEvent()
const Control::MouseButtonMapKey & longEvent() const
virtual void doAlsoOnSelect(ActionPool *)
virtual void hideEvent(QHideEvent *event)
const Control::KeyMapKey & endingEvent() const
bool mouseLongEventSubscribe(Qt::MouseButtons startingButton, Qt::KeyboardModifiers startingButtonState, const MouseActionLink &startingActionMethod, const MouseActionLink &longActionMethod, const MouseActionLink &endingActionMethod, bool exclusiveAction)
virtual ~PinchActionLinkOf()
bool exclusiveAction() const
FocusActionLink * focusOutActionLink() const
MouseActionLink * mouseMoveActionLinkByName(const std::string &name) const
virtual void resizeEvent(QResizeEvent *)
bool operator()(MouseButtonMapKey entry1, MouseButtonMapKey entry2) const
bool selectionChangedEventSubscribe(const SelectionChangedActionLink &actionMethod)
bool pinchEventUnsubscribe()
virtual ~MouseActionLinkOf()
bool showEventSubscribe(const ShowHideActionLink &actionMethod)
const anatomist::Control::KeyActionLink * startingAction() const
bool enterEventUnsubscribe()
std::map< std::string, anatomist::ActionPtr > myActions
bool keyRepetitiveEventSubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, const KeyActionLink &startingActionMethod, int endingKey, Qt::KeyboardModifiers endingButtonState, const KeyActionLink &endingActionMethod, bool exclusiveAction, float temporalStep)
const Control::MouseButtonMapKey & longEvent() const
virtual void mouseReleaseEvent(QMouseEvent *)
virtual void mousePressEvent(QMouseEvent *)
MouseActionLink * mouseDoubleClickActionLinkByName(const std::string &name) const
FocusActionLink * focusInActionLink() const
bool dragEnterEventSubscribe(const MoveOrDragActionLink &actionMethod)
bool operator()(KeyMapKey entry1, KeyMapKey entry2) const
Qt::DropAction DropAction
bool mouseMoveEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
void setPriority(int priority)
const std::string & name() const
virtual ~SelectionChangedActionLinkOf()
const Control::MouseActionLink * endingAction() const
virtual void keyPressEvent(QKeyEvent *)
bool leaveEventUnsubscribe()
bool wheelEventUnsubscribeAll()
std::set< std::string > mousePressActionLinkNames() const
virtual void focusOutEvent()
virtual void keyReleaseEvent(QKeyEvent *)
virtual ~ResizeActionLinkOf()
const Control::KeyMapKey & startingEvent() const
bool swipeEventUnsubscribe()
virtual void dragLeaveEvent()
bool resizeEventUnsubscribe()
bool hideEventUnsubscribe()
bool mouseReleaseButtonEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
virtual void mouseMoveEvent(QMouseEvent *)
const Control::KeyActionLink * endingAction() const
bool dropEventSubscribe(const DropActionLink &actionMethod)
const Control::MouseButtonMapKey & startingEvent() const
bool focusInEventUnsubscribe()
float temporalStep() const
bool keyReleaseEventSubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethod, const std::string &name="")
bool keyPressEventSubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethod, const std::string &name="")
bool dragMoveEventUnsubscribe()
bool tapEventUnsubscribe()