def dropEvent(self, event: QDropEvent): source = event.source() if isinstance(source, QTreeView): if isinstance(source.model(), PaPITreeProxyModel): for index in source.selectedIndexes(): plugin_info = source.model().data(index, Qt.UserRole) self.clickedFavouritePlugin.emit(plugin_info)
def dropEvent(self, event: QtGui.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: List[zlm_core.ZlmLayer] = [ self.item(row_index, 0).layer_inst 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, layer in enumerate(rows_to_move): row_index += drop_row self.insertRow(row_index) item = QtWidgets.QTableWidgetItem(layer.name) item.layer_inst = layer self.setItem(row_index, 0, item) event.accept() # for row_index in range(len(rows_to_move)): # self.item(drop_row + row_index, 0).setSelected(True) super().dropEvent(event)
def dropEvent(self, event: QDropEvent) -> None: event.accept() if isinstance(event.source(), QListWidget): item = event.source().currentItem() if isinstance(item, ToolBoxItem): obj = item.getNewCustomClass() self.scene().addItem(obj) objRect = obj.boundingRect().center() position = QPoint(event.pos().x() - objRect.x(), event.pos().y() - objRect.y()) obj.setPos(self.mapToScene(position)) elif isinstance(item, ResourcesItem): self.itemAt(event.pos()).recieveDrop(item)
def dropEvent(self, event: QDropEvent): if event.source() is not None: return # drag starts within the application mimeData = event.mimeData() if mimeData.hasUrls(): raw = mimeData.data("text/uri-list") if type(raw) == QByteArray: # Compat. Workaround #113 # As of Qt 5.3.1, QMimeData.urls() cannot read QByteArray # Firefox passes ASCII encoded escaped bytes # Chrome passes UTF-16 encoded bytes. raw = bytes(raw) try: url = raw.decode("ASCII") except UnicodeDecodeError: url = raw.decode("UTF-16LE") urls = [url] else: urls = list(map(lambda qurl: qurl.url(), mimeData.urls())) app.taskCreationAgent.createTasksAction(urls) elif mimeData.hasText(): app.taskCreationAgent.createTasksFromMimeData(mimeData) else: pass event.acceptProposedAction()
def dropEvent(self, event: QtGui.QDropEvent): source = event.source() # type: QtWidgets.QAbstractItemView if source is self: # internal move operation super(DFListView, self).dropEvent(event) pos = event.pos() dropIndex = source.indexAt(pos) source.model().internalMove( dropIndex, source.selectionModel().selectedRows(0)) else: if isinstance(source, QtWidgets.QTreeView): invalid_drops = [] valid_drops = [] for index in source.selectionModel().selectedRows( column=0): # type: QtCore.QModelIndex pointer = index.internalPointer() # type: DFReference if self.isSupported(pointer): valid_drops.append(pointer) elif isinstance(pointer, DFReference): invalid_drops.append(pointer.df.__class__.__name__) else: continue if valid_drops: self.addDataFrames(*valid_drops) if invalid_drops: fn.error_popup( "Invalid StructuredDataFrame types: \n\t" + "\n\t".join(invalid_drops) + "\n\nOnly DataFrames of the following types are allowed:\n\t" + "\n\t".join(cls.__name__ for cls in self.supportedClasses))
def dropEvent(self, event: QtGui.QDropEvent) -> None: """We got a Drop! Add them to the selection if possible. Files contain their dlkey instead of an id. Well check the events.source widget for more informations about the files, and add them only if we succed. """ mime = event.mimeData() if not mime.hasUrls(): return for url in mime.urls(): res = itemFromUrl(url) if not res: continue modul, dlkey, name = res if dlkey and modul != self.modul: continue srcWidget = event.source() if not srcWidget: # Not dragged from this application continue items = srcWidget.selectedItems() for item in items: if "dlkey" in item.entryData and dlkey == item.entryData[ "dlkey"]: self.extend([item.entryData]) break
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)): for col_index in range(self.columnCount()): self.item(drop_row + row_index, col_index).setSelected(True) super().dropEvent(event)
def dropEvent(self, drop_event: QtGui.QDropEvent): drop_event.acceptProposedAction() if drop_event.source() == self: if self._floating: self._undo_stack.push( self._scene.get_intra_move( self._floating, self.mapToScene(drop_event.pos()), )) self._floating[:] = [] elif (isinstance(drop_event.source(), self.__class__) and drop_event.source().successful_drop( drop_event, self, )): self._undo_stack.push( drop_event.source().cube_scene.get_inter_move( drop_event.source().floating, self._scene, self.mapToScene(drop_event.pos())))
def dropEvent(self, a0: QDropEvent) -> None: if a0.source() == self or self.indexTabToDrag < 0 or not isinstance( a0.source(), TabBar): a0.accept() return a0.setDropAction(Qt.MoveAction) a0.accept() insertAfter = self.tabAt(a0.pos()) try: tab = a0.source().parentWidget().widget(self.indexTabToDrag) packItem = QModelIndex(tab.packItem) index = self.parentWidget().openItemInNewTab(packItem) a0.source().tabCloseRequested.emit(self.indexTabToDrag) except AttributeError as e: print("Error occured while drop Event:", e) else: if insertAfter and insertAfter >= 0: self.moveTab(index, insertAfter + 1) TabBar.indexTabToDrag = -1
def dropEvent(self, event: QDropEvent) -> None: if self.enable_custom_drag_n_drop is True: input_dialog_text = """ Выберите одно из доступных действий + для сложения - для вычитания / для деления // для целочисленного деления * для умножения ** для возведения в степень = для замещения значения ячейки (действие по умолчанию) Для выбора действия выберите предложенное, сообщения длиной >2 символов будут отклоняться. """ action, result = QInputDialog.getText(self, "Перемещение ячейки листа", input_dialog_text) if result is None or result is False: event.ignore() return while len(action) > 2: action, result = QInputDialog.getText( self, "Перемещение ячейки листа", "Выберите одно из доступных действий", text=input_dialog_text ) if result is None or result is False: event.ignore() return event_source_table: QTableWidgetExtended = event.source() dropping_cell = event_source_table.currentItem() accepting_cell_coords = self.indexAt(event.pos()) accepting_cell = self.item(accepting_cell_coords.row(), accepting_cell_coords.column()) self.setCurrentItem(accepting_cell) if "=" in action or len(action) == 0: accepting_cell.setText(dropping_cell.text()) else: accepting_cell.setText(f"{accepting_cell.text()} {action} {dropping_cell.text()}")
def dropEvent(self, event: QDropEvent): # If drag and drop from self to self. if not event.isAccepted() and event.source() == self: # grab the row number of dragged row and its data row = self.selectedIndexes()[0].row() idx = self.cmodel.index(row, 2).data() # Get the row on which to drop dropRow = self.drop_on(event) dropIdx = self.cmodel.index(dropRow, 2).data() # If we drag from earlier row, handle index after deletion if row < dropRow: dropRow -= 1 com = self.clist.pop(row) self.clist.insert(dropRow, com) self.populateTable() # Reselect the dropped row (TODO: does this work?) self.selectRow(dropRow) # Resize the rows - they were expanding after drags for some reason # TODO: remove? self.resizeRowsToContents() else: super().dropEvent(event)
def dropEvent(self, event:QDropEvent): source = event.source()
def dropEvent(self, event: QDropEvent): source = event.source()