annotate pyink/MBScene.py @ 1248:2f9fa5d59e67

Add data_monitor meta-class to monitor accessing on domview_ui. - The monitoring is to prevent from reentry triggered by DOM events. - call 'do*' methods of a monitored class would try to lock domview_ui at first. - The method would not be executed actually if being fault to lock. - You can make monitor to print debug message with environment variable - DATA_MONITOR_DBG=1, or - DATA_MONITOR_DBG=2
author Thinker K.F. Li <thinker@codemud.net>
date Tue, 11 Jan 2011 10:04:14 +0800
parents 42c4874c8d1e
children 16a1166c3850
rev   line source
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
1 #!/usr/bin/python
1150
6586cd10c92f Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents: 1149
diff changeset
2 # -*- indent-tabs-mode: t; tab-width: 8; python-indent: 4; fill-column: 79 -*-
6586cd10c92f Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents: 1149
diff changeset
3 # vim: sw=4:ts=8:sts=4:textwidth=79
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
4 import pygtk
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
5 import gtk
1064
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
6 import glib
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
7 import traceback
1064
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
8 import pybInkscape
1245
ccbf0c5d01d1 Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents: 1244
diff changeset
9 from tween import scenes_director
1244
b241f9768833 Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents: 1243
diff changeset
10 from domview_ui import domview_ui
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
11
957
8e3e46c26137 Break long lines
Thinker K.F. Li <thinker@codemud.net>
parents: 956
diff changeset
12 # Please refer to
8e3e46c26137 Break long lines
Thinker K.F. Li <thinker@codemud.net>
parents: 956
diff changeset
13 # http://www.assembla.com/wiki/show/MadButterfly/Inkscape_extention
8e3e46c26137 Break long lines
Thinker K.F. Li <thinker@codemud.net>
parents: 956
diff changeset
14 # for the designed document.
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
15
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
16
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
17 # Algorithm:
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
18 #
955
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
19 # We will parse the first two level of the SVG DOM. collect a table of
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
20 # layer and scene.
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
21 # - 1. Collect the layer table which will be displayed as the first
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
22 # column of the grid.
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
23 # - 2. Get the maximum scene number. This will decide the size of the
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
24 # grid.
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
25 # - 3. When F6 is pressed, we will check if this scene has been
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
26 # defined. This can be done by scan all second level group and
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
27 # check if the current scene number is within the range specified
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
28 # by scene field. The function IsSceneDefined(scene) can be used
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
29 # for this purpose.
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
30 # - 4. If this is a new scene, we will append a new group which
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
31 # duplication the content of the last scene in the same
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
32 # group. The scene field will contain the number from the last
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
33 # scene number of the last scene to the current scenen
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
34 # number. For example, if the last scene is from 4-7 and the new
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
35 # scene is 10, we will set the scene field as "8-10".
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
36 # - 5. If this scene are filled screne, we will split the existing
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
37 # scene into two scenes with the same content.
53b0f8dc2284 Add tailing 'pass' commands to close indents
Thinker K.F. Li <thinker@codemud.net>
parents: 943
diff changeset
38 #
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
39
1248
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
40 ## \brief Monitor accessing on the dta model.
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
41 #
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
42 # This class is a meta-class that monitor data accessing for its instance
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
43 # classes.
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
44 #
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
45 # All methods, of instance classes, who's name is prefixed with 'do' are
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
46 # monitored. When a monitored method was called, monitor will try to lock
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
47 # _domview of the object. The method is only called if successfully acquiring
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
48 # the lock, or return immediately. The lock is released after the calling
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
49 # returned.
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
50 #
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
51 class data_monitor(type):
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
52 def __new__(mclazz, name, bases, clazz_dict):
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
53 import os
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
54
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
55 debug_level = 0
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
56 if os.environ.has_key('DATA_MONITOR_DBG'):
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
57 debug_level = int(os.environ['DATA_MONITOR_DBG'])
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
58 pass
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
59
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
60 def gen_sentinel(name, func):
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
61 def sentinel(self, *args, **kws):
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
62 if debug_level >= 1:
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
63 print 'calling %s' % (name)
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
64 pass
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
65 if debug_level >= 2:
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
66 print ' args: %s' % (repr(args))
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
67 print ' kws: %s' % (repr(kws))
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
68 pass
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
69
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
70 if not self._domview.lock(): # can not lock
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
71 return
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
72
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
73 try:
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
74 func(self, *args, **kws)
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
75 finally:
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
76 self._domview.unlock()
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
77 pass
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
78 pass
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
79 return sentinel
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
80
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
81 for attr_name in clazz_dict:
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
82 if (not attr_name.startswith('do')) or \
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
83 (not callable(clazz_dict[attr_name])):
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
84 continue
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
85 clazz_dict[attr_name] = \
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
86 gen_sentinel(attr_name, clazz_dict[attr_name])
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
87 pass
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
88
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
89 clazz = type.__new__(mclazz, name, bases, clazz_dict)
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
90
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
91 return clazz
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
92 pass
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
93
1209
41d13feeecc4 Doc MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1208
diff changeset
94 ## \brief MBScene connect GUI and DOM-tree
41d13feeecc4 Doc MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1208
diff changeset
95 #
1244
b241f9768833 Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents: 1243
diff changeset
96 # This method accepts user actions and involves domview_ui to update
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
97 # data on the document.
1209
41d13feeecc4 Doc MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1208
diff changeset
98 #
1234
0f597a2073eb Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents: 1233
diff changeset
99 class MBScene(object):
1248
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
100 __metaclass__ = data_monitor
2f9fa5d59e67 Add data_monitor meta-class to monitor accessing on domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1246
diff changeset
101
1157
3a891dccabd8 Remove the locate tween. It is a special case for the scale tween
wycc
parents: 1155
diff changeset
102 _tween_type_names = ('normal', 'scale')
1150
6586cd10c92f Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents: 1149
diff changeset
103
1204
78925515836f Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents: 1203
diff changeset
104 _num_frames_of_line = 100
78925515836f Add methods for managing framelines
Thinker K.F. Li <thinker@codemud.net>
parents: 1203
diff changeset
105
1149
0ffef2df6201 Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents: 1148
diff changeset
106 def __init__(self, desktop, win, root=None):
1188
45e3a9273af2 Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1185
diff changeset
107 super(MBScene, self).__init__()
45e3a9273af2 Move code about monitoring DOM-tree to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1185
diff changeset
108
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
109 self.desktop = desktop
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
110 self.window = win
1064
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
111 self.top = None
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
112 self.last_update = None
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
113 pybInkscape.inkscape.connect('change_selection', self.on_selection)
1099
5ba2cab1d505 Add name editor to edit the inkscape:label withgout using the object property editor. This is more Flash-like operation.
wycc
parents: 1097
diff changeset
114 self.last_select = None
1206
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
115 self._lockui = False
1245
ccbf0c5d01d1 Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents: 1244
diff changeset
116 self._director = None
1140
d4dbcb93aee0 Separate the tween from the main module.
wycc
parents: 1136
diff changeset
117 self.document = None
1237
b5cceb2b87bb Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents: 1236
diff changeset
118 self._root = root
1206
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
119 self.framerate = 12
1150
6586cd10c92f Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents: 1149
diff changeset
120 self._disable_tween_type_selector = False
1236
2eeac97853eb Running animation successful
Thinker K.F. Li <thinker@codemud.net>
parents: 1235
diff changeset
121 self.current = 0
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
122
1244
b241f9768833 Remove MBScene_ from the prefix of class names.
Thinker K.F. Li <thinker@codemud.net>
parents: 1243
diff changeset
123 self._domview = domview_ui()
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
124 pass
1099
5ba2cab1d505 Add name editor to edit the inkscape:label withgout using the object property editor. This is more Flash-like operation.
wycc
parents: 1097
diff changeset
125
1224
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
126 def change_active_frame(self, node):
1221
33aa2d63e240 When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents: 1220
diff changeset
127 """
1224
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
128 Change the active frame to the current selected node. This will
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
129 tell users where the current node is.
1221
33aa2d63e240 When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents: 1220
diff changeset
130 """
1224
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
131 while node:
1221
33aa2d63e240 When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents: 1220
diff changeset
132 try:
1224
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
133 node_id = node.getAttribute('id')
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
134 except:
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
135 node = node.parent()
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
136 continue
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
137
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
138 try:
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
139 layer_idx, (start, end, tween_type) = \
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
140 self._domview.find_key_from_group(node_id)
1221
33aa2d63e240 When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents: 1220
diff changeset
141 except:
1223
Thinker K.F. Li <thinker@codemud.net>
parents: 1222 1221
diff changeset
142 pass
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
143 else:
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
144 self._domview.set_active_layer_frame(layer_idx, start)
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
145 break
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
146
1224
5d731460b32c Remove search_by_id() from frameline.
Thinker K.F. Li <thinker@codemud.net>
parents: 1223
diff changeset
147 node = node.parent()
1223
Thinker K.F. Li <thinker@codemud.net>
parents: 1222 1221
diff changeset
148 pass
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
149 pass
1221
33aa2d63e240 When we select a new object, search the scene group which contain it and make it as the active frame.
wycc
parents: 1220
diff changeset
150
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
151 def insertKeyScene(self, layer_idx, frame_idx):
1207
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
152 """
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
153 Insert a new key scene into the stage. If the nth is always a
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
154 key scene, we will return without changing anything. If the
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
155 nth is a filled scene, we will break the original scene into
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
156 two parts. If the nth is out of any scene, we will append a
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
157 new scene.
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
158
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
159 """
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
160 try:
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
161 self._domview.mark_key(layer_idx, frame_idx)
1234
0f597a2073eb Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents: 1233
diff changeset
162 except ValueError: # existed key frame
0f597a2073eb Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents: 1233
diff changeset
163 pass
1207
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
164 pass
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
165
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
166 def removeKeyScene(self, layer_idx, frame_idx):
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
167 self._domview.unmark_key(layer_idx, frame_idx)
1245
ccbf0c5d01d1 Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents: 1244
diff changeset
168 self._director.show_scene(frame_idx)
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
169 pass
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
170
973
84f502fb3e40 Rewrite the MBScene to use framelines. The old layers/scenes data structure is used to load the scenes only. We should remove it completely in the future.
wycc
parents: 964
diff changeset
171 def extendScene(self):
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
172 layer_idx, frame_idx = self._domview.get_active_layer_frame()
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
173 start, end, tween_type = \
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
174 self._domview.get_left_key(layer_idx, frame_idx)
1236
2eeac97853eb Running animation successful
Thinker K.F. Li <thinker@codemud.net>
parents: 1235
diff changeset
175 tween_len = frame_idx - start + 1
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
176 self._domview.tween(layer_idx, start, tween_len, tween_type)
1234
0f597a2073eb Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents: 1233
diff changeset
177
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
178 scene_group = self._domview.get_key_group(layer_idx, start)
1237
b5cceb2b87bb Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents: 1236
diff changeset
179 self._enterGroup(scene_group)
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
180 pass
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
181
1234
0f597a2073eb Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents: 1233
diff changeset
182 def _enterGroup(self, scene_group):
1233
7f17a7e70d82 Integrate MBScene.entrGroup()
Thinker K.F. Li <thinker@codemud.net>
parents: 1232
diff changeset
183 self.desktop.setCurrentLayer(scene_group.spitem)
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
184 pass
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
185
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
186 def setTweenType(self, tween_type):
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
187 self._disable_tween_type_selector = True
1240
84bcd398cccc Fix bug of removing keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1239
diff changeset
188 self.tweenTypeSelector.set_active(tween_type)
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
189 self._disable_tween_type_selector = False
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
190 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
191
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
192 def selectSceneObject(self, layer_idx, frame_idx):
1177
ec1ea8555911 Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents: 1176
diff changeset
193 try:
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
194 start, stop, tween_type = \
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
195 self._domview.get_key(layer_idx, frame_idx)
1177
ec1ea8555911 Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents: 1176
diff changeset
196 except:
ec1ea8555911 Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents: 1176
diff changeset
197 return
1070
afa42d5836cc Call setCurrentLayer to enter the current scene group.
wycc
parents: 1064
diff changeset
198
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
199 scene_group = self._domview.get_key_group(layer_idx, start)
1234
0f597a2073eb Enter the group after insert/extend a key frame
Thinker K.F. Li <thinker@codemud.net>
parents: 1233
diff changeset
200 self._enterGroup(scene_group)
1177
ec1ea8555911 Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents: 1176
diff changeset
201 self.setTweenType(tween_type)
ec1ea8555911 Stop selectSceneObject() from using private variable _keys of frameline
Thinker K.F. Li <thinker@codemud.net>
parents: 1176
diff changeset
202 pass
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
203
1097
52d8bf5d12b4 Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents: 1070
diff changeset
204 def duplicateKeyScene(self):
52d8bf5d12b4 Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents: 1070
diff changeset
205 # Search for the current scene
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
206 layer_idx, frame_idx = self._domview.get_active_layer_frame()
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
207
1195
cb2c611d1656 Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1194
diff changeset
208 try:
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
209 left_start, left_end, left_tween_type = \
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
210 self._domview.get_left_key(layer_idx, frame_idx)
1195
cb2c611d1656 Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1194
diff changeset
211 except:
cb2c611d1656 Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1194
diff changeset
212 return
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
213 if left_end >= frame_idx:
1195
cb2c611d1656 Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1194
diff changeset
214 return
cb2c611d1656 Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1194
diff changeset
215
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
216 self._domview.mark_key(layer_idx, frame_idx)
1246
42c4874c8d1e Move _duplicate_group to domview_ui.
Thinker K.F. Li <thinker@codemud.net>
parents: 1245
diff changeset
217 self._domview.copy_key_group(layer_idx, left_start, frame_idx)
1195
cb2c611d1656 Fix bug of duplicating a keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1194
diff changeset
218
1245
ccbf0c5d01d1 Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents: 1244
diff changeset
219 self._director.show_scene(frame_idx)
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
220 pass
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
221
1207
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
222 def changeObjectLabel(self,w):
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
223 o = self.desktop.selection.list()[0]
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
224 o.setAttribute("inkscape:label", self.nameEditor.get_text())
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
225 pass
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
226
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
227 def addNameEditor(self,hbox):
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
228 self.nameEditor = gtk.Entry(max=40)
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
229 hbox.pack_start(self.nameEditor,expand=False,fill=False)
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
230 self.editDone = gtk.Button('Set')
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
231 hbox.pack_start(self.editDone,expand=False,fill=False)
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
232 self.editDone.connect('clicked', self.changeObjectLabel)
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
233 pass
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
234
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
235 def addTweenTypeSelector(self, hbox):
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
236 tweenbox = gtk.HBox()
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
237 label = gtk.Label('Tween Type')
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
238 tweenbox.pack_start(label)
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
239
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
240 self.tweenTypeSelector = gtk.combo_box_new_text()
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
241 self.tweenTypeSelector.append_text('normal')
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
242 self.tweenTypeSelector.append_text('scale')
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
243 self.tweenTypeSelector.set_active(0)
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
244 tweenbox.pack_start(self.tweenTypeSelector, expand=False, fill=False)
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
245 hbox.pack_start(tweenbox, expand=False, fill=False)
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
246 self.tweenTypeSelector.connect('changed', self.onTweenTypeChange)
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
247 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
248
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
249 def on_selection(self,w,obj):
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
250 objs = self.desktop.selection.list()
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
251 try:
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
252 o = objs[0]
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
253 print o.getCenter()
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
254 if o == self.last_select:
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
255 return
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
256 except:
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
257 self.nameEditor.set_text('')
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
258 self.last_select = None
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
259 return
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
260 self.last_select = o
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
261 try:
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
262 self.nameEditor.set_text(o.getAttribute("inkscape:label"))
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
263 except:
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
264 self.nameEditor.set_text('')
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
265 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
266
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
267 # The selection is a PYSPObject. Convert it to be PYNode
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
268 self.change_active_frame(self.last_select.repr.parent())
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
269 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
270
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
271 def onCellClick(self, layer_idx, frame_idx):
1207
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
272 self._lockui = True
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
273
1245
ccbf0c5d01d1 Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents: 1244
diff changeset
274 self._director.show_scene(frame_idx)
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
275 self.selectSceneObject(layer_idx, frame_idx)
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
276
1207
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
277 self._lockui = False
489e6e474fdf Change names of methods and grouping methods
Thinker K.F. Li <thinker@codemud.net>
parents: 1206
diff changeset
278 pass
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
279
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
280 def doInsertKeyScene(self,w):
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
281 self._lockui=True
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
282 layer_idx, frame_idx = self._domview.get_active_layer_frame()
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
283 self.insertKeyScene(layer_idx, frame_idx)
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
284 self.selectSceneObject(layer_idx, frame_idx)
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
285 self._lockui=False
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
286 return
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
287
1097
52d8bf5d12b4 Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents: 1070
diff changeset
288 def doDuplicateKeyScene(self,w):
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
289 self._lockui = True
1097
52d8bf5d12b4 Implement the function to duplicate the previous scene. This require the latest inkscape-pybind, which contains duplicate() for the Node
wycc
parents: 1070
diff changeset
290 self.duplicateKeyScene()
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
291 self._lockui = False
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
292
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
293 def doRemoveScene(self,w):
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
294 self._lockui = True
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
295 layer_idx, frame_idx = self._domview.get_active_layer_frame()
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
296 self.removeKeyScene(layer_idx, frame_idx)
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
297 self._lockui = False
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
298 return
941
9ba94c577a6f Add scene editor. This vewrsion can only switch scene. It can not change the scene yet.
wycc
parents:
diff changeset
299
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
300
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
301 def doExtendScene(self,w):
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
302 self._lockui = True
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
303 self.extendScene()
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
304 self._lockui = False
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
305 pass
1146
e14ec6d1a661 CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents: 1141
diff changeset
306
1147
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
307 def doRun(self,arg):
1146
e14ec6d1a661 CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents: 1141
diff changeset
308 """
e14ec6d1a661 CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents: 1141
diff changeset
309 Execute the current animation till the last frame.
e14ec6d1a661 CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents: 1141
diff changeset
310 """
1147
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
311 if self.btnRun.get_label() == "Run":
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
312 self.btnRun.set_label("Stop")
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
313 self._lockui = True
1206
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
314 tmout = 1000 / self.framerate
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
315 self.last_update = glib.timeout_add(tmout, self.doRunNext)
1147
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
316 else:
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
317 self.btnRun.set_label("Run")
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
318 glib.source_remove(self.last_update)
1189
9cf183faf89f Maintaining scene group ID to scene node mapping in MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1188
diff changeset
319 self._lockui = False
1161
a7faab54e8f8 Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents: 1160
diff changeset
320 pass
1206
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
321 pass
1147
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
322
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
323 def doRunNext(self):
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
324 if self.current > self._domview.get_max_frame():
1147
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
325 self.current = 0
1206
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
326 pass
1161
a7faab54e8f8 Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents: 1160
diff changeset
327 try:
1245
ccbf0c5d01d1 Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents: 1244
diff changeset
328 self._director.show_scene(self.current)
1161
a7faab54e8f8 Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents: 1160
diff changeset
329 except:
a7faab54e8f8 Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents: 1160
diff changeset
330 traceback.print_exc()
a7faab54e8f8 Fix broken of running animation
Thinker K.F. Li <thinker@codemud.net>
parents: 1160
diff changeset
331 raise
1199
25e1579ed3d1 Fix bug of running animation
Thinker K.F. Li <thinker@codemud.net>
parents: 1198
diff changeset
332 self.current = self.current + 1
1206
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
333 tmout = 1000 / self.framerate
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
334 self.last_update = glib.timeout_add(tmout, self.doRunNext)
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
335 pass
1174
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
336
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
337 def doInsertFrame(self, w):
1219
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
338 self.lockui=True
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
339 layer_idx, frame_idx = self._domview.get_active_layer_frame()
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
340 self._domview.insert_frames(layer_idx, frame_idx, 1)
1219
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
341 self.lockui=False
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
342
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
343 def doRemoveFrame(self, w):
1219
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
344 self.lockui=True
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
345 layer_idx, frame_idx = self._domview.get_active_layer_frame()
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
346 self._domview.rm_frames(layer_idx, frame_idx, 1)
1219
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
347 self.lockui=False
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
348
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
349 def onTweenTypeChange(self, w):
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
350 if self._disable_tween_type_selector:
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
351 return
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
352
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
353 layer_idx, frame_idx = self._domview.get_active_layer_frame()
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
354 tween_type = self.tweenTypeSelector.get_active()
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
355
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
356 start, end, old_tween_type = \
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
357 self._domview.get_left_key(layer_idx, frame_idx)
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
358 if end >= frame_idx and start != end:
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
359 # Length of tween > 1 and cover this frame
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
360 self._domview.chg_tween(layer_idx, start, tween_type=tween_type)
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
361 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
362 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
363
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
364 def onQuit(self, event):
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
365 self.OK = False
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
366 gtk.main_quit()
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
367 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
368
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
369 def onOK(self, event):
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
370 self.OK = True
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
371 gtk.main_quit()
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
372 pass
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
373
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
374 def _add_buttons(self, hbox):
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
375 btn = gtk.Button('Insert Key')
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
376 btn.connect('clicked', self.doInsertKeyScene)
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
377 hbox.pack_start(btn, expand=False, fill=False)
1174
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
378
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
379 btn=gtk.Button('Remove Key')
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
380 btn.connect('clicked', self.doRemoveScene)
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
381 hbox.pack_start(btn, expand=False, fill=False)
1174
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
382
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
383 btn=gtk.Button('Extend scene')
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
384 btn.connect('clicked', self.doExtendScene)
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
385 hbox.pack_start(btn, expand=False, fill=False)
1174
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
386
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
387 btn=gtk.Button('Duplicate Key')
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
388 btn.connect('clicked', self.doDuplicateKeyScene)
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
389 hbox.pack_start(btn, expand=False, fill=False)
1174
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
390
1219
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
391 btn=gtk.Button('insert')
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
392 btn.connect('clicked', self.doInsertFrame)
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
393 hbox.pack_start(btn, expand=False, fill=False)
1219
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
394
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
395 btn=gtk.Button('remove')
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
396 btn.connect('clicked', self.doRemoveFrame)
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
397 hbox.pack_start(btn, expand=False, fill=False)
1219
b5e648a317eb Add insert and remove frame function.
wycc
parents: 1217
diff changeset
398
1146
e14ec6d1a661 CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents: 1141
diff changeset
399 btn=gtk.Button('Run')
e14ec6d1a661 CHange the implementation to set the transformation matrix only. This is be more friendly for the animation inside the inskcape.
wycc
parents: 1141
diff changeset
400 btn.connect('clicked', self.doRun)
1147
5cfa73d7e80f Add the Run button to simulate the animation
wycc
parents: 1146
diff changeset
401 self.btnRun = btn
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
402 hbox.pack_start(btn, expand=False, fill=False)
1174
96a7abce774a Add functions to insert and remove frame.
wycc
parents: 1171
diff changeset
403
1099
5ba2cab1d505 Add name editor to edit the inkscape:label withgout using the object property editor. This is more Flash-like operation.
wycc
parents: 1097
diff changeset
404 self.addNameEditor(hbox)
1120
214e1f628d63 Add tween type selector into the UI. This UI can be used to update the type attribute of the SVG.
wycc
parents: 1099
diff changeset
405 self.addTweenTypeSelector(hbox)
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
406 pass
1144
257beac7c982 Add blank line between methods.
Thinker K.F. Li <thinker@codemud.net>
parents: 1142
diff changeset
407
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
408 def show(self):
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
409 self.OK = True
1237
b5cceb2b87bb Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents: 1236
diff changeset
410 if not self._root:
b5cceb2b87bb Sucessful extend and duplicate
Thinker K.F. Li <thinker@codemud.net>
parents: 1236
diff changeset
411 self._root = self.desktop.doc().root().repr
1149
0ffef2df6201 Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents: 1148
diff changeset
412 pass
0ffef2df6201 Rename MBScene.dom to MBScene.root
Thinker K.F. Li <thinker@codemud.net>
parents: 1148
diff changeset
413
1128
b65ac686a7c5 Switch to the DOM-like API. The SPObject become the base of the DOM-like API.
wycc
parents: 1125
diff changeset
414 self.document = self.desktop.doc().rdoc
1240
84bcd398cccc Fix bug of removing keyframe
Thinker K.F. Li <thinker@codemud.net>
parents: 1239
diff changeset
415
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
416 self._domview.handle_doc_root(self.document, self._root)
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
417 self._domview.register_active_frame_callback(self.onCellClick)
1245
ccbf0c5d01d1 Move code of setCurrentScene to tween.py.
Thinker K.F. Li <thinker@codemud.net>
parents: 1244
diff changeset
418 self._director = scenes_director(self._domview)
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
419
1064
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
420 if self.top == None:
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
421 self.top = gtk.VBox(False, 0)
1206
1d476b35dc79 Merge and move code of tracking max frame number to MBScene_dom_monitor
Thinker K.F. Li <thinker@codemud.net>
parents: 1205 1186
diff changeset
422 toplevel = self.desktop.getToplevel()
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
423 toplevel.child.child.pack_end(self.top, expand=False)
1064
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
424 else:
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
425 self.top.remove(self.startWindow)
1150
6586cd10c92f Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents: 1149
diff changeset
426 pass
6586cd10c92f Refactory frameline.py
Thinker K.F. Li <thinker@codemud.net>
parents: 1149
diff changeset
427
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
428 vbox = gtk.VBox(False, 0)
1064
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
429 self.startWindow = vbox
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
430 self.top.pack_start(vbox, expand=False)
1242
1b1eb8f9a866 Rename *_dom to *_domview and *_framelines to *_frameline_stack
Thinker K.F. Li <thinker@codemud.net>
parents: 1241
diff changeset
431 frame_ui = self._domview.get_frame_ui_widget()
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
432 vbox.pack_start(frame_ui, expand=False)
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
433 hbox=gtk.HBox(False, 0)
1231
d28b1b840bfc Integrate MBDOM_UI to MBScene
Thinker K.F. Li <thinker@codemud.net>
parents: 1230
diff changeset
434 self._add_buttons(hbox)
1222
03daff2d939c Add a space after every comma in an argument list
Thinker K.F. Li <thinker@codemud.net>
parents: 1220
diff changeset
435 vbox.pack_start(hbox, expand=False)
981
9e7865906bfc Add MadButterfly name space
wycc
parents: 980
diff changeset
436
1064
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
437 self.top.show_all()
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
438 self.last_update = None
16c69756ef5d Add NodeObserver to monitor the change of the layer and update it in the scene editor.
wycc
parents: 1032
diff changeset
439 return False
956
167e359c9d5b Re-indent MBScene.py
Thinker K.F. Li <thinker@codemud.net>
parents: 955
diff changeset
440 pass