def dropEvent(self, e: QDropEvent): """Handle Drag and Drop events. The :py:class:`QDropEvent` performs the actual drop operation. We support the following operations: if an Image is dropped, we will use it as input image for the :py:class:`Toolbox`. """ mimeData = e.mimeData() if mimeData.hasUrls() and self._toolbox: # 1. We just consider the first URL, even if multiple URLs # are provided. url = mimeData.urls()[0] LOG.info("Drag and dropped %d URLs, took first: %s", len(mimeData.urls()), url) # 2. Convert the URL to a local filename filename = url.toLocalFile() description = f"Dropped in image ({filename})" LOG.info("Converted URL to local filename: '%s'", filename) # 3. Set this file as input image for the toolbox. self._toolbox.set_input_from_file(filename, description=description) # 4. Mark the Drop action as accepted (we actually perform # a CopyAction, no matter what was proposed) if e.proposedAction() == Qt.CopyAction: e.acceptProposedAction() else: # If you set a drop action that is not one of the # possible actions, the drag and drop operation will # default to a copy operation. e.setDropAction(Qt.CopyAction) e.accept()
def dropEvent(self, event: QDropEvent) -> None: mimeData = event.mimeData() if self.isMimeAccepted(mimeData): self.setDataFromMime(mimeData) event.acceptProposedAction() else: super().dropEvent(event)
def table_drop_event(self, event: QDropEvent): """Processes the mimedata dropped on the tableview. Information ----------- If the mimedata is not a list of urls, rejects.\n Determines whether the url is a file or folder, and then adds to the table. Parameters ---------- event : QDropEvent - event called when data is dropped. """ files = [] folders = [] for url in event.mimeData().urls(): if url.toLocalFile().endswith(".mp3"): event.acceptProposedAction() files.append(url.toLocalFile()) elif os.path.isdir(url.toLocalFile()): event.acceptProposedAction() folders.append(url.toLocalFile()) if files: self.add_files(files) if folders: self.add_folders(folders)
def test_signal_view(self): self.add_signal_to_form("esaver.complex16s") signal = self.form.signal_tab_controller.signal_frames[0].signal tree_view = self.dialog.ui.treeViewSignals tree_model = tree_view.model() item = tree_model.rootItem.children[0].children[0] index = tree_model.createIndex(0, 0, item) rect = tree_view.visualRect(index) QTest.mousePress(tree_view.viewport(), Qt.LeftButton, pos=rect.center()) mime_data = tree_model.mimeData([index]) drag_drop = QDropEvent(rect.center(), Qt.CopyAction | Qt.MoveAction, mime_data, Qt.LeftButton, Qt.NoModifier) drag_drop.acceptProposedAction() self.dialog.ui.gVOriginalSignal.dropEvent(drag_drop) self.assertEqual(self.dialog.ui.gVOriginalSignal.sceneRect().width(), signal.num_samples) self.dialog.ui.cbShowDataBitsOnly.click() self.dialog.ui.chkBoxLockSIV.click() self.assertEqual(int(self.dialog.ui.gVOriginalSignal.view_rect().width()), int(self.dialog.ui.gVModulated.view_rect().width())) freq = self.dialog.ui.doubleSpinBoxCarrierFreq.value() self.dialog.ui.btnAutoDetect.click() self.assertNotEqual(freq, self.dialog.ui.doubleSpinBoxCarrierFreq.value()) self.dialog.ui.comboBoxModulationType.setCurrentText("Frequency Shift Keying (FSK)") self.dialog.ui.btnAutoDetect.click() self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "1") self.dialog.ui.btnSearchNext.click() self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "2") self.dialog.ui.btnSearchPrev.click() self.assertEqual(self.dialog.ui.lCurrentSearchResult.text(), "1")
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): pos: QtCore.QPoint = event.pos() drop_label = QtWidgets.QLabel(parent=self) drop_label.setText("hey") drop_label.setGeometry(pos.x(), pos.y(), 50, 20) drop_label.show() event.acceptProposedAction()
def dragEnterEvent(self, event: QDropEvent): if event.mimeData().hasUrls(): event.acceptProposedAction() self.setFrameStyle(QFrame.StyledPanel | QFrame.Sunken) self.setBackgroundRole(QPalette.Light) else: event.ignore()
def dropEvent(self, e: QDropEvent): if e.dropAction() != Qt.CopyAction: e.ignore() e.acceptProposedAction() self.stopAnimation() files = [url.toLocalFile() for url in e.mimeData().urls()] self._dragInProgress = False self.update() self.filesDropped.emit(files)
def add_all_signals_to_simulator(self): assert isinstance(self.form, MainController) sim_frame = self.form.simulator_tab_controller sim_frame.ui.treeProtocols.selectAll() self.assertGreater(len(sim_frame.ui.treeProtocols.selectedIndexes()), 0) mimedata = sim_frame.tree_model.mimeData(sim_frame.ui.treeProtocols.selectedIndexes()) drop_event = QDropEvent(sim_frame.ui.gvSimulator.rect().center(), Qt.CopyAction | Qt.MoveAction, mimedata, Qt.LeftButton, Qt.NoModifier) drop_event.acceptProposedAction() sim_frame.ui.gvSimulator.dropEvent(drop_event)
def add_all_signals_to_simulator(self): assert isinstance(self.form, MainController) sim_frame = self.form.simulator_tab_controller sim_frame.ui.treeProtocols.selectAll() self.assertGreater(len(sim_frame.ui.treeProtocols.selectedIndexes()), 0) mimedata = sim_frame.tree_model.mimeData(sim_frame.ui.treeProtocols.selectedIndexes()) drop_event = QDropEvent(sim_frame.ui.gvSimulator.rect().center(), Qt.CopyAction | Qt.MoveAction, mimedata, Qt.LeftButton, Qt.NoModifier) drop_event.acceptProposedAction() sim_frame.ui.gvSimulator.dropEvent(drop_event)
def dropEvent(self, event: QDropEvent): if event.mimeData().hasFormat('application/x-simitemdata'): item_data = event.mimeData().data('application/x-simitemdata') data_stream = QDataStream(item_data, QIODevice.ReadOnly) s = data_stream.readQString() self.env.add_element_by_name(s, event.pos().x(), event.pos().y()) self.update() event.acceptProposedAction() else: event.ignore()
def dropEvent(self, event: QDropEvent): if event.mimeData().hasText(): if self.startRow != self.targetRow - 1 and self.startRow != self.targetRow: print('move ', self.startRow, ' to ', self.targetRow) if self.targetRow > self.startRow: self.model.moveProcess(self.startRow, self.targetRow - 1) else: self.model.moveProcess(self.startRow, self.targetRow) event.acceptProposedAction() return event.ignore() QTableView.dropEvent(self, event)
def dropEvent(self, event: QtGui.QDropEvent) -> None: event.acceptProposedAction() target_row = self.rowAt(event.pos().y()) if target_row < 0: target_row = self.model().rowCount() - 1 if self.dragging_index != target_row: self.model().moveRow( QModelIndex(), self.dragging_index, QModelIndex(), target_row if target_row < self.dragging_index else target_row + 1, ) self.dragging_index = None
def dropEvent(self, event: QDropEvent): data: str = event.mimeData().text() if data.isdigit(): container_id = int(event.mimeData().text()) drop_container = containers_service.getContainer(container_id) drop_container.group = self.group drop_container.save() self.move_app.emit(drop_container, self.ui) else: group_id = int(data.split('Group:')[1]) drop_group = group_service.getGroup(group_id) drop_group.order = group_service.getNextOrder(self.group) drop_group.save() self.move_group.emit(drop_group, self.ui) event.acceptProposedAction() self.cleanDraggingEffects()
def dropEvent(self, event: QtGui.QDropEvent) -> None: if event.mimeData().hasUrls(): url_list = event.mimeData().urls() real_list = list() self.ui.textEdit.clear() for url in url_list: file_info = QFileInfo(url.toLocalFile()) full_path = file_info.filePath() if os.path.isfile(full_path): real_list.append(full_path) if os.path.isdir(full_path): real_list.extend(self.__get_files(full_path)) for url in real_list: with open(url, 'rb') as fp: file_bytes = fp.read() self.run_ocr_async(file_bytes) event.acceptProposedAction()
def test_file_dd_filter_drop_event(qtbot): widget = QLineEdit() qtbot.addWidget(widget) mime = QMimeData() mime.setUrls([ QUrl("file:///path/to/file"), ]) action = Qt.CopyAction | Qt.MoveAction point = widget.rect().center() event = QDropEvent(point, action, mime, Qt.LeftButton, Qt.NoModifier) event.acceptProposedAction() event_filter = events.FileDragAndDropFilter() assert event_filter.eventFilter(widget, event) assert widget.text() == "/path/to/file"
def dropEvent(self, event: QDropEvent): if event.mimeData().hasText(): data: str = event.mimeData().text() if not data.isdigit() or int(data) == self.container.id: return else: return container_id = int(event.mimeData().text()) drop_container = containers_service.getContainer(container_id) loc = self.getDraggedLocation(event.pos()) drop_container.order = containers_service.getNextOrder(self.container) drop_container.group = self.container.group drop_container.save() if loc == -1: self.move_app.emit(drop_container, self.ui) else: self.new_group.emit(drop_container, self.ui) event.acceptProposedAction() self.cleanDraggingEffects()
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, event: QDropEvent): mime_data = event.mimeData() if mime_data.hasUrls(): urls = [] for url in mime_data.urls(): file_path = Path(url.toLocalFile()) if not file_path.is_file(): continue try: relative_path = file_path.relative_to(os.getcwd()) urls.append(str(relative_path)) except ValueError: QMessageBox.information( self, "Out of scope", "Can not add file which is outside of bijibiji's " "home.\n", QMessageBox.Close) break if urls: self.changed.emit(urls) else: self.setText("<Not File>\n" "<drop file(s) here>") self.setBackgroundRole(QPalette.Dark) event.acceptProposedAction()
def dragEnterEvent(self, event: QDropEvent): self.setBackgroundRole(QPalette.Highlight) event.acceptProposedAction() self.setText("<drop here>")
def dragMoveEvent(self, event: QDropEvent): event.acceptProposedAction()
def dragMoveEvent(self, event: QDropEvent): if event.mimeData().hasUrls(): event.acceptProposedAction() else: event.ignore()