317 dlg.SetTests([(re.compile('\d{1,3}(?:\.\d{1,3}){3}$').match, _("IP is not valid!")), |
317 dlg.SetTests([(re.compile('\d{1,3}(?:\.\d{1,3}){3}$').match, _("IP is not valid!")), |
318 (lambda x:len([x for x in x.split(".") if 0 <= int(x) <= 255]) == 4, |
318 (lambda x:len([x for x in x.split(".") if 0 <= int(x) <= 255]) == 4, |
319 _("IP is not valid!"))]) |
319 _("IP is not valid!"))]) |
320 if dlg.ShowModal() == wx.ID_OK: |
320 if dlg.ShowModal() == wx.ID_OK: |
321 self.pyroserver.ip_addr = dlg.GetValue() |
321 self.pyroserver.ip_addr = dlg.GetValue() |
322 self.pyroserver.Stop() |
322 self.pyroserver.Restart() |
323 |
323 |
324 def OnTaskBarChangePort(self, evt): |
324 def OnTaskBarChangePort(self, evt): |
325 dlg = ParamsEntryDialog(None, _("Enter a port number "), defaultValue=str(self.pyroserver.port)) |
325 dlg = ParamsEntryDialog(None, _("Enter a port number "), defaultValue=str(self.pyroserver.port)) |
326 dlg.SetTests([(UnicodeType.isdigit, _("Port number must be an integer!")), (lambda port: 0 <= int(port) <= 65535, _("Port number must be 0 <= port <= 65535!"))]) |
326 dlg.SetTests([(UnicodeType.isdigit, _("Port number must be an integer!")), (lambda port: 0 <= int(port) <= 65535, _("Port number must be 0 <= port <= 65535!"))]) |
327 if dlg.ShowModal() == wx.ID_OK: |
327 if dlg.ShowModal() == wx.ID_OK: |
328 self.pyroserver.port = int(dlg.GetValue()) |
328 self.pyroserver.port = int(dlg.GetValue()) |
329 self.pyroserver.Stop() |
329 self.pyroserver.Restart() |
330 |
330 |
331 def OnTaskBarChangeWorkingDir(self, evt): |
331 def OnTaskBarChangeWorkingDir(self, evt): |
332 dlg = wx.DirDialog(None, _("Choose a working directory "), self.pyroserver.workdir, wx.DD_NEW_DIR_BUTTON) |
332 dlg = wx.DirDialog(None, _("Choose a working directory "), self.pyroserver.workdir, wx.DD_NEW_DIR_BUTTON) |
333 if dlg.ShowModal() == wx.ID_OK: |
333 if dlg.ShowModal() == wx.ID_OK: |
334 self.pyroserver.workdir = dlg.GetPath() |
334 self.pyroserver.workdir = dlg.GetPath() |
335 self.pyroserver.Stop() |
335 self.pyroserver.Restart() |
336 |
336 |
337 def OnTaskBarChangeName(self, evt): |
337 def OnTaskBarChangeName(self, evt): |
338 servicename = self.pyroserver.servicename |
338 servicename = self.pyroserver.servicename |
339 servicename = '' if servicename is None else servicename |
339 servicename = '' if servicename is None else servicename |
340 dlg = ParamsEntryDialog(None, _("Enter a name "), defaultValue=servicename) |
340 dlg = ParamsEntryDialog(None, _("Enter a name "), defaultValue=servicename) |
410 self.evaluator = evaluator |
410 self.evaluator = evaluator |
411 self.pyruntimevars = pyruntimevars |
411 self.pyruntimevars = pyruntimevars |
412 |
412 |
413 def Loop(self): |
413 def Loop(self): |
414 while self.continueloop: |
414 while self.continueloop: |
|
415 pyro.initServer() |
|
416 self.daemon = pyro.Daemon(host=self.ip_addr, port=self.port) |
415 self.Start() |
417 self.Start() |
|
418 self.daemon.requestLoop() |
|
419 self.daemon.sock.close() |
416 |
420 |
417 def Restart(self): |
421 def Restart(self): |
418 self.Stop() |
422 self._stop() |
419 |
423 |
420 def Quit(self): |
424 def Quit(self): |
421 self.continueloop = False |
425 self.continueloop = False |
422 if self.plcobj is not None: |
426 if self.plcobj is not None: |
423 self.plcobj.StopPLC() |
427 self.plcobj.StopPLC() |
424 self.plcobj.UnLoadPLC() |
428 self.plcobj.UnLoadPLC() |
425 self.Stop() |
429 self._stop() |
426 |
430 |
427 def Start(self): |
431 def Start(self): |
428 pyro.initServer() |
|
429 self.daemon = pyro.Daemon(host=self.ip_addr, port=self.port) |
|
430 self.plcobj = PLCObject(self.workdir, self.daemon, self.argv, |
432 self.plcobj = PLCObject(self.workdir, self.daemon, self.argv, |
431 self.statuschange, self.evaluator, |
433 self.statuschange, self.evaluator, |
432 self.pyruntimevars) |
434 self.pyruntimevars) |
433 uri = self.daemon.connect(self.plcobj, "PLCObject") |
435 uri = self.daemon.connect(self.plcobj, "PLCObject") |
434 |
436 |
435 print(_("Pyro port :"), self.port) |
437 print(_("Pyro port :"), self.port) |
436 print(_("Pyro object's uri :"), uri) |
438 print(_("Pyro object's uri :"), uri) |
437 |
439 |
456 self.plcobj.StartPLC() |
458 self.plcobj.StartPLC() |
457 self.plcobj.StatusChange() |
459 self.plcobj.StatusChange() |
458 |
460 |
459 sys.stdout.flush() |
461 sys.stdout.flush() |
460 |
462 |
461 self.daemon.requestLoop() |
463 |
462 self.daemon.sock.close() |
464 def _stop(self): |
463 |
|
464 def Stop(self): |
|
465 if self.plcobj is not None: |
465 if self.plcobj is not None: |
466 self.plcobj.StopPLC() |
466 self.plcobj.StopPLC() |
467 if self.servicepublisher is not None: |
467 if self.servicepublisher is not None: |
468 self.servicepublisher.UnRegisterService() |
468 self.servicepublisher.UnRegisterService() |
469 self.servicepublisher = None |
469 self.servicepublisher = None |