Changeset 351:5e9032fa3f65


Ignore:
Timestamp:
03/24/10 16:12:39 (3 years ago)
Author:
ddangelo
Branch:
default
Convert:
svn:76c98907-0e80-4c83-94c7-b346fc2aefc2/trunk@357
Message:

Monitor setup now supports a keyboard and mouse device, which can be created per subdisplay.

Location:
avango-display/python/avango/display
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • avango-display/python/avango/display/_device.py

    r344 r351  
    6060        self.super(KeyboardDevice).__init__() 
    6161         
    62 def create_and_connect_keyboard(eventfields): 
    63     keyboard = KeyboardDevice() 
     62    def connect(self, eventfields): 
     63         
     64        self.KeysPressed.connect_from(eventfields.KeysPressed) 
    6465     
    65     keyboard.KeysPressed.connect_from(eventfields.KeysPressed) 
     66        self.KeyRight.connect_from(eventfields.KeyRight) 
     67        self.KeyLeft.connect_from(eventfields.KeyLeft) 
     68        self.KeyUp.connect_from(eventfields.KeyUp) 
     69        self.KeyDown.connect_from(eventfields.KeyDown) 
     70        self.PageUp.connect_from(eventfields.KeyPageUp) 
     71        self.PageDown.connect_from(eventfields.KeyPageDown) 
     72        self.Shift.connect_from(eventfields.KeyShift) 
     73        self.Ctrl.connect_from(eventfields.KeyCtrl)  
     74        self.KeyAlt.connect_from(eventfields.KeyAlt) 
     75        self.Insert.connect_from(eventfields.KeyInsert) 
     76        self.Delete.connect_from(eventfields.KeyDelete) 
     77        self.Home.connect_from(eventfields.KeyHome) 
     78        self.End.connect_from(eventfields.KeyEnd) 
     79        self.KeyEsc.connect_from(eventfields.KeyEsc) 
     80        self.KeySpace.connect_from(eventfields.KeySpace) 
     81        self.KeyEnter.connect_from(eventfields.KeyEnter) 
     82        self.AltReturn.connect_from(eventfields.KeyAltReturn) 
     83        self.KeyF1.connect_from(eventfields.KeyF1) 
     84        self.KeyF2.connect_from(eventfields.KeyF2) 
     85        self.KeyF3.connect_from(eventfields.KeyF3) 
     86        self.KeyF4.connect_from(eventfields.KeyF4) 
     87        self.KeyF5.connect_from(eventfields.KeyF5) 
     88        self.KeyF6.connect_from(eventfields.KeyF6) 
     89        self.KeyF7.connect_from(eventfields.KeyF7) 
     90        self.KeyF8.connect_from(eventfields.KeyF8) 
     91        self.KeyF9.connect_from(eventfields.KeyF9) 
     92        self.KeyF10.connect_from(eventfields.KeyF10) 
     93        self.KeyF11.connect_from(eventfields.KeyF11) 
     94        self.KeyF12.connect_from(eventfields.KeyF12) 
     95         
     96 
     97class MouseDevice(avango.script.Script): 
     98    Matrix = avango.osg.SFMatrix() 
     99    MousePosNorm = avango.osg.SFVec2() 
     100    MousePos = avango.osg.SFVec2() 
     101    MouseMovementNorm = avango.osg.SFVec2() 
     102    MouseButtonLeft = avango.SFBool() 
     103    MouseButtonRight = avango.SFBool() 
     104    MouseButtonMiddle = avango.SFBool() 
     105    MouseScrollUp = avango.SFBool() 
     106    MouseScrollDown = avango.SFBool()    
     107    MouseLeftDoubleClick = avango.SFBool() 
     108    MouseLeftAndRight = avango.SFBool() 
    66109     
    67     keyboard.KeyRight.connect_from(eventfields.KeyRight) 
    68     keyboard.KeyLeft.connect_from(eventfields.KeyLeft) 
    69     keyboard.KeyUp.connect_from(eventfields.KeyUp) 
    70     keyboard.KeyDown.connect_from(eventfields.KeyDown) 
    71     keyboard.PageUp.connect_from(eventfields.KeyPageUp) 
    72     keyboard.PageDown.connect_from(eventfields.KeyPageDown) 
    73     keyboard.Shift.connect_from(eventfields.KeyShift) 
    74     keyboard.Ctrl.connect_from(eventfields.KeyCtrl)  
    75     keyboard.KeyAlt.connect_from(eventfields.KeyAlt) 
    76     keyboard.Insert.connect_from(eventfields.KeyInsert) 
    77     keyboard.Delete.connect_from(eventfields.KeyDelete) 
    78     keyboard.Home.connect_from(eventfields.KeyHome) 
    79     keyboard.End.connect_from(eventfields.KeyEnd) 
    80     keyboard.KeyEsc.connect_from(eventfields.KeyEsc) 
    81     keyboard.KeySpace.connect_from(eventfields.KeySpace) 
    82     keyboard.KeyEnter.connect_from(eventfields.KeyEnter) 
    83     keyboard.AltReturn.connect_from(eventfields.KeyAltReturn) 
    84     keyboard.KeyF1.connect_from(eventfields.KeyF1) 
    85     keyboard.KeyF2.connect_from(eventfields.KeyF2) 
    86     keyboard.KeyF3.connect_from(eventfields.KeyF3) 
    87     keyboard.KeyF4.connect_from(eventfields.KeyF4) 
    88     keyboard.KeyF5.connect_from(eventfields.KeyF5) 
    89     keyboard.KeyF6.connect_from(eventfields.KeyF6) 
    90     keyboard.KeyF7.connect_from(eventfields.KeyF7) 
    91     keyboard.KeyF8.connect_from(eventfields.KeyF8) 
    92     keyboard.KeyF9.connect_from(eventfields.KeyF9) 
    93     keyboard.KeyF10.connect_from(eventfields.KeyF10) 
    94     keyboard.KeyF11.connect_from(eventfields.KeyF11) 
    95     keyboard.KeyF12.connect_from(eventfields.KeyF12) 
     110    def __init__(self): 
     111        self.super(MouseDevice).__init__() 
     112         
     113    def connect(self, eventfields, camera, window): 
     114        self.Matrix.connect_from(camera.MouseNearTransform) 
    96115     
    97     return keyboard 
     116        self.MousePosNorm.connect_from(window.MousePositionNorm) 
     117        self.MousePos.connect_from(window.MousePosition) 
     118        self.MouseMovementNorm.connect_from(window.MouseMovementNorm) 
     119         
     120        self.MouseButtonLeft.connect_from(eventfields.MouseButtonLeft) 
     121        self.MouseButtonRight.connect_from(eventfields.MouseButtonRight) 
     122        self.MouseScrollUp.connect_from(eventfields.MouseScrollUp) 
     123        self.MouseScrollDown.connect_from(eventfields.MouseScrollDown) 
     124        self.MouseButtonMiddle.connect_from(eventfields.MouseButtonMiddle) 
     125        self.MouseLeftDoubleClick.connect_from(eventfields.MouseButtonLeftDoubleClick) 
     126        self.MouseLeftAndRight.connect_from(eventfields.MouseButtons_LeftAndRight) 
  • avango-display/python/avango/display/_display.py

    r349 r351  
    2626        self._composite_viewer.Views.connect_from(self._merge_viewer.ViewsOut) 
    2727         
    28         #the device service will be created as soon as it is needed 
     28        #the device service will be created as soon as it is used. 
    2929        self._device_service = None 
    3030         
     
    6262            self.connect_view_field(user_selector.ViewOut) 
    6363             
    64             #call template function 
    6564            self.view_created(camera,view) 
    6665 
     
    174173 
    175174    def add_window(self, window, transform, user): 
     175#        import traceback 
     176#        traceback.print_stack() 
    176177        self._windows.append((window, transform, user)) 
    177178 
  • avango-display/python/avango/display/setups/Monitor.py

    r344 r351  
    3131        super(Monitor, self).__init__("Monitor", inspector) 
    3232 
     33        self._subdisplay_window = {} 
    3334        self._subdisplay_window_events = {} 
    3435        self._subdisplay_camera = {} 
     
    3839        window.Decoration.value = True 
    3940        window.AutoHeight.value = True 
     41        window.ShowCursor.value = True 
    4042        self.add_window(window, avango.osg.make_trans_mat(0, 1.7, -0.6), 0) 
    41  
     43        self._subdisplay_window[""]=window 
     44         
    4245        user = avango.display.nodes.User() 
    4346        user.Matrix.value = avango.osg.make_trans_mat(avango.osg.Vec3(0., 1.7, 0.)) 
    4447        self.add_user(user) 
    4548 
    46     def make_dominant_user_device(self, user, interface, subdisplay): 
    47         device = avango.display.nodes.Device() 
    48         if subdisplay == "": 
    49             return device 
    50  
    51         device.Matrix.connect_from(self._subdisplay_camera[subdisplay].MouseNearTransform) 
    52         device.Button1.connect_from(self._subdisplay_window_events[subdisplay].MouseButtons_OnlyLeft) 
    53  
    54         return device 
    5549 
    5650    def make_view(self, subdisplay): 
     
    7872        window.MoveEvent.connect_from(window_event.MoveEvent) 
    7973        self._subdisplay_camera[subdisplay] = camera 
     74        self._subdisplay_window[subdisplay] = window 
     75        return display_view 
     76     
     77     
     78    def view_created(self, camera, view): 
     79        window_event = avango.osg.viewer.nodes.EventFields(View = view) 
     80        self._subdisplay_window_events[""] = window_event 
     81        self._subdisplay_window[""].DragEvent.connect_from(window_event.DragEvent) 
     82        self._subdisplay_window[""].MoveEvent.connect_from(window_event.MoveEvent) 
     83        self._subdisplay_camera[""] = camera 
     84         
    8085 
    81         return display_view 
     86    def make_dominant_user_device(self, user, interface, subdisplay): 
     87        if subdisplay not in self._subdisplay_camera: 
     88            return avango.display.nodes.Device() 
     89         
     90        if interface == "Keyboard": 
     91            keyboard = avango.display.KeyboardDevice() 
     92            keyboard.connect(self._subdisplay_window_events[subdisplay]) 
     93            return keyboard 
     94         
     95        elif interface == "Mouse": 
     96            mouse = avango.display.MouseDevice() 
     97            mouse.connect(self._subdisplay_window_events[subdisplay], 
     98                          self._subdisplay_camera[subdisplay], 
     99                          self._subdisplay_window[subdisplay] 
     100                          ) 
     101            return mouse 
     102         
     103        else: 
     104            device = avango.display.nodes.Device() 
     105            device.Matrix.connect_from(self._subdisplay_camera[subdisplay].MouseNearTransform) 
     106            device.Button1.connect_from(self._subdisplay_window_events[subdisplay].MouseButtons_OnlyLeft) 
     107            return device 
     108         
    82109 
    83110    def make_device(self, device, interface): 
Note: See TracChangeset for help on using the changeset viewer.