def dropEvent(self, event): text = event.mimeData().text() #print event.mimeData().formats() parm = hou.parm(text) if parm != None: if hou.parm(self.pathLabel.text()) !=None: self.removeCallBack(hou.parm(self.pathLabel.text()).node()) if isinstance(parm.eval(),str): mime = QtCore.QMimeData() mime.setText("") newEvent = QtGui.QDropEvent(event.pos(), event.dropAction(), mime, event.mouseButtons(), event.keyboardModifiers()) super(snippet, self).dropEvent(newEvent) self.pathLabel.setText(text) self.setText(parm.eval()) self.pathLabel.setStyleSheet(stylesheet.styles["valid"]) self.setUpCallback(parm.node()) else: mime = QtCore.QMimeData() mime.setText("") newEvent = QtGui.QDropEvent(event.pos(), event.dropAction(), mime, event.mouseButtons(), event.keyboardModifiers()) super(snippet, self).dropEvent(newEvent) self.pathLabel.setText("Invalid. Only String Parameter is acceptable:") self.pathLabel.setStyleSheet(stylesheet.styles["invalid"]) else: ### ### droped info is not path to parm ### if hou.parm(self.pathLabel.text()) != None: ### ### parm is already set ### if hou.node(text) == None: ### ### dropping a template ### self.dropTemplate(event) if hou.parm(self.pathLabel.text()).name() == "snippet": self.parmCreate(hou.parm(self.pathLabel.text()).node()) else: ### ### dropping node or something ### if hou.parm(self.pathLabel.text()) !=None: self.removeCallBack(hou.parm(self.pathLabel.text()).node()) mime = QtCore.QMimeData() mime.setText("") newEvent = QtGui.QDropEvent(event.pos(), event.dropAction(), mime, event.mouseButtons(), event.keyboardModifiers()) super(snippet, self).dropEvent(newEvent) self.pathLabel.setText("Invalid. Drop a parameter:") self.pathLabel.setStyleSheet(stylesheet.styles["invalid"]) else: ### ### parm is not set ### self.dropTemplate(event) self.pathLabel.setText("Invalid. Drop a parameter first:") self.pathLabel.setStyleSheet(stylesheet.styles["invalid"])
def mimeData(self, indexes): paths = [] elements = [] for index in indexes: item = index.data(QtCore.Qt.UserRole) elements.append(item.element.to_dict()) elements[-1]["identifier"] = self.model.identifier elements[-1]["connstr"] = self.model.connstr elements[-1]["row"] = index.row() elements[-1]["column"] = index.column() if item.is_resource(): filename = item.element.label.filename f_src = item.element.label.open() if f_src is None: continue else: tgt_path = os.path.join(self.model.files.get_temp_path(), filename) f_tgt = open(tgt_path, "wb") shutil.copyfileobj(f_src, f_tgt) f_src.close() f_tgt.close() paths.append(tgt_path) if not item.element.label.worldfile is None: wf_path = save_worldfile(item.element.label.worldfile, tgt_path) paths.append(wf_path) if not item.element.label.projection is None: proj_path = save_raster_projection( item.element.label.projection, tgt_path) paths.append(proj_path) elif item.is_geometry(): pass # TODO handle also geometry (generate shapefile + prj) data = QtCore.QMimeData() if elements: data.setData("application/deposit", bytes(json.dumps(elements), "utf-8")) data_cb = QtCore.QMimeData( ) # workaround if deposit data gets reset while dragging data_cb.setData("application/deposit", bytes(json.dumps(elements), "utf-8")) cb = QtWidgets.QApplication.clipboard() cb.setMimeData(data_cb) if paths: data.setUrls([QtCore.QUrl().fromLocalFile(path) for path in paths]) return data
def mimeData(self, indexes): """This function is called to generate MIME data. This is used by drag and drop functionality for example. The data are encoded in JSON following this format: { [0, {"sentence": "Salut", "index": 15}], [7, {"sentence": "Les mecs", "index": 2}] } With 0 and 7 the associated rows. """ serializable_segments_dict = dict( ( index.row(), self.get_chosen_from_index(index).to_JSON_serializable() ) for index in indexes ) data = [(row, serializable) for row, serializable in serializable_segments_dict.items()] dragData = json.dumps(data) mimeData = QtCore.QMimeData() mimeData.setData("text/json", QtCore.QByteArray(str.encode(dragData))) return mimeData
def mouseMoveEvent(self, item): """Drag event""" shader = self.shader itemData = QtCore.QByteArray() dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly) dataStream << QtCore.QByteArray(str(shader)) mimeData = QtCore.QMimeData() icon = QtGui.QIcon() if cmds.nodeType(shader) == 'displacementShader': mimeData.setData("application/x-displacement", itemData) icon.addFile(os.path.join(d, "../../../icons/sgblue.xpm"), QtCore.QSize(25, 25)) else: mimeData.setData("application/x-shader", itemData) icon.addFile(os.path.join(d, "../../../icons/sg.xpm"), QtCore.QSize(25, 25)) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(icon.pixmap(50, 50)) drag.setHotSpot(QtCore.QPoint(0, 0)) drag.start(QtCore.Qt.MoveAction)
def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return pixmap = QtGui.QPixmap(child.pixmap()) itemData = QtCore.QByteArray() dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly) dataStream << pixmap << QtCore.QPoint(event.pos() - child.pos()) mimeData = QtCore.QMimeData() mimeData.setData('application/x-dnditemdata', itemData) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QtGui.QPixmap(pixmap) painter = QtGui.QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QtGui.QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(QtCore.Qt.CopyAction | QtCore.Qt.MoveAction, QtCore.Qt.CopyAction) == QtCore.Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap)
def startDrag(dragSource, dropActions, objects): mimeData = QtCore.QMimeData() mimeData.setText("\n".join(["%s" % job.data.name for job in objects])) mimeDataAdd(mimeData, "application/x-job-names", [object.data.name for object in objects if isJob(object)]) mimeDataAdd(mimeData, "application/x-job-ids", [opencue.id(object) for object in objects if isJob(object)]) mimeDataAdd(mimeData, "application/x-group-names", [object.data.name for object in objects if isGroup(object)]) mimeDataAdd(mimeData, "application/x-group-ids", [opencue.id(object) for object in objects if isGroup(object)]) mimeDataAdd(mimeData, "application/x-host-names", [object.data.name for object in objects if isHost(object)]) mimeDataAdd(mimeData, "application/x-host-ids", [opencue.id(object) for object in objects if isHost(object)]) drag = QtGui.QDrag(dragSource) drag.setMimeData(mimeData) drag.exec_(QtCore.Qt.MoveAction)
def text_to_mime(text): if check_url(text): return url_to_mime(text) data = QtCore.QMimeData() data.setData("text/plain", bytes(text, "utf-8")) return data
def dragAcion(self): self.leaveAcion() dataBuffer = QtGui.QDrag(self.parent()) rigData = self.sender().index.data() ID = rigData["ID"] previewSize = self.parent().previewSize rigImage = IconDrag(rigData, previewSize).rigImage dragFile = os.path.join(tempfile.gettempdir(), "{}.png".format(ID)) rigImage.save(dragFile, "png") dragURL = QtCore.QUrl() dragURL = dragURL.fromLocalFile(dragFile) mimeData = QtCore.QMimeData() mimeData.setText(ID) mimeData.setImageData(rigImage) mimeData.setUrls([dragURL]) dataBuffer.setMimeData(mimeData) dragPreview = QtGui.QPixmap().fromImage(rigImage) dataBuffer.setPixmap(dragPreview) dataBuffer.setHotSpot(dragPreview.rect().center()) dataBuffer.exec_(QtCore.Qt.CopyAction) os.remove(dragFile)
def mousePressEvent(self, event): self.collection_grid.item_properties.update_entry(self.metadata) cur_item = self.collection_grid.selected_item if cur_item: cur_item.setStyleSheet("""QLabel{border: 1px solid black}""") cur_item.is_selected = False if self.is_selected: self.is_selected = False self.setStyleSheet("""QLabel{border: 1px solid black}""") else: self.is_selected = True self.setStyleSheet("""QLabel{border: 1px solid blue}""") self.collection_grid.selected_item = self if self.from_gaia_scatter: mimeData = QtCore.QMimeData() mimeData.setText(str(self.metadata)) drag = QtGui.QDrag(self) drag.setPixmap(self.pixmap()) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - self.rect().topLeft()) drag.start(QtCore.Qt.MoveAction) super(CollectionItem, self).mousePressEvent(event)
def mouseMoveEvent(self, event: QtGui.QMouseEvent) -> None: # pragma: no cover if (not event.buttons() & QtCore.Qt.LeftButton or (event.pos() - self.drag_start_pos).manhattanLength() < QtWidgets.QApplication.startDragDistance()): return super().mouseMoveEvent(event) index = self.tabAt(event.pos()) if index == -1: return super().mouseMoveEvent(event) rect = self.tabRect(index) pixmap = QtGui.QPixmap(rect.size()) self.render(pixmap, QtCore.QPoint(), QtGui.QRegion(rect)) mime_data = QtCore.QMimeData() mime_data.setData("application/x-pew2tabbar", QtCore.QByteArray().number(index)) drag = QtGui.QDrag(self) drag.setMimeData(mime_data) drag.setPixmap(pixmap) drag.setDragCursor( QtGui.QCursor(QtCore.Qt.DragMoveCursor).pixmap(), QtCore.Qt.MoveAction) drag.exec_(QtCore.Qt.MoveAction)
def copyAllToClipboard(self) -> None: """Copy all calibrations to the system clipboard.""" name = self.combo_element.currentText() self.updateCalibration(name) names = "\t".join(name for name in self.calibrations) gradients = "\t".join( str(c.gradient) for c in self.calibrations.values()) intercepts = "\t".join( str(c.intercept) for c in self.calibrations.values()) units = "\t".join(c.unit for c in self.calibrations.values()) rsqs = "\t".join(str(c.rsq or "") for c in self.calibrations.values()) errs = "\t".join( str(c.error or "") for c in self.calibrations.values()) text = (f"\t{names}\n" f"gradient\t{gradients}\n" f"intercept\t{intercepts}\n" f"unit\t{units}\n" f"rsq\t{rsqs}\n" f"error\t{errs}\n") mime = QtCore.QMimeData() mime.setText(text) with BytesIO() as fp: np.savez(fp, **{k: v.to_array() for k, v in self.calibrations.items()}) mime.setData("application/x-pew2calibration", fp.getvalue()) QtWidgets.QApplication.clipboard().setMimeData(mime)
def mimeData(self, indexes): """The data necessary for supporting drag and drop operations are constructed here. There is ambiguity in the absence of any good documentation I could find regarding what mime types have to be defined exactly for fully supporting drag and drop on all platforms. Note: On windows, ``application/x-qt-windows-mime;value="FileName"`` and ``application/x-qt-windows-mime;value="FileNameW"`` types seems to be necessary, but on MacOS a simple uri list seem to suffice. """ def add_path_to_mime(mime, path): """Adds the given path to the mime data.""" if not isinstance(path, unicode): s = u'Expected <type \'unicode\'>, got {}'.format(type(str)) log.error(s) raise TypeError(s) path = QtCore.QFileInfo(path).absoluteFilePath() mime.setUrls(mime.urls() + [ QtCore.QUrl.fromLocalFile(path), ]) path = QtCore.QDir.toNativeSeparators(path).encode('utf-8') _bytes = QtCore.QByteArray(path) mime.setData(u'application/x-qt-windows-mime;value="FileName"', _bytes) mime.setData(u'application/x-qt-windows-mime;value="FileNameW"', _bytes) return mime mime = QtCore.QMimeData() modifiers = QtWidgets.QApplication.instance().keyboardModifiers() no_modifier = modifiers == QtCore.Qt.NoModifier alt_modifier = modifiers & QtCore.Qt.AltModifier shift_modifier = modifiers & QtCore.Qt.ShiftModifier for index in indexes: if not index.isValid(): continue path = index.data(QtCore.Qt.StatusTipRole) if no_modifier: path = common.get_sequence_endpath(path) add_path_to_mime(mime, path) elif alt_modifier and shift_modifier: path = QtCore.QFileInfo(path).dir().path() add_path_to_mime(mime, path) elif alt_modifier: path = common.get_sequence_startpath(path) add_path_to_mime(mime, path) elif shift_modifier: paths = common.get_sequence_paths(index) for path in paths: add_path_to_mime(mime, path) return mime
def mimeData(self, indexList): attrsString = ','.join([x.data() for x in indexList if x.isValid()]) mimeData = QtCore.QMimeData() mimeData.setData(ITEM_MIME_TYPE, QtCore.QByteArray(attrsString)) return mimeData
def mouseMoveEvent(self, event): if not self.transaction.isCredit: mimeData = QtCore.QMimeData() mimeData.setText(self.transaction.name) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.exec_(QtCore.Qt.MoveAction)
def _copy(self) -> None: selection = sorted(self.selectedIndexes(), key=lambda i: (i.row(), i.column())) data = ( '<meta http-equiv="content-type" content="text/html; charset=utf-8"/>' "<table><tr>") text = "" prev = None for i in selection: if prev is not None and prev.row() != i.row(): # New row data += "</tr><tr>" text += "\n" value = i.data() data += f"<td>{value}</td>" if prev is not None and prev.row() == i.row(): text += "\t" text += f"{value}" prev = i data += "</tr></table>" mime = QtCore.QMimeData() mime.setHtml(data) mime.setText(text) QtWidgets.QApplication.clipboard().setMimeData(mime)
def mimeData(self, indexes: list[QtCore.QModelIndex]) -> QtCore.QMimeData: index_data = [{'internalId': i.internalId( ), 'row': i.row(), 'column': i.column()} for i in indexes] encoded_json = json.dumps(index_data).encode() mimeData = QtCore.QMimeData() mimeData.setData('text/index-json-array', QtCore.QByteArray(encoded_json)) # type: ignore return mimeData
def mimeData(self, indexes): samples = [] for index in indexes: samples.append(index.data(QtCore.Qt.UserRole).to_dict()) data = QtCore.QMimeData() data.setData("text/plain", bytes(json.dumps(samples), "utf-8")) return data
def mousePressEvent(self, event): mimeData = QtCore.QMimeData() mimeData.setText(self.widget_type) drag = QtGui.QDrag(self) drag.setPixmap(self.icon_pix) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - self.rect().topLeft()) drag.start(QtCore.Qt.MoveAction)
def mouseMoveEvent(self, e): mimeData = QtCore.QMimeData() drag = QtGui.QDrag(self) mimeData.setUrls([ 'remote://' + self.model().data(i) for i in self.selectedIndexes() ]) print(mimeData.urls()) drag.setMimeData(mimeData) dropAction = drag.start(QtCore.Qt.CopyAction)
def mimeData(nodeNames): mimeData = QtCore.QMimeData() encodedData = QtCore.QByteArray() stream = QtCore.QDataStream(encodedData, QtCore.QIODevice.WriteOnly) for name in nodeNames: stream.writeString(name) mimeData.setData(renderSetupProxy.RENDER_SETUP_MIME_TYPE, encodedData) return mimeData
def mouseMoveEvent(self, event): """The drag operation is initiated here.""" if not isinstance(event, QtGui.QMouseEvent): return app = QtWidgets.QApplication.instance() left_button = event.buttons() & QtCore.Qt.LeftButton if not left_button: return parent_widget = self.parent() editor = parent_widget.findChild(TodoItemEditor) drag = QtGui.QDrag(parent_widget) # Setting Mime Data mime_data = QtCore.QMimeData() mime_data.setData(u'bookmarks/todo-drag', QtCore.QByteArray('')) drag.setMimeData(mime_data) # Drag pixmap # Transparent image pixmap = QtGui.QPixmap(parent_widget.size()) parent_widget.render(pixmap) drag.setPixmap(pixmap) drag.setHotSpot( QtCore.QPoint( pixmap.width() - ((common.MARGIN() * 0.66) * 2), pixmap.height() / 2.0 ) ) # Drag origin indicator pixmap = QtGui.QPixmap(parent_widget.size()) painter = QtGui.QPainter() painter.begin(pixmap) painter.setPen(QtGui.QPen(QtCore.Qt.NoPen)) painter.setBrush(QtGui.QBrush(QtGui.QColor(200, 200, 200, 255))) painter.drawRect(pixmap.rect()) painter.end() overlay_widget = QtWidgets.QLabel(parent=parent_widget) overlay_widget.setFixedSize(parent_widget.size()) overlay_widget.setPixmap(pixmap) # Preparing the drag... parent_widget.parent().separator.setHidden(False) overlay_widget.show() # Starting the drag... drag.exec_(QtCore.Qt.CopyAction) # Cleanup after drag has finished... overlay_widget.close() overlay_widget.deleteLater() parent_widget.parent().separator.setHidden(True)
def on_activated(self, index): sample = index.data(QtCore.Qt.UserRole) text = "Sample ID\t%s\nValue\t%s" % (sample.id, sample.value) data = QtCore.QMimeData() data.setData("text/plain", bytes(text, "utf-8")) cb = QtWidgets.QApplication.clipboard() cb.setMimeData(data) self.view.statusbar.message("Data copied to clipboard")
def mouseMoveEvent(self, e): if e.buttons() != QtCore.Qt.RightButton: print('') mimeData = QtCore.QMimeData() drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(e.pos() - self.rect().topLeft()) dropAcion = drag.exec_(QtCore.Qt.MoveAction)
def performDrag(self): item = self.currentItem() if item: mimeData = QtCore.QMimeData() mimeData.setText(item.text()) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(QPixmap('person.png')) if drag.exec(QtCore.Qt.MoveAction) == QtCore.Qt.MoveAction: pass
def mousePressEvent(self, event): item = self.itemAt(event.pos()) name = item.text() drag = QtGui.QDrag(self) mime_data = QtCore.QMimeData() mime_data.setText(name) drag.setMimeData(mime_data) drag.exec_() super(NodeList, self).mousePressEvent(event)
def mimeData(self, par): # print("data model: mime data",par) # [QModelIndex, QModelIndex] mimeData = QtCore.QMimeData() index = par[0] item = index.internalPointer() # print("data model: mime data: item=",item,item.getSlot()) # mimeData.setText("kokkelis") # mimeData.setText(pickle.dumps(item.getMimeData())) # mimeData.setData("application/octet-stream",pickle.dumps(item.getMimeData())) mimeData.setData("application/octet-stream", pickle.dumps(item.getMimeData())) return mimeData
def mousePressEvent(self, event): """this function is needed for the drag and drop""" if event.button() == QtCore.Qt.MouseButton.LeftButton and self.drag == True: self.dragInfo = "dragged" drag = QtGui.QDrag(self) mimeData = QtCore.QMimeData() mimeData.setText(json.dumps({"index": self.positionIndex, "color": self.ColorIndex})) drag.setMimeData(mimeData) tick = QtGui.QPixmap(r"res\colors\{index}".format(index=self.ColorIndex)) tickSized = tick.scaled(self.geometry().width(),self.geometry().height()) drag.setPixmap(tickSized) drag.exec_()
def mimeData(self, indexes): """Return an object that contains serialized items of data corresponding to the list of indexes specified. The formats used to describe the encoded data is obtained from the mimeTypes() function. :param indexes: QModelIndex instance. represent the index of the item in the treeView we want to DAD. :return: QMimeData instance """ mimeData = QtCore.QMimeData() playerInst = indexes[0].model().itemFromIndex( indexes[0]).getPlayerData() data = pickle.dumps({"playerData": playerInst}) mimeData.setData(MimeTypes.PLAYER.value, data) return mimeData
def startDrag(self, lb): pixmap = lb.pixmap dato = lb.id itemData = QtCore.QByteArray(str(dato)) mimeData = QtCore.QMimeData() mimeData.setData("image/x-lc-dato", itemData) drag = QtWidgets.QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(QtCore.QPoint(pixmap.width() / 2, pixmap.height() / 2)) drag.setPixmap(pixmap) drag.exec_(QtCore.Qt.MoveAction)
def mimeData(self, indexes): mimeData = QtCore.QMimeData() encodedData = QtCore.QByteArray() stream = QtCore.QDataStream(encodedData, QtCore.QIODevice.WriteOnly) for index in indexes: if index.isValid(): pixmap = QPixmap(self.data(index, QtCore.Qt.UserRole)) location = self.data(index, QtCore.Qt.UserRole + 1) stream << pixmap << location mimeData.setData('image/x-puzzle-piece', encodedData) return mimeData