2
0
Эх сурвалжийг харах

Added key down, up event binding

Gyedo Jeon 16 жил өмнө
parent
commit
a926640f1a

+ 2 - 2
direct/src/leveleditor/HotKeyUI.py

@@ -139,7 +139,7 @@ class HotKeyPanel(ScrolledPanel):
         self.parent.parent.updateMenu()
 
     def onEdit(self, evt, key):
-        base.le.ui.wxApp.Unbind(wx.EVT_CHAR)        
+        base.le.ui.bindKeyEvents(False)
         editUI = EditHotKeyDialog(self, -1, 'Edit Hot Key', key)
         editUI.ShowModal()
         editUI.Destroy()
@@ -148,7 +148,7 @@ class HotKeyPanel(ScrolledPanel):
         if sizer is not None:
             sizer.DeleteWindows()
             self.SetSizer(None)
-        base.le.ui.wxApp.Bind(wx.EVT_CHAR, base.le.ui.onKeyEvent)
+        base.le.ui.bindKeyEvents(True)
         self.updateUI()
 
 class HotKeyUI(wx.Dialog):

+ 33 - 2
direct/src/leveleditor/LevelEditorUIBase.py

@@ -130,9 +130,19 @@ class LevelEditorUIBase(WxAppShell):
         if not kw.get('size'):
             kw['size'] = wx.Size(self.frameWidth, self.frameHeight)
         WxAppShell.__init__(self, *args, **kw)        
-        self.wxApp.Bind(wx.EVT_CHAR, self.onKeyEvent)
+        self.bindKeyEvents(True)
         self.initialize()
 
+    def bindKeyEvents(self, toBind=True):
+        if toBind:
+            self.wxApp.Bind(wx.EVT_CHAR, self.onKeyEvent)
+            self.wxApp.Bind(wx.EVT_KEY_DOWN, self.onKeyDownEvent)
+            self.wxApp.Bind(wx.EVT_KEY_UP, self.onKeyUpEvent)
+        else:
+            self.wxApp.Unbind(wx.EVT_CHAR)
+            self.wxApp.Unbind(wx.EVT_KEY_DOWN)
+            self.wxApp.Unbind(wx.EVT_KEY_UP)
+
     def createMenu(self):
         menuItem = self.menuFile.Insert(0, ID_NEW, self.MENU_TEXTS[ID_NEW][0])
         self.Bind(wx.EVT_MENU, self.onNew, menuItem)
@@ -264,8 +274,29 @@ class LevelEditorUIBase(WxAppShell):
         self.layerEditorUI = LayerEditorUI(self.rightBarDownPane0, self.editor)
 
         self.showGridMenuItem.Check(True)
+
+    def onKeyDownEvent(self, evt):
+        if evt.GetKeyCode() == wx.WXK_ALT:
+            base.direct.fAlt = 1
+        elif evt.GetKeyCode() == wx.WXK_CONTROL:
+            base.direct.fControl = 1
+        elif evt.GetKeyCode() == wx.WXK_SHIFT:
+            base.direct.fShift = 1
+        else:
+            evt.Skip()
+
+    def onKeyUpEvent(self, evt):
+        if evt.GetKeyCode() == wx.WXK_ALT:
+            base.direct.fAlt = 0
+        elif evt.GetKeyCode() == wx.WXK_CONTROL:
+            base.direct.fControl = 0
+        elif evt.GetKeyCode() == wx.WXK_SHIFT:
+            base.direct.fShift = 0
+        else:
+            evt.Skip()
         
     def onKeyEvent(self, evt):
+        input = ''
         if evt.GetKeyCode() in range(97, 123): # for keys from a to z
             if evt.GetModifiers() == 4: # when shift is pressed while caps lock is on
                 input = 'shift-%s'%chr(evt.GetKeyCode())
@@ -287,7 +318,7 @@ class LevelEditorUIBase(WxAppShell):
                 input = 'shift-%s'%chr(evt.GetKeyCode())
             elif evt.GetModifiers() == 2:
                 input = 'control-%s'%chr(evt.GetKeyCode())
-            else:
+            elif evt.GetKeyCode() < 256:
                 input = chr(evt.GetKeyCode())
         if input in base.direct.hotKeyMap.keys():
             keyDesc = base.direct.hotKeyMap[input]

+ 2 - 2
direct/src/leveleditor/ObjectMgr.py

@@ -200,11 +200,11 @@ class ObjectMgr:
         
     def onEnterObjectPropUI(self, event):
         taskMgr.remove('_le_updateObjectUITask')        
-        self.editor.ui.wxApp.Unbind(wx.EVT_CHAR) 
+        self.editor.ui.bindKeyEvents(False)
 
     def onLeaveObjectPropUI(self, event):
         self.spawnUpdateObjectUITask()
-        self.editor.ui.wxApp.Bind(wx.EVT_CHAR, self.editor.ui.onKeyEvent)
+        self.editor.ui.bindKeyEvents(True)
 
     def spawnUpdateObjectUITask(self):
         if self.currNodePath is None: