[27574] in Source-Commits

home help back first fref pref prev next nref lref last post

xdsc commit: Tweak font and UI

daemon@ATHENA.MIT.EDU (Jonathan D Reed)
Mon Feb 3 15:59:26 2014

Date: Mon, 3 Feb 2014 15:59:19 -0500
From: Jonathan D Reed <jdreed@MIT.EDU>
Message-Id: <201402032059.s13KxJZQ010565@drugstore.mit.edu>
To: source-commits@MIT.EDU

https://github.com/mit-athena/xdsc/commit/cd3c98cd5739557f41ebad8034c7dccd45bc7906
commit cd3c98cd5739557f41ebad8034c7dccd45bc7906
Author: Jonathan Reed <jdreed@mit.edu>
Date:   Tue Dec 10 13:57:06 2013 -0500

    Tweak font and UI
    
    - Per andersk's suggestion, Use Gio.Settings to determine the preferred
      monospace font, rather than hardcoding Courier.  However, we don't use
      get_string() since that segfaults if the string isn't there.  Fortunately,
      Gio.Settings pretends to be a dictionary.
    - Add a margin in the transaction textview widget

 xdsc.py |   18 ++++++++++++------
 xdsc.ui |    2 ++
 2 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/xdsc.py b/xdsc.py
index e816671..44635ff 100755
--- a/xdsc.py
+++ b/xdsc.py
@@ -16,7 +16,7 @@ from email.mime.text import MIMEText
 from optparse import OptionParser
 from xml.etree import ElementTree
 
-from gi.repository import Gtk, GObject, Pango, GLib, Gdk
+from gi.repository import Gtk, GObject, Pango, GLib, Gdk, Gio
 
 import discuss
 
@@ -189,9 +189,9 @@ class DiscussWrapper:
 
 class Xdsc:
     # A mapping of widget id to font description string
-    default_fonts_map = {'help_textview': 'Courier 8',
-                       'transaction_textview': 'Courier 8',
-                       'upper_treeview': 'Courier 8'}
+    monospace_font_widgets = ('help_textview',
+                              'transaction_textview',
+                              'upper_treeview')
 
     # A mapping of menus to the buttons they pop down from
     # for positioning.
@@ -216,8 +216,14 @@ class Xdsc:
             if isinstance(self.builder.get_object(object_id), Gtk.Widget):
                 self.builder.get_object(object_id).set_name(object_id)
         # Set some font defaults
-        for widget_id in self.default_fonts_map:
-            pangofont = Pango.FontDescription(self.default_fonts_map[widget_id])
+        for widget_id in self.monospace_font_widgets:
+            gsettings = Gio.Settings('org.gnome.desktop.interface')
+            try:
+                font_name = gsettings['monospace-font-name']
+            except KeyError:
+                font_name = 'Courier'
+            pangofont = Pango.FontDescription(font_name)
+            pangofont.set_size(9 * Pango.SCALE)
             self.builder.get_object(widget_id).override_font(pangofont)
         self.builder.connect_signals(self)
         self.main_window = self.builder.get_object('xdsc_main_window')
diff --git a/xdsc.ui b/xdsc.ui
index f489723..09d161f 100644
--- a/xdsc.ui
+++ b/xdsc.ui
@@ -1338,6 +1338,8 @@ permission to enter transactions in a meeting.
                     <property name="can_focus">True</property>
                     <property name="editable">False</property>
                     <property name="wrap_mode">char</property>
+                    <property name="left_margin">5</property>
+                    <property name="right_margin">2</property>
                     <property name="buffer">transaction_buffer</property>
                     <signal name="key-press-event" handler="font_size_keypress_event" swapped="no"/>
                   </object>

home help back first fref pref prev next nref lref last post