SLOT(on_general_save_with_setup_changed(int)));
general_layout->addRow(tr("Save session &setup along with .sr file"), cb);
+ cb = create_checkbox(GlobalSettings::Key_General_StartAllSessions,
+ SLOT(on_general_start_all_sessions_changed(int)));
+ general_layout->addRow(tr("Start acquisition for all open sessions when clicking 'Run'"), cb);
+
+
return form;
}
settings.setValue(GlobalSettings::Key_General_SaveWithSetup, state ? true : false);
}
+void Settings::on_general_start_all_sessions_changed(int state)
+{
+ GlobalSettings settings;
+ settings.setValue(GlobalSettings::Key_General_StartAllSessions, state ? true : false);
+}
+
void Settings::on_view_zoomToFitDuringAcq_changed(int state)
{
GlobalSettings settings;
void on_general_theme_changed(int value);
void on_general_style_changed(int value);
void on_general_save_with_setup_changed(int state);
+ void on_general_start_all_sessions_changed(int state);
void on_view_zoomToFitDuringAcq_changed(int state);
void on_view_zoomToFitAfterAcq_changed(int state);
void on_view_triggerIsZero_changed(int state);
const QString GlobalSettings::Key_General_Theme = "General_Theme";
const QString GlobalSettings::Key_General_Style = "General_Style";
const QString GlobalSettings::Key_General_SaveWithSetup = "General_SaveWithSetup";
+const QString GlobalSettings::Key_General_StartAllSessions = "General_StartAllSessions";
const QString GlobalSettings::Key_View_ZoomToFitDuringAcq = "View_ZoomToFitDuringAcq";
const QString GlobalSettings::Key_View_ZoomToFitAfterAcq = "View_ZoomToFitAfterAcq";
const QString GlobalSettings::Key_View_TriggerIsZeroTime = "View_TriggerIsZeroTime";
static const QString Key_General_Theme;
static const QString Key_General_Style;
static const QString Key_General_SaveWithSetup;
+ static const QString Key_General_StartAllSessions;
static const QString Key_View_ZoomToFitDuringAcq;
static const QString Key_View_ZoomToFitAfterAcq;
static const QString Key_View_TriggerIsZeroTime;
void MainWindow::on_run_stop_clicked()
{
- shared_ptr<Session> session = last_focused_session_;
+ GlobalSettings settings;
+ bool all_sessions = settings.value(GlobalSettings::Key_General_StartAllSessions).toBool();
- if (!session)
- return;
+ if (all_sessions)
+ {
+ vector< shared_ptr<Session> > hw_sessions;
+
+ // Make a list of all sessions where a hardware device is used
+ for (shared_ptr<Session> s : sessions_) {
+ shared_ptr<devices::HardwareDevice> hw_device =
+ dynamic_pointer_cast< devices::HardwareDevice >(s->device());
+ if (!hw_device)
+ continue;
+ hw_sessions.push_back(s);
+ }
+
+ // Stop all acquisitions if there are any running ones, start all otherwise
+ bool any_running = any_of(hw_sessions.begin(), hw_sessions.end(),
+ [](const shared_ptr<Session> &s)
+ { return (s->get_capture_state() == Session::AwaitingTrigger) ||
+ (s->get_capture_state() == Session::Running); });
+
+ for (shared_ptr<Session> s : hw_sessions)
+ if (any_running)
+ s->stop_capture();
+ else
+ s->start_capture([&](QString message) {
+ show_session_error("Capture failed", message); });
+ } else {
+
+ shared_ptr<Session> session = last_focused_session_;
+
+ if (!session)
+ return;
- switch (session->get_capture_state()) {
- case Session::Stopped:
- session->start_capture([&](QString message) {
- show_session_error("Capture failed", message); });
- break;
- case Session::AwaitingTrigger:
- case Session::Running:
- session->stop_capture();
- break;
+ switch (session->get_capture_state()) {
+ case Session::Stopped:
+ session->start_capture([&](QString message) {
+ show_session_error("Capture failed", message); });
+ break;
+ case Session::AwaitingTrigger:
+ case Session::Running:
+ session->stop_capture();
+ break;
+ }
}
}