]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/demo/MouseGestures.py
Fix "warning: operation on 'y' may be undefined".
[wxWidgets.git] / wxPython / demo / MouseGestures.py
index 3083414f159d43a9afcdf624daa9b170839b864e..d4af8490209bec424d5ba6d1224838ea3055d45e 100644 (file)
@@ -1,15 +1,14 @@
 #*******************
 #By Daniel Pozmanter
 #*******************
 #By Daniel Pozmanter
-#Under the GPL, etc, etc.
 
 #Thanks to Robin Dunn for taking the time to show me how to do this
 #via the mailing list.
 
 
 #Thanks to Robin Dunn for taking the time to show me how to do this
 #via the mailing list.
 
-#Version 0.0.0 ALPHA
+#Version 0.0.0
 
 #This is a hacked version of DragAndDrop.py from the wxPython demo 2.5.2.8
 
 
 #This is a hacked version of DragAndDrop.py from the wxPython demo 2.5.2.8
 
-import  wx, wx.stc
+import wx, wx.lib.dialogs
 from wx.lib.gestures import MouseGestures
 
 #ToDo:
 from wx.lib.gestures import MouseGestures
 
 #ToDo:
@@ -24,23 +23,35 @@ class TestPanel(wx.Panel):
         wx.Panel.__init__(self, parent, -1)
 
         ID_GESTURE = wx.NewId()
         wx.Panel.__init__(self, parent, -1)
 
         ID_GESTURE = wx.NewId()
+        ID_MOUSE = wx.NewId()
+        ID_MODIFIER = wx.NewId()
+        ID_VISIBLE = wx.NewId()
 
         self.log = log
 
         #Mouse Gestures:
     
 
         self.log = log
 
         #Mouse Gestures:
     
-        self.mg = MouseGestures(self, Auto=True)
+        self.mg = MouseGestures(self, Auto=True,
+                                MouseButton=wx.MOUSE_BTN_RIGHT)
         
         self.mg.SetGesturesVisible(True)
         
         
         self.mg.SetGesturesVisible(True)
         
+        self.mg.AddGesture('LR', self.ShowSomethingClever, 'Left then Right!')
+        self.mg.AddGesture('39', self.ShowSomethingClever, 'You made a V!')
         self.mg.AddGesture('L', self.LogSomethingClever, 'You moved left')
         self.mg.AddGesture('9', self.LogSomethingClever, 'You moved right and up')
         self.mg.AddGesture('U', self.LogSomethingClever, 'You moved up')
         self.mg.AddGesture('L', self.LogSomethingClever, 'You moved left')
         self.mg.AddGesture('9', self.LogSomethingClever, 'You moved right and up')
         self.mg.AddGesture('U', self.LogSomethingClever, 'You moved up')
-        self.mg.AddGesture('DR', self.OnDownThenRight)        
+        self.mg.AddGesture('DR', self.OnDownThenRight)
+        self.mg.AddGesture('LDRU', self.SetToBlue)
+        self.mg.AddGesture('RDLU', self.SetToOrange)
         
         #Widgets:
             
         self.btnAddGesture = wx.Button(self, ID_GESTURE, 'Add New Gesture')
         
         #Widgets:
             
         self.btnAddGesture = wx.Button(self, ID_GESTURE, 'Add New Gesture')
+        self.btnChangeMouseButton = wx.Button(self, ID_MOUSE, 'Change Mouse Button')
+        self.btnChangeModifier = wx.Button(self, ID_MODIFIER, 'Change Modifier')
+        self.btnToggleVisible = wx.ToggleButton(self, ID_VISIBLE, 'Toggle Gestures Visible')
+        self.btnToggleVisible.SetValue(True)
         
         msg = "Mouse Gestures"
         text = wx.StaticText(self, -1, "", style=wx.ALIGN_CENTRE)
         
         msg = "Mouse Gestures"
         text = wx.StaticText(self, -1, "", style=wx.ALIGN_CENTRE)
@@ -49,25 +60,35 @@ class TestPanel(wx.Panel):
 
         w,h = text.GetTextExtent(msg)
         text.SetSize(wx.Size(w,h+1))
 
         w,h = text.GetTextExtent(msg)
         text.SetSize(wx.Size(w,h+1))
-        text.SetForegroundColour(wx.BLUE)        
+        text.SetForegroundColour(wx.BLUE)
         
         #Sizer:
         outsideSizer = wx.BoxSizer(wx.VERTICAL)
         
         
         #Sizer:
         outsideSizer = wx.BoxSizer(wx.VERTICAL)
         
+        btnSizer = wx.BoxSizer(wx.HORIZONTAL)
+        
         outsideSizer.Add(text, 0, wx.EXPAND|wx.ALL, 5)
         outsideSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND)
         outsideSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.EXPAND)
         outsideSizer.Add(wx.StaticText(self, -1, 'Hold The Middle Mouse Button Down to Gesticulate'), 0, wx.EXPAND)
         outsideSizer.Add(text, 0, wx.EXPAND|wx.ALL, 5)
         outsideSizer.Add(wx.StaticLine(self, -1), 0, wx.EXPAND)
         outsideSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.EXPAND)
         outsideSizer.Add(wx.StaticText(self, -1, 'Hold The Middle Mouse Button Down to Gesticulate'), 0, wx.EXPAND)
-        outsideSizer.Add(wx.StaticText(self, -1, 'Left, The Diagonal Up/Right, Down Then Right, and Up are Preset'), 0, wx.EXPAND)
+        outsideSizer.Add(wx.StaticText(self, -1, 'Left Then Right, Left, The Diagonal Up/Right, Down Then Right, Diagonal Down/Right Then Diagonal Up/Right, and Up are Preset'), 0, wx.EXPAND)
+        outsideSizer.Add(wx.StaticText(self, -1, 'Left,Down,Right,Up Sets the line colour to Blue.'), 0, wx.EXPAND)
+        outsideSizer.Add(wx.StaticText(self, -1, 'Right,Down,Left,Up Sets the line colour to Orange.'), 0, wx.EXPAND)
         outsideSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.EXPAND)
         outsideSizer.Add(wx.StaticText(self, -1, '   '), 0, wx.EXPAND)
-        outsideSizer.Add(self.btnAddGesture, 0, wx.SHAPED)
+        btnSizer.Add(self.btnAddGesture, 0, wx.SHAPED)
+        btnSizer.Add(self.btnChangeMouseButton, 0, wx.SHAPED)
+        btnSizer.Add(self.btnChangeModifier, 0, wx.SHAPED)
+        btnSizer.Add(self.btnToggleVisible, 0, wx.SHAPED)
+        outsideSizer.Add(btnSizer, 0, wx.SHAPED)
         
         self.SetAutoLayout(True)
         self.SetSizer(outsideSizer)
 
         
         self.SetAutoLayout(True)
         self.SetSizer(outsideSizer)
 
-
         #Events:
         #Events:
-        self.Bind(wx.EVT_BUTTON, self.OnAddGesture, id=ID_GESTURE)        
+        self.Bind(wx.EVT_BUTTON, self.OnAddGesture, id=ID_GESTURE)
+        self.Bind(wx.EVT_BUTTON, self.OnChangeMouseButton, id=ID_MOUSE)
+        self.Bind(wx.EVT_BUTTON, self.OnChangeModifiers, id=ID_MODIFIER)
+        self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggleVisible, id=ID_VISIBLE)
 
     def LogSomethingClever(self, somethingclever):
         self.log.WriteText(somethingclever)
 
     def LogSomethingClever(self, somethingclever):
         self.log.WriteText(somethingclever)
@@ -77,16 +98,74 @@ class TestPanel(wx.Panel):
         answer1 = d.ShowModal()
         gesture = d.GetValue()
         d.Destroy()
         answer1 = d.ShowModal()
         gesture = d.GetValue()
         d.Destroy()
+        
         d = wx.TextEntryDialog(self, 'Print the following text on "%s":' % gesture, "Gesture Action", "")
         answer2 = d.ShowModal()
         text = d.GetValue()
         d.Destroy()
         d = wx.TextEntryDialog(self, 'Print the following text on "%s":' % gesture, "Gesture Action", "")
         answer2 = d.ShowModal()
         text = d.GetValue()
         d.Destroy()
+        
         if (answer1 == wx.ID_OK) and (answer2 == wx.ID_OK):
             self.mg.AddGesture(gesture.upper(), self.LogSomethingClever, text)
         if (answer1 == wx.ID_OK) and (answer2 == wx.ID_OK):
             self.mg.AddGesture(gesture.upper(), self.LogSomethingClever, text)
+    
+    def OnChangeModifiers(self, event):
+        choices = [wx.WXK_CONTROL, wx.WXK_SHIFT, wx.WXK_ALT]
+        schoices = ['Control', 'Shift', 'Alt']
+        
+        d = wx.lib.dialogs.MultipleChoiceDialog(self, 'Select Modifier Keys:\n(Select None if you do not want to use modifier keys\n\n', "Change Modifier Keys", schoices)
+        answer = d.ShowModal()
+        tuply = d.GetValue()
+        d.Destroy()
+        
+        if (answer == wx.ID_OK):
+            if len(tuply) > 0:
+                modifiers = []
+                modstring = ''
+                for x in tuply:
+                    modifiers.append(choices[x])
+                    modstring += schoices[x] + ' '
+                self.mg.SetModifiers(modifiers)
+                self.log.WriteText('Set Modifiers to: ' + modstring)
+            else:
+                self.mg.SetModifiers()
+                self.log.WriteText('UnSet All Modifiers')
+    
+    def OnChangeMouseButton(self, event):
+        choices = [wx.MOUSE_BTN_LEFT, wx.MOUSE_BTN_MIDDLE, wx.MOUSE_BTN_RIGHT]
+        schoices = ['Left', 'Middle', 'Right']
+        d = wx.SingleChoiceDialog(self, "Set Mouse Button To", "Change Mouse Button", schoices,
+                                  wx.CHOICEDLG_STYLE|wx.OK|wx.CANCEL)
+        d.SetSize(wx.Size(250, 200))
+        answer = d.ShowModal()
+        i = d.GetSelection()
+        d.Destroy()
+        if (answer == wx.ID_OK):
+            self.mg.SetMouseButton(choices[i])
+            self.log.WriteText('Set the Mouse Button to ' + schoices[i])
         
     def OnDownThenRight(self):
         self.log.WriteText('You made an "L"!')
 
         
     def OnDownThenRight(self):
         self.log.WriteText('You made an "L"!')
 
+    def OnToggleVisible(self, event):
+        visual = self.btnToggleVisible.GetValue()
+        self.mg.SetGesturesVisible(visual)
+        if visual:
+            self.log.WriteText('Made Gestures Visible')
+        else:
+            self.log.WriteText('Made Gestures Invisible')
+
+    def SetToBlue(self):
+        self.mg.SetGesturePen(wx.Colour(0, 144, 255), 5)
+        self.log.WriteText('Set Gesture Colour to Blue')
+        
+    def SetToOrange(self):
+        self.mg.SetGesturePen(wx.Colour(255, 156, 0), 5)
+        self.log.WriteText('Set Gesture Colour to Orange')
+
+    def ShowSomethingClever(self, somethingclever):
+        d = wx.MessageDialog(self, somethingclever, 'Mouse Gesture Action', wx.OK)
+        d.ShowModal()
+        d.Destroy()
+
 #----------------------------------------------------------------------
 
 def runTest(frame, nb, log):
 #----------------------------------------------------------------------
 
 def runTest(frame, nb, log):
@@ -113,3 +192,4 @@ if __name__ == '__main__':
     import run
     run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
 
     import run
     run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])
 
+