def _on_drag_data_received(self, view, context, x, y, data, info, time): """ Handle data dropped on the canvas. """ if ( data and data.get_format() == 8 and info == DiagramPage.VIEW_TARGET_TOOLBOX_ACTION ): tool = self.toolbox.get_tool(data.get_data().decode()) tool.create_item((x, y)) context.finish(True, False, time) elif ( data and data.get_format() == 8 and info == DiagramPage.VIEW_TARGET_ELEMENT_ID ): print("drag_data_received:", data.get_data(), info) n, p = data.get_data().decode().split("#") element = self.element_factory.lookup(n) assert element # TODO: use adapters to execute code below q = type(element) if p: q = q, p item_class = get_diagram_item(q) if isinstance(element, UML.Diagram): self.action_manager.execute("OpenModelElement") elif item_class: tx = Transaction() item = self.diagram.create(item_class) assert item x, y = view.get_matrix_v2i(item).transform_point(x, y) item.matrix.translate(x, y) item.subject = element tx.commit() view.unselect_all() view.focused_item = item else: log.warning( "No graphical representation for UML element %s" % type(element).__name__ ) context.finish(True, False, time) else: context.finish(False, False, time)
def _on_drag_data_received(self, view, context, x, y, data, info, time): """ Handle data dropped on the canvas. """ if (data and data.get_format() == 8 and info == DiagramPage.VIEW_TARGET_TOOLBOX_ACTION): tool = self.toolbox.get_tool(data.get_data().decode()) tool.create_item((x, y)) context.finish(True, False, time) elif (data and data.get_format() == 8 and info == DiagramPage.VIEW_TARGET_ELEMENT_ID): print("drag_data_received:", data.get_data(), info) n, p = data.get_data().decode().split("#") element = self.element_factory.lookup(n) assert element # TODO: use adapters to execute code below q = type(element) if p: q = q, p item_class = get_diagram_item(q) if isinstance(element, UML.Diagram): self.action_manager.execute("OpenModelElement") elif item_class: tx = Transaction() item = self.diagram.create(item_class) assert item x, y = view.get_matrix_v2i(item).transform_point(x, y) item.matrix.translate(x, y) item.subject = element tx.commit() view.unselect_all() view.focused_item = item else: log.warning("No graphical representation for UML element %s" % type(element).__name__) context.finish(True, False, time) else: context.finish(False, False, time)