PulseView  0.3.0
A Qt-based sigrok GUI
mainwindow.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, write to the Free Software
18  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef PULSEVIEW_PV_MAINWINDOW_HPP
22 #define PULSEVIEW_PV_MAINWINDOW_HPP
23 
24 #include <list>
25 #include <map>
26 #include <memory>
27 
28 #include <glibmm/variant.h>
29 
30 #include <QMainWindow>
31 
32 #include "session.hpp"
33 
34 struct srd_decoder;
35 
36 class QVBoxLayout;
37 
38 namespace sigrok {
39 class InputFormat;
40 class OutputFormat;
41 }
42 
43 namespace pv {
44 
45 class DeviceManager;
46 
47 namespace toolbars {
48 class ContextBar;
49 class MainBar;
50 }
51 
52 namespace view {
53 class View;
54 }
55 
56 namespace widgets {
57 #ifdef ENABLE_DECODE
58 class DecoderMenu;
59 #endif
60 }
61 
62 class MainWindow : public QMainWindow
63 {
64  Q_OBJECT
65 
66 private:
71  static const char *SettingOpenDirectory;
72 
77  static const char *SettingSaveDirectory;
78 
79 public:
80  explicit MainWindow(DeviceManager &device_manager,
81  std::string open_file_name = std::string(),
82  std::string open_file_format = std::string(),
83  QWidget *parent = 0);
84 
85  QAction* action_open() const;
86  QAction* action_save_as() const;
87  QAction* action_save_selection_as() const;
88  QAction* action_connect() const;
89  QAction* action_quit() const;
90  QAction* action_view_zoom_in() const;
91  QAction* action_view_zoom_out() const;
92  QAction* action_view_zoom_fit() const;
93  QAction* action_view_zoom_one_to_one() const;
94  QAction* action_view_sticky_scrolling() const;
95  QAction* action_view_coloured_bg() const;
96  QAction* action_view_show_cursors() const;
97  QAction* action_about() const;
98 
99 #ifdef ENABLE_DECODE
100  QMenu* menu_decoder_add() const;
101 #endif
102 
103  void run_stop();
104 
105  void select_device(std::shared_ptr<devices::Device> device);
106 
107 public Q_SLOTS:
108  void export_file(std::shared_ptr<sigrok::OutputFormat> format,
109  bool selection_only = false);
110  void import_file(std::shared_ptr<sigrok::InputFormat> format);
111 
112 private:
113  void setup_ui();
114 
115  void select_init_device();
116 
117  void load_init_file(const std::string &file_name,
118  const std::string &format);
119 
120  void save_ui_settings();
121 
122  void restore_ui_settings();
123 
124  void session_error(const QString text, const QString info_text);
125 
129  void update_device_list();
130 
131  void load_file(QString file_name,
132  std::shared_ptr<sigrok::InputFormat> format = nullptr,
133  const std::map<std::string, Glib::VariantBase> &options =
134  std::map<std::string, Glib::VariantBase>());
135 
136  void save_selection_to_file();
137 
138 private:
139  void closeEvent(QCloseEvent *event);
140 
141  void keyReleaseEvent(QKeyEvent *event);
142 
143 private Q_SLOTS:
144  void show_session_error(
145  const QString text, const QString info_text);
146 
151 
153 
155 
157 
159 
161 
163 
165 
167 
169 
170  void add_decoder(srd_decoder *decoder);
171 
172  void capture_state_changed(int state);
173  void device_selected();
174 
175  void sticky_scrolling_changed(bool state);
176 
177  void always_zoom_to_fit_changed(bool state);
178 
179 private:
181 
183 
185 
186  QWidget *central_widget_;
187  QVBoxLayout *vertical_layout_;
188 
190 
191  QAction *const action_open_;
192  QAction *const action_save_as_;
194  QAction *const action_connect_;
195  QAction *const action_quit_;
196  QAction *const action_view_zoom_in_;
197  QAction *const action_view_zoom_out_;
198  QAction *const action_view_zoom_fit_;
201  QAction *const action_view_coloured_bg_;
203  QAction *const action_about_;
204 
205 #ifdef ENABLE_DECODE
206  QMenu *const menu_decoders_add_;
207 #endif
208 };
209 
210 } // namespace pv
211 
212 #endif // PULSEVIEW_PV_MAINWINDOW_HPP
QAction * action_view_zoom_one_to_one() const
Definition: mainwindow.cpp:170
void select_init_device()
Definition: mainwindow.cpp:565
void on_actionViewZoomIn_triggered()
Definition: mainwindow.cpp:790
void save_selection_to_file()
QAction *const action_save_selection_as_
Definition: mainwindow.hpp:193
QAction *const action_save_as_
Definition: mainwindow.hpp:192
void on_actionConnect_triggered()
Definition: mainwindow.cpp:770
QAction *const action_view_show_cursors_
Definition: mainwindow.hpp:202
void select_device(std::shared_ptr< devices::Device > device)
Definition: mainwindow.cpp:216
void sticky_scrolling_changed(bool state)
Definition: mainwindow.cpp:837
QAction * action_view_show_cursors() const
Definition: mainwindow.cpp:185
QAction *const action_connect_
Definition: mainwindow.hpp:194
static const char * SettingOpenDirectory
Definition: mainwindow.hpp:71
DeviceManager & device_manager_
Definition: mainwindow.hpp:180
void on_actionAbout_triggered()
Definition: mainwindow.cpp:831
QAction * action_view_zoom_in() const
Definition: mainwindow.cpp:155
void always_zoom_to_fit_changed(bool state)
Definition: mainwindow.cpp:842
void load_file(QString file_name, std::shared_ptr< sigrok::InputFormat > format=nullptr, const std::map< std::string, Glib::VariantBase > &options=std::map< std::string, Glib::VariantBase >())
Definition: mainwindow.cpp:683
static const char * SettingSaveDirectory
Definition: mainwindow.hpp:77
void on_actionQuit_triggered()
Definition: mainwindow.cpp:785
QAction * action_view_zoom_fit() const
Definition: mainwindow.cpp:165
void load_init_file(const std::string &file_name, const std::string &format)
Definition: mainwindow.cpp:597
QAction *const action_view_coloured_bg_
Definition: mainwindow.hpp:201
void on_actionOpen_triggered()
Definition: mainwindow.cpp:741
pv::view::View * view_
Definition: mainwindow.hpp:184
void on_actionSaveAs_triggered()
Definition: mainwindow.cpp:760
void save_ui_settings()
Definition: mainwindow.cpp:620
QAction *const action_view_zoom_one_to_one_
Definition: mainwindow.hpp:199
Session session_
Definition: mainwindow.hpp:182
void device_selected()
Definition: mainwindow.cpp:862
QVBoxLayout * vertical_layout_
Definition: mainwindow.hpp:187
QAction * action_save_selection_as() const
Definition: mainwindow.cpp:140
void on_actionViewZoomFit_triggered()
Definition: mainwindow.cpp:800
QAction * action_connect() const
Definition: mainwindow.cpp:145
toolbars::MainBar * main_bar_
Definition: mainwindow.hpp:189
void on_actionViewColouredBg_triggered()
Definition: mainwindow.cpp:815
QWidget * central_widget_
Definition: mainwindow.hpp:186
void on_actionSaveSelectionAs_triggered()
Definition: mainwindow.cpp:765
void keyReleaseEvent(QKeyEvent *event)
Definition: mainwindow.cpp:721
void capture_state_changed(int state)
Definition: mainwindow.cpp:857
void session_error(const QString text, const QString info_text)
Definition: mainwindow.cpp:670
void add_decoder(srd_decoder *decoder)
Definition: mainwindow.cpp:847
void on_actionViewZoomOut_triggered()
Definition: mainwindow.cpp:795
QAction *const action_view_sticky_scrolling_
Definition: mainwindow.hpp:200
QAction * action_view_zoom_out() const
Definition: mainwindow.cpp:160
void on_actionViewZoomOneToOne_triggered()
Definition: mainwindow.cpp:805
void closeEvent(QCloseEvent *event)
Definition: mainwindow.cpp:715
QAction * action_about() const
Definition: mainwindow.cpp:190
QAction *const action_view_zoom_fit_
Definition: mainwindow.hpp:198
QAction * action_view_sticky_scrolling() const
Definition: mainwindow.cpp:175
QAction * action_save_as() const
Definition: mainwindow.cpp:135
void show_session_error(const QString text, const QString info_text)
Definition: mainwindow.cpp:730
QAction *const action_quit_
Definition: mainwindow.hpp:195
MainWindow(DeviceManager &device_manager, std::string open_file_name=std::string(), std::string open_file_format=std::string(), QWidget *parent=0)
Definition: mainwindow.cpp:97
QAction * action_quit() const
Definition: mainwindow.cpp:150
void export_file(std::shared_ptr< sigrok::OutputFormat > format, bool selection_only=false)
Definition: mainwindow.cpp:233
void import_file(std::shared_ptr< sigrok::InputFormat > format)
Definition: mainwindow.cpp:307
QAction *const action_about_
Definition: mainwindow.hpp:203
QAction *const action_open_
Definition: mainwindow.hpp:191
QAction *const action_view_zoom_in_
Definition: mainwindow.hpp:196
void update_device_list()
Definition: mainwindow.cpp:678
void on_actionViewShowCursors_triggered()
Definition: mainwindow.cpp:820
QAction *const action_view_zoom_out_
Definition: mainwindow.hpp:197
QAction * action_view_coloured_bg() const
Definition: mainwindow.cpp:180
void restore_ui_settings()
Definition: mainwindow.cpp:655
QAction * action_open() const
Definition: mainwindow.cpp:130
void on_actionViewStickyScrolling_triggered()
Definition: mainwindow.cpp:810