[Top][All Lists]
[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):
"""
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gnue] r8345 - in trunk/gnue-designer/src: base forms/PagePainter forms/PagePainter/skins ui/wx/uihelpers/doccanvas,
jcater <=