]> sigrok.org Git - pulseview.git/blobdiff - pv/popups/probes.h
Rename 'probe' to 'channel' (libsigrokdecode change).
[pulseview.git] / pv / popups / probes.h
index 33f5d996722c42aa72c9567991eb423f74ae8c53..dbf90cd0b34237a603d013fcdc1b6772ba7b84ab 100644 (file)
 #ifndef PULSEVIEW_PV_POPUPS_PROBES_H
 #define PULSEVIEW_PV_POPUPS_PROBES_H
 
-#include <QListWidget>
-#include <QToolBar>
-#include <QToolButton>
-#include <QVBoxLayout>
+#include <map>
+#include <vector>
+
+#include <boost/shared_ptr.hpp>
+
+#include <QFormLayout>
+#include <QHBoxLayout>
+#include <QPushButton>
+#include <QSignalMapper>
 
 #include <pv/widgets/popup.h>
 
+struct sr_channel_group;
+
+class QCheckBox;
+class QGridLayout;
+
 namespace pv {
+
+class SigSession;
+
+namespace prop {
+namespace binding {
+class DeviceOptions;
+}
+}
+
+namespace view {
+class Signal;
+}
+
 namespace popups {
 
 class Probes : public pv::widgets::Popup
@@ -36,26 +59,43 @@ class Probes : public pv::widgets::Popup
        Q_OBJECT
 
 public:
-       Probes(sr_dev_inst *sdi, QWidget *parent);
+       Probes(SigSession &_session, QWidget *parent);
 
 private:
        void set_all_probes(bool set);
 
+       void populate_group(const sr_channel_group *group,
+               const std::vector< boost::shared_ptr<pv::view::Signal> > sigs);
+
+       QGridLayout* create_channel_group_grid(
+               const std::vector< boost::shared_ptr<pv::view::Signal> > sigs);
+
+private:
+       void showEvent(QShowEvent *e);
+
 private slots:
-       void item_changed(QListWidgetItem *item);
+       void on_probe_checked(QWidget *widget);
 
        void enable_all_probes();
        void disable_all_probes();
 
 private:
-       sr_dev_inst *_sdi;
+       pv::SigSession &_session;
+
+       QFormLayout _layout;
+
+       bool _updating_probes;
+
+       std::vector< boost::shared_ptr<pv::prop::binding::DeviceOptions> >
+                _group_bindings;
+       std::map< QCheckBox*, boost::shared_ptr<pv::view::Signal> >
+               _check_box_signal_map;
 
-       QVBoxLayout _layout;
+       QHBoxLayout _buttons_bar;
+       QPushButton _enable_all_probes;
+       QPushButton _disable_all_probes;
 
-       QListWidget _probes;
-       QToolBar _probes_bar;
-       QToolButton _enable_all_probes;
-       QToolButton _disable_all_probes;
+       QSignalMapper _check_box_mapper;
 };
 
 } // popups