2 * This file is part of the PulseView project.
4 * Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
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.
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.
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/>.
20 #ifndef PULSEVIEW_PV_TOOLBARS_MAINBAR_HPP
21 #define PULSEVIEW_PV_TOOLBARS_MAINBAR_HPP
27 #include <glibmm/variant.h>
30 #include <QDoubleSpinBox>
33 #include <QToolButton>
35 #include <pv/session.hpp>
36 #include <pv/views/trace/standardbar.hpp>
37 #include <pv/widgets/devicetoolbutton.hpp>
38 #include <pv/widgets/popuptoolbutton.hpp>
39 #include <pv/widgets/sweeptimingwidget.hpp>
41 using std::shared_ptr
;
49 Q_DECLARE_METATYPE(shared_ptr
<sigrok::Device
>)
66 class MainBar
: public pv::views::trace::StandardBar
71 static const uint64_t MinSampleCount
;
72 static const uint64_t MaxSampleCount
;
73 static const uint64_t DefaultSampleCount
;
76 * Name of the setting used to remember the directory
77 * containing the last file that was opened.
79 static const char *SettingOpenDirectory
;
82 * Name of the setting used to remember the directory
83 * containing the last file that was saved.
85 static const char *SettingSaveDirectory
;
88 MainBar(Session
&session
, QWidget
*parent
,
89 pv::views::trace::View
*view
);
91 void update_device_list();
93 void set_capture_state(pv::Session::capture_state state
);
95 void reset_device_selector();
97 QAction
* action_new_view() const;
98 QAction
* action_open() const;
99 QAction
* action_save() const;
100 QAction
* action_save_as() const;
101 QAction
* action_save_selection_as() const;
102 QAction
* action_restore_setup() const;
103 QAction
* action_save_setup() const;
104 QAction
* action_connect() const;
109 void select_init_device();
111 void save_selection_to_file();
113 void update_sample_rate_selector();
114 void update_sample_rate_selector_value();
115 void update_sample_count_selector();
116 void update_device_config_widgets();
117 void commit_sample_rate();
118 void commit_sample_count();
121 void show_session_error(const QString text
, const QString info_text
);
123 void export_file(shared_ptr
<sigrok::OutputFormat
> format
,
124 bool selection_only
= false, QString file_name
= "");
125 void import_file(shared_ptr
<sigrok::InputFormat
> format
);
127 void on_device_selected();
128 void on_device_changed();
129 void on_capture_state_changed(int state
);
130 void on_sample_count_changed();
131 void on_sample_rate_changed();
133 void on_config_changed();
135 void on_actionNewView_triggered(QAction
* action
= nullptr);
137 void on_actionOpen_triggered();
138 void on_actionSave_triggered();
139 void on_actionSaveAs_triggered();
140 void on_actionSaveSelectionAs_triggered();
142 void on_actionSaveSetup_triggered();
143 void on_actionRestoreSetup_triggered();
145 void on_actionConnect_triggered();
147 void on_add_decoder_clicked();
148 void on_add_math_signal_clicked();
151 void add_toolbar_widgets();
153 bool eventFilter(QObject
*watched
, QEvent
*event
);
156 void new_view(Session
*session
, int type
);
157 void show_decoder_selector(Session
*session
);
160 QAction
*const action_new_view_
;
161 QAction
*const action_open_
;
162 QAction
*const action_save_
;
163 QAction
*const action_save_as_
;
164 QAction
*const action_save_selection_as_
;
165 QAction
*const action_restore_setup_
;
166 QAction
*const action_save_setup_
;
167 QAction
*const action_connect_
;
169 QToolButton
*new_view_button_
, *open_button_
, *save_button_
;
171 pv::widgets::DeviceToolButton device_selector_
;
173 pv::widgets::PopupToolButton configure_button_
;
174 QAction
*configure_button_action_
;
176 pv::widgets::PopupToolButton channels_button_
;
177 QAction
*channels_button_action_
;
179 pv::widgets::SweepTimingWidget sample_count_
;
180 pv::widgets::SweepTimingWidget sample_rate_
;
181 bool updating_sample_rate_
;
182 bool updating_sample_count_
;
184 bool sample_count_supported_
;
187 QToolButton
*add_decoder_button_
;
190 QToolButton
*add_math_signal_button_
;
193 } // namespace toolbars
196 #endif // PULSEVIEW_PV_TOOLBARS_MAINBAR_HPP