X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.h;h=ce09284d7af565879083e560ddca5506f1799377;hp=47d3e66d0cad0efa131b7a72b4d796026966eb34;hb=f0d37dab05f9fb055a9af8a05d776d1a5b4b0909;hpb=f4c92e1c49680738bde7d5fa08153fa914ac2920 diff --git a/pv/mainwindow.h b/pv/mainwindow.h index 47d3e66d..ce09284d 100644 --- a/pv/mainwindow.h +++ b/pv/mainwindow.h @@ -23,6 +23,8 @@ #include +#include + #include #include "sigsession.h" @@ -37,7 +39,10 @@ class QWidget; namespace pv { +class DeviceManager; + namespace toolbars { +class ContextBar; class SamplingBar; } @@ -45,20 +50,35 @@ namespace view { class View; } +namespace widgets { +class DecoderMenu; +} + 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); + /** + * 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); + + static gint decoder_name_cmp(gconstpointer a, gconstpointer b); + private slots: void load_file(QString file_name); @@ -79,14 +99,16 @@ private slots: void on_actionAbout_triggered(); + void add_decoder(srd_decoder *decoder); + void run_stop(); void capture_state_changed(int state); private: + DeviceManager &_device_manager; SigSession _session; - std::list _devices; pv::view::View *_view; @@ -101,6 +123,9 @@ private: QAction *_action_view_zoom_out; QAction *_action_view_show_cursors; + QMenu *_menu_decoders; + pv::widgets::DecoderMenu *_menu_decoders_add; + QMenu *_menu_help; QAction *_action_about;