#ifndef PULSEVIEW_PV_MAINWINDOW_H
#define PULSEVIEW_PV_MAINWINDOW_H
+#include <list>
+
+#include <boost/weak_ptr.hpp>
+
#include <QMainWindow>
+#include <QSignalMapper>
#include "sigsession.h"
namespace pv {
+class DeviceManager;
+
+namespace toolbars {
+class ContextBar;
class SamplingBar;
+}
namespace view {
class View;
Q_OBJECT
public:
- explicit MainWindow(QWidget *parent = 0);
+ explicit MainWindow(DeviceManager &device_manager,
+ const char *open_file_name = NULL,
+ QWidget *parent = 0);
private:
void setup_ui();
-private:
+ void session_error(const QString text, const QString info_text);
- SigSession _session;
- 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);
- QAction *_action_open;
- QAction *_action_view_zoom_in;
- QAction *_action_view_zoom_out;
- QAction *_action_about;
+ static gint decoder_name_cmp(gconstpointer a, gconstpointer b);
+ void setup_add_decoders(QMenu *parent);
- QMenuBar *_menu_bar;
- QMenu *_menu_file;
- QMenu *_menu_view;
- QMenu *_menu_help;
-
- QWidget *_central_widget;
- QVBoxLayout *_vertical_layout;
+private slots:
+ void load_file(QString file_name);
- QToolBar *_toolbar;
- SamplingBar *_sampling_bar;
- QStatusBar *_status_bar;
-private slots:
+ void show_session_error(
+ const QString text, const QString info_text);
void on_actionOpen_triggered();
+ void on_actionQuit_triggered();
+
+ void on_actionConnect_triggered();
void on_actionViewZoomIn_triggered();
void on_actionViewZoomOut_triggered();
+ void on_actionViewShowCursors_triggered();
+
void on_actionAbout_triggered();
+ void device_selected();
+
+ void add_decoder(QObject *action);
+
void run_stop();
+
+ void capture_state_changed(int state);
+
+ void view_selection_changed();
+
+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;
+ toolbars::ContextBar *_context_bar;
};
} // namespace pv