]> sigrok.org Git - pulseview.git/blame - pv/mainwindow.hpp
Session: Fix signal mappings for the views
[pulseview.git] / pv / mainwindow.hpp
CommitLineData
d7bed479 1/*
b3f22de0 2 * This file is part of the PulseView project.
d7bed479
JH
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, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 */
20
7a01bd36
JH
21#ifndef PULSEVIEW_PV_MAINWINDOW_HPP
22#define PULSEVIEW_PV_MAINWINDOW_HPP
d7bed479 23
18203d86 24#include <list>
dd3fd4df 25#include <map>
f9abf97e 26#include <memory>
b1264f56 27
d7bed479
JH
28#include <QMainWindow>
29
f65cd27b 30#include "session.hpp"
7cd2b5f3 31#include "view/viewwidget.hpp"
2953961c 32
269528f5
JH
33struct srd_decoder;
34
7d5425ef 35class QVBoxLayout;
7d5425ef 36
51e77110
JH
37namespace pv {
38
107ca6d3 39class DeviceManager;
94574501 40
f4c92e1c 41namespace toolbars {
404aad0e 42class ContextBar;
7c657094 43class MainBar;
f4c92e1c 44}
51e77110
JH
45
46namespace view {
47class View;
48}
49
f0d37dab 50namespace widgets {
e79171dc 51#ifdef ENABLE_DECODE
f0d37dab 52class DecoderMenu;
19be0af1 53#endif
f0d37dab
JH
54}
55
d7bed479
JH
56class MainWindow : public QMainWindow
57{
58 Q_OBJECT
59
60public:
107ca6d3 61 explicit MainWindow(DeviceManager &device_manager,
e3c79b07
JH
62 std::string open_file_name = std::string(),
63 std::string open_file_format = std::string(),
1d478458 64 QWidget *parent = 0);
d7bed479 65
47e9e7bb
SA
66 ~MainWindow();
67
c7b03d9d 68 QAction* action_view_sticky_scrolling() const;
0fb9d645 69 QAction* action_view_coloured_bg() const;
69654681
JH
70 QAction* action_about() const;
71
168bd8ac
SA
72 std::shared_ptr<pv::view::View> get_active_view() const;
73
7cd2b5f3
SA
74 std::shared_ptr<pv::view::View> add_view(const QString &title,
75 view::ViewType type, Session &session);
76
101e7a9b
SA
77 std::shared_ptr<Session> add_session();
78
36a8185e
SA
79 void remove_session(std::shared_ptr<Session> session);
80
d7bed479 81private:
7d5425ef
JH
82 void setup_ui();
83
93f683ad
SA
84 void save_ui_settings();
85
86 void restore_ui_settings();
87
1c4c23b8 88private:
93f683ad
SA
89 void closeEvent(QCloseEvent *event);
90
d290e89f
SA
91 virtual QMenu* createPopupMenu();
92
55547a45
SA
93 virtual bool restoreState(const QByteArray &state, int version = 0);
94
e9213170 95private Q_SLOTS:
3a21afa6
SA
96 void on_add_view(const QString &title, view::ViewType type,
97 Session *session);
98
c9da5118
SA
99 void on_new_session();
100 void on_new_view(Session *session);
36a8185e 101 void on_view_close_clicked();
c9da5118 102
c7b03d9d
SA
103 void on_actionViewStickyScrolling_triggered();
104
0fb9d645
SA
105 void on_actionViewColouredBg_triggered();
106
ef7e3146
JH
107 void on_actionAbout_triggered();
108
7d5425ef 109private:
8dbbc7f0 110 DeviceManager &device_manager_;
d4984fe7 111
36a8185e 112 std::list< std::shared_ptr<Session> > sessions_;
18203d86 113
25272fee
SA
114 std::map< std::shared_ptr<QDockWidget>,
115 std::shared_ptr<pv::view::View> > view_docks_;
7d5425ef 116
c7b03d9d 117 QAction *const action_view_sticky_scrolling_;
0fb9d645 118 QAction *const action_view_coloured_bg_;
69654681 119 QAction *const action_about_;
d7bed479
JH
120};
121
51e77110
JH
122} // namespace pv
123
7a01bd36 124#endif // PULSEVIEW_PV_MAINWINDOW_HPP