Esempio n. 1
0
 def handle_mouse_press_event(self, ev):
     if QApplication.keyboardModifiers(
     ) & Qt.KeyboardModifier.ShiftModifier:
         # Shift-Click in QListView is broken. It selects extra items in
         # various circumstances, for example, click on some item in the
         # middle of a row then click on an item in the next row, all items
         # in the first row will be selected instead of only items after the
         # middle item.
         index = self.indexAt(ev.pos())
         if not index.isValid():
             return
         ci = self.currentIndex()
         sm = self.selectionModel()
         sm.setCurrentIndex(index,
                            QItemSelectionModel.SelectionFlag.NoUpdate)
         if not ci.isValid():
             return
         if not sm.hasSelection():
             sm.select(index,
                       QItemSelectionModel.SelectionFlag.ClearAndSelect)
             return
         cr = ci.row()
         tgt = index.row()
         top = self.model().index(min(cr, tgt), 0)
         bottom = self.model().index(max(cr, tgt), 0)
         sm.select(QItemSelection(top, bottom),
                   QItemSelectionModel.SelectionFlag.Select)
     else:
         return QListView.mousePressEvent(self, ev)
Esempio n. 2
0
 def eventFilter(self, obj, ev):
     if ev.type() == QEvent.Type.MouseButtonPress and ev.button() == Qt.MouseButton.LeftButton:
         mods = QApplication.keyboardModifiers()
         if mods & Qt.KeyboardModifier.ControlModifier or mods & Qt.KeyboardModifier.ShiftModifier:
             self.show_marked()
             return True
     return False
Esempio n. 3
0
    def check_for_plugin_updates(self):
        # Get the user to choose a plugin to install
        initial_filter = FILTER_UPDATE_AVAILABLE
        mods = QApplication.keyboardModifiers()
        if mods & Qt.KeyboardModifier.ControlModifier or mods & Qt.KeyboardModifier.ShiftModifier:
            initial_filter = FILTER_ALL

        d = PluginUpdaterDialog(self.gui, initial_filter=initial_filter)
        d.exec()
        if d.do_restart:
            self.gui.quit(restart=True)
Esempio n. 4
0
def send_click(view,
               pos,
               button=Qt.MouseButton.LeftButton,
               double_click=False):
    mods = QApplication.keyboardModifiers()
    if double_click:
        ev = QMouseEvent(QEvent.Type.MouseButtonDblClick, pos, button, button,
                         mods)
        QApplication.postEvent(view.viewport(), ev)
        return
    ev = QMouseEvent(QEvent.Type.MouseButtonPress, pos, button, button, mods)
    QApplication.postEvent(view.viewport(), ev)
    ev = QMouseEvent(QEvent.Type.MouseButtonRelease, pos, button, button, mods)
    QApplication.postEvent(view.viewport(), ev)
Esempio n. 5
0
 def char_selected(self, c):
     if QApplication.keyboardModifiers() & Qt.Modifier.CTRL:
         self.hide()
     if self.parent() is None or self.parent().focusWidget() is None:
         QApplication.clipboard().setText(c)
         return
     self.parent().activateWindow()
     w = self.parent().focusWidget()
     e = QInputMethodEvent('', [])
     e.setCommitString(c)
     if hasattr(w, 'no_popup'):
         oval = w.no_popup
         w.no_popup = True
     QApplication.sendEvent(w, e)
     if hasattr(w, 'no_popup'):
         w.no_popup = oval
Esempio n. 6
0
 def select_book_and_qv(self, row, column):
     '''
     row and column both refer the qv table. In particular, column is not
     the logical column in the book list.
     '''
     item = self.books_table.item(row, column)
     if item is None:
         return
     book_id = int(self.books_table.item(row, column).data(Qt.ItemDataRole.UserRole))
     if not self.book_displayed_in_library_view(book_id):
         self.book_not_in_view_error()
         return
     key = self.column_order[column]
     if QApplication.keyboardModifiers() in (Qt.KeyboardModifier.ControlModifier, Qt.KeyboardModifier.ShiftModifier):
         self.edit_metadata(book_id)
     else:
         self.view.select_cell(self.db.data.id_to_index(book_id),
                               self.view.column_map.index(key))
Esempio n. 7
0
def check_key_modifier(which_modifier):
    v = int(QApplication.keyboardModifiers()
            & (Qt.KeyboardModifier.ControlModifier +
               Qt.KeyboardModifier.ShiftModifier))
    return v == which_modifier
Esempio n. 8
0
def event_has_mods(self, event=None):
    mods = event.modifiers() if event is not None else \
            QApplication.keyboardModifiers()
    return mods & Qt.KeyboardModifier.ControlModifier or mods & Qt.KeyboardModifier.ShiftModifier