X-Git-Url: http://git.code-monkey.de/?p=pulseview.git;a=blobdiff_plain;f=pv%2Fdialogs%2Fsettings.cpp;h=491bbfc2b6c13e88c67d0dad6efc73f636b4bcfd;hp=bc6688c22a40dafb7f9a86c903516b524de44fb3;hb=f4ab4b5c657e5613caba82feaa81a8a400e4f331;hpb=4971985821bf983a56a8e6399a8609f0e4dacbe7 diff --git a/pv/dialogs/settings.cpp b/pv/dialogs/settings.cpp index bc6688c..491bbfc 100644 --- a/pv/dialogs/settings.cpp +++ b/pv/dialogs/settings.cpp @@ -46,6 +46,7 @@ #include "pv/devicemanager.hpp" #include "pv/globalsettings.hpp" #include "pv/logging.hpp" +#include "pv/widgets/colorbutton.hpp" #include @@ -53,7 +54,7 @@ #include #endif -using std::shared_ptr; +using pv::widgets::ColorButton; namespace pv { namespace dialogs { @@ -124,6 +125,15 @@ Settings::Settings(DeviceManager &device_manager, QWidget *parent) : void Settings::create_pages() { + // General page + pages->addWidget(get_general_settings_form(pages)); + + QListWidgetItem *generalButton = new QListWidgetItem(page_list); + generalButton->setIcon(QIcon(":/icons/settings-general.png")); + generalButton->setText(tr("General")); + generalButton->setTextAlignment(Qt::AlignVCenter); + generalButton->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); + // View page pages->addWidget(get_view_settings_form(pages)); @@ -190,6 +200,37 @@ QPlainTextEdit *Settings::create_log_view() const return log_view; } +QWidget *Settings::get_general_settings_form(QWidget *parent) const +{ + GlobalSettings settings; + + QWidget *form = new QWidget(parent); + QVBoxLayout *form_layout = new QVBoxLayout(form); + + // General settings + QGroupBox *general_group = new QGroupBox(tr("General")); + form_layout->addWidget(general_group); + + QFormLayout *general_layout = new QFormLayout(); + general_group->setLayout(general_layout); + + QComboBox *theme_cb = new QComboBox(); + for (const pair& entry : Themes) + theme_cb->addItem(entry.first, entry.second); + + theme_cb->setCurrentIndex( + settings.value(GlobalSettings::Key_General_Theme).toInt()); + connect(theme_cb, SIGNAL(currentIndexChanged(int)), + this, SLOT(on_general_theme_changed_changed(int))); + general_layout->addRow(tr("User interface theme"), theme_cb); + + QLabel *description_1 = new QLabel(tr("(You may need to restart PulseView for all UI elements to update)")); + description_1->setAlignment(Qt::AlignRight); + general_layout->addRow(description_1); + + return form; +} + QWidget *Settings::get_view_settings_form(QWidget *parent) const { GlobalSettings settings; @@ -229,6 +270,17 @@ QWidget *Settings::get_view_settings_form(QWidget *parent) const 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); + + ColorButton* high_fill_cb = new ColorButton(parent); + high_fill_cb->set_color(QColor::fromRgba( + 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); + cb = create_checkbox(GlobalSettings::Key_View_ShowAnalogMinorGrid, SLOT(on_view_showAnalogMinorGrid_changed(int))); trace_view_layout->addRow(tr("Show analog minor grid in addition to div grid"), cb); @@ -494,6 +546,13 @@ void Settings::on_page_changed(QListWidgetItem *current, QListWidgetItem *previo pages->setCurrentIndex(page_list->row(current)); } +void Settings::on_general_theme_changed_changed(int state) +{ + GlobalSettings settings; + settings.setValue(GlobalSettings::Key_General_Theme, state); + settings.apply_theme(); +} + void Settings::on_view_zoomToFitDuringAcq_changed(int state) { GlobalSettings settings; @@ -530,6 +589,18 @@ void Settings::on_view_showSamplingPoints_changed(int state) settings.setValue(GlobalSettings::Key_View_ShowSamplingPoints, state ? true : false); } +void Settings::on_view_fillSignalHighAreas_changed(int state) +{ + GlobalSettings settings; + settings.setValue(GlobalSettings::Key_View_FillSignalHighAreas, state ? true : false); +} + +void Settings::on_view_fillSignalHighAreaColor_changed(QColor color) +{ + GlobalSettings settings; + settings.setValue(GlobalSettings::Key_View_FillSignalHighAreaColor, color.rgba()); +} + void Settings::on_view_showAnalogMinorGrid_changed(int state) { GlobalSettings settings;