Beremiz_service.py
changeset 1739 ec153828ded2
parent 1738 d2e979738700
child 1740 b789b695b5c6
equal deleted inserted replaced
1738:d2e979738700 1739:ec153828ded2
   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:
   607     if havetwisted:
   607     if havetwisted:
   608         reactor.run()
   608         reactor.run()
   609     elif havewx:
   609     elif havewx:
   610         app.MainLoop()
   610         app.MainLoop()
   611 else:
   611 else:
   612     try :
   612     try:
   613         pyroserver.Loop()
   613         pyroserver.Loop()
   614     except KeyboardInterrupt,e:
   614     except KeyboardInterrupt,e:
   615         pass
   615         pass
   616 pyroserver.Quit()
   616 pyroserver.Quit()
   617 sys.exit(0)
   617 sys.exit(0)