]> sigrok.org Git - pulseview.git/blobdiff - pv/dialogs/settings.cpp
Session: Fix issue #67 by improving error handling
[pulseview.git] / pv / dialogs / settings.cpp
index 3b4d67de766fde17814116083e92eba9a70d7a22..55b7e826291eb69f057025582febef7b65c319be 100644 (file)
@@ -84,7 +84,7 @@ public:
 };
 
 Settings::Settings(DeviceManager &device_manager, QWidget *parent) :
-       QDialog(parent, nullptr),
+       QDialog(parent),
        device_manager_(device_manager)
 {
        resize(600, 400);
@@ -220,10 +220,10 @@ QWidget *Settings::get_general_settings_form(QWidget *parent) const
        QComboBox *language_cb = new QComboBox();
        Application* a = qobject_cast<Application*>(QApplication::instance());
 
-       QString current_language = settings.value(GlobalSettings::Key_General_Language).toString();
-       for (QString language : a->get_languages()) {
-               QLocale locale = QLocale(language);
-               QString desc = locale.languageToString(locale.language());
+       QString current_language = settings.value(GlobalSettings::Key_General_Language, "en").toString();
+       for (const QString& language : a->get_languages()) {
+               const QLocale locale = QLocale(language);
+               const QString desc = locale.languageToString(locale.language());
                language_cb->addItem(desc, language);
 
                if (language == current_language) {
@@ -231,8 +231,13 @@ QWidget *Settings::get_general_settings_form(QWidget *parent) const
                        language_cb->setCurrentIndex(index);
                }
        }
+#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+       connect(language_cb, SIGNAL(currentTextChanged(const QString&)),
+               this, SLOT(on_general_language_changed(const QString&)));
+#else
        connect(language_cb, SIGNAL(currentIndexChanged(const QString&)),
                this, SLOT(on_general_language_changed(const QString&)));
+#endif
        general_layout->addRow(tr("User interface language"), language_cb);
 
        // Theme combobox
@@ -261,7 +266,7 @@ QWidget *Settings::get_general_settings_form(QWidget *parent) const
        if (current_style.isEmpty())
                style_cb->setCurrentIndex(0);
        else
-               style_cb->setCurrentIndex(style_cb->findText(current_style, nullptr));
+               style_cb->setCurrentIndex(style_cb->findText(current_style));
 
        connect(style_cb, SIGNAL(currentIndexChanged(int)),
                this, SLOT(on_general_style_changed(int)));
@@ -276,6 +281,11 @@ QWidget *Settings::get_general_settings_form(QWidget *parent) const
                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;
 }
 
@@ -308,19 +318,23 @@ QWidget *Settings::get_view_settings_form(QWidget *parent) const
 
        cb = create_checkbox(GlobalSettings::Key_View_TriggerIsZeroTime,
                SLOT(on_view_triggerIsZero_changed(int)));
-       trace_view_layout->addRow(tr("Show time zero at the trigger"), cb);
+       trace_view_layout->addRow(tr("Show time zero at the &trigger"), cb);
 
        cb = create_checkbox(GlobalSettings::Key_View_StickyScrolling,
                SLOT(on_view_stickyScrolling_changed(int)));
        trace_view_layout->addRow(tr("Always keep &newest samples at the right edge during capture"), cb);
 
+       cb = create_checkbox(GlobalSettings::Key_View_AllowVerticalDragging,
+               SLOT(on_view_allowVerticalDragging_changed(int)));
+       trace_view_layout->addRow(tr("Allow &vertical dragging in the view area"), cb);
+
        cb = create_checkbox(GlobalSettings::Key_View_ShowSamplingPoints,
                SLOT(on_view_showSamplingPoints_changed(int)));
        trace_view_layout->addRow(tr("Show data &sampling points"), cb);
 
        cb = create_checkbox(GlobalSettings::Key_View_FillSignalHighAreas,
                SLOT(on_view_fillSignalHighAreas_changed(int)));
-       trace_view_layout->addRow(tr("Fill high areas of logic signals"), cb);
+       trace_view_layout->addRow(tr("Fill &high areas of logic signals"), cb);
 
        ColorButton* high_fill_cb = new ColorButton(parent);
        high_fill_cb->set_color(QColor::fromRgba(
@@ -337,6 +351,10 @@ QWidget *Settings::get_view_settings_form(QWidget *parent) const
                SLOT(on_view_showHoverMarker_changed(int)));
        trace_view_layout->addRow(tr("Highlight mouse cursor using a vertical marker line"), cb);
 
+       cb = create_checkbox(GlobalSettings::Key_View_KeepRulerItemSelected,
+               SLOT(on_view_keepRulerItemSelected_changed(int)));
+       trace_view_layout->addRow(tr("Keep active item on ruler selected when editing popup is closed"), cb);
+
        QSpinBox *snap_distance_sb = new QSpinBox();
        snap_distance_sb->setRange(0, 1000);
        snap_distance_sb->setSuffix(tr(" pixels"));
@@ -344,7 +362,7 @@ QWidget *Settings::get_view_settings_form(QWidget *parent) const
                settings.value(GlobalSettings::Key_View_SnapDistance).toInt());
        connect(snap_distance_sb, SIGNAL(valueChanged(int)), this,
                SLOT(on_view_snapDistance_changed(int)));
-       trace_view_layout->addRow(tr("Maximum distance from edges before cursors snap to them"), snap_distance_sb);
+       trace_view_layout->addRow(tr("Maximum distance from edges before markers snap to them"), snap_distance_sb);
 
        ColorButton* cursor_fill_cb = new ColorButton(parent);
        cursor_fill_cb->set_color(QColor::fromRgba(
@@ -415,10 +433,10 @@ QWidget *Settings::get_decoder_settings_form(QWidget *parent)
        connect(ann_export_format_, SIGNAL(textChanged(const QString&)),
                this, SLOT(on_dec_exportFormat_changed(const QString&)));
        decoder_layout->addRow(tr("Annotation export format"), ann_export_format_);
-       QLabel *description_1 = new QLabel(tr("%s = sample range; %d: decoder name; %r: row name; %q: use quotation marks"));
+       QLabel *description_1 = new QLabel(tr("%s = sample range; %d: decoder name; %r: row name; %c: class name"));
        description_1->setAlignment(Qt::AlignRight);
        decoder_layout->addRow(description_1);
-       QLabel *description_2 = new QLabel(tr("%1: longest annotation text; %a: all annotation texts"));
+       QLabel *description_2 = new QLabel(tr("%1: longest annotation text; %a: all annotation texts; %q: use quotation marks"));
        description_2->setAlignment(Qt::AlignRight);
        decoder_layout->addRow(description_2);
 
@@ -467,6 +485,7 @@ QWidget *Settings::get_about_page(QWidget *parent) const
                tr("Protocol decoder search paths:") + "</b></td></tr>");
        for (QString &entry : a->get_pd_path_list())
                s.append(QString("<tr><td colspan=\"2\">%1</td></tr>").arg(entry));
+       s.append(tr("<tr><td colspan=\"2\">(Note: Set environment variable SIGROKDECODE_DIR to add a custom directory)</td></tr>"));
 #endif
 
        s.append("<tr><td colspan=\"2\"></td></tr>");
@@ -499,6 +518,21 @@ QWidget *Settings::get_about_page(QWidget *parent) const
                        .arg(entry.first, entry.second));
 #endif
 
+       s.append("<tr><td colspan=\"2\"></td></tr>");
+       s.append("<tr><td colspan=\"2\"><b>" +
+               tr("Available Translations:") + "</b></td></tr>");
+       for (const QString& language : a->get_languages()) {
+               if (language == "en")
+                       continue;
+
+               const QLocale locale = QLocale(language);
+               const QString desc = locale.languageToString(locale.language());
+               const QString editors = a->get_language_editors(language);
+
+               s.append(QString("<tr><td class=\"id\"><i>%1</i></td><td>(%2)</td></tr>")
+                       .arg(desc, editors));
+       }
+
        s.append("</table>");
 
        QTextDocument *supported_doc = new QTextDocument();
@@ -610,7 +644,7 @@ void Settings::on_general_language_changed(const QString &text)
        GlobalSettings settings;
        Application* a = qobject_cast<Application*>(QApplication::instance());
 
-       for (QString language : a->get_languages()) {
+       for (const QString& language : a->get_languages()) {
                QLocale locale = QLocale(language);
                QString desc = locale.languageToString(locale.language());
 
@@ -663,6 +697,12 @@ void Settings::on_general_save_with_setup_changed(int state)
        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;
@@ -693,6 +733,12 @@ void Settings::on_view_stickyScrolling_changed(int state)
        settings.setValue(GlobalSettings::Key_View_StickyScrolling, state ? true : false);
 }
 
+void Settings::on_view_allowVerticalDragging_changed(int state)
+{
+       GlobalSettings settings;
+       settings.setValue(GlobalSettings::Key_View_AllowVerticalDragging, state ? true : false);
+}
+
 void Settings::on_view_showSamplingPoints_changed(int state)
 {
        GlobalSettings settings;
@@ -723,6 +769,12 @@ void Settings::on_view_showHoverMarker_changed(int state)
        settings.setValue(GlobalSettings::Key_View_ShowHoverMarker, state ? true : false);
 }
 
+void Settings::on_view_keepRulerItemSelected_changed(int state)
+{
+       GlobalSettings settings;
+       settings.setValue(GlobalSettings::Key_View_KeepRulerItemSelected, state ? true : false);
+}
+
 void Settings::on_view_snapDistance_changed(int value)
 {
        GlobalSettings settings;