# HG changeset patch # User Thinker K.F. Li # Date 1294729381 -28800 # Node ID 027cd060d9ba0288d0c21ca973010a58fcbb986e # Parent 8755415b5e996c2f5b5f7d9f91e62231bf6e2469 Remove the key frame if associated scene node or scene group being removed. diff -r 8755415b5e99 -r 027cd060d9ba pyink/consistency.py --- a/pyink/consistency.py Tue Jan 11 15:02:27 2011 +0800 +++ b/pyink/consistency.py Tue Jan 11 15:03:01 2011 +0800 @@ -51,10 +51,46 @@ self._start_check() pass + def _remove_node_recursive(self, node, child): + for cchild in child.childList(): + self._remove_node_recursive(child, cchild) + pass + + child_name = child.name() + if child_name not in ('ns0:scene', 'svg:g'): + return + + # + # Remove the key frame assocated with a removed scene node or + # scene group if we can find the key frame. + # + if child_name == 'ns0:scene': + try: + group_id = child.getAttribute('ref') + except: + return + elif child_name == 'svg:g': + try: + group_id = child.getAttribute('id') + except: + return + pass + + try: + layer_idx, (start, end, tween_type) = \ + self._domview.find_key_from_group(group_id) + except ValueError: + pass + else: # We have found the key frame. + self._domview.unmark_key(layer_idx, start) + pass + pass + def do_insert_node(self, node, child): pass def do_remove_node(self, node, child): + self._remove_node_recursive(node, child) pass def do_attr_modified(self, node, name, old_value, new_value):