Beispiel #1
0
 def register_root(node: Node, root=""):
     if root is None:
         pass
         #print(f"node: {node.name}, doesn't have root")
     elif root in node.roots:
         pass
         #print(f"root {root} allready exists in node")
         # #PROVISIIIIOOONALLLLLL!!!!!
         # node.roots.append(root)
         # node.save()
     else:
         node.roots.append(root)
         node.save()
     return root
    def setStartNode(self, node: Node):
        """
        Sets node as the start node and updates the GUI with it too
        """
        if not node.isEnd:
            self.start.isStart = False
            node.isStart = True

            self.start.cell.draw(Cell.EMPTY)

            self.start = node
            node.cell.setStart()
    def setEndNode(self, node: Node):
        """
        Sets node as the end node and updates the GUI with it too
        """
        if not node.isStart:
            self.end.isEnd = False
            node.isEnd = True

            self.end.cell.draw(Cell.EMPTY)

            self.end = node
            node.cell.setEnd()
    def _setupGrid(self):
        """
        Generates the grid of Cells along with the underlying Nodes that are used to visualize the selected algorithm
        """

        # First, generate the grid
        for x in range(self.numRows):
            for y in range(self.numCols):

                # Make the visual Cell representing the Node at x, y, then add it visually at those coordinates
                cell = Cell(Node(x, y), self)
                self.ui.gridLayout.addWidget(cell, x, y)

        # Then reiterate and populate the neighbors, with diagonals enabled by default
        self.populateNeighbors()
Beispiel #5
0
    def register_node(self,
                      name: str,
                      node_type: Node_type,
                      node_type_id=0,
                      root="") -> Node:
        """ add a node with a node_type
            *args:
                node_type: Node_type
         """
        def register_root(node: Node, root=""):
            if root is None:
                pass
                #print(f"node: {node.name}, doesn't have root")
            elif root in node.roots:
                pass
                #print(f"root {root} allready exists in node")
                # #PROVISIIIIOOONALLLLLL!!!!!
                # node.roots.append(root)
                # node.save()
            else:
                node.roots.append(root)
                node.save()
            return root

        #IF Node_type is not specify: DO nothing
        if node_type == None and node_type_id == 0:
            print("specify the node_type")
            return
        elif node_type_id == 0:
            pass
        elif node_type == None:
            node_type = Node_type.objects(id=node_type_id).first()

        node = Node.objects(name=name).first()
        if node != None:
            print(f"node {node.name}, all ready exists")
            root = register_root(node=node, root=root)
            return node
        else:
            pass

        node = Node()
        node.name = name
        node.node_type_id = node_type.id
        root = register_root(node=node, root=root)
        node.save()

        node_type.nodes.append(node.id)
        node_type.save()
        return node
Beispiel #6
0
 def get_nodes_with_roots(self, node_type: Node_type, root1: Space,
                          root2: Space):
     """ 
     this method will return the allowed nodes, due to the rule
     that the nodes have to be more than one root
         *args:
             node_type: Node_type
             root1: Space.id
             root2: Space.id
         return:
             list(node_id): list(int)
     """
     print("entry to roots")
     nodes = Node.objects().all() \
         .filter(node_type_id=node_type.id)\
         .filter(roots__1__exists =True)\
         .filter(roots = root2.id)\
         .filter(roots = root1.id)
     print("it works!!!!!!!!! to find the root")
     #.filter(roots__1__exists =True)\
     return list(nodes)
Beispiel #7
0
 def get_node(self, node_id: str) -> Node:
     node = Node.objects(id=node_id).first()
     return node