X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.h;h=d34db1bffaa6d4a4a53acf88f9b1d39617b2afdf;hp=8b7973744a881a19f421d91c1046394d3c6938f8;hb=03ce95a9bb81c05bae0da9de189d280214db67c3;hpb=f2edb55712e1f295935582558f694077da8d81e6 diff --git a/pv/mainwindow.h b/pv/mainwindow.h index 8b797374..d34db1bf 100644 --- a/pv/mainwindow.h +++ b/pv/mainwindow.h @@ -23,7 +23,10 @@ #include +#include + #include +#include #include "sigsession.h" @@ -37,7 +40,12 @@ class QWidget; namespace pv { +class DeviceManager; + +namespace toolbars { +class ContextBar; class SamplingBar; +} namespace view { class View; @@ -48,41 +56,26 @@ class MainWindow : public QMainWindow Q_OBJECT public: - explicit MainWindow(const char *open_file_name = NULL, + explicit MainWindow(DeviceManager &device_manager, + const char *open_file_name = NULL, QWidget *parent = 0); private: void setup_ui(); - void scan_devices(); void session_error(const QString text, const QString info_text); -private: - - SigSession _session; - std::list _devices; - - pv::view::View *_view; + /** + * Updates the device list in the sampling bar, and updates the + * selection. + * @param selected_device The device to select, or NULL if the + * first device in the device list should be selected. + */ + void update_device_list( + struct sr_dev_inst *selected_device = NULL); - QMenuBar *_menu_bar; - QMenu *_menu_file; - QAction *_action_open; - QAction *_action_connect; - QAction *_action_quit; - - QMenu *_menu_view; - QAction *_action_view_zoom_in; - QAction *_action_view_zoom_out; - QAction *_action_view_show_cursors; - - QMenu *_menu_help; - QAction *_action_about; - - QWidget *_central_widget; - QVBoxLayout *_vertical_layout; - - QToolBar *_toolbar; - SamplingBar *_sampling_bar; + static gint decoder_name_cmp(gconstpointer a, gconstpointer b); + void setup_add_decoders(QMenu *parent); private slots: void load_file(QString file_name); @@ -104,9 +97,44 @@ private slots: void on_actionAbout_triggered(); + void device_selected(); + + void add_decoder(QObject *action); + void run_stop(); void capture_state_changed(int state); + +private: + DeviceManager &_device_manager; + + SigSession _session; + + pv::view::View *_view; + + QMenuBar *_menu_bar; + QMenu *_menu_file; + QAction *_action_open; + QAction *_action_connect; + QAction *_action_quit; + + QMenu *_menu_view; + QAction *_action_view_zoom_in; + QAction *_action_view_zoom_out; + QAction *_action_view_show_cursors; + + QMenu *_menu_decoders; + QMenu *_menu_decoders_add; + QSignalMapper _decoders_add_mapper; + + QMenu *_menu_help; + QAction *_action_about; + + QWidget *_central_widget; + QVBoxLayout *_vertical_layout; + + QToolBar *_toolbar; + toolbars::SamplingBar *_sampling_bar; }; } // namespace pv