godot/mapping.py
def map_model(self, new):
        """ Maps a domain model to the diagram """

        logger.debug("Mapping the domain model!")
        dot = Dot()

        self.diagram.clear_canvas()

        for node_mapping in self.nodes:
            ct = node_mapping.containment_trait
            logger.debug("Mapping elements contained by the '%s' trait" % ct)
            if hasattr(new, ct):
                elements = getattr(new, ct)
                logger.debug("%d element(s) found" % len(elements))
                for element in elements:
                    pydot_node = Node(str(id(element)))
                    dot_attrs = node_mapping.dot_node
                    if dot_attrs is not None:
                        self._style_node(pydot_node, dot_attrs)
                    dot.add_node(pydot_node)

                    new.on_trait_change(self.map_element, ct+"_items")

        logger.debug("Retrieving xdot data and forming pydot graph!")
        xdot = graph_from_dot_data(dot.create(self.program, "xdot"))
        parser = XDotParser()

        for node in xdot.get_node_list():
            diagram_node = parser.parse_node(node)
            logger.debug(
                "Parsed node [%s] and received diagram node [%s]" %
                (node, diagram_node)
            )
            if diagram_node is not None:
                for node_mapping in self.nodes: # FIXME: slow
                    ct = node_mapping.containment_trait
                    for element in getattr(new, ct):
                        if str(id(element)) == diagram_node.dot_node.get_name():
                            logger.debug(
                                "Referencing element [%s] from diagram node [%s]" %
                                (element, diagram_node)
                            )
                            diagram_node.element = element
                            break

                    # Tools
                    if isinstance(diagram_node.element, node_mapping.element):
                        for tool in node_mapping.tools:
                            logger.debug(
                                "Adding tool [%s] to diagram node [%s]" %
                                (tool, diagram_node)
                            )
                            diagram_node.tools.append(tool(diagram_node))

                else:
                    if diagram_node.element is None:
                        logger.warning("Diagram node not referenced to element")

                self.diagram.diagram_canvas.add(diagram_node)

        del parser
def map_model(self, new):
        """ Maps a domain model to the diagram """

        logger.debug("Mapping the domain model!")
        dot = Dot()

        self.diagram.clear_canvas()

        for node_mapping in self.nodes:
            ct = node_mapping.containment_trait
            logger.debug("Mapping elements contained by the '%s' trait" % ct)
            if hasattr(new, ct):
                elements = getattr(new, ct)
                logger.debug("%d element(s) found" % len(elements))
                for element in elements:
                    pydot_node = Node(str(id(element)))
                    dot_attrs = node_mapping.dot_node
                    if dot_attrs is not None:
                        self._style_node(pydot_node, dot_attrs)
                    dot.add_node(pydot_node)

                    new.on_trait_change(self.map_element, ct+"_items")

        logger.debug("Retrieving xdot data and forming pydot graph!")
        xdot = graph_from_dot_data(dot.create(self.program, "xdot"))
        parser = XDotParser()

        for node in xdot.get_node_list():
            diagram_node = parser.parse_node(node)
            logger.debug(
                "Parsed node [%s] and received diagram node [%s]" %
                (node, diagram_node)
            )
            if diagram_node is not None:
                for node_mapping in self.nodes: # FIXME: slow
                    ct = node_mapping.containment_trait
                    for element in getattr(new, ct):
                        if str(id(element)) == diagram_node.dot_node.get_name():
                            logger.debug(
                                "Referencing element [%s] from diagram node [%s]" %
                                (element, diagram_node)
                            )
                            diagram_node.element = element
                            break

                    # Tools
                    if isinstance(diagram_node.element, node_mapping.element):
                        for tool in node_mapping.tools:
                            logger.debug(
                                "Adding tool [%s] to diagram node [%s]" %
                                (tool, diagram_node)
                            )
                            diagram_node.tools.append(tool(diagram_node))

                else:
                    if diagram_node.element is None:
                        logger.warning("Diagram node not referenced to element")

                self.diagram.diagram_canvas.add(diagram_node)

        del parser
def map_model ( self , new ) : logger . debug ( "Mapping the domain model!" ) dot = Dot ( ) self . diagram . clear_canvas ( ) for node_mapping in self . nodes : ct = node_mapping . containment_trait logger . debug ( "Mapping elements contained by the '%s' trait" % ct ) if hasattr ( new , ct ) : elements = getattr ( new , ct ) logger . debug ( "%d element(s) found" % len ( elements ) ) for element in elements : pydot_node = Node ( str ( id ( element ) ) ) dot_attrs = node_mapping . dot_node if dot_attrs is not None : self . _style_node ( pydot_node , dot_attrs ) dot . add_node ( pydot_node ) new . on_trait_change ( self . map_element , ct + "_items" ) logger . debug ( "Retrieving xdot data and forming pydot graph!" ) xdot = graph_from_dot_data ( dot . create ( self . program , "xdot" ) ) parser = XDotParser ( ) for node in xdot . get_node_list ( ) : diagram_node = parser . parse_node ( node ) logger . debug ( "Parsed node [%s] and received diagram node [%s]" % ( node , diagram_node ) ) if diagram_node is not None : for node_mapping in self . nodes : # FIXME: slow ct = node_mapping . containment_trait for element in getattr ( new , ct ) : if str ( id ( element ) ) == diagram_node . dot_node . get_name ( ) : logger . debug ( "Referencing element [%s] from diagram node [%s]" % ( element , diagram_node ) ) diagram_node . element = element break # Tools if isinstance ( diagram_node . element , node_mapping . element ) : for tool in node_mapping . tools : logger . debug ( "Adding tool [%s] to diagram node [%s]" % ( tool , diagram_node ) ) diagram_node . tools . append ( tool ( diagram_node ) ) else : if diagram_node . element is None : logger . warning ( "Diagram node not referenced to element" ) self . diagram . diagram_canvas . add ( diagram_node ) del parser
Maps a domain model to the diagram
Maps a domain model to the diagram