Tulip 5.7.1
Large graphs analysis and drawing
Loading...
Searching...
No Matches
MouseSelector.h
1/*
2 *
3 * This file is part of Tulip (https://tulip.labri.fr)
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
26namespace tlp {
27
28class Graph;
29class TLP_QT_SCOPE MouseSelector : public GLInteractorComponent {
30public:
31 enum SelectionMode { EdgesAndNodes = 0, EdgesOnly, NodesOnly };
32
33 MouseSelector(Qt::MouseButton button = Qt::LeftButton,
34 Qt::KeyboardModifier modifier = Qt::NoModifier, SelectionMode mode = EdgesAndNodes);
35 ~MouseSelector() override {}
36 bool draw(GlMainWidget *) override;
37 bool eventFilter(QObject *, QEvent *) override;
38
39protected:
40 Qt::MouseButton mButton;
41 Qt::KeyboardModifier kModifier;
42 Qt::KeyboardModifiers mousePressModifier;
43 unsigned int x, y;
44 int w, h;
45 bool started;
46 Graph *graph;
47 SelectionMode _mode;
48};
49} // namespace tlp
50#endif
51///@endcond