예제 #1
0
    def keyPressEvent(self, e: QKeyEvent):
        if self.mode == Mode.INSERT:
            if e.key() in [Qt.Key_Space, Qt.Key_Return, Qt.Key_Slash
                           ] and e.modifiers() == Qt.NoModifier:
                self.process_previous_word()
            super().keyPressEvent(e)

        elif self.mode == Mode.WORDCHECK:
            if e.modifiers() in [Qt.NoModifier, Qt.ShiftModifier]:
                self.handle_wordcheck_key_events(e)
            else:
                super().keyPressEvent(e)

        else:
            super().keyPressEvent(e)
예제 #2
0
def findScanCodeForEvent(event: QKeyEvent) -> Optional[int]:
    if event.modifiers() & Qt.KeypadModifier != 0:
        mapping = SCANCODE_MAPPING_NUMPAD
    else:
        mapping = SCANCODE_MAPPING

    key = event.key()
    return mapping.get(key, None)
 def keyPressEvent(self, arg__1: QKeyEvent):
     # Shift+Enter triggers find previous, if the corresponding btn is enabled.
     if (arg__1.key() in [Qt.Key_Return, Qt.Key_Enter]
             and arg__1.modifiers() == Qt.ShiftModifier
             and self.find_prev_btn.isEnabled()):
         self.prev()
     else:
         super().keyPressEvent(arg__1)
예제 #4
0
 def keyReleaseEvent(self, e: QKeyEvent):
     if self.mode == Mode.WORDCHECK:
         if e.modifiers() in [Qt.NoModifier, Qt.ShiftModifier]:
             self.handle_wordcheck_key_events(e)
         else:
             super().keyReleaseEvent(e)
     else:
         super().keyReleaseEvent(e)
예제 #5
0
파일: searchedit.py 프로젝트: czeppi/cc-pim
    def keyPressEvent(self, key_event: QKeyEvent) -> None:
        if self.completer and self.completer.popup().isVisible():
            # The following keys are forwarded by the completer to the widget
            key = key_event.key()
            if key in (Qt.Key_Enter, Qt.Key_Return, Qt.Key_Escape, Qt.Key_Tab,
                       Qt.Key_Backtab):
                key_event.ignore()
                return  # let the completer do default behavior

        is_ctrl_modifier = (key_event.modifiers() & Qt.ControlModifier) != 0
        is_shift_modifier = (key_event.modifiers() & Qt.ShiftModifier) != 0
        ctrl_or_shift = is_ctrl_modifier or is_shift_modifier

        is_shortcut = is_ctrl_modifier and key_event.key(
        ) == Qt.Key_E  # CTRL+E
        if not self.completer or not is_shortcut:  # do not process the shortcut when we have a completer
            QLineEdit.keyPressEvent(self, key_event)

        if not self.completer or ctrl_or_shift and key_event.text() == '':
            return

        eow = "~!@#$%^&*()_+{}|:\"<>?,./;'[]\\-="  # end of word
        has_modifier = (key_event.modifiers() !=
                        Qt.NoModifier) and not ctrl_or_shift
        completion_prefix = self.text_under_cursor()

        if not is_shortcut:
            event_text = key_event.text()
            if has_modifier or not event_text or len(
                    completion_prefix) < 1 or event_text[-1] in eow:
                self.completer.popup().hide()
                return

        if completion_prefix != self.completer.completionPrefix():
            self.completer.setCompletionPrefix(completion_prefix)
            self.completer.popup().setCurrentIndex(
                self.completer.completionModel().index(0, 0))

        cr = self.cursorRect()
        cr.setWidth(
            self.completer.popup().sizeHintForColumn(0) +
            self.completer.popup().verticalScrollBar().sizeHint().width())
        self.completer.complete(cr)  # popup it up!
예제 #6
0
 def keyPressEvent(self, event: QKeyEvent):
     if event.key() == Qt.Key_F and (event.modifiers()
                                     & Qt.ControlModifier):
         self.find_key()
     if event.key() == Qt.Key_Escape:
         if self.searchTxtBx is not None:
             self.searchTxtBx.hide()
             self.searchTxtBx = None
             self.clear_format()
     super(Editor, self).keyPressEvent(event)
예제 #7
0
 def keyPressEvent(self, event: QtGui.QKeyEvent):
     if event.key() == Qt.Key_Backspace:
         self.setText("--")
         return
     sequence = []
     for modifier, text in modmap.items():
         if event.modifiers() & modifier:
             sequence.append(text)
     if Qt.Key_A <= event.key() <= Qt.Key_Z:
         sequence.append(chr(event.key()))
     self.setText("+".join(sequence))
예제 #8
0
    def keyPressEvent(self, event: QtGui.QKeyEvent) -> None:
        """
        Allow for searching for a node
        """
        key = event.key()
        modifiers = event.modifiers()

        if key == QtCore.Qt.Key_F and modifiers & QtCore.Qt.ControlModifier:
            # User would like to search
            search_dialog = QDataDepGraphSearch(self, self.graph_widget)
            search_dialog.setModal(False)
            search_dialog.show()
        else:
            super().keyPressEvent(event)
예제 #9
0
    def button_signal_for_key_event(self, event: QtGui.QKeyEvent,
                                    signal_name: str):
        if event.isAutoRepeat():
            return None

        button = None

        if event.key() == Qt.Key_Up:
            if event.modifiers() == Qt.ShiftModifier:
                button = self.tele_fast
            elif event.modifiers() == Qt.NoModifier:
                button = self.tele_normal
        elif event.key() == Qt.Key_Down:
            if event.modifiers() == Qt.ShiftModifier:
                button = self.wide_fast
            elif event.modifiers() == Qt.NoModifier:
                button = self.wide_normal
        elif event.key() == Qt.Key_End and event.modifiers() == Qt.NoModifier:
            button = self.zoomstop

        if button is None:
            return

        getattr(button, signal_name).emit()
예제 #10
0
 def keyPressEvent(self, event: QKeyEvent) -> None:
     if not self._chartIsSet:
         return
     if event.key() == Qt.Key_Left:
         self.chart().scroll(-10, 0)
     elif event.key() == Qt.Key_Right:
         self.chart().scroll(+10, 0)
     elif event.key() == Qt.Key_Up:
         self.chart().scroll(0, +10)
     elif event.key() == Qt.Key_Down:
         self.chart().scroll(0, -10)
     elif self._keySeqEnabled and event.key(
     ) == Qt.Key_R and event.modifiers() & Qt.ControlModifier:
         self.chart().zoomReset()
     else:
         super().keyPressEvent(event)
예제 #11
0
    def keyPressEvent(self, event: QKeyEvent):

        if event.key() in (Qt.Key_Enter, Qt.Key_Return):
            if self.commandList[
                    -1] != self.userTextEntry and self.userTextEntry != "":
                self.commandList.append(self.userTextEntry)

            self.length = len(self.userTextEntry + self.__line_end())
            self.process.writeData(self.userTextEntry + self.__line_end(),
                                   self.length)
            self.userTextEntry = ""

        elif event.key() == Qt.Key_Backspace:
            if self.userTextEntry == "":
                return

            else:
                self.userTextEntry = self.userTextEntry[:-1]
                super().keyPressEvent(event)

        elif event.key() == Qt.Key_Up:
            if -len(self.commandList) < self.history:
                self.history -= 1
                print(self.commandList[self.history])
            return

        elif event.key() == Qt.Key_Down:
            if self.history < -1:
                self.history += 1
                print(self.commandList[self.history])
            return

        elif event.key() == Qt.Key_Delete:
            return

        elif event.modifiers() == Qt.ControlModifier:
            super().keyPressEvent(event)

        else:
            super().keyPressEvent(event)
            self.userTextEntry += event.text()
예제 #12
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)
    def keyPressEvent(self, event: QKeyEvent):
        super().keyPressEvent(event)

        # Delete Key:
        if (event.key() == Qt.Key_Delete):
            current_widget = QApplication.focusWidget()
            if (current_widget == self.ui.tableWidget_fixedSpent
                    or current_widget == self.ui.tableWidget_income
                    or current_widget == self.ui.tableWidget_spent
                    or current_widget == self.ui.tableWidget_values
                    or current_widget == self.ui.tableWidget_sum):
                row_count = current_widget.rowCount()
                column_count = current_widget.columnCount()
                for item in current_widget.selectedItems():
                    row = item.row()
                    column = item.column()
                    if (row > -1 and row < row_count and column > -1
                            and column < column_count):
                        current_widget.item(row, column).setData(
                            Qt.DisplayRole, None)

        # Ctrl + c:
        if (event.key() == Qt.Key_C
                and event.modifiers() == Qt.ControlModifier):
            current_widget = QApplication.focusWidget()
            if (current_widget == self.ui.tableWidget_fixedSpent
                    or current_widget == self.ui.tableWidget_income
                    or current_widget == self.ui.tableWidget_spent
                    or current_widget == self.ui.tableWidget_values
                    or current_widget == self.ui.tableWidget_sum):
                items = current_widget.selectedItems()
                text = ""
                previous_row = -1
                for item in items:
                    current_row = item.row()
                    if (previous_row == -1):
                        pass
                    elif (current_row == previous_row):
                        text += "\t"
                    elif (current_row == previous_row + 1):
                        text += "\n"

                    if (item.data(Qt.DisplayRole) != None):
                        text += str(item.data(Qt.DisplayRole))
                    previous_row = item.row()

                QApplication.clipboard().setText(text)

        # Ctrl + v:
        if (event.key() == Qt.Key_V
                and event.modifiers() == Qt.ControlModifier):
            current_widget = QApplication.focusWidget()
            if (current_widget == self.ui.tableWidget_fixedSpent
                    or current_widget == self.ui.tableWidget_income
                    or current_widget == self.ui.tableWidget_spent
                    or current_widget == self.ui.tableWidget_values
                    or current_widget == self.ui.tableWidget_sum):
                column_count = current_widget.columnCount()
                row_count = current_widget.rowCount()
                text = QApplication.clipboard().text()
                current_row = current_widget.currentRow()
                initial_column = current_widget.currentColumn()
                lines = text.split('\n')
                text_all_lines = []
                for line in lines:
                    cells = line.split('\t')
                    text_all_lines.append(cells)
                for line in text_all_lines:
                    if (current_row >= current_widget.rowCount()
                        ):  # check if a new line is needed
                        self.add_one_empty_lines(current_widget)
                    column = initial_column
                    for cell in line:
                        if column < column_count:
                            if (column == 3):  # check if category exists
                                is_in_spent_category = False
                                correct_name = ""  # correct name with Upper cases
                                for category in self.__spent_categories:
                                    if cell.lower() == category.name.lower():
                                        is_in_spent_category = True
                                        correct_name = category.name
                                        break
                                if (is_in_spent_category):
                                    current_widget.item(current_row,
                                                        column).setData(
                                                            Qt.DisplayRole,
                                                            correct_name)
                            else:
                                current_widget.item(current_row,
                                                    column).setData(
                                                        Qt.DisplayRole, cell)
                        column += 1

                    current_row += 1

        # Insert
        if (event.key() == Qt.Key_Insert):
            current_widget = QApplication.focusWidget()
            if (current_widget == self.ui.tableWidget_fixedSpent
                    or current_widget == self.ui.tableWidget_income
                    or current_widget == self.ui.tableWidget_spent):
                self.add_one_empty_lines(current_widget)
예제 #14
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)
예제 #15
0
 def keyReleaseEvent(self, event: QKeyEvent):
     print(event.modifiers(), event.key(), event.nativeScanCode(), event.nativeVirtualKey(), event.text())
     self.renderer.sendEvent(event)