]> git.saurik.com Git - wxWidgets.git/blob - wxPython/demo/MouseGestures.py
warning fix
[wxWidgets.git] / wxPython / demo / MouseGestures.py
1 #*******************
2 #By Daniel Pozmanter
3 #Under the GPL, etc, etc.
4
5 #Thanks to Robin Dunn for taking the time to show me how to do this
6 #via the mailing list.
7
8 #Version 0.0.0 ALPHA
9
10 #This is a hacked version of DragAndDrop.py from the wxPython demo 2.5.2.8
11
12 import wx, wx.stc
13 from wx.lib.gestures import MouseGestures
14
15 #ToDo:
16
17 #Add a dialog to record gestures (Have it showcase the manual mode)
18 #Allow users to remove gestures
19
20 #----------------------------------------------------------------------
21
22 class TestPanel(wx.Panel):
23 def __init__(self, parent, log):
24 wx.Panel.__init__(self, parent, -1)
25
26 ID_GESTURE = wx.NewId()
27
28 self.log = log
29
30 #Mouse Gestures:
31
32 self.mg = MouseGestures(self, Auto=True)
33
34 self.mg.SetGesturesVisible(True)
35
36 self.mg.AddGesture('L', self.LogSomethingClever, 'You moved left')
37 self.mg.AddGesture('9', self.LogSomethingClever, 'You moved right and up')
38 self.mg.AddGesture('U', self.LogSomethingClever, 'You moved up')
39 self.mg.AddGesture('DR', self.OnDownThenRight)
40
41 #Widgets:
42
43 self.btnAddGesture = wx.Button(self, ID_GESTURE, 'Add New Gesture')
44
45 msg = "Mouse Gestures"
46 text = wx.StaticText(self, -1, "", style=wx.ALIGN_CENTRE)
47 text.SetFont(wx.Font(24, wx.SWISS, wx.NORMAL, wx.BOLD, False))
48 text.SetLabel(msg)
49
50 w,h = text.GetTextExtent(msg)
51 text.SetSize(wx.Size(w,h+1))
52 text.SetForegroundColour(wx.BLUE)
53
54 #Sizer:
55 outsideSizer = wx.BoxSizer(wx.VERTICAL)
56
57 outsideSizer.Add(text, 0, wx.EXPAND|wx.ALL, 5)
58 outsideSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND)
59 outsideSizer.Add(wx.StaticText(self, -1, ' '), 0, wx.EXPAND)
60 outsideSizer.Add(wx.StaticText(self, -1, 'Hold The Middle Mouse Button Down to Gesticulate'), 0, wx.EXPAND)
61 outsideSizer.Add(wx.StaticText(self, -1, 'Left, The Diagonal Up/Right, Down Then Right, and Up are Preset'), 0, wx.EXPAND)
62 outsideSizer.Add(wx.StaticText(self, -1, ' '), 0, wx.EXPAND)
63 outsideSizer.Add(self.btnAddGesture, 0, wx.SHAPED)
64
65 self.SetAutoLayout(True)
66 self.SetSizer(outsideSizer)
67
68
69 #Events:
70 self.Bind(wx.EVT_BUTTON, self.OnAddGesture, id=ID_GESTURE)
71
72 def LogSomethingClever(self, somethingclever):
73 self.log.WriteText(somethingclever)
74
75 def OnAddGesture(self, event):
76 d = wx.TextEntryDialog(self, "Enter Gesture (LRUD1379) (EG Right Then Up Then DownLeft is RU1):", "Add New Gesture", "")
77 answer1 = d.ShowModal()
78 gesture = d.GetValue()
79 d.Destroy()
80 d = wx.TextEntryDialog(self, 'Print the following text on "%s":' % gesture, "Gesture Action", "")
81 answer2 = d.ShowModal()
82 text = d.GetValue()
83 d.Destroy()
84 if (answer1 == wx.ID_OK) and (answer2 == wx.ID_OK):
85 self.mg.AddGesture(gesture.upper(), self.LogSomethingClever, text)
86
87 def OnDownThenRight(self):
88 self.log.WriteText('You made an "L"!')
89
90 #----------------------------------------------------------------------
91
92 def runTest(frame, nb, log):
93 win = TestPanel(nb, log)
94 return win
95
96 #----------------------------------------------------------------------
97
98
99 overview = """\
100 <html>
101 <body>
102 This demo shows how to add MouseGestures
103 to your program, and showcases the MouseGestures
104 class in all it's mousey glory.
105 <p><p>
106 </body>
107 </html>
108 """
109
110
111 if __name__ == '__main__':
112 import sys,os
113 import run
114 run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
115