X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdialogs%2Fsettings.cpp;h=2bbab122ffb3731159f2385f8c6457150ee0d1a2;hp=d17f5d04c35cd61d02be0fec28da8af89750701f;hb=829b23f65ebc0dd81e6ee94f7ea72a691dff1907;hpb=d2d0056dc4ff51ae814b136ff92c3458dfae27d3 diff --git a/pv/dialogs/settings.cpp b/pv/dialogs/settings.cpp index d17f5d0..2bbab12 100644 --- a/pv/dialogs/settings.cpp +++ b/pv/dialogs/settings.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -215,7 +216,7 @@ QWidget *Settings::get_general_settings_form(QWidget *parent) const general_group->setLayout(general_layout); QComboBox *theme_cb = new QComboBox(); - for (pair entry : Themes) + for (const pair& entry : Themes) theme_cb->addItem(entry.first, entry.second); theme_cb->setCurrentIndex( @@ -228,6 +229,26 @@ QWidget *Settings::get_general_settings_form(QWidget *parent) const description_1->setAlignment(Qt::AlignRight); general_layout->addRow(description_1); + QComboBox *style_cb = new QComboBox(); + style_cb->addItem(tr("System Default"), ""); + for (QString& s : QStyleFactory::keys()) + style_cb->addItem(s, s); + + const QString current_style = + settings.value(GlobalSettings::Key_General_Style).toString(); + if (current_style.isEmpty()) + style_cb->setCurrentIndex(0); + else + style_cb->setCurrentIndex(style_cb->findText(current_style, 0)); + + connect(style_cb, SIGNAL(currentIndexChanged(int)), + this, SLOT(on_general_style_changed(int))); + general_layout->addRow(tr("Qt widget style"), style_cb); + + QLabel *description_2 = new QLabel(tr("(Dark themes look best with the Fusion style)")); + description_2->setAlignment(Qt::AlignRight); + general_layout->addRow(description_2); + return form; } @@ -279,7 +300,7 @@ QWidget *Settings::get_view_settings_form(QWidget *parent) const settings.value(GlobalSettings::Key_View_FillSignalHighAreaColor).value())); connect(high_fill_cb, SIGNAL(selected(QColor)), this, SLOT(on_view_fillSignalHighAreaColor_changed(QColor))); - trace_view_layout->addRow(tr("Fill high areas of logic signals"), high_fill_cb); + trace_view_layout->addRow(tr("Color to fill high areas of logic signals with"), high_fill_cb); cb = create_checkbox(GlobalSettings::Key_View_ShowAnalogMinorGrid, SLOT(on_view_showAnalogMinorGrid_changed(int))); @@ -298,6 +319,13 @@ QWidget *Settings::get_view_settings_form(QWidget *parent) const SLOT(on_view_snapDistance_changed(int))); trace_view_layout->addRow(tr("Maximum distance from edges before cursors snap to them"), snap_distance_sb); + ColorButton* cursor_fill_cb = new ColorButton(parent); + cursor_fill_cb->set_color(QColor::fromRgba( + settings.value(GlobalSettings::Key_View_CursorFillColor).value())); + connect(cursor_fill_cb, SIGNAL(selected(QColor)), + this, SLOT(on_view_cursorFillColor_changed(QColor))); + trace_view_layout->addRow(tr("Color to fill cursor area with"), cursor_fill_cb); + QComboBox *thr_disp_mode_cb = new QComboBox(); thr_disp_mode_cb->addItem(tr("None"), GlobalSettings::ConvThrDispMode_None); thr_disp_mode_cb->addItem(tr("Background"), GlobalSettings::ConvThrDispMode_Background); @@ -551,6 +579,37 @@ void Settings::on_general_theme_changed_changed(int state) GlobalSettings settings; settings.setValue(GlobalSettings::Key_General_Theme, state); settings.apply_theme(); + + QMessageBox msg(this); + msg.setStandardButtons(QMessageBox::Yes | QMessageBox::No); + msg.setIcon(QMessageBox::Question); + + if (settings.current_theme_is_dark()) { + msg.setText(tr("You selected a dark theme.\n" \ + "Should I set the user-adjustable colors to better suit your choice?\n\n" \ + "Please keep in mind that PulseView may need a restart to display correctly.")); + if (msg.exec() == QMessageBox::Yes) + settings.set_dark_theme_default_colors(); + } else { + msg.setText(tr("You selected a bright theme.\n" \ + "Should I set the user-adjustable colors to better suit your choice?\n\n" \ + "Please keep in mind that PulseView may need a restart to display correctly.")); + if (msg.exec() == QMessageBox::Yes) + settings.set_bright_theme_default_colors(); + } +} + +void Settings::on_general_style_changed(int state) +{ + GlobalSettings settings; + + if (state == 0) + settings.setValue(GlobalSettings::Key_General_Style, ""); + else + settings.setValue(GlobalSettings::Key_General_Style, + QStyleFactory::keys().at(state - 1)); + + settings.apply_theme(); } void Settings::on_view_zoomToFitDuringAcq_changed(int state) @@ -619,6 +678,12 @@ void Settings::on_view_snapDistance_changed(int value) settings.setValue(GlobalSettings::Key_View_SnapDistance, value); } +void Settings::on_view_cursorFillColor_changed(QColor color) +{ + GlobalSettings settings; + settings.setValue(GlobalSettings::Key_View_CursorFillColor, color.rgba()); +} + void Settings::on_view_conversionThresholdDispMode_changed(int state) { GlobalSettings settings;