23 #include <libsigrokcxx/libsigrokcxx.hpp>
32 using std::shared_ptr;
37 using Glib::VariantBase;
39 using sigrok::ConfigKey;
50 device_manager_(device_manager),
55 serial_devices_(&form_),
56 scan_button_(tr(
"&Scan for Devices"), this),
58 button_box_(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
61 setWindowTitle(tr(
"Connect to Device"));
63 connect(&
button_box_, SIGNAL(accepted()),
this, SLOT(accept()));
64 connect(&
button_box_, SIGNAL(rejected()),
this, SLOT(reject()));
67 connect(&
drivers_, SIGNAL(activated(
int)),
90 const QListWidgetItem *
const item =
device_list_.currentItem();
92 return shared_ptr<HardwareDevice>();
94 return item->data(Qt::UserRole).value<shared_ptr<HardwareDevice>>();
100 auto name = entry.first;
101 auto driver = entry.second;
109 const auto keys = driver->config_keys();
111 bool supported_device = keys.count(ConfigKey::LOGIC_ANALYZER) |
112 keys.count(ConfigKey::OSCILLOSCOPE);
114 if (supported_device)
115 drivers_.addItem(QString(
"%1 (%2)").arg(
116 driver->long_name().c_str()).arg(name.c_str()),
117 qVariantFromValue(driver));
126 serial.first.c_str()).arg(serial.second.c_str()),
127 QString::fromStdString(serial.first));
135 button_box_.button(QDialogButtonBox::Ok)->setDisabled(
true);
149 const int index =
drivers_.currentIndex();
153 shared_ptr<Driver> driver =
154 drivers_.itemData(index).value<shared_ptr<Driver>>();
158 map<const ConfigKey *, VariantBase> drvopts;
168 drvopts[ConfigKey::CONN] = Variant<ustring>::create(
169 serial.toUtf8().constData());
172 const list< shared_ptr<HardwareDevice> > devices =
175 for (shared_ptr<HardwareDevice> device : devices) {
178 QString text = QString::fromStdString(
180 text += QString(
" with %1 channels").arg(
181 device->device()->channels().size());
183 QListWidgetItem *
const item =
new QListWidgetItem(text,
185 item->setData(Qt::UserRole, qVariantFromValue(device));
195 shared_ptr<Driver> driver =
196 drivers_.itemData(index).value<shared_ptr<Driver>>();
200 if (driver->scan_options().count(ConfigKey::SERIALCOMM))
void set_serial_connection(std::shared_ptr< sigrok::Driver > driver)
const std::shared_ptr< sigrok::Context > & context() const
Connect(QWidget *parent, pv::DeviceManager &device_manager)
std::shared_ptr< devices::HardwareDevice > get_selected_device() const
void device_selected(int index)
pv::DeviceManager & device_manager_
void populate_serials(std::shared_ptr< sigrok::Driver > driver)
QComboBox serial_devices_
QDialogButtonBox button_box_
std::list< std::shared_ptr< devices::HardwareDevice > > driver_scan(std::shared_ptr< sigrok::Driver > driver, std::map< const sigrok::ConfigKey *, Glib::VariantBase > drvopts)