changeset 26140:8fb8cb4a03f8

preference for (not) using system icon theme * gui-preferences.h: constants for key and default of new preference * resource-manager.cc (do_icon): use icon files provided by octave gui instead ofsystem icon theme if desired from preferences * settings-dialog.cc (settings_dialog): initialize new checkbox with related entry from preferences file; (write_changed_settings): store value of new checkbox * settings-dialog.ui: new checkbox for using the system icon theme in
author Torsten <mttl@mailbox.org>
date Mon, 26 Nov 2018 20:59:05 +0100
parents 198902f24ef6
children 42a06f8e6966
files libgui/src/gui-preferences.h libgui/src/resource-manager.cc libgui/src/settings-dialog.cc libgui/src/settings-dialog.ui
diffstat 4 files changed, 90 insertions(+), 64 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/src/gui-preferences.h	Mon Nov 26 20:53:24 2018 +0100
+++ b/libgui/src/gui-preferences.h	Mon Nov 26 20:59:05 2018 +0100
@@ -61,7 +61,7 @@
   QStyle::PM_LargeIconSize
 };
 const gui_pref global_icon_size ("toolbar_icon_size", QVariant (0));
-
+const gui_pref global_icon_theme ("use_system_icon_theme", QVariant (true));
 
 // Console preferences
 
--- a/libgui/src/resource-manager.cc	Mon Nov 26 20:53:24 2018 +0100
+++ b/libgui/src/resource-manager.cc	Mon Nov 26 20:59:05 2018 +0100
@@ -363,6 +363,12 @@
 
   QIcon resource_manager::do_icon (const QString& icon_name, bool fallback)
   {
+    // If system icon theme is not desired, take own icon files
+    if (! m_settings->value (global_icon_theme.key, global_icon_theme.def).toBool ())
+      return QIcon (":/actions/icons/" + icon_name + ".png");
+
+    // Use system icon theme with own files as fallback except the fallback is
+    // explicitly disabled (fallback=false)
     if (fallback)
       return QIcon::fromTheme (icon_name,
                                QIcon (":/actions/icons/" + icon_name + ".png"));
--- a/libgui/src/settings-dialog.cc	Mon Nov 26 20:53:24 2018 +0100
+++ b/libgui/src/settings-dialog.cc	Mon Nov 26 20:59:05 2018 +0100
@@ -124,7 +124,7 @@
     else
       comboBox_language->setCurrentIndex (0);  // System is default
 
-    // icon size
+    // icon size and theme
     QButtonGroup *icon_size_group = new QButtonGroup (this);
     icon_size_group->addButton (icon_size_small);
     icon_size_group->addButton (icon_size_normal);
@@ -133,6 +133,7 @@
     icon_size_normal->setChecked (true);  // the default
     icon_size_small->setChecked (icon_size < 0);
     icon_size_large->setChecked (icon_size > 0);
+    cb_system_icon_theme->setChecked (settings->value (global_icon_theme.key, global_icon_theme.def).toBool ());
 
     // which icon has to be selected
     QButtonGroup *icon_group = new QButtonGroup (this);
@@ -814,9 +815,10 @@
     settings->setValue ("DockWidgets/title_fg_color", m_widget_title_fg_color->color ());
     settings->setValue ("DockWidgets/title_fg_color_active", m_widget_title_fg_color_active->color ());
 
-    // icon size
+    // icon size and theme
     int icon_size = icon_size_large->isChecked () - icon_size_small->isChecked ();
     settings->setValue (global_icon_size.key, icon_size);
+    settings->setValue (global_icon_theme.key, cb_system_icon_theme->isChecked ());
 
     // native file dialogs
     settings->setValue ("use_native_file_dialogs", cb_use_native_file_dialogs->isChecked ());
--- a/libgui/src/settings-dialog.ui	Mon Nov 26 20:53:24 2018 +0100
+++ b/libgui/src/settings-dialog.ui	Mon Nov 26 20:59:05 2018 +0100
@@ -32,7 +32,7 @@
       </size>
      </property>
      <property name="currentIndex">
-      <number>3</number>
+      <number>0</number>
      </property>
      <widget class="QWidget" name="tab_general">
       <property name="enabled">
@@ -65,47 +65,6 @@
              <layout class="QVBoxLayout" name="verticalLayout_21">
               <item>
                <layout class="QGridLayout" name="gridLayout">
-                <item row="2" column="1">
-                 <layout class="QHBoxLayout" name="horizontalLayout_6">
-                  <item>
-                   <widget class="QRadioButton" name="icon_size_small">
-                    <property name="text">
-                     <string>Small</string>
-                    </property>
-                   </widget>
-                  </item>
-                  <item>
-                   <widget class="QRadioButton" name="icon_size_normal">
-                    <property name="text">
-                     <string>Normal</string>
-                    </property>
-                    <property name="checked">
-                     <bool>true</bool>
-                    </property>
-                   </widget>
-                  </item>
-                  <item>
-                   <widget class="QRadioButton" name="icon_size_large">
-                    <property name="text">
-                     <string>Large</string>
-                    </property>
-                   </widget>
-                  </item>
-                  <item>
-                   <spacer name="horizontalSpacer_4">
-                    <property name="orientation">
-                     <enum>Qt::Horizontal</enum>
-                    </property>
-                    <property name="sizeHint" stdset="0">
-                     <size>
-                      <width>40</width>
-                      <height>20</height>
-                     </size>
-                    </property>
-                   </spacer>
-                  </item>
-                 </layout>
-                </item>
                 <item row="1" column="1">
                  <layout class="QHBoxLayout" name="horizontalLayout_8">
                   <item>
@@ -116,6 +75,13 @@
                    </widget>
                   </item>
                   <item>
+                   <widget class="QLabel" name="label_10">
+                    <property name="text">
+                     <string>(requires restart)</string>
+                    </property>
+                   </widget>
+                  </item>
+                  <item>
                    <spacer name="horizontalSpacer_3">
                     <property name="orientation">
                      <enum>Qt::Horizontal</enum>
@@ -130,17 +96,7 @@
                   </item>
                  </layout>
                 </item>
-                <item row="2" column="0">
-                 <widget class="QLabel" name="label_8">
-                  <property name="text">
-                   <string>Icon size</string>
-                  </property>
-                  <property name="alignment">
-                   <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
-                  </property>
-                 </widget>
-                </item>
-                <item row="8" column="0">
+                <item row="10" column="0">
                  <widget class="QCheckBox" name="cb_prompt_to_exit">
                   <property name="text">
                    <string>Confirm before exiting</string>
@@ -150,11 +106,11 @@
                 <item row="1" column="0">
                  <widget class="QLabel" name="label_2">
                   <property name="text">
-                   <string>Language (requires restart)</string>
+                   <string>Language</string>
                   </property>
                  </widget>
                 </item>
-                <item row="4" column="1">
+                <item row="6" column="1">
                  <layout class="QHBoxLayout" name="horizontalLayout_4">
                   <item>
                    <layout class="QGridLayout" name="gridLayout_13">
@@ -316,7 +272,7 @@
                   </item>
                  </layout>
                 </item>
-                <item row="4" column="0">
+                <item row="6" column="0">
                  <widget class="QLabel" name="label_15">
                   <property name="text">
                    <string>Dock widget title bar</string>
@@ -326,7 +282,7 @@
                   </property>
                  </widget>
                 </item>
-                <item row="3" column="1">
+                <item row="4" column="1">
                  <layout class="QHBoxLayout" name="horizontalLayout_9">
                   <item>
                    <widget class="QRadioButton" name="general_icon_octave">
@@ -367,14 +323,14 @@
                   </item>
                  </layout>
                 </item>
-                <item row="3" column="0">
+                <item row="4" column="0">
                  <widget class="QLabel" name="label_9">
                   <property name="text">
                    <string>Icon set for dock widgets</string>
                   </property>
                  </widget>
                 </item>
-                <item row="7" column="0">
+                <item row="9" column="0">
                  <widget class="QCheckBox" name="cb_status_bar">
                   <property name="text">
                    <string>Show status bar</string>
@@ -384,7 +340,7 @@
                   </property>
                  </widget>
                 </item>
-                <item row="6" column="0">
+                <item row="8" column="0">
                  <widget class="QCheckBox" name="cb_cursor_blinking">
                   <property name="text">
                    <string>Cursor blinking</string>
@@ -394,7 +350,7 @@
                   </property>
                  </widget>
                 </item>
-                <item row="5" column="0">
+                <item row="7" column="0">
                  <widget class="QCheckBox" name="cb_use_native_file_dialogs">
                   <property name="text">
                    <string>Use native file dialogs</string>
@@ -404,6 +360,68 @@
                   </property>
                  </widget>
                 </item>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_8">
+                  <property name="text">
+                   <string>Toolbar Icons</string>
+                  </property>
+                  <property name="alignment">
+                   <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="1">
+                 <layout class="QVBoxLayout" name="verticalLayout_5">
+                  <item>
+                   <layout class="QHBoxLayout" name="horizontalLayout_6">
+                    <item>
+                     <widget class="QRadioButton" name="icon_size_small">
+                      <property name="text">
+                       <string>Small</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item>
+                     <widget class="QRadioButton" name="icon_size_normal">
+                      <property name="text">
+                       <string>Normal</string>
+                      </property>
+                      <property name="checked">
+                       <bool>true</bool>
+                      </property>
+                     </widget>
+                    </item>
+                    <item>
+                     <widget class="QRadioButton" name="icon_size_large">
+                      <property name="text">
+                       <string>Large</string>
+                      </property>
+                     </widget>
+                    </item>
+                    <item>
+                     <spacer name="horizontalSpacer_4">
+                      <property name="orientation">
+                       <enum>Qt::Horizontal</enum>
+                      </property>
+                      <property name="sizeHint" stdset="0">
+                       <size>
+                        <width>40</width>
+                        <height>20</height>
+                       </size>
+                      </property>
+                     </spacer>
+                    </item>
+                   </layout>
+                  </item>
+                  <item>
+                   <widget class="QCheckBox" name="cb_system_icon_theme">
+                    <property name="text">
+                     <string>Use system icon theme if available (requires restart)</string>
+                    </property>
+                   </widget>
+                  </item>
+                 </layout>
+                </item>
                </layout>
               </item>
              </layout>