Mercurial > MadButterfly
annotate pyink/domview.py @ 1265:ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
author | wycc |
---|---|
date | Wed, 12 Jan 2011 15:01:14 +0800 |
parents | 2f861eea1214 |
children | 97302d2a0a1d |
rev | line source |
---|---|
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
1 import random |
1253
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
2 import dom_event |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
3 from tween import TweenObject |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
4 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
5 class Layer: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
6 def __init__(self, node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
7 self.scenes = [] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
8 self.group = node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
9 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
10 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
11 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
12 ## \brief Monitor changes of DOM-tree. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
13 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
14 # This class monitors DOM-tree to maintain _maxframe and maps for node ID to |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
15 # node and scene group ID to scene node. |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
16 class domview_monitor(object): |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
17 def __init__(self, *args, **kws): |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
18 super(domview_monitor, self).__init__() |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
19 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
20 self._maxframe = 0 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
21 self._id2node = {} # map ID to the node in the DOM tree. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
22 self._group2scene = {} # map ID of a group to associated scene node. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
23 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
24 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
25 def _start_monitor(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
26 self._collect_node_ids() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
27 self._collect_all_scenes() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
28 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
29 doc = self._doc |
1253
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
30 dom_event.addEventListener(doc, 'DOMNodeInserted', |
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
31 self._on_insert_node, None) |
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
32 dom_event.addEventListener(doc, 'DOMNodeRemoved', |
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
33 self._on_remove_node, None) |
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
34 dom_event.addEventListener(doc, 'DOMAttrModified', |
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
35 self._on_attr_modified, None) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
36 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
37 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
38 def _on_insert_node(self, node, child): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
39 for cchild in child.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
40 self._on_insert_node(child, cchild) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
41 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
42 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
43 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
44 child_id = child.getAttribute('id') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
45 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
46 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
47 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
48 if child_id not in self._id2node: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
49 self._id2node[child_id] = child |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
50 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
51 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
52 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
53 if child.name() == 'ns0:scene': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
54 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
55 ref = child.getAttribute('ref') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
56 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
57 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
58 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
59 if ref not in self._group2scene: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
60 self._group2scene[ref] = child |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
61 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
62 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
63 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
64 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
65 start = child.getAttribute('start') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
66 self._maxframe = max(int(start), self._maxframe) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
67 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
68 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
69 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
70 start = child.getAttribute('end') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
71 self._maxframe = max(int(start), self._maxframe) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
72 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
73 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
74 pass |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
75 pass |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
76 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
77 def _find_maxframe(self, scenes_node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
78 maxframe = 0 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
79 for child in scenes_node.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
80 if child.name() != 'ns0:scene': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
81 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
82 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
83 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
84 start = child.getAttribute('start') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
85 maxframe = max(int(start), maxframe) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
86 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
87 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
88 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
89 end = child.getAttribute('end') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
90 maxframe = max(int(end), maxframe) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
91 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
92 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
93 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
94 return maxframe |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
95 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
96 def _on_remove_node(self, node, child): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
97 for cchild in child.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
98 self._on_remove_node(child, cchild) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
99 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
100 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
101 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
102 child_id = child.getAttribute('id') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
103 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
104 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
105 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
106 if child_id not in self._id2node: |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
107 return |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
108 del self._id2node[child_id] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
109 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
110 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
111 if child.name() == 'ns0:scene': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
112 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
113 ref = child.getAttribute('ref') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
114 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
115 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
116 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
117 del self._group2scene[ref] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
118 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
119 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
120 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
121 if node.name() == 'ns0:scenes' and \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
122 (int(child.getAttribute('start')) == self._maxframe or |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
123 int(child.getAttribute('end')) == self._maxframe): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
124 self._maxframe = self._find_maxframe(node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
125 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
126 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
127 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
128 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
129 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
130 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
131 def _on_attr_modified(self, node, name, old_value, new_value): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
132 if name == 'id' and old_value != new_value: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
133 if old_value and (old_value not in self._id2node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
134 raise ValueError, \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
135 'old ID value of passed node is invalid one (%s)' % \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
136 (old_value) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
137 if (new_value in self._id2node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
138 raise ValueError, \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
139 'new ID value of passed node is invalid one (%s)' % \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
140 (new_value) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
141 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
142 if old_value: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
143 del self._id2node[old_value] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
144 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
145 self._id2node[new_value] = node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
146 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
147 elif name == 'ref' and node.name() == 'ns0:scene': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
148 if old_value == new_value: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
149 return |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
150 if old_value: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
151 node = self._group2scene[old_value] # use old node. Binding |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
152 # may generate a new |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
153 # wrapper. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
154 del self._group2scene[old_value] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
155 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
156 if new_value: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
157 self._group2scene[new_value] = node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
158 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
159 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
160 elif (name in ('start', 'end')) and node.name() == 'ns0:scene': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
161 self._maxframe = max(int(new_value), self._maxframe) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
162 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
163 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
164 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
165 ## \brief Collect ID of nodes in the document. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
166 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
167 # It is used to implement a fast mapping from an ID to the respective node. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
168 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
169 def _collect_node_ids(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
170 self._id2node = {} |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
171 root = self._root |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
172 for n in root.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
173 self._collect_node_ids_recursive(n) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
174 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
175 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
176 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
177 def _collect_node_ids_recursive(self, node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
178 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
179 node_id = node.getAttribute('id') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
180 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
181 return |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
182 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
183 self._id2node[node_id] = node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
184 for n in node.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
185 self._collect_node_ids_recursive(n) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
186 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
187 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
188 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
189 def _parse_one_scene(self, scene_node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
190 assert scene_node.name() == 'ns0:scene' |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
191 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
192 start = int(scene_node.getAttribute("start")) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
193 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
194 end = int(scene_node.getAttribute("end")) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
195 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
196 end = start |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
197 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
198 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
199 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
200 scene_type = scene_node.getAttribute('type') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
201 if scene_type == None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
202 scene_type = 'normal' |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
203 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
204 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
205 scene_type = 'normal' |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
206 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
207 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
208 return start, end, scene_type |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
209 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
210 def _parse_one_scenes(self, scenes_node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
211 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
212 cur = int(n.getAttribute("current")) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
213 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
214 cur = 0 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
215 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
216 self.current = cur |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
217 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
218 for scene_node in scenes_node.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
219 if scene_node.name() != 'ns0:scene': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
220 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
221 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
222 try: |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
223 ref = scene_node.getAttribute('ref') |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
224 start, end, scene_type = self._parse_one_scene(scene_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
225 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
226 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
227 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
228 group_id = scene_node.getAttribute("ref") |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
229 self._group2scene[group_id] = scene_node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
230 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
231 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
232 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
233 ## \brief Parse all scenes node in svg:metadata subtree. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
234 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
235 def _collect_all_scenes(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
236 root = self._root |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
237 for child in root.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
238 if child.name() != 'svg:metadata': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
239 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
240 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
241 metadata_node = child |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
242 for metachild in metadata_node.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
243 if metachild.name() == 'ns0:scenes': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
244 self._parse_one_scenes(metachild) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
245 self._maxframe = self._find_maxframe(metachild) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
246 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
247 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
248 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
249 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
250 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
251 ## \brief Return the node with given ID. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
252 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
253 def get_node(self, node_id): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
254 return self._id2node[node_id] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
255 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
256 ## \brief Return a scene node corresponding to a scene group of given ID. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
257 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
258 def get_scene(self, group_id): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
259 return self._group2scene[group_id] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
260 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
261 def new_id(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
262 while True: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
263 candidate = 's%d' % int(random.random()*100000) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
264 if candidate not in self._id2node: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
265 return candidate |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
266 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
267 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
268 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
269 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
270 |
1246
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
271 ## \brief Iterator to travel a sub-tree of DOM. |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
272 # |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
273 def _DOM_iterator(node): |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
274 nodes = [node] |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
275 while nodes: |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
276 node = nodes.pop(0) |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
277 child = node.firstChild() |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
278 while child: |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
279 nodes.append(child) |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
280 child = child.next() |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
281 pass |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
282 yield node |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
283 pass |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
284 pass |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
285 |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
286 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
287 ## \brief This layer provide a data view to the DOM-tree. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
288 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
289 # This class maintains layers information, and provides functions to create, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
290 # change and destroy scene node and scene group. A scene node is a 'ns0:scene' |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
291 # in 'ns0:scenes' tag. A scene group is respective 'svg:g' for a scene. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
292 # |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
293 class domview(domview_monitor): |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
294 # Declare variables, here, for keeping tracking |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
295 _doc = None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
296 _root = None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
297 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
298 def __init__(self, *args, **kws): |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
299 super(domview, self).__init__() |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
300 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
301 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
302 ## \brief Create a scenes node if not existed. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
303 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
304 def _init_metadata(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
305 for node in self._root.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
306 if node.name() == 'svg:metadata': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
307 break |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
308 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
309 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
310 raise RuntimeError, \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
311 'can not find <svg:metadata> node in the document' |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
312 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
313 for n in node.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
314 if n.name() == 'ns0:scenes': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
315 self._scenes_node = n |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
316 break |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
317 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
318 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
319 ns = "http://madbutterfly.sourceforge.net/DTD/madbutterfly.dtd" |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
320 self._root.setAttribute("xmlns:ns0", ns) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
321 scenes_node = self._doc.createElement("ns0:scenes") |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
322 node.appendChild(scenes_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
323 self._scenes_node = scenes_node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
324 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
325 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
326 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
327 def _parse_all_layers(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
328 root = self._root |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
329 layers = self._layers |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
330 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
331 for child in root.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
332 if child.name() != 'svg:g': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
333 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
334 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
335 layer_group = child |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
336 layer = Layer(layer_group) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
337 layer.idx = len(layers) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
338 layers.append(layer) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
339 self.parse_layer(layer.idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
340 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
341 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
342 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
343 def handle_doc_root(self, doc, root): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
344 self._doc = doc |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
345 self._root = root |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
346 self._layers = [] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
347 |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
348 self._start_monitor() # start domview_monitor |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
349 self._init_metadata() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
350 self._parse_all_layers() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
351 pass |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
352 |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
353 def reset(self): |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
354 self.handle_doc_root( self._doc, self._root) |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
355 pass |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
356 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
357 def dumpattr(self, n): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
358 s = "" |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
359 for a,v in n.attrib.items(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
360 s = s + ("%s=%s" % (a,v)) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
361 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
362 return s |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
363 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
364 def dump(self, node, l=0): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
365 print " " * l*2,"<", node.tag, self.dumpattr(node),">" |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
366 for n in node: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
367 self.dump(n, l+1) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
368 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
369 print " " * l * 2,"/>" |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
370 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
371 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
372 ## \brief Create and add a ns0:scene node under ns0:scenes subtree. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
373 # |
1247
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
374 def add_scene_node(self, layer_idx, start, end, |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
375 frame_type=TweenObject.TWEEN_TYPE_NORMAL, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
376 ref=None): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
377 type_names = ('normal', 'scale') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
378 scenes_node = self._scenes_node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
379 doc = self._doc |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
380 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
381 scene_node = doc.createElement('ns0:scene') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
382 self.chg_scene_node(scene_node, start=start) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
383 if start != end: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
384 self.chg_scene_node(scene_node, end=end) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
385 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
386 type_name = type_names[frame_type] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
387 self.chg_scene_node(scene_node, tween_type=type_name) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
388 if ref: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
389 self.chg_scene_node(scene_node, ref=ref) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
390 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
391 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
392 scenes_node.appendChild(scene_node) |
1247
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
393 |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
394 self._layers[layer_idx].scenes.append(scene_node) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
395 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
396 return scene_node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
397 |
1262
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
398 ## \brief Manage a existed scene node at given layer. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
399 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
400 def manage_scene_node(self, layer_idx, scene_node): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
401 self._layers[layer_idx].scenes.append(scene_node) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
402 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
403 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
404 ## \brief Change attributes of a scene node. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
405 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
406 # This is here to monitor changes of scene node. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
407 def chg_scene_node(self, scene_node, start=None, end=None, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
408 tween_type=None, ref=None): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
409 if start is not None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
410 scene_node.setAttribute('start', str(start)) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
411 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
412 if end is not None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
413 scene_node.setAttribute('end', str(end)) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
414 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
415 if tween_type is not None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
416 scene_node.setAttribute('type', tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
417 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
418 if ref is not None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
419 scene_node.setAttribute('ref', ref) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
420 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
421 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
422 |
1256
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
423 ## \brief Remove scene node from DOM-tree. |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
424 # |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
425 def rm_scene_node(self, scene_node): |
1256
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
426 if not scene_node.parent(): |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
427 return # without this, may crash the Inkscape. |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
428 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
429 self._scenes_node.removeChild(scene_node) |
1247
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
430 for layer in self._layers: |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
431 try: |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
432 layer.scenes.remove(scene_node) |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
433 except ValueError: # not in the list |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
434 pass |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
435 else: |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
436 break |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
437 pass |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
438 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
439 |
1256
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
440 ## \brief Remove scene node and asssociated scene group from DOM. |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
441 # |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
442 # It will remove as many as possible. Does not complain about |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
443 # error in the procedure of removing. |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
444 # |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
445 def rm_scene_node_n_group(self, scene_node): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
446 scene_group_id = scene_node.getAttribute('ref') |
1256
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
447 try: |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
448 scene_group_node = self.get_node(scene_group_id) |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
449 if scene_group_node.parent(): # Check it, or crash the |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
450 # Inkscape. |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
451 scene_group_node.parent().removeChild(scene_group_node) |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
452 pass |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
453 except: |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
454 pass |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
455 |
1256
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
456 try: |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
457 self.rm_scene_node(scene_node) |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
458 except: |
8755415b5e99
More check for remvoing scene and scene group.
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
459 pass |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
460 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
461 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
462 ## \brief Create and add a svg:g for a scene under a group for a layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
463 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
464 def add_scene_group(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
465 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
466 doc = self._doc |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
467 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
468 scene_group = doc.createElement('svg:g') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
469 gid = self.new_id() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
470 scene_group.setAttribute("id", gid) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
471 scene_group.setAttribute("inkscape:groupmode", "layer") |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
472 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
473 layer.group.appendChild(scene_group) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
474 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
475 return scene_group |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
476 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
477 def parse_layer(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
478 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
479 layer_group = layer.group |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
480 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
481 for child in layer_group.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
482 if child.name() != 'svg:g': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
483 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
484 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
485 child_id = child.getAttribute('id') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
486 scene_node = self.get_scene(child_id) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
487 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
488 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
489 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
490 layer.scenes.append(scene_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
491 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
492 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
493 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
494 ## \brief Add/insert a layer at given position. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
495 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
496 # \param layer_idx is the position in the layer list. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
497 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
498 def insert_layer(self, layer_idx, layer_group): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
499 layers = self._layers |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
500 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
501 layer = Layer(layer_group) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
502 if layer_idx >= len(layers): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
503 layers.append(layer) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
504 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
505 layers.insert(layer_idx, layer) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
506 for idx in range(layer_idx, len(layers)): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
507 layers[idx].idx = idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
508 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
509 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
510 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
511 |
1262
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
512 ## \brief Manage a existed layer group |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
513 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
514 # This method scan layer groups of all managed layers, and find a |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
515 # proper place to insert it. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
516 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
517 # \return -1 for error, or layer index. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
518 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
519 def manage_layer_group(self, layer_group_id): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
520 layer_group = self.get_node(layer_group_id) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
521 new_layer = Layer(layer_group) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
522 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
523 if not self._layers: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
524 new_layer.idx = 0 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
525 self._layers.append(new_layer) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
526 return 0 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
527 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
528 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
529 # Scan who is after the given group |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
530 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
531 next_group = layer_group.next() |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
532 while next_group: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
533 next_group_id = next_group.getAttribute('id') |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
534 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
535 for vlayer in self._layers: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
536 vlayer_group_id = vlayer.group.getAttribute('id') |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
537 if vlayer_group_id == next_group_id: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
538 # This layer group is after given one. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
539 self._layers.insert(vlayer.idx, new_layer) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
540 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
541 for idx in range(vlayer.idx, len(self._layers)): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
542 self._layers[idx].idx = idx |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
543 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
544 return new_layer.idx |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
545 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
546 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
547 next_group = next_group.next() |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
548 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
549 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
550 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
551 # Is the given group after last layer group? |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
552 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
553 tail_group = self._layers[-1].group.next() |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
554 while tail_group: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
555 tail_group_id = tail_group.getAttribute('id') |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
556 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
557 if tail_group_id == layer_group_id: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
558 # it is after last layer group. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
559 new_layer.idx = len(self._layers) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
560 self._layers.append(new_layer) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
561 return new_layer.idx |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
562 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
563 tail_group = tail_group.next() |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
564 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
565 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
566 return -1 # error, can not determinze the position |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1260
diff
changeset
|
567 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
568 ## \brief Remove layer and associated scene nodes and scene groups. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
569 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
570 def rm_layer(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
571 layers = self._layers |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
572 |
1260
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
573 layer = self._layers[layer_idx] |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
574 for scene_node in layer.scenes: |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
575 scene_group_id = scene_node.getAttribute('ref') |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
576 try: |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
577 scene_group_node = self.get_node(scene_group_id) |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
578 if scene_group_node.parent(): # keep from crashing |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
579 scene_group_node.parent().removeChild(scene_group_node) |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
580 pass |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
581 except: |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
582 pass |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
583 |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
584 if scene_node.parent(): # keep from crashing |
bbd6bc0d079a
Fix bug of removing layer.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
585 scene_node.parent().removeChild(scene_node) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
586 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
587 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
588 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
589 del layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
590 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
591 for idx in range(layer_idx, len(layers)): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
592 layers[idx].idx = idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
593 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
594 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
595 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
596 def get_layer_num(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
597 return len(self._layers) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
598 |
1259
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
599 ## \brief Find layer index and scene info for a given scene node. |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
600 # |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
601 # \return (-1, None) for error. |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
602 # |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
603 def find_layer_n_scene_of_node(self, node_id): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
604 for layer_idx, layer in enumerate(self._layers): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
605 for scene_node in layer.scenes: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
606 scene_group_id = scene_node.getAttribute('ref') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
607 if scene_group_id == node_id: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
608 return layer_idx, scene_node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
609 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
610 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
611 return -1, None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
612 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
613 def get_layer_group(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
614 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
615 return layer.group |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
616 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
617 def get_all_scene_node_of_layer(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
618 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
619 return layer.scenes |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
620 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
621 def get_layer_data(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
622 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
623 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
624 data = layer.data |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
625 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
626 return None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
627 return data |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
628 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
629 def set_layer_data(self, layer_idx, data): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
630 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
631 layer.data = data |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
632 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
633 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
634 def create_layer_dup_group(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
635 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
636 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
637 dup_group = self._doc.createElement('svg:g') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
638 gid = self.new_id() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
639 dup_group.setAttribute('id', gid) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
640 dup_group.setAttribute('inkscape:label', 'dup') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
641 dup_group.setAttribute('sodipodi:insensitive', '1') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
642 dup_group.setAttribute('style', '') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
643 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
644 layer.group.appendChild(dup_group) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
645 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
646 return dup_group |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
647 |
1259
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
648 ## \brief Return associated layer index of given layer group. |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
649 # |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
650 # \return -1 for error. |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
651 # |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
652 def find_layer_of_group(self, group_id): |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
653 for layer_idx, layer in enumerate(self._layers): |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
654 if layer.group.getAttribute('id') == group_id: |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
655 return layer_idx |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
656 pass |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
657 return -1 |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1256
diff
changeset
|
658 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
659 def insert_frames(self, layer_idx, frame_idx, num): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
660 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
661 for scene_node in layer.scenes: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
662 start, end, tween_type = self._parse_one_scene(scene_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
663 if start >= frame_idx: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
664 self.chg_scene_node(scene_node, start=(start + num)) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
665 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
666 if end >= frame_idx: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
667 self.chg_scene_node(scene_node, end=(end + num)) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
668 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
669 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
670 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
671 |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
672 ## \brief add the current position to the undo buffer |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
673 # |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
674 def mark_undo(self, msg): |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
675 self._doc.done("none", msg) |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
676 pass |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
677 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
678 ## \brief Remove frames |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
679 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
680 # - Scenes covered by removing range were removed. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
681 # - Scenes after removing range were shifted left. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
682 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
683 def rm_frames(self, layer_idx, frame_idx, num): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
684 layer = self._layers[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
685 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
686 last_rm = frame_idx + num - 1 # last removed frame |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
687 for scene_node in layer.scenes: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
688 start, end, tween_type = \ |
1247
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
689 self._parse_one_scene(scene_node) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
690 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
691 if end < frame_idx: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
692 continue |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
693 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
694 if start > last_rm: # this scene is at right side |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
695 self.chg_scene_node(scene_node, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
696 start=(start - num), |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
697 end=(end - num)) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
698 else: # this scene is covered by removing range |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
699 self.rm_scene_node_n_group(scene_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
700 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
701 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
702 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
703 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
704 def get_max_frame(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
705 return self._maxframe |
1246
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
706 |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
707 ## \brief Copy children of a group. |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
708 # |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
709 # Duplicate children of a group, and append them to another group. |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
710 # |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
711 def copy_group_children(self, src_group, dst_group): |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
712 # Search for the duplicated group |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
713 doc = self._doc |
1247
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
714 |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
715 dup_group = src_group.duplicate(doc) |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
716 |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
717 old_nodes = _DOM_iterator(src_group) |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
718 new_nodes = _DOM_iterator(dup_group) |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
719 new_gids = set() |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
720 for old_node in old_nodes: |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
721 old_node_id = old_node.getAttribute('id') |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
722 new_node = new_nodes.next() |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
723 new_node.setAttribute('ns0:duplicate-src', old_node_id) |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
724 |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
725 # |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
726 # Change ID here, or inkscape would insert the node with |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
727 # the same ID, and change it later to avoid duplication. |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
728 # But, our event handler would be called before changing |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
729 # ID. It would confuse our code. We change ID of nodes |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
730 # before inserting them into the DOM-tree. |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
731 # |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
732 gid = self.new_id() |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
733 while gid in new_gids: |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
734 gid = self.new_id() |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
735 pass |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
736 new_gids.add(gid) |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
737 new_node.setAttribute('id', gid) |
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
738 pass |
1246
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
739 |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
740 for child in dup_group.childList(): |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
741 dup_group.removeChild(child) # prvent from crash |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
742 dst_group.appendChild(child) |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
743 pass |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
744 pass |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
745 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
746 |