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 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): self.drag_active = False row = self.rowAt(event.pos().y()) index = self.model().createIndex(row, 0) # this always get the default 0 column index rect = self.visualRect(index) drop_indicator_position = self.position(event.pos(), rect) if row == -1: row = self.model().row_count - 1 elif drop_indicator_position == self.BelowItem or drop_indicator_position == self.OnItem: row += 1 self.model().dropped_row = row super().dropEvent(event)
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: QDropEvent): """custom drop event to prevent reparenting """ # data = event.mimeData() # if data.hasFormat('application/x-qabstractitemmodeldatalist'): # the_bytearray = data.data('application/x-qabstractitemmodeldatalist') # data_item = self.decodeMimeData(the_bytearray) # print("got a drop event", data_item) # item Drop above pos = event.pos() dest_item = self.itemAt(pos) if dest_item is None: return dest_parent = dest_item.parent() selected_items = self.selectedItems() for x in selected_items: if x.parent() != dest_parent: return res = QTreeWidget.dropEvent(self, event) if isinstance(dest_item, OutlineVirtualHelixItem): part = dest_item.part() vhi_list = [dest_parent.child(i) for i in range(dest_parent.childCount())] part.setImportedVHelixOrder([vhi.idNum() for vhi in vhi_list], check_batch=False)
def drag_handler(self, event: QDropEvent, drop: bool=False): if event.mimeData().hasUrls(): event.setDropAction(Qt.CopyAction) event.accept() if drop: self.files_dropped.emit([url.toLocalFile() for url in event.mimeData().urls()]) else: event.ignore()
def dropEvent(self, event: QDropEvent): super().dropEvent(event) if self.count() > 0: item = self.itemAt(event.pos()) if item is not None: index = self.indexFromItem(item).row() self.setCurrentRow(index) else: self.setCurrentRow(self.count()-1)
def dropEvent(self, event: QDropEvent): items = [item for item in self.items(event.scenePos()) if isinstance(item, GraphicsItem) and item.acceptDrops()] item = None if len(items) == 0 else items[0] if len(event.mimeData().urls()) > 0: self.files_dropped.emit(event.mimeData().urls()) indexes = list(event.mimeData().text().split("/")[:-1]) group_nodes = [] file_nodes = [] for index in indexes: try: row, column, parent = map(int, index.split(",")) if parent == -1: parent = self.tree_root_item else: parent = self.tree_root_item.child(parent) node = parent.child(row) if node.is_group: group_nodes.append(node) else: file_nodes.append(node) except ValueError: continue # Which Nodes to add? nodes_to_add = [] """:type: list of ProtocolTreeItem """ for group_node in group_nodes: nodes_to_add.extend(group_node.children) nodes_to_add.extend([file_node for file_node in file_nodes if file_node not in nodes_to_add]) protocols_to_add = [node.protocol for node in nodes_to_add] ref_item = item position = None if ref_item is None else item.drop_indicator_position self.add_protocols(ref_item, position, protocols_to_add) super().dropEvent(event)
def test_EditorPane_drop_event(): """ If there's a drop event associated with files, cause them to be passed into Mu's existing file loading code. """ ep = mu.interface.editor.EditorPane(None, 'baz') m = mock.MagicMock() ep.open_file = mock.MagicMock() ep.open_file.emit = m data = QMimeData() data.setUrls([ QUrl('file://test/path.py'), QUrl('file://test/path.hex'), QUrl('file://test/path.txt') ]) evt = QDropEvent(QPointF(0, 0), Qt.CopyAction, data, Qt.LeftButton, Qt.NoModifier) ep.dropEvent(evt) # Upstream _load will handle invalid file type (.txt). assert m.call_count == 3
def dropEvent(self, event: QDropEvent): for url in event.mimeData().urls(): file_path = url.toLocalFile() if not os.path.exists(file_path): continue if os.path.isdir(file_path): # Load directory as stack sample_loading = self.presenter.load_stacks_from_folder( file_path) if not sample_loading: QMessageBox.critical( self, "Load not possible!", "Please provide a directory that has .tif or .tiff files in it, or " "a sub directory that do not contain dark, flat, or 180 in their title name, that represents a" " sample.") return else: QMessageBox.critical( self, "Load not possible!", "Please drag and drop only folders/directories!") return
def dropEvent(self, event: QtGui.QDropEvent) -> None: """Handles the drop event and loads the image_name into the label. Parameters ---------- event: QDropEvent The identified event """ if event.mimeData().hasImage: event.setDropAction(Qt.CopyAction) self.image = event.mimeData().urls()[0].toLocalFile() x = self.width() y = self.height() im = QPixmap(self.image).scaled( x, y) # , aspectRatioMode=Qt.KeepAspectRatio) im.save(os.getcwd() + "/tmp.jpg") self.image = (os.getcwd() + "/tmp.jpg") self.setPixmap(im) # self.setPixmap(QPixmap(self.image)) self.setStyleSheet("") event.accept() else: event.ignore()
def dropEvent(self, event: QtGui.QDropEvent) -> None: """Loads dragged & dropped photos/videos and displays them in the GUI table.""" files = [] for url in event.mimeData().urls(): path = str(url) if is_windows(): count_left = len("PyQt5.QtCore.QUrl('file:///") else: # linux count_left = len("PyQt5.QtCore.QUrl('file://") count_right = len(path) - len("')") path = path[count_left:count_right] if self.settings.is_allowed_file(path): files.append(path) else: dir_path = path + '/' self.files_temp.clear() files_dir = self.find_files_in_dir(dir_path) files += files_dir self.fill_the_table(files) self.log_clear()
def dropEvent(self, event: QDropEvent): mime_data = event.mimeData() data_str = str(mime_data.text()) indexes = list(data_str.split("/")[:-1]) signal = None proto_analyzer = None for index in indexes: row, column, parent = map(int, index.split(",")) if parent == -1: parent = self.signal_tree_root else: parent = self.signal_tree_root.child(parent) node = parent.child(row) if node.protocol is not None and node.protocol.signal is not None: signal = node.protocol.signal proto_analyzer = node.protocol break if signal is None: return self.draw_signal(signal, proto_analyzer)
def testMove(self): w = self.newWidget() item = w._path_item_map.get("/Variables/u") #b = w.tree.getBlockInfo("/Variables/u") w.scrollToItem(item) point = w.visualItemRect(item).center() item1 = w._path_item_map.get("/Variables/v") #b1 = w.tree.getBlockInfo("/Variables/v") w.scrollToItem(item1) point1 = w.visualItemRect(item1).bottomLeft() #idx = b.parent.children_list.index(b.name) #idx1 = b.parent.children_list.index(b1.name) w.setCurrentItem(item) mime = QMimeData() mime.setData(w._mime_type, "some data") ee = QDragEnterEvent(w.mapToGlobal(point), Qt.MoveAction, mime, Qt.LeftButton, Qt.NoModifier) w.dragEnterEvent(ee) #Testing.process_events(t=1) de = QDropEvent(w.mapToGlobal(point1), Qt.MoveAction, mime, Qt.LeftButton, Qt.NoModifier) w.dropEvent(de) # This doesn't seem to work for some reason #self.assertEqual(idx1, b.parent.children_list.index(b.name)) #self.assertEqual(idx, b.parent.children_list.index(b1.name)) w.setCurrentItem(None) self.assertEqual(w._current_drag, None) w.dropEvent(de) w.dragEnterEvent(ee) self.assertEqual(w._current_drag, None) w.setCurrentItem(item1) w.dragEnterEvent(ee) self.assertNotEqual(w._current_drag, None) w.dropEvent(de)
def dropEvent(self, a0: QtGui.QDropEvent): mime = a0.mimeData() urls = mime.urls() err_msg = "" for url in urls: # type: QtCore.QUrl fname = url.toLocalFile() try: dfs = loaders.load_file(fname) except Exception as inst: err_msg += "\nError: {:}.\ncould not load file: {:}".format(str(inst), fname) continue if isinstance(dfs, StructuredDataFrame): dfs = [dfs] for df in dfs: # type: StructuredDataFrame try: self.treeView_dataFrames.addDataFrame(df) except Exception as e: err_msg += "\nError: {:}.\nSomething wrong could not load {:} as a StructuredDataFrame Object".format(str(e), df) continue if err_msg.strip(): fn.error_popup(err_msg) return
def dropEvent(self, e): # self.addItem(e.mimeData().text()) mime = e.mimeData() nya = mime.text() if nya[:8] == 'file:///': nya = nya[8:] self.tab_.make_open_DRY(nya) else: self.undoStack.edit_type = 'glue' self.undoStack.beginMacro('glue') self.my_del() u = self.cursorForPosition(e.pos()) self.setTextCursor(u) self.insertFromMimeData(mime) self.undoStack.endMacro() print(' drop event: ', nya) #i do not know how to override proposed event, so i am making another hollow event to unfreeze text cursor mimeData = QMimeData() mimeData.setText("") dummyEvent = QDropEvent(e.posF(), e.possibleActions(), mimeData, e.mouseButtons(), e.keyboardModifiers()) QPlainTextEdit.dropEvent(self, dummyEvent)
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, 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: QtGui.QDropEvent) -> None: self.file_path = Path(event.mimeData().urls()[0].toLocalFile()) logger.info(f"File dropped: {self.file_path}") self.process_drop()
def drop_event(event: QDropEvent) -> None: data = event.mimeData() url = data.urls()[0] if url and url.isLocalFile() and url.fileName().endswith('.pdf'): line_edit.setText(url.toLocalFile())
def dropEvent(self, event: QDropEvent): target = self.itemAt(event.pos()) sources = self.selectedItems() self.window().central_widget.move_items(sources, target)
def dropEvent(self, event: QDropEvent): if event.mimeData().hasUrls(): str_p = event.mimeData().urls()[0].toLocalFile() print(str_p) self.setText(str_p)
def dropEvent(self, event: QtGui.QDropEvent): md = event.mimeData() if md.hasUrls(): for url in md.urls(): self.file_dropped.emit(url.toLocalFile())
def dropEvent(self, event: QDropEvent) -> None: if event.mimeData().hasUrls(): urls = event.mimeData().urls() filepath = urls[0].toLocalFile() self.loadFile(filepath) event.accept()
def drop_event(self, e: QtGui.QDropEvent) -> None: with open(str(e.mimeData().text())[8:], 'r') as file: self.assembly_code.setPlainText(file.read())
def dropEvent(self, event: QDropEvent): if len(event.mimeData().urls()) == 0: self.frame_dropped.emit(self.mapToParent(event.pos())) else: self.files_dropped.emit(event.mimeData().urls())
def dropEvent(self, event: QDropEvent): if len(event.mimeData().urls()) > 0: group_id = self.model().get_group_id_for_index(self.indexAt(event.pos())) self.files_dropped_on_group.emit(event.mimeData().urls(), group_id) else: super().dropEvent(event)
def dropEvent(self, event: QDropEvent): if len(event.mimeData().urls()) > 0: self.files_dropped.emit(event.mimeData().urls())
def dropEvent(self, data: QDropEvent) -> None: self.insert(data.mimeData().text())
def dropEvent(self, event: QtGui.QDropEvent) -> None: if event.mimeData().hasUrls(): for url in event.mimeData().urls(): path = url.toLocalFile() print(path)
def dropEvent(self, a0: QtGui.QDropEvent) -> None: self.setWindowTitle('mouse drop') if self.frame.pos().x() <= a0.pos().x() <= self.frame.pos().x() + self.frame.width() \ and self.frame.pos().y() <= a0.pos().y() <= self.frame.pos().y() + self.frame.height(): self.label.setText(a0.mimeData().text().replace('file:///', '')) print(a0.mimeData().text())
def dropEvent(self, event: QtGui.QDropEvent): drag_file = event.mimeData().urls()[0].toLocalFile() self._set_file(drag_file)
def dropEvent(self, e: QtGui.QDropEvent): self.addItem(e.mimeData().text())
def dropEvent(self, event:QDropEvent): mainWidget_rect = self.mainWidget.geometry() dropPt = event.pos() if dropPt.x()<mainWidget_rect.left() or dropPt.x()>mainWidget_rect.right() or dropPt.y()<mainWidget_rect.top() or dropPt.y()>mainWidget_rect.bottom(): return mData = event.mimeData() if not mData.hasUrls(): return urlList = mData.urls() if len(urlList)==1: scrollArea_rect = self.scrollArea.geometry().translated(mainWidget_rect.topLeft()) scrollArea1_rect = self.scrollArea1.geometry().translated(mainWidget_rect.topLeft()) if dropPt.x()>scrollArea_rect.left() and dropPt.x()<scrollArea_rect.right(): fileName = urlList[0].toLocalFile() if len(fileName)<=0 or fileName==None: return if fileName.endswith(('.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.bmp', '.BMP')): reader = QImageReader(fileName) reader.setAutoTransform(True) img = reader.read() if img.isNull(): QMessageBox.information(self, 'error', 'can not open %s as image!'%fileName, QMessageBox.Ok) return self.opendFile = fileName self.__setTitle() self.__setImage(img, self.zoomList[self.zoomIdx]) elif dropPt.x()>scrollArea1_rect.left() and dropPt.x()<scrollArea1_rect.right(): fileName = urlList[0].toLocalFile() if len(fileName)<=0 or fileName==None: return if fileName.endswith(('.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.bmp', '.BMP')): reader = QImageReader(fileName) reader.setAutoTransform(True) img = reader.read() if img.isNull(): QMessageBox.information(self, 'error', 'can not open %s as image!'%fileName, QMessageBox.Ok) return self.opendFile1 = fileName self.__setTitle() self.__setImage1(img, self.zoomList[self.zoomIdx]) else: pass elif len(urlList)>=2: fileName = urlList[0].toLocalFile() fileName1 = urlList[1].toLocalFile() if len(fileName)<=0 or fileName==None or len(fileName1)<=0 or fileName1==None: return if fileName.endswith(('.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.bmp', '.BMP')) and fileName1.endswith(('.jpg', '.JPG', '.jpeg', '.JPEG', '.png', '.PNG', '.bmp', '.BMP')): reader = QImageReader(fileName) reader.setAutoTransform(True) img = reader.read() reader1 = QImageReader(fileName1) reader1.setAutoTransform(True) img1 = reader1.read() if img.isNull() or img1.isNull(): QMessageBox.information(self, 'error', 'can not open %s %sas image!'%(fileName, fileName1), QMessageBox.Ok) return self.opendFile = fileName self.opendFile1 = fileName1 self.__setTitle() self.__setImage(img, self.zoomList[self.zoomIdx]) self.__setImage1(img1, self.zoomList[self.zoomIdx]) else: pass
def dropEvent(self, e: QDropEvent) -> None: for url in e.mimeData().urls(): file = str(url.toLocalFile()) self.openPack(file)
def dragMoveEvent(self, event: QDropEvent): self.update_drop_indicator(event.pos())
def _on_drop_file(self, event: QDropEvent): mime_data: QMimeData = event.mimeData() path: str = mime_data.urls()[0].toLocalFile() if any(path.endswith(ext) for ext in self._GCODE_FILE_EXTENSIONS): self._load_gcode_file(gcode_path=path)
def dropEvent(self, event:QDropEvent): source = event.source()
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, a0: QtGui.QDropEvent): position = a0.pos() self.button1.move(position) a0.setDropAction(Qt.MoveAction) a0.accept()
def dropEvent(self, event: QDropEvent) -> None: filename = event.mimeData().urls()[0].toLocalFile() self.file_opener(filename) event.accept()
def dropEvent(self, e: QtGui.QDropEvent) -> None: file_path = e.mimeData().text() file_path = re.sub('file:///', '', file_path) self._dropQPixmap = QPixmap(file_path) self.update() self.dropSignal.emit()