anatomist  5.1.2
3D neuroimaging data viewer
control.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 
35 #ifndef ANATOMIST_CONTROLER_CONTROL_H
36 #define ANATOMIST_CONTROLER_CONTROL_H
37 
39 #include <qevent.h>
40 #include <qobject.h>
41 #include <qtabwidget.h>
42 #include <qwidget.h>
43 class QGestureEvent;
44 class QPinchGesture;
45 class QPanGesture;
46 class QSwipeGesture;
47 class QTapGesture;
48 class QTapAndHoldGesture;
49 #include <list>
50 #include <map>
51 #include <set>
52 #include <string>
53 
54 
55 class QTimer;
56 class KeyRepetitiveEvent;
57 
58 namespace anatomist {
59  class Control;
60  // TO be changed
61  //typedef rc_ptr<Control> ControlPtr;
62  typedef Control * ControlPtr;
63 
64 // class ControlObserver : public QTabWidget
65 // {
66 
67 // public:
68 
69 // ControlObserver( QWidget * parent, Control * subject );
70 
71 // //void updateControlLinks();
72 
73 // void closeEvent( QCloseEvent * );
74 
75 // private:
76 // Control * mySubject;
77 // };
78 
79 
80  class Action;
81  typedef Action * ActionPtr;
82 
83  class ActionPool;
85  class LongActions;
86 
87  class Control
88  {
89  public:
90 
91  static ControlPtr creator( int priority, const std::string& name );
92 
93  // Les classes derivees de control doivent redefinir et appeler la methode eventAutoSubscription dans le constructeur;
94  Control( int priority, std::string name );
95  Control( const Control& control );
96 
97  virtual ~Control();
98 
99  // virtual ControlPtr clone( ) const = 0;
100 
101  void doOnSelect( ActionPool * pool );
102  void doOnDeselect( ActionPool * pool );
103 
104  // Can be redefined by inherited classes
105  virtual void doAlsoOnDeselect ( ActionPool *) {}
106  virtual void doAlsoOnSelect( ActionPool *) {}
107 
108  const std::string& name() const { return myName; }
109  virtual std::string description() const;
110 
111  // QPushButton * button( ) {
112  // return myButton;
113  // }
114 
115  // bool animateClick() {
116  // #ifdef ANADEBUG
117  // cerr << "Toto" << endl;
118  // cerr << "Is Button Defined" << (void *)this << endl;
119  // #endif
120  // if( myButton->isEnabled() )
121  // myButton->animateClick();
122  // else return false;
123  // return true;
124  // }
125 
126  // void enable() { myButton->setEnabled(true);}
127  // void disable() { myButton->setEnabled(false);}
128 
129  virtual void eventAutoSubscription( anatomist::ActionPool * actionPool );
130  int userLevel() const { return myUserLevel; }
131  void setUserLevel( int x ) { myUserLevel = x; }
132 
133  typedef Qt::DropAction DropAction;
134 
135  struct KeyMapKey
136  {
137  KeyMapKey( int k, int s ) : key(k), state(s) {}
138  int key;
139  int state;
140  bool operator==( const KeyMapKey& k ) const {
141  if ( k.key != key || k.state != state )
142  return false;
143  return true;
144  }
145  bool operator != ( const KeyMapKey& k ) const
146  { return( !operator == ( k ) ); }
147  };
148 
149  struct LessKeyMap
150  {
151  bool operator()( KeyMapKey entry1, KeyMapKey entry2 ) const {
152  if ( entry1.key == entry2.key )
153  return entry1.state < entry2.state;
154  return entry1.key < entry2.key;
155  }
156  int i;
157  };
158 
160  {
161  MouseButtonMapKey( int b, int s ) : button(b), state(s) {}
162  int button;
163  int state;
164  bool operator==( const MouseButtonMapKey& k ) const {
165  if ( k.button != button || k.state != state )
166  return false;
167  return true;
168  }
169  };
170 
172  {
173  bool operator()( MouseButtonMapKey entry1, MouseButtonMapKey entry2 ) const
174  {
175  if ( entry1.button == entry2.button )
176  return entry1.state < entry2.state;
177  return entry1.button < entry2.button;
178  }
179  int i;
180  };
181 
183  {
184  public:
185  virtual ~KeyActionLink( ) = 0;
186  virtual void execute( ) = 0;
187  virtual KeyActionLink* clone() const = 0;
188  };
189 
190  template<typename T>
192  {
193  public:
194  typedef void (T:: * Callback)( );
195  KeyActionLinkOf();
196  KeyActionLinkOf( anatomist::Action * action, Callback actionCb);
197  virtual ~KeyActionLinkOf() {}
198 
199  virtual void execute();
200  virtual KeyActionLink* clone() const;
201 
202  private:
203  T * actionInstance;
204  Callback actionCallback;
205  };
206 
208  {
209  public:
210  virtual ~MouseActionLink( ) = 0;
211  virtual void execute( int x, int y, int globalX, int globalY ) = 0;
212  virtual Action* action() = 0;
213  virtual MouseActionLink* clone() const = 0;
214  };
215 
216  template<typename T>
218  {
219  public:
220  typedef void (T:: * Callback)( int x, int y, int globalX, int globalY );
223  virtual ~MouseActionLinkOf() {}
224 
225  virtual void execute( int x, int y, int globalX, int globalY );
226 
227  virtual MouseActionLink* clone() const;
228  virtual Action* action();
229 
230  private:
231  T * actionInstance;
232  Callback actionCallback;
233  };
234 
235 
237  {
238  public:
239  virtual ~WheelActionLink( ) = 0;
240  virtual void execute( int delta, int x, int y, int globalX, int globalY ) = 0;
241  virtual WheelActionLink* clone() const = 0;
242  };
243 
244  template<typename T>
246  {
247  public:
248  typedef void (T:: * Callback)( int delta, int x, int y, int globalX, int globalY );
250  WheelActionLinkOf( anatomist::Action * action, Callback actionCb);
251  virtual ~WheelActionLinkOf() {}
252 
253  virtual void execute( int delta, int x, int y, int globalX, int globalY );
254 
255  virtual WheelActionLink* clone() const;
256 
257  private:
258  T * actionInstance;
259  Callback actionCallback;
260  };
261 
263  {
264  public:
265  virtual ~FocusActionLink( ) = 0;
266  virtual void execute( ) = 0;
267  virtual FocusActionLink* clone() const = 0;
268  };
269 
270  template<typename T>
272  {
273  public:
274  typedef void (T:: * Callback)( );
276  FocusActionLinkOf( anatomist::Action * action, Callback actionCb);
277  virtual ~FocusActionLinkOf() {}
278 
279  virtual void execute();
280  virtual FocusActionLink* clone() const;
281 
282  private:
283  T * actionInstance;
284  Callback actionCallback;
285  };
286 
288  {
289  public:
290  virtual ~EnterLeaveActionLink( ) = 0;
291  virtual void execute( ) = 0;
292  virtual EnterLeaveActionLink* clone() const = 0;
293  };
294 
295  template<typename T>
297  {
298  public:
299  typedef void (T:: * Callback)( );
303 
304  virtual void execute();
305  virtual EnterLeaveActionLink* clone() const;
306 
307  private:
308  T * actionInstance;
309  Callback actionCallback;
310  };
311 
313  {
314  public:
315  virtual ~PaintActionLink( ) = 0;
316  virtual void execute( int xOffset, int yOffset, int height, int width ) = 0;
317  virtual PaintActionLink* clone() const = 0;
318  };
319 
320  template<typename T>
322  {
323  public:
324  typedef void (T:: * Callback)( int xOffset, int yOffset, int height, int width );
326  PaintActionLinkOf( anatomist::Action * action, Callback actionCb);
328 
329  virtual void execute( int xOffset, int yOffset, int height, int width );
330  virtual PaintActionLink* clone() const;
331 
332  private:
333  T * actionInstance;
334  Callback actionCallback;
335  };
336 
338  {
339  public:
340  virtual ~MoveOrDragActionLink( ) = 0;
341  virtual void execute( int posX = 0, int posY = 0, int oldPosX = 0, int oldPosY = 0 ) = 0;
342  virtual MoveOrDragActionLink* clone() const = 0;
343  };
344 
345  template<typename T>
347  {
348  public:
349  typedef void (T:: * Callback)( int, int, int, int );
353 
354  virtual void execute( int posX = 0, int posY = 0, int oldPosX = 0, int oldPosY = 0 );
355  virtual MoveOrDragActionLink* clone() const;
356 
357  private:
358  T * actionInstance;
359  Callback actionCallback;
360  };
361 
363  {
364  public:
365  virtual ~DropActionLink( ) = 0;
366  virtual void execute( int posX, int posY, Control::DropAction action ) = 0;
367  virtual DropActionLink* clone() const = 0;
368  };
369 
370  template<typename T>
372  {
373  public:
374  typedef void (T:: * Callback)( int posX, int posY, Control::DropAction action );
376  DropActionLinkOf( anatomist::Action * action, Callback actionCb);
377  virtual ~DropActionLinkOf();
378 
379  virtual void execute( int posX, int posY, Control::DropAction action );
380  virtual DropActionLink* clone() const;
381  private:
382  T * actionInstance;
383  Callback actionCallback;
384  };
385 
387  {
388  public:
389  virtual ~ResizeActionLink( ) = 0;
390  virtual void execute( int height, int width, int oldHeight, int oldWidth ) = 0;
391  virtual ResizeActionLink* clone() const = 0;
392  };
393 
394  template<typename T>
396  {
397  public:
398  typedef void (T:: * Callback)( int height, int width, int oldHeight,
399  int oldWidth );
401  ResizeActionLinkOf( anatomist::Action * action, Callback actionCb);
402  virtual ~ResizeActionLinkOf() {}
403 
404  virtual void execute( int height, int width, int oldHeight,
405  int oldWidth );
406  virtual ResizeActionLink* clone() const;
407 
408  private:
409  T * actionInstance;
410  Callback actionCallback;
411  };
412 
414  {
415  public:
416  virtual ~ShowHideActionLink( ) = 0;
417  virtual void execute( bool spontaneous ) = 0;
418  virtual ShowHideActionLink* clone() const = 0;
419  };
420 
421  template<typename T>
423  {
424  public:
425  typedef void (T:: * Callback)( bool spontaneous );
427  ShowHideActionLinkOf( anatomist::Action * action, Callback actionCb);
429 
430  virtual void execute( bool spontaneous );
431  virtual ShowHideActionLink* clone() const;
432 
433  private:
434  T * actionInstance;
435  Callback actionCallback;
436  };
437 
439  {
440  public:
442  virtual void execute() = 0;
443  virtual SelectionChangedActionLink* clone() const = 0;
444  };
445 
446  template<typename T>
448  {
449  public:
450  typedef void (T:: * Callback)( bool spontaneous );
453  Callback actionCb );
455 
456  virtual void execute();
457  virtual SelectionChangedActionLink* clone() const;
458 
459  private:
460  T * actionInstance;
461  Callback actionCallback;
462  };
463 
465  {
466  public:
467  virtual ~PinchActionLink() = 0;
468  virtual void execute( QPinchGesture* ) = 0;
469  virtual PinchActionLink* clone() const = 0;
470  };
471 
472  template <typename T>
474  {
475  public:
476  typedef void (T:: * Callback)( QPinchGesture* );
479  Callback actioncb );
480  virtual ~PinchActionLinkOf() {}
481 
482  virtual void execute( QPinchGesture * );
483  virtual PinchActionLink* clone() const;
484 
485  private:
486  T * actionInstance;
487  Callback actionCallback;
488  };
489 
491  {
492  public:
493  virtual ~PanActionLink() = 0;
494  virtual void execute( QPanGesture* ) = 0;
495  virtual PanActionLink* clone() const = 0;
496  };
497 
498  template <typename T>
500  {
501  public:
502  typedef void (T:: * Callback)( QPanGesture* );
503  PanActionLinkOf();
505  Callback actioncb );
506  virtual ~PanActionLinkOf() {}
507 
508  virtual void execute( QPanGesture * );
509  virtual PanActionLink* clone() const;
510 
511  private:
512  T * actionInstance;
513  Callback actionCallback;
514  };
515 
517  {
518  public:
519  virtual ~TapActionLink() = 0;
520  virtual void execute( QTapGesture* ) = 0;
521  virtual TapActionLink* clone() const = 0;
522  };
523 
524  template <typename T>
526  {
527  public:
528  typedef void (T:: * Callback)( QTapGesture* );
529  TapActionLinkOf();
531  Callback actioncb );
532  virtual ~TapActionLinkOf() {}
533 
534  virtual void execute( QTapGesture * );
535  virtual TapActionLink* clone() const;
536 
537  private:
538  T * actionInstance;
539  Callback actionCallback;
540  };
541 
543  {
544  public:
545  virtual ~TapAndHoldActionLink() = 0;
546  virtual void execute( QTapAndHoldGesture* ) = 0;
547  virtual TapAndHoldActionLink* clone() const = 0;
548  };
549 
550  template <typename T>
552  {
553  public:
554  typedef void (T:: * Callback)( QTapAndHoldGesture* );
557  Callback actioncb );
559 
560  virtual void execute( QTapAndHoldGesture * );
561  virtual TapAndHoldActionLink* clone() const;
562 
563  private:
564  T * actionInstance;
565  Callback actionCallback;
566  };
567 
569  {
570  public:
571  virtual ~SwipeActionLink() = 0;
572  virtual void execute( QSwipeGesture* ) = 0;
573  virtual SwipeActionLink* clone() const = 0;
574  };
575 
576  template <typename T>
578  {
579  public:
580  typedef void (T:: * Callback)( QSwipeGesture* );
583  Callback actioncb );
584  virtual ~SwipeActionLinkOf() {}
585 
586  virtual void execute( QSwipeGesture * );
587  virtual SwipeActionLink* clone() const;
588 
589  private:
590  T * actionInstance;
591  Callback actionCallback;
592  };
593 
594  // ----
595 
596  int priority( ) { return myPriority; }
597  std::map<std::string, anatomist::ActionPtr> actions( )
598  { return myActions; }
599  void setPriority( int priority ) { myPriority = priority; }
600 
601  virtual void keyPressEvent( QKeyEvent *);
602  virtual void keyReleaseEvent( QKeyEvent *);
603  virtual void mousePressEvent ( QMouseEvent * );
604  virtual void mouseReleaseEvent ( QMouseEvent * );
605  virtual void mouseDoubleClickEvent ( QMouseEvent * );
606  virtual void mouseMoveEvent ( QMouseEvent * );
607  virtual void wheelEvent ( QWheelEvent * );
608  virtual void focusInEvent ( );
609  virtual void focusOutEvent ( );
610  virtual void enterEvent ( );
611  virtual void leaveEvent ( );
612  virtual void paintEvent ( QPaintEvent * );
613  virtual void moveEvent ( QMoveEvent * );
614  virtual void resizeEvent ( QResizeEvent * );
615  virtual void dragEnterEvent ( );
616  virtual void dragMoveEvent ( );
617  virtual void dragLeaveEvent ( );
618  virtual void dropEvent ( QDropEvent * );
619  virtual void showEvent ( QShowEvent * event );
620  virtual void hideEvent ( QHideEvent * event );
621  virtual void selectionChangedEvent();
622  //virtual void customEvent ( QCustomEvent * );
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 );
630 #endif
631 
632  bool keyPressEventSubscribe( int key,
633  Qt::KeyboardModifiers buttonState,
634  const KeyActionLink& actionMethod,
635  const std::string & name = "" );
636 
638  Qt::KeyboardModifiers buttonState,
639  const KeyActionLink& actionMethod,
640  const std::string & name = "" );
641 
642  bool mousePressButtonEventSubscribe( Qt::MouseButtons button,
643  Qt::KeyboardModifiers state,
644  const MouseActionLink& actionMethod,
645  const std::string & name = "" );
646 
647  bool mouseReleaseButtonEventSubscribe( Qt::MouseButtons button,
648  Qt::KeyboardModifiers state,
649  const MouseActionLink& actionMethod,
650  const std::string & name = "" );
651 
652  bool
653  mouseDoubleClickEventSubscribe( Qt::MouseButtons button,
654  Qt::KeyboardModifiers state,
655  const MouseActionLink& actionMethod,
656  const std::string & name = "" );
657 
658  bool mouseMoveEventSubscribe( Qt::MouseButtons button,
659  Qt::KeyboardModifiers state,
660  const MouseActionLink& actionMethod,
661  const std::string & name = "" );
662 
664  int startingKey, Qt::KeyboardModifiers startingButtonState,
665  const KeyActionLink& startingActionMethod,
666  Qt::MouseButtons longButton, Qt::KeyboardModifiers longState,
667  const MouseActionLink& longActionMethod,
668  int endingKey, Qt::KeyboardModifiers endingButtonState,
669  const KeyActionLink& endingActionMethod,
670  bool exclusiveAction );
671 
672  bool mouseLongEventSubscribe( Qt::MouseButtons startingButton,
673  Qt::KeyboardModifiers startingButtonState,
674  const MouseActionLink& startingActionMethod,
675  const MouseActionLink& longActionMethod,
676  const MouseActionLink& endingActionMethod,
677  bool exclusiveAction );
678 
679  bool keyRepetitiveEventSubscribe( int startingKey,
680  Qt::KeyboardModifiers startingButtonState,
681  const KeyActionLink& startingActionMethod,
682 
683  int endingKey,
684  Qt::KeyboardModifiers endingButtonState,
685  const KeyActionLink& endingActionMethod,
686  bool exclusiveAction,
687  float temporalStep );
688 
689  bool wheelEventSubscribe( const WheelActionLink& actionMethod );
691  bool focusInEventSubscribe( const FocusActionLink& actionMethod );
692  bool focusOutEventSubscribe( const FocusActionLink& actionMethod );
693  bool enterEventSubscribe( const EnterLeaveActionLink& actionMethod );
694  bool leaveEventSubscribe( const EnterLeaveActionLink& actionMethod );
695  bool paintEventSubscribe( const PaintActionLink& actionMethod );
696  bool moveEventSubscribe( const MoveOrDragActionLink& actionMethod );
697  bool resizeEventSubscribe( const ResizeActionLink& actionMethod );
698  bool dragEnterEventSubscribe( const MoveOrDragActionLink& actionMethod );
699  bool dragLeaveEventSubscribe( const MoveOrDragActionLink& actionMethod );
700  bool dragMoveEventSubscribe( const MoveOrDragActionLink& actionMethod );
701  bool dropEventSubscribe( const DropActionLink& actionMethod );
702  bool showEventSubscribe( const ShowHideActionLink& actionMethod );
703  bool hideEventSubscribe( const ShowHideActionLink& actionMethod );
705  ( const SelectionChangedActionLink& actionMethod );
706  bool pinchEventSubscribe( const PinchActionLink & startMethod,
707  const PinchActionLink & moveMethod,
708  const PinchActionLink & stopMethod,
709  const PinchActionLink & cancelMethod );
710  bool panEventSubscribe( const PanActionLink & startMethod,
711  const PanActionLink & moveMethod,
712  const PanActionLink & stopMethod,
713  const PanActionLink & cancelMethod );
714  bool swipeEventSubscribe( const SwipeActionLink & startMethod,
715  const SwipeActionLink & moveMethod,
716  const SwipeActionLink & stopMethod,
717  const SwipeActionLink & cancelMethod );
718  bool tapEventSubscribe( const TapActionLink & startMethod,
719  const TapActionLink & moveMethod,
720  const TapActionLink & stopMethod,
721  const TapActionLink & cancelMethod );
723  const TapAndHoldActionLink & moveMethod,
724  const TapAndHoldActionLink & stopMethod,
725  const TapAndHoldActionLink & cancelMethod );
726 
729  Qt::KeyboardModifiers buttonState,
730  const KeyActionLink& actionMethods);
732  Qt::KeyboardModifiers buttonState);
733 
736  Qt::KeyboardModifiers buttonState,
737  const KeyActionLink& actionMethods);
739  Qt::KeyboardModifiers buttonState);
740 
742  bool mousePressButtonEventUnsubscribe( Qt::MouseButtons button,
743  Qt::KeyboardModifiers state,
744  const MouseActionLink& actionMethods );
745  bool mousePressButtonEventUnsubscribe( Qt::MouseButtons button,
746  Qt::KeyboardModifiers state );
747 
748 
750  bool mouseReleaseButtonEventUnsubscribe( Qt::MouseButtons button,
751  Qt::KeyboardModifiers state,
752  const MouseActionLink& actionMethods );
753  bool mouseReleaseButtonEventUnsubscribe( Qt::MouseButtons button,
754  Qt::KeyboardModifiers state );
755 
757  bool
758  mouseDoubleClickEventUnsubscribe( Qt::MouseButtons button,
759  Qt::KeyboardModifiers state,
760  const MouseActionLink& actionMethods );
761  bool
762  mouseDoubleClickEventUnsubscribe( Qt::MouseButtons button,
763  Qt::KeyboardModifiers state );
764 
766  bool mouseMoveEventUnsubscribe( Qt::MouseButtons button,
767  Qt::KeyboardModifiers state,
768  const MouseActionLink& actionMethods );
769  bool mouseMoveEventUnsubscribe( Qt::MouseButtons button,
770  Qt::KeyboardModifiers state );
771 
772  bool keyAndMouseLongEventUnsubscribe( int startingKey,
773  Qt::KeyboardModifiers startingButtonState,
774  Qt::MouseButtons longButton,
775  Qt::KeyboardModifiers longState,
776  int endingKey,
777  Qt::KeyboardModifiers endingButtonState );
778 
779  bool mouseLongEventUnsubscribe( Qt::MouseButtons startingButton,
780  Qt::KeyboardModifiers startingButtonState );
781 
782  bool keyRepetitiveEventUnsubscribe( int startingKey,
783  Qt::KeyboardModifiers startingButtonState,
784  int endingKey,
785  Qt::KeyboardModifiers endingButtonState );
786 
787  bool wheelEventUnsubscribe( const WheelActionLink& actionMethod );
789  bool focusInEventUnsubscribe( const FocusActionLink& actionMethod );
791  bool focusOutEventUnsubscribe( const FocusActionLink& actionMethod );
793  bool enterEventUnsubscribe( const EnterLeaveActionLink& actionMethod );
795  bool leaveEventUnsubscribe( const EnterLeaveActionLink& actionMethod );
797  bool paintEventUnsubscribe( const PaintActionLink& actionMethod );
799  bool moveEventUnsubscribe( const MoveOrDragActionLink& actionMethod );
801  bool resizeEventUnsubscribe( const ResizeActionLink& actionMethod );
803  bool dragEnterEventUnsubscribe( const MoveOrDragActionLink& actionMethod );
805  bool dragLeaveEventUnsubscribe( const MoveOrDragActionLink& actionMethod );
807  bool dragMoveEventUnsubscribe( const MoveOrDragActionLink& actionMethod );
809  bool dropEventUnsubscribe( const DropActionLink& actionMethod );
811  bool showEventUnsubscribe( const ShowHideActionLink& actionMethod );
813  bool hideEventUnsubscribe( const ShowHideActionLink& actionMethod );
816  ( const SelectionChangedActionLink& actionMethod );
823 
824  // static bool controlFusion( const Control& control1, const Control& control2,
825  // Control& controlsFusion );
826 
827  KeyActionLink* keyPressActionLinkByName( const std::string & name ) const;
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;
841 
842  std::set<std::string> keyPressActionLinkNames() const;
843  std::set<std::string> keyReleaseActionLinkNames() const;
844  std::set<std::string> mousePressActionLinkNames() const;
845  std::set<std::string> mouseReleaseActionLinkNames() const;
846  std::set<std::string> mouseDoubleClickActionLinkNames() const;
847  std::set<std::string> mouseMoveActionLinkNames() const;
848 
849  protected :
850  std::map<std::string, anatomist::ActionPtr> myActions;
851  std::list<std::string> myControlLinksDescription;
852  private:
853  struct Private;
854 
855  int myPriority;
856  int myUserLevel;
857  std::string myName;
858 
859  //QPushButton * myButton;
860 
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;
871 
872  WheelActionLink *myWheelAction;
873  FocusActionLink *myFocusInAction;
874  FocusActionLink *myFocusOutAction;
875  EnterLeaveActionLink *myEnterAction;
876  EnterLeaveActionLink *myLeaveAction;
877  PaintActionLink *myPaintAction;
878  MoveOrDragActionLink *myMoveAction;
879  ResizeActionLink *myResizeAction;
880  MoveOrDragActionLink *myDragEnterAction;
881  MoveOrDragActionLink *myDragLeaveAction;
882  MoveOrDragActionLink *myDragMoveAction;
883  DropActionLink *myDropAction;
884  ShowHideActionLink *myShowAction;
885  ShowHideActionLink *myHideAction;
886  SelectionChangedActionLink *mySelectionChangedAction;
887  anatomist::LongActions * myLongActions;
888 
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;
895  Private *d;
896  };
897 
898 
900  {
901  public:
908  bool exclusiveAction );
910 
912  const Control::KeyMapKey& startingEvent( ) const { return myStartingEvent; }
913  const Control::KeyActionLink * startingAction( ) const { return myStartingAction; }
914  const Control::MouseButtonMapKey& longEvent( ) const { return myLongEvent; }
915  const Control::MouseActionLink * longAction( ) const { return myLongAction; }
916  const Control::KeyMapKey& endingEvent( ) const { return myEndingEvent; }
917  const Control::KeyActionLink * endingAction( ) const { return myEndingAction; }
918  bool exclusiveAction() const { return myExclusiveAction; }
919 
920  void executeStart();
921  void executeLong( int x, int y, int globalX, int globalY );
922  void executeEnd();
923 
924  private:
925  Control::KeyMapKey myStartingEvent;
926  Control::KeyActionLink * myStartingAction;
927  Control::MouseButtonMapKey myLongEvent;
928  Control::MouseActionLink * myLongAction;
929  Control::KeyMapKey myEndingEvent;
930  Control::KeyActionLink * myEndingAction;
931  bool myExclusiveAction;
932  };
933 
934 
936  {
937  public:
944  bool exclusiveAction );
945 
947 
949 
951  { return myStartingEvent; }
953  { return myStartingAction; }
955  { return myLongEvent; }
957  { return myLongAction; }
959  { return myEndingEvent; }
961  { return myEndingAction; }
962  bool exclusiveAction() const { return myExclusiveAction; }
963 
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 );
968 
969  private:
970  Control::MouseButtonMapKey myStartingEvent;
971  Control::MouseActionLink * myStartingAction;
972  Control::MouseButtonMapKey myLongEvent;
973  Control::MouseActionLink * myLongAction;
974  Control::MouseButtonMapKey myEndingEvent;
975  Control::MouseActionLink * myEndingAction;
976  bool myExclusiveAction;
977  };
978 
979 
980  class LongActions
981  {
982  public:
985 
986  void reset();
987 
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 );
993 
995  int startingKey,
996  Qt::KeyboardModifiers startingButtonState,
997  const Control::KeyActionLink& startingActionMethod,
998  Qt::MouseButtons longButton,
999  Qt::KeyboardModifiers longState,
1000  const Control::MouseActionLink& longActionMethod,
1001  int endingKey,
1002  Qt::KeyboardModifiers endingButtonState,
1003  const Control::KeyActionLink& endingActionMethod,
1004  bool exclusiveAction );
1005 
1007  Qt::MouseButtons startingButton,
1008  Qt::KeyboardModifiers startingButtonState,
1009  const Control::MouseActionLink& startingActionMethod,
1010  const Control::MouseActionLink& longActionMethod,
1011  const Control::MouseActionLink& endingActionMethod,
1012  bool exclusiveAction );
1013 
1015  int startingKey,
1016  Qt::KeyboardModifiers startingButtonState,
1017  const Control::KeyActionLink& startingActionMethod,
1018  int endingKey,
1019  Qt::KeyboardModifiers endingButtonState,
1020  const Control::KeyActionLink& endingActionMethod,
1021  bool exclusiveAction,
1022  float temporalStep );
1023 
1025  int startingKey,
1026  Qt::KeyboardModifiers startingButtonState,
1027  Qt::MouseButtons longButton,
1028  Qt::KeyboardModifiers longState,
1029  int endingKey,
1030  Qt::KeyboardModifiers endingButtonState );
1031 
1033  Qt::MouseButtons startingButton,
1034  Qt::KeyboardModifiers startingButtonState );
1035 
1037  int startingKey,
1038  Qt::KeyboardModifiers startingButtonState,
1039  int endingKey,
1040  Qt::KeyboardModifiers endingButtonState );
1041 
1042  void setMouseTracking( bool );
1043 
1044  private:
1045  std::map<Control::KeyMapKey, KeyAndMouseLongEvent*, Control::LessKeyMap>
1046  myKeyAndMouseLongEventMap;
1047  std::map<Control::KeyMapKey, KeyRepetitiveEvent*, Control::LessKeyMap>
1048  myKeyRepetitiveEventMap;
1050  Control::LessMouseMap> myMouseLongEventMap;
1051  std::map<Control::KeyMapKey, KeyRepetitiveEvent*, Control::LessKeyMap>
1052  myActiveKeyRepetitiveEvents;
1053  KeyAndMouseLongEvent* myActiveKeyAndMouseLongEvent;
1054  MouseLongEvent* myActiveMouseLongEvent;
1055 
1056  int currentMouseX;
1057  int currentMouseY;
1058  int currentMouseGlobalX;
1059  int currentMouseGlobalY;
1060 
1061  };
1062 }
1063 
1064 class KeyRepetitiveEvent : public QObject
1065 {
1066  Q_OBJECT
1067 
1068 public:
1073  bool exclusiveAction,
1074  float temporalStep );
1076 
1078  { return myStartingEvent; }
1080  { return myStartingAction; }
1081  void executeStart( );
1082  void executeEnd( );
1084  { return myEndingEvent; }
1086  { return myEndingAction; }
1087  bool exclusiveAction( ) const { return myExclusiveAction; }
1088  float temporalStep( ) const { return myTemporalStep; }
1089 
1090 private slots:
1091  void timeout();
1092 
1093 private:
1094  anatomist::Control::KeyMapKey myStartingEvent;
1095  anatomist::Control::KeyActionLink * myStartingAction;
1096  anatomist::Control::KeyMapKey myEndingEvent;
1097  anatomist::Control::KeyActionLink * myEndingAction;
1098 
1099  bool myExclusiveAction;
1100  float myTemporalStep;
1101  QTimer * myTimer;
1102 };
1103 
1104 // class MouseRepetitiveEvent{
1105 // public:
1106 // MouseRepetitiveEvent( Control::MouseButtonMapKey startingEvent, Control::MouseActionLink * startingAction,
1107 // Control::MouseButtonMapKey endingEvent, Control::MouseActionLink * endingAction,
1108 // bool exclusiveAction );
1109 // private:
1110 // void timeOut();
1111 // Control::MouseButtonMapKey myStartingEvent;
1112 // Control::MouseActionLink * myStartingAction;
1113 // Control::MouseButtonMapKey myEndingEvent;
1114 // Control::MouseActionLink * myEndingAction;
1115 // bool myExclusiveActionnnn;
1116 // Qtimer * myTimer;
1117 // };
1118 
1119 #endif
#define slots
const anatomist::Control::KeyMapKey & endingEvent() const
Definition: control.h:1083
float temporalStep() const
Definition: control.h:1088
bool exclusiveAction() const
Definition: control.h:1087
const anatomist::Control::KeyActionLink * startingAction() const
Definition: control.h:1079
KeyRepetitiveEvent(const anatomist::Control::KeyMapKey &startingEvent, const anatomist::Control::KeyActionLink &startingAction, const anatomist::Control::KeyMapKey &endingEvent, const anatomist::Control::KeyActionLink &endingAction, bool exclusiveAction, float temporalStep)
const anatomist::Control::KeyActionLink * endingAction() const
Definition: control.h:1085
const anatomist::Control::KeyMapKey & startingEvent() const
Definition: control.h:1077
void(T::* Callback)(int posX, int posY, Control::DropAction action)
Definition: control.h:374
virtual DropActionLink * clone() const
Definition: control_d.h:278
virtual void execute(int posX, int posY, Control::DropAction action)
Definition: control_d.h:270
virtual EnterLeaveActionLink * clone() const
Definition: control_d.h:191
virtual FocusActionLink * clone() const
Definition: control_d.h:163
virtual KeyActionLink * clone() const
Definition: control_d.h:68
virtual void execute(int x, int y, int globalX, int globalY)
Definition: control_d.h:97
virtual MouseActionLink * clone() const
Definition: control_d.h:105
void(T::* Callback)(int x, int y, int globalX, int globalY)
Definition: control.h:220
void(T::* Callback)(int, int, int, int)
Definition: control.h:349
virtual MoveOrDragActionLink * clone() const
Definition: control_d.h:249
virtual void execute(int posX=0, int posY=0, int oldPosX=0, int oldPosY=0)
Definition: control_d.h:241
void(T::* Callback)(int xOffset, int yOffset, int height, int width)
Definition: control.h:324
virtual PaintActionLink * clone() const
Definition: control_d.h:220
virtual void execute(int xOffset, int yOffset, int height, int width)
Definition: control_d.h:212
virtual PanActionLink * clone() const
Definition: control_d.h:433
virtual void execute(QPanGesture *)
Definition: control_d.h:425
void(T::* Callback)(QPanGesture *)
Definition: control.h:502
virtual PinchActionLink * clone() const
Definition: control_d.h:400
void(T::* Callback)(QPinchGesture *)
Definition: control.h:476
virtual void execute(QPinchGesture *)
Definition: control_d.h:392
virtual void execute(int height, int width, int oldHeight, int oldWidth)
Definition: control_d.h:298
virtual ResizeActionLink * clone() const
Definition: control_d.h:306
void(T::* Callback)(int height, int width, int oldHeight, int oldWidth)
Definition: control.h:398
virtual SelectionChangedActionLink * clone() const
Definition: control_d.h:367
void(T::* Callback)(bool spontaneous)
Definition: control.h:450
virtual ShowHideActionLink * clone() const
Definition: control_d.h:334
void(T::* Callback)(bool spontaneous)
Definition: control.h:425
virtual void execute(bool spontaneous)
Definition: control_d.h:326
virtual SwipeActionLink * clone() const
Definition: control_d.h:466
virtual void execute(QSwipeGesture *)
Definition: control_d.h:458
void(T::* Callback)(QSwipeGesture *)
Definition: control.h:580
void(T::* Callback)(QTapGesture *)
Definition: control.h:528
virtual TapActionLink * clone() const
Definition: control_d.h:499
virtual void execute(QTapGesture *)
Definition: control_d.h:491
virtual TapAndHoldActionLink * clone() const
Definition: control_d.h:532
void(T::* Callback)(QTapAndHoldGesture *)
Definition: control.h:554
virtual void execute(QTapAndHoldGesture *)
Definition: control_d.h:524
void(T::* Callback)(int delta, int x, int y, int globalX, int globalY)
Definition: control.h:248
virtual void execute(int delta, int x, int y, int globalX, int globalY)
Definition: control_d.h:126
virtual WheelActionLink * clone() const
Definition: control_d.h:134
int userLevel() const
Definition: control.h:130
bool dragEnterEventSubscribe(const MoveOrDragActionLink &actionMethod)
bool paintEventUnsubscribe(const PaintActionLink &actionMethod)
bool hideEventUnsubscribe()
virtual void hideEvent(QHideEvent *event)
bool mouseReleaseButtonEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
bool mouseDoubleClickEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
bool dragMoveEventSubscribe(const MoveOrDragActionLink &actionMethod)
bool hideEventSubscribe(const ShowHideActionLink &actionMethod)
bool selectionChangedEventUnsubscribe()
KeyActionLink * keyPressActionLinkByName(const std::string &name) const
bool tapEventSubscribe(const TapActionLink &startMethod, const TapActionLink &moveMethod, const TapActionLink &stopMethod, const TapActionLink &cancelMethod)
bool dragEnterEventUnsubscribe(const MoveOrDragActionLink &actionMethod)
bool tapEventUnsubscribe()
bool selectionChangedEventUnsubscribe(const SelectionChangedActionLink &actionMethod)
bool mouseMoveEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state)
bool pinchEventSubscribe(const PinchActionLink &startMethod, const PinchActionLink &moveMethod, const PinchActionLink &stopMethod, const PinchActionLink &cancelMethod)
bool tapAndHoldEventSubscribe(const TapAndHoldActionLink &startMethod, const TapAndHoldActionLink &moveMethod, const TapAndHoldActionLink &stopMethod, const TapAndHoldActionLink &cancelMethod)
bool pinchEventUnsubscribe()
bool keyPressEventSubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethod, const std::string &name="")
bool moveEventSubscribe(const MoveOrDragActionLink &actionMethod)
virtual void mousePressEvent(QMouseEvent *)
bool mousePressButtonEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
virtual void eventAutoSubscription(anatomist::ActionPool *actionPool)
Control(const Control &control)
bool keyPressEventUnsubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethods)
obsolete, use the other one
bool keyPressEventUnsubscribe(int key, Qt::KeyboardModifiers buttonState)
bool mousePressButtonEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state)
bool dragMoveEventUnsubscribe(const MoveOrDragActionLink &actionMethod)
Qt::DropAction DropAction
Definition: control.h:133
bool showEventSubscribe(const ShowHideActionLink &actionMethod)
virtual void mouseReleaseEvent(QMouseEvent *)
std::set< std::string > keyReleaseActionLinkNames() const
MouseActionLink * mouseMoveActionLinkByName(const std::string &name) const
bool dropEventUnsubscribe(const DropActionLink &actionMethod)
bool leaveEventSubscribe(const EnterLeaveActionLink &actionMethod)
virtual void keyPressEvent(QKeyEvent *)
MouseActionLink * mousePressActionLinkByName(const std::string &name) const
virtual void moveEvent(QMoveEvent *)
bool keyReleaseEventUnsubscribe(int key, Qt::KeyboardModifiers buttonState)
bool dragEnterEventUnsubscribe()
bool moveEventUnsubscribe(const MoveOrDragActionLink &actionMethod)
bool mouseReleaseButtonEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state)
virtual void dragEnterEvent()
bool panEventUnsubscribe()
virtual void wheelEvent(QWheelEvent *)
bool mouseDoubleClickEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
bool mouseLongEventUnsubscribe(Qt::MouseButtons startingButton, Qt::KeyboardModifiers startingButtonState)
bool focusOutEventSubscribe(const FocusActionLink &actionMethod)
bool showEventUnsubscribe()
bool wheelEventUnsubscribe(const WheelActionLink &actionMethod)
bool wheelEventUnsubscribeAll()
bool enterEventSubscribe(const EnterLeaveActionLink &actionMethod)
bool hideEventUnsubscribe(const ShowHideActionLink &actionMethod)
virtual void keyReleaseEvent(QKeyEvent *)
virtual std::string description() const
bool mouseDoubleClickEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state)
bool focusInEventSubscribe(const FocusActionLink &actionMethod)
bool resizeEventUnsubscribe()
bool keyReleaseEventSubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethod, const std::string &name="")
bool keyAndMouseLongEventUnsubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, Qt::MouseButtons longButton, Qt::KeyboardModifiers longState, int endingKey, Qt::KeyboardModifiers endingButtonState)
bool mousePressButtonEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
bool wheelEventSubscribe(const WheelActionLink &actionMethod)
Control(int priority, std::string name)
bool showEventUnsubscribe(const ShowHideActionLink &actionMethod)
virtual void selectionChangedEvent()
KeyActionLink * keyReleaseActionLinkByName(const std::string &name) const
std::set< std::string > mousePressActionLinkNames() const
bool resizeEventSubscribe(const ResizeActionLink &actionMethod)
virtual void focusOutEvent()
bool resizeEventUnsubscribe(const ResizeActionLink &actionMethod)
bool swipeEventUnsubscribe()
bool leaveEventUnsubscribe()
bool keyRepetitiveEventSubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, const KeyActionLink &startingActionMethod, int endingKey, Qt::KeyboardModifiers endingButtonState, const KeyActionLink &endingActionMethod, bool exclusiveAction, float temporalStep)
bool mouseReleaseButtonEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
bool swipeEventSubscribe(const SwipeActionLink &startMethod, const SwipeActionLink &moveMethod, const SwipeActionLink &stopMethod, const SwipeActionLink &cancelMethod)
void setUserLevel(int x)
Definition: control.h:131
virtual void paintEvent(QPaintEvent *)
std::map< std::string, anatomist::ActionPtr > myActions
Definition: control.h:850
virtual void dragLeaveEvent()
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)
bool enterEventUnsubscribe()
void setPriority(int priority)
Definition: control.h:599
bool dragLeaveEventUnsubscribe(const MoveOrDragActionLink &actionMethod)
virtual void doAlsoOnDeselect(ActionPool *)
Definition: control.h:105
bool dropEventUnsubscribe()
std::set< std::string > mouseReleaseActionLinkNames() const
MouseActionLink * mouseDoubleClickActionLinkByName(const std::string &name) const
bool dropEventSubscribe(const DropActionLink &actionMethod)
virtual void doAlsoOnSelect(ActionPool *)
Definition: control.h:106
virtual void showEvent(QShowEvent *event)
bool wheelEventUnsubscribe()
virtual void dropEvent(QDropEvent *)
bool panEventSubscribe(const PanActionLink &startMethod, const PanActionLink &moveMethod, const PanActionLink &stopMethod, const PanActionLink &cancelMethod)
virtual void focusInEvent()
virtual void resizeEvent(QResizeEvent *)
bool enterEventUnsubscribe(const EnterLeaveActionLink &actionMethod)
std::set< std::string > mouseMoveActionLinkNames() const
bool keyRepetitiveEventUnsubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, int endingKey, Qt::KeyboardModifiers endingButtonState)
bool focusInEventUnsubscribe(const FocusActionLink &actionMethod)
bool paintEventUnsubscribe()
std::map< std::string, anatomist::ActionPtr > actions()
Definition: control.h:597
virtual void enterEvent()
virtual void mouseMoveEvent(QMouseEvent *)
bool dragLeaveEventUnsubscribe()
bool keyReleaseEventUnsubscribe(int key, Qt::KeyboardModifiers buttonState, const KeyActionLink &actionMethods)
obsolete, use the other one
FocusActionLink * focusOutActionLink() const
WheelActionLink * wheelActionLink() const
bool moveEventUnsubscribe()
virtual void mouseDoubleClickEvent(QMouseEvent *)
bool mouseMoveEventSubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethod, const std::string &name="")
virtual void dragMoveEvent()
bool selectionChangedEventSubscribe(const SelectionChangedActionLink &actionMethod)
void doOnSelect(ActionPool *pool)
const std::string & name() const
Definition: control.h:108
bool tapAndHoldEventUnsubscribe()
FocusActionLink * focusInActionLink() const
bool focusOutEventUnsubscribe(const FocusActionLink &actionMethod)
bool dragMoveEventUnsubscribe()
std::set< std::string > keyPressActionLinkNames() const
virtual void leaveEvent()
bool dragLeaveEventSubscribe(const MoveOrDragActionLink &actionMethod)
std::set< std::string > mouseDoubleClickActionLinkNames() const
bool mouseLongEventSubscribe(Qt::MouseButtons startingButton, Qt::KeyboardModifiers startingButtonState, const MouseActionLink &startingActionMethod, const MouseActionLink &longActionMethod, const MouseActionLink &endingActionMethod, bool exclusiveAction)
bool paintEventSubscribe(const PaintActionLink &actionMethod)
static ControlPtr creator(int priority, const std::string &name)
void doOnDeselect(ActionPool *pool)
std::list< std::string > myControlLinksDescription
Definition: control.h:851
bool focusInEventUnsubscribe()
MouseActionLink * mouseReleaseActionLinkByName(const std::string &name) const
bool leaveEventUnsubscribe(const EnterLeaveActionLink &actionMethod)
bool mouseMoveEventUnsubscribe(Qt::MouseButtons button, Qt::KeyboardModifiers state, const MouseActionLink &actionMethods)
obsolete, use the other one
bool focusOutEventUnsubscribe()
KeyAndMouseLongEvent(const KeyAndMouseLongEvent &)
const Control::MouseActionLink * longAction() const
Definition: control.h:915
KeyAndMouseLongEvent(const Control::KeyMapKey &startingEvent, const Control::KeyActionLink &startingAction, const Control::MouseButtonMapKey &longEvent, const Control::MouseActionLink &longAction, const Control::KeyMapKey &endingEvent, const Control::KeyActionLink &endingAction, bool exclusiveAction)
const Control::KeyActionLink * startingAction() const
Definition: control.h:913
const Control::KeyMapKey & endingEvent() const
Definition: control.h:916
const Control::MouseButtonMapKey & longEvent() const
Definition: control.h:914
const Control::KeyActionLink * endingAction() const
Definition: control.h:917
const Control::KeyMapKey & startingEvent() const
Definition: control.h:912
void executeLong(int x, int y, int globalX, int globalY)
bool submitKeyReleaseEvent(QKeyEvent *event)
bool mouseLongEventSubscribe(Qt::MouseButtons startingButton, Qt::KeyboardModifiers startingButtonState, const Control::MouseActionLink &startingActionMethod, const Control::MouseActionLink &longActionMethod, const Control::MouseActionLink &endingActionMethod, bool exclusiveAction)
bool keyAndMouseLongEventUnsubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, Qt::MouseButtons longButton, Qt::KeyboardModifiers longState, int endingKey, Qt::KeyboardModifiers endingButtonState)
bool keyAndMouseLongEventSubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, const Control::KeyActionLink &startingActionMethod, Qt::MouseButtons longButton, Qt::KeyboardModifiers longState, const Control::MouseActionLink &longActionMethod, int endingKey, Qt::KeyboardModifiers endingButtonState, const Control::KeyActionLink &endingActionMethod, bool exclusiveAction)
bool submitMouseReleaseEvent(QMouseEvent *event)
bool submitMouseMoveEvent(QMouseEvent *event)
bool mouseLongEventUnsubscribe(Qt::MouseButtons startingButton, Qt::KeyboardModifiers startingButtonState)
bool submitMousePressEvent(QMouseEvent *event)
void setMouseTracking(bool)
bool keyRepetitiveEventSubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, const Control::KeyActionLink &startingActionMethod, int endingKey, Qt::KeyboardModifiers endingButtonState, const Control::KeyActionLink &endingActionMethod, bool exclusiveAction, float temporalStep)
bool submitKeyPressEvent(QKeyEvent *event)
bool keyRepetitiveEventUnsubscribe(int startingKey, Qt::KeyboardModifiers startingButtonState, int endingKey, Qt::KeyboardModifiers endingButtonState)
const Control::MouseButtonMapKey & longEvent() const
Definition: control.h:954
const Control::MouseButtonMapKey & endingEvent() const
Definition: control.h:958
const Control::MouseActionLink * endingAction() const
Definition: control.h:960
MouseLongEvent(const MouseLongEvent &event)
bool exclusiveAction() const
Definition: control.h:962
void executeLong(int x, int y, int globalX, int globalY)
MouseLongEvent(const Control::MouseButtonMapKey &startingEvent, const Control::MouseActionLink &startingAction, const Control::MouseButtonMapKey &longEvent, const Control::MouseActionLink &longAction, const Control::MouseButtonMapKey &endingEvent, const Control::MouseActionLink &endingAction, bool exclusiveAction)
const Control::MouseActionLink * startingAction() const
Definition: control.h:952
void executeEnd(int x, int y, int globalX, int globalY)
void executeStart(int x, int y, int globalX, int globalY)
const Control::MouseButtonMapKey & startingEvent() const
Definition: control.h:950
const Control::MouseActionLink * longAction() const
Definition: control.h:956
Action * ActionPtr
Definition: action.h:45
Control * ControlPtr
Definition: control.h:59
bool operator==(const KeyMapKey &k) const
Definition: control.h:140
bool operator!=(const KeyMapKey &k) const
Definition: control.h:145
bool operator()(KeyMapKey entry1, KeyMapKey entry2) const
Definition: control.h:151
bool operator()(MouseButtonMapKey entry1, MouseButtonMapKey entry2) const
Definition: control.h:173
bool operator==(const MouseButtonMapKey &k) const
Definition: control.h:164