27 |
27 |
28 #------------------------------------------------------------------------------- |
28 #------------------------------------------------------------------------------- |
29 # Edit Transition Content Dialog |
29 # Edit Transition Content Dialog |
30 #------------------------------------------------------------------------------- |
30 #------------------------------------------------------------------------------- |
31 |
31 |
32 [ID_SFCTRANSITIONDIALOG, ID_SFCTRANSITIONDIALOGSPACER, |
|
33 ID_SFCTRANSITIONDIALOGREFERENCE, ID_SFCTRANSITIONDIALOGINLINE, |
|
34 ID_SFCTRANSITIONDIALOGPRIORITY, ID_SFCTRANSITIONDIALOGPREVIEW, |
|
35 ID_SFCTRANSITIONDIALOGRADIOBUTTON1, ID_SFCTRANSITIONDIALOGRADIOBUTTON2, |
|
36 ID_SFCTRANSITIONDIALOGRADIOBUTTON3, ID_SFCTRANSITIONDIALOGSTATICTEXT1, |
|
37 ID_SFCTRANSITIONDIALOGSTATICTEXT2, ID_SFCTRANSITIONDIALOGSTATICTEXT3, |
|
38 ] = [wx.NewId() for _init_ctrls in range(12)] |
|
39 |
|
40 class SFCTransitionDialog(wx.Dialog): |
32 class SFCTransitionDialog(wx.Dialog): |
41 |
33 |
42 if wx.VERSION < (2, 6, 0): |
34 def __init__(self, parent, controller, connection): |
43 def Bind(self, event, function, id = None): |
35 self.Connection = connection |
44 if id is not None: |
36 |
45 event(self, id, function) |
37 wx.Dialog.__init__(self, parent, |
46 else: |
38 size=wx.Size(350, 300), title=_('Edit transition')) |
47 event(self, function) |
39 |
48 |
40 main_sizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) |
49 def _init_coll_flexGridSizer1_Items(self, parent): |
41 main_sizer.AddGrowableCol(0) |
50 parent.AddSizer(self.MainSizer, 0, border=20, flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT) |
42 main_sizer.AddGrowableRow(0) |
51 parent.AddSizer(self.ButtonSizer, 0, border=20, flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT) |
43 |
52 |
44 column_sizer = wx.BoxSizer(wx.HORIZONTAL) |
53 def _init_coll_flexGridSizer1_Growables(self, parent): |
45 main_sizer.AddSizer(column_sizer, border=20, |
54 parent.AddGrowableCol(0) |
46 flag=wx.GROW|wx.TOP|wx.LEFT|wx.RIGHT) |
55 parent.AddGrowableRow(0) |
47 |
56 |
48 left_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=8, vgap=5) |
57 def _init_coll_MainSizer_Items(self, parent): |
49 left_gridsizer.AddGrowableCol(0) |
58 parent.AddSizer(self.LeftGridSizer, 1, border=5, flag=wx.GROW|wx.RIGHT) |
50 column_sizer.AddSizer(left_gridsizer, 1, border=5, |
59 parent.AddSizer(self.RightGridSizer, 1, border=5, flag=wx.GROW|wx.LEFT) |
51 flag=wx.GROW|wx.RIGHT) |
60 |
52 |
61 def _init_coll_LeftGridSizer_Items(self, parent): |
53 type_label = wx.StaticText(self, label=_('Type:')) |
62 parent.AddWindow(self.staticText1, 0, border=0, flag=wx.GROW) |
54 left_gridsizer.AddWindow(type_label, flag=wx.GROW) |
63 parent.AddWindow(self.radioButton1, 0, border=0, flag=wx.GROW) |
55 |
64 parent.AddWindow(self.Reference, 0, border=0, flag=wx.GROW) |
56 self.ReferenceRadioButton = wx.RadioButton(self, |
65 parent.AddWindow(self.radioButton2, 0, border=0, flag=wx.GROW) |
57 label=_('Reference'), style=wx.RB_GROUP) |
66 parent.AddWindow(self.Inline, 0, border=0, flag=wx.GROW) |
58 self.ReferenceRadioButton.SetValue(True) |
67 parent.AddWindow(self.radioButton3, 0, border=0, flag=wx.GROW) |
59 self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.ReferenceRadioButton) |
68 parent.AddWindow(self.staticText3, 0, border=0, flag=wx.GROW) |
60 left_gridsizer.AddWindow(self.ReferenceRadioButton, flag=wx.GROW) |
69 parent.AddWindow(self.Priority, 0, border=0, flag=wx.GROW) |
61 |
70 parent.AddWindow(self.Spacer, 0, border=0, flag=wx.GROW) |
62 self.Reference = wx.ComboBox(self, style=wx.CB_READONLY) |
71 |
63 self.Bind(wx.EVT_COMBOBOX, self.OnReferenceChanged, self.Reference) |
72 def _init_coll_LeftGridSizer_Growables(self, parent): |
64 left_gridsizer.AddWindow(self.Reference, flag=wx.GROW) |
73 parent.AddGrowableCol(0) |
65 |
74 parent.AddGrowableRow(6) |
66 self.InlineRadioButton = wx.RadioButton(self, label=_('Inline')) |
75 |
67 self.InlineRadioButton.SetValue(False) |
76 def _init_coll_RightGridSizer_Items(self, parent): |
68 self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.InlineRadioButton) |
77 parent.AddWindow(self.staticText2, 0, border=0, flag=wx.GROW) |
69 left_gridsizer.AddWindow(self.InlineRadioButton, flag=wx.GROW) |
78 parent.AddWindow(self.Preview, 0, border=0, flag=wx.GROW) |
70 |
79 |
71 self.Inline = wx.TextCtrl(self) |
80 def _init_coll_RightGridSizer_Growables(self, parent): |
|
81 parent.AddGrowableCol(0) |
|
82 parent.AddGrowableRow(1) |
|
83 |
|
84 def _init_sizers(self): |
|
85 self.flexGridSizer1 = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=10) |
|
86 self.MainSizer = wx.BoxSizer(wx.HORIZONTAL) |
|
87 self.LeftGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=9, vgap=5) |
|
88 self.RightGridSizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
|
89 |
|
90 self._init_coll_flexGridSizer1_Items(self.flexGridSizer1) |
|
91 self._init_coll_flexGridSizer1_Growables(self.flexGridSizer1) |
|
92 self._init_coll_MainSizer_Items(self.MainSizer) |
|
93 self._init_coll_LeftGridSizer_Items(self.LeftGridSizer) |
|
94 self._init_coll_LeftGridSizer_Growables(self.LeftGridSizer) |
|
95 self._init_coll_RightGridSizer_Items(self.RightGridSizer) |
|
96 self._init_coll_RightGridSizer_Growables(self.RightGridSizer) |
|
97 |
|
98 self.SetSizer(self.flexGridSizer1) |
|
99 |
|
100 def _init_ctrls(self, prnt, ctrler): |
|
101 wx.Dialog.__init__(self, id=ID_SFCTRANSITIONDIALOG, |
|
102 name='SFCTransitionDialog', parent=prnt, |
|
103 size=wx.Size(350, 300), style=wx.DEFAULT_DIALOG_STYLE, |
|
104 title=_('Edit transition')) |
|
105 self.SetClientSize(wx.Size(350, 300)) |
|
106 |
|
107 self.staticText1 = wx.StaticText(id=ID_SFCTRANSITIONDIALOGSTATICTEXT1, |
|
108 label=_('Type:'), name='staticText1', parent=self, |
|
109 pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) |
|
110 |
|
111 self.staticText2 = wx.StaticText(id=ID_SFCTRANSITIONDIALOGSTATICTEXT2, |
|
112 label=_('Preview:'), name='staticText2', parent=self, |
|
113 pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) |
|
114 |
|
115 self.staticText3 = wx.StaticText(id=ID_SFCTRANSITIONDIALOGSTATICTEXT3, |
|
116 label=_('Priority:'), name='staticText3', parent=self, |
|
117 pos=wx.Point(0, 0), size=wx.Size(0, 17), style=0) |
|
118 |
|
119 self.radioButton1 = wx.RadioButton(id=ID_SFCTRANSITIONDIALOGRADIOBUTTON1, |
|
120 label=_('Reference'), name='radioButton1', parent=self, |
|
121 pos=wx.Point(0, 0), size=wx.Size(0, 24), style=wx.RB_GROUP) |
|
122 self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_SFCTRANSITIONDIALOGRADIOBUTTON1) |
|
123 self.radioButton1.SetValue(True) |
|
124 |
|
125 self.Reference = wx.ComboBox(id=ID_SFCTRANSITIONDIALOGREFERENCE, |
|
126 name='Reference', parent=self, pos=wx.Point(0, 0), |
|
127 size=wx.Size(0, 28), style=wx.CB_READONLY) |
|
128 self.Bind(wx.EVT_COMBOBOX, self.OnReferenceChanged, id=ID_SFCTRANSITIONDIALOGREFERENCE) |
|
129 |
|
130 self.radioButton2 = wx.RadioButton(id=ID_SFCTRANSITIONDIALOGRADIOBUTTON2, |
|
131 label=_('Inline'), name='radioButton2', parent=self, |
|
132 pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0) |
|
133 self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_SFCTRANSITIONDIALOGRADIOBUTTON2) |
|
134 self.radioButton2.SetValue(False) |
|
135 |
|
136 self.Inline = wx.TextCtrl(id=ID_SFCTRANSITIONDIALOGINLINE, |
|
137 name='Inline', parent=self, pos=wx.Point(0, 0), |
|
138 size=wx.Size(0, 24), style=0) |
|
139 self.Bind(wx.EVT_TEXT, self.OnInlineChanged, id=ID_SFCTRANSITIONDIALOGINLINE) |
|
140 self.Inline.Enable(False) |
72 self.Inline.Enable(False) |
141 |
73 self.Bind(wx.EVT_TEXT, self.OnInlineChanged, self.Inline) |
142 self.radioButton3 = wx.RadioButton(id=ID_SFCTRANSITIONDIALOGRADIOBUTTON3, |
74 left_gridsizer.AddWindow(self.Inline, flag=wx.GROW) |
143 label=_('Connection'), name='radioButton3', parent=self, |
75 |
144 pos=wx.Point(0, 0), size=wx.Size(0, 24), style=0) |
76 self.ConnectionRadioButton = wx.RadioButton(self, label=_('Connection')) |
145 self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, id=ID_SFCTRANSITIONDIALOGRADIOBUTTON3) |
77 self.Bind(wx.EVT_RADIOBUTTON, self.OnTypeChanged, self.ConnectionRadioButton) |
146 self.radioButton3.SetValue(False) |
78 self.ConnectionRadioButton.SetValue(False) |
147 if not self.Connection: |
79 if not self.Connection: |
148 self.radioButton3.Hide() |
80 self.ConnectionRadioButton.Hide() |
149 |
81 left_gridsizer.AddWindow(self.ConnectionRadioButton, flag=wx.GROW) |
150 self.Priority = wx.SpinCtrl(id=ID_SFCTRANSITIONDIALOGPRIORITY, |
82 |
151 name='Priority', parent=self, pos=wx.Point(0, 0), |
83 priority_label = wx.StaticText(self, label=_('Priority:')) |
152 size=wx.Size(0, 24), style=wx.SP_ARROW_KEYS, min=0) |
84 left_gridsizer.AddWindow(priority_label, flag=wx.GROW) |
153 self.Bind(wx.EVT_TEXT, self.OnPriorityChanged, id=ID_SFCTRANSITIONDIALOGPRIORITY) |
85 |
154 |
86 self.Priority = wx.SpinCtrl(self, min=0, style=wx.SP_ARROW_KEYS) |
155 self.Preview = wx.Panel(id=ID_SFCTRANSITIONDIALOGPREVIEW, |
87 self.Bind(wx.EVT_TEXT, self.OnPriorityChanged, self.Priority) |
156 name='Preview', parent=self, pos=wx.Point(0, 0), |
88 left_gridsizer.AddWindow(self.Priority, flag=wx.GROW) |
157 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER) |
89 |
|
90 right_gridsizer = wx.FlexGridSizer(cols=1, hgap=0, rows=2, vgap=5) |
|
91 right_gridsizer.AddGrowableCol(0) |
|
92 right_gridsizer.AddGrowableRow(1) |
|
93 column_sizer.AddSizer(right_gridsizer, 1, border=5, |
|
94 flag=wx.GROW|wx.LEFT) |
|
95 |
|
96 preview_label = wx.StaticText(self, label=_('Preview:')) |
|
97 right_gridsizer.AddWindow(preview_label, flag=wx.GROW) |
|
98 |
|
99 self.Preview = wx.Panel(self, |
|
100 style=wx.TAB_TRAVERSAL|wx.SIMPLE_BORDER) |
158 self.Preview.SetBackgroundColour(wx.Colour(255,255,255)) |
101 self.Preview.SetBackgroundColour(wx.Colour(255,255,255)) |
159 setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE) |
102 setattr(self.Preview, "GetDrawingMode", lambda:FREEDRAWING_MODE) |
160 setattr(self.Preview, "RefreshTransitionModel", lambda x:None) |
103 setattr(self.Preview, "RefreshTransitionModel", lambda x:None) |
161 setattr(self.Preview, "GetScaling", lambda:None) |
104 setattr(self.Preview, "GetScaling", lambda:None) |
162 setattr(self.Preview, "IsOfType", ctrler.IsOfType) |
105 setattr(self.Preview, "IsOfType", controller.IsOfType) |
163 |
106 self.Preview.Bind(wx.EVT_PAINT, self.OnPaint) |
164 self.Spacer = wx.Panel(id=ID_SFCTRANSITIONDIALOGSPACER, |
107 right_gridsizer.AddWindow(self.Preview, flag=wx.GROW) |
165 name='Spacer', parent=self, pos=wx.Point(0, 0), |
108 |
166 size=wx.Size(0, 0), style=wx.TAB_TRAVERSAL) |
109 button_sizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE) |
167 |
110 self.Bind(wx.EVT_BUTTON, self.OnOK, |
168 self.ButtonSizer = self.CreateButtonSizer(wx.OK|wx.CANCEL|wx.CENTRE) |
111 button_sizer.GetAffirmativeButton()) |
169 if wx.VERSION >= (2, 5, 0): |
112 main_sizer.AddSizer(button_sizer, border=20, |
170 self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetAffirmativeButton().GetId()) |
113 flag=wx.ALIGN_RIGHT|wx.BOTTOM|wx.LEFT|wx.RIGHT) |
171 self.Preview.Bind(wx.EVT_PAINT, self.OnPaint) |
114 |
172 else: |
115 self.SetSizer(main_sizer) |
173 self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.ButtonSizer.GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId()) |
116 |
174 wx.EVT_PAINT(self.Preview, self.OnPaint) |
|
175 |
|
176 self._init_sizers() |
|
177 |
|
178 def __init__(self, parent, controler, connection): |
|
179 self.Connection = connection |
|
180 self._init_ctrls(parent, controler) |
|
181 self.Transition = None |
117 self.Transition = None |
182 self.MinTransitionSize = None |
118 self.MinTransitionSize = None |
183 |
119 |
184 self.Element = SFC_Transition(self.Preview) |
120 self.Element = SFC_Transition(self.Preview) |
185 |
121 |
186 self.radioButton1.SetFocus() |
122 self.ReferenceRadioButton.SetFocus() |
187 |
123 |
188 def SetPreviewFont(self, font): |
124 def SetPreviewFont(self, font): |
189 self.Preview.SetFont(font) |
125 self.Preview.SetFont(font) |
190 |
126 |
191 def SetElementSize(self, size): |
127 def SetElementSize(self, size): |
250 for transition in transitions: |
186 for transition in transitions: |
251 self.Reference.Append(transition) |
187 self.Reference.Append(transition) |
252 |
188 |
253 def SetValues(self, values): |
189 def SetValues(self, values): |
254 if values["type"] == "reference": |
190 if values["type"] == "reference": |
255 self.radioButton1.SetValue(True) |
191 self.ReferenceRadioButton.SetValue(True) |
256 self.radioButton2.SetValue(False) |
192 self.InlineRadioButton.SetValue(False) |
257 self.radioButton3.SetValue(False) |
193 self.ConnectionRadioButton.SetValue(False) |
258 self.Reference.Enable(True) |
194 self.Reference.Enable(True) |
259 self.Inline.Enable(False) |
195 self.Inline.Enable(False) |
260 self.Reference.SetStringSelection(values["value"]) |
196 self.Reference.SetStringSelection(values["value"]) |
261 self.Element.SetType("reference", values["value"]) |
197 self.Element.SetType("reference", values["value"]) |
262 elif values["type"] == "inline": |
198 elif values["type"] == "inline": |
263 self.radioButton1.SetValue(False) |
199 self.ReferenceRadioButton.SetValue(False) |
264 self.radioButton2.SetValue(True) |
200 self.InlineRadioButton.SetValue(True) |
265 self.radioButton3.SetValue(False) |
201 self.ConnectionRadioButton.SetValue(False) |
266 self.Reference.Enable(False) |
202 self.Reference.Enable(False) |
267 self.Inline.Enable(True) |
203 self.Inline.Enable(True) |
268 self.Inline.SetValue(values["value"]) |
204 self.Inline.SetValue(values["value"]) |
269 self.Element.SetType("inline", values["value"]) |
205 self.Element.SetType("inline", values["value"]) |
270 elif values["type"] == "connection" and self.Connection: |
206 elif values["type"] == "connection" and self.Connection: |
271 self.radioButton1.SetValue(False) |
207 self.ReferenceRadioButton.SetValue(False) |
272 self.radioButton2.SetValue(False) |
208 self.InlineRadioButton.SetValue(False) |
273 self.radioButton3.SetValue(True) |
209 self.ConnectionRadioButton.SetValue(True) |
274 self.Reference.Enable(False) |
210 self.Reference.Enable(False) |
275 self.Inline.Enable(False) |
211 self.Inline.Enable(False) |
276 self.Element.SetType("connection") |
212 self.Element.SetType("connection") |
277 self.Priority.SetValue(values["priority"]) |
213 self.Priority.SetValue(values["priority"]) |
278 self.Element.SetPriority(values["priority"]) |
214 self.Element.SetPriority(values["priority"]) |
279 self.RefreshPreview() |
215 self.RefreshPreview() |
280 |
216 |
281 def GetValues(self): |
217 def GetValues(self): |
282 values = {"priority" : int(self.Priority.GetValue())} |
218 values = {"priority" : int(self.Priority.GetValue())} |
283 if self.radioButton1.GetValue(): |
219 if self.ReferenceRadioButton.GetValue(): |
284 values["type"] = "reference" |
220 values["type"] = "reference" |
285 values["value"] = self.Reference.GetStringSelection() |
221 values["value"] = self.Reference.GetStringSelection() |
286 elif self.radioButton2.GetValue(): |
222 elif self.InlineRadioButton.GetValue(): |
287 values["type"] = "inline" |
223 values["type"] = "inline" |
288 values["value"] = self.Inline.GetValue() |
224 values["value"] = self.Inline.GetValue() |
289 else: |
225 else: |
290 values["type"] = "connection" |
226 values["type"] = "connection" |
291 values["value"] = None |
227 values["value"] = None |