Tulip  4.2.0
Better Visualization Through Research
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Groups Pages
MouseSelector.h
1 /*
2  *
3  * This file is part of Tulip (www.tulip-software.org)
4  *
5  * Authors: David Auber and the Tulip development Team
6  * from LaBRI, University of Bordeaux 1 and Inria Bordeaux - Sud Ouest
7  *
8  * Tulip is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation, either version 3
11  * of the License, or (at your option) any later version.
12  *
13  * Tulip is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  * See the GNU General Public License for more details.
17  *
18  */
19 ///@cond DOXYGEN_HIDDEN
20 
21 #ifndef MOUSESELECTION_H
22 #define MOUSESELECTION_H
23 
24 #include <tulip/GLInteractor.h>
25 
26 class QMouseEvent;
27 class QKeyEvent;
28 
29 namespace tlp {
30 
31 class Graph;
32 class TLP_QT_SCOPE MouseSelector:public GLInteractorComponent {
33 public:
34  enum SelectionMode {
35  EdgesAndNodes = 0,
36  EdgesOnly,
37  NodesOnly
38  };
39 
40  MouseSelector(Qt::MouseButton button = Qt::LeftButton,
41  Qt::KeyboardModifier modifier = Qt::NoModifier,
42  SelectionMode mode = EdgesAndNodes);
43  ~MouseSelector() {}
44  bool draw(GlMainWidget *);
45  bool eventFilter(QObject *, QEvent *);
46  InteractorComponent *clone() {
47  return new MouseSelector(mButton, kModifier);
48  }
49 protected:
50  Qt::MouseButton mButton;
51  Qt::KeyboardModifier kModifier;
52  Qt::KeyboardModifiers mousePressModifier;
53  unsigned int x,y;
54  int w,h;
55  bool started;
56  Graph *graph;
57  SelectionMode _mode;
58 };
59 
60 
61 }
62 #endif
63 ///@endcond