def dropEvent(self, event: QDropEvent) -> None: """ If the user drops an activity into the activity parameters table read the relevant data from the database and generate a new row. Also, create a warning if the activity is from a read-only database """ db_table = event.source() if project_settings.settings["read-only-databases"].get( db_table.database_name, True): simple_warning_box( self, "Not allowed", "Cannot set activity parameters on read-only databases") return keys = [db_table.get_key(i) for i in db_table.selectedIndexes()] event.accept() # Block signals from `signals` while iterating through dropped keys. signals.blockSignals(True) for key in keys: act = bw.get_activity(key) if act.get("type", "process") != "process": simple_warning_box( self, "Not allowed", "Activity must be 'process' type, '{}' is type '{}'.". format(act.get("name"), act.get("type"))) continue self.add_parameter(key) signals.blockSignals(False) signals.parameters_changed.emit()
def dropEvent(self, event: QtGui.QDropEvent): if event.mimeData().hasText(): mime = event.mimeData() transectData = json.loads(mime.text()) transect = Transect(transectData["name"], transectData["numPhotos"]) if self.contains(transect): QtWidgets.QMessageBox.warning( self, "ImageWAO", f"Cannot move transect to this person because they already own the transect. {transect}", QtWidgets.QMessageBox.Ok, ) event.ignore() else: dragTransect = self.addTransect(transect) dragTransect.setBackgroundColor( QtGui.QColor(transectData["color"])) self._sortTransects() if event.source() in self.children(): event.setDropAction(QtCore.Qt.MoveAction) else: event.setDropAction(QtCore.Qt.MoveAction) event.accept() self.contentsChanged.emit() else: event.ignore()
def dropEvent(self, event: QDropEvent): if not event.isAccepted() and event.source() == self: drop_row = self.drop_on(event) rows = sorted(set(item.row() for item in self.selectedItems())) rows_to_move = [[ QTableWidgetItem(self.item(row_index, column_index)) for column_index in range(self.columnCount()) ] for row_index in rows] for row_index in reversed(rows): self.removeRow(row_index) if row_index < drop_row: drop_row -= 1 for row_index, data in enumerate(rows_to_move): row_index += drop_row self.insertRow(row_index) for column_index, column_data in enumerate(data): self.setItem(row_index, column_index, column_data) event.accept() for row_index in range(len(rows_to_move)): self.item(drop_row + row_index, 0).setSelected(True) self.item(drop_row + row_index, 1).setSelected(True) super().dropEvent(event) self.dropSignal.emit([self.objectName()])
def dropEvent(self, e): # Getting the event source button = QDropEvent.source(e) # Calculating the new coordinates new_x = e.pos().x() - button.getCursorX() new_y = e.pos().y() - button.getCursorY() # Moving the button if it is still in frame if new_x > 350 and new_y > 120 and new_x < 1100 and new_y < 640: position = QPoint(new_x, new_y) button.move(position) e.setDropAction(Qt.MoveAction) e.accept()
def drop_event(self, e: QDropEvent): mime: QMimeData = e.mimeData() src = e.source() # -- File drop -- if mime.hasUrls(): destination_index = self.view.indexAt(e.pos()) for url in mime.urls(): local_path = Path(url.toLocalFile()) if not path_exists(local_path): continue self.file_drop(local_path, destination_index) e.accept() return # --- Internal View Drops --- if not isinstance(src, self.view.__class__): e.ignore() return e.setDropAction(Qt.MoveAction) if src is not self.view: e.setDropAction(Qt.CopyAction) if e.keyboardModifiers() == Qt.ShiftModifier: e.setDropAction(Qt.CopyAction) # -- Copy drop -- if e.dropAction() is Qt.CopyAction: destination_index = self.view.indexAt(e.pos()) self.copy_drop(src, destination_index) e.accept() # -- Drag move -- if e.dropAction() is Qt.MoveAction: destination_index = self.view.indexAt(e.pos()) self.move_drop(destination_index) # Ignore default view behaviour e.ignore()
def dropEvent(self, event: QtGui.QDropEvent) -> None: # pragma: no cover dest = self.tabAt(event.pos()) src, ok = event.mimeData().data("application/x-pew2tabbar").toInt() if ok and event.source() == self: self.moveTab(src, dest) event.acceptProposedAction() elif ok and isinstance(event.source(), ViewTabBar): text = event.source().tabText(src) widget = event.source().view.stack.widget(src) event.source().view.removeTab(src) index = self.view.insertTab(dest, text, widget) self.setCurrentIndex(index) widget.activate() event.acceptProposedAction() else: event.rejectProposedAction()