Пример #1
0
 def init_devices(self):
     input_bus = '/proc/bus/input/devices'
     if not os.path.exists(input_bus):
         message = 'Input bus (%s) could not be accessed.' % input_bus
         raise OSError(message)
     with open(input_bus) as f:
         device = None
         for line in f.readlines():
             if line.startswith('I:'):
                 device = InputDevice()
             if line.startswith('N:'):
                 print line[9:-2]
                 name = line[9:-2]
                 for _dev in self.devices:
                     if _dev.name == name:
                         print 'found duplicate entry'
                         name += ' #2'
                 device.name = name
             if line.startswith('H:'):
                 handlers = line[12:].split()
                 for handler in handlers:
                     device.handlers.append(handler)
             if re.match('\n', line):
                 if device:
                     self.devices.append(device)
         for _dev in self.devices:
             if _dev.name == 'lircd':
                 self.devices.remove(_dev)
Пример #2
0
    def add_ctrl(self, device=None):
        idx = len(self.controls)
        print 'Adding controler with index %s' % idx
        control = CtrlSelectionWrapper()
        self.md5.update(str(time.time()))
        ctrl_id = self.md5.hexdigest()
        control.id = ctrl_id
        control.idx = idx

        if not device:
            device = InputDevice()
            device.name = 'None (Disabled)'

        control.device = device

        label = create_label()
        label.setLabel('Controller ' + str(idx))
        control.label = label

        input_select_btn = create_button()
        input_select_btn.setLabel(
            control.device.name,
        )
        control.input_select_btn = input_select_btn

        trigger_adv_mapping_btn = create_button()
        trigger_adv_mapping_btn.setLabel('Add Mapping')
        control.trigger_adv_mapping_btn = trigger_adv_mapping_btn

        remove_btn = create_button()
        remove_btn.setLabel('Remove')
        control.remove_btn = remove_btn

        if idx == 0:
            row = 0
            adv_row = 1
        else:
            row = idx * 2
            adv_row = row + 1

        control.adv_row = adv_row

        self.placeControl(control.label, row=row, column=0, rowspan=1, columnspan=1)
        self.placeControl(control.input_select_btn, row=row, column=1, rowspan=1, columnspan=3)
        self.placeControl(control.trigger_adv_mapping_btn, row=row, column=4, rowspan=1, columnspan=1)
        self.placeControl(control.remove_btn, row=row, column=5, rowspan=1, columnspan=1)

        self.connect_controls(control)

        if control.device.is_kbd() or control.device.is_mouse() or control.device.is_none_device():
            trigger_adv_mapping_btn.setEnabled(False)
            # Still visible for now, but disabled
            # trigger_adv_mapping_btn.setVisible(False)

        control.set_internal_navigation()

        self.controls[control.id] = control

        # TODO: Should be a dedicated method (set_navigation)
        self.add_ctrl_btn.controlUp(control.input_select_btn)
        if control.adv_on_flag:
            control.adv_select_mapping.controlDown(self.add_ctrl_btn)
        else:
            control.input_select_btn.controlDown(self.add_ctrl_btn)
        previous_control = None
        for _ctrl_id, _control in self.controls.iteritems():
            print 'Looping controls, current index: %s' % _control.idx
            if _control.idx == control.idx-1:
                previous_control = _control
        if previous_control:
            if previous_control.adv_on_flag:
                control.input_select_btn.controlUp(previous_control.adv_select_mapping)
                previous_control.adv_select_mapping.controlDown(control.input_select_btn)
            else:
                control.input_select_btn.controlUp(previous_control.input_select_btn)
                previous_control.input_select_btn.controlDown(control.input_select_btn)

        if control.device.mapping:
            self.trigger_advanced(control)
Пример #3
0
    def add_ctrl(self, device=None):
        idx = len(self.controls)
        print 'Adding controler with index %s' % idx
        control = CtrlSelectionWrapper()
        self.md5.update(str(time.time()))
        ctrl_id = self.md5.hexdigest()
        control.id = ctrl_id
        control.idx = idx

        if not device:
            device = InputDevice()
            device.name = 'None (Disabled)'

        control.device = device

        label = create_label()
        label.setLabel('Controller ' + str(idx))
        control.label = label

        input_select_btn = create_button()
        input_select_btn.setLabel(control.device.name, )
        control.input_select_btn = input_select_btn

        trigger_adv_mapping_btn = create_button()
        trigger_adv_mapping_btn.setLabel('Add Mapping')
        control.trigger_adv_mapping_btn = trigger_adv_mapping_btn

        remove_btn = create_button()
        remove_btn.setLabel('Remove')
        control.remove_btn = remove_btn

        if idx == 0:
            row = 0
            adv_row = 1
        else:
            row = idx * 2
            adv_row = row + 1

        control.adv_row = adv_row

        self.placeControl(control.label,
                          row=row,
                          column=0,
                          rowspan=1,
                          columnspan=1)
        self.placeControl(control.input_select_btn,
                          row=row,
                          column=1,
                          rowspan=1,
                          columnspan=3)
        self.placeControl(control.trigger_adv_mapping_btn,
                          row=row,
                          column=4,
                          rowspan=1,
                          columnspan=1)
        self.placeControl(control.remove_btn,
                          row=row,
                          column=5,
                          rowspan=1,
                          columnspan=1)

        self.connect_controls(control)

        if control.device.is_kbd() or control.device.is_mouse(
        ) or control.device.is_none_device():
            trigger_adv_mapping_btn.setEnabled(False)
            # Still visible for now, but disabled
            # trigger_adv_mapping_btn.setVisible(False)

        control.set_internal_navigation()

        self.controls[control.id] = control

        # TODO: Should be a dedicated method (set_navigation)
        self.add_ctrl_btn.controlUp(control.input_select_btn)
        if control.adv_on_flag:
            control.adv_select_mapping.controlDown(self.add_ctrl_btn)
        else:
            control.input_select_btn.controlDown(self.add_ctrl_btn)
        previous_control = None
        for _ctrl_id, _control in self.controls.iteritems():
            print 'Looping controls, current index: %s' % _control.idx
            if _control.idx == control.idx - 1:
                previous_control = _control
        if previous_control:
            if previous_control.adv_on_flag:
                control.input_select_btn.controlUp(
                    previous_control.adv_select_mapping)
                previous_control.adv_select_mapping.controlDown(
                    control.input_select_btn)
            else:
                control.input_select_btn.controlUp(
                    previous_control.input_select_btn)
                previous_control.input_select_btn.controlDown(
                    control.input_select_btn)

        if control.device.mapping:
            self.trigger_advanced(control)