55 border |= wx.TOP |
55 border |= wx.TOP |
56 elif idx == len(params) - 1: |
56 elif idx == len(params) - 1: |
57 border |= wx.BOTTOM |
57 border |= wx.BOTTOM |
58 |
58 |
59 st = wx.StaticText(parent, label=label) |
59 st = wx.StaticText(parent, label=label) |
60 sizer.AddWindow(st, border=10, |
60 sizer.Add(st, border=10, |
61 flag=wx.ALIGN_CENTER_VERTICAL | border | wx.LEFT) |
61 flag=wx.ALIGN_CENTER_VERTICAL | border | wx.LEFT) |
62 |
62 |
63 tc = wx.TextCtrl(parent, style=wx.TE_PROCESS_ENTER) |
63 tc = wx.TextCtrl(parent, style=wx.TE_PROCESS_ENTER) |
64 setattr(self, name, tc) |
64 setattr(self, name, tc) |
65 callback = self.GetTextCtrlChangedFunction(tc, name) |
65 callback = self.GetTextCtrlChangedFunction(tc, name) |
66 self.Bind(wx.EVT_TEXT_ENTER, callback, tc) |
66 self.Bind(wx.EVT_TEXT_ENTER, callback, tc) |
67 tc.Bind(wx.EVT_KILL_FOCUS, callback) |
67 tc.Bind(wx.EVT_KILL_FOCUS, callback) |
68 sizer.AddWindow(tc, border=10, |
68 sizer.Add(tc, border=10, |
69 flag=wx.GROW | border | wx.RIGHT) |
69 flag=wx.GROW | border | wx.RIGHT) |
70 |
70 |
71 def __init__(self, parent, controller=None, window=None, enable_required=True, scrolling=True): |
71 def __init__(self, parent, controller=None, window=None, enable_required=True, scrolling=True): |
72 wx.Notebook.__init__(self, parent) |
72 wx.Notebook.__init__(self, parent) |
73 |
73 |
123 graphicpanel_sizer.AddGrowableRow(3) |
123 graphicpanel_sizer.AddGrowableRow(3) |
124 self.GraphicsPanel.SetSizer(graphicpanel_sizer) |
124 self.GraphicsPanel.SetSizer(graphicpanel_sizer) |
125 |
125 |
126 pageSize_st = wx.StaticText(self.GraphicsPanel, |
126 pageSize_st = wx.StaticText(self.GraphicsPanel, |
127 label=_('Page Size (optional):')) |
127 label=_('Page Size (optional):')) |
128 graphicpanel_sizer.AddWindow( |
128 graphicpanel_sizer.Add( |
129 pageSize_st, border=10, |
129 pageSize_st, border=10, |
130 flag=wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.LEFT | wx.RIGHT) |
130 flag=wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.LEFT | wx.RIGHT) |
131 |
131 |
132 pageSize_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5) |
132 pageSize_sizer = wx.FlexGridSizer(cols=2, hgap=5, rows=2, vgap=5) |
133 pageSize_sizer.AddGrowableCol(1) |
133 pageSize_sizer.AddGrowableCol(1) |
134 graphicpanel_sizer.AddSizer(pageSize_sizer, border=10, |
134 graphicpanel_sizer.Add(pageSize_sizer, border=10, |
135 flag=wx.GROW | wx.LEFT | wx.RIGHT) |
135 flag=wx.GROW | wx.LEFT | wx.RIGHT) |
136 |
136 |
137 for name, label in [('PageWidth', _('Width:')), |
137 for name, label in [('PageWidth', _('Width:')), |
138 ('PageHeight', _('Height:'))]: |
138 ('PageHeight', _('Height:'))]: |
139 st = wx.StaticText(self.GraphicsPanel, label=label) |
139 st = wx.StaticText(self.GraphicsPanel, label=label) |
140 pageSize_sizer.AddWindow(st, border=12, |
140 pageSize_sizer.Add(st, border=12, |
141 flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT) |
141 flag=wx.ALIGN_CENTER_VERTICAL | wx.LEFT) |
142 |
142 |
143 sp = wx.SpinCtrl(self.GraphicsPanel, |
143 sp = wx.SpinCtrl(self.GraphicsPanel, |
144 min=0, max=2**16, style=wx.TE_PROCESS_ENTER) |
144 min=0, max=2**16, style=wx.TE_PROCESS_ENTER) |
145 setattr(self, name, sp) |
145 setattr(self, name, sp) |
146 callback = self.GetPageSizeChangedFunction(sp, name) |
146 callback = self.GetPageSizeChangedFunction(sp, name) |
147 self.Bind(wx.EVT_TEXT_ENTER, callback, sp) |
147 self.Bind(wx.EVT_TEXT_ENTER, callback, sp) |
148 sp.Bind(wx.EVT_KILL_FOCUS, callback) |
148 sp.Bind(wx.EVT_KILL_FOCUS, callback) |
149 pageSize_sizer.AddWindow(sp, flag=wx.GROW) |
149 pageSize_sizer.Add(sp, flag=wx.GROW) |
150 |
150 |
151 scaling_st = wx.StaticText(self.GraphicsPanel, |
151 scaling_st = wx.StaticText(self.GraphicsPanel, |
152 label=_('Grid Resolution:')) |
152 label=_('Grid Resolution:')) |
153 graphicpanel_sizer.AddWindow(scaling_st, border=10, |
153 graphicpanel_sizer.Add(scaling_st, border=10, |
154 flag=wx.GROW | wx.LEFT | wx.RIGHT) |
154 flag=wx.GROW | wx.LEFT | wx.RIGHT) |
155 |
155 |
156 scaling_nb = wx.Notebook(self.GraphicsPanel) |
156 scaling_nb = wx.Notebook(self.GraphicsPanel) |
157 graphicpanel_sizer.AddWindow(scaling_nb, border=10, |
157 graphicpanel_sizer.Add(scaling_nb, border=10, |
158 flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
158 flag=wx.GROW | wx.BOTTOM | wx.LEFT | wx.RIGHT) |
159 |
159 |
160 self.Scalings = {} |
160 self.Scalings = {} |
161 for language, translation in [("FBD", _("FBD")), ("LD", _("LD")), ("SFC", _("SFC"))]: |
161 for language, translation in [("FBD", _("FBD")), ("LD", _("LD")), ("SFC", _("SFC"))]: |
162 scaling_panel = wx.Panel(scaling_nb, style=wx.TAB_TRAVERSAL) |
162 scaling_panel = wx.Panel(scaling_nb, style=wx.TAB_TRAVERSAL) |
171 border = wx.TOP |
171 border = wx.TOP |
172 else: |
172 else: |
173 border = wx.BOTTOM |
173 border = wx.BOTTOM |
174 |
174 |
175 st = wx.StaticText(scaling_panel, label=label) |
175 st = wx.StaticText(scaling_panel, label=label) |
176 scalingpanel_sizer.AddWindow( |
176 scalingpanel_sizer.Add( |
177 st, border=10, |
177 st, border=10, |
178 flag=wx.ALIGN_CENTER_VERTICAL | border | wx.LEFT) |
178 flag=wx.ALIGN_CENTER_VERTICAL | border | wx.LEFT) |
179 |
179 |
180 sp = wx.SpinCtrl(scaling_panel, |
180 sp = wx.SpinCtrl(scaling_panel, |
181 min=0, max=2**16, style=wx.TE_PROCESS_ENTER) |
181 min=0, max=2**16, style=wx.TE_PROCESS_ENTER) |
182 scaling_controls.append(sp) |
182 scaling_controls.append(sp) |
183 callback = self.GetScalingChangedFunction(sp, language, name) |
183 callback = self.GetScalingChangedFunction(sp, language, name) |
184 self.Bind(wx.EVT_TEXT_ENTER, callback, sp) |
184 self.Bind(wx.EVT_TEXT_ENTER, callback, sp) |
185 sp.Bind(wx.EVT_KILL_FOCUS, callback) |
185 sp.Bind(wx.EVT_KILL_FOCUS, callback) |
186 scalingpanel_sizer.AddWindow(sp, border=10, |
186 scalingpanel_sizer.Add(sp, border=10, |
187 flag=wx.GROW | border | wx.RIGHT) |
187 flag=wx.GROW | border | wx.RIGHT) |
188 |
188 |
189 self.Scalings[language] = scaling_controls |
189 self.Scalings[language] = scaling_controls |
190 scaling_nb.AddPage(scaling_panel, translation) |
190 scaling_nb.AddPage(scaling_panel, translation) |
191 |
191 |
204 miscellaneouspanel_sizer.AddGrowableRow(1) |
204 miscellaneouspanel_sizer.AddGrowableRow(1) |
205 self.MiscellaneousPanel.SetSizer(miscellaneouspanel_sizer) |
205 self.MiscellaneousPanel.SetSizer(miscellaneouspanel_sizer) |
206 |
206 |
207 language_label = wx.StaticText(self.MiscellaneousPanel, |
207 language_label = wx.StaticText(self.MiscellaneousPanel, |
208 label=_('Language (optional):')) |
208 label=_('Language (optional):')) |
209 miscellaneouspanel_sizer.AddWindow(language_label, border=10, |
209 miscellaneouspanel_sizer.Add(language_label, border=10, |
210 flag=wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.LEFT) |
210 flag=wx.ALIGN_CENTER_VERTICAL | wx.TOP | wx.LEFT) |
211 |
211 |
212 self.Language = wx.ComboBox(self.MiscellaneousPanel, |
212 self.Language = wx.ComboBox(self.MiscellaneousPanel, |
213 style=wx.CB_READONLY) |
213 style=wx.CB_READONLY) |
214 self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, self.Language) |
214 self.Bind(wx.EVT_COMBOBOX, self.OnLanguageChanged, self.Language) |
215 miscellaneouspanel_sizer.AddWindow(self.Language, border=10, |
215 miscellaneouspanel_sizer.Add(self.Language, border=10, |
216 flag=wx.GROW | wx.TOP | wx.RIGHT) |
216 flag=wx.GROW | wx.TOP | wx.RIGHT) |
217 |
217 |
218 description_label = wx.StaticText( |
218 description_label = wx.StaticText( |
219 self.MiscellaneousPanel, label=_('Content Description (optional):')) |
219 self.MiscellaneousPanel, label=_('Content Description (optional):')) |
220 miscellaneouspanel_sizer.AddWindow(description_label, border=10, |
220 miscellaneouspanel_sizer.Add(description_label, border=10, |
221 flag=wx.BOTTOM | wx.LEFT) |
221 flag=wx.BOTTOM | wx.LEFT) |
222 |
222 |
223 self.ContentDescription = wx.TextCtrl( |
223 self.ContentDescription = wx.TextCtrl( |
224 self.MiscellaneousPanel, size=wx.Size(240, 150), |
224 self.MiscellaneousPanel, size=wx.Size(240, 150), |
225 style=wx.TE_MULTILINE | wx.TE_PROCESS_ENTER) |
225 style=wx.TE_MULTILINE | wx.TE_PROCESS_ENTER) |
226 self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged, |
226 self.Bind(wx.EVT_TEXT_ENTER, self.OnContentDescriptionChanged, |
227 self.ContentDescription) |
227 self.ContentDescription) |
228 self.ContentDescription.Bind(wx.EVT_KILL_FOCUS, |
228 self.ContentDescription.Bind(wx.EVT_KILL_FOCUS, |
229 self.OnContentDescriptionChanged) |
229 self.OnContentDescriptionChanged) |
230 miscellaneouspanel_sizer.AddWindow(self.ContentDescription, border=10, |
230 miscellaneouspanel_sizer.Add(self.ContentDescription, border=10, |
231 flag=wx.GROW | wx.BOTTOM | wx.RIGHT) |
231 flag=wx.GROW | wx.BOTTOM | wx.RIGHT) |
232 |
232 |
233 self.AddPage(self.MiscellaneousPanel, _("Miscellaneous")) |
233 self.AddPage(self.MiscellaneousPanel, _("Miscellaneous")) |
234 |
234 |
235 for param in REQUIRED_PARAMS: |
235 for param in REQUIRED_PARAMS: |