commit-gnue
[Top][All Lists]
Advanced

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

[gnue] r8345 - in trunk/gnue-designer/src: base forms/PagePainter forms/


From: jcater
Subject: [gnue] r8345 - in trunk/gnue-designer/src: base forms/PagePainter forms/PagePainter/skins ui/wx/uihelpers/doccanvas
Date: Mon, 3 Apr 2006 18:25:31 -0500 (CDT)

Author: jcater
Date: 2006-04-03 16:09:09 -0500 (Mon, 03 Apr 2006)
New Revision: 8345

Modified:
   trunk/gnue-designer/src/base/Document.py
   trunk/gnue-designer/src/forms/PagePainter/PagePainter.py
   trunk/gnue-designer/src/forms/PagePainter/skins/default.py
   trunk/gnue-designer/src/ui/wx/uihelpers/doccanvas/canvas.py
Log:
added some convenience wrappers to GObject (in the context of a designer 
session) to help in generating editing events

Modified: trunk/gnue-designer/src/base/Document.py
===================================================================
--- trunk/gnue-designer/src/base/Document.py    2006-04-03 19:56:14 UTC (rev 
8344)
+++ trunk/gnue-designer/src/base/Document.py    2006-04-03 21:09:09 UTC (rev 
8345)
@@ -37,6 +37,7 @@
 import os
 import time
 import dircache
+import new
 
 #----------------------------------------------------------------------------
 # GNUe Imports
@@ -610,7 +611,7 @@
     def __inventory (self, object):
 
         # Add a GObjectHelper to intercept __getitem__ calls on GObject
-        GObjectHelper(self, object)
+        add_GObject_hooks(object, self)
 
         if object != self.rootObject:
 
@@ -794,33 +795,53 @@
                 continue
 
 # ===========================================================================
-# Wrapper Class
+# GObject Hooks
 # ===========================================================================
-class GObjectHelper:
-    def __init__(self, instance, object):
-        self.document = instance
-        self.object = object
-        object._setItemHook = self._setItemHook
+def add_GObject_hooks(object, document): 
+    """
+    Capture the _setItemHook event, so that setting atttributes like: 
+    
+          gobject['text'] = newtext
 
-    # Replace the getitem hooks from GObject
-    # This is for the wizards, so they can do
-    # entry['Char:x']-type calls and get back
-    # what they expected.
+    will automatically cause ObjectModified events to fire. 
 
-    def _setItemHook(self, key, value):
-        ek = key.replace(':','__')
-        object = self.object
-        try:
-            ov = {key: object.__dict__[ek]}
-        except KeyError:
-            ov = {}
-        object.__dict__[key.replace(':','__')] = value
-        self.document.dispatchEvent('ObjectModified',
-           object = object, new={key:value}, old=ov, originator = '__inline__')
+    Also, add a .dispatch_designer_event method that calls the 
+    Document.dispatchEvent method, automatically passing in 
+    object=self
+    
+    """
+    object._dispatch_designer_event = document.dispatchEvent
+    object.dispatch_designer_event = new.instancemethod(
+                  _gobject_dispatch_event, object, object.__class__)
+    object._setItemHook = new.instancemethod(_gobject_set_item_hook, 
+                                             object, 
+                                             object.__class__)
 
-    def setStatus(self, text):
-        self.ui.setStatus(text)
+    
+def _gobject_dispatch_event(self, event, **params): 
+    params['object'] = self
+    if not params.has_key('originator'): 
+       params['originator'] = '__inline__'
+    self._dispatch_designer_event(event, **params)
 
+
+def _gobject_set_item_hook(self, key, value): 
+    """
+    Hook into the GObject._setItemHook
+  
+    Here, "self" is any arbitrary GObject.
+    """
+    ek = key.replace(':','__')
+    try:
+        ov = {key: object.__dict__[ek]}
+    except KeyError:
+        ov = {}
+    self.__dict__[key.replace(':','__')] = value
+    self._dispatch_designer_event('ObjectModified',
+       object = self, new={key:value}, old=ov, originator = '__inline__')
+    
+
+
 # ===========================================================================
 # Helper class used by the tool-specific packages
 # ===========================================================================

Modified: trunk/gnue-designer/src/forms/PagePainter/PagePainter.py
===================================================================
--- trunk/gnue-designer/src/forms/PagePainter/PagePainter.py    2006-04-03 
19:56:14 UTC (rev 8344)
+++ trunk/gnue-designer/src/forms/PagePainter/PagePainter.py    2006-04-03 
21:09:09 UTC (rev 8345)
@@ -68,6 +68,7 @@
             common.char_y_scale += 4
 
         canvas = self.canvas = PagePainterCanvas(self)
+             
         self.document.app.ui.autoSizer(self, canvas)
 
         self.object = object

Modified: trunk/gnue-designer/src/forms/PagePainter/skins/default.py
===================================================================
--- trunk/gnue-designer/src/forms/PagePainter/skins/default.py  2006-04-03 
19:56:14 UTC (rev 8344)
+++ trunk/gnue-designer/src/forms/PagePainter/skins/default.py  2006-04-03 
21:09:09 UTC (rev 8345)
@@ -154,7 +154,7 @@
         Called when the text edit request is finished
         """
         self.gobject['text'] = text
-        # TODO: issue an object change event
+        
 
 # --------------------------------------------------------------------------
 # Entry
@@ -202,7 +202,6 @@
         Called when the text edit request is finished
         """
         self.gobject['label'] = text
-        # TODO: issue an object change event
 
 
 # --------------------------------------------------------------------------
@@ -259,7 +258,6 @@
         Called when the text edit request is finished
         """
         self.gobject['label'] = text
-        # TODO: issue an object change event
 
 
 # --------------------------------------------------------------------------

Modified: trunk/gnue-designer/src/ui/wx/uihelpers/doccanvas/canvas.py
===================================================================
--- trunk/gnue-designer/src/ui/wx/uihelpers/doccanvas/canvas.py 2006-04-03 
19:56:14 UTC (rev 8344)
+++ trunk/gnue-designer/src/ui/wx/uihelpers/doccanvas/canvas.py 2006-04-03 
21:09:09 UTC (rev 8345)
@@ -1025,6 +1025,7 @@
         widget.set_selected, but your class can override this.
         """
         self.begin_refresh_batch()
+        gobjects = []
         for widget in self.ordered_widget_list:
             if widget not in widgets:
                 if widget.selected:
@@ -1032,7 +1033,15 @@
             else:
                 if not widget.selected:
                     widget.set_selected(True)
+                gobjects += [widget.gobject]
+                    
+        if gobjects: 
+            gobjects[0].dispatch_designer_event('ObjectSelected',
+                  originator="Canvas::SelectedFromCanvas",
+                  selection=gobjects)
+
         self.end_refresh_batch()
+        
 
     def picked_from_canvas(self, widgets):
         """





reply via email to

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