210 else: |
210 else: |
211 self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId()) |
211 self.Bind(wx.EVT_BUTTON, self.OnOK, id=self.GetSizer().GetItem(3).GetSizer().GetChildren()[0].GetSizer().GetChildren()[0].GetWindow().GetId()) |
212 |
212 |
213 def OnOK(self, event): |
213 def OnOK(self, event): |
214 value = self.GetValue() |
214 value = self.GetValue() |
215 texts = {"value" : value} |
215 texts = {"value": value} |
216 for function, message in self.Tests: |
216 for function, message in self.Tests: |
217 if not function(value): |
217 if not function(value): |
218 message = wx.MessageDialog(self, message % texts, _("Error"), wx.OK|wx.ICON_ERROR) |
218 message = wx.MessageDialog(self, message % texts, _("Error"), wx.OK|wx.ICON_ERROR) |
219 message.ShowModal() |
219 message.ShowModal() |
220 message.Destroy() |
220 message.Destroy() |
311 def OnTaskBarChangeInterface(self, evt): |
311 def OnTaskBarChangeInterface(self, evt): |
312 ip_addr = self.pyroserver.ip_addr |
312 ip_addr = self.pyroserver.ip_addr |
313 ip_addr = '' if ip_addr is None else ip_addr |
313 ip_addr = '' if ip_addr is None else ip_addr |
314 dlg = ParamsEntryDialog(None, _("Enter the IP of the interface to bind"), defaultValue=ip_addr) |
314 dlg = ParamsEntryDialog(None, _("Enter the IP of the interface to bind"), defaultValue=ip_addr) |
315 dlg.SetTests([(re.compile('\d{1,3}(?:\.\d{1,3}){3}$').match, _("IP is not valid!")), |
315 dlg.SetTests([(re.compile('\d{1,3}(?:\.\d{1,3}){3}$').match, _("IP is not valid!")), |
316 ( lambda x :len([x for x in x.split(".") if 0 <= int(x) <= 255]) == 4, _("IP is not valid!")) |
316 ( lambda x:len([x for x in x.split(".") if 0 <= int(x) <= 255]) == 4, _("IP is not valid!")) |
317 ]) |
317 ]) |
318 if dlg.ShowModal() == wx.ID_OK: |
318 if dlg.ShowModal() == wx.ID_OK: |
319 self.pyroserver.ip_addr = dlg.GetValue() |
319 self.pyroserver.ip_addr = dlg.GetValue() |
320 self.pyroserver.Stop() |
320 self.pyroserver.Stop() |
321 |
321 |
322 def OnTaskBarChangePort(self, evt): |
322 def OnTaskBarChangePort(self, evt): |
323 dlg = ParamsEntryDialog(None, _("Enter a port number "), defaultValue=str(self.pyroserver.port)) |
323 dlg = ParamsEntryDialog(None, _("Enter a port number "), defaultValue=str(self.pyroserver.port)) |
324 dlg.SetTests([(UnicodeType.isdigit, _("Port number must be an integer!")), (lambda port : 0 <= int(port) <= 65535 , _("Port number must be 0 <= port <= 65535!"))]) |
324 dlg.SetTests([(UnicodeType.isdigit, _("Port number must be an integer!")), (lambda port: 0 <= int(port) <= 65535, _("Port number must be 0 <= port <= 65535!"))]) |
325 if dlg.ShowModal() == wx.ID_OK: |
325 if dlg.ShowModal() == wx.ID_OK: |
326 self.pyroserver.port = int(dlg.GetValue()) |
326 self.pyroserver.port = int(dlg.GetValue()) |
327 self.pyroserver.Stop() |
327 self.pyroserver.Stop() |
328 |
328 |
329 def OnTaskBarChangeWorkingDir(self, evt): |
329 def OnTaskBarChangeWorkingDir(self, evt): |
334 |
334 |
335 def OnTaskBarChangeName(self, evt): |
335 def OnTaskBarChangeName(self, evt): |
336 servicename = self.pyroserver.servicename |
336 servicename = self.pyroserver.servicename |
337 servicename = '' if servicename is None else servicename |
337 servicename = '' if servicename is None else servicename |
338 dlg = ParamsEntryDialog(None, _("Enter a name "), defaultValue=servicename) |
338 dlg = ParamsEntryDialog(None, _("Enter a name "), defaultValue=servicename) |
339 dlg.SetTests([(lambda name : len(name) is not 0 , _("Name must not be null!"))]) |
339 dlg.SetTests([(lambda name: len(name) is not 0, _("Name must not be null!"))]) |
340 if dlg.ShowModal() == wx.ID_OK: |
340 if dlg.ShowModal() == wx.ID_OK: |
341 self.pyroserver.servicename = dlg.GetValue() |
341 self.pyroserver.servicename = dlg.GetValue() |
342 self.pyroserver.Restart() |
342 self.pyroserver.Restart() |
343 |
343 |
344 def _LiveShellLocals(self): |
344 def _LiveShellLocals(self): |
366 Thread(target=self.pyroserver.Quit).start() |
366 Thread(target=self.pyroserver.Quit).start() |
367 self.RemoveIcon() |
367 self.RemoveIcon() |
368 wx.CallAfter(wx.GetApp().ExitMainLoop) |
368 wx.CallAfter(wx.GetApp().ExitMainLoop) |
369 |
369 |
370 def UpdateIcon(self, plcstatus): |
370 def UpdateIcon(self, plcstatus): |
371 if plcstatus is "Started" : |
371 if plcstatus is "Started": |
372 currenticon = self.MakeIcon(starticon) |
372 currenticon = self.MakeIcon(starticon) |
373 elif plcstatus is "Stopped": |
373 elif plcstatus is "Stopped": |
374 currenticon = self.MakeIcon(stopicon) |
374 currenticon = self.MakeIcon(stopicon) |
375 else: |
375 else: |
376 currenticon = self.MakeIcon(defaulticon) |
376 currenticon = self.MakeIcon(defaulticon) |
450 self.servicepublisher = ServicePublisher.ServicePublisher() |
450 self.servicepublisher = ServicePublisher.ServicePublisher() |
451 self.servicepublisher.RegisterService(self.servicename, self.ip_addr, self.port) |
451 self.servicepublisher.RegisterService(self.servicename, self.ip_addr, self.port) |
452 |
452 |
453 self.plcobj.AutoLoad() |
453 self.plcobj.AutoLoad() |
454 if self.plcobj.GetPLCstatus()[0] != "Empty": |
454 if self.plcobj.GetPLCstatus()[0] != "Empty": |
455 if self.autostart : |
455 if self.autostart: |
456 self.plcobj.StartPLC() |
456 self.plcobj.StartPLC() |
457 self.plcobj.StatusChange() |
457 self.plcobj.StatusChange() |
458 |
458 |
459 sys.stdout.flush() |
459 sys.stdout.flush() |
460 |
460 |
559 self.run = run_with_except_hook |
559 self.run = run_with_except_hook |
560 threading.Thread.__init__ = init |
560 threading.Thread.__init__ = init |
561 installThreadExcepthook() |
561 installThreadExcepthook() |
562 |
562 |
563 if havetwisted: |
563 if havetwisted: |
564 if webport is not None : |
564 if webport is not None: |
565 try: |
565 try: |
566 import runtime.NevowServer as NS |
566 import runtime.NevowServer as NS |
567 except Exception, e: |
567 except Exception, e: |
568 print _("Nevow/Athena import failed :"), e |
568 print _("Nevow/Athena import failed :"), e |
569 webport = None |
569 webport = None |
570 NS.WorkingDir = WorkingDir |
570 NS.WorkingDir = WorkingDir |
571 |
571 |
572 if wampconf is not None : |
572 if wampconf is not None: |
573 try: |
573 try: |
574 import runtime.WampClient as WC |
574 import runtime.WampClient as WC |
575 except Exception, e: |
575 except Exception, e: |
576 print _("WAMP import failed :"), e |
576 print _("WAMP import failed :"), e |
577 wampconf = None |
577 wampconf = None |
581 extension_folder = os.path.split(os.path.realpath(extfilename))[0] |
581 extension_folder = os.path.split(os.path.realpath(extfilename))[0] |
582 sys.path.append(extension_folder) |
582 sys.path.append(extension_folder) |
583 execfile(extfilename, locals()) |
583 execfile(extfilename, locals()) |
584 |
584 |
585 if havetwisted: |
585 if havetwisted: |
586 if webport is not None : |
586 if webport is not None: |
587 try: |
587 try: |
588 website = NS.RegisterWebsite(webport) |
588 website = NS.RegisterWebsite(webport) |
589 pyruntimevars["website"] = website |
589 pyruntimevars["website"] = website |
590 statuschange.append(NS.website_statuslistener_factory(website)) |
590 statuschange.append(NS.website_statuslistener_factory(website)) |
591 except Exception, e: |
591 except Exception, e: |
592 print _("Nevow Web service failed. "), e |
592 print _("Nevow Web service failed. "), e |
593 |
593 |
594 if wampconf is not None : |
594 if wampconf is not None: |
595 try: |
595 try: |
596 WC.RegisterWampClient(wampconf) |
596 WC.RegisterWampClient(wampconf) |
597 pyruntimevars["wampsession"] = WC.GetSession |
597 pyruntimevars["wampsession"] = WC.GetSession |
598 WC.SetServer(pyroserver) |
598 WC.SetServer(pyroserver) |
599 except Exception, e: |
599 except Exception, e: |