X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/359ed0f85c18a91d41e645d7da487227e4488950..6d50049a5c4a04f10df683482b51e10c2d65ef84:/wxPython/wx/lib/mixins/inspect.py diff --git a/wxPython/wx/lib/mixins/inspect.py b/wxPython/wx/lib/mixins/inspect.py index 6e6951a7cd..b6a5f82c61 100644 --- a/wxPython/wx/lib/mixins/inspect.py +++ b/wxPython/wx/lib/mixins/inspect.py @@ -1,6 +1,7 @@ #---------------------------------------------------------------------------- # Name: wx.lib.mixins.inspect -# Purpose: A mix-in class that can add PyCrust-based inspection of the app +# Purpose: A mix-in class that can add PyCrust-based inspection of the +# app's widgets and sizers. # # Author: Robin Dunn # @@ -10,50 +11,78 @@ # Licence: wxWindows license #---------------------------------------------------------------------------- -# NOTE: This class is based on ideas sent to the wxPython-users -# mail-list by Dan Eloff. +# NOTE: This class was originally based on ideas sent to the +# wxPython-users mail list by Dan Eloff. -import wx.py +import wx +from wx.lib.inspect import InspectionTool + + +#---------------------------------------------------------------------------- class InspectionMixin(object): """ This class is intended to be used as a mix-in with the wx.App - object. When used it will add the ability to popup a PyCrust - window where the widget under the mouse cursor will be loaded into - the shell's namespace as 'win'. + class. When used it will add the ability to popup a + InspectionFrame window where the widget under the mouse cursor + will be selected in the tree and loaded into the shell's namespace + as 'obj'. The default key sequence to activate the inspector is + Ctrl-Alt-I (or Cmd-Alt-I on Mac) but this can be changed via + parameters to the `Init` method, or the application can call + `ShowInspectionTool` from other event handlers if desired. To use this class simply derive a class from wx.App and - InspectionMixin and then call the Init() method from the app's + InspectionMixin and then call the `Init` method from the app's OnInit. """ - def Init(self, pos=(-1, -1), size=(-1, -1)): + def Init(self, pos=wx.DefaultPosition, size=wx.Size(850,700), + config=None, locals=None, + alt=True, cmd=True, shift=False, keyCode=ord('I')): """ - Make the event binding that will activate the PyCrust window. + Make the event binding that will activate the InspectionFrame window. """ - self.Bind(wx.EVT_KEY_DOWN, self.OnKeyPress) - self._crust = None - self._pos = pos - self._size = size + self.Bind(wx.EVT_KEY_DOWN, self._OnKeyPress) + self._alt = alt + self._cmd = cmd + self._shift = shift + self._keyCode = keyCode + InspectionTool().Init(pos, size, config, locals, self) - - def OnKeyPress(self, evt): + def _OnKeyPress(self, evt): """ - Event handler + Event handler, check for our hot-key. Normally it is + Ctrl-Alt-I but that can be changed by what is passed to the + Init method. """ - if evt.AltDown() and evt.CmdDown() and evt.KeyCode == ord('I'): - self.ShowShell() + if evt.AltDown() == self._alt and \ + evt.CmdDown() == self._cmd and \ + evt.ShiftDown() == self._shift and \ + evt.GetKeyCode() == self._keyCode: + self.ShowInspectionTool() else: evt.Skip() - def ShowShell(self): + def ShowInspectionTool(self): """ - Show the PyCrust window. + Show the Inspection tool, creating it if neccesary, setting it + to display the widget under the cursor. """ - if not self._crust: - self._crust = wx.py.crust.CrustFrame(self.GetTopWindow(), - pos = self._pos, size = self._size) - self._crust.shell.interp.locals['app'] = self - win = wx.FindWindowAtPointer() - self._crust.shell.interp.locals['win'] = win - self._crust.Show() + # get the current widget under the mouse + wnd = wx.FindWindowAtPointer() + InspectionTool().Show(wnd) + + +#--------------------------------------------------------------------------- + +class InspectableApp(wx.App, InspectionMixin): + """ + A simple mix of wx.App and InspectionMixin that can be used stand-alone. + """ + + def OnInit(self): + self.Init() + return True + +#--------------------------------------------------------------------------- +