commit-gnue
[Top][All Lists]
Advanced

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

r6078 - in trunk/gnue-forms: po src/uidrivers/gtk2/widgets


From: johannes
Subject: r6078 - in trunk/gnue-forms: po src/uidrivers/gtk2/widgets
Date: Sun, 25 Jul 2004 13:49:24 -0500 (CDT)

Author: johannes
Date: 2004-07-25 13:49:23 -0500 (Sun, 25 Jul 2004)
New Revision: 6078

Modified:
   trunk/gnue-forms/po/de.po
   trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py
   trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py
Log:
Added listbox widget to gtk2-driver, updated de-translation


Modified: trunk/gnue-forms/po/de.po
===================================================================
--- trunk/gnue-forms/po/de.po   2004-07-25 11:47:14 UTC (rev 6077)
+++ trunk/gnue-forms/po/de.po   2004-07-25 18:49:23 UTC (rev 6078)
@@ -149,6 +149,7 @@
 "\n"
 "     %s"
 msgstr ""
+"Datei kann nicht ge�ffnet werden\n   %s"
 
 #: GFInstance.py:293
 msgid ""
@@ -865,7 +866,7 @@
 #: uidrivers/gtk2/ErrorHandler.py:64 uidrivers/win32/ErrorHandler.py:43
 #: uidrivers/wx/ErrorHandler.py:63
 msgid "Unable to start GNUe Forms:"
-msgstr ""
+msgstr "GNUe Forms kann nicht gestartet werden:"
 
 #: uidrivers/gtk2/ErrorHandler.py:85
 msgid "Exception occured in GNUe Forms:"

Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py        2004-07-25 
11:47:14 UTC (rev 6077)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/_base.py        2004-07-25 
18:49:23 UTC (rev 6078)
@@ -100,7 +100,7 @@
   # Add a focus-in handler to a widget
   # ---------------------------------------------------------------------------
 
-  def _addFocusHandler (self, widget, lookupWidget = None):
+  def _addFocusHandler (self, widget, lookupWidget = None, after = False):
     """
     This function connects a handler to the widget's focus-in-event signal
     passing an optional lookup widget to it. A lookup widget will be used for
@@ -111,11 +111,11 @@
     if lookupWidget is None:
       lookupWidget = widget
     GDebug.printMesg (2, "ADD FOCUSHANDLER %s (%s)" % (widget, lookupWidget))
-    widget._focusHandler = widget.connect ('focus-in-event',
-                                           self.__focusInHandler, lookupWidget)
+    method = after and widget.connect_after or widget.connect
+    widget._focusHandler = method ('focus-in-event', self.__focusInHandler,
+                                   lookupWidget)
 
 
-
   # ---------------------------------------------------------------------------
   # Handle focus signals from widgets
   # ---------------------------------------------------------------------------
@@ -191,7 +191,6 @@
     GDebug.printMesg (1, "indexedFocus: %s [%s]" % (widget, index))
 
     item    = isinstance (widget, gtk.Combo) and widget.entry or widget
-    handler = hasattr (item, '_focusHandler') and item._focusHandler or None
 
     self._blockHandler (item, '_focusHandler')
 
@@ -264,6 +263,18 @@
       widget.set_active (value)
       self._blockHandler (widget, '_clickedHandler', True)
 
+    elif isinstance (widget, gtk.TreeView):
+      gfObject = self._uiDriver._WidgetToGFObj [widget]
+      if gfObject.style == "listbox":
+        self._updateChoices (widget, gfObject)
+
+      if value in self.items:
+        path = "%s" % self.items.index (value)
+        gDebug (1, "Changing path of treeView to %s" % path)
+        self._blockHandler (self.selection, '_changedHandler')
+        widget.set_cursor (path)
+        self._blockHandler (self.selection, '_changedHandler', True)
+
     else:
       item = isinstance (widget, gtk.TextView) and widget.get_buffer () or \
           widget

Modified: trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py
===================================================================
--- trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py        2004-07-25 
11:47:14 UTC (rev 6077)
+++ trunk/gnue-forms/src/uidrivers/gtk2/widgets/entry.py        2004-07-25 
18:49:23 UTC (rev 6078)
@@ -35,24 +35,27 @@
 class UIEntry (UIHelper):
 
   def _createWidget (self, event, spacer):
-    object = event.object
-    style  = object.style
+    gfObject = event.object
+    style    = gfObject.style
 
     if style == 'dropdown':
-      newWidget = self.__createDropDown (object, event)
+      newWidget = self.__createDropDown (gfObject, event)
 
     elif style == 'label':
-      newWidget = self.__createLabel (object, event)
+      newWidget = self.__createLabel (gfObject, event)
 
     elif style == 'checkbox':
-      newWidget = self.__createCheckbox (object, event)
+      newWidget = self.__createCheckbox (gfObject, event)
 
+    elif style == 'listbox':
+      newWidget = self.__createListBox (gfObject, event)
+
     else:
-      if hasattr (object, 'Char__height') and object.Char__height > 1:
-        newWidget = self.__createTextView (object, event)
+      if hasattr (gfObject, 'Char__height') and gfObject.Char__height > 1:
+        newWidget = self.__createTextView (gfObject, event)
 
       else:
-        newWidget = self.__createEntry (object, event)
+        newWidget = self.__createEntry (gfObject, event)
 
     event.container.show_all ()
     return newWidget
@@ -391,19 +394,116 @@
   # Update the list of allowed values on a Combo widget if neccessary
   # ---------------------------------------------------------------------------
 
-  def _updateChoices (self, combo, gfObject):
-    if not isinstance (combo, gtk.Combo):
-      gDebug (1, "Called 'updateChoices' on non-Combo-widget!")
-      return
+  def _updateChoices (self, widget, gfObject):
+    if isinstance (widget, gtk.Combo):
+      if widget._origAllowedValues != gfObject._field._allowedValues:
+        (self.reverse, self.choices) = gfObject._field.allowedValues ()
+        self.choices.sort ()
 
-    if combo._origAllowedValues != gfObject._field._allowedValues:
-      (self.reverse, self.choices) = gfObject._field.allowedValues ()
-      self.choices.sort ()
+        widget._origAllowedValues = gfObject._field._allowedValues
+        widget.set_popdown_strings (self.choices)
 
-      combo._origAllowedValues = gfObject._field._allowedValues
-      combo.set_popdown_strings (self.choices)
+    elif isinstance (widget, gtk.TreeView):
+      if widget._origAllowedValues != gfObject._field._allowedValues:
+        self.listStore.clear ()
 
+        self.choices = gfObject._field.allowedValues () [0]
 
+        nDict = {}
+        for (key, value) in self.choices.items ():
+          nDict [value] = key
+
+        self.items = nDict.keys ()
+        self.items.sort ()
+
+        for key in self.items:
+          self.listStore.append ([nDict [key], key])
+
+        widget._origAllowedValues = gfObject._field._allowedValues
+
+
+  # ---------------------------------------------------------------------------
+  # Create a listbox entry
+  # ---------------------------------------------------------------------------
+
+  def __createListBox (self, gfObject, event):
+    self.listStore = gtk.ListStore (str, str)
+
+    hbox = gtk.HBox (False, 0)
+    hbox.set_size_request (self.itemWidth, self.itemHeight)
+
+    frame = gtk.Frame ()
+    frame.set_shadow_type (gtk.SHADOW_IN)
+
+    hbox.pack_start (frame)
+    frame.show ()
+
+    newWidget = gtk.TreeView (self.listStore)
+    newWidget.set_headers_visible (False)
+    newWidget._origAllowedValues = None
+    self._updateChoices (newWidget, gfObject)
+
+    if newWidget.get_vadjustment () is not None:
+      adjustment = newWidget.get_vadjustment ()
+      scroll = gtk.VScrollbar (adjustment)
+      scroll.set_size_request (-1, self.itemHeight)
+      hbox.pack_start (scroll, False, False)
+      newWidget._focusOnScroll = adjustment.connect ('value-changed',
+                                           self._focusOnScroll, newWidget)
+      scroll.show ()
+
+    newWidget.modify_font (self._uiDriver.font)
+    self.selection = newWidget.get_selection ()
+    self.selection.set_mode (gtk.SELECTION_SINGLE)
+    self.selection._changedHandler = self.selection.connect ('changed',
+        self._selectionChanged, gfObject)
+
+    tvCol = gtk.TreeViewColumn ()
+    newWidget.append_column (tvCol)
+
+    cell = gtk.CellRendererText ()
+    tvCol.pack_start (cell, False)
+    tvCol.add_attribute (cell, 'text', 1)
+
+    frame.add (newWidget)
+    if event.initialize:
+      self._addFocusHandler (newWidget, newWidget, True)
+      self._addDefaultEventHandler (newWidget)
+
+    newWidget.show ()
+
+    event.container.put (hbox, self.itemX, self.itemY)
+
+    return newWidget
+
+
+  # ---------------------------------------------------------------------------
+  # Handle changes of selection in the tree view
+  # ---------------------------------------------------------------------------
+
+  def _selectionChanged (self, treeSelection, gfObject):
+    (model, tIter) = treeSelection.get_selected ()
+    desc = model.get_value (tIter, 1)
+    fRef = gfObject._form
+
+    action = events.Event ('requestFOCUS', gfObject, _form = fRef)
+    self._eventHandler (action)
+
+    action = events.Event ('requestREPLACEVALUE', text = desc, _form = fRef)
+    self._eventHandler (action)
+
+
+  # ---------------------------------------------------------------------------
+  # Move ui-focus to the corresponding tree view if a slider gets changed
+  # ---------------------------------------------------------------------------
+
+  def _focusOnScroll (self, adjustment, treeView):
+    gDebug (3, "grabing focus to %s on adjustment-change %s" % (treeView,
+      adjustment))
+    self._blockHandler (treeView, '_focusHandler')
+    treeView.grab_focus ()
+    self._blockHandler (treeView, '_focusHandler', True)
+
 # -----------------------------------------------------------------------------
 # Base configuration data
 # -----------------------------------------------------------------------------





reply via email to

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