PulseView  unreleased development snapshot
A Qt-based sigrok GUI
viewport.hpp
Go to the documentation of this file.
1 /*
2  * This file is part of the PulseView project.
3  *
4  * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef PULSEVIEW_PV_VIEWS_TRACE_VIEWPORT_HPP
21 #define PULSEVIEW_PV_VIEWS_TRACE_VIEWPORT_HPP
22 
23 #include <boost/optional.hpp>
24 
25 #include <QPoint>
26 #include <QTimer>
27 #include <QTouchEvent>
28 
29 #include <pv/globalsettings.hpp>
30 
31 #include "pv/util.hpp"
32 #include "viewwidget.hpp"
33 
34 using std::shared_ptr;
35 using std::vector;
36 
37 class QPainter;
38 class QPaintEvent;
39 class Session;
40 
41 namespace pv {
42 namespace views {
43 namespace trace {
44 
45 class View;
46 
48 {
49  Q_OBJECT
50 
51 public:
52  explicit Viewport(View &parent);
53  ~Viewport();
54 
61  shared_ptr<ViewItem> get_mouse_over_item(const QPoint &pt);
62 
63 private:
69  void item_hover(const shared_ptr<ViewItem> &item, QPoint pos);
70 
74  void drag();
75 
80  void drag_by(const QPoint &delta);
81 
85  void drag_release();
86 
90  vector< shared_ptr<ViewItem> > items();
91 
96  bool touch_event(QTouchEvent *event);
97 
98  void paintEvent(QPaintEvent *event);
99 
100  void mouseDoubleClickEvent(QMouseEvent *event);
101 
102  void wheelEvent(QWheelEvent *event);
103 
104  void on_setting_changed(const QString &key, const QVariant &value);
105 
106 private:
107  boost::optional<pv::util::Timestamp> drag_offset_;
110 
114 };
115 
116 } // namespace trace
117 } // namespace views
118 } // namespace pv
119 
120 #endif // PULSEVIEW_PV_VIEWS_TRACE_VIEWPORT_HPP
void item_hover(const shared_ptr< ViewItem > &item, QPoint pos)
Definition: viewport.cpp:80
void mouseDoubleClickEvent(QMouseEvent *event)
Definition: viewport.cpp:247
void drag_by(const QPoint &delta)
Definition: viewport.cpp:97
T value(details::expression_node< T > *n)
Definition: exprtk.hpp:12358
shared_ptr< ViewItem > get_mouse_over_item(const QPoint &pt)
Definition: viewport.cpp:70
void paintEvent(QPaintEvent *event)
Definition: viewport.cpp:206
boost::optional< pv::util::Timestamp > drag_offset_
Definition: viewport.hpp:107
void wheelEvent(QWheelEvent *event)
Definition: viewport.cpp:264
void on_setting_changed(const QString &key, const QVariant &value)
Definition: viewport.cpp:309
vector< shared_ptr< ViewItem > > items()
Definition: viewport.cpp:114
Viewport(View &parent)
Definition: viewport.cpp:51
bool event(QEvent *event)
Definition: viewwidget.cpp:234
bool touch_event(QTouchEvent *event)
Definition: viewport.cpp:125