X-Git-Url: https://sigrok.org/gitweb/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fmainwindow.cpp;h=da01858748a74704888a9d851b8fb270b0c9d5df;hp=99e545681e71a3a71042dd30c56818606629e24d;hb=793f8096c486d0fba871227d9772a510f7496c08;hpb=6745ffbbcf4d8bc858c9094f1e95683a529382a7 diff --git a/pv/mainwindow.cpp b/pv/mainwindow.cpp index 99e54568..da018587 100644 --- a/pv/mainwindow.cpp +++ b/pv/mainwindow.cpp @@ -33,6 +33,7 @@ #include "mainwindow.h" #include "samplingbar.h" #include "dialogs/about.h" +#include "dialogs/connect.h" #include "view/view.h" /* __STDC_FORMAT_MACROS is required for PRIu64 and friends (in C++). */ @@ -100,6 +101,15 @@ void MainWindow::setup_ui() _menu_file->addSeparator(); + _action_connect = new QAction(this); + _action_connect->setText(QApplication::translate( + "MainWindow", "&Connect to Device...", 0, + QApplication::UnicodeUTF8)); + _action_connect->setObjectName(QString::fromUtf8("actionConnect")); + _menu_file->addAction(_action_connect); + + _menu_file->addSeparator(); + _action_quit = new QAction(this); _action_quit->setText(QApplication::translate( "MainWindow", "&Quit", 0, QApplication::UnicodeUTF8)); @@ -169,6 +179,7 @@ void MainWindow::setup_ui() addToolBar(_toolbar); _sampling_bar = new SamplingBar(this); + scan_devices(); connect(_sampling_bar, SIGNAL(run_stop()), this, SLOT(run_stop())); addToolBar(_sampling_bar); @@ -182,6 +193,23 @@ void MainWindow::setup_ui() } +void MainWindow::scan_devices() +{ + _devices.clear(); + + /* Scan all drivers for all devices. */ + struct sr_dev_driver **const drivers = sr_driver_list(); + for (struct sr_dev_driver **driver = drivers; *driver; driver++) { + GSList *const devices = sr_driver_scan(*driver, NULL); + for (GSList *l = devices; l; l = l->next) + _devices.push_back((sr_dev_inst*)l->data); + g_slist_free(devices); + } + + assert(_sampling_bar); + _sampling_bar->set_device_list(_devices); +} + void MainWindow::load_file(QString file_name) { _session.load_file(file_name.toStdString()); @@ -195,6 +223,22 @@ void MainWindow::on_actionOpen_triggered() load_file(file_name); } +void MainWindow::on_actionConnect_triggered() +{ + dialogs::Connect dlg(this); + if (!dlg.exec()) + return; + + struct sr_dev_inst *const sdi = dlg.get_selected_device(); + if (sdi) { + assert(_sampling_bar); + + _devices.push_back(sdi); + _sampling_bar->set_device_list(_devices); + _sampling_bar->set_selected_device(sdi); + } +} + void MainWindow::on_actionQuit_triggered() { close();