Mercurial > MadButterfly
annotate pyink/MBScene.py @ 1265:ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
author | wycc |
---|---|
date | Wed, 12 Jan 2011 15:01:14 +0800 |
parents | ff410dcdea02 |
children | d4559e7f82cd |
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 import traceback |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
8 import pybInkscape |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
9 from tween import scenes_director |
1258
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1255
diff
changeset
|
10 from domview_ui import create_domview_ui |
1253
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1251
diff
changeset
|
11 from data_monitor import data_monitor |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
12 |
957 | 13 # Please refer to |
14 # http://www.assembla.com/wiki/show/MadButterfly/Inkscape_extention | |
15 # 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
|
16 |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
17 |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
18 # Algorithm: |
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
19 # |
955
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
20 # 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
|
21 # layer and scene. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
22 # - 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
|
23 # column of the grid. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
24 # - 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
|
25 # grid. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
26 # - 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
|
27 # 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
|
28 # 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
|
29 # 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
|
30 # for this purpose. |
53b0f8dc2284
Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents:
943
diff
changeset
|
31 # - 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
|
32 # 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
|
33 # 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
|
34 # 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
|
35 # 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
|
36 # 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
|
37 # - 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
|
38 # 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
|
39 # |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
40 |
1209 | 41 ## \brief MBScene connect GUI and DOM-tree |
42 # | |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
43 # This method accepts user actions and involves domview_ui to update |
1242
1b1eb8f9a866
Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1241
diff
changeset
|
44 # data on the document. |
1209 | 45 # |
1255
a8e01435e84e
Add more doc for MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
46 # This class is protected by \ref data_monitor, meta-class. |
a8e01435e84e
Add more doc for MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
47 # |
1234
0f597a2073eb
Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents:
1233
diff
changeset
|
48 class MBScene(object): |
1248
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
49 __metaclass__ = data_monitor |
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
50 |
1157
3a891dccabd8
Remove the locate tween. It is a special case for the scale tween
wycc
parents:
1155
diff
changeset
|
51 _tween_type_names = ('normal', 'scale') |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
52 |
1204
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
53 _num_frames_of_line = 100 |
78925515836f
Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents:
1203
diff
changeset
|
54 |
1149
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
55 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
|
56 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
|
57 |
956 | 58 self.desktop = desktop |
59 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
|
60 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
|
61 self.last_update = None |
1249
16a1166c3850
Add more method being monitored
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
62 pybInkscape.inkscape.connect('change_selection', self.do_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
|
63 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
|
64 self._lockui = False |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
65 self._director = None |
1140 | 66 self.document = None |
1237
b5cceb2b87bb
Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents:
1236
diff
changeset
|
67 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
|
68 self.framerate = 12 |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
69 self._disable_tween_type_selector = False |
1236
2eeac97853eb
Running animation successful
Thinker K.F. Li <thinker@codemud.net>
parents:
1235
diff
changeset
|
70 self.current = 0 |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
71 |
1264 | 72 self._domviewui = create_domview_ui() |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
73 self._locker = self._domviewui |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
74 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
|
75 |
1224
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
76 def change_active_frame(self, node): |
1221
33aa2d63e240
When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents:
1220
diff
changeset
|
77 """ |
1224
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
78 Change the active frame to the current selected node. This will |
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
79 tell users where the current node is. |
1221
33aa2d63e240
When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents:
1220
diff
changeset
|
80 """ |
1224
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
81 while node: |
1221
33aa2d63e240
When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents:
1220
diff
changeset
|
82 try: |
1224
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
83 node_id = node.getAttribute('id') |
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
84 except: |
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
85 node = node.parent() |
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
86 continue |
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
87 |
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
88 try: |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
89 layer_idx, (start, end, tween_type) = \ |
1264 | 90 self._domviewui.find_key_from_group(node_id) |
1221
33aa2d63e240
When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents:
1220
diff
changeset
|
91 except: |
1223 | 92 pass |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
93 else: |
1264 | 94 self._domviewui.set_active_layer_frame(layer_idx, start) |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
95 break |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
96 |
1224
5d731460b32c
Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents:
1223
diff
changeset
|
97 node = node.parent() |
1223 | 98 pass |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
99 pass |
1221
33aa2d63e240
When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents:
1220
diff
changeset
|
100 |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
101 def insertKeyScene(self, layer_idx, frame_idx): |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
102 """ |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
103 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
|
104 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
|
105 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
|
106 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
|
107 new scene. |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
108 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
109 """ |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
110 try: |
1264 | 111 self._domviewui.mark_key(layer_idx, frame_idx) |
1234
0f597a2073eb
Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents:
1233
diff
changeset
|
112 except ValueError: # existed key frame |
0f597a2073eb
Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents:
1233
diff
changeset
|
113 pass |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
114 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
115 |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
116 def removeKeyScene(self, layer_idx, frame_idx): |
1264 | 117 self._domviewui.unmark_key(layer_idx, frame_idx) |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
118 self._director.show_scene(frame_idx) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
119 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
120 |
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
|
121 def extendScene(self): |
1264 | 122 layer_idx, frame_idx = self._domviewui.get_active_layer_frame() |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
123 start, end, tween_type = \ |
1264 | 124 self._domviewui.get_left_key(layer_idx, frame_idx) |
1236
2eeac97853eb
Running animation successful
Thinker K.F. Li <thinker@codemud.net>
parents:
1235
diff
changeset
|
125 tween_len = frame_idx - start + 1 |
1264 | 126 self._domviewui.tween(layer_idx, start, tween_len, tween_type) |
1234
0f597a2073eb
Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents:
1233
diff
changeset
|
127 |
1264 | 128 scene_group = self._domviewui.get_key_group(layer_idx, start) |
1237
b5cceb2b87bb
Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents:
1236
diff
changeset
|
129 self._enterGroup(scene_group) |
956 | 130 pass |
131 | |
1234
0f597a2073eb
Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents:
1233
diff
changeset
|
132 def _enterGroup(self, scene_group): |
1233
7f17a7e70d82
Integrate MBScene.entrGroup()
Thinker K.F. Li <thinker@codemud.net>
parents:
1232
diff
changeset
|
133 self.desktop.setCurrentLayer(scene_group.spitem) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
134 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
135 |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
136 def setTweenType(self, tween_type): |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
137 self._disable_tween_type_selector = True |
1240
84bcd398cccc
Fix bug of removing keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1239
diff
changeset
|
138 self.tweenTypeSelector.set_active(tween_type) |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
139 self._disable_tween_type_selector = False |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
140 pass |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
141 |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
142 def selectSceneObject(self, layer_idx, frame_idx): |
1177
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
143 try: |
1242
1b1eb8f9a866
Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1241
diff
changeset
|
144 start, stop, tween_type = \ |
1264 | 145 self._domviewui.get_key(layer_idx, frame_idx) |
1177
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
146 except: |
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
147 return |
1070
afa42d5836cc
Call setCurrentLayer to enter the current scene group.
wycc
parents:
1064
diff
changeset
|
148 |
1264 | 149 scene_group = self._domviewui.get_key_group(layer_idx, start) |
1234
0f597a2073eb
Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents:
1233
diff
changeset
|
150 self._enterGroup(scene_group) |
1177
ec1ea8555911
Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents:
1176
diff
changeset
|
151 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
|
152 pass |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
153 |
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
|
154 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
|
155 # Search for the current scene |
1264 | 156 layer_idx, frame_idx = self._domviewui.get_active_layer_frame() |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
157 |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
158 try: |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
159 left_start, left_end, left_tween_type = \ |
1264 | 160 self._domviewui.get_left_key(layer_idx, frame_idx) |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
161 except: |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
162 return |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
163 if left_end >= frame_idx: |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
164 return |
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
165 |
1264 | 166 self._domviewui.mark_key(layer_idx, frame_idx) |
167 self._domviewui.copy_key_group(layer_idx, left_start, frame_idx) | |
1195
cb2c611d1656
Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1194
diff
changeset
|
168 |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
169 self._director.show_scene(frame_idx) |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
170 pass |
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
171 |
1249
16a1166c3850
Add more method being monitored
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
172 def do_changeObjectLabel(self,w): |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
173 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
|
174 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
|
175 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
176 |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
177 def addNameEditor(self,hbox): |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
178 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
|
179 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
|
180 self.editDone = gtk.Button('Set') |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
181 hbox.pack_start(self.editDone,expand=False,fill=False) |
1249
16a1166c3850
Add more method being monitored
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
182 self.editDone.connect('clicked', self.do_changeObjectLabel) |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
183 pass |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
184 |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
185 def addTweenTypeSelector(self, hbox): |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
186 tweenbox = gtk.HBox() |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
187 label = gtk.Label('Tween Type') |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
188 tweenbox.pack_start(label) |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
189 |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
190 self.tweenTypeSelector = gtk.combo_box_new_text() |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
191 self.tweenTypeSelector.append_text('normal') |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
192 self.tweenTypeSelector.append_text('scale') |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
193 self.tweenTypeSelector.set_active(0) |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
194 tweenbox.pack_start(self.tweenTypeSelector, expand=False, fill=False) |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
195 hbox.pack_start(tweenbox, expand=False, fill=False) |
1249
16a1166c3850
Add more method being monitored
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
196 self.tweenTypeSelector.connect('changed', self.do_TweenTypeChange) |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
197 pass |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
198 |
1249
16a1166c3850
Add more method being monitored
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
199 def do_selection(self,w,obj): |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
200 objs = self.desktop.selection.list() |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
201 try: |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
202 o = objs[0] |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
203 print o.getCenter() |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
204 if o == self.last_select: |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
205 return |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
206 except: |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
207 self.nameEditor.set_text('') |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
208 self.last_select = None |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
209 return |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
210 self.last_select = o |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
211 try: |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
212 self.nameEditor.set_text(o.getAttribute("inkscape:label")) |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
213 except: |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
214 self.nameEditor.set_text('') |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
215 pass |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
216 |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
217 # The selection is a PYSPObject. Convert it to be PYNode |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
218 self.change_active_frame(self.last_select.repr.parent()) |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
219 pass |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
220 |
1251
fb5ad43c13eb
Rename onCellClick to do_CellClick
Thinker K.F. Li <thinker@codemud.net>
parents:
1250
diff
changeset
|
221 def do_CellClick(self, layer_idx, frame_idx): |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
222 self._lockui = True |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
223 |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
224 self._director.show_scene(frame_idx) |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
225 self.selectSceneObject(layer_idx, frame_idx) |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
226 |
1207
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
227 self._lockui = False |
489e6e474fdf
Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents:
1206
diff
changeset
|
228 pass |
1263 | 229 |
230 def markUndo(self, msg): | |
1264 | 231 #self._domviewui.mark_undo(msg) |
1263 | 232 # FIXME: move into domview latter when the inkscpae-pybind is modified |
233 # to support the sp_document_done. | |
234 self.desktop.doc().done("None",msg) | |
956 | 235 |
236 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
|
237 self._lockui=True |
1264 | 238 layer_idx, frame_idx = self._domviewui.get_active_layer_frame() |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
239 self.insertKeyScene(layer_idx, frame_idx) |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
240 self.selectSceneObject(layer_idx, frame_idx) |
1263 | 241 self.markUndo("insert key") |
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
|
242 self._lockui=False |
956 | 243 return |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
244 |
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
|
245 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
|
246 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
|
247 self.duplicateKeyScene() |
1263 | 248 self.markUndo("dup key") |
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
|
249 self._lockui = False |
956 | 250 |
251 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
|
252 self._lockui = True |
1264 | 253 layer_idx, frame_idx = self._domviewui.get_active_layer_frame() |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
254 self.removeKeyScene(layer_idx, frame_idx) |
1263 | 255 self.markUndo("remove key") |
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
|
256 self._lockui = False |
956 | 257 return |
941
9ba94c577a6f
Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff
changeset
|
258 |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
259 def lock(self): |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
260 self._domviewui.lock() |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
261 pass |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
262 |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
263 def unlock(self): |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
264 self._domviewui.unlock() |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
265 pass |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1264
diff
changeset
|
266 |
956 | 267 |
268 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
|
269 self._lockui = True |
956 | 270 self.extendScene() |
1263 | 271 self.markUndo("extend key") |
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
|
272 self._lockui = False |
956 | 273 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
|
274 |
1147 | 275 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
|
276 """ |
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
|
277 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
|
278 """ |
1147 | 279 if self.btnRun.get_label() == "Run": |
280 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
|
281 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
|
282 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
|
283 self.last_update = glib.timeout_add(tmout, self.doRunNext) |
1147 | 284 else: |
285 self.btnRun.set_label("Run") | |
286 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
|
287 self._lockui = False |
1161
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
288 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
|
289 pass |
1147 | 290 |
291 def doRunNext(self): | |
1264 | 292 if self.current > self._domviewui.get_max_frame(): |
1147 | 293 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
|
294 pass |
1161
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
295 try: |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
296 self._director.show_scene(self.current) |
1161
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
297 except: |
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
298 traceback.print_exc() |
a7faab54e8f8
Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1160
diff
changeset
|
299 raise |
1199
25e1579ed3d1
Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents:
1198
diff
changeset
|
300 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
|
301 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
|
302 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
|
303 pass |
1174 | 304 |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
305 def doInsertFrame(self, w): |
1219 | 306 self.lockui=True |
1264 | 307 layer_idx, frame_idx = self._domviewui.get_active_layer_frame() |
308 self._domviewui.insert_frames(layer_idx, frame_idx, 1) | |
1263 | 309 self.markUndo("insert frame") |
1219 | 310 self.lockui=False |
311 | |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
312 def doRemoveFrame(self, w): |
1219 | 313 self.lockui=True |
1264 | 314 layer_idx, frame_idx = self._domviewui.get_active_layer_frame() |
315 self._domviewui.rm_frames(layer_idx, frame_idx, 1) | |
1263 | 316 self.markUndo("remove frame") |
1219 | 317 self.lockui=False |
318 | |
1249
16a1166c3850
Add more method being monitored
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
319 def do_TweenTypeChange(self, w): |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
320 if self._disable_tween_type_selector: |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
321 return |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
322 |
1264 | 323 layer_idx, frame_idx = self._domviewui.get_active_layer_frame() |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
324 tween_type = self.tweenTypeSelector.get_active() |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
325 |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
326 start, end, old_tween_type = \ |
1264 | 327 self._domviewui.get_left_key(layer_idx, frame_idx) |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
328 if end >= frame_idx and start != end: |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
329 # Length of tween > 1 and cover this frame |
1264 | 330 self._domviewui.chg_tween(layer_idx, start, tween_type=tween_type) |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
331 pass |
1263 | 332 self.markUndo("change type") |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
333 pass |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
334 |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
335 def onQuit(self, event): |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
336 self.OK = False |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
337 gtk.main_quit() |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
338 pass |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
339 |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
340 def onOK(self, event): |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
341 self.OK = True |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
342 gtk.main_quit() |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
343 pass |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
344 |
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
345 def _add_buttons(self, hbox): |
956 | 346 btn = gtk.Button('Insert Key') |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
347 btn.connect('clicked', self.doInsertKeyScene) |
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
348 hbox.pack_start(btn, expand=False, fill=False) |
1174 | 349 |
956 | 350 btn=gtk.Button('Remove Key') |
351 btn.connect('clicked', self.doRemoveScene) | |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
352 hbox.pack_start(btn, expand=False, fill=False) |
1174 | 353 |
956 | 354 btn=gtk.Button('Extend scene') |
355 btn.connect('clicked', self.doExtendScene) | |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
356 hbox.pack_start(btn, expand=False, fill=False) |
1174 | 357 |
358 btn=gtk.Button('Duplicate Key') | |
359 btn.connect('clicked', self.doDuplicateKeyScene) | |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
360 hbox.pack_start(btn, expand=False, fill=False) |
1174 | 361 |
1219 | 362 btn=gtk.Button('insert') |
363 btn.connect('clicked', self.doInsertFrame) | |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
364 hbox.pack_start(btn, expand=False, fill=False) |
1219 | 365 |
366 btn=gtk.Button('remove') | |
367 btn.connect('clicked', self.doRemoveFrame) | |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
368 hbox.pack_start(btn, expand=False, fill=False) |
1219 | 369 |
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
|
370 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
|
371 btn.connect('clicked', self.doRun) |
1147 | 372 self.btnRun = btn |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
373 hbox.pack_start(btn, expand=False, fill=False) |
1174 | 374 |
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
|
375 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
|
376 self.addTweenTypeSelector(hbox) |
956 | 377 pass |
1144
257beac7c982
Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents:
1142
diff
changeset
|
378 |
956 | 379 def show(self): |
380 self.OK = True | |
1237
b5cceb2b87bb
Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents:
1236
diff
changeset
|
381 if not self._root: |
b5cceb2b87bb
Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents:
1236
diff
changeset
|
382 self._root = self.desktop.doc().root().repr |
1149
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
383 pass |
0ffef2df6201
Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents:
1148
diff
changeset
|
384 |
1128
b65ac686a7c5
Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents:
1125
diff
changeset
|
385 self.document = self.desktop.doc().rdoc |
1240
84bcd398cccc
Fix bug of removing keyframe
Thinker K.F. Li <thinker@codemud.net>
parents:
1239
diff
changeset
|
386 |
1264 | 387 self._domviewui.handle_doc_root(self.document, self._root) |
388 self._domviewui.register_active_frame_callback(self.do_CellClick) | |
389 self._director = scenes_director(self._domviewui) | |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
390 |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
391 if self.top == None: |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
392 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
|
393 toplevel = self.desktop.getToplevel() |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
394 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
|
395 else: |
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
396 self.top.remove(self.startWindow) |
1150
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
397 pass |
6586cd10c92f
Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents:
1149
diff
changeset
|
398 |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
399 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
|
400 self.startWindow = vbox |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
401 self.top.pack_start(vbox, expand=False) |
1264 | 402 frame_ui = self._domviewui.get_frame_ui_widget() |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
403 vbox.pack_start(frame_ui, expand=False) |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
404 hbox=gtk.HBox(False, 0) |
1231
d28b1b840bfc
Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents:
1230
diff
changeset
|
405 self._add_buttons(hbox) |
1222
03daff2d939c
Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents:
1220
diff
changeset
|
406 vbox.pack_start(hbox, expand=False) |
981 | 407 |
1064
16c69756ef5d
Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents:
1032
diff
changeset
|
408 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
|
409 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
|
410 return False |
956 | 411 pass |