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() |