diff --git a/resources/graphs/basic_graph/components.py b/resources/graphs/basic_graph/components.py index 326467740404ba5d93172a13cd8255aaf39ccda4..b553116fcad8615d36328baf81915ffc1efc1350 100644 --- a/resources/graphs/basic_graph/components.py +++ b/resources/graphs/basic_graph/components.py @@ -241,6 +241,8 @@ class BasicNode(): self._graph = None self.x_coord = None self.y_coord = None + self._manually_set_x_coord = False + self._manually_set_y_coord = False # Define expected class types (should all be of "Basic" type). # This is necessary for inheritance, or else child classes will only have access to parent functions. @@ -434,6 +436,22 @@ class BasicNode(): #region Upkeep Functions + def set_x_coord(self, x_coord): + """ + Manually sets node x_coord. + :param x_coord: Coordinate to set for node. + """ + self.x_coord = x_coord + self._manually_set_x_coord = True + + def set_y_coord(self, y_coord): + """ + Manually sets node y_coord. + :param y_coord: Coordinate to set for node. + """ + self.y_coord = y_coord + self._manually_set_y_coord = True + def connect_node(self, neighbor_node, edge_name=None): """ Connects current node to passed node. diff --git a/resources/graphs/basic_graph/graph.py b/resources/graphs/basic_graph/graph.py index f3e10d142c7d63f50b4d425c7f8bb896435324bc..4899f4f0ceee949b67b2711a645907de7f6b3057 100644 --- a/resources/graphs/basic_graph/graph.py +++ b/resources/graphs/basic_graph/graph.py @@ -301,8 +301,11 @@ class BasicGraphDisplay(): # Coord was already taken by another node. Try again. pass - connected_node.x_coord = x_coord - connected_node.y_coord = y_coord + # Set coordinates if not manually set. + if not connected_node._manually_set_x_coord: + connected_node.x_coord = x_coord + if not connected_node._manually_set_y_coord: + connected_node.y_coord = y_coord # Record extreme positions. if x_coord > farthest_x[0]: @@ -370,8 +373,11 @@ class BasicGraphDisplay(): # Coord was already taken by another node. Try again. pass - connected_node.x_coord = x_coord - connected_node.y_coord = y_coord + # Set coordinates if not manually set. + if not connected_node._manually_set_x_coord: + connected_node.x_coord = x_coord + if not connected_node._manually_set_y_coord: + connected_node.y_coord = y_coord # Record extreme positions. if x_coord > farthest_x[0]: