Example #1
0
    def keyPressEvent(self, e: QtCore.QEvent):
        if e.key() == 16777223:  # delete
            if len(self.text()):
                self.last_text = self.text()

            self.setText("")

        elif e.key() == 90 and e.modifiers(
        ) == QtCore.Qt.ControlModifier:  # ctrl+z
            if self.last_text:
                self.setText(self.last_text)
                self.last_text = None

        else:
            e.ignore()
Example #2
0
    def keyPressEvent(self, event: QtCore.QEvent):
        if event.key() == 90 and event.modifiers(
        ) == QtCore.Qt.ControlModifier:
            if self.deleted_domain:
                domain = self.deleted_domain
                self.addDomain(
                    domain[1], domain[0], domain[2]
                )  # addDomain(name, id_)  /  domain = (id_, name, indexAt)

                if hasattr(self.parent.window, "config"):
                    self.parent.window.config.write("peers",
                                                    (domain[2],
                                                     (domain[0], domain[1])))

                self.deleted_domain = None
        else:
            event.ignore()
    def keyPressEvent(self, event: QtCore.QEvent):
        if event.key() == 90 and event.modifiers(
        ) == QtCore.Qt.ControlModifier:
            if self.deleted_peer:
                peer = self.deleted_peer
                self.addPeer(
                    peer[1], peer[0], peer[2]
                )  # addPeer(name, id_)  /  peer = (id_, name, indexAt)

                if hasattr(self.parent.window, "config"):
                    self.parent.window.config.write("peers",
                                                    (peer[2],
                                                     (peer[0], peer[1])))

                self.deleted_peer = None
        else:
            event.ignore()
Example #4
0
 def eventFilter(self, object: object, event: QEvent) -> bool:
     """
     """
     # print(f"debug: QDebug[{type(self).__name__}].eventFilter: "
     #       f"event={type(event)}, object={type(object)}, "
     #       f"type={event.type()}")
     if event.type() == QEvent.MouseButtonPress:
         # event is of type QMouseEvent
         modifiers = event.modifiers()
         if modifiers & Qt.ControlModifier:
             button = event.button()
             print(f"debug: QDebug[{type(self).__name__}].eventFilter: "
                   f"object={type(object).__name__}, button={button}, "
                   f"shift={bool(modifiers & Qt.ShiftModifier)}, "
                   f"control={bool(modifiers & Qt.ControlModifier)}"
                   f"alt={bool(modifiers & Qt.AltModifier)}")
             self.debug()
     return False
Example #5
0
    def eventFilter(self, source: QWidget, event: QEvent):
        """Quotes editor content for <Ctrl>+<Enter> and <Ctrl>+<Return>

        Overrides SpellTextEdit default shortcut. Counts as undoable action.

        :param source: Source widget of event
        :param event: Event to be filtered

        """

        if event.type() == QEvent.ShortcutOverride \
           and event.modifiers() == Qt.ControlModifier \
           and source == self \
           and event.key() in (Qt.Key_Return, Qt.Key_Enter):

            code = quote(source.toPlainText())
            index = self.main_window.grid.currentIndex()
            description = "Quote code for cell {}".format(index)
            cmd = commands.SetCellCode(code, self.main_window.grid.model,
                                       index, description)
            self.main_window.undo_stack.push(cmd)

        return QWidget.eventFilter(self, source, event)
Example #6
0
 def keyPressEvent(self, event: QtCore.QEvent):
     if event.key() == 90 and event.modifiers(
     ) == QtCore.Qt.ControlModifier:
         self.domain_list.keyPressEvent(event)
     else:
         super().keyPressEvent(event)
Example #7
0
 def event(self, e: QEvent):
     if e.type() == QEvent.KeyPress:
         if e.modifiers() == Qt.ControlModifier:
             return False
     return super(ListView, self).event(e)
 def eventFilter(self, obj: QObject, event: QEvent) -> bool:
     if isinstance(event, QKeyEvent):
         key = QKeySequence(int(event.modifiers())
                            | event.key()).toString().lower()
         if action := self._strShortcutToAction.get(key):
             action.trigger()
Example #9
0
    def eventFilter(
        self,

        source: QWidget,
        ev: QEvent,

    ) -> None:
        '''
        Qt global event filter: return `False` to pass through and `True`
        to filter event out.

        https://doc.qt.io/qt-5/qobject.html#eventFilter
        https://doc.qt.io/qtforpython/overviews/eventsandfilters.html#event-filters

        '''
        etype = ev.type()
        # TODO: turn this on and see what we can filter by default (such
        # as mouseWheelEvent).
        # print(f'ev: {ev}')

        if etype not in self._event_types:
            return False

        # XXX: we unpack here because apparently doing it
        # after pop from the mem chan isn't showing the same
        # event object? no clue wtf is going on there, likely
        # something to do with Qt internals and calling the
        # parent handler?

        if etype in {QEvent.KeyPress, QEvent.KeyRelease}:

            msg = KeyboardMsg(
                event=ev,
                etype=etype,
                key=ev.key(),
                mods=ev.modifiers(),
                txt=ev.text(),
            )

            # TODO: is there a global setting for this?
            if ev.isAutoRepeat() and self._filter_auto_repeats:
                ev.ignore()
                # filter out this event and stop it's processing
                # https://doc.qt.io/qt-5/qobject.html#installEventFilter
                return True

            # NOTE: the event object instance coming out
            # the other side is mutated since Qt resumes event
            # processing **before** running a ``trio`` guest mode
            # tick, thus special handling or copying must be done.

        elif etype in MOUSE_EVENTS:
            # print('f mouse event: {ev}')
            msg = MouseMsg(
                event=ev,
                etype=etype,
                button=ev.button(),
            )

        else:
            msg = ev

        # send event-msg to async handler
        self._send_chan.send_nowait(msg)

        # **do not** filter out this event
        # and instead forward to the source widget
        # https://doc.qt.io/qt-5/qobject.html#installEventFilter
        return False