]> sigrok.org Git - pulseview.git/blame - pv/mainwindow.hpp
Make the first view own the toolbar instead of the main window
[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
d7bed479 77private:
7d5425ef
JH
78 void setup_ui();
79
93f683ad
SA
80 void save_ui_settings();
81
82 void restore_ui_settings();
83
1c4c23b8 84private:
93f683ad
SA
85 void closeEvent(QCloseEvent *event);
86
d290e89f
SA
87 virtual QMenu* createPopupMenu();
88
55547a45
SA
89 virtual bool restoreState(const QByteArray &state, int version = 0);
90
e9213170 91private Q_SLOTS:
c7b03d9d
SA
92 void on_actionViewStickyScrolling_triggered();
93
0fb9d645
SA
94 void on_actionViewColouredBg_triggered();
95
ef7e3146
JH
96 void on_actionAbout_triggered();
97
7d5425ef 98private:
8dbbc7f0 99 DeviceManager &device_manager_;
d4984fe7 100
2b81ae46 101 Session session_;
18203d86 102
25272fee
SA
103 std::map< std::shared_ptr<QDockWidget>,
104 std::shared_ptr<pv::view::View> > view_docks_;
7d5425ef 105
0f8f8c18
SA
106 std::string open_file_name_, open_file_format_;
107
c7b03d9d 108 QAction *const action_view_sticky_scrolling_;
0fb9d645 109 QAction *const action_view_coloured_bg_;
69654681 110 QAction *const action_about_;
d7bed479
JH
111};
112
51e77110
JH
113} // namespace pv
114
7a01bd36 115#endif // PULSEVIEW_PV_MAINWINDOW_HPP