Mercurial > MadButterfly
annotate pyink/domview_ui.py @ 1311:e6bb9d00341f
Make content dom and comp_dock synchronized
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Thu, 20 Jan 2011 13:08:26 +0800 |
parents | 49775feefbcf |
children | fcff6978f9bf |
rev | line source |
---|---|
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
1 import gtk |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
2 from tween import TweenObject |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
3 from frameline import frameline, frameruler |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
4 from domview import domview |
1253
07e0cb1e051d
Add class consistency_checker for domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1252
diff
changeset
|
5 import consistency |
1299
6949e2b6cae2
Add unlink clone checker.
Thinker K.F. Li <thinker@codemud.net>
parents:
1294
diff
changeset
|
6 import unlink_clone |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
7 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
8 ## \brief Maintain a stack of frameline UI component. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
9 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
10 # Every layer is assocated with a frameline. Framelines are showed/stacked in |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
11 # virtical. Framelines of lower layers are placed at lower position on the |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
12 # screen. This class provide a set of API to access framelines with layer and |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
13 # frame index number. You access/set content of frameline by specifing layer |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
14 # index and frame index. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
15 # |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
16 class frameline_stack(object): |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
17 _frameline_tween_types = (frameline.TWEEN_TYPE_NONE, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
18 frameline.TWEEN_TYPE_SHAPE) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
19 _num_frames_of_line = 100 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
20 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
21 _framelines = None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
22 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
23 def __init__(self, *args, **kws): |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
24 super(frameline_stack, self).__init__(*args, **kws) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
25 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
26 self._last_mouse_over_frameline = None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
27 self._last_active_frameline = None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
28 self._active_frame_callback = None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
29 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
30 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
31 def _change_hover_frameline(self, widget, event): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
32 """ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
33 Hide all hover frames. This is a hack. We should use the lost focus |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
34 event instead in the future to reduce the overhead. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
35 """ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
36 if self._last_mouse_over_frameline and \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
37 widget != self._last_mouse_over_frameline: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
38 self._last_mouse_over_frameline.mouse_leave() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
39 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
40 self._last_mouse_over_frameline = widget |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
41 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
42 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
43 ## \brief Switch to new active frameline. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
44 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
45 # Hide active frame mark for the active frame of old active frameline. It |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
46 # always shows at most one active frame mark. When a frame is activated, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
47 # all active frame mark of other frameline should be hidden. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
48 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
49 def _active_frameline(self, frameline): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
50 last = self._last_active_frameline |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
51 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
52 if last and last != frameline: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
53 last.deactive() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
54 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
55 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
56 self._last_active_frameline = frameline |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
57 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
58 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
59 ## \brief Called for changing of active frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
60 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
61 # This handle deactive previous frameline that owns an active frame when a |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
62 # frame in another frameline is activated. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
63 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
64 def _change_active_frame(self, frameline, frame_idx, button): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
65 frameline.active_frame(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
66 self._active_frameline(frameline) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
67 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
68 if self._active_frame_callback: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
69 layer_idx = frameline.layer_idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
70 self._active_frame_callback(layer_idx, frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
71 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
72 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
73 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
74 ## \brief Add a frameline into the frameline box for the given layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
75 # |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
76 def add_frameline(self, layer_idx): |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
77 if layer_idx > len(self._framelines): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
78 raise ValueError, 'layer number should be a consequence' |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
79 vbox = self._frameline_vbox |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
80 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
81 line = frameline(self._num_frames_of_line) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
82 line.set_size_request(self._num_frames_of_line * 10, 20) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
83 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
84 hbox = gtk.HBox() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
85 label = gtk.Label('') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
86 label.set_size_request(100,0) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
87 hbox.pack_start(label,expand=False, fill=True) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
88 hbox.pack_start(line) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
89 vbox.pack_start(hbox, False) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
90 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
91 # Put later one on the top of earier one, but after the ruler. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
92 position = len(self._framelines) - layer_idx + 1 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
93 vbox.reorder_child(hbox, position) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
94 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
95 self._framelines[layer_idx: layer_idx] = [line] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
96 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
97 for idx in range(layer_idx, len(self._framelines)): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
98 self._framelines[idx].layer_idx = idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
99 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
100 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
101 line.label = label |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
102 line.connect('motion-notify-event', self._change_hover_frameline) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
103 line.connect(frameline.FRAME_BUT_PRESS, self._change_active_frame) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
104 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
105 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
106 ## \brief Remove the given frameline from the frameline box. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
107 # |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
108 def remove_frameline(self, layer_idx): |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
109 vbox = self._frameline_vbox |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
110 line = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
111 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
112 hbox = line.parent |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
113 vbox.remove(hbox) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
114 del self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
115 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
116 for idx in range(layer_idx, len(self._framelines)): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
117 self._framelines[idx].layer_idx = idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
118 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
119 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
120 |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
121 def remove_all_framelines(self): |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
122 num = len(self._framelines) |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
123 |
1271 | 124 for idx in range(0, num): |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
125 line = self._framelines[idx] |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
126 hbox = line.parent |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
127 self._frameline_vbox.remove(hbox) |
1271 | 128 pass |
129 | |
130 self._framelines = [] | |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
131 self._last_mouse_over_frameline = None |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
132 self._last_active_frameline = None |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
133 self._active_frame_callback = None |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
134 pass |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
135 |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
136 def init_framelines(self): |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
137 if self._framelines!= None: |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
138 return |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
139 self._framelines = [] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
140 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
141 box = gtk.ScrolledWindow() |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
142 self.frameline_box = box |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
143 box.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
144 box.set_size_request(-1, 150) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
145 vbox = gtk.VBox() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
146 self._frameline_vbox = vbox |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
147 box.add_with_viewport(vbox) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
148 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
149 nframes = self._num_frames_of_line |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
150 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
151 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
152 # Set up a ruler |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
153 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
154 ruler = frameruler(nframes) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
155 ruler.set_size_request(nframes * 10, 20) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
156 ruler.show() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
157 hbox = gtk.HBox() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
158 label=gtk.Label('') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
159 label.set_size_request(100,0) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
160 hbox.pack_start(label,expand=False,fill=True) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
161 hbox.pack_start(ruler) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
162 vbox.pack_start(hbox, False) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
163 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
164 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
165 ## \brief Show framelines on the screen. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
166 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
167 # When a frameline was inserted or removed, it would not be showed |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
168 # immediately. This function is used to notify toolkit to update the |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
169 # screen and drawing framelines. |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
170 def show_framelines(self): |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
171 self._frameline_vbox.show_all() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
172 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
173 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
174 ## \brief Make given frame as current active frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
175 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
176 def active_frame(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
177 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
178 self._active_frameline(frameline) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
179 frameline.active_frame(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
180 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
181 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
182 ## \brief Get layer and frame index of current active frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
183 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
184 # \return (-1, -1) for no active, (layer_idx, frame_idx) for current |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
185 # active. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
186 def get_active_layer_frame(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
187 if self._last_active_frameline: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
188 layer_idx = self._last_active_frameline.layer_idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
189 frame_idx = self._last_active_frameline.get_active_frame() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
190 if frame_idx != -1: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
191 return layer_idx, frame_idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
192 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
193 return -1, -1 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
194 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
195 ## \brief Get information of the key frame at left-side. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
196 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
197 # The key frame, returned, is at the place of the give frame or its |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
198 # left-side. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
199 def get_left_key_tween(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
200 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
201 start, end, fl_tween_type = frameline.get_frame_block_floor(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
202 tween_type = self._frameline_tween_types.index(fl_tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
203 return start, end, tween_type |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
204 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
205 ## \brief Return information of a key frame and its tweening. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
206 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
207 # This method return the key frame that the given frame is, or is in its |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
208 # tween. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
209 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
210 # \return (start, end, tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
211 def get_key_tween(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
212 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
213 start, end, fl_tween_type = frameline.get_frame_block(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
214 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
215 tween_type = self._frameline_tween_types.index(fl_tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
216 return start, end, tween_type |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
217 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
218 def get_all_key_tween_of_layer(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
219 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
220 info = frameline.get_frame_blocks() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
221 tweens = [(tween[0], tween[1], |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
222 self._frameline_tween_types.index(tween[2])) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
223 for tween in info] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
224 return tweens |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
225 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
226 ## \brief Tweening key frame to a give size |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
227 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
228 # The tween can be changed by tweening it again. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
229 def tween(self, layer_idx, key_frame_idx, tween_len, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
230 tween_type=TweenObject.TWEEN_TYPE_NORMAL): |
1293
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
231 assert tween_len > 1 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
232 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
233 right_frame_idx = key_frame_idx + tween_len - 1 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
234 fl_tween_type = self._frameline_tween_types[tween_type] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
235 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
236 start, end, old_fl_tween_type = \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
237 frameline.get_frame_block(key_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
238 if start != key_frame_idx: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
239 ValueError, 'invalid key frame (%d)' % (key_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
240 if start < end: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
241 frameline.unmark_keyframe(end) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
242 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
243 frameline.mark_keyframe(right_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
244 frameline.tween(start, fl_tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
245 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
246 |
1293
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
247 def untween(self, layer_idx, key_frame_idx): |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
248 frameline = self._framelines[layer_idx] |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
249 start, end, tween_type = \ |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
250 frameline.get_frame_block(key_frame_idx) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
251 if start < end: |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
252 frameline.untween(start) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
253 frameline.unmark_keyframe(end) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
254 pass |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
255 pass |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
256 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
257 ## \brief Unmark a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
258 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
259 # Once a key frame was unmark, the associated tween was also removed |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
260 # totally. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
261 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
262 def unmark_keyframe(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
263 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
264 start, end, fl_tween_type = frameline.get_frame_block(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
265 if start != frame_idx: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
266 raise ValueError, 'no such key (%d, %d)' % (layer_idx, frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
267 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
268 frameline.unmark_keyframe(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
269 if start < end: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
270 frameline.unmark_keyframe(end) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
271 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
272 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
273 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
274 ## \brief Makr a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
275 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
276 # Make a frame as a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
277 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
278 def mark_keyframe(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
279 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
280 frameline.mark_keyframe(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
281 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
282 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
283 ## \brief Get data associated with the given key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
284 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
285 # The given frame index must be exactly a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
286 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
287 def get_keyframe_data(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
288 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
289 data = frameline.get_frame_data(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
290 return data |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
291 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
292 ## \brief Set/associate data with the given key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
293 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
294 def set_keyframe_data(self, layer_idx, frame_idx, data): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
295 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
296 frameline.set_frame_data(frame_idx, data) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
297 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
298 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
299 ## \brief Insert frames before specified frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
300 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
301 # Specified frame and frames after it are shift right for \ref num |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
302 # positions to make a space for new frames. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
303 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
304 def insert_frames(self, layer_idx, frame_idx, num): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
305 assert num > 0 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
306 assert frame_idx >= 0 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
307 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
308 for i in range(num): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
309 frameline.add_frame(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
310 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
311 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
312 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
313 ## \brief Remove a number of frames from the frameline. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
314 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
315 # All key frames and associated tween info covered by removing range would |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
316 # be removed. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
317 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
318 def rm_frames(self, layer_idx, frame_idx, num): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
319 assert num > 0 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
320 assert frame_idx >= 0 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
321 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
322 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
323 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
324 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
325 # Remove right key frame of last tween which left one will be removed. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
326 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
327 last_rm = frame_idx + num - 1 # last removed frame |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
328 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
329 start, end, tween_type = frameline.get_frame_block(last_rm) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
330 except ValueError: # last removed frame is not in any tween |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
331 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
332 else: |
1292
00833f8912a9
Revert function of domview_ui to changeset #4686f3131f2a
Thinker K.F. Li <thinker@codemud.net>
parents:
1284
diff
changeset
|
333 if start >= frame_idx and end > last_rm: |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
334 # Left key frame of the tween was removed, but not right one. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
335 frameline.untween(start) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
336 frameline.unmark_keyframe(end) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
337 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
338 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
339 |
1292
00833f8912a9
Revert function of domview_ui to changeset #4686f3131f2a
Thinker K.F. Li <thinker@codemud.net>
parents:
1284
diff
changeset
|
340 # |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
341 # Remove left key of the tween that right key frame is in removing |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
342 # range. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
343 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
344 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
345 start, end, tween_type = frameline.get_frame_block(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
346 except ValueError: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
347 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
348 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
349 if start < frame_idx and end <= last_rm: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
350 # right key frame is in removing range but left one. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
351 frameline.untween(start) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
352 frameline.unmark_keyframe(start) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
353 frameline.unmark_keyframe(end) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
354 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
355 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
356 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
357 for i in range(num): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
358 frameline.rm_frame(frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
359 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
360 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
361 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
362 ## \brief Set label for a layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
363 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
364 def set_layer_label(self, layer_idx, txt): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
365 frameline = self._framelines[layer_idx] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
366 frameline.label.set_text(txt) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
367 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
368 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
369 ## \brief Register a callback for active frame event. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
370 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
371 # The callback would be called when a frame is activated. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
372 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
373 def register_active_frame_callback(self, cb): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
374 self._active_frame_callback = cb |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
375 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
376 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
377 |
1246
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
378 |
1305
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
379 ## \biref Components and timelines management for domview. |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
380 # |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
381 # This is mix-in for domview_ui to provide components and timelines |
1308
49775feefbcf
Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents:
1306
diff
changeset
|
382 # management functions. This class expose a lot of methods from class |
49775feefbcf
Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents:
1306
diff
changeset
|
383 # component_manager. |
1305
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
384 # |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
385 class domview_ui_comp(object): |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
386 def __init__(self): |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
387 from comp_dock import comp_dock |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
388 |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
389 self._comp_dock = comp_dock(self) |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
390 pass |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
391 |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
392 ## \brief Setup desktop that the document will be serviced. |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
393 # |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
394 # This method must be called before handle_doc_root. |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
395 # |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
396 def set_desktop(self, desktop): |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
397 self._desktop = desktop |
1308
49775feefbcf
Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents:
1306
diff
changeset
|
398 self._comp_dock.install_dock(desktop) |
1305
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
399 pass |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
400 |
1306
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
401 def add_component(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
402 self._dom.add_component(name) |
1311
e6bb9d00341f
Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents:
1308
diff
changeset
|
403 self._comp_dock.dom_add_component(name) |
1306
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
404 pass |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
405 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
406 def rm_component(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
407 self._dom.rm_component(name) |
1311
e6bb9d00341f
Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents:
1308
diff
changeset
|
408 self._comp_dock.dom_rm_component(name) |
1306
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
409 pass |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
410 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
411 def switch_component(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
412 self._dom.switch_component(name) |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
413 pass |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
414 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
415 def all_comp_names(self): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
416 names = self._dom.all_comp_names() |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
417 return names |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
418 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
419 def has_component(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
420 r = self._dom.has_component(name) |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
421 return r |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
422 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
423 def add_timeline(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
424 self._dom.add_timeline(name) |
1311
e6bb9d00341f
Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents:
1308
diff
changeset
|
425 self._comp_dock.dom_add_timeline(name) |
1306
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
426 pass |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
427 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
428 def rm_timeline(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
429 self._dom.rm_timeline(name) |
1311
e6bb9d00341f
Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents:
1308
diff
changeset
|
430 self._comp_dock.dom_rm_timeline(name) |
1306
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
431 pass |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
432 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
433 def switch_timeline(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
434 self._dom.siwtch_timeline(name) |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
435 pass |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
436 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
437 def all_timeline_names(self): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
438 names = self._dom.all_timeline_names() |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
439 return names |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
440 |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
441 def has_timeline(self, name): |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
442 r = self._dom.has_timeline(name) |
8c0a4684c1f7
Expose methods from component_manager
Thinker K.F. Li <thinker@codemud.net>
parents:
1305
diff
changeset
|
443 return r |
1305
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
444 pass |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
445 |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
446 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
447 ## \brief Bridge of DOM-tree to syncrhonize data-model and UI. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
448 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
449 # This class is a wrapper |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
450 class domview_ui(object): |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
451 _tween_type_names = ('normal', 'scale') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
452 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
453 def __init__(self): |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
454 super(domview_ui, self).__init__() |
1304
94e6594dea59
Make comp_dock being instantiated by domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1299
diff
changeset
|
455 |
1244
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
456 self._fl_stack = frameline_stack() |
b241f9768833
Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents:
1243
diff
changeset
|
457 self._dom = domview() |
1304
94e6594dea59
Make comp_dock being instantiated by domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1299
diff
changeset
|
458 self._desktop = None |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
459 self._doc = None |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
460 self._root = None |
1252
71222a6b4c06
Implement lock for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
461 self._lock = False |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
462 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
463 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
464 ## \brief Update content of a frameline from scenes of respective layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
465 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
466 def _update_frameline_content(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
467 fl_stack = self._fl_stack |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
468 scene_nodes = self._dom.get_all_scene_node_of_layer(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
469 for scene_node in scene_nodes: |
1274
a4d3838264dd
Make public APIs being public for domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1273
diff
changeset
|
470 start, end, tween_name = self._dom.parse_one_scene(scene_node) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
471 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
472 fl_stack.mark_keyframe(layer_idx, start) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
473 fl_stack.set_keyframe_data(layer_idx, start, scene_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
474 if start != end: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
475 tween_type = self._tween_type_names.index(tween_name) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
476 tween_len = end - start + 1 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
477 fl_stack.tween(layer_idx, start, tween_len, tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
478 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
479 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
480 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
481 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
482 ## \brief Add a frameline for every found layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
483 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
484 # This method is called to create a frameline for every layer found when |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
485 # loading a document. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
486 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
487 def _add_frameline_for_every_layer(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
488 for layer_idx in range(self._dom.get_layer_num()): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
489 layer_group_node = self._dom.get_layer_group(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
490 label = layer_group_node.getAttribute('inkscape:label') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
491 |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
492 self._fl_stack.add_frameline(layer_idx) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
493 self._fl_stack.set_layer_label(layer_idx, label) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
494 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
495 self._update_frameline_content(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
496 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
497 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
498 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
499 ## \brief This method is called to handle a new document. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
500 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
501 def handle_doc_root(self, doc, root): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
502 self._dom.handle_doc_root(doc, root) |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
503 self._fl_stack.init_framelines() |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
504 self._add_frameline_for_every_layer() |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
505 self._fl_stack.show_framelines() |
1308
49775feefbcf
Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents:
1306
diff
changeset
|
506 self._comp_dock.refresh() # from domview_ui_comp |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
507 |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
508 self._doc = doc |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
509 self._root = root |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
510 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
511 |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
512 ## \brief Reload the document. |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
513 # |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
514 def reset(self): |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
515 self._fl_stack.remove_all_framelines() |
1275
776b024ae8f9
Fix the buggy implementation of reset()
Thinker K.F. Li <thinker@codemud.net>
parents:
1274
diff
changeset
|
516 self._dom.reset() |
776b024ae8f9
Fix the buggy implementation of reset()
Thinker K.F. Li <thinker@codemud.net>
parents:
1274
diff
changeset
|
517 self._add_frameline_for_every_layer() |
1278
f7395e788aaf
Show the new created framelines after we reload the layers.
wycc
parents:
1275
diff
changeset
|
518 self._fl_stack.show_framelines() |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
519 pass |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
520 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
521 ## \brief Mark given frame as a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
522 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
523 def mark_key(self, layer_idx, key_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
524 scene_group = self._dom.add_scene_group(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
525 scene_group_id = scene_group.getAttribute('id') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
526 |
1247
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
527 scene_node = self._dom.add_scene_node(layer_idx, key_idx, key_idx) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
528 self._dom.chg_scene_node(scene_node, ref=scene_group_id) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
529 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
530 self._fl_stack.mark_keyframe(layer_idx, key_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
531 self._fl_stack.set_keyframe_data(layer_idx, key_idx, scene_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
532 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
533 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
534 ## \brief Tweening a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
535 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
536 # To tween a key spanning several frames at right-side. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
537 # The tween of a key frame can be changed by tweening it again. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
538 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
539 def tween(self, layer_idx, key_frame_idx, tween_len, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
540 tween_type=TweenObject.TWEEN_TYPE_NORMAL): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
541 self._fl_stack.tween(layer_idx, key_frame_idx, tween_len, tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
542 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
543 end_frame_idx = key_frame_idx + tween_len - 1 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
544 scene_node = self._fl_stack.get_keyframe_data(layer_idx, key_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
545 tween_name = self._tween_type_names[tween_type] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
546 self._dom.chg_scene_node(scene_node, end=end_frame_idx, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
547 tween_type=tween_name) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
548 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
549 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
550 ## \brief Change tween info of a key frame |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
551 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
552 def chg_tween(self, layer_idx, key_frame_idx, |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
553 tween_len=None, tween_type=None): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
554 scene_node = self._fl_stack.get_keyframe_data(layer_idx, key_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
555 start, end, old_tween_type = \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
556 self._fl_stack.get_key_tween(layer_idx, key_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
557 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
558 if tween_len is not None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
559 end = start + tween_len - 1 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
560 self._dom.chg_scene_node(scene_node, end=end) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
561 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
562 if tween_type is not None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
563 tween_name = self._tween_type_names[tween_type] |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
564 self._dom.chg_scene_node(scene_node, tween_type=tween_name) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
565 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
566 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
567 if tween_type is None: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
568 tween_type = old_tween_type |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
569 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
570 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
571 tween_len = end - start + 1 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
572 self._fl_stack.tween(layer_idx, start, tween_len, tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
573 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
574 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
575 ## \brief Unmark a frame from a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
576 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
577 def unmark_key(self, layer_idx, key_frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
578 scene_node = self._fl_stack.get_keyframe_data(layer_idx, key_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
579 self._dom.rm_scene_node_n_group(scene_node) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
580 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
581 self._fl_stack.unmark_keyframe(layer_idx, key_frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
582 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
583 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
584 ## \brief Insert frames at specified position. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
585 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
586 # All frame at and after given position will shift right. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
587 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
588 def insert_frames(self, layer_idx, frame_idx, num): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
589 self._fl_stack.insert_frames(layer_idx, frame_idx, num) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
590 self._dom.insert_frames(layer_idx, frame_idx, num) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
591 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
592 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
593 ## \brief Insert frames at specified position. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
594 # |
1293
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
595 # All frames at and after given position will shift left, except nearest |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
596 # \ref num frames are removed. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
597 # |
1293
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
598 # - For a tween that only right part is covered by removing |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
599 # range, its tween length would be shrinked just before |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
600 # removing range. |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
601 # - For a tween that only left part is covered by removing range, |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
602 # key and tween are fully removed. |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
603 # - For a tween that only middle part is covered, tween length is |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
604 # also shrinked according length of covered part. |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
605 # |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
606 def rm_frames(self, layer_idx, frame_idx, num): |
1293
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
607 # |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
608 # Check the key that is partially covered key tween, but not |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
609 # include key frame. |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
610 # |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
611 last_rm_idx = frame_idx + num - 1 |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
612 try: |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
613 start, end, tween_type = \ |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
614 self._fl_stack.get_left_key_tween(layer_idx, frame_idx) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
615 except ValueError: |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
616 pass # no key at left |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
617 else: |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
618 if start < frame_idx and end >= frame_idx: |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
619 # |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
620 # Key frame is not covered, only part of a key tween |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
621 # is covered. Shrink its tween length, size of the |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
622 # covered part, or the key will be unmarked. |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
623 # |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
624 shrink_sz = min(end - frame_idx + 1, num) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
625 |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
626 tween_len = end - start + 1 - shrink_sz |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
627 if tween_len == 1: |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
628 self._fl_stack.untween(layer_idx, start) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
629 else: |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
630 self._fl_stack.tween(layer_idx, start, tween_len, |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
631 tween_type) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
632 pass |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
633 |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
634 scene_end = end - shrink_sz |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
635 scene_node = self._fl_stack.get_keyframe_data(layer_idx, start) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
636 self._dom.chg_scene_node(scene_node, end=scene_end) |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
637 |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
638 frame_idx = scene_end + 1 # to shift/remove keys at right side |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
639 pass |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
640 pass |
10bffaffef82
Fix the supporting of removing key tween partially.
Thinker K.F. Li <thinker@codemud.net>
parents:
1292
diff
changeset
|
641 |
1247
45e9566ea5c0
Fix bugs of inserting/removing frames.
Thinker K.F. Li <thinker@codemud.net>
parents:
1246
diff
changeset
|
642 self._fl_stack.rm_frames(layer_idx, frame_idx, num) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
643 self._dom.rm_frames(layer_idx, frame_idx, num) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
644 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
645 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
646 ## \brief Insert a layer at given position. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
647 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
648 # Original layer \ref layer_idx and later ones would be shifted to make a |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
649 # space for the new layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
650 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
651 def insert_layer(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
652 self._dom.insert_layer(layer_idx) |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
653 self._fl_stack.add_frameline(layer_idx) |
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
654 self._fl_stack.show_framelines() |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
655 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
656 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
657 ## \brief Remove given layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
658 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
659 def rm_layer(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
660 self._dom.rm_layer(layer_idx) |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
661 self._fl_stack.remove_frameline(layer_idx) |
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
662 self._fl_stack.show_framelines() |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
663 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
664 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
665 def set_active_layer_frame(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
666 self._fl_stack.active_frame(layer_idx, frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
667 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
668 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
669 ## \bref Return current active frame and its layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
670 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
671 # \return (layer_idx, frame_idx) of active frame, or (-1, -1) when no |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
672 # active one. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
673 def get_active_layer_frame(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
674 layer_idx, frame_idx = self._fl_stack.get_active_layer_frame() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
675 return layer_idx, frame_idx |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
676 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
677 def get_layer_num(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
678 return self._dom.get_layer_num() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
679 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
680 ## \brief Return associated group node for a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
681 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
682 # The given frame index must be exactly a key frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
683 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
684 def get_key_group(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
685 scene_node = self._fl_stack.get_keyframe_data(layer_idx, frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
686 scene_group_id = scene_node.getAttribute('ref') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
687 scene_group_node = self._dom.get_node(scene_group_id) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
688 return scene_group_node |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
689 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
690 ## \brief Find an associated key frame and tween info for a group ID. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
691 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
692 def find_key_from_group(self, scene_group_id): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
693 layer_idx, scene_node = \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
694 self._dom.find_layer_n_scene_of_node(scene_group_id) |
1259
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
695 if layer_idx == -1: |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
696 raise ValueError, \ |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
697 'can not find the key for group %s' % (scene_group_id) |
1274
a4d3838264dd
Make public APIs being public for domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1273
diff
changeset
|
698 start, end, tween_name = self._dom.parse_one_scene(scene_node) |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
699 tween_type = self._tween_type_names.index(tween_name) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
700 return layer_idx, (start, end, tween_type) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
701 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
702 ## \brief Return key and tween info for given frame index. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
703 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
704 # The return key is at given frame, or its tween covers given frame. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
705 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
706 def get_key(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
707 start, end, tween_type = \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
708 self._fl_stack.get_key_tween(layer_idx, frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
709 return start, end, tween_type |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
710 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
711 def get_left_key(self, layer_idx, frame_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
712 start, end, tween_type = \ |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
713 self._fl_stack.get_left_key_tween(layer_idx, frame_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
714 return start, end, tween_type |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
715 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
716 ## \brief Return information of key frames in the given layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
717 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
718 def get_layer_keys(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
719 key_tweens = self._fl_stack.get_all_key_tween_of_layer(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
720 return key_tweens |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
721 |
1246
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
722 ## \brief Copy content of a source key frame to a destinate. |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
723 # |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
724 # Copy content of the scene group of a source key frame to the |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
725 # scene group of a destinate key frame. |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
726 # |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
727 def copy_key_group(self, layer_idx, src_frame_idx, dst_frame_idx): |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
728 src_group = self.get_key_group(layer_idx, src_frame_idx) |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
729 dst_group = self.get_key_group(layer_idx, dst_frame_idx) |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
730 self._dom.copy_group_children(src_group, dst_group) |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
731 pass |
42c4874c8d1e
Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1245
diff
changeset
|
732 |
1294 | 733 def clone_key_group(self, layer_idx, src_frame_idx, dst_frame_idx): |
1288
fb44830c8a81
Change the duplicate key back to the old implementation. Now, we have clone key frame(extend) and copy key frame(duplicate).
wycc
parents:
1284
diff
changeset
|
734 src_group = self.get_key_group(layer_idx, src_frame_idx) |
fb44830c8a81
Change the duplicate key back to the old implementation. Now, we have clone key frame(extend) and copy key frame(duplicate).
wycc
parents:
1284
diff
changeset
|
735 dst_group = self.get_key_group(layer_idx, dst_frame_idx) |
1294 | 736 self._dom.clone_group_children(src_group, dst_group) |
1288
fb44830c8a81
Change the duplicate key back to the old implementation. Now, we have clone key frame(extend) and copy key frame(duplicate).
wycc
parents:
1284
diff
changeset
|
737 pass |
fb44830c8a81
Change the duplicate key back to the old implementation. Now, we have clone key frame(extend) and copy key frame(duplicate).
wycc
parents:
1284
diff
changeset
|
738 |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
739 ## \brief Return widget showing frames and layers. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
740 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
741 def get_frame_ui_widget(self): |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
742 return self._fl_stack.frameline_box |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
743 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
744 ## \brief Register a callback for activating a frame event. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
745 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
746 # The callback function is called when a frame is activated. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
747 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
748 def register_active_frame_callback(self, cb): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
749 self._fl_stack.register_active_frame_callback(cb) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
750 pass |
1259
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
751 |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
752 ## \brief Find the layer index associated with a given layer group. |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
753 # |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
754 def find_layer_from_group(self, group_id): |
1261
6177f5d0ef01
Remove the layer when a layer group being removed.
Thinker K.F. Li <thinker@codemud.net>
parents:
1259
diff
changeset
|
755 layer_idx = self._dom.find_layer_of_group(group_id) |
1259
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
756 if layer_idx == -1: |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
757 raise ValueError, \ |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
758 'can not find the layer for group %s' % (group_id) |
df474448364e
Add find_layer_from_group() for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1258
diff
changeset
|
759 return layer_idx |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
760 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
761 ## \brief Get duplicate group of a layer. |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
762 # |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
763 def get_layer_dup_group(self, layer_idx): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
764 data = self._dom.get_layer_data(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
765 if not data: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
766 data = dict() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
767 self._dom.set_layer_data(layer_idx, data) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
768 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
769 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
770 dup_group = None |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
771 if data.has_key('dup_group_id'): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
772 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
773 dup_group = self._dom.get_node(data['dup_group_id']) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
774 except KeyError: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
775 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
776 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
777 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
778 if not dup_group: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
779 # Search dup group from children of the layer group |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
780 layer_group = self._dom.get_layer_group(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
781 for child in layer_group.childList(): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
782 try: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
783 label = child.getAttribute('inkscape:label') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
784 except: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
785 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
786 else: |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
787 if label == 'dup': |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
788 data['dup_group_id'] = child |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
789 return child |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
790 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
791 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
792 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
793 # Or create a new dup group for the layer |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
794 dup_group = self._dom.create_layer_dup_group(layer_idx) |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
795 data['dup_group_id'] = dup_group.getAttribute('id') |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
796 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
797 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
798 return dup_group |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
799 |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
800 def get_max_frame(self): |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
801 max_frame = self._dom.get_max_frame() |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
802 return max_frame |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
803 |
1265
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
804 ## \brief add the current position to the undo buffer. |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
805 # |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
806 # The msg will be displayed in the UI to indicate the undo set. |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
807 def mark_undo(self, msg): |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
808 self._dom.mark_undo(msg) |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
809 pass |
ca301f6abef7
Support undo for insert key frame/rm keyframe. We will refresh all layers and scenes since it is not feasible to collect these changes and update the layers and scenes. We may scan two level only in the future to improve the performance.
wycc
parents:
1262
diff
changeset
|
810 |
1245
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
811 @property |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
812 def doc(self): |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
813 return self._doc |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
814 |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
815 @property |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
816 def root(self): |
ccbf0c5d01d1
Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents:
1244
diff
changeset
|
817 return self._root |
1248
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
818 |
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
819 def lock(self): |
1252
71222a6b4c06
Implement lock for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
820 if self._lock: |
71222a6b4c06
Implement lock for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
821 return False |
71222a6b4c06
Implement lock for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
822 self._lock = True |
1248
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
823 return True |
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
824 |
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
825 def unlock(self): |
1252
71222a6b4c06
Implement lock for domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1248
diff
changeset
|
826 self._lock = False |
1248
2f9fa5d59e67
Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents:
1247
diff
changeset
|
827 return True |
1243
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
828 pass |
d5f70928e9f1
Move MBScene_domview_ui and MBScene_domview to separated modules.
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
829 |
1258
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
830 |
1262
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
831 ## \brief Expose some internal interface. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
832 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
833 # This is a mix-in to provide API for internal using, for example, |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
834 # consistency_checker. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
835 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
836 class domview_internal(object): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
837 ## \brief Search a node by a ID. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
838 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
839 def get_node(self, node_id): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
840 node = self._dom.get_node(node_id) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
841 return node |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
842 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
843 ## \brief Search scene node by scene group ID. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
844 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
845 def get_scene_by_group(self, scene_group_id): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
846 scene_node = self._dom.get_scene(scene_group_id) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
847 return scene_node |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
848 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
849 ## \brief Manage a scene node that is unknown by domview_ui before. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
850 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
851 def manage_scene_node(self, scene_node, scene_group): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
852 layer_group = scene_group.parent() |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
853 layer_group_id = layer_group.getAttribute('id') |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
854 layer_idx = self.find_layer_from_group(layer_group_id) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
855 self._dom.manage_scene_node(layer_idx, scene_node) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
856 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
857 start, end, tween_name = \ |
1274
a4d3838264dd
Make public APIs being public for domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1273
diff
changeset
|
858 self._dom.parse_one_scene(scene_node) |
1262
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
859 tween_type = self._tween_type_names.index(tween_name) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
860 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
861 tween_len = end - start + 1 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
862 self._fl_stack.mark_keyframe(layer_idx, start) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
863 self._fl_stack.set_keyframe_data(layer_idx, start, scene_node) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
864 self._fl_stack.tween(layer_idx, start, tween_len, tween_type) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
865 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
866 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
867 ## \brief Manage a layer group that is unknown by domview_ui before. |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
868 # |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
869 def manage_layer_group(self, layer_group): |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
870 try: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
871 layer_group_id = layer_group.getAttribute('id') |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
872 except: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
873 return |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
874 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
875 layer_idx = self._dom.manage_layer_group(layer_group_id) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
876 if layer_idx == -1: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
877 return |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
878 |
1273
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
879 self._fl_stack.add_frameline(layer_idx) |
1d0474f2f6fa
Make public APIs being public for frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents:
1272
diff
changeset
|
880 self._fl_stack.show_framelines() |
1262
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
881 try: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
882 label = layer_group.getAttribute('inkscape:label') |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
883 except: |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
884 label = layer_group.getAttribute('id') |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
885 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
886 self._fl_stack.set_layer_label(layer_idx, label) |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
887 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
888 pass |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
889 |
2f861eea1214
Make domview_ui manages scenes and layers found by checker
Thinker K.F. Li <thinker@codemud.net>
parents:
1261
diff
changeset
|
890 |
1305
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
891 ## \brief Oven domview_ui and all mix-ins |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
892 # |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
893 class domview_ui_oven(domview_ui, domview_ui_comp): |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
894 def __init__(self): |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
895 super(domview_ui_oven, self).__init__() |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
896 pass |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
897 pass |
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
898 |
1258
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
899 ## \brief A mix-in to enable workers for a domview_ui. |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
900 # |
1305
573a51b1eb37
domview_ui_comp as a mix-in to oven comp_dock and domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents:
1304
diff
changeset
|
901 class domview_ui_with_workers(domview_ui_oven, domview_internal): |
1258
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
902 def __init__(self): |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
903 super(domview_ui_with_workers, self).__init__() |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
904 |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
905 self._consistency_checker = consistency.consistency_checker(self) |
1299
6949e2b6cae2
Add unlink clone checker.
Thinker K.F. Li <thinker@codemud.net>
parents:
1294
diff
changeset
|
906 self._unlink_clone_checker = unlink_clone.unlink_clone_checker(self) |
1258
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
907 pass |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
908 |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
909 def handle_doc_root(self, doc, root): |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
910 super(domview_ui_with_workers, self).handle_doc_root(doc, root) |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
911 |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
912 self._consistency_checker.handle_doc_root(doc, root) |
1299
6949e2b6cae2
Add unlink clone checker.
Thinker K.F. Li <thinker@codemud.net>
parents:
1294
diff
changeset
|
913 self._unlink_clone_checker.handle_doc_root(doc, root) |
1258
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
914 pass |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
915 pass |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
916 |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
917 |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
918 ## \brief Factory function of domview_ui. |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
919 # |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
920 def create_domview_ui(): |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
921 domview = domview_ui_with_workers() |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
922 return domview |
2609b219703d
Move initialize of consistency_checker to domview_ui_with_workers
Thinker K.F. Li <thinker@codemud.net>
parents:
1253
diff
changeset
|
923 |