Rev 606 | Rev 608 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 606 | Rev 607 | ||
---|---|---|---|
Line 5... | Line 5... | ||
5 | import sys |
5 | import sys |
6 | import os |
6 | import os |
7 | import wx |
7 | import wx |
8 | import wx.lib |
8 | import wx.lib |
9 | import wx.lib.plot |
9 | import wx.lib.plot |
- | 10 | import ConfigParser |
|
Line 10... | Line 11... | ||
10 | 11 | ||
11 | # Needs Numeric or numarray or NumPy |
12 | # Needs Numeric or numarray or NumPy |
12 | try: |
13 | try: |
13 | import numpy.oldnumeric as _Numeric |
14 | import numpy.oldnumeric as _Numeric |
Line 29... | Line 30... | ||
29 | # begin wxGlade: extracode |
30 | # begin wxGlade: extracode |
30 | # end wxGlade |
31 | # end wxGlade |
Line 31... | Line 32... | ||
31 | 32 | ||
32 | 33 | ||
33 | 34 | ||
34 | class SettingsFrame(wx.Frame): |
35 | class SettingsDialog(wx.Dialog): |
35 | def __init__(self, *args, **kwds): |
36 | def __init__(self, *args, **kwds): |
36 | # begin wxGlade: SettingsFrame.__init__ |
37 | # begin wxGlade: SettingsDialog.__init__ |
37 | kwds["style"] = wx.DEFAULT_FRAME_STYLE |
38 | kwds["style"] = wx.DEFAULT_DIALOG_STYLE |
38 | wx.Frame.__init__(self, *args, **kwds) |
39 | wx.Dialog.__init__(self, *args, **kwds) |
39 | self.label_5 = wx.StaticText(self, -1, "COM Port ", style=wx.ALIGN_RIGHT) |
40 | self.label_5_copy = wx.StaticText(self, -1, "COM Port ", style=wx.ALIGN_RIGHT) |
Line 40... | Line 41... | ||
40 | self.comPortCtrl = wx.TextCtrl(self, -1, "") |
41 | self.comPortCtrl_copy = wx.TextCtrl(self, -1, "") |
41 | self.button_5 = wx.Button(self, wx.ID_CANCEL, "") |
42 | self.button_5_copy = wx.Button(self, wx.ID_CANCEL, "") |
42 | self.button_6 = wx.Button(self, wx.ID_OK, "") |
43 | self.button_6_copy = wx.Button(self, wx.ID_OK, "") |
Line 43... | Line 44... | ||
43 | 44 | ||
44 | self.__set_properties() |
45 | self.__set_properties() |
45 | self.__do_layout() |
46 | self.__do_layout() |
46 | # end wxGlade |
47 | # end wxGlade |
Line 47... | Line 48... | ||
47 | 48 | ||
48 | def __set_properties(self): |
49 | def __set_properties(self): |
49 | # begin wxGlade: SettingsFrame.__set_properties |
50 | # begin wxGlade: SettingsDialog.__set_properties |
50 | self.SetTitle("Settings") |
51 | self.SetTitle("Settings") |
51 | # end wxGlade |
52 | # end wxGlade |
52 | 53 | ||
53 | def __do_layout(self): |
54 | def __do_layout(self): |
54 | # begin wxGlade: SettingsFrame.__do_layout |
55 | # begin wxGlade: SettingsDialog.__do_layout |
55 | sizer_5 = wx.BoxSizer(wx.VERTICAL) |
56 | sizer_5_copy = wx.BoxSizer(wx.VERTICAL) |
56 | grid_sizer_3 = wx.GridSizer(1, 2, 0, 0) |
57 | grid_sizer_3_copy = wx.GridSizer(1, 2, 0, 0) |
57 | sizer_6 = wx.BoxSizer(wx.HORIZONTAL) |
58 | sizer_6_copy = wx.BoxSizer(wx.HORIZONTAL) |
58 | grid_sizer_2 = wx.GridSizer(1, 2, 4, 4) |
59 | grid_sizer_2_copy = wx.GridSizer(1, 2, 4, 4) |
59 | sizer_5.Add((20, 20), 0, 0, 0) |
60 | sizer_5_copy.Add((20, 20), 0, 0, 0) |
60 | sizer_6.Add((20, 20), 0, 0, 0) |
61 | sizer_6_copy.Add((20, 20), 0, 0, 0) |
61 | grid_sizer_2.Add(self.label_5, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) |
62 | grid_sizer_2_copy.Add(self.label_5_copy, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0) |
62 | grid_sizer_2.Add(self.comPortCtrl, 0, 0, 0) |
63 | grid_sizer_2_copy.Add(self.comPortCtrl_copy, 0, 0, 0) |
63 | sizer_6.Add(grid_sizer_2, 0, 0, 0) |
64 | sizer_6_copy.Add(grid_sizer_2_copy, 0, 0, 0) |
64 | sizer_6.Add((20, 20), 0, 0, 0) |
65 | sizer_6_copy.Add((20, 20), 0, 0, 0) |
65 | sizer_5.Add(sizer_6, 1, wx.EXPAND, 0) |
66 | sizer_5_copy.Add(sizer_6_copy, 1, wx.EXPAND, 0) |
66 | sizer_5.Add((20, 20), 0, 0, 0) |
67 | sizer_5_copy.Add((20, 20), 0, 0, 0) |
67 | grid_sizer_3.Add(self.button_5, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) |
68 | grid_sizer_3_copy.Add(self.button_5_copy, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) |
68 | grid_sizer_3.Add(self.button_6, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) |
69 | grid_sizer_3_copy.Add(self.button_6_copy, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0) |
Line -... | Line 70... | ||
- | 70 | sizer_5_copy.Add(grid_sizer_3_copy, 0, wx.EXPAND, 0) |
|
- | 71 | sizer_5_copy.Add((20, 20), 0, 0, 0) |
|
- | 72 | self.SetSizer(sizer_5_copy) |
|
- | 73 | sizer_5_copy.Fit(self) |
|
- | 74 | self.Layout() |
|
- | 75 | # end wxGlade |
|
- | 76 | ||
- | 77 | # end of class SettingsDialog |
|
- | 78 | ||
- | 79 | ||
- | 80 | class SettingsFrame(wx.Frame): |
|
- | 81 | def __init__(self, *args, **kwds): |
|
- | 82 | # content of this block not found: did you rename this class? |
|
- | 83 | pass |
|
- | 84 | ||
- | 85 | def __set_properties(self): |
|
69 | sizer_5.Add(grid_sizer_3, 0, wx.EXPAND, 0) |
86 | # content of this block not found: did you rename this class? |
Line 70... | Line 87... | ||
70 | sizer_5.Add((20, 20), 0, 0, 0) |
87 | pass |
71 | self.SetSizer(sizer_5) |
88 | |
Line 131... | Line 148... | ||
131 | wx.Frame.__init__(self, *args, **kwds) |
148 | wx.Frame.__init__(self, *args, **kwds) |
Line 132... | Line 149... | ||
132 | 149 | ||
133 | # Menu Bar |
150 | # Menu Bar |
134 | self.frame_1_menubar = wx.MenuBar() |
151 | self.frame_1_menubar = wx.MenuBar() |
- | 152 | wxglade_tmp_menu = wx.Menu() |
|
135 | wxglade_tmp_menu = wx.Menu() |
153 | wxglade_tmp_menu.Append(101, "Settings", "", wx.ITEM_NORMAL) |
136 | wxglade_tmp_menu.Append(wx.NewId(), "Exit", "", wx.ITEM_NORMAL) |
154 | wxglade_tmp_menu.Append(150, "Exit", "", wx.ITEM_NORMAL) |
137 | self.frame_1_menubar.Append(wxglade_tmp_menu, "File") |
155 | self.frame_1_menubar.Append(wxglade_tmp_menu, "File") |
138 | wxglade_tmp_menu = wx.Menu() |
- | |
139 | self.frame_1_menubar.Append(wxglade_tmp_menu, "Settings") |
- | |
140 | wxglade_tmp_menu = wx.Menu() |
156 | wxglade_tmp_menu = wx.Menu() |
141 | wxglade_tmp_menu.Append(wx.NewId(), "Clear", "", wx.ITEM_NORMAL) |
157 | wxglade_tmp_menu.Append(301, "Clear", "", wx.ITEM_NORMAL) |
142 | wxglade_tmp_menu.Append(wx.NewId(), "Import", "", wx.ITEM_NORMAL) |
158 | wxglade_tmp_menu.Append(302, "Import", "", wx.ITEM_NORMAL) |
143 | self.frame_1_menubar.Append(wxglade_tmp_menu, "TestSet") |
159 | self.frame_1_menubar.Append(wxglade_tmp_menu, "TestSet") |
144 | wxglade_tmp_menu = wx.Menu() |
160 | wxglade_tmp_menu = wx.Menu() |
145 | self.frame_1_menubar.Append(wxglade_tmp_menu, "MK") |
161 | self.frame_1_menubar.Append(wxglade_tmp_menu, "MK") |
146 | wxglade_tmp_menu = wx.Menu() |
162 | wxglade_tmp_menu = wx.Menu() |
Line 168... | Line 184... | ||
168 | self.TestListCtrl = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER) |
184 | self.TestListCtrl = wx.ListCtrl(self, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER) |
Line 169... | Line 185... | ||
169 | 185 | ||
170 | self.__set_properties() |
186 | self.__set_properties() |
Line -... | Line 187... | ||
- | 187 | self.__do_layout() |
|
171 | self.__do_layout() |
188 | |
172 | 189 | self.Bind(wx.EVT_MENU, self.OnSettings, id=101) |
|
173 | self.Bind(wx.EVT_MENU, self.onClear, id=-1) |
190 | self.Bind(wx.EVT_MENU, self.onClear, id=301) |
174 | self.Bind(wx.EVT_MENU, self.OnImport, id=-1) |
191 | self.Bind(wx.EVT_MENU, self.OnImport, id=302) |
175 | self.Bind(wx.EVT_CHOICE, self.onGraphTypeChange, self.graphTypeChoice) |
192 | self.Bind(wx.EVT_CHOICE, self.onGraphTypeChange, self.graphTypeChoice) |
Line 176... | Line 193... | ||
176 | self.Bind(wx.EVT_CHOICE, self.onYAxisChange, self.yAxisChoice) |
193 | self.Bind(wx.EVT_CHOICE, self.onYAxisChange, self.yAxisChoice) |
Line 254... | Line 271... | ||
254 | 271 | ||
255 | # Configure TestListCtrl |
272 | # Configure TestListCtrl |
256 | self.TestListCtrl.InsertColumn(0, "Description") |
273 | self.TestListCtrl.InsertColumn(0, "Description") |
257 | self.TestListCtrl.InsertColumn(1, "Speed") |
274 | self.TestListCtrl.InsertColumn(1, "Speed") |
258 | self.TestListCtrl.InsertColumn(2, "Channel") |
275 | self.TestListCtrl.InsertColumn(2, "Channel") |
- | 276 | self.TestListCtrl.InsertColumn(3, "Vibration Value") |
|
Line 259... | Line 277... | ||
259 | self.TestListCtrl.InsertColumn(3, "VibrationValue") |
277 | self.TestListCtrl.SetColumnWidth(3, 500) |
260 | 278 | ||
261 | def DrawPointLabel(self, dc, mDataDict): |
279 | def DrawPointLabel(self, dc, mDataDict): |
262 | """This is the fuction that defines how the pointLabels are plotted |
280 | """This is the fuction that defines how the pointLabels are plotted |
Line 285... | Line 303... | ||
285 | 303 | ||
286 | def onNewTest(self, test): |
304 | def onNewTest(self, test): |
287 | index = self.TestListCtrl.InsertStringItem(sys.maxint, test.descr) |
305 | index = self.TestListCtrl.InsertStringItem(sys.maxint, test.descr) |
288 | self.TestListCtrl.SetStringItem(index, 1, str(test.speed)) |
306 | self.TestListCtrl.SetStringItem(index, 1, str(test.speed)) |
- | 307 | self.TestListCtrl.SetStringItem(index, 2, test.channel) |
|
- | 308 | ||
- | 309 | vv = int(test.getVibValue()) |
|
289 | self.TestListCtrl.SetStringItem(index, 2, test.channel) |
310 | vvs = "|%s| (%d)" % ("----------------------------------------------------------------------------------------------------"[0:min(vv,100)], vv) |
290 | self.TestListCtrl.SetStringItem(index, 3, str(test.getVibValue())) |
311 | self.TestListCtrl.SetStringItem(index, 3, vvs) |
291 | if (index == 0): |
312 | if (index == 0): |
Line 292... | Line 313... | ||
292 | self.TestListCtrl.Select(index) |
313 | self.TestListCtrl.Select(index) |
Line 297... | Line 318... | ||
297 | print "Test Selected id=%d" % (testId) |
318 | print "Test Selected id=%d" % (testId) |
298 | self.activeTestId = testId |
319 | self.activeTestId = testId |
299 | self.drawGraph() |
320 | self.drawGraph() |
Line 300... | Line 321... | ||
300 | 321 | ||
301 | def drawGraph(self): |
- | |
302 | vibTest = self.app.getTest(self.activeTestId) |
- | |
- | 322 | def drawGraph(self): |
|
303 | nb = vibTest.getDataLen() |
323 | |
Line 304... | Line 324... | ||
304 | y = int(self.yAxisChoice.GetStringSelection()) |
324 | y = int(self.yAxisChoice.GetStringSelection()) |
305 | - | ||
306 | if self.graphTypeChoice.GetSelection() == 0: |
- | |
307 | xydata = _Numeric.linspace(0,0.09*nb,2*nb) |
- | |
308 | xydata.shape = (nb, 2) |
- | |
309 | xydata[:,1] = vibTest.getRawData() |
- | |
310 | line = wx.lib.plot.PolyLine(xydata, legend= 'Raw Data', colour='red', width=2) |
- | |
311 | - | ||
312 | title = "Raw Signal: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed) |
- | |
Line -... | Line 325... | ||
- | 325 | ||
313 | self.client.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (ms)", "Acc"), yAxis= (-y,y)) |
326 | nbSelected = self.TestListCtrl.SelectedItemCount |
- | 327 | ||
- | 328 | if nbSelected > 1: |
|
314 | self.client.SetEnableGrid('Horizontal') |
329 | self.graphTypeChoice.Disable() |
315 | 330 | x = 1 |
|
- | 331 | data = [] |
|
- | 332 | idx = self.TestListCtrl.GetFirstSelected() |
|
316 | if self.graphTypeChoice.GetSelection() == 1: |
333 | while idx != -1: |
317 | xydata = _Numeric.linspace(0,0.09*nb,2*nb) |
334 | data.append([x,self.app.getTest(idx).getVibValue()]) |
318 | xydata.shape = (nb, 2) |
- | |
319 | xydata[:,1] = vibTest.getFilteredData() |
335 | x += 1 |
- | 336 | idx = self.TestListCtrl.GetNextSelected(idx) |
|
320 | line = wx.lib.plot.PolyLine(xydata, legend= 'Raw Data', colour='red', width=2) |
337 | line = wx.lib.plot.PolyLine(data, legend= 'Vibrations', colour='red', width=2) |
321 | 338 | markers = wx.lib.plot.PolyMarker(data, legend= '', colour='red', marker='circle',size=2) |
|
Line -... | Line 339... | ||
- | 339 | title = "Comparing tests" |
|
322 | title = "Filtered Signal: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed) |
340 | self.client.Draw(wx.lib.plot.PlotGraphics([line, markers], title, "Test", "Vibration Value"), xAxis=(1,max(x,10)), yAxis=(0,y)) |
323 | self.client.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (ms)", "Acc"), yAxis= (-y,y)) |
341 | self.client.SetEnableGrid('Horizontal') |
324 | self.client.SetEnableGrid('Horizontal') |
342 | |
325 | 343 | else: |
|
- | 344 | self.graphTypeChoice.Enable() |
|
- | 345 | vibTest = self.app.getTest(self.activeTestId) |
|
- | 346 | nb = vibTest.getDataLen() |
|
326 | elif self.graphTypeChoice.GetSelection() == 2: |
347 | |
- | 348 | if self.graphTypeChoice.GetSelection() == 0: |
|
327 | xydata = _Numeric.linspace(0,5555,nb) |
349 | xydata = _Numeric.linspace(0,0.09*nb,2*nb) |
328 | xydata.shape = (nb/2, 2) |
350 | xydata.shape = (nb, 2) |
329 | 351 | xydata[:,1] = vibTest.getRawData() |
|
- | 352 | line = wx.lib.plot.PolyLine(xydata, legend= 'Raw Data', colour='red', width=2) |
|
Line -... | Line 353... | ||
- | 353 | ||
- | 354 | title = "Raw Signal: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed) |
|
- | 355 | self.client.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (ms)", "Acc"), yAxis= (-y,y)) |
|
- | 356 | self.client.SetEnableGrid('Horizontal') |
|
- | 357 | ||
- | 358 | if self.graphTypeChoice.GetSelection() == 1: |
|
- | 359 | xydata = _Numeric.linspace(0,0.09*nb,2*nb) |
|
- | 360 | xydata.shape = (nb, 2) |
|
- | 361 | xydata[:,1] = vibTest.getFilteredData() |
|
- | 362 | line = wx.lib.plot.PolyLine(xydata, legend= 'Raw Data', colour='red', width=2) |
|
- | 363 | ||
- | 364 | title = "Filtered Signal: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed) |
|
- | 365 | self.client.Draw(wx.lib.plot.PlotGraphics([line], title, "Time (ms)", "Acc"), yAxis= (-y,y)) |
|
- | 366 | self.client.SetEnableGrid('Horizontal') |
|
- | 367 | ||
- | 368 | elif self.graphTypeChoice.GetSelection() == 2: |
|
- | 369 | xydata = _Numeric.linspace(0,5555,nb) |
|
- | 370 | xydata.shape = (nb/2, 2) |
|
- | 371 | ||
330 | xydata[:,1] = vibTest.getSpectrum() |
372 | xydata[:,1] = vibTest.getSpectrum() |
331 | 373 | ||
332 | line = wx.lib.plot.PolyLine(xydata, legend= 'Spectrum', colour='red') |
374 | line = wx.lib.plot.PolyLine(xydata, legend= 'Spectrum', colour='red') |
Line 333... | Line 375... | ||
333 | markers = wx.lib.plot.PolyMarker(xydata, legend= '', colour='red', marker='circle',size=2) |
375 | markers = wx.lib.plot.PolyMarker(xydata, legend= '', colour='red', marker='circle',size=2) |
334 | 376 | ||
335 | title = "Spectrum: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed) |
377 | title = "Spectrum: %s %s %d" %(vibTest.descr, vibTest.channel, vibTest.speed) |
Line 358... | Line 400... | ||
358 | 400 | ||
359 | def onClear(self, event): # wxGlade: MainFrame.<event_handler> |
401 | def onClear(self, event): # wxGlade: MainFrame.<event_handler> |
360 | print "Event handler `onClear' not implemented" |
402 | print "Event handler `onClear' not implemented" |
Line -... | Line 403... | ||
- | 403 | event.Skip() |
|
- | 404 | ||
- | 405 | def OnSettings(self, event): # wxGlade: MainFrame.<event_handler> |
|
- | 406 | dlg = SettingsDialog(self, -1, "Sample Dialog", size=(350, 200), |
|
- | 407 | #style=wx.CAPTION | wx.SYSTEM_MENU | wx.THICK_FRAME, |
|
- | 408 | style=wx.DEFAULT_DIALOG_STYLE, # & ~wx.CLOSE_BOX |
|
- | 409 | ) |
|
- | 410 | dlg.CenterOnScreen() |
|
- | 411 | ||
- | 412 | # this does not return until the dialog is closed. |
|
- | 413 | val = dlg.ShowModal() |
|
- | 414 | ||
361 | event.Skip() |
415 | dlg.Destroy() |
Line -... | Line 416... | ||
- | 416 | ||
- | 417 | # end of class MainFrame |
|
- | 418 | ||
- | 419 | class Setting: |
|
Line 362... | Line 420... | ||
362 | 420 | def __init__(self, descr, defaultValue): |
|
363 | # end of class MainFrame |
421 | self.descr = descr |
364 | 422 | self.value = defaultValue |
|
365 | 423 | ||
Line 411... | Line 469... | ||
411 | if self.vibValue == None: |
469 | if self.vibValue == None: |
412 | fd = self.getFilteredData(); |
470 | fd = self.getFilteredData(); |
413 | self.vibValue = max(fd)-min(fd) |
471 | self.vibValue = max(fd)-min(fd) |
414 | return self.vibValue |
472 | return self.vibValue |
Line -... | Line 473... | ||
- | 473 | ||
- | 474 | ||
415 | 475 | ||
- | 476 | class App(wx.App): |
|
- | 477 | ||
- | 478 | SETTINGSFILE = "settings.cfg" |
|
416 | class App(wx.App): |
479 | |
417 | def __init__(self, par): |
480 | def __init__(self, par): |
418 | self.VibTests = [] |
- | |
419 | 481 | self.VibTests = [] |
|
Line -... | Line 482... | ||
- | 482 | wx.App.__init__(self, par) |
|
- | 483 | ||
- | 484 | # Init settings |
|
- | 485 | self.settings={} |
|
- | 486 | self.settings["serialPort"] = Setting("SerialPort", "COM1") |
|
- | 487 | self.settings["hpf"] = Setting("HP Filter cutoff (Hz)", 50) |
|
- | 488 | self.settings["lpf"] = Setting("LP Filter cutoff (Hz)", 400) |
|
- | 489 | ||
420 | wx.App.__init__(self, par) |
490 | self.readSettings() |
421 | 491 | ||
Line -... | Line 492... | ||
- | 492 | if len(sys.argv)>1: |
|
- | 493 | self.Import(sys.argv[1]) |
|
- | 494 | ||
- | 495 | ||
- | 496 | def readSettings(self): |
|
- | 497 | print "Reading settings" |
|
- | 498 | cp = ConfigParser.ConfigParser() |
|
- | 499 | ||
- | 500 | try: |
|
- | 501 | cp.read(App.SETTINGSFILE) |
|
- | 502 | for setting in cp.items("DEFAULT"): |
|
- | 503 | print " ",setting |
|
- | 504 | try: |
|
- | 505 | self.settings[setting[0]].value = setting[1] |
|
- | 506 | except: |
|
- | 507 | print "WARNING, unknown setting" |
|
- | 508 | except: |
|
- | 509 | print "ERROR reading settingsfile" |
|
- | 510 | ||
- | 511 | ||
- | 512 | def storeSettings(self): |
|
- | 513 | print "Storing settings" |
|
- | 514 | ||
- | 515 | cp = ConfigParser.ConfigParser() |
|
- | 516 | for setting in self.settings.iteritems(): |
|
- | 517 | cp.set("", setting[0], setting[1].value) |
|
- | 518 | ||
422 | if len(sys.argv)>1: |
519 | file = open(App.SETTINGSFILE, "w") |
423 | self.Import(sys.argv[1]) |
520 | cp.write(file) |
424 | 521 | file.close() |
|
425 | 522 | ||
Line 435... | Line 532... | ||
435 | wx.InitAllImageHandlers() |
532 | wx.InitAllImageHandlers() |
436 | self.frame_1 = MainFrame(None, -1, "") |
533 | self.frame_1 = MainFrame(None, -1, "") |
437 | self.frame_1.setApp(self); |
534 | self.frame_1.setApp(self); |
438 | self.SetTopWindow(self.frame_1) |
535 | self.SetTopWindow(self.frame_1) |
Line -... | Line 536... | ||
- | 536 | ||
439 | 537 | self.frame_1.CenterOnScreen() |
|
440 | self.frame_1.Show() |
538 | self.frame_1.Show() |
Line 441... | Line 539... | ||
441 | return 1 |
539 | return 1 |