def addCommentAct(self): mimeData = QtCore.QMimeData() data = 'Comment' mimeData.setText(data) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.exec_(QtCore.Qt.CopyAction)
def graphicsMouseMoveEvent(self, event, itemId=0): """This function is called by the owned :class:`~ts2.scenery.helper.TrackGraphicsItem` to handle its :meth:`~ts2.scenery.helper.TrackGraphicsItem.mouseMoveEvent`. Reimplemented in the ResizableItem class to begin a drag operation on corners.""" if event.buttons() == Qt.LeftButton and \ self.simulation.context == utils.Context.EDITOR_SCENERY: if QtCore.QLineF(event.scenePos(), event.buttonDownScenePos( Qt.LeftButton)).length() < 3.0: return drag = QtGui.QDrag(event.widget()) mime = QtCore.QMimeData() pos = event.buttonDownScenePos(Qt.LeftButton) - self.origin if QtCore.QRectF(-5, -5, 9, 9).contains(pos): movedEnd = "start" elif QtCore.QRectF(self.end.x() - self.origin.x() - 5, self.end.y() - self.origin.y() - 5, 9, 9).contains(pos): movedEnd = "end" pos -= self.end - self.origin # elif self._gi[itemId].shape().contains(pos): else: movedEnd = "origin" if movedEnd is not None: mime.setText( type(self).__name__ + "#" + str(self.tiId) + "#" + str(pos.x()) + "#" + str(pos.y()) + "#" + movedEnd) drag.setMimeData(mime) drag.exec_()
def mousePressEvent(self, event): super(NodeBoxTreeWidget, self).mousePressEvent(event) item_clicked = self.currentItem() if not item_clicked: event.ignore() return # check if clicked item is a category if item_clicked.bCategory: event.ignore() return # find top level parent rootItem = item_clicked while not rootItem.parent() is None: rootItem = rootItem.parent() packageName = rootItem.text(0) pressed_text = item_clicked.text(0) libName = item_clicked.libName if pressed_text in self.categoryPaths.keys(): event.ignore() return jsonTemplate = NodeBase.jsonTemplate() jsonTemplate['package'] = packageName jsonTemplate['lib'] = libName jsonTemplate['type'] = pressed_text jsonTemplate['name'] = pressed_text jsonTemplate['uuid'] = str(uuid.uuid4()) jsonTemplate['meta']['label'] = pressed_text # TODO: Rewrite self.bGripsEnabled. Node box can be floating window or a tool. # If node box is a tool it onbly can create nodes by dragging and dropping if self.canvas.pressedPin is not None and self.bGripsEnabled: a = self.canvas.mapToScene(self.canvas.mouseReleasePos) jsonTemplate["x"] = a.x() jsonTemplate["y"] = a.y() node = self.canvas.createNode(jsonTemplate) self.canvas.hideNodeBox() pressedPin = self.canvas.pressedPin if pressedPin.direction == PinDirection.Input: for pin in node.UIoutputs.values(): wire = self.canvas.connectPinsInternal(pressedPin, pin) if wire is not None: EditorHistory().saveState("Connect pins", modify=True) break if pressedPin.direction == PinDirection.Output: for pin in node.UIinputs.values(): wire = self.canvas.connectPinsInternal(pin, pressedPin) if wire is not None: EditorHistory().saveState("Connect pins", modify=True) break else: drag = QtGui.QDrag(self) mime_data = QtCore.QMimeData() pressed_text = json.dumps(jsonTemplate) mime_data.setText(pressed_text) drag.setMimeData(mime_data) drag.exec_()
def addPinAct(self): mimeData = QtCore.QMimeData() data = 'ipin' mimeData.setText(data) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.exec_(QtCore.Qt.CopyAction)
def mouseMoveEvent(self, event): name = self.label drag = QtGui.QDrag(self) ba = bytearray(name, "utf-8") drag_mime_data = QtCore.QMimeData() drag_mime_data.setData(self.QMimeDataType, QtCore.QByteArray(ba)) drag.setMimeData(drag_mime_data) drag.exec_(QtCore.Qt.MoveAction)
def lwMousePressEvent(self, event): QListWidget.mousePressEvent(self, event) w = self.itemWidget(self.currentItem()) if w: drag = QtGui.QDrag(self) mime_data = QtCore.QMimeData() mime_data.setText("Var|" + str(w.uid)) drag.setMimeData(mime_data) drag.exec_()
def mouseMoveEvent(self, event): name = self._label print(name) drag = QtGui.QDrag(self) # ba = bytearray(name, 'utf-8') drag_mime_data = QtCore.QMimeData() drag_mime_data.setData(self.QMimeDataType, QtCore.QByteArray(name)) drag.setMimeData(drag_mime_data) drag.exec_(QtCore.Qt.MoveAction)
def clickCell(self): cell = self.cells.currentItem() if (cell): mimeData = QtCore.QMimeData() data = '@'.join([self.libraries.currentItem().text(), cell.text()]) mimeData.setText(data) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.exec_(QtCore.Qt.CopyAction)
def mousePressEvent(self, event): super(VariablesListWidget, self).mousePressEvent(event) w = self.itemWidget(self.currentItem()) if w: drag = QtGui.QDrag(self) mime_data = QtCore.QMimeData() varJson = w.serialize() dataJson = {VARIABLE_TAG: True, VARIABLE_DATA_TAG: varJson} mime_data.setText(json.dumps(dataJson)) drag.setMimeData(mime_data) drag.exec_()
def mouseMoveEvent(self, event): if event.buttons() == QtCore.Qt.LeftButton and isinstance( self.actComp, Block): mimeData = QtCore.QMimeData() block = self.actComp # attributes = {'name':c.name,'input':c.inp,'output':c.outp,'icon':c.icon,'flip':c.flip,'libname':c.libname,'type':c.type} # data = '@'.join([str(attributes),str(c.parameters),str(c.properties),c.blockname,c.libname]) data = '@'.join([block.libname, block.blockname]) mimeData.setText(data) drag = QtGui.QDrag(self.parent) drag.setMimeData(mimeData) drag.exec_(QtCore.Qt.CopyAction)
def startDrag(self, event): # create mime data object mime = QtCore.QMimeData() mime.setText(self.currentItem().text(self.columnPath)) # start drag drag = QtGui.QDrag(self) drag.setMimeData(mime) if not Qt.USE_QT_PY == Qt.PYQT5: start = drag.start else: start = drag.exec_ start(QtCore.Qt.MoveAction)
def mousePressEvent(self, event): super(NodeBoxTreeWidget, self).mousePressEvent(event) canvas = self.parent().canvasRef() item_clicked = self.currentItem() if not item_clicked: event.ignore() return # check if clicked item is a category if item_clicked.bCategory: event.ignore() return # find top level parent rootItem = item_clicked while not rootItem.parent() is None: rootItem = rootItem.parent() packageName = rootItem.text(0) pressed_text = item_clicked.text(0) libName = item_clicked.libName if pressed_text in self.categoryPaths.keys(): event.ignore() return try: mousePos = canvas.mapToScene(canvas.mousePressPose) except: mousePos = canvas.mapToScene(canvas.mousePressPose.toPoint()) jsonTemplate = NodeBase.jsonTemplate() jsonTemplate['package'] = packageName jsonTemplate['lib'] = libName jsonTemplate['type'] = pressed_text jsonTemplate['name'] = pressed_text jsonTemplate['uuid'] = str(uuid.uuid4()) jsonTemplate['x'] = mousePos.x() jsonTemplate['y'] = mousePos.y() jsonTemplate['meta']['label'] = pressed_text if self.bUseDragAndDrop: drag = QtGui.QDrag(self) mime_data = QtCore.QMimeData() pressed_text = json.dumps(jsonTemplate) mime_data.setText(pressed_text) drag.setMimeData(mime_data) drag.exec_() else: canvas.createNode(jsonTemplate)
def graphicsMouseMoveEvent(self, event, itemId=0): """This function is called by the owned TrackGraphicsItem to handle its mouseMoveEvent. The implementation in the base class TrackItem begins a drag operation.""" if itemId == 0: if (event.buttons() == Qt.LeftButton and self.simulation.context == utils.Context.EDITOR_SCENERY): if QtCore.QLineF(event.scenePos(), event.buttonDownScenePos( Qt.LeftButton)).length() < 3.0: return drag = QtGui.QDrag(event.widget()) mime = QtCore.QMimeData() pos = event.buttonDownScenePos(Qt.LeftButton) - self.origin mime.setText( type(self).__name__ + "#" + str(self.tiId) + "#" + str(pos.x()) + "#" + str(pos.y()) + "#" + "origin") drag.setMimeData(mime) drag.exec_()
def startDrag(self, _): """Start drag.""" # Can we drag? model = self.model() if not self.dragEnabled() or model is None: return model_obj = model.obj() if model_obj is None: return # Get selected indexes. selected_indexes = self.selectedIndexes() if not selected_indexes: return # In a write context. with model_obj.app.write_context(): # Get indexes. sorted_indexes = sorted(selected_indexes, key=lambda i: i.row()) first_index, last_index = sorted_indexes[0], sorted_indexes[-1] selection = QtCore.QItemSelection(first_index, last_index) # Get mime data. mime_data = model.mimeData(selected_indexes) if mime_data is None: return # Get drag actions from the model. drag_actions = model.supportedDragActions() # Start drag. viewport = self.viewport() drag = QtGui.QDrag(viewport) drag.setMimeData(mime_data) # Prepare pixmap. pixmap = QtGui.QPixmap(viewport.visibleRegion().boundingRect().size()) pixmap.fill(QtCore.Qt.transparent) painter = QtGui.QPainter(pixmap) visual_rect = self.visualRegionForSelection(selection).boundingRect() if hasattr(viewport, "grab"): painter.drawPixmap(visual_rect, viewport.grab(visual_rect)) else: painter.drawPixmap( visual_rect, QtGui.QPixmap.grabWidget(viewport, visual_rect), ) painter.end() drag.setPixmap(pixmap) # TODO: gradient fade if overflowing drag.setHotSpot(self.viewport().mapFromGlobal(QtGui.QCursor.pos())) # Prepare cursor. move_cursor = QtGui.QCursor(QtCore.Qt.DragMoveCursor) copy_cursor = QtGui.QCursor(QtCore.Qt.DragCopyCursor) drag.setDragCursor(move_cursor.pixmap(), QtCore.Qt.MoveAction) drag.setDragCursor(copy_cursor.pixmap(), QtCore.Qt.CopyAction) # Get state before. state_before = model_obj._state # Execute drag. try: action = drag.exec_(drag_actions) finally: moved_mimed_data_id = _internal_move_cache.pop(model_obj, None) # Move action was performed and state did not change, so item was moved # somewhere else. Delete the items from the list in this case. if moved_mimed_data_id != id(mime_data): if action == QtCore.Qt.MoveAction: state_after = model_obj._state if state_before is state_after: model_obj.delete(slice(first_index.row(), last_index.row() + 1))