def handleInternalMove(self, event): """Handle a move inside treeview.""" # make sure qt doesn't handle this event.setDropAction(qt4.Qt.IgnoreAction) event.ignore() if not self.viewport().rect().contains(event.pos()): return # get widget at event position index = self.indexAt(event.pos()) if not index.isValid(): index = self.rootIndex() # adjust according to drop indicator position row = -1 posn = self.dropIndicatorPosition() if posn == qt4.QAbstractItemView.AboveItem: row = index.row() index = index.parent() elif posn == qt4.QAbstractItemView.BelowItem: row = index.row() + 1 index = index.parent() if index.isValid(): parent = self.model().getWidget(index) data = str(event.mimeData().data(document.widgetmime)) if document.isMimeDropable(parent, data): # move the widget! parentpath = parent.path widgetpaths = document.getMimeWidgetPaths(data) ops = [] r = row for path in widgetpaths: ops.append( document.OperationWidgetMove(path, parentpath, r) ) if r >= 0: r += 1 self.model().document.applyOperation( document.OperationMultiple(ops, descr='move')) event.ignore()
def handleInternalMove(self, event): """Handle a move inside treeview.""" # make sure qt doesn't handle this event.setDropAction(qt4.Qt.IgnoreAction) event.ignore() if not self.viewport().rect().contains(event.pos()): return # get widget at event position index = self.indexAt(event.pos()) if not index.isValid(): index = self.rootIndex() # adjust according to drop indicator position row = -1 posn = self.dropIndicatorPosition() if posn == qt4.QAbstractItemView.AboveItem: row = index.row() index = index.parent() elif posn == qt4.QAbstractItemView.BelowItem: row = index.row() + 1 index = index.parent() if index.isValid(): parent = self.model().getWidget(index) data = str(event.mimeData().data(document.widgetmime)) if document.isMimeDropable(parent, data): # move the widget! parentpath = parent.path widgetpaths = document.getMimeWidgetPaths(data) ops = [] r = row for path in widgetpaths: ops.append( document.OperationWidgetMove(path, parentpath, r)) if r >= 0: r += 1 self.model().document.applyOperation( document.OperationMultiple(ops, descr='move')) event.ignore()
def dropMimeData(self, mimedata, action, row, column, parentindex): """User drags and drops widget.""" if action == qt4.Qt.IgnoreAction: return True if not mimedata.hasFormat(document.widgetmime): return False data = str(mimedata.data(document.widgetmime)) if parentindex.isValid(): parent = self.getWidget(parentindex) else: parent = self.document.basewidget # check parent supports child if not document.isMimeDropable(parent, data): return False # work out where row will be pasted startrow = row if row == -1: startrow = len(parent.children) # need to tell qt that these rows are being inserted, so that the # right number of rows are removed afterwards self.suspendmodified = True self.beginInsertRows(parentindex, startrow, startrow+document.getMimeWidgetCount(data)-1) op = document.OperationWidgetPaste(parent, data, index=startrow) self.document.applyOperation(op) self.endInsertRows() self.suspendmodified = False return True
def dropMimeData(self, mimedata, action, row, column, parentindex): """User drags and drops widget.""" if action == qt4.Qt.IgnoreAction: return True if not mimedata.hasFormat(document.widgetmime): return False data = str(mimedata.data(document.widgetmime)) if parentindex.isValid(): parent = self.getWidget(parentindex) else: parent = self.document.basewidget # check parent supports child if not document.isMimeDropable(parent, data): return False # work out where row will be pasted startrow = row if row == -1: startrow = len(parent.children) # need to tell qt that these rows are being inserted, so that the # right number of rows are removed afterwards self.suspendmodified = True self.beginInsertRows(parentindex, startrow, startrow + document.getMimeWidgetCount(data) - 1) op = document.OperationWidgetPaste(parent, data, index=startrow) self.document.applyOperation(op) self.endInsertRows() self.suspendmodified = False return True