Mercurial > MadButterfly
annotate pyink/MBScene.py @ 1213:86428aa657ab
Remove unused variables
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Tue, 04 Jan 2011 13:06:56 +0800 |
parents | 962a6fec2198 |
children | e55499f7505a |
rev | line source |
---|---|
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
1 #!/usr/bin/python |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
2 # -*- indent-tabs-mode: t; tab-width: 8; python-indent: 4; fill-column: 79 -*- |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
3 # vim: sw=4:ts=8:sts=4:textwidth=79 |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
4 import pygtk |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
5 import gtk |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
6 import glib |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
7 from copy import deepcopy |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
8 from lxml import etree |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
9 import random |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
10 import traceback |
973
84f502fb3e40
Rewrite the MBScene to use framelines. The old layers/scenes data structure is used to load the scenes only. We should remove it completely in the future.
wycc
parents:
964
diff
changeset
|
11 import time |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
12 import pybInkscape |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
13 import math |
1140 | 14 from tween import TweenObject |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
15 from frameline import frameline, frameruler |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
16 |
957 | 17 # Please refer to |
18 # http://www.assembla.com/wiki/show/MadButterfly/Inkscape_extention | |
19 # for the designed document. | |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
20 |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
21 |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
22 # Algorithm: |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
23 # |
955
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
24 # We will parse the first two level of the SVG DOM. collect a table of |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
25 # layer and scene. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
26 # - 1. Collect the layer table which will be displayed as the first |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
27 # column of the grid. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
28 # - 2. Get the maximum scene number. This will decide the size of the |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
29 # grid. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
30 # - 3. When F6 is pressed, we will check if this scene has been |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
31 # defined. This can be done by scan all second level group and |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
32 # check if the current scene number is within the range specified |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
33 # by scene field. The function IsSceneDefined(scene) can be used |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
34 # for this purpose. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
35 # - 4. If this is a new scene, we will append a new group which |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
36 # duplication the content of the last scene in the same |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
37 # group. The scene field will contain the number from the last |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
38 # scene number of the last scene to the current scenen |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
39 # number. For example, if the last scene is from 4-7 and the new |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
40 # scene is 10, we will set the scene field as "8-10". |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
41 # - 5. If this scene are filled screne, we will split the existing |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
42 # scene into two scenes with the same content. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
43 # |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
44 |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
45 class Layer: |
955
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
46 def __init__(self,node): |
962
6612fd386ea9
Rename Layer.scene to Layer.scenes since it is a list of scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
961
diff
changeset
|
47 self.scenes = [] |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
48 self.group = node |
955
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
49 pass |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
50 pass |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
51 |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
52 class ObjectWatcher(pybInkscape.PYNodeObserver): |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
53 def __init__(self,obj,type,func,arg): |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
54 self.obj = obj |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
55 self.type = type |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
56 self.func = func |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
57 self.arg = arg |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
58 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
59 def notifyChildAdded(self, node, child, prev): |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
60 if self.type == 'DOMNodeInserted': |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
61 self.func(node, child) |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
62 def notifyChildRemoved(self, node, child, prev): |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
63 if self.type == 'DOMNodeRemoved': |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
64 self.func(node, child) |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
65 def notifyChildOrderChanged(self,node,child,prev): |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
66 pass |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
67 def notifyContentChanged(self,node,old_content,new_content): |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
68 if self.type == 'DOMSubtreeModified': |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
69 self.func(node) |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
70 def notifyAttributeChanged(self,node, name, old_value, new_value): |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
71 if self.type == 'DOMAttrModified': |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
72 self.func(node, name, old_value, new_value) |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
73 |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
74 def addEventListener(obj, type, func,arg): |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
75 obs = ObjectWatcher(obj,type,func,arg) |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
76 obj.addSubtreeObserver(obs) |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
77 |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
78 |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
79 def _travel_DOM(node): |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
80 nodes = [node] |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
81 while nodes: |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
82 node = nodes.pop(0) |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
83 child = node.firstChild() |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
84 while child: |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
85 nodes.append(child) |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
86 child = child.next() |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
87 pass |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
88 yield node |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
89 pass |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
90 pass |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
91 |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
92 |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
93 ## \brief Monitor changes of DOM-tree. |
1181
f14dbcf19e2b
Move MBScene.insertKeyScene() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1180
diff
changeset
|
94 # |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
95 # This class monitors DOM-tree to maintain _maxframe and maps for node ID to |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
96 # node and scene group ID to scene node. |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
97 class MBScene_dom_monitor(object): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
98 def __init__(self, *args, **kws): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
99 super(MBScene_dom_monitor, self).__init__() |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
100 |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
101 self._maxframe = 0 |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
102 self._id2node = {} # map ID to the node in the DOM tree. |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
103 self._group2scene = {} # map ID of a group to associated scene node. |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
104 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
105 |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
106 def _start_monitor(self): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
107 self._collect_node_ids() |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
108 self._collect_all_scenes() |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
109 |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
110 doc = self._doc |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
111 addEventListener(doc,'DOMNodeInserted', self._on_insert_node, None) |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
112 addEventListener(doc,'DOMNodeRemoved', self._on_remove_node, None) |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
113 addEventListener(doc, 'DOMAttrModified', self._on_attr_modified, None) |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
114 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
115 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
116 def _on_insert_node(self, node, child): |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
117 try: |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
118 child_id = child.getAttribute('id') |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
119 except: |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
120 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
121 else: |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
122 if child_id not in self._id2node: |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
123 self._id2node[child_id] = child |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
124 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
125 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
126 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
127 if child.name() == 'ns0:scene': |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
128 try: |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
129 ref = child.getAttribute('ref') |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
130 except: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
131 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
132 else: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
133 if ref not in self._group2scene: |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
134 self._group2scene[ref] = child |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
135 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
136 pass |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
137 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
138 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
139 start = child.getAttribute('start') |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
140 self._maxframe = max(int(start), self._maxframe) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
141 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
142 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
143 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
144 start = child.getAttribute('end') |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
145 self._maxframe = max(int(start), self._maxframe) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
146 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
147 pass |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
148 pass |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
149 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
150 |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
151 def _find_maxframe(self, scenes_node): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
152 maxframe = 0 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
153 for child in scenes_node.childList(): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
154 if child.name() != 'ns0:scene': |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
155 continue |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
156 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
157 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
158 start = child.getAttribute('start') |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
159 maxframe = max(int(start), maxframe) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
160 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
161 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
162 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
163 end = child.getAttribute('end') |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
164 maxframe = max(int(end), maxframe) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
165 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
166 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
167 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
168 return maxframe |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
169 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
170 def _on_remove_node(self, node, child): |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
171 try: |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
172 child_id = child.getAttribute('id') |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
173 except: |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
174 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
175 else: |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
176 if child_id not in self._id2node: |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
177 raise ValueError, \ |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
178 'remove a node that is never known (%s)' % (child_id) |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
179 del self._id2node[child_id] |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
180 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
181 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
182 if child.name() == 'ns0:scene': |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
183 try: |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
184 ref = child.getAttribute('ref') |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
185 except: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
186 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
187 else: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
188 del self._group2scene[ref] |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
189 pass |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
190 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
191 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
192 if node.name() == 'ns0:scenes' and \ |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
193 (int(child.getAttribute('start')) == self._maxframe or |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
194 int(child.getAttribute('end')) == self._maxframe): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
195 self._maxframe = self._find_maxframe(node) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
196 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
197 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
198 pass |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
199 pass |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
200 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
201 |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
202 def _on_attr_modified(self, node, name, old_value, new_value): |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
203 if name == 'id' and old_value != new_value: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
204 if old_value and (old_value not in self._id2node): |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
205 raise ValueError, \ |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
206 'old ID value of passed node is invalid one (%s)' % \ |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
207 (old_value) |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
208 if (new_value in self._id2node): |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
209 raise ValueError, \ |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
210 'new ID value of passed node is invalid one (%s)' % \ |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
211 (new_value) |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
212 |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
213 if old_value: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
214 del self._id2node[old_value] |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
215 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
216 self._id2node[new_value] = node |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
217 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
218 elif name == 'ref' and node.name() == 'ns0:scene': |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
219 if old_value == new_value: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
220 return |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
221 if old_value: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
222 node = self._group2scene[old_value] # use old node. Binding |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
223 # may generate a new |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
224 # wrapper. |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
225 del self._group2scene[old_value] |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
226 pass |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
227 if new_value: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
228 self._group2scene[new_value] = node |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
229 pass |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
230 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
231 elif (name in ('start', 'end')) and node.name() == 'ns0:scene': |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
232 self._maxframe = max(int(new_value), self._maxframe) |
1183
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
233 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
234 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
235 |
1203
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
236 ## \brief Collect ID of nodes in the document. |
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
237 # |
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
238 # It is used to implement a fast mapping from an ID to the respective node. |
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
239 # |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
240 def _collect_node_ids(self): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
241 self._id2node = {} |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
242 root = self._root |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
243 for n in root.childList(): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
244 self._collect_node_ids_recursive(n) |
1183
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
245 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
246 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
247 |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
248 def _collect_node_ids_recursive(self, node): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
249 try: |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
250 node_id = node.getAttribute('id') |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
251 except: |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
252 return |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
253 |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
254 self._id2node[node_id] = node |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
255 for n in node.childList(): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
256 self._collect_node_ids_recursive(n) |
1183
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
257 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
258 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
259 |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
260 def _parse_one_scene(self, scene_node): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
261 assert scene_node.name() == 'ns0:scene' |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
262 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
263 start = int(scene_node.getAttribute("start")) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
264 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
265 end = int(scene_node.getAttribute("end")) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
266 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
267 end = start |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
268 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
269 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
270 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
271 scene_type = scene_node.getAttribute('type') |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
272 if scene_type == None: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
273 scene_type = 'normal' |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
274 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
275 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
276 scene_type = 'normal' |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
277 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
278 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
279 return start, end, scene_type |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
280 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
281 def _parse_one_scenes(self, scenes_node): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
282 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
283 cur = int(n.getAttribute("current")) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
284 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
285 cur = 0 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
286 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
287 self.current = cur |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
288 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
289 for scene_node in scenes_node.childList(): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
290 if scene_node.name() != 'ns0:scene': |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
291 continue |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
292 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
293 try: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
294 start, end, scene_type = self._parse_one_scene(scene_node) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
295 except: |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
296 continue |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
297 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
298 group_id = scene_node.getAttribute("ref") |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
299 self._group2scene[group_id] = (start, end, scene_type) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
300 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
301 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
302 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
303 ## \brief Parse all scenes node in svg:metadata subtree. |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
304 # |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
305 def _collect_all_scenes(self): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
306 root = self._root |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
307 for child in root.childList(): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
308 if child.name() != 'svg:metadata': |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
309 continue |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
310 |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
311 metadata_node = child |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
312 for metachild in metadata_node.childList(): |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
313 if metachild.name() == 'ns0:scenes': |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
314 self._parse_one_scenes(metachild) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
315 self._maxframe = self._find_maxframe(metachild) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
316 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
317 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
318 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
319 pass |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
320 |
1203
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
321 ## \brief Return the node with given ID. |
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
322 # |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
323 def get_node(self, node_id): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
324 return self._id2node[node_id] |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
325 |
1203
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
326 ## \brief Return a scene node corresponding to a scene group of given ID. |
b90a1e2eb9ec
Add document for methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1202
diff
changeset
|
327 # |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
328 def get_scene(self, group_id): |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
329 return self._group2scene[group_id] |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
330 |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
331 def new_id(self): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
332 while True: |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
333 candidate = 's%d' % int(random.random()*100000) |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
334 if candidate not in self._id2node: |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
335 return candidate |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
336 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
337 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
338 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
339 |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
340 |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
341 ## \brief Layer of MBScene to manipulate DOM tree. |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
342 # |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
343 # This class maintains layers information, and provides functions to create, |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
344 # change and destroy scene node and scene group. A scene node is a 'ns0:scene' |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
345 # in 'ns0:scenes' tag. A scene group is respective 'svg:g' for a scene. |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
346 # |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
347 class MBScene_dom(MBScene_dom_monitor): |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
348 # Declare variables, here, for keeping tracking |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
349 _doc = None |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
350 _root = None |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
351 |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
352 def __init__(self, *args, **kws): |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
353 super(MBScene_dom, self).__init__() |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
354 pass |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
355 |
1202
2f3d523a3871
Parse all scenes when start handling a document
Thinker K.F. Li <thinker@codemud.net>
parents:
1201
diff
changeset
|
356 ## \brief Create a scenes node if not existed. |
2f3d523a3871
Parse all scenes when start handling a document
Thinker K.F. Li <thinker@codemud.net>
parents:
1201
diff
changeset
|
357 # |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
358 def _init_metadata(self): |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
359 for node in self._root.childList(): |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
360 if node.name() == 'svg:metadata': |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
361 break |
1176
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
362 pass |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
363 else: |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
364 raise RuntimeError, \ |
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
365 'can not find <svg:metadata> node in the document' |
1176
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
366 |
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
367 for n in node.childList(): |
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
368 if n.name() == 'ns0:scenes': |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
369 self._scenes_node = n |
1176
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
370 break |
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
371 pass |
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
372 else: |
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
373 ns = "http://madbutterfly.sourceforge.net/DTD/madbutterfly.dtd" |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
374 self._root.setAttribute("xmlns:ns0", ns) |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
375 scenes_node = self._doc.createElement("ns0:scenes") |
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
376 node.appendChild(scenes_node) |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
377 self._scenes_node = scenes_node |
1176
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
378 pass |
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
379 pass |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
380 |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
381 def _parse_all_layers(self): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
382 root = self._root |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
383 layers = self._layers |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
384 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
385 for child in root.childList(): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
386 if child.name() != 'svg:g': |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
387 continue |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
388 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
389 layer_group = child |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
390 layer = Layer(layer_group) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
391 layer.idx = len(layers) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
392 layers.append(layer) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
393 self.parse_layer(layer.idx) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
394 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
395 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
396 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
397 def handle_doc_root(self, doc, root): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
398 self._doc = doc |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
399 self._root = root |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
400 self._layers = [] |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
401 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
402 self._start_monitor() # start MBScene_dom_monitor |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
403 self._init_metadata() |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
404 self._parse_all_layers() |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
405 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
406 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
407 def dumpattr(self, n): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
408 s = "" |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
409 for a,v in n.attrib.items(): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
410 s = s + ("%s=%s" % (a,v)) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
411 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
412 return s |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
413 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
414 def dump(self, node, l=0): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
415 print " " * l*2,"<", node.tag, self.dumpattr(node),">" |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
416 for n in node: |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
417 self.dump(n, l+1) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
418 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
419 print " " * l * 2,"/>" |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
420 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
421 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
422 ## \brief Create and add a ns0:scene node under ns0:scenes subtree. |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
423 # |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
424 def add_scene_node(self, start, end, |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
425 frame_type=TweenObject.TWEEN_TYPE_NORMAL, |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
426 ref=None): |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
427 type_names = ('normal', 'scale') |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
428 scenes_node = self._scenes_node |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
429 doc = self._doc |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
430 |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
431 scene_node = doc.createElement('ns0:scene') |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
432 self.chg_scene_node(scene_node, start=start) |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
433 if start != end: |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
434 self.chg_scene_node(scene_node, end=end) |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
435 pass |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
436 type_name = type_names[frame_type] |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
437 self.chg_scene_node(scene_node, tween_type=type_name) |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
438 if ref: |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
439 self.chg_scene_node(scene_node, ref=ref) |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
440 pass |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
441 |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
442 scenes_node.appendChild(scene_node) |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
443 |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
444 return scene_node |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
445 |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
446 ## \brief Change attributes of a scene node. |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
447 # |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
448 # This is here to monitor changes of scene node. |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
449 def chg_scene_node(self, scene_node, start=None, end=None, |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
450 tween_type=None, ref=None): |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
451 if start: |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
452 scene_node.setAttribute('start', str(start)) |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
453 pass |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
454 if end: |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
455 scene_node.setAttribute('end', str(end)) |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
456 pass |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
457 if tween_type: |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
458 scene_node.setAttribute('type', tween_type) |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
459 pass |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
460 if ref: |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
461 scene_node.setAttribute('ref', ref) |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
462 pass |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
463 pass |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
464 |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
465 def rm_scene_node(self, scene_node): |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
466 self._scenes_node.removeChild(scene_node) |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
467 pass |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
468 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
469 ## \brief Create and add a svg:g for a scene under a group for a layer. |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
470 # |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
471 def add_scene_group(self, layer_idx): |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
472 layer = self._layers[layer_idx] |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
473 doc = self._doc |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
474 |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
475 scene_group = doc.createElement('svg:g') |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
476 gid = self.new_id() |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
477 scene_group.setAttribute("id", gid) |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
478 scene_group.setAttribute("inkscape:groupmode", "layer") |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
479 |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
480 layer.group.appendChild(scene_group) |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
481 |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
482 return scene_group |
1181
f14dbcf19e2b
Move MBScene.insertKeyScene() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1180
diff
changeset
|
483 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
484 def parse_layer(self, layer_idx): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
485 layer = self._layers[layer_idx] |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
486 layer_group = layer.group |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
487 |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
488 for child in layer_group.childList(): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
489 if child.name() != 'svg:g': |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
490 continue |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
491 try: |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
492 child_id = child.getAttribute('id') |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
493 scene_node = self.get_scene(child_id) |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
494 except: |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
495 continue |
1183
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
496 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
497 layer.scenes.append(scene_node) |
1181
f14dbcf19e2b
Move MBScene.insertKeyScene() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1180
diff
changeset
|
498 pass |
f14dbcf19e2b
Move MBScene.insertKeyScene() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1180
diff
changeset
|
499 pass |
f14dbcf19e2b
Move MBScene.insertKeyScene() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1180
diff
changeset
|
500 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
501 ## \brief Add/insert a layer at given position. |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
502 # |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
503 # \param layer_idx is the position in the layer list. |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
504 # |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
505 def add_layer(self, layer_idx, layer_group): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
506 layers = self._layers |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
507 |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
508 layer = Layer(layer_group) |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
509 if layer_idx >= len(layers): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
510 layers.append(layer) |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
511 else: |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
512 layers.insert(layer_idx, layer) |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
513 for idx in range(layer_idx, len(layers)): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
514 layers[idx].idx = idx |
1183
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
515 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
516 pass |
e8446e138427
Move update_scenes_of_dom() to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1182
diff
changeset
|
517 pass |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
518 |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
519 def rm_layer(self, layer_idx): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
520 layers = self._layers |
956 | 521 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
522 del layers[layer_idx] |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
523 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
524 for idx in range(layer_idx, len(layers)): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
525 layers[idx].idx = idx |
956 | 526 pass |
527 pass | |
1176
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
528 pass |
0c1ceecb8ddb
Move parseMetadata to MBScene_dom
Thinker K.F. Li <thinker@codemud.net>
parents:
1174
diff
changeset
|
529 |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
530 ## \brief Maintain frameline list for MBScene. |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
531 # |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
532 class MBScene_framelines(object): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
533 _frameline_tween_types = (frameline.TWEEN_TYPE_NONE, |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
534 frameline.TWEEN_TYPE_SHAPE) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
535 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
536 _framelines = None |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
537 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
538 def __init__(self, *args, **kws): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
539 super(MBScene_framelines, self).__init__(*args, **kws) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
540 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
541 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
542 def _remove_active_frame(self,widget,event): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
543 """ |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
544 Hide all hover frames. This is a hack. We should use the lost focus |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
545 event instead in the future to reduce the overhead. |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
546 """ |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
547 for f in self._framelines: |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
548 if f != widget: |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
549 f.hide_hover() |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
550 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
551 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
552 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
553 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
554 ## \brief Add a frameline into the frameline box for the given layer. |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
555 # |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
556 def _add_frameline(self, layer_idx): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
557 if layer_idx > len(self._framelines): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
558 raise ValueError, 'layer number should be a consequence' |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
559 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
560 vbox = self._frameline_vbox |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
561 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
562 line = frameline(self._num_frames_of_line) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
563 line.set_size_request(self._num_frames_of_line * 10, 20) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
564 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
565 hbox = gtk.HBox() |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
566 label = gtk.Label('') |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
567 label.set_size_request(100,0) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
568 hbox.pack_start(label,expand=False, fill=True) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
569 hbox.pack_start(line) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
570 vbox.pack_start(hbox, False) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
571 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
572 if layer_idx != len(self._framelines): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
573 vbox.reorder_child(hbox, layer_idx + 1) # there is ruler at pos 0 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
574 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
575 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
576 self._framelines[layer_idx: layer_idx] = [line] |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
577 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
578 line.label = label |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
579 line.layer_idx = layer_idx |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
580 line.connect(line.FRAME_BUT_PRESS, self.onCellClick) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
581 line.connect('motion-notify-event', self._remove_active_frame) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
582 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
583 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
584 ## \brief Remove the given frameline from the frameline box. |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
585 # |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
586 def _remove_frameline(self, layer_idx): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
587 vbox = self._frameline_vbox |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
588 line = self._framelines[layer_idx] |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
589 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
590 hbox = line.parent |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
591 vbox.remove(hbox) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
592 del self._framelines[layer_idx] |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
593 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
594 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
595 def _init_framelines(self): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
596 self._framelines = [] |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
597 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
598 box = gtk.ScrolledWindow() |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
599 self._frameline_box = box |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
600 box.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
601 box.set_size_request(-1, 150) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
602 vbox = gtk.VBox() |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
603 self._frameline_vbox = vbox |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
604 box.add_with_viewport(vbox) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
605 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
606 nframes = self._num_frames_of_line |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
607 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
608 # |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
609 # Set up a ruler |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
610 # |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
611 ruler = frameruler(nframes) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
612 ruler.set_size_request(nframes * 10, 20) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
613 ruler.show() |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
614 hbox = gtk.HBox() |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
615 label=gtk.Label('') |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
616 label.set_size_request(100,0) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
617 hbox.pack_start(label,expand=False,fill=True) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
618 hbox.pack_start(ruler) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
619 vbox.pack_start(hbox, False) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
620 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
621 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
622 ## \brief Show framelines on the screen. |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
623 # |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
624 # When a frameline was inserted or removed, it would not be showed |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
625 # immediately. This function is used to notify toolkit to update the |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
626 # screen and drawing framelines. |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
627 def _show_framelines(self): |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
628 self._frameline_vbox.show_all() |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
629 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
630 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
631 |
1209 | 632 ## \brief MBScene connect GUI and DOM-tree |
633 # | |
634 # This class connect behavior of GUI to the DOM-tree. All about GUI is | |
635 # implemented by this class. It use API provided by MBScene_dom to reflect | |
636 # actions to the DOM-tree. | |
637 # | |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
638 class MBScene(MBScene_dom, MBScene_framelines): |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
639 _tween_obj_tween_types = (TweenObject.TWEEN_TYPE_NORMAL, |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
640 TweenObject.TWEEN_TYPE_SCALE) |
1157
3a891dccabd8
Remove the locate tween. It is a special case for the scale tween
wycc
parents:
1155
diff
changeset
|
641 _tween_type_names = ('normal', 'scale') |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
642 |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
643 _num_frames_of_line = 100 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
644 |
1149
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
645 def __init__(self, desktop, win, root=None): |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
646 super(MBScene, self).__init__() |
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
647 |
956 | 648 self.desktop = desktop |
649 self.window = win | |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
650 self.top = None |
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
651 self.last_update = None |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
652 pybInkscape.inkscape.connect('change_selection', self.show_selection) |
1099
5ba2cab1d505
Add name editor to edit the inkscape:label withgout using the object property editor. This is more Flash-like operation.
wycc
parents:
1097
diff
changeset
|
653 self.last_select = None |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
654 self._lockui = False |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
655 self.tween = None |
1140 | 656 self.document = None |
1149
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
657 self.root = root |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
658 self.framerate = 12 |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
659 self._disable_tween_type_selector = False |
956 | 660 pass |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
661 |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
662 def show_selection(self,w,obj): |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
663 objs = self.desktop.selection.list() |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
664 try: |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
665 o = objs[0] |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
666 print o.getCenter() |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
667 if o == self.last_select: |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
668 return |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
669 except: |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
670 self.nameEditor.set_text('') |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
671 self.last_select = None |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
672 return |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
673 self.last_select = o |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
674 try: |
1139
a2b068594412
Use pybind with new DOM API (at PYNode).
Thinker K.F. Li <thinker@codemud.net>
parents:
1136
diff
changeset
|
675 self.nameEditor.set_text(o.getAttribute("inkscape:label")) |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
676 except: |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
677 self.nameEditor.set_text('') |
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
678 pass |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
679 pass |
1099
5ba2cab1d505
Add name editor to edit the inkscape:label withgout using the object property editor. This is more Flash-like operation.
wycc
parents:
1097
diff
changeset
|
680 |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
681 def insertKeyScene(self, line, frame): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
682 """ |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
683 Insert a new key scene into the stage. If the nth is always a |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
684 key scene, we will return without changing anything. If the |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
685 nth is a filled scene, we will break the original scene into |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
686 two parts. If the nth is out of any scene, we will append a |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
687 new scene. |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
688 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
689 """ |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
690 doc = self._doc |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
691 layer_idx = self._framelines.index(line) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
692 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
693 scene_group = self.add_scene_group(layer_idx) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
694 scene_group_id = scene_group.getAttribute('id') |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
695 scene_node = self.add_scene_node(frame, frame, ref=scene_group_id) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
696 line.add_keyframe(frame, scene_node) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
697 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
698 for node in self._layers[layer_idx].group.childList(): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
699 try: |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
700 label = node.getAttribute('inkscape:label') |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
701 except: |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
702 continue |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
703 if label == 'dup': |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
704 node.setAttribute('style', 'display: none') |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
705 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
706 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
707 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
708 |
1200
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
709 def removeKeyScene(self, frameline, frame_idx): |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
710 start, end, scene_type = frameline.get_frame_block(frame_idx) |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
711 scene_node = frameline.get_frame_data(start) |
1184
05d33f0fbc76
Add comment for some TODO item
Thinker K.F. Li <thinker@codemud.net>
parents:
1183
diff
changeset
|
712 |
1200
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
713 frameline.rm_keyframe(start) |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
714 if start != end: |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
715 frameline.rm_keyframe(end) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
716 pass |
1200
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
717 |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
718 scene_group_id = scene_node.getAttribute('ref') |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
719 scene_group = self.get_node(scene_group_id) |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
720 scene_group.parent().removeChild(scene_group) |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
721 scene_node.parent().removeChild(scene_node) |
956 | 722 |
1139
a2b068594412
Use pybind with new DOM API (at PYNode).
Thinker K.F. Li <thinker@codemud.net>
parents:
1136
diff
changeset
|
723 try: |
1200
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
724 frameline.duplicateGroup.setAttribute('style', 'display: none') |
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
725 except AttributeError: |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
726 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
727 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
728 |
973
84f502fb3e40
Rewrite the MBScene to use framelines. The old layers/scenes data structure is used to load the scenes only. We should remove it completely in the future.
wycc
parents:
964
diff
changeset
|
729 def extendScene(self): |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
730 frame_idx = self.last_frame |
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
731 frameline = self.last_line |
1193
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
732 |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
733 start, end, scene_type = frameline.get_frame_block_floor(frame_idx) |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
734 if frame_idx <= end: |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
735 return |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
736 |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
737 if start < end: |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
738 frameline.rm_keyframe(end) |
956 | 739 pass |
1193
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
740 |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
741 scene_node = frameline.get_frame_data(start) |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
742 self.chg_scene_node(scene_node, end=frame_idx) |
1193
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
743 frameline.add_keyframe(frame_idx) |
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
744 frameline.tween(start, scene_type) |
956 | 745 pass |
746 | |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
747 def setCurrentScene(self, idx): |
1123 | 748 """ |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
749 Update the scene group according to the curretn scene |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
750 data. There are a couple of cases. |
1148 | 751 1. If the type of the scene is normal, we display it when |
752 it contains the current frame. Otherwise hide it. | |
753 2. If the type of the scene is relocate or scale, we need | |
754 to duplicate the scene group and then modify its | |
755 transform matrix according to the definition of the | |
756 scene. Then, hide the original scenr group and display | |
757 the duplciate scene group. In addition, we may need to | |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
758 delete the old duplicated scene group as well. |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
759 |
1148 | 760 For each layer, we will always use the duplicated scene |
761 group whose name as dup. | |
762 We will put the duplicated scene group inside it. We will | |
763 create this group if it is not | |
1123 | 764 available. |
765 """ | |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
766 self.current = idx |
1140 | 767 self.tween.updateMapping() |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
768 for frameline in self._framelines: |
973
84f502fb3e40
Rewrite the MBScene to use framelines. The old layers/scenes data structure is used to load the scenes only. We should remove it completely in the future.
wycc
parents:
964
diff
changeset
|
769 i=0 |
1123 | 770 |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
771 # Check the duplicated scene group and create it if it is not |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
772 # available |
1123 | 773 try: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
774 frameline.duplicateGroup.setAttribute("style","display:none") |
1123 | 775 except: |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
776 print "*" * 40 |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
777 layer_idx = frameline.layer_idx |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
778 layer = self._layers[layer_idx] |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
779 for child in layer.group.childList(): |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
780 label = child.getAttribute('inkscape:label') |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
781 if label == 'dup': |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
782 frameline.duplicateGroup = child |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
783 break |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
784 pass |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
785 else: |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
786 duplicateGroup = self.document.createElement("svg:g") |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
787 duplicateGroup.setAttribute("inkscape:label","dup") |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
788 duplicateGroup.setAttribute("sodipodi:insensitive","1") |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
789 duplicateGroup.setAttribute("style","") |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
790 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
791 layer.group.appendChild(duplicateGroup) |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
792 frameline.duplicateGroup = duplicateGroup |
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
793 pass |
1123 | 794 pass |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
795 |
1123 | 796 # Create a new group |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
797 for start_idx, stop_idx, tween_type in frameline.get_frame_blocks(): |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
798 if start_idx == stop_idx: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
799 scene_node = frameline.get_frame_data(start_idx) |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
800 scene_group_id = scene_node.getAttribute('ref') |
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
801 scene_group = self.get_node(scene_group_id) |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
802 if idx == start_idx: |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
803 scene_group.setAttribute('style', '') |
973
84f502fb3e40
Rewrite the MBScene to use framelines. The old layers/scenes data structure is used to load the scenes only. We should remove it completely in the future.
wycc
parents:
964
diff
changeset
|
804 else: |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
805 scene_group.setAttribute('style', 'display: none') |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
806 pass |
1155
5db4d769387c
Show the frame when we select the keyframe. The duplicated group must be shown only in the tweened frame
wycc
parents:
1151
diff
changeset
|
807 elif idx == start_idx: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
808 frameline.duplicateGroup.setAttribute("style","display:none") |
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
809 scene_node = frameline.get_frame_data(start_idx) |
1196
42f8cee2118b
Fix the issue that is falut to show first frame of a tween
Thinker K.F. Li <thinker@codemud.net>
parents:
1195
diff
changeset
|
810 scene_group_id = scene_node.getAttribute('ref') |
42f8cee2118b
Fix the issue that is falut to show first frame of a tween
Thinker K.F. Li <thinker@codemud.net>
parents:
1195
diff
changeset
|
811 scene_group = self.get_node(scene_group_id) |
1155
5db4d769387c
Show the frame when we select the keyframe. The duplicated group must be shown only in the tweened frame
wycc
parents:
1151
diff
changeset
|
812 scene_group.setAttribute("style","") |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
813 elif start_idx < idx and stop_idx >= idx: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
814 scene_node = frameline.get_frame_data(start_idx) |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
815 scene_group_id = scene_node.getAttribute('ref') |
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
816 scene_group = self.get_node(scene_group_id) |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
817 scene_group.setAttribute("style","display:none") |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
818 frameline.duplicateGroup.setAttribute("style","") |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
819 tween_type_idx = \ |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
820 self._frameline_tween_types.index(tween_type) |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
821 tween_obj_tween_type = \ |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
822 self._tween_obj_tween_types[tween_type_idx] |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
823 |
1180
bfd7d466a022
Fix yeiling error message when select a scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1179
diff
changeset
|
824 try: |
bfd7d466a022
Fix yeiling error message when select a scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1179
diff
changeset
|
825 next_idx, next_stop_idx, next_tween_type = \ |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
826 frameline.get_frame_block(stop_idx + 1) |
1180
bfd7d466a022
Fix yeiling error message when select a scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1179
diff
changeset
|
827 except: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
828 next_scene_node = scene_node |
1163 | 829 else: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
830 next_scene_node = frameline.get_frame_data(next_idx) |
1180
bfd7d466a022
Fix yeiling error message when select a scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1179
diff
changeset
|
831 pass |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
832 |
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
833 next_scene_group_id = next_scene_node.getAttribute('ref') |
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
834 next_scene_group = self.get_node(next_scene_group_id) |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
835 |
1160
1a699dc00fa3
Fix the issue of not removing node in old scene when switching scenes.
Thinker K.F. Li <thinker@codemud.net>
parents:
1159
diff
changeset
|
836 nframes = stop_idx - start_idx + 1 |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
837 percent = float(idx - start_idx) / nframes |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
838 print tween_obj_tween_type |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
839 self.tween.updateTweenContent(frameline.duplicateGroup, |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
840 tween_obj_tween_type, |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
841 scene_group, |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
842 next_scene_group, |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
843 percent) |
959
67823f7a0a17
Use frameline module in MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
957
diff
changeset
|
844 else: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
845 scene_node = frameline.get_frame_data(start_idx) |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
846 scene_group_id = scene_node.getAttribute('ref') |
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
847 scene_group = self.get_node(scene_group_id) |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
848 scene_group.setAttribute("style","display:none") |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
849 pass |
955
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
850 pass |
956 | 851 pass |
852 pass | |
1125 | 853 |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
854 def enterGroup(self, obj): |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
855 for l in self._layers: |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
856 for s in l.group.childList(): |
1139
a2b068594412
Use pybind with new DOM API (at PYNode).
Thinker K.F. Li <thinker@codemud.net>
parents:
1136
diff
changeset
|
857 if s.getAttribute('id') == obj.getAttribute("id"): |
1142
dd6c60c6f41e
Use getAttribute()/spitem instead of .label and DOMtoItem().
Thinker K.F. Li <thinker@codemud.net>
parents:
1141
diff
changeset
|
858 self.desktop.setCurrentLayer(s.spitem) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
859 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
860 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
861 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
862 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
863 |
1178
416e41952b76
Fix issue that pyink does not switch current layer to the new key scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1177
diff
changeset
|
864 def selectSceneObject(self, frameline, frame_idx): |
1177
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
865 try: |
1178
416e41952b76
Fix issue that pyink does not switch current layer to the new key scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1177
diff
changeset
|
866 start, stop, tween_type = frameline.get_frame_block(frame_idx) |
1177
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
867 except: |
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
868 return |
1070
afa42d5836cc
Call setCurrentLayer to enter the current scene group.
wycc
parents:
1064
diff
changeset
|
869 |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
870 scene_node = frameline.get_frame_data(start) |
1191
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
871 scene_group_id = scene_node.getAttribute('ref') |
6442fb198418
Refactory insertKeyScene() and fix bug of ObjectWatcher
Thinker K.F. Li <thinker@codemud.net>
parents:
1190
diff
changeset
|
872 scene_group = self.get_node(scene_group_id) |
1177
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
873 self.enterGroup(scene_group) |
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
874 self.setTweenType(tween_type) |
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
875 pass |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
876 |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
877 def setTweenType(self, tween_type): |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
878 sel_type = self._frameline_tween_types.index(tween_type) |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
879 self._disable_tween_type_selector = True |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
880 self.tweenTypeSelector.set_active(sel_type) |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
881 self._disable_tween_type_selector = False |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
882 pass |
955
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
883 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
884 ## \brief Remove the layer that lost the layer group. |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
885 # |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
886 # This function is called when a layer group being removed from the |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
887 # DOM-tree. |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
888 def _remove_lost_group_layer(self, layer_idx): |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
889 layer = self._layers[layer_idx] |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
890 frameline = self._framelines[layer_idx] |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
891 for start, end, tween_type in frameline.get_frame_blocks(): |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
892 scene_node = frameline.get_frame_data(start) |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
893 self.rm_scene_node(scene_node) |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
894 pass |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
895 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
896 self._remove_frameline(layer_idx) # TODO |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
897 self._show_framelines() |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
898 del self._layers[layer_idx] |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
899 pass |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
900 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
901 ## \brief Make status of layers is updated when DOM is changed. |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
902 # |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
903 # When DOM-tree is changed, this function make sure layer information is up |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
904 # to date. |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
905 def _make_layers_integral(self): |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
906 root = self._root |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
907 root_id = root.getAttribute('id') |
959
67823f7a0a17
Use frameline module in MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
957
diff
changeset
|
908 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
909 # Remove group of removed layers |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
910 layer_idx = 0 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
911 while layer_idx < len(self._layers): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
912 layer = self._layers[layer_idx] |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
913 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
914 if layer.group.name() != 'svg:g': |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
915 self._remove_lost_group_layer(layer_idx) # TODO |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
916 continue |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
917 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
918 parent = layer.group.parent() |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
919 |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
920 if not parent: # parent is None when a node being removed from |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
921 # DOM-tree. |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
922 self._remove_lost_group_layer(layer_idx) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
923 continue |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
924 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
925 if parent.name() != 'svg:svg': |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
926 self._remove_lost_group_layer(layer_idx) |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
927 continue |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
928 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
929 if parent.getAttribute('id') != root_id: |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
930 self._remove_lost_group_layer(layer_idx) |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
931 continue |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
932 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
933 layer_idx = layer_idx + 1 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
934 pass |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
935 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
936 # Add new layers |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
937 layer_idx = 0 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
938 for child in root.childList(): |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
939 if child.name() != 'svg:g': |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
940 continue |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
941 |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
942 try: |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
943 layer = self._layers[layer_idx] |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
944 except IndexError: |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
945 layer = None |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
946 else: |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
947 layer_group_id = layer.group.getAttribute('id') |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
948 pass |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
949 |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
950 child_id = child.getAttribute('id') |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
951 if (not layer) or layer_group_id != child_id: |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
952 self.add_layer(layer_idx, child) |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
953 self.parse_layer(layer_idx) |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
954 self._add_frameline(layer_idx) |
1212
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
955 |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
956 layer = self._layers[layer_idx] |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
957 frameline = self._framelines[layer_idx] |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
958 try: |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
959 label = layer.group.getAttribute('inkscape:label') |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
960 except: |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
961 label = layer.group.getAttribute('id') |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
962 pass |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
963 frameline.label.set_text(label) |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
964 |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
965 self._show_framelines() |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
966 pass |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
967 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
968 layer_idx = layer_idx + 1 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
969 pass |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
970 pass |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
971 |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
972 def _add_frameline_for_layers(self): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
973 for layer_idx in range(len(self._layers)): |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
974 self._add_frameline(layer_idx) |
1212
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
975 line = self._framelines[layer_idx] |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
976 layer = self._layers[layer_idx] |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
977 try: |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
978 label = layer.group.getAttribute('inkscape:label') |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
979 except: |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
980 label = layer.group.getAttribute('id') |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
981 pass |
962a6fec2198
Set a label for every frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1211
diff
changeset
|
982 line.label.set_text(label) |
962
6612fd386ea9
Rename Layer.scene to Layer.scenes since it is a list of scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
961
diff
changeset
|
983 pass |
959
67823f7a0a17
Use frameline module in MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
957
diff
changeset
|
984 pass |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
985 |
1097
52d8bf5d12b4
Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents:
1070
diff
changeset
|
986 def duplicateKeyScene(self): |
52d8bf5d12b4
Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents:
1070
diff
changeset
|
987 # Search for the current scene |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
988 frameline = self.last_line |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
989 frame_idx = self.last_frame |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
990 |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
991 try: |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
992 start, end, scene_type = frameline.get_frame_block_floor(frame_idx) |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
993 except: |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
994 return |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
995 if end >= frame_idx: |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
996 return |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
997 |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
998 prev_scene_node = frameline.get_frame_data(start) |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
999 prev_scene_group_id = prev_scene_node.getAttribute('ref') |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
1000 |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
1001 scene_group = self.duplicateSceneGroup(prev_scene_group_id) |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
1002 scene_group_id = scene_group.getAttribute('id') |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1003 scene_node = self.add_scene_node(frame_idx, frame_idx, |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1004 ref=scene_group_id) |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
1005 |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
1006 frameline.add_keyframe(frame_idx, scene_node) |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
1007 |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
1008 self.setCurrentScene(frame_idx) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
1009 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
1010 |
1097
52d8bf5d12b4
Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents:
1070
diff
changeset
|
1011 def duplicateSceneGroup(self,gid): |
52d8bf5d12b4
Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents:
1070
diff
changeset
|
1012 # Search for the duplicated group |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1013 root = self._root |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1014 doc = self._doc |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1015 orig = self.get_node(gid) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1016 scene_group = orig.duplicate(doc) |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1017 |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1018 old_nodes = _travel_DOM(orig) |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
1019 new_nodes = _travel_DOM(scene_group) |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1020 for old_node in old_nodes: |
1164
2cb5047d8f2b
Add support to insert key frame in the middle of the tween.
wycc
parents:
1163
diff
changeset
|
1021 print old_node |
1151
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1022 old_node_id = old_node.getAttribute('id') |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1023 new_node = new_nodes.next() |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1024 new_node.setAttribute('ns0:duplicate-src', old_node_id) |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1025 pass |
71c72e8d6755
Refactory cod eof TweenObject.updateTweenContent and MBScene.setCurrentScene().
Thinker K.F. Li <thinker@codemud.net>
parents:
1150
diff
changeset
|
1026 |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
1027 layer = self._layers[self.last_line.layer_idx] |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
1028 gid = layer.group.getAttribute("inkscape:label")+self.new_id() |
1190
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
1029 scene_group.setAttribute("id",gid) |
a4df892fb4e5
Use meaningful name for scene, scene group, and layer group
Thinker K.F. Li <thinker@codemud.net>
parents:
1189
diff
changeset
|
1030 scene_group.setAttribute("inkscape:groupmode","layer") |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
1031 layer.group.appendChild(scene_group) |
1193
0e3a65b7b00c
Simplify extendScened()
Thinker K.F. Li <thinker@codemud.net>
parents:
1192
diff
changeset
|
1032 return scene_group |
956 | 1033 |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1034 def changeObjectLabel(self,w): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1035 o = self.desktop.selection.list()[0] |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1036 o.setAttribute("inkscape:label", self.nameEditor.get_text()) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1037 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1038 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1039 def addNameEditor(self,hbox): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1040 self.nameEditor = gtk.Entry(max=40) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1041 hbox.pack_start(self.nameEditor,expand=False,fill=False) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1042 self.editDone = gtk.Button('Set') |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1043 hbox.pack_start(self.editDone,expand=False,fill=False) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1044 self.editDone.connect('clicked', self.changeObjectLabel) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1045 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1046 |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
1047 def updateUI(self, *args): |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1048 if self._lockui: return |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1049 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1050 if self.last_update!= None: |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1051 glib.source_remove(self.last_update) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1052 self.last_update = glib.timeout_add(300,self._updateUI) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1053 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1054 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1055 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1056 def _updateUI(self,node=None,arg=None): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1057 self._lockui = True |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1058 self._make_layers_integral() |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1059 self._lockui = False |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1060 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1061 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1062 def onCellClick(self, line, frame, but): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1063 self.last_line = line |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1064 self.last_frame = frame |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1065 self.last_line.active_frame(frame) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1066 self._lockui = True |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1067 self.doEditScene(None) |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1068 self._lockui = False |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1069 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1070 |
1178
416e41952b76
Fix issue that pyink does not switch current layer to the new key scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1177
diff
changeset
|
1071 def doEditScene(self, w): |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
1072 self.setCurrentScene(self.last_frame) |
1179
b65df4f0d30a
Change signature of MBScene.insertKeyScene()
Thinker K.F. Li <thinker@codemud.net>
parents:
1178
diff
changeset
|
1073 self.selectSceneObject(self.last_line, self.last_frame) |
956 | 1074 pass |
1075 | |
1076 def doInsertKeyScene(self,w): | |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1077 self._lockui=True |
1179
b65df4f0d30a
Change signature of MBScene.insertKeyScene()
Thinker K.F. Li <thinker@codemud.net>
parents:
1178
diff
changeset
|
1078 self.insertKeyScene(self.last_line, self.last_frame) |
1178
416e41952b76
Fix issue that pyink does not switch current layer to the new key scene.
Thinker K.F. Li <thinker@codemud.net>
parents:
1177
diff
changeset
|
1079 self.selectSceneObject(self.last_line, self.last_frame) |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1080 self._lockui=False |
956 | 1081 # self.grid.show_all() |
1082 return | |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
1083 |
1097
52d8bf5d12b4
Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents:
1070
diff
changeset
|
1084 def doDuplicateKeyScene(self,w): |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1085 self._lockui = True |
1097
52d8bf5d12b4
Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents:
1070
diff
changeset
|
1086 self.duplicateKeyScene() |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1087 self._lockui = False |
956 | 1088 |
1089 def doRemoveScene(self,w): | |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1090 self._lockui = True |
1200
213f03dbfc41
Fix issue of removing a scene
Thinker K.F. Li <thinker@codemud.net>
parents:
1199
diff
changeset
|
1091 self.removeKeyScene(self.last_line, self.last_frame) |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1092 self._lockui = False |
956 | 1093 return |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
1094 |
956 | 1095 |
1096 def doExtendScene(self,w): | |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1097 self._lockui = True |
956 | 1098 self.extendScene() |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1099 self._lockui = False |
956 | 1100 pass |
1146
e14ec6d1a661
CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents:
1141
diff
changeset
|
1101 |
1147 | 1102 def doRun(self,arg): |
1146
e14ec6d1a661
CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents:
1141
diff
changeset
|
1103 """ |
e14ec6d1a661
CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents:
1141
diff
changeset
|
1104 Execute the current animation till the last frame. |
e14ec6d1a661
CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents:
1141
diff
changeset
|
1105 """ |
1147 | 1106 if self.btnRun.get_label() == "Run": |
1107 self.btnRun.set_label("Stop") | |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1108 self._lockui = True |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1109 tmout = 1000 / self.framerate |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1110 self.last_update = glib.timeout_add(tmout, self.doRunNext) |
1147 | 1111 else: |
1112 self.btnRun.set_label("Run") | |
1113 glib.source_remove(self.last_update) | |
1189
9cf183faf89f
Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1188
diff
changeset
|
1114 self._lockui = False |
1161
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
1115 pass |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1116 pass |
1147 | 1117 |
1118 def doRunNext(self): | |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1119 if self.current > self._maxframe: |
1147 | 1120 self.current = 0 |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1121 pass |
1161
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
1122 try: |
1194
319414e4d87a
Fix the issue that is fault to switch scenes
Thinker K.F. Li <thinker@codemud.net>
parents:
1193
diff
changeset
|
1123 self.setCurrentScene(self.current) |
1161
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
1124 except: |
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
1125 traceback.print_exc() |
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
1126 raise |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
1127 self.current = self.current + 1 |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1128 tmout = 1000 / self.framerate |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1129 self.last_update = glib.timeout_add(tmout, self.doRunNext) |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1130 pass |
1174 | 1131 |
956 | 1132 def addButtons(self,hbox): |
1133 btn = gtk.Button('Insert Key') | |
1134 btn.connect('clicked',self.doInsertKeyScene) | |
1135 hbox.pack_start(btn,expand=False,fill=False) | |
1174 | 1136 |
956 | 1137 btn=gtk.Button('Remove Key') |
1138 btn.connect('clicked', self.doRemoveScene) | |
1139 hbox.pack_start(btn,expand=False,fill=False) | |
1174 | 1140 |
956 | 1141 btn=gtk.Button('Extend scene') |
1142 btn.connect('clicked', self.doExtendScene) | |
1143 hbox.pack_start(btn,expand=False,fill=False) | |
1174 | 1144 |
1145 btn=gtk.Button('Duplicate Key') | |
1146 btn.connect('clicked', self.doDuplicateKeyScene) | |
1147 hbox.pack_start(btn,expand=False,fill=False) | |
1148 | |
1146
e14ec6d1a661
CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents:
1141
diff
changeset
|
1149 btn=gtk.Button('Run') |
e14ec6d1a661
CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents:
1141
diff
changeset
|
1150 btn.connect('clicked', self.doRun) |
1147 | 1151 self.btnRun = btn |
1146
e14ec6d1a661
CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents:
1141
diff
changeset
|
1152 hbox.pack_start(btn,expand=False,fill=False) |
1174 | 1153 |
1099
5ba2cab1d505
Add name editor to edit the inkscape:label withgout using the object property editor. This is more Flash-like operation.
wycc
parents:
1097
diff
changeset
|
1154 self.addNameEditor(hbox) |
1120
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1155 self.addTweenTypeSelector(hbox) |
956 | 1156 pass |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
1157 |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
1158 def onTweenTypeChange(self, w): |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
1159 if self._disable_tween_type_selector: |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
1160 return |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
1161 |
1120
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1162 if self.last_line == None: |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1163 return |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1164 frameline = self.last_line |
1197
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1165 start, end, old_tween_type = frameline.get_frame_block(self.last_frame) |
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1166 |
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1167 type_idx = self.tweenTypeSelector.get_active() |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
1168 tween_type = self._frameline_tween_types[type_idx] |
1197
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1169 type_name = self._tween_type_names[type_idx] |
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1170 |
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1171 frameline.tween(start, tween_type) |
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1172 |
8c5492b096f1
Fix bug of changing tween type
Thinker K.F. Li <thinker@codemud.net>
parents:
1196
diff
changeset
|
1173 scene_node = frameline.get_frame_data(start) |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
1174 self.chg_scene_node(scene_node, tween_type=type_name) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
1175 pass |
1120
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1176 |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1177 def addTweenTypeSelector(self,hbox): |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1178 tweenbox = gtk.HBox() |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1179 label = gtk.Label('Tween Type') |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1180 tweenbox.pack_start(label) |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1181 |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1182 self.tweenTypeSelector = gtk.combo_box_new_text() |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1183 self.tweenTypeSelector.append_text('normal') |
1157
3a891dccabd8
Remove the locate tween. It is a special case for the scale tween
wycc
parents:
1155
diff
changeset
|
1184 #self.tweenTypeSelector.append_text('relocate') |
1120
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1185 self.tweenTypeSelector.append_text('scale') |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1186 self.tweenTypeSelector.set_active(0) |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1187 tweenbox.pack_start(self.tweenTypeSelector, expand=False,fill=False) |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1188 hbox.pack_start(tweenbox,expand=False,fill=False) |
214e1f628d63
Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents:
1099
diff
changeset
|
1189 self.tweenTypeSelector.connect('changed', self.onTweenTypeChange) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
1190 pass |
956 | 1191 |
1192 def onQuit(self, event): | |
1193 self.OK = False | |
1194 gtk.main_quit() | |
1195 pass | |
1196 | |
1197 def onOK(self,event): | |
1198 self.OK = True | |
1199 gtk.main_quit() | |
1200 pass | |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
1201 |
956 | 1202 def show(self): |
1203 self.OK = True | |
1149
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
1204 if not self.root: |
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
1205 self.root = self.desktop.doc().root().repr |
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
1206 pass |
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
1207 |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
1208 self.document = self.desktop.doc().rdoc |
1188
45e3a9273af2
Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents:
1185
diff
changeset
|
1209 self.handle_doc_root(self.document, self.root) |
1149
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
1210 self.tween = TweenObject(self.document, self.root) |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
1211 self._init_framelines() |
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
1212 self._add_frameline_for_layers() |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
1213 self._show_framelines() |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
1214 |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1215 if self.top == None: |
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1216 self.top = gtk.VBox(False,0) |
1206
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1217 toplevel = self.desktop.getToplevel() |
1d476b35dc79
Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
diff
changeset
|
1218 toplevel.child.child.pack_end(self.top,expand=False) |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1219 else: |
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1220 self.top.remove(self.startWindow) |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
1221 pass |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
1222 |
981 | 1223 vbox = gtk.VBox(False,0) |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1224 self.startWindow = vbox |
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1225 self.top.pack_start(vbox,expand=False) |
1205
1af64bcdfd7d
Move to MBScene._make_layers_integral()
Thinker K.F. Li <thinker@codemud.net>
parents:
1204
diff
changeset
|
1226 vbox.pack_start(self._frameline_box,expand=False) |
981 | 1227 hbox=gtk.HBox(False,0) |
1228 self.addButtons(hbox) | |
1229 vbox.pack_start(hbox,expand=False) | |
1230 | |
1210
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
1231 doc = self.document |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
1232 addEventListener(doc,'DOMNodeInserted', self.updateUI, None) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
1233 addEventListener(doc,'DOMNodeRemoved', self.updateUI, None) |
3683e02b7482
Refactory frameline management code to MBScene_framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1209
diff
changeset
|
1234 |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1235 self.top.show_all() |
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1236 self.last_update = None |
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
1237 return False |
956 | 1238 pass |