def tree_view_open_selected(self): assert self.view element = self.view.get_selected_element() if isinstance(element, Diagram): self.event_manager.handle(DiagramOpened(element)) else: log.debug(f"No action defined for element {type(element).__name__}")
def test_iconnect(event_manager, element_factory, diagrams): """Test basic glue functionality using CommentItem and CommentLine items.""" diagram = element_factory.create(UML.Diagram) event_manager.handle(DiagramOpened(diagram)) comment = diagram.create(CommentItem, subject=element_factory.create(UML.Comment)) line = diagram.create(CommentLineItem) view = current_diagram_view(diagrams) assert view, "View should be available here" # select handle: handle = line.handles()[-1] move = HandleMove(line, handle, view) handle.pos = (0, 0) item = move.glue(handle.pos) assert item is not None move.connect(handle.pos) cinfo = diagram.connections.get_connection(handle) assert cinfo.constraint is not None assert cinfo.connected is comment, cinfo.connected ConnectorAspect(line, handle, diagram.connections).disconnect() cinfo = diagram.connections.get_connection(handle) assert cinfo is None
def test_connect_comment_and_actor(self): """Test connect/disconnect on comment and actor using comment-line. """ element_factory = self.session.get_service("element_factory") diagram = element_factory.create(UML.Diagram) self.event_manager.handle(DiagramOpened(diagram)) comment = diagram.create(CommentItem, subject=element_factory.create(UML.Comment)) line = diagram.create(CommentLineItem) view = self.get_diagram_view(diagram) assert view, "View should be available here" tool = ConnectHandleTool(view) # Connect one end to the Comment: handle = line.handles()[0] tool.grab_handle(line, handle) handle.pos = (0, 0) sink = tool.glue(line, handle, handle.pos) assert sink is not None assert sink.item is comment tool.connect(line, handle, handle.pos) cinfo = diagram.canvas.get_connection(handle) assert cinfo is not None, None assert cinfo.item is line assert cinfo.connected is comment # Connect the other end to the Actor: actor = diagram.create(ActorItem, subject=element_factory.create(UML.Actor)) handle = line.handles()[-1] tool.grab_handle(line, handle) handle.pos = (0, 0) sink = tool.glue(line, handle, handle.pos) assert sink, f"No sink at {handle.pos}" assert sink.item is actor tool.connect(line, handle, handle.pos) cinfo = view.canvas.get_connection(handle) assert cinfo.item is line assert cinfo.connected is actor # Try to connect far away from any item will only do a full disconnect self.assertEqual(len(comment.subject.annotatedElement), 1, comment.subject.annotatedElement) assert actor.subject in comment.subject.annotatedElement sink = tool.glue(line, handle, (500, 500)) assert sink is None, sink tool.connect(line, handle, (500, 500)) cinfo = view.canvas.get_connection(handle) assert cinfo is None
def tree_view_open_selected(self): assert self._namespace element = self._namespace.get_selected_element() # TODO: Candidate for adapter? if isinstance(element, UML.Diagram): self.event_manager.handle(DiagramOpened(element)) else: log.debug(f"No action defined for element {type(element).__name__}")
def setUp(self): super().setUp() self.component_registry = self.get_service("component_registry") self.event_manager = self.get_service("event_manager") mw = self.get_service("main_window") mw.open() self.main_window = mw self.event_manager.handle(DiagramOpened(self.diagram))
def _new_model_content(self, event): """ Open the toplevel element and load toplevel diagrams. """ # TODO: Make handlers for ModelReady from within the GUI obj for diagram in self.element_factory.select(lambda e: e.isKindOf( UML.Diagram) and not (e.namespace and e.namespace.namespace)): self.event_manager.handle(DiagramOpened(diagram))
def test_show_diagram(session): element_factory = session.get_service("element_factory") diagram = element_factory.create(UML.Diagram) main_w = session.get_service("main_window") main_w.open() event_manager = session.get_service("event_manager") event_manager.handle(DiagramOpened(diagram)) assert get_current_diagram(session) == diagram
def test_connect_comment_and_actor(event_manager, element_factory, diagrams): """Test connect/disconnect on comment and actor using comment-line.""" diagram = element_factory.create(UML.Diagram) event_manager.handle(DiagramOpened(diagram)) comment = diagram.create(CommentItem, subject=element_factory.create(UML.Comment)) line = diagram.create(CommentLineItem) view = current_diagram_view(diagrams) assert view, "View should be available here" handle = line.handles()[0] move = HandleMove(line, handle, view) handle.pos = (0, 0) sink = move.glue(handle.pos) assert sink is not None assert sink.item is comment move.connect(handle.pos) cinfo = diagram.connections.get_connection(handle) assert cinfo is not None, None assert cinfo.item is line assert cinfo.connected is comment # Connect the other end to the Actor: actor = diagram.create(ActorItem, subject=element_factory.create(UML.Actor)) handle = line.handles()[-1] move = HandleMove(line, handle, view) handle.pos = (0, 0) sink = move.glue(handle.pos) assert sink, f"No sink at {handle.pos}" assert sink.item is actor move.connect(handle.pos) cinfo = view.model.connections.get_connection(handle) assert cinfo.item is line assert cinfo.connected is actor # Try to connect far away from any item will only do a full disconnect assert len(comment.subject.annotatedElement ) == 1, comment.subject.annotatedElement assert actor.subject in comment.subject.annotatedElement sink = move.glue((500, 500)) assert sink is None, sink move.connect((500, 500)) cinfo = view.model.connections.get_connection(handle) assert cinfo is None
def tree_view_create_diagram(self): assert self._namespace element = self._namespace.get_selected_element() while not isinstance(element, UML.Package): element = element.namespace diagram = self.element_factory.create(Diagram) diagram.package = element diagram.name = f"{element.name} diagram" if element else "New diagram" self.select_element(diagram) self.event_manager.handle(DiagramOpened(diagram)) self.tree_view_rename_selected()
def test_iconnect(self): """ Test basic glue functionality using CommentItem and CommentLine items. """ element_factory = self.session.get_service("element_factory") diagram = element_factory.create(UML.Diagram) self.event_manager.handle(DiagramOpened(diagram)) comment = diagram.create(CommentItem, subject=element_factory.create(UML.Comment)) actor = diagram.create(ActorItem, subject=element_factory.create(UML.Actor)) actor.matrix.translate(200, 200) diagram.canvas.update_matrix(actor) line = diagram.create(CommentLineItem) view = self.get_diagram_view(diagram) assert view, "View should be available here" comment_bb = view.get_item_bounding_box(comment) # select handle: handle = line.handles()[-1] tool = ConnectHandleTool(view=view) tool.grab_handle(line, handle) handle.pos = (comment_bb.x, comment_bb.y) item = tool.glue(line, handle, handle.pos) assert item is not None tool.connect(line, handle, handle.pos) cinfo = diagram.canvas.get_connection(handle) assert cinfo.constraint is not None assert cinfo.connected is actor, cinfo.connected Connector(line, handle).disconnect() cinfo = diagram.canvas.get_connection(handle) assert cinfo is None
def tree_view_show_in_diagram(self, diagam_id: str): element = self.element_factory.lookup(diagam_id) self.event_manager.handle(DiagramOpened(element))
def _new_model_content(self, event): """Open the toplevel element and load toplevel diagrams.""" for diagram in self.element_factory.select(lambda e: e.isKindOf( Diagram) and not (e.namespace and e.namespace.namespace)): self.event_manager.handle(DiagramOpened(diagram))