示例#1
0
 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__}")
示例#2
0
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
示例#3
0
    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
示例#4
0
 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__}")
示例#5
0
 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))
示例#6
0
 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))
示例#7
0
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
示例#8
0
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
示例#9
0
    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()
示例#10
0
    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
示例#11
0
 def tree_view_show_in_diagram(self, diagam_id: str):
     element = self.element_factory.lookup(diagam_id)
     self.event_manager.handle(DiagramOpened(element))
示例#12
0
 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))