Exemple #1
0
    def test_mouse_and_key_handlers(self):
        handler = Mock()
        control_handler = Mock()

        self.main_widget.controls.on_keydown = control_handler
        self.main_widget.controls.on_keyup = control_handler
        self.main_widget.controls.on_mouseclick = control_handler
        self.main_widget.controls.on_mousedrag = control_handler

        self.frame.set_keyup_handler(handler)
        self.frame.set_keydown_handler(handler)
        self.frame.set_mouseclick_handler(handler)
        self.frame.set_mousedrag_handler(handler)
        self.frame.start()

        key_press = QKeyEvent(QKeyEvent.KeyPress, Qt.Key_L, Qt.NoModifier)
        key_release = QKeyEvent(QKeyEvent.KeyRelease, Qt.Key_L, Qt.NoModifier)
        mouse_release = QMouseEvent(QMouseEvent.MouseButtonRelease, QPoint(75, 75),
                                    Qt.MiddleButton, Qt.NoButton, Qt.NoModifier)
        mouse_move = QMouseEvent(QMouseEvent.MouseMove, QPoint(100, 75),
                                    Qt.MiddleButton, Qt.NoButton, Qt.NoModifier)
        calls = [
            call((75, 75)),
            call((100, 75)),
            call(int(Qt.Key_L)),
            call(int(Qt.Key_L))
        ]

        self.main_widget.canvas.mouseReleaseEvent(mouse_release)
        self.main_widget.canvas.mouseMoveEvent(mouse_move)
        self.main_widget.canvas.keyPressEvent(key_press)
        self.main_widget.canvas.keyReleaseEvent(key_release)

        handler.assert_has_calls(calls)
        control_handler.assert_has_calls(calls)
Exemple #2
0
    def testIt(self):
        # We need a qapp otherwise Qt will crash when trying to detect the
        # current platform
        app = QApplication([])
        ev1 = QKeyEvent(QEvent.KeyRelease, Qt.Key_Delete, Qt.NoModifier)
        ev2 = QKeyEvent(QEvent.KeyRelease, Qt.Key_Copy, Qt.NoModifier)
        ks = QKeySequence.Delete

        self.assertTrue(ev1.matches(ks))
        self.assertFalse(ev2.matches(ks))
    def testIt(self):
        # We need a qapp otherwise Qt will crash when trying to detect the
        # current platform
        app = QApplication([])
        ev1 = QKeyEvent(QEvent.KeyRelease, Qt.Key_Delete, Qt.NoModifier)
        ev2 = QKeyEvent(QEvent.KeyRelease, Qt.Key_Copy, Qt.NoModifier)
        ks = QKeySequence.Delete

        self.assertEqual(ev1, ks)
        self.assertEqual(ks, ev1)
        self.assertNotEqual(ev2, ks)
        self.assertNotEqual(ks, ev2)
Exemple #4
0
 def updateOptionSelected(self):
     # print(self.buttonGroup.checkedId()) # for test purpose
     # self.selectedOption = self.buttonGroup.checkedId()
     # print(self._selectedOption) # for test purpose
     self.selectedOption = self.buttonGroup.checkedId()
     QApplication.postEvent(
         self, QKeyEvent(QEvent.KeyPress, Qt.Key_Enter, Qt.NoModifier))
Exemple #5
0
    def test_plain_text(self):
        """Test event handling"""
        widget = PlainTextSingleLine(None)
        self.assertTrue(widget.tabChangesFocus())

        handler = Mock()
        widget.enter_pressed.connect(handler)
        event = QKeyEvent(QKeyEvent.KeyPress, Qt.Key_Enter, Qt.NoModifier)
        widget.setPlainText('text')
        widget.keyPressEvent(event)
        handler.assert_not_called()
        self.assertTrue(event.isAccepted())

        event = QKeyEvent(QKeyEvent.KeyRelease, Qt.Key_Enter, Qt.NoModifier)
        widget.keyReleaseEvent(event)
        handler.assert_called_once_with('text')
        self.assertTrue(event.isAccepted())
Exemple #6
0
 def on_key_event(self, wl_view, type_, name, modifiers, keyval, keycode,
                  native_modifiers, text):
     print(type_, name, modifiers, keyval, keycode, native_modifiers, text)
     print(KEY_EVENTS[type_], get_qt_key(name),
           deserialize_modifiers(modifiers), keycode, keyval,
           native_modifiers, text)
     event = QKeyEvent(KEY_EVENTS[type_], get_qt_key(name),
                       deserialize_modifiers(modifiers), keycode, keyval,
                       native_modifiers, text)
     self.renderer.sendEvent(event)
Exemple #7
0
    def event(self, arg__1: PySide2.QtCore.QEvent) -> bool:

        if isinstance(arg__1, QKeyEvent):
            if arg__1.key() == Qt.Key_Tab or arg__1.modifiers(
            ) == Qt.ShiftModifier:
                if arg__1.type() == QEvent.KeyRelease:
                    if QApplication.keyboardModifiers() == Qt.ShiftModifier:
                        print("s pressed")
                        e = QKeyEvent(QEvent.KeyPress,
                                      Qt.Key_Up,
                                      Qt.NoModifier,
                                      autorep=False)
                    else:
                        e = QKeyEvent(QEvent.KeyPress,
                                      Qt.Key_Down,
                                      Qt.NoModifier,
                                      autorep=False)
                    QApplication.sendEvent(self, e)
                return False
        return super().event(arg__1)
 def event(self, ev):
     """Intercepts shortcurts and instead sends an equivalent event with the 'Alt' modifier,
     so that mnemonics works with just the key.
     Also sends a key press event with the 'Alt' key when this menu shows,
     so that mnemonics are underligned on windows.
     """
     if ev.type() == QEvent.KeyPress and ev.key() == Qt.Key_Alt:
         return True
     if ev.type() == QEvent.ShortcutOverride and ev.modifiers() == Qt.NoModifier:
         actions = self.actions() + [a for child in self.findChildren(QWidget) for a in child.actions()]
         mnemonics = [QKeySequence.mnemonic(a.text()) for a in actions]
         key_seq = QKeySequence(Qt.ALT + ev.key())
         if key_seq in mnemonics:
             ev = QKeyEvent(QEvent.KeyPress, ev.key(), Qt.AltModifier)
             qApp.postEvent(self, ev)  # pylint: disable=undefined-variable
             return True
     if ev.type() == QEvent.Show:
         pev = QKeyEvent(QEvent.KeyPress, Qt.Key_Alt, Qt.NoModifier)
         qApp.postEvent(self, pev)  # pylint: disable=undefined-variable
     return super().event(ev)
Exemple #9
0
 def test_add_input(self):
     handler = Mock()
     inp = self.frame.add_input('INPUT', handler, 140)
     inp = self.__control_to_widget(inp)
     label, field, _ = inp.children()
     self.assertEqual(label.text(), 'INPUT')
     self.assertEqual(field.toPlainText(), '')
     inp.setText('data')
     self.assertEqual(field.toPlainText(), 'data')
     self.assertEqual(inp.text(), 'data')
     event = QKeyEvent(QKeyEvent.KeyRelease, Qt.Key_Enter, Qt.NoModifier)
     field.keyPressEvent(event)
     handler.assert_not_called()
     field.keyReleaseEvent(event)
     handler.assert_called_once_with('data')
Exemple #10
0
    def event(self, event):
        """
        overwritten from base class

        :param event:
        :return:
        """
        if event.type() == QEvent.KeyPress:
            if event.key() == Qt.Key_Tab:
                if not self._compl.popup().isVisible():
                    self._compl.complete()
                self.nextCompletion(+1)
                return True
            if event.key() == Qt.Key_Backtab:
                if not self._compl.popup().isVisible():
                    self._compl.complete()
                self.nextCompletion(-1)
                return True
            if event.key() in [Qt.Key_Slash, Qt.Key_Backslash]:
                event = QKeyEvent(event.type(), event.key(), event.modifiers(), event.text())
        return super().event(event)
Exemple #11
0
 def formatBraces(self):
     e = QKeyEvent(QEvent.KeyPress, Qt.Key_Return, Qt.NoModifier)
     self.keyPressEvent(e)
     self.moveCursor(QTextCursor.Up)
     self.insertPlainText(self.tabSize * ' ')
Exemple #12
0
 def sendKbdEvent(self):
     ev = QKeyEvent(QEvent.KeyPress, Qt.Key_A, Qt.NoModifier, 'a')
     QCoreApplication.sendEvent(self.box, ev)
 def wheelEvent(self, event):
     e = QKeyEvent(QEvent.None_,
                   Qt.Key_Down if event.delta() < 0 else Qt.Key_Up,
                   Qt.NoModifier)
     self._bar_hue.keyPressEvent(e)
     event.accept()
Exemple #14
0
 def sendkeys(self, char, modifier=Qt.NoModifier):
     event = QKeyEvent(QEvent.KeyPress, char, modifier)
     QCoreApplication.postEvent(self.gameWidget, event)
Exemple #15
0
 def eventFilter(self, obj, ev):
     if ev.type() == QEvent.KeyPress:
         self._parent_key_press_event = QKeyEvent(ev.type(), ev.key(),
                                                  ev.modifiers())
     return super().eventFilter(obj, ev)
Exemple #16
0
    def handle_wordcheck_key_events(self, e: QKeyEvent):
        """
        Remaps key events to their Wordcheck mode equivalents. Only handles NoModifier and ShiftModifier events.

        :param e: The key event to remap.
        :return:
        """
        if e.key() in [
                Qt.Key_Delete, Qt.Key_Backspace, Qt.Key_Comma, Qt.Key_Period,
                Qt.Key_Semicolon, Qt.Key_Colon, Qt.Key_Less, Qt.Key_Greater
        ]:
            if e.type() == QKeyEvent.KeyPress:
                super().keyPressEvent(e)
            elif e.type() == QKeyEvent.KeyRelease:
                super().keyReleaseEvent(e)

        elif e.modifiers() == Qt.NoModifier:
            if e.key() in [Qt.Key_S, Qt.Key_H]:
                mapped_e = QKeyEvent(e.type(),
                                     Qt.Key_Left,
                                     Qt.AltModifier,
                                     autorep=e.isAutoRepeat(),
                                     count=e.count())
                QApplication.sendEvent(self, mapped_e)
            elif e.key() in [Qt.Key_G, Qt.Key_L]:
                mapped_e = QKeyEvent(e.type(),
                                     Qt.Key_Right,
                                     Qt.AltModifier,
                                     autorep=e.isAutoRepeat(),
                                     count=e.count())
                QApplication.sendEvent(self, mapped_e)
            elif e.key() in [Qt.Key_F, Qt.Key_J]:
                mapped_e = QKeyEvent(e.type(),
                                     Qt.Key_Down,
                                     Qt.KeypadModifier,
                                     autorep=e.isAutoRepeat(),
                                     count=e.count())
                QApplication.sendEvent(self, mapped_e)
            elif e.key() in [Qt.Key_D, Qt.Key_K]:
                mapped_e = QKeyEvent(e.type(),
                                     Qt.Key_Up,
                                     Qt.KeypadModifier,
                                     autorep=e.isAutoRepeat(),
                                     count=e.count())
                QApplication.sendEvent(self, mapped_e)
            elif e.key() in [Qt.Key_C, Qt.Key_N]:
                mapped_e = QKeyEvent(e.type(),
                                     Qt.Key_Left,
                                     Qt.KeypadModifier,
                                     autorep=e.isAutoRepeat(),
                                     count=e.count())
                QApplication.sendEvent(self, mapped_e)
            elif e.key() in [Qt.Key_V, Qt.Key_M]:
                mapped_e = QKeyEvent(e.type(),
                                     Qt.Key_Right,
                                     Qt.KeypadModifier,
                                     autorep=e.isAutoRepeat(),
                                     count=e.count())
                QApplication.sendEvent(self, mapped_e)

            elif e.key() in [Qt.Key_R, Qt.Key_U
                             ] and e.type() == QKeyEvent.KeyPress:
                if self.wordcheck_entry is not None:
                    self.entry_idx += 1
                    self.next_word_replace()
            elif e.key() in [Qt.Key_E, Qt.Key_I
                             ] and e.type() == QKeyEvent.KeyPress:
                if self.wordcheck_entry is not None:
                    self.entry_idx -= 1
                    self.next_word_replace()

            elif e.key() in [Qt.Key_W, Qt.Key_O
                             ] and e.type() == QKeyEvent.KeyPress:
                self.set_wordcheck_word_as_default()

            elif e.key() in [Qt.Key_A, Qt.Key_Z, Qt.Key_X]:
                if e.key() == Qt.Key_A:
                    mapped_e = QKeyEvent(e.type(),
                                         Qt.Key_Semicolon,
                                         Qt.NoModifier,
                                         text=';',
                                         autorep=e.isAutoRepeat(),
                                         count=e.count())
                    QApplication.sendEvent(self, mapped_e)
                elif e.key() == Qt.Key_Z:
                    mapped_e = QKeyEvent(e.type(),
                                         Qt.Key_Period,
                                         Qt.NoModifier,
                                         text='.',
                                         autorep=e.isAutoRepeat(),
                                         count=e.count())
                    QApplication.sendEvent(self, mapped_e)
                else:  # Key_X
                    mapped_e = QKeyEvent(e.type(),
                                         Qt.Key_Comma,
                                         Qt.NoModifier,
                                         text=',',
                                         autorep=e.isAutoRepeat(),
                                         count=e.count())
                    QApplication.sendEvent(self, mapped_e)

        elif e.modifiers() == Qt.ShiftModifier:
            if e.key() in [Qt.Key_A, Qt.Key_Z, Qt.Key_X]:
                if e.key() == Qt.Key_A:
                    mapped_e = QKeyEvent(e.type(),
                                         Qt.Key_Colon,
                                         Qt.ShiftModifier,
                                         text=':',
                                         autorep=e.isAutoRepeat(),
                                         count=e.count())
                    QApplication.sendEvent(self, mapped_e)
                elif e.key() == Qt.Key_Z:
                    mapped_e = QKeyEvent(e.type(),
                                         Qt.Key_Greater,
                                         Qt.ShiftModifier,
                                         text='>',
                                         autorep=e.isAutoRepeat(),
                                         count=e.count())
                    QApplication.sendEvent(self, mapped_e)
                else:  # Key_X
                    mapped_e = QKeyEvent(e.type(),
                                         Qt.Key_Less,
                                         Qt.ShiftModifier,
                                         text='<',
                                         autorep=e.isAutoRepeat(),
                                         count=e.count())
                    QApplication.sendEvent(self, mapped_e)