Browse Source

*** empty log message ***

Mark Mine 22 years ago
parent
commit
a42f2c6a94

+ 8 - 1
direct/src/directtools/DirectCameraControl.py

@@ -32,6 +32,8 @@ class DirectCameraControl(PandaObject):
         self.actionEvents = [
             ['DIRECT-mouse2', self.mouseFlyStart],
             ['DIRECT-mouse2Up', self.mouseFlyStop],
+            ]
+        self.keyEvents = [
             ['c', self.centerCamIn, 0.5],
             ['f', self.fitOnWidget],
             ['h', self.homeCam],
@@ -625,12 +627,15 @@ class DirectCameraControl(PandaObject):
         # Continue
         return Task.cont
 
-    def enableMouseFly(self):
+    def enableMouseFly(self, fKeyEvents = 1):
         # disable C++ fly interface
         base.disableMouse()
         # Enable events
         for event in self.actionEvents:
             self.accept(event[0], event[1], extraArgs = event[2:])
+        if fKeyEvents:
+            for event in self.keyEvents:
+                self.accept(event[0], event[1], extraArgs = event[2:])
         # Show marker
         self.coaMarker.reparentTo(direct.group)
 
@@ -640,6 +645,8 @@ class DirectCameraControl(PandaObject):
         # Ignore events
         for event in self.actionEvents:
             self.ignore(event[0])
+        for event in self.keyEvents:
+            self.ignore(event[0])
         # Kill tasks
         self.removeManipulateCameraTask()
         taskMgr.remove('stickToWidget')

+ 19 - 4
direct/src/directtools/DirectSession.py

@@ -145,11 +145,14 @@ class DirectSession(PandaObject):
             ['SGE_Delete', self.removeNodePath],
             ['SGE_Set Name', self.getAndSetName],
             ]
-        self.keyEvents = ['escape', 'delete', 'control', 'control-up',
-                          'shift', 'shift-up', 'alt', 'alt-up',
-                          'page_up', 'page_down', 
+        self.modifierEvents = ['control', 'control-up',
+                              'shift', 'shift-up',
+                              'alt', 'alt-up',
+                              ]
+        self.keyEvents = ['escape', 'delete', 'page_up', 'page_down', 
                           '[', '{', ']', '}',
-                          'shift-a', 'b', 'control-f', 'l', 'shift-l', 'o', 'p', 'r',
+                          'shift-a', 'b', 'control-f',
+                          'l', 'shift-l', 'o', 'p', 'r',
                           'shift-r', 's', 't', 'v', 'w']
         self.mouseEvents = ['mouse1', 'mouse1-up',
                             'shift-mouse1', 'shift-mouse1-up',
@@ -199,6 +202,7 @@ class DirectSession(PandaObject):
         self.selected.reset()
         # Accept appropriate hooks
         self.enableKeyEvents()
+        self.enableModifierEvents()
         self.enableMouseEvents()
         self.enableActionEvents()
         # Set flag
@@ -219,6 +223,7 @@ class DirectSession(PandaObject):
         # Accept appropriate hooks
         self.enableMouseEvents()
         self.enableActionEvents()
+        self.enableModifierEvents()
         # Set flag
         self.fEnabled = 1
 
@@ -230,6 +235,7 @@ class DirectSession(PandaObject):
         # Turn off object manipulation
         self.manipulationControl.disableManipulation()
         self.disableKeyEvents()
+        self.disableModifierEvents()
         self.disableMouseEvents()
         self.disableActionEvents()
         # Kill tasks
@@ -255,6 +261,7 @@ class DirectSession(PandaObject):
         self.disableActionEvents()
         # But let mouse events pass through
         self.enableMouseEvents()
+        self.enableModifierEvents()
 
     def oobe(self):
         # If oobeMode was never set, set it to false and create the
@@ -332,6 +339,10 @@ class DirectSession(PandaObject):
         for event in self.actionEvents:
             self.accept(event[0], event[1], extraArgs = event[2:])
 
+    def enableModifierEvents(self):
+        for event in self.modifierEvents:
+            self.accept(event, self.inputHandler, [event])
+
     def enableKeyEvents(self):
         for event in self.keyEvents:
             self.accept(event, self.inputHandler, [event])
@@ -344,6 +355,10 @@ class DirectSession(PandaObject):
         for event, method in self.actionEvents:
             self.ignore(event)
 
+    def disableModifierEvents(self):
+        for event in self.modifierEvents:
+            self.ignore(event)
+
     def disableKeyEvents(self):
         for event in self.keyEvents:
             self.ignore(event)