commit-gnue
[Top][All Lists]
Advanced

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

r6071 - in trunk/gnue-forms/src/uidrivers/gtk2: . widgets


From: johannes
Subject: r6071 - in trunk/gnue-forms/src/uidrivers/gtk2: . widgets
Date: Sat, 24 Jul 2004 13:25:44 -0500 (CDT)

Author: johannes
Date: 2004-07-24 13:25:43 -0500 (Sat, 24 Jul 2004)
New Revision: 6071

Modified:
   trunk/gnue-forms/src/uidrivers/gtk2/UIdriver.py
   trunk/gnue-forms/src/uidrivers/gtk2/widgets/button.py
   trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py
   trunk/gnue-forms/src/uidrivers/gtk2/widgets/label.py
Log:
driver now supports the default application (scaleable) font. Note: make sure 
the fixedFont option in gnue.conf is turned off.


Modified: trunk/gnue-forms/src/uidrivers/gtk2/UIdriver.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/UIdriver.py     2004-07-24 15:52:36 UTC 
(rev 6070)
+++ trunk/gnue-forms/src/uidrivers/gtk2/UIdriver.py     2004-07-24 18:25:43 UTC 
(rev 6071)
@@ -47,7 +47,6 @@
   raise Exceptions.DriverNotSupported, \
       _("The GNUe-Forms GTK driver requires PyGTK and GTK 2.x.")
 
-
 from gnue.common import events
 from gnue.common.apps import GDebug
 from gnue.common.apps import GConfig
@@ -63,7 +62,6 @@
 from gnue.forms.uidrivers.gtk2.widgets._base  import *
 from gnue.forms.uidrivers.gtk2 import about
 
-
 # =============================================================================
 # This class implements a User Interface for GTK2
 # =============================================================================
@@ -117,37 +115,13 @@
       self.splash.Show ()
       gtk.timeout_add (1500, lambda splash: splash.destroy (), self.splash)
 
-    #
-    # Set default form font
-    #
+    self.font       = APPFONT
+    self.textWidth  = CHAR_WIDTH
+    self.textHeight = CHAR_HEIGHT
 
-    if gConfigForms ('fixedWidthFont'):
-      fontname = 'monospace %s' % gConfigForms ('pointSize')
-    else:
-      fontname = 'bitstream vera %s' % gConfigForms ('pointSize')
+    gDebug (1, "Metrics %s x %s" % (self.textWidth, self.textHeight))
+    gDebug (1, "Default %s x %s" % (CHAR_WIDTH, CHAR_HEIGHT))
 
-    self.mono_font = pango.FontDescription (fontname)
-
-    #
-    # Create a dummy window used to compute sizes
-    #
-    l = gtk.Label ('')
-    try:
-      l.modify_font (self.mono_font)
-      c = l.get_pango_context ()
-      m = c.get_metrics (self.mono_font, \
-          pango.pango_language_from_string ('english'))
-
-      self.textWidth  = pango.PIXELS (m.get_approximate_char_width ())
-      self.textHeight = pango.PIXELS (m.get_ascent () + m.get_descent ())
-      self.textHeight = int (self.textHeight * 1.3)
-
-      GDebug.printMesg (1, "%s x %s" % (self.textWidth, self.textHeight))
-
-    finally:
-      l.destroy ()
-
-
     self.widgetWidth  = self.textWidth
     self.widgetHeight = self.textHeight + 3
 
@@ -338,3 +312,43 @@
       return unicode (aValue, i18n.encoding)
     else:
       return aValue
+
+
+# -----------------------------------------------------------------------------
+# Get font metrics and font description for a given font 
+# -----------------------------------------------------------------------------
+
+def _getFontMetrics (fontName = None):
+  """
+  """
+  label = gtk.Label ()
+
+  try:
+    if fontName is not None:
+      fontDesc = pango.FontDescription (fontName)
+      label.modify_font (fontDesc)
+
+    context  = label.get_pango_context ()
+    if fontName is None:
+      fontDesc = context.get_font_description ()
+    metrics  = context.get_metrics (fontDesc)
+
+    width  = pango.PIXELS (metrics.get_approximate_char_width ())
+    height = pango.PIXELS (metrics.get_ascent () + metrics.get_descent ())
+
+  finally:
+    label.destroy ()
+
+  return (width, height, fontDesc)
+
+
+# =============================================================================
+# Get the current default application font and it's metrics
+# =============================================================================
+
+if gConfigForms ('fixedWidthFont'):
+  fontname = 'monospace %s' % gConfigForms ('pointSize')
+else:
+  fontname = None
+
+(CHAR_WIDTH, CHAR_HEIGHT, APPFONT) = _getFontMetrics (fontname)

Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/button.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/button.py       2004-07-24 
15:52:36 UTC (rev 6070)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/button.py       2004-07-24 
18:25:43 UTC (rev 6071)
@@ -42,7 +42,7 @@
 
     text = "%s" % object.label
     newWidget = gtk.Button (self._makeSafe (text))
-    newWidget.modify_font (self._uiDriver.mono_font)
+    newWidget.modify_font (self._uiDriver.font)
     newWidget.set_size_request (self.itemWidth, self.itemHeight)
 
     if event.initialize:

Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py        2004-07-24 
15:52:36 UTC (rev 6070)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py        2004-07-24 
18:25:43 UTC (rev 6071)
@@ -63,7 +63,7 @@
 
   def __createDropDown (self, gfObject, event):
     newWidget = gtk.Combo ()
-    newWidget.entry.modify_font (self._uiDriver.mono_font)
+    newWidget.entry.modify_font (self._uiDriver.font)
     newWidget._origAllowedValues = None
     self._updateChoices (newWidget, gfObject)
 
@@ -101,7 +101,7 @@
 
   def __createLabel (self, gfObject, event):
     newWidget = gtk.Label ("")
-    newWidget.modify_font (self._uiDriver.mono_font)
+    newWidget.modify_font (self._uiDriver.font)
     event.container.put (newWidget, self.itemX, self.itemY)
     newWidget.show ()
 
@@ -115,7 +115,7 @@
   def __createCheckbox (self, gfObject, event):
     label = len (gfObject.label) and gfObject.label or None
     newWidget = gtk.CheckButton (label)
-    newWidget.modify_font (self._uiDriver.mono_font)
+    newWidget.modify_font (self._uiDriver.font)
     event.container.put (newWidget, self.itemX, self.itemY)
     newWidget.show ()
 
@@ -135,7 +135,7 @@
   def __createTextView (self, gfObject, event):
 
     newWidget = gtk.TextView ()
-    newWidget.modify_font (self._uiDriver.mono_font)
+    newWidget.modify_font (self._uiDriver.font)
     newWidget.set_wrap_mode (gtk.WRAP_CHAR)
 
     if gfObject.readonly:
@@ -178,7 +178,7 @@
     maxLen = hasattr (gfObject, 'maxLength') and gfObject.maxLength or 0
 
     newWidget = gtk.Entry (maxLen)
-    newWidget.modify_font (self._uiDriver.mono_font)
+    newWidget.modify_font (self._uiDriver.font)
     newWidget.set_size_request (self.itemWidth, -1)
 
     newWidget._insert_handler = newWidget.connect ('insert-text',

Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/label.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/label.py        2004-07-24 
15:52:36 UTC (rev 6070)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/label.py        2004-07-24 
18:25:43 UTC (rev 6071)
@@ -53,7 +53,7 @@
     text = "%s" % gfObject.text
 
     newWidget = gtk.Label (self._makeSafe (text))
-    newWidget.modify_font (self._uiDriver.mono_font)
+    newWidget.modify_font (self._uiDriver.font)
 
     newWidget.set_justify (_alignmentStyle [gfObject.alignment])
 





reply via email to

[Prev in Thread] Current Thread [Next in Thread]