]> sigrok.org Git - pulseview.git/blobdiff - pv/dialogs/settings.cpp
Add themes and implement theme support
[pulseview.git] / pv / dialogs / settings.cpp
index ad4fd4a5f6c31519175e3877457179bd8c9340d9..0795879675054403477a3744ebec6079c7a34246 100644 (file)
@@ -126,6 +126,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));
 
@@ -192,6 +201,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 (pair<QString, QString> 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;
@@ -507,6 +547,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;