diff -r d17bd2f00a87 -r 3bd617ae7a05 Beremiz_service.py --- a/Beremiz_service.py Fri Jan 09 17:08:31 2009 +0100 +++ b/Beremiz_service.py Wed Jan 14 16:41:14 2009 +0100 @@ -215,6 +215,7 @@ message.Destroy() return self.EndModal(wx.ID_OK) + event.Skip() def GetValue(self): return self.GetSizer().GetItem(1).GetWindow().GetValue() @@ -222,21 +223,24 @@ def SetTests(self, tests): self.Tests = tests - class DemoTaskBarIcon(wx.TaskBarIcon): + class BeremizTaskBarIcon(wx.TaskBarIcon): TBMENU_CHANGE_NAME = wx.NewId() TBMENU_CHANGE_PORT = wx.NewId() TBMENU_CHANGE_INTERFACE = wx.NewId() + TBMENU_LIVE_SHELL = wx.NewId() TBMENU_CHANGE_WD = wx.NewId() TBMENU_QUIT = wx.NewId() def __init__(self, pyroserver): wx.TaskBarIcon.__init__(self) + self.pyroserver = pyroserver # Set the image self.UpdateIcon(None) # bind some events self.Bind(wx.EVT_MENU, self.OnTaskBarChangeName, id=self.TBMENU_CHANGE_NAME) self.Bind(wx.EVT_MENU, self.OnTaskBarChangeInterface, id=self.TBMENU_CHANGE_INTERFACE) + self.Bind(wx.EVT_MENU, self.OnTaskBarLiveShell, id=self.TBMENU_LIVE_SHELL) self.Bind(wx.EVT_MENU, self.OnTaskBarChangePort, id=self.TBMENU_CHANGE_PORT) self.Bind(wx.EVT_MENU, self.OnTaskBarChangeWorkingDir, id=self.TBMENU_CHANGE_WD) self.Bind(wx.EVT_MENU, self.OnTaskBarQuit, id=self.TBMENU_QUIT) @@ -251,6 +255,7 @@ menu = wx.Menu() menu.Append(self.TBMENU_CHANGE_NAME, "Change Name") menu.Append(self.TBMENU_CHANGE_INTERFACE, "Change IP of interface to bind") + menu.Append(self.TBMENU_LIVE_SHELL, "Launch a live Python shell") menu.Append(self.TBMENU_CHANGE_PORT, "Change Port Number") menu.AppendSeparator() menu.Append(self.TBMENU_CHANGE_WD, "Change working directory") @@ -276,34 +281,47 @@ ( lambda ip :len([x for x in ip.split(".") if 0 <= int(x) <= 255]) == 4, "Ip is not valid!") ]) if dlg.ShowModal() == wx.ID_OK: - pyroserver.ip = dlg.GetValue() - pyroserver.Stop() + self.pyroserver.ip = dlg.GetValue() + self.pyroserver.Stop() + evt.Skip() def OnTaskBarChangePort(self,evt): dlg = ParamsEntryDialog(None, "Enter a port number ", defaultValue=str(pyroserver.port)) dlg.SetTests([(UnicodeType.isdigit, "Port number must be an integer!"), (lambda port : 0 <= int(port) <= 65535 , "Port number must be 0 <= port <= 65535!")]) if dlg.ShowModal() == wx.ID_OK: - pyroserver.port = int(dlg.GetValue()) - pyroserver.Stop() - + self.pyroserver.port = int(dlg.GetValue()) + self.pyroserver.Stop() + evt.Skip() def OnTaskBarChangeWorkingDir(self,evt): dlg = wx.DirDialog(None, "Choose a working directory ", pyroserver.workdir, wx.DD_NEW_DIR_BUTTON) if dlg.ShowModal() == wx.ID_OK: - pyroserver.workdir = dlg.GetPath() - pyroserver.Stop() + self.pyroserver.workdir = dlg.GetPath() + self.pyroserver.Stop() + evt.Skip() def OnTaskBarChangeName(self,evt): dlg = ParamsEntryDialog(None, "Enter a name ", defaultValue=pyroserver.name) dlg.SetTests([(lambda name : len(name) is not 0 , "Name must not be null!")]) if dlg.ShowModal() == wx.ID_OK: - pyroserver.name = dlg.GetValue() - pyroserver.Restart() - + self.pyroserver.name = dlg.GetValue() + self.pyroserver.Restart() + evt.Skip() + + def OnTaskBarLiveShell(self,evt): + if self.pyroserver.plcobj is not None and self.pyroserver.plcobj.python_threads_vars is not None: + from wx import py + frame = py.shell.ShellFrame(locals=self.pyroserver.plcobj.python_threads_vars) + frame.Show() + else: + wx.MessageBox("No runnning PLC","Error") + evt.Skip() + def OnTaskBarQuit(self,evt): pyroserver.Quit() self.RemoveIcon() wx.GetApp().ExitMainLoop() + evt.Skip() def UpdateIcon(self, plcstatus): if plcstatus is "Started" : @@ -376,7 +394,7 @@ if havewx: app=wx.App(redirect=False) - taskbar_instance = DemoTaskBarIcon(pyroserver) + taskbar_instance = BeremizTaskBarIcon(pyroserver) def statuschange(status): wx.CallAfter(taskbar_instance.UpdateIcon,status) pyro_thread=Thread(target=pyroserver.Loop, args=[statuschange])