]> git.saurik.com Git - wxWidgets.git/blob - wxPython/wx/lib/mixins/inspect.py
782123359ab4b90fb676e0791e30c7b3bc68a945
[wxWidgets.git] / wxPython / wx / lib / mixins / inspect.py
1 #----------------------------------------------------------------------------
2 # Name: wx.lib.mixins.inspect
3 # Purpose: A mix-in class that can add PyCrust-based inspection of the app
4 #
5 # Author: Robin Dunn
6 #
7 # Created: 21-Nov-2006
8 # RCS-ID: $Id$
9 # Copyright: (c) 2006 by Total Control Software
10 # Licence: wxWindows license
11 #----------------------------------------------------------------------------
12
13 # NOTE: This class is based on ideas sent to the wxPython-users
14 # mail-list by Dan Elof.
15
16 import wx.py
17
18 class InspectionMixin(object):
19 """
20 This class is intended to be used as a mix-in with the wx.App
21 object. When used it will add the ability to popup a PyCrust
22 window where the widget under the mouse cursor will be loaded into
23 the shell's namespace as 'win'.
24
25 To use this class simply derive a class from wx.App and
26 InspectionMixin and then call the Init() method from the app's
27 OnInit.
28 """
29 def Init(self):
30 """
31 Make the event binding that will activate the PyCrust window.
32 """
33 self.Bind(wx.EVT_KEY_DOWN, self.OnKeyPress)
34 self._crust = None
35
36
37 def OnKeyPress(self, evt):
38 """
39 Event handler
40 """
41 if evt.AltDown() and evt.CmdDown() and evt.KeyCode == ord('I'):
42 self.ShowShell()
43 else:
44 evt.Skip()
45
46
47 def ShowShell(self):
48 """
49 Show the PyCrust window.
50 """
51 if not self._crust:
52 self._crust = wx.py.crust.CrustFrame(self.GetTopWindow())
53 self._crust.shell.interp.locals['app'] = self
54 win = wx.FindWindowAtPointer()
55 self._crust.shell.interp.locals['win'] = win
56 self._crust.Show()
57
58