[gnome-builder] prefs: add night-mode switch to preferences



commit 046bc6bcf20709ac9d0b218c4f09ecdc7caa7b13
Author: Christian Hergert <christian hergert me>
Date:   Sat May 16 04:24:57 2015 -0700

    prefs: add night-mode switch to preferences
    
    This also makes `nighthack` and `dayhack` persist between multiple
    executions of Builder.

 data/gsettings/org.gnome.builder.gschema.xml |    5 +++++
 data/ui/gb-preferences-page-theme.ui         |   13 +++++++++++++
 src/app/gb-application.c                     |   11 +++++++++--
 3 files changed, 27 insertions(+), 2 deletions(-)
---
diff --git a/data/gsettings/org.gnome.builder.gschema.xml b/data/gsettings/org.gnome.builder.gschema.xml
index 95c72e8..acb2421 100644
--- a/data/gsettings/org.gnome.builder.gschema.xml
+++ b/data/gsettings/org.gnome.builder.gschema.xml
@@ -15,5 +15,10 @@
       <summary>Window maximized</summary>
       <description>Window maximized state</description>
     </key>
+    <key name="night-mode" type="b">
+      <default>false</default>
+      <summary>Night Mode</summary>
+      <description>Prefer dark application chrome.</description>
+    </key>
   </schema>
 </schemalist>
diff --git a/data/ui/gb-preferences-page-theme.ui b/data/ui/gb-preferences-page-theme.ui
index 4b59697..c6603d6 100644
--- a/data/ui/gb-preferences-page-theme.ui
+++ b/data/ui/gb-preferences-page-theme.ui
@@ -13,6 +13,16 @@
             <property name="orientation">vertical</property>
             <property name="spacing">6</property>
             <child>
+              <object class="GbPreferencesSwitch" id="night_mode">
+                <property name="title" translatable="yes">Night Mode</property>
+                <property name="description" translatable="yes">Use dark colors for the application 
chrome.</property>
+                <property name="settings">settings</property>
+                <property name="settings-schema-key">night-mode</property>
+                <property name="size-group">control_group</property>
+                <property name="visible">true</property>
+              </object>
+            </child>
+            <child>
               <object class="GbPreferencesSwitch" id="show_grid_lines_switch">
                 <property name="title" translatable="yes">Display Grid Pattern</property>
                 <property name="description" translatable="yes">Display a grid pattern under the source 
code.</property>
@@ -36,6 +46,9 @@
   <object class="GSettings" id="editor_settings">
     <property name="schema-id">org.gnome.builder.editor</property>
   </object>
+  <object class="GSettings" id="settings">
+    <property name="schema-id">org.gnome.builder</property>
+  </object>
   <object class="GtkSizeGroup" id="control_group">
     <property name="mode">horizontal</property>
   </object>
diff --git a/src/app/gb-application.c b/src/app/gb-application.c
index 388d62e..8a51fd0 100644
--- a/src/app/gb-application.c
+++ b/src/app/gb-application.c
@@ -106,7 +106,9 @@ gb_application_make_skeleton_dirs (GbApplication *self)
 static void
 gb_application_register_theme_overrides (GbApplication *application)
 {
-  GtkCssProvider *provider;
+  g_autoptr(GSettings) settings = NULL;
+  g_autoptr(GtkCssProvider) provider = NULL;
+  GtkSettings *gtk_settings;
   GdkScreen *screen;
 
   IDE_ENTRY;
@@ -118,7 +120,12 @@ gb_application_register_theme_overrides (GbApplication *application)
   screen = gdk_screen_get_default ();
   gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider),
                                              GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-  g_object_unref (provider);
+
+  gtk_settings = gtk_settings_get_for_screen (screen);
+  settings = g_settings_new ("org.gnome.builder");
+  g_settings_bind (settings, "night-mode",
+                   gtk_settings, "gtk-application-prefer-dark-theme",
+                   G_SETTINGS_BIND_DEFAULT);
 
   IDE_EXIT;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]