Mercurial > MadButterfly
annotate pyink/FSM_window.py @ 1476:eddec4543761
Install layers for FSM_window.
- Create background, fsm_layer and control_layer for FSM_window.
- All states and transitions are placed in fsm_layer.
- All controls (resize, control points, ...) are placed in control_layer.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Sun, 24 Apr 2011 18:52:55 +0800 |
parents | 8c6078c17f2d |
children | 6fe773e62b2a |
rev | line source |
---|---|
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
1 import gtk |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
2 import os |
1458
59b90d7fcf57
Lock UI event handlers for FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1457
diff
changeset
|
3 import data_monitor |
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
4 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
5 class FSM_window_base(object): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
6 def __init__(self): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
7 super(FSM_window_base, self).__init__() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
8 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
9 dirname = os.path.dirname(__file__) |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
10 fname = os.path.join(dirname, 'FSM_window.glade') |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
11 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
12 builder = gtk.Builder() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
13 builder.add_from_file(fname) |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
14 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
15 main_win = builder.get_object("FSM_main_win") |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
16 view_box = builder.get_object("view_box") |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
17 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
18 builder.connect_signals(self) |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
19 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
20 self._builder = builder |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
21 self._main_win = main_win |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
22 self._view_box = view_box |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
23 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
24 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
25 def show(self): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
26 self._main_win.show() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
27 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
28 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
29 def hide(self): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
30 self._main_win.hide() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
31 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
32 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
33 def on_start_state_activate(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
34 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
35 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
36 def on_rename_state_activate(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
37 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
38 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
39 def on_remove_state_activate(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
40 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
41 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
42 def on_zoom_out_clicked(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
43 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
44 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
45 def on_zoom_in_clicked(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
46 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
47 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
48 def on_move_state_toggled(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
49 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
50 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
51 def on_add_state_toggled(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
52 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
53 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
54 def on_close_window_activate(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
55 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
56 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
57 def on_FSM_main_win_destroy_event(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
58 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
59 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
60 |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
61 class FSM_transition(object): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
62 _doc = None |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
63 _domview = None |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
64 _fsm_layer = None |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
65 _control_layer = None |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
66 _state = None |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
67 trn_cond = None |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
68 trn_g = None |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
69 _arrow_node = None |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
70 _path_node = None |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
71 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
72 def __init__(self, trn_cond): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
73 self.trn_cond = trn_cond |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
74 pass |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
75 |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
76 def init(self, doc, domview, state, fsm_layer, control_layer): |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
77 self._doc = doc |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
78 self._domview = domview |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
79 self._state = state |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
80 self._fsm_layer = fsm_layer |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
81 self._control_layer = control_layer |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
82 pass |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
83 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
84 @staticmethod |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
85 def _update_graph(path, arrow_node, path_node): |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
86 import math |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
87 |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
88 path_txt = 'M %f,%f C %f,%f %f,%f %f,%f' % tuple(path) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
89 path_node.setAttribute('d', path_txt) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
90 path_node.setAttribute('style', 'stroke: #000000; stroke-width: 1; ' |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
91 'fill: none') |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
92 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
93 # c0 c1 c2 c3 of cubic curve |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
94 c3 = (path[6], path[7]) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
95 c2 = (path[4], path[5]) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
96 c23_v = (c3[0] - c2[0], c3[1] - c2[1]) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
97 c23_len = math.sqrt(c23_v[0] * c23_v[0] + c23_v[1] * c23_v[1]) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
98 adir = (c23_v[0] / c23_len, c23_v[1] / c23_len) # arrow direction |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
99 odir = (-adir[1], adir[0]) # othogonal direction |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
100 arrow_pts = (c3[0], c3[1], |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
101 -adir[0] * 10 + odir[0] * 4, -adir[1] * 10 + odir[1] * 4, |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
102 -odir[0] * 8, -odir[1] * 8) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
103 arrow_txt = 'M %f,%f l %f,%f l %f,%f z' % arrow_pts |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
104 arrow_node.setAttribute('d', arrow_txt) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
105 arrow_node.setAttribute('style', 'stroke: #000000; stroke-width: 1; ' |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
106 'fill: #000000') |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
107 pass |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
108 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
109 def _draw_transition_real(self, parent, path): |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
110 doc = self._doc |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
111 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
112 trn_g = doc.createElement('svg:g') |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
113 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
114 path_node = doc.createElement('svg:path') |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
115 arrow_node = doc.createElement('svg:path') |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
116 self._update_graph(path, arrow_node, path_node) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
117 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
118 trn_g.appendChild(path_node) |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
119 trn_g.appendChild(arrow_node) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
120 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
121 parent.appendChild(trn_g) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
122 |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
123 return trn_g, path_node, arrow_node |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
124 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
125 @property |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
126 def path(self): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
127 domview = self._domview |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
128 state_name = self._state.state_name |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
129 trn_cond = self.trn_cond |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
130 trn = domview.get_transition(state_name, trn_cond) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
131 return trn[3] |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
132 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
133 def draw(self, parent): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
134 path = self.path |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
135 trn_g, arrow_node, path_node = self._draw_transition_real(parent, path) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
136 self.trn_g = trn_g |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
137 self._arrow_node = arrow_node |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
138 self._path_node = path_node |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
139 pass |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
140 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
141 def clear(self): |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
142 trn_g = self.trn_g |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
143 parent = trn_g.parent() |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
144 parent.removeChild(trn_g) |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
145 pass |
1474
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
146 |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
147 def update(self): |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
148 path = self.path |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
149 arrow_node = self._arrow_node |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
150 path_node = self._path_node |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
151 self._update_graph(path, arrow_node, path_node) |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
152 pass |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
153 pass |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
154 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
155 class FSM_state(object): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
156 _doc = None |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
157 _domview = None |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
158 _fsm_layer = None |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
159 _control_layer = None |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
160 state_name = None |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
161 state_g = None |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
162 _text_node = None |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
163 _circle_node = None |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
164 transitions = None |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
165 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
166 def __init__(self, state_name): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
167 self.state_name = state_name |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
168 self.transitions = {} |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
169 pass |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
170 |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
171 def init(self, doc, domview, fsm_layer, control_layer): |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
172 self._doc = doc |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
173 self._domview = domview |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
174 self._fsm_layer = fsm_layer |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
175 self._control_layer = control_layer |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
176 pass |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
177 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
178 @staticmethod |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
179 def _update_graph(text_node, text_content, circle_node, |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
180 state_name, r, x, y): |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
181 circle_node.setAttribute('r', str(r)) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
182 circle_node.setAttribute('cx', str(x)) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
183 circle_node.setAttribute('cy', str(y)) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
184 circle_node.setAttribute('style', 'stroke: #000000; stroke-width: 1; ' |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
185 'fill: #ffffff') |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
186 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
187 text_node.setAttribute('font-size', '16') |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
188 text_node.setAttribute('style', 'stroke: #000000; fill: #000000') |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
189 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
190 text_content.setContent(state_name) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
191 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
192 tx, ty, tw, th = text_node.getBBox() |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
193 text_node.setAttribute('x', str(x - tw / 2)) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
194 text_node.setAttribute('y', str(y + th / 2)) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
195 pass |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
196 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
197 def _draw_state_real(self, parent, state_name, r, x, y): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
198 doc = self._doc |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
199 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
200 state_g = doc.createElement('svg:g') |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
201 |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
202 text = doc.createElement('svg:text') |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
203 circle = doc.createElement('svg:circle') |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
204 text_content = doc.createTextNode(state_name) |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
205 |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
206 text.appendChild(text_content) |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
207 state_g.appendChild(circle) |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
208 state_g.appendChild(text) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
209 parent.appendChild(state_g) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
210 |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
211 self._update_graph(text, text_content, circle, state_name, r, x, y) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
212 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
213 return state_g, text, text_content, circle |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
214 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
215 @property |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
216 def r(self): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
217 domview = self._domview |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
218 state_name = self.state_name |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
219 r = domview.get_state_r(state_name) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
220 return r |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
221 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
222 @property |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
223 def xy(self): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
224 domview = self._domview |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
225 state_name = self.state_name |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
226 xy = domview.get_state_xy(state_name) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
227 return xy |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
228 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
229 @property |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
230 def all_transitions(self): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
231 domview = self._domview |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
232 state_name = self.state_name |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
233 conds = domview.all_transitions(state_name) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
234 return conds |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
235 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
236 def draw(self, parent): |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
237 domview = self._domview |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
238 state_name = self.state_name |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
239 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
240 r = self.r |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
241 x, y = self.xy |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
242 state_g, text_node, text_content, circle_node = \ |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
243 self._draw_state_real(parent, state_name, r, x, y) |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
244 self.state_g = state_g |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
245 self._text_node = text_node |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
246 self._text_content = text_content |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
247 self._circle_node = circle_node |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
248 |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
249 for trn_cond in self.all_transitions: |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
250 trn = FSM_transition(trn_cond) |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
251 trn.init(self._doc, domview, self, |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
252 self._fsm_layer, self._control_layer) |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
253 trn.draw(parent) |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
254 self.transitions[trn_cond] = trn |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
255 pass |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
256 pass |
1473
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
257 |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
258 def clear(self): |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
259 state_g = self.state_g |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
260 parent = state_g.parent() |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
261 parent.removeChild(state_g) |
e807ad5aeb91
Extract update_graph for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1472
diff
changeset
|
262 pass |
1474
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
263 |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
264 def update(self): |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
265 text_node = self._text_node |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
266 text_content = self._text_content |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
267 circle_node = self._circle_node |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
268 state_name = self.state_name |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
269 r = self.r |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
270 x, y = self.xy |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
271 self._update_graph(text_node, text_content, circle_node, |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
272 r, x, y) |
697ebfa9dc47
Update state and transition from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1473
diff
changeset
|
273 pass |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
274 pass |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
275 |
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
276 class FSM_window(FSM_window_base): |
1458
59b90d7fcf57
Lock UI event handlers for FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1457
diff
changeset
|
277 __metaclass__ = data_monitor.data_monitor |
59b90d7fcf57
Lock UI event handlers for FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1457
diff
changeset
|
278 __data_monitor_prefix__ = 'on_' |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
279 |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
280 _background = None |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
281 _fsm_layer = None |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
282 _control_layer = None |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
283 width = 1024 |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
284 height = 768 |
1458
59b90d7fcf57
Lock UI event handlers for FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1457
diff
changeset
|
285 |
59b90d7fcf57
Lock UI event handlers for FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1457
diff
changeset
|
286 def __init__(self, domview_ui, close_cb, destroy_cb): |
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
287 super(FSM_window, self).__init__() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
288 |
1458
59b90d7fcf57
Lock UI event handlers for FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1457
diff
changeset
|
289 self._locker = domview_ui |
1467
6927debad4ee
Fix issue and a simple testcase for FSM
Thinker K.F. Li <thinker@codemud.net>
parents:
1458
diff
changeset
|
290 |
6927debad4ee
Fix issue and a simple testcase for FSM
Thinker K.F. Li <thinker@codemud.net>
parents:
1458
diff
changeset
|
291 self._domview = domview_ui |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
292 self._states = {} |
1458
59b90d7fcf57
Lock UI event handlers for FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1457
diff
changeset
|
293 |
1457
416a18409603
Show an empty document in SVG viewer widget
Thinker K.F. Li <thinker@codemud.net>
parents:
1456
diff
changeset
|
294 self._close_cb = close_cb # callback to close editor window (hide) |
416a18409603
Show an empty document in SVG viewer widget
Thinker K.F. Li <thinker@codemud.net>
parents:
1456
diff
changeset
|
295 self._destroy_cb = destroy_cb # callback to destroy editor window |
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
296 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
297 |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
298 def _init_layers(self): |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
299 doc = self._doc() |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
300 root = self._root() |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
301 |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
302 root.setAttribute('inkscape:groupmode', 'layer') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
303 |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
304 background = doc.createElement('svg:rect') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
305 background.setAttribute('x', '0') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
306 background.setAttribute('y', '0') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
307 background.setAttribute('width', str(self.width)) |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
308 background.setAttribute('height', str(self.height)) |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
309 background.setAttribute('style', 'fill: #ffffff') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
310 root.appendChild(background) |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
311 self._background = background |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
312 |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
313 fsm_layer = doc.createElement('svg:g') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
314 fsm_layer.setAttribute('inkscape:groupmode', 'layer') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
315 root.appendChild(fsm_layer) |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
316 self._fsm_layer = fsm_layer |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
317 |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
318 control_layer = doc.createElement('svg:g') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
319 control_layer.setAttribute('inkscape:groupmode', 'layer') |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
320 root.appendChild(control_layer) |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
321 self._control_layer = control_layer |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
322 pass |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
323 |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
324 def _doc(self): |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
325 view_widget = self._view_widget |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
326 view = view_widget.view |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
327 doc = view.doc().rdoc |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
328 return doc |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
329 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
330 def _root(self): |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
331 doc = self._doc() |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
332 root = doc.root() |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
333 return root |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
334 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
335 def _clear_view(self): |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
336 if not self._background: |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
337 self._init_layers() |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
338 return |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
339 |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
340 children = [child for child in self._fsm_layer.childList()] + \ |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
341 [child for child in self._control_layer.childList()] |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
342 for child in children: |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
343 parent = child.parent() |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
344 parent.removeChild(child) |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
345 pass |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
346 |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
347 self._states = {} |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
348 pass |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
349 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
350 def _update_view(self): |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
351 self._clear_view() |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
352 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
353 domview = self._domview |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
354 doc = self._doc() |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
355 fsm_layer = self._fsm_layer |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
356 |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
357 state_names = domview.all_state_names() |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
358 for state_name in state_names: |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
359 state = FSM_state(state_name) |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
360 state.init(doc, domview, self._fsm_layer, self._control_layer) |
1472
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
361 self._states[state_name] = state |
7cb7abb5063b
Refactory drawing functions into classes for state and transition
Thinker K.F. Li <thinker@codemud.net>
parents:
1471
diff
changeset
|
362 |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
363 state.draw(fsm_layer) |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
364 pass |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
365 pass |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
366 |
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
367 def set_svg_view(self, view): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
368 self._view_box.add(view) |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
369 self._view_widget = view |
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
370 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
371 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
372 def on_close_window_activate(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
373 self._close_cb() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
374 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
375 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
376 def on_FSM_main_win_destroy_event(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
377 self._destroy_cb() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
378 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
379 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
380 def on_FSM_main_win_delete_event(self, *args): |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
381 self._destroy_cb() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
382 pass |
1467
6927debad4ee
Fix issue and a simple testcase for FSM
Thinker K.F. Li <thinker@codemud.net>
parents:
1458
diff
changeset
|
383 |
6927debad4ee
Fix issue and a simple testcase for FSM
Thinker K.F. Li <thinker@codemud.net>
parents:
1458
diff
changeset
|
384 def on_add_state_toggled(self, *args): |
1475
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
385 pass |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
386 |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
387 def _install_test_data(self): |
1476
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
388 self._init_layers() |
eddec4543761
Install layers for FSM_window.
Thinker K.F. Li <thinker@codemud.net>
parents:
1475
diff
changeset
|
389 |
1467
6927debad4ee
Fix issue and a simple testcase for FSM
Thinker K.F. Li <thinker@codemud.net>
parents:
1458
diff
changeset
|
390 domview = self._domview |
1469
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
391 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
392 view = self._view_widget.view |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
393 doc = view.doc() |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
394 rdoc = doc.rdoc |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
395 root_node = doc.root().repr |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
396 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
397 line_node = rdoc.createElement('svg:line') |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
398 line_node.setAttribute('x1', '10') |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
399 line_node.setAttribute('y1', '10') |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
400 line_node.setAttribute('x2', '100') |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
401 line_node.setAttribute('y2', '100') |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
402 line_node.setAttribute('style', 'stroke: #000000; stroke-width:2') |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
403 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
404 root_node.appendChild(line_node) |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
405 |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
406 def show_msg(*args, **kws): |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
407 print 'mouse_event' |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
408 print args |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
409 pass |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
410 print 'before connect' |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
411 hdl_id = line_node.spitem.connect('mouse-event', show_msg) |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
412 print hdl_id |
c1e70540541c
Drawing functions for states and transitions
Thinker K.F. Li <thinker@codemud.net>
parents:
1467
diff
changeset
|
413 |
1471
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
414 state1 = 'state 1' |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
415 domview.add_state(state1) |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
416 domview.set_state_r(state1, 50) |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
417 domview.set_state_xy(state1, 200, 100) |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
418 state2 = 'state 2' |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
419 domview.add_state(state2) |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
420 domview.set_state_r(state2, 30) |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
421 domview.set_state_xy(state2, 300, 100) |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
422 domview.add_transition(state1, 'event1', state2) |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
423 domview.set_transition_path(state1, 'event1', (200, 150, |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
424 240, 180, |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
425 260, 180, |
055845649807
Update FSM_window from domview
Thinker K.F. Li <thinker@codemud.net>
parents:
1469
diff
changeset
|
426 300, 130)) |
1467
6927debad4ee
Fix issue and a simple testcase for FSM
Thinker K.F. Li <thinker@codemud.net>
parents:
1458
diff
changeset
|
427 pass |
1475
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
428 |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
429 def show(self): |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
430 self._install_test_data() |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
431 self._install_test_data = lambda: None |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
432 self._update_view() |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
433 super(FSM_window, self).show() |
8c6078c17f2d
Install test data when show FSM_window
Thinker K.F. Li <thinker@codemud.net>
parents:
1474
diff
changeset
|
434 pass |
1456
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
435 pass |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
436 |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
437 if __name__ == '__main__': |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
438 win = FSM_window() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
439 win._main_win.connect('destroy', gtk.main_quit) |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
440 win.show() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
441 gtk.main() |
894a4bf35fe6
Start implement FSM editor window
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
442 pass |