Beremiz_service.py
changeset 303 453487dba0a6
parent 301 87c925eaaa3a
child 319 bdd82ac65f5d
equal deleted inserted replaced
302:d962b3d503b5 303:453487dba0a6
   238     class BeremizTaskBarIcon(wx.TaskBarIcon):
   238     class BeremizTaskBarIcon(wx.TaskBarIcon):
   239         TBMENU_CHANGE_NAME = wx.NewId()
   239         TBMENU_CHANGE_NAME = wx.NewId()
   240         TBMENU_CHANGE_PORT = wx.NewId()
   240         TBMENU_CHANGE_PORT = wx.NewId()
   241         TBMENU_CHANGE_INTERFACE = wx.NewId()
   241         TBMENU_CHANGE_INTERFACE = wx.NewId()
   242         TBMENU_LIVE_SHELL = wx.NewId()
   242         TBMENU_LIVE_SHELL = wx.NewId()
       
   243         TBMENU_WXINSPECTOR = wx.NewId()
   243         TBMENU_CHANGE_WD = wx.NewId()
   244         TBMENU_CHANGE_WD = wx.NewId()
   244         TBMENU_QUIT = wx.NewId()
   245         TBMENU_QUIT = wx.NewId()
   245         
   246         
   246         def __init__(self, pyroserver):
   247         def __init__(self, pyroserver):
   247             wx.TaskBarIcon.__init__(self)
   248             wx.TaskBarIcon.__init__(self)
   251     
   252     
   252             # bind some events
   253             # bind some events
   253             self.Bind(wx.EVT_MENU, self.OnTaskBarChangeName, id=self.TBMENU_CHANGE_NAME)
   254             self.Bind(wx.EVT_MENU, self.OnTaskBarChangeName, id=self.TBMENU_CHANGE_NAME)
   254             self.Bind(wx.EVT_MENU, self.OnTaskBarChangeInterface, id=self.TBMENU_CHANGE_INTERFACE)
   255             self.Bind(wx.EVT_MENU, self.OnTaskBarChangeInterface, id=self.TBMENU_CHANGE_INTERFACE)
   255             self.Bind(wx.EVT_MENU, self.OnTaskBarLiveShell, id=self.TBMENU_LIVE_SHELL)
   256             self.Bind(wx.EVT_MENU, self.OnTaskBarLiveShell, id=self.TBMENU_LIVE_SHELL)
       
   257             self.Bind(wx.EVT_MENU, self.OnTaskBarWXInspector, id=self.TBMENU_WXINSPECTOR)
   256             self.Bind(wx.EVT_MENU, self.OnTaskBarChangePort, id=self.TBMENU_CHANGE_PORT)
   258             self.Bind(wx.EVT_MENU, self.OnTaskBarChangePort, id=self.TBMENU_CHANGE_PORT)
   257             self.Bind(wx.EVT_MENU, self.OnTaskBarChangeWorkingDir, id=self.TBMENU_CHANGE_WD)
   259             self.Bind(wx.EVT_MENU, self.OnTaskBarChangeWorkingDir, id=self.TBMENU_CHANGE_WD)
   258             self.Bind(wx.EVT_MENU, self.OnTaskBarQuit, id=self.TBMENU_QUIT)
   260             self.Bind(wx.EVT_MENU, self.OnTaskBarQuit, id=self.TBMENU_QUIT)
   259         
   261         
   260         def CreatePopupMenu(self):
   262         def CreatePopupMenu(self):
   266             """
   268             """
   267             menu = wx.Menu()
   269             menu = wx.Menu()
   268             menu.Append(self.TBMENU_CHANGE_NAME, "Change Name")
   270             menu.Append(self.TBMENU_CHANGE_NAME, "Change Name")
   269             menu.Append(self.TBMENU_CHANGE_INTERFACE, "Change IP of interface to bind")
   271             menu.Append(self.TBMENU_CHANGE_INTERFACE, "Change IP of interface to bind")
   270             menu.Append(self.TBMENU_LIVE_SHELL, "Launch a live Python shell")
   272             menu.Append(self.TBMENU_LIVE_SHELL, "Launch a live Python shell")
       
   273             menu.Append(self.TBMENU_WXINSPECTOR, "Launch WX GUI inspector")
   271             menu.Append(self.TBMENU_CHANGE_PORT, "Change Port Number")
   274             menu.Append(self.TBMENU_CHANGE_PORT, "Change Port Number")
   272             menu.AppendSeparator()
   275             menu.AppendSeparator()
   273             menu.Append(self.TBMENU_CHANGE_WD, "Change working directory")
   276             menu.Append(self.TBMENU_CHANGE_WD, "Change working directory")
   274             menu.Append(self.TBMENU_QUIT, "Quit")
   277             menu.Append(self.TBMENU_QUIT, "Quit")
   275             return menu
   278             return menu
   321             evt.Skip()
   324             evt.Skip()
   322 
   325 
   323         def OnTaskBarLiveShell(self,evt):
   326         def OnTaskBarLiveShell(self,evt):
   324             if self.pyroserver.plcobj is not None and self.pyroserver.plcobj.python_threads_vars is not None:
   327             if self.pyroserver.plcobj is not None and self.pyroserver.plcobj.python_threads_vars is not None:
   325                 from wx import py
   328                 from wx import py
   326                 frame = py.shell.ShellFrame(locals=self.pyroserver.plcobj.python_threads_vars)
   329                 #frame = py.shell.ShellFrame(locals=self.pyroserver.plcobj.python_threads_vars)
       
   330                 frame = py.crust.CrustFrame(locals=self.pyroserver.plcobj.python_threads_vars)
   327                 frame.Show()
   331                 frame.Show()
   328             else:
   332             else:
   329                 wx.MessageBox("No runnning PLC","Error")
   333                 wx.MessageBox("No runnning PLC","Error")
       
   334             evt.Skip()
       
   335 
       
   336         def OnTaskBarWXInspector(self, evt):
       
   337             # Activate the widget inspection tool
       
   338             from wx.lib.inspection import InspectionTool
       
   339             if not InspectionTool().initialized:
       
   340                 InspectionTool().Init(locals=self.pyroserver.plcobj.python_threads_vars)
       
   341     
       
   342             # Find a widget to be selected in the tree.  Use either the
       
   343             # one under the cursor, if any, or this frame.
       
   344             wnd = wx.FindWindowAtPointer()
       
   345             if not wnd:
       
   346                 wnd = wx.GetApp()
       
   347             InspectionTool().Show(wnd, True)
   330             evt.Skip()
   348             evt.Skip()
   331 
   349 
   332         def OnTaskBarQuit(self,evt):
   350         def OnTaskBarQuit(self,evt):
   333             pyroserver.Quit()
   351             pyroserver.Quit()
   334             self.RemoveIcon()
   352             self.RemoveIcon()