diff pyink/dom_event.py @ 1253:07e0cb1e051d

Add class consistency_checker for domview_ui. - consistency_checker is to check consistency of the DOM-tree associated with a domview_ui. - It is so closed to domview_ui, so it may access private variables. - But, it uses public interface of domview_ui if possible. - consistency_checker is not integrated to domview_ui for separating functions of consistency checking from the domview_ui. It collects relative logic into a place and setups a boundary from others.
author Thinker K.F. Li <thinker@codemud.net>
date Tue, 11 Jan 2011 11:43:32 +0800
parents
children 5313bbfafa67
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pyink/dom_event.py	Tue Jan 11 11:43:32 2011 +0800
@@ -0,0 +1,29 @@
+import pybInkscape
+
+class ObjectWatcher(pybInkscape.PYNodeObserver):
+    def __init__(self, obj, type, func, arg):
+        self.obj = obj
+	self.type = type
+	self.func = func
+	self.arg = arg
+
+    def notifyChildAdded(self, node, child, prev):
+        if self.type == 'DOMNodeInserted':
+	    self.func(node, child)
+    def notifyChildRemoved(self, node, child, prev):
+        if self.type == 'DOMNodeRemoved':
+	    self.func(node, child)
+    def notifyChildOrderChanged(self,node,child,prev):
+        pass
+    def notifyContentChanged(self,node,old_content,new_content):
+        if self.type == 'DOMSubtreeModified':
+	    self.func(node)
+    def notifyAttributeChanged(self,node, name, old_value, new_value):
+        if self.type == 'DOMAttrModified':
+	    self.func(node, name, old_value, new_value)
+
+def addEventListener(obj, type, func, arg):
+    obs = ObjectWatcher(obj, type, func, arg)
+    obj.addSubtreeObserver(obs)
+    pass
+