X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Ftoolbars%2Fmainbar.hpp;h=0b82e95d833ed550fe0203718b02e97a6bab12fd;hp=10475e27f751128d7d11dc82c536e07bfa7550bb;hb=f1e2d26b867fc5ab5723d83c00bd9467add2f748;hpb=59331ddaef8cc63ab8b60e6f0f9d8d76aed6e2c5 diff --git a/pv/toolbars/mainbar.hpp b/pv/toolbars/mainbar.hpp index 10475e2..0b82e95 100644 --- a/pv/toolbars/mainbar.hpp +++ b/pv/toolbars/mainbar.hpp @@ -18,14 +18,16 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -#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 @@ -38,7 +40,9 @@ #include namespace sigrok { - class Device; +class Device; +class InputFormat; +class OutputFormat; } Q_DECLARE_METATYPE(std::shared_ptr) @@ -61,14 +65,58 @@ private: static const uint64_t MaxSampleCount; static const uint64_t DefaultSampleCount; + /** + * 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; + public: MainBar(Session &session, pv::MainWindow &main_window); + Session &session(void) const; + void update_device_list(); void set_capture_state(pv::Session::capture_state state); + void reset_device_selector(); + + void select_device(std::shared_ptr device); + + void load_init_file(const std::string &file_name, + const std::string &format); + + QAction* action_new_view() const; + QAction* action_open() const; + QAction* action_save_as() const; + QAction* action_save_selection_as() const; + QAction* action_connect() const; + QAction* action_quit() const; + QAction* action_view_zoom_in() const; + QAction* action_view_zoom_out() const; + QAction* action_view_zoom_fit() const; + QAction* action_view_zoom_one_to_one() const; + QAction* action_view_show_cursors() const; + private: + void run_stop(); + + void select_init_device(); + + void load_file(QString file_name, + std::shared_ptr format = nullptr, + const std::map &options = + std::map()); + + void save_selection_to_file(); + void update_sample_rate_selector(); void update_sample_rate_selector_value(); void update_sample_count_selector(); @@ -76,20 +124,66 @@ private: void commit_sample_rate(); void commit_sample_count(); + void session_error(const QString text, const QString info_text); + + QAction *const action_new_view_; + QAction *const action_open_; + QAction *const action_save_as_; + QAction *const action_save_selection_as_; + QAction *const action_connect_; + QAction *const action_view_zoom_in_; + QAction *const action_view_zoom_out_; + QAction *const action_view_zoom_fit_; + QAction *const action_view_zoom_one_to_one_; + QAction *const action_view_show_cursors_; + private Q_SLOTS: + void show_session_error(const QString text, const QString info_text); + + void capture_state_changed(int state); + + 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_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(); + + void on_actionViewZoomIn_triggered(); + + void on_actionViewZoomOut_triggered(); + + void on_actionViewZoomFit_triggered(); + + void on_actionViewZoomOneToOne_triggered(); + + void on_actionViewShowCursors_triggered(); + + void on_always_zoom_to_fit_changed(bool state); + protected: bool eventFilter(QObject *watched, QEvent *event); +Q_SIGNALS: + void new_view(Session *session); + private: Session &session_; - MainWindow &main_window_; pv::widgets::DeviceToolButton device_selector_; @@ -97,6 +191,7 @@ private: QAction *configure_button_action_; pv::widgets::PopupToolButton channels_button_; + QAction *channels_button_action_; pv::widgets::SweepTimingWidget sample_count_; pv::widgets::SweepTimingWidget sample_rate_; @@ -109,11 +204,14 @@ private: QIcon icon_green_; QIcon icon_grey_; QToolButton run_stop_button_; + QAction *run_stop_button_action_; - QToolButton menu_button_; +#ifdef ENABLE_DECODE + QMenu *const menu_decoders_add_; +#endif }; } // namespace toolbars } // namespace pv -#endif // PULSEVIEW_PV_TOOLBARS_MAINBAR_H +#endif // PULSEVIEW_PV_TOOLBARS_MAINBAR_HPP