def mimeData(self, indices): for index in indices: control = self.control(index) mimetype, mimedata = encode(control) qmime_data = QtCore.QMimeData() qmime_data.setData(mimetype, mimedata) qmime_data.setText(control.name) return qmime_data
def startDrag(self, supportedActions): index = self.getIndex() item = self.getItem() data = self._model.projectdata(index) if data is None: return category, name = data # Check item in src # TODO move this part in dragEnterEvent with mimetype obj = self._model._project.get(category, name) if category in ['src', 'model']: # Read file and parse model to get inputs, outputs, doc that may be # useful once dropped. obj.read() text = item.text() # name_without_ext = ".".join(text.split(".")[:-1]) name_without_ext = text name_without_space = "_".join(name_without_ext.split()) for sym in ["-", "+", "*", "/", "\"", "."]: name_without_space = "_".join(name_without_space.split(sym)) python_call_string = '%s = Model("%s")' % (name_without_space, name_without_ext) icon = item.icon() pixmap = icon.pixmap(20, 20) itemData = QtCore.QByteArray() dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly) model_id = name_without_ext dataStream.writeString(str(python_call_string)) dataStream.writeString(str(model_id)) mimeData = QtCore.QMimeData() mimeData.setText(python_call_string) mimeData.setData("openalealab/model", itemData) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot( QtCore.QPoint(pixmap.width() / 2, pixmap.height() / 2)) drag.setPixmap(pixmap) drag.start(QtCore.Qt.CopyAction) elif category == 'data': p = '%s/%r' % (category, str(obj.filename)) mimetype, mimedata = encode(obj, mimetype='openalealab/data') qmime_data = QtCore.QMimeData() qmime_data.setData(mimetype, mimedata) qmime_data.setText(p) drag = QtGui.QDrag(self) drag.setMimeData(qmime_data) drag.start()
def startDrag(self, supportedActions): index = self.getIndex() item = self.getItem() data = self._model.projectdata(index) if data is None: return category, name = data # Check item in src # TODO move this part in dragEnterEvent with mimetype obj = self._model._project.get(category, name) if category in ['src', 'model']: # Read file and parse model to get inputs, outputs, doc that may be # useful once dropped. obj.read() text = item.text() # name_without_ext = ".".join(text.split(".")[:-1]) name_without_ext = text name_without_space = "_".join(name_without_ext.split()) for sym in ["-", "+", "*", "/", "\"", "."]: name_without_space = "_".join(name_without_space.split(sym)) python_call_string = '%s = Model("%s")' % (name_without_space, name_without_ext) icon = item.icon() pixmap = icon.pixmap(20, 20) itemData = QtCore.QByteArray() dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly) model_id = name_without_ext dataStream.writeString(str(python_call_string)) dataStream.writeString(str(model_id)) mimeData = QtCore.QMimeData() mimeData.setText(python_call_string) mimeData.setData("openalealab/model", itemData) drag = QtGui.QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(QtCore.QPoint(pixmap.width() / 2, pixmap.height() / 2)) drag.setPixmap(pixmap) drag.start(QtCore.Qt.CopyAction) elif category == 'data': p = '%s/%r' % (category, str(obj.filename)) mimetype, mimedata = encode(obj, mimetype='openalealab/data') qmime_data = QtCore.QMimeData() qmime_data.setData(mimetype, mimedata) qmime_data.setText(p) drag = QtGui.QDrag(self) drag.setMimeData(qmime_data) drag.start()