#define PULSEVIEW_PV_MAINWINDOW_H
#include <list>
+#include <memory>
#include <QMainWindow>
#include "sigsession.h"
-class QAction;
-class QMenuBar;
-class QMenu;
+struct srd_decoder;
+
class QVBoxLayout;
-class QStatusBar;
-class QToolBar;
-class QWidget;
namespace pv {
+class DeviceManager;
+
+namespace device {
+class DevInst;
+}
+
+namespace toolbars {
+class ContextBar;
class SamplingBar;
+}
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();
-
-private:
- SigSession _session;
- std::list<sr_dev_inst*> _devices;
-
- 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_help;
- QAction *_action_about;
-
- QWidget *_central_widget;
- QVBoxLayout *_vertical_layout;
+ void session_error(const QString text, const QString info_text);
- QToolBar *_toolbar;
- SamplingBar *_sampling_bar;
+ /**
+ * Updates the device list in the sampling bar
+ */
+ void update_device_list();
private slots:
void load_file(QString file_name);
+
+ void show_session_error(
+ const QString text, const QString info_text);
+
void on_actionOpen_triggered();
+ void on_actionSaveAs_triggered();
void on_actionQuit_triggered();
void on_actionConnect_triggered();
void on_actionViewZoomOut_triggered();
+ void on_actionViewZoomFit_triggered();
+
+ void on_actionViewZoomOneToOne_triggered();
+
void on_actionViewShowCursors_triggered();
void on_actionAbout_triggered();
+ void add_decoder(srd_decoder *decoder);
+
void run_stop();
void capture_state_changed(int state);
+
+private:
+ /**
+ * 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;
+
+ DeviceManager &_device_manager;
+
+ SigSession _session;
+
+ pv::view::View *_view;
+
+ QWidget *_central_widget;
+ QVBoxLayout *_vertical_layout;
+
+ toolbars::SamplingBar *_sampling_bar;
};
} // namespace pv