Tulip  5.0.0
Large graphs analysis and drawing
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
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 namespace tlp {
27 
28 class Graph;
29 class TLP_QT_SCOPE MouseSelector:public GLInteractorComponent {
30 public:
31  enum SelectionMode {
32  EdgesAndNodes = 0,
33  EdgesOnly,
34  NodesOnly
35  };
36 
37  MouseSelector(Qt::MouseButton button = Qt::LeftButton,
38  Qt::KeyboardModifier modifier = Qt::NoModifier,
39  SelectionMode mode = EdgesAndNodes);
40  ~MouseSelector() {}
41  bool draw(GlMainWidget *);
42  bool eventFilter(QObject *, QEvent *);
43 protected:
44  Qt::MouseButton mButton;
45  Qt::KeyboardModifier kModifier;
46  Qt::KeyboardModifiers mousePressModifier;
47  unsigned int x,y;
48  int w,h;
49  bool started;
50  Graph *graph;
51  SelectionMode _mode;
52 };
53 
54 
55 }
56 #endif
57 ///@endcond