From db0cb818c87cf5697f57828222c655b2fa818284 Mon Sep 17 00:00:00 2001
From: Daniel Drake <dsd@laptop.org>
Date: Fri, 27 Nov 2009 11:34:59 +0000
Subject: [PATCH] Configure fonts through GConf

Sugar currently configures fonts through gtkrc and through the
sugar.graphics.style class, both of which are hard to modify by
implementors/deployers.

Move this into GConf and apply these settings to the sugar shell
at startup.

In the longer term, Sayamindu's efforts to create a settings manager
will build on this work.
---
 bin/sugar-session     |    9 +++++++++
 data/gtkrc.em         |    1 -
 data/sugar.schemas.in |   23 +++++++++++++++++++++++
 3 files changed, 32 insertions(+), 1 deletions(-)

diff --git a/bin/sugar-session b/bin/sugar-session
index f06479d..ef22db0 100644
--- a/bin/sugar-session
+++ b/bin/sugar-session
@@ -207,6 +207,13 @@ def bootstrap():
     if sys.modules.has_key('xklavier'):
         gobject.idle_add(setup_keyboard_cb)
 
+def set_fonts():
+    client = gconf.client_get_default()
+    face = client.get_string('/desktop/sugar/font/default_face')
+    size = client.get_float('/desktop/sugar/font/default_size')
+    settings = gtk.settings_get_default()
+    settings.set_property("gtk-font-name", "%s %f" % (face, size))
+
 def main():
     cleanup_logs()
     logger.start('shell')
@@ -219,6 +226,8 @@ def main():
     if timezone is not None and timezone:
         os.environ['TZ'] = timezone
 
+    set_fonts()
+
     intro.check_profile()
 
     start_ui_service()
diff --git a/data/gtkrc.em b/data/gtkrc.em
index b9eeb7d..d4e1a7c 100644
--- a/data/gtkrc.em
+++ b/data/gtkrc.em
@@ -6,7 +6,6 @@ else:
 }@
 gtk-theme-name = "sugar-@scaling"
 gtk-icon-theme-name = "sugar"
-gtk-font-name = "Sans Serif 10"
 gtk-cursor-theme-name = "sugar"
 gtk-toolbar-style = GTK_TOOLBAR_ICONS
 gtk-icon-sizes = "@icon_sizes"
diff --git a/data/sugar.schemas.in b/data/sugar.schemas.in
index 8c43930..48770de 100644
--- a/data/sugar.schemas.in
+++ b/data/sugar.schemas.in
@@ -216,6 +216,29 @@
       </locale>
     </schema>
 
+    <schema>
+      <key>/schemas/desktop/sugar/font/default_face</key>
+      <applyto>/desktop/sugar/font/default_face</applyto>
+      <owner>sugar</owner>
+      <type>string</type>
+      <default>Sans Serif</default>
+      <locale name="C">
+        <short>Default font face</short>
+        <long>Font face that is used throughout the desktop.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/desktop/sugar/font/default_size</key>
+      <applyto>/desktop/sugar/font/default_size</applyto>
+      <owner>sugar</owner>
+      <type>float</type>
+      <default>10</default>
+      <locale name="C">
+        <short>Default font size</short>
+        <long>Font size that is used throughout the desktop.</long>
+      </locale>
+    </schema>
+
 
   </schemalist>
 </gconfschemafile>
-- 
1.6.2.5

