X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Ftoolbars%2Fmainbar.hpp;h=0242dc9da0ec73f184902b9570c40af6716aaf7c;hp=d5d42f5080497840eafc95db258f1ea19e4ca628;hb=efdec55aec1a137460fa362a381ed1904182bfed;hpb=87f0df9b4a357ea9e2d838be7663580e94beca68 diff --git a/pv/toolbars/mainbar.hpp b/pv/toolbars/mainbar.hpp index d5d42f5..0242dc9 100644 --- a/pv/toolbars/mainbar.hpp +++ b/pv/toolbars/mainbar.hpp @@ -14,29 +14,35 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * along with this program; if not, see . */ -#ifndef PULSEVIEW_PV_TOOLBARS_MAINBAR_H -#define PULSEVIEW_PV_TOOLBARS_MAINBAR_H +#ifndef PULSEVIEW_PV_TOOLBARS_MAINBAR_HPP +#define PULSEVIEW_PV_TOOLBARS_MAINBAR_HPP #include #include #include +#include + #include #include +#include #include #include #include +#include +#include #include #include namespace sigrok { - class Device; +class Device; +class InputFormat; +class OutputFormat; } Q_DECLARE_METATYPE(std::shared_ptr) @@ -48,9 +54,15 @@ namespace pv { class MainWindow; class Session; +namespace views { +namespace TraceView { +class View; +} +} + namespace toolbars { -class MainBar : public QToolBar +class MainBar : public pv::views::trace::StandardBar { Q_OBJECT @@ -59,21 +71,43 @@ private: static const uint64_t MaxSampleCount; static const uint64_t DefaultSampleCount; -public: - MainBar(Session &session, pv::MainWindow &main_window); + /** + * Name of the setting used to remember the directory + * containing the last file that was opened. + */ + static const char *SettingOpenDirectory; + + /** + * Name of the setting used to remember the directory + * containing the last file that was saved. + */ + static const char *SettingSaveDirectory; - void set_device_list( - const std::list< std::shared_ptr > &devices, - std::shared_ptr selected); +public: + MainBar(Session &session, QWidget *parent, + pv::views::TraceView::View *view); - std::shared_ptr get_selected_device() const; + void update_device_list(); void set_capture_state(pv::Session::capture_state state); -Q_SIGNALS: - void run_stop(); + void reset_device_selector(); + + QAction* action_new_view() const; + QAction* action_open() const; + QAction* action_save_as() const; + QAction* action_save_selection_as() const; + QAction* action_connect() const; + + void session_error(const QString text, const QString info_text); private: + void run_stop(); + + void select_init_device(); + + void save_selection_to_file(); + void update_sample_rate_selector(); void update_sample_rate_selector_value(); void update_sample_count_selector(); @@ -81,28 +115,55 @@ private: void commit_sample_rate(); void commit_sample_count(); + QAction *const action_new_view_; + QAction *const action_open_; + QAction *const action_save_as_; + QAction *const action_save_selection_as_; + QAction *const action_connect_; + private Q_SLOTS: + void show_session_error(const QString text, const QString info_text); + + void add_decoder(srd_decoder *decoder); + + void export_file(std::shared_ptr format, + bool selection_only = false); + void import_file(std::shared_ptr format); + void on_device_selected(); + void on_device_changed(); + void on_capture_state_changed(int state); void on_sample_count_changed(); void on_sample_rate_changed(); - void on_run_stop(); void on_config_changed(); + void on_actionNewView_triggered(); + + void on_actionOpen_triggered(); + void on_actionSaveAs_triggered(); + void on_actionSaveSelectionAs_triggered(); + + void on_actionConnect_triggered(); + protected: + void add_toolbar_widgets(); + bool eventFilter(QObject *watched, QEvent *event); +Q_SIGNALS: + void new_view(Session *session); + private: - Session &session_; - MainWindow &main_window_; + QToolButton *open_button_, *save_button_; - QComboBox device_selector_; - bool updating_device_selector_; + pv::widgets::DeviceToolButton device_selector_; pv::widgets::PopupToolButton configure_button_; QAction *configure_button_action_; pv::widgets::PopupToolButton channels_button_; + QAction *channels_button_action_; pv::widgets::SweepTimingWidget sample_count_; pv::widgets::SweepTimingWidget sample_rate_; @@ -111,15 +172,13 @@ private: bool sample_count_supported_; - QIcon icon_red_; - QIcon icon_green_; - QIcon icon_grey_; - QToolButton run_stop_button_; - - QToolButton menu_button_; +#ifdef ENABLE_DECODE + QToolButton *add_decoder_button_; + QMenu *const menu_decoders_add_; +#endif }; } // namespace toolbars } // namespace pv -#endif // PULSEVIEW_PV_TOOLBARS_MAINBAR_H +#endif // PULSEVIEW_PV_TOOLBARS_MAINBAR_HPP