annotate pyink/comp_dock.py @ 1396:a5672125e515

Copy the transformation matrix when we clone it. It looks like the MB do not copy the matrix automatically. Support isuse attribute to decide how to generate the tweened matrix.
author wycc
date Sat, 02 Apr 2011 05:39:26 +0800
parents d0e6f350b3fd
children 7c89a4f648bd
rev   line source
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
1 import gtk
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
2 import os
1304
94e6594dea59 Make comp_dock being instantiated by domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1303
diff changeset
3 import data_monitor
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
4 import pybInkscape
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
5
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
6
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
7 ## \brief User interface for management components and their timelines.
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
8 #
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
9 # This class provide base functions to show components and timelines.
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
10 #
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
11 class comp_dock_base(object):
1304
94e6594dea59 Make comp_dock being instantiated by domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1303
diff changeset
12 def __init__(self, domview_ui, fname=None):
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
13 super(comp_dock_base, self).__init__(domview_ui, fname)
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
14
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
15 if not fname:
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
16 dirname = os.path.dirname(__file__)
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
17 fname = os.path.join(dirname, 'component_dock.glade')
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
18 pass
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
19
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
20 builder = gtk.Builder()
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
21 builder.add_from_file(fname)
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
22 dock_top = builder.get_object('component_dock_top')
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
23 components_model = builder.get_object('components_model')
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
24 timelines_model = builder.get_object('timelines_model')
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
25 components_treeview = builder.get_object('treeview_components')
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
26 components_menu = builder.get_object('components_menu')
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
27 timelines_treeview = builder.get_object('treeview_timelines')
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
28 timelines_menu = builder.get_object('timelines_menu')
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
29
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
30 dock_top_parent = dock_top.get_parent()
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
31 dock_top_parent.remove(dock_top)
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
32
1304
94e6594dea59 Make comp_dock being instantiated by domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1303
diff changeset
33 self._domview_ui = domview_ui
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
34 self._builder = builder
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
35 self._dock_top = dock_top
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
36 self._desktop = None
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
37 self._dock_item = None
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
38
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
39 self._components_model = components_model
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
40 self._timelines_model = timelines_model
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
41 self._components_treeview = components_treeview
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
42 self._components_menu = components_menu
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
43 self._timelines_treeview = timelines_treeview
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
44 self._timelines_menu = timelines_menu
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
45
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
46 self._cur_component = -1
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
47 self._cur_timeline = -1
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
48 pass
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
49
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
50 def install_dock(self, desktop):
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
51 self._desktop = desktop
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
52
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
53 dock = desktop.getDock()
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
54 item = dock.new_item('component_dock',
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
55 'Component and timeline manager',
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
56 'feBlend-icon', dock.ITEM_ST_DOCKED_STATE)
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
57 item_vbox = item.get_vbox()
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
58 self._dock_item = item
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
59
1304
94e6594dea59 Make comp_dock being instantiated by domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1303
diff changeset
60 item_vbox.pack_start(self._dock_top)
94e6594dea59 Make comp_dock being instantiated by domview_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1303
diff changeset
61 self._dock_top.show()
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
62 pass
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
63
1316
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
64 ## \brief Update the list of components.
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
65 #
1316
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
66 # The cursor is still keeping on the name of current component.
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
67 #
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
68 def refresh_components(self):
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
69 components_model = self._components_model
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
70 components_model.clear()
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
71
1316
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
72 all_comp_names = self._domview_ui.all_comp_names()
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
73 for comp_name in all_comp_names:
1330
c2a693a27eb9 Double click to switch component and timeline
Thinker K.F. Li <thinker@codemud.net>
parents: 1323
diff changeset
74 editable = False
1311
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
75 components_model.append((comp_name, editable))
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
76 pass
1313
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
77
1316
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
78 cur_comp_name = self._domview_ui.get_current_component()
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
79 cur_comp_idx = all_comp_names.index(cur_comp_name)
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
80 self._components_treeview.set_cursor((cur_comp_idx,))
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
81 pass
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
82
1316
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
83 ## \brief Update the list of timelines.
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
84 #
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
85 # The cursor is still keeping on the name of current component.
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
86 #
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
87 def refresh_timelines(self):
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
88 timelines_model = self._timelines_model
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
89 timelines_model.clear()
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
90
1316
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
91 all_timeline_names = self._domview_ui.all_timeline_names()
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
92 for timeline_name in all_timeline_names:
1330
c2a693a27eb9 Double click to switch component and timeline
Thinker K.F. Li <thinker@codemud.net>
parents: 1323
diff changeset
93 timelines_model.append((timeline_name, False))
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
94 pass
1313
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
95
1316
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
96 cur_tl_name = self._domview_ui.get_current_timeline()
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
97 cur_tl_idx = all_timeline_names.index(cur_tl_name)
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
98 self._timelines_treeview.set_cursor((cur_tl_idx,))
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
99 pass
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
100
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
101 ## \brief Refresh content of component list and timeline list.
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
102 #
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
103 def refresh(self):
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
104 self.refresh_components()
9ab8d50dcf7e Refactory code of refreshing UI
Thinker K.F. Li <thinker@codemud.net>
parents: 1315
diff changeset
105 self.refresh_timelines()
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
106 pass
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
107
1311
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
108 def dom_add_component(self, name):
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
109 model = self._components_model
1330
c2a693a27eb9 Double click to switch component and timeline
Thinker K.F. Li <thinker@codemud.net>
parents: 1323
diff changeset
110 model.append((name, False))
1311
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
111 pass
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
112
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
113 def dom_rm_component(self, name):
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
114 model = self._components_model
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
115
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
116 itr = model.get_iter_first()
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
117 while itr:
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
118 itr_name = model.get_value(itr, 0)
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
119 if itr_name == name:
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
120 model.remove(itr)
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
121 return
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
122
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
123 itr = itr.iter_next()
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
124 pass
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
125
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
126 raise ValueError, 'unknown component name - %s' % (name)
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
127
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
128 def dom_add_timeline(self, name):
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
129 model = self._timelines_model
1330
c2a693a27eb9 Double click to switch component and timeline
Thinker K.F. Li <thinker@codemud.net>
parents: 1323
diff changeset
130 model.append((name, False))
1311
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
131 pass
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
132
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
133 def dom_rm_timeline(self, name):
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
134 model = self._timelines_model
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
135
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
136 itr = model.get_iter_first()
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
137 while itr:
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
138 itr_name = model.get_value(itr, 0)
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
139 if itr_name == name:
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
140 model.remove(itr)
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
141 return
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
142
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
143 itr = itr.iter_next()
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
144 pass
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
145
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
146 raise ValueError, 'unknown component name - %s' % (name)
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
147 pass
1311
e6bb9d00341f Make content dom and comp_dock synchronized
Thinker K.F. Li <thinker@codemud.net>
parents: 1310
diff changeset
148
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
149
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
150 ## \brief UI interactive handlers
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
151 #
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
152 # A mix-in to handle UI events.
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
153 #
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
154 class comp_dock_ui(object):
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
155 __metaclass__ = data_monitor.data_monitor
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
156 __data_monitor_prefix__ = 'on_'
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
157
1313
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
158 def __init__(self, domview_ui, fname=None):
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
159 super(comp_dock_ui, self).__init__()
1313
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
160
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
161 self._locker = domview_ui
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
162 pass
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
163
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
164 def _drop_undo(self):
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
165 self._doc.commit()
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
166 self._doc.beginTransaction()
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
167 pass
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
168
1314
2aa3770f02bf Fix issue of events for setting cursor of treeview.
Thinker K.F. Li <thinker@codemud.net>
parents: 1313
diff changeset
169 ## \brief Start handle UI events.
2aa3770f02bf Fix issue of events for setting cursor of treeview.
Thinker K.F. Li <thinker@codemud.net>
parents: 1313
diff changeset
170 #
1313
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
171 def start_handle_ui_events(self):
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
172 self._builder.connect_signals(self)
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
173 pass
1336
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
174
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
175 def install_dock(self, desktop):
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
176 self._doc = desktop.doc().rdoc
1336
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
177 pass
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
178
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
179 def _current_component(self):
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
180 treeview = self._components_treeview
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
181 path, col = treeview.get_cursor()
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
182
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
183 model = self._components_model
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
184 itr = model.get_iter(path)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
185 name = model.get_value(itr, 0)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
186 return name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
187
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
188 def _current_timeline(self):
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
189 treeview = self._timelines_treeview
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
190 path, col = treeview.get_cursor()
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
191
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
192 model = self._timelines_model
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
193 itr = model.get_iter(path)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
194 name = model.get_value(itr, 0)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
195 return name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
196
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
197 def _add_component(self):
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
198 def _make_component_name():
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
199 comp_name = 'New Component'
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
200 idx = 0
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
201 while comp_name in self._domview_ui.all_comp_names():
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
202 comp_name = 'New Component %d' % (idx)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
203 idx = idx + 1
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
204 pass
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
205 return comp_name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
206
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
207 comp_name = _make_component_name()
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
208 print comp_name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
209 self._domview_ui.add_component(comp_name)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
210 pass
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
211
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
212 def _rm_component(self):
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
213 if self._current_component() == 'main':
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
214 return
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
215
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
216 treeview = self._components_treeview
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
217 path, col = treeview.get_cursor()
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
218
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
219 model = self._components_model
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
220 itr = model.get_iter(path)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
221 comp_name = model.get_value(itr, 0)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
222 print comp_name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
223
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
224 self._domview_ui.rm_component(comp_name)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
225 pass
1332
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
226
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
227 def _switch_component(self):
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
228 domview_ui = self._domview_ui
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
229
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
230 comp_name = self._current_component()
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
231 domview_ui.switch_component(comp_name)
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
232
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
233 group = domview_ui.get_layer_group(0)
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
234 desktop = self._desktop # from comp_dock_base
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
235 desktop.setCurrentLayer(group.spitem)
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
236 pass
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
237
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
238 def _add_timeline(self):
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
239 def _make_timeline_name():
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
240 tl_name = 'New Timeline'
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
241 idx = 0
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
242 while tl_name in self._domview_ui.all_timeline_names():
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
243 tl_name = 'New Timeline %d' % (idx)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
244 idx = idx + 1
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
245 pass
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
246 return tl_name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
247
1333
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
248 if self._domview_ui.get_current_component() == 'main':
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
249 return
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
250
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
251 tl_name = _make_timeline_name()
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
252 print tl_name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
253 self._domview_ui.add_timeline(tl_name)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
254 pass
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
255
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
256 def _rm_timeline(self):
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
257 if self._current_component() == 'main':
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
258 return
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
259
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
260 treeview = self._timelines_treeview
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
261 path, col = treeview.get_cursor()
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
262
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
263 model = self._timelines_model
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
264 itr = model.get_iter(path)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
265 tl_name = model.get_value(itr, col)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
266 print tl_name
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
267
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
268 self._domview_ui.rm_timeline(tl_name)
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
269 pass
1332
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
270
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
271 def _switch_timeline(self):
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
272 domview_ui = self._domview_ui
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
273
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
274 timeline_name = self._current_timeline()
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
275 domview_ui.switch_timeline(timeline_name)
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
276 pass
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
277
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
278 def on_add_comp_clicked(self, *args):
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
279 self._add_component()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
280 self._drop_undo()
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
281 pass
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
282
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
283 def on_remove_comp_clicked(self, *args):
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
284 self._rm_component()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
285 self._drop_undo()
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
286 pass
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
287
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
288 def on_treeview_components_button_press_event(self, widget, event, *args):
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
289 if event.type != gtk.gdk.BUTTON_PRESS:
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
290 return
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
291
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
292 if event.button != 3: # not right button
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
293 return
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
294
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
295 self._components_menu.popup(None, None, None, event.button, event.time)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
296 pass
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
297
1330
c2a693a27eb9 Double click to switch component and timeline
Thinker K.F. Li <thinker@codemud.net>
parents: 1323
diff changeset
298 def on_treeview_components_row_activated(self, *args):
1332
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
299 self._switch_component()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
300 self._drop_undo()
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
301 pass
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
302
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
303 ## \brief Handle of changing component name.
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
304 #
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
305 def on_cellrenderer_comp_edited(self, renderer, path,
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
306 new_text, *args):
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
307 model = self._components_model
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
308 itr = model.get_iter(path)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
309
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
310 old_name = model.get_value(itr, 0)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
311
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
312 model.set_value(itr, 0, new_text)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
313 model.set_value(itr, 1, False)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
314
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
315 self._domview_ui.rename_component(old_name, new_text)
1335
194c7a831083 Consistent checking for components and timelines
Thinker K.F. Li <thinker@codemud.net>
parents: 1333
diff changeset
316
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
317 self._drop_undo()
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
318 pass
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
319
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
320 def on_rename_component_activate(self, *args):
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
321 treeview = self._components_treeview
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
322 path, col = treeview.get_cursor()
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
323
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
324 model = self._components_model
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
325 itr = model.get_iter(path)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
326 model.set_value(itr, 1, True)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
327
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
328 treeview.set_cursor(path, col, True)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
329 pass
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
330
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
331 def on_link_component_activate(self, *args):
1333
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
332 desktop = self._desktop
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
333
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
334 comp_name = self._current_component()
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
335 cur_layer_group_sp = desktop.currentLayer()
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
336 cur_layer_group = cur_layer_group_sp.repr
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
337
3cbc1ab15541 Implement the function to create a link to a component.
Thinker K.F. Li <thinker@codemud.net>
parents: 1332
diff changeset
338 self._domview_ui.link_to_component(comp_name, cur_layer_group)
1335
194c7a831083 Consistent checking for components and timelines
Thinker K.F. Li <thinker@codemud.net>
parents: 1333
diff changeset
339
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
340 self._drop_undo()
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
341 pass
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
342
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
343 def on_switch_component_activate(self, *args):
1332
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
344 self._switch_component()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
345 self._drop_undo()
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
346 pass
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
347
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
348 def on_add_timeline_clicked(self, *args):
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
349 self._add_timeline()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
350 self._drop_undo()
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
351 pass
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
352
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
353 def on_remove_timeline_clicked(self, *args):
1310
85d04ba11146 Support adding new components
Thinker K.F. Li <thinker@codemud.net>
parents: 1309
diff changeset
354 self._rm_timeline()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
355 self._drop_undo()
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
356 pass
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
357
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
358 def on_treeview_timelines_button_press_event(self, widget, event, *args):
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
359 if event.type != gtk.gdk.BUTTON_PRESS:
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
360 return
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
361
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
362 if event.button != 3: # not right button
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
363 return
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
364
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
365 self._timelines_menu.popup(None, None, None, event.button, event.time)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
366 pass
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
367
1330
c2a693a27eb9 Double click to switch component and timeline
Thinker K.F. Li <thinker@codemud.net>
parents: 1323
diff changeset
368 def on_treeview_timelines_row_activated(self, *args):
1332
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
369 self._switch_timeline()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
370 self._drop_undo()
1308
49775feefbcf Show components and timelines in comp_dock
Thinker K.F. Li <thinker@codemud.net>
parents: 1305
diff changeset
371 pass
1309
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
372
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
373 def on_cellrenderer_timelines_edited(self, renderer, path,
f2b1b22f7cbc Make comp_dock editable
Thinker K.F. Li <thinker@codemud.net>
parents: 1308
diff changeset
374 new_text, *args):
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
375 model = self._timelines_model
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
376 itr = model.get_iter(path)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
377
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
378 old_name = model.get_value(itr, 0)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
379
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
380 model.set_value(itr, 0, new_text)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
381 model.set_value(itr, 1, False)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
382
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
383 self._domview_ui.rename_timeline(old_name, new_text)
1335
194c7a831083 Consistent checking for components and timelines
Thinker K.F. Li <thinker@codemud.net>
parents: 1333
diff changeset
384
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
385 self._drop_undo()
1331
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
386 pass
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
387
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
388 def on_rename_timeline_activate(self, *args):
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
389 treeview = self._timelines_treeview
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
390 path, col = treeview.get_cursor()
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
391
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
392 model = self._timelines_model
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
393 itr = model.get_iter(path)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
394 model.set_value(itr, 1, True)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
395
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
396 treeview.set_cursor(path, col, True)
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
397 pass
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
398
5da64f67d00d Rename components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1330
diff changeset
399 def on_switch_timeline_activate(self, *args):
1332
a0d3a4f8e99d Siwtch components and timelines with context menu
Thinker K.F. Li <thinker@codemud.net>
parents: 1331
diff changeset
400 self._switch_timeline()
1338
d0e6f350b3fd Clear change log to prevent from undo/redo.
Thinker K.F. Li <thinker@codemud.net>
parents: 1336
diff changeset
401 self._drop_undo()
1336
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
402 pass
1303
cf2691a18a7a Add component dock
Thinker K.F. Li <thinker@codemud.net>
parents:
diff changeset
403 pass
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
404
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
405 ## \brief Component dock
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
406 #
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
407 # Mix base functions and event handlers together.
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
408 #
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
409 class comp_dock(comp_dock_base, comp_dock_ui):
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
410 def __init__(self, domview_ui, fname=None):
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
411 super(comp_dock, self).__init__(domview_ui, fname)
1314
2aa3770f02bf Fix issue of events for setting cursor of treeview.
Thinker K.F. Li <thinker@codemud.net>
parents: 1313
diff changeset
412
1313
cc557ce8e9fa Move signal connecting actions to comp_dock_ui
Thinker K.F. Li <thinker@codemud.net>
parents: 1312
diff changeset
413 self.start_handle_ui_events()
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
414 pass
1336
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
415
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
416 def install_dock(self, desktop):
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
417 comp_dock_base.install_dock(self, desktop)
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
418 comp_dock_ui.install_dock(self, desktop)
0b5ee9c90af7 Update components and timelines list for async changes on DOM
Thinker K.F. Li <thinker@codemud.net>
parents: 1335
diff changeset
419 pass
1312
89e640789750 Separate envet handlers from base functions of comp_doc
Thinker K.F. Li <thinker@codemud.net>
parents: 1311
diff changeset
420 pass