track nodes whose services have been modified by the user to differentiate between newly created nodes and default type nodes with empty services
This commit is contained in:
parent
ede9e93b52
commit
875739e748
3 changed files with 23 additions and 1 deletions
|
@ -110,6 +110,8 @@ class CoreClient:
|
||||||
self.xml_dir = None
|
self.xml_dir = None
|
||||||
self.xml_file = None
|
self.xml_file = None
|
||||||
|
|
||||||
|
self.modified_service_nodes = set()
|
||||||
|
|
||||||
def reset(self):
|
def reset(self):
|
||||||
# helpers
|
# helpers
|
||||||
self.interfaces_manager.reset()
|
self.interfaces_manager.reset()
|
||||||
|
@ -124,6 +126,7 @@ class CoreClient:
|
||||||
self.emane_config = None
|
self.emane_config = None
|
||||||
self.service_configs.clear()
|
self.service_configs.clear()
|
||||||
self.file_configs.clear()
|
self.file_configs.clear()
|
||||||
|
self.modified_service_nodes.clear()
|
||||||
for mobility_player in self.mobility_players.values():
|
for mobility_player in self.mobility_players.values():
|
||||||
mobility_player.handle_close()
|
mobility_player.handle_close()
|
||||||
self.mobility_players.clear()
|
self.mobility_players.clear()
|
||||||
|
@ -807,6 +810,9 @@ class CoreClient:
|
||||||
logging.error("unknown node: %s", node_id)
|
logging.error("unknown node: %s", node_id)
|
||||||
continue
|
continue
|
||||||
del self.canvas_nodes[node_id]
|
del self.canvas_nodes[node_id]
|
||||||
|
|
||||||
|
self.modified_service_nodes.discard(node_id)
|
||||||
|
|
||||||
if node_id in self.mobility_configs:
|
if node_id in self.mobility_configs:
|
||||||
del self.mobility_configs[node_id]
|
del self.mobility_configs[node_id]
|
||||||
if node_id in self.wlan_configs:
|
if node_id in self.wlan_configs:
|
||||||
|
@ -1047,3 +1053,6 @@ class CoreClient:
|
||||||
config = self.emane_model_configs.get(_from)
|
config = self.emane_model_configs.get(_from)
|
||||||
if config:
|
if config:
|
||||||
self.emane_model_configs[_to] = config
|
self.emane_model_configs[_to] = config
|
||||||
|
|
||||||
|
def service_been_modified(self, node_id: int) -> bool:
|
||||||
|
return node_id in self.modified_service_nodes
|
||||||
|
|
|
@ -36,8 +36,14 @@ class NodeServiceDialog(Dialog):
|
||||||
services = canvas_node.core_node.services
|
services = canvas_node.core_node.services
|
||||||
model = canvas_node.core_node.model
|
model = canvas_node.core_node.model
|
||||||
if len(services) == 0:
|
if len(services) == 0:
|
||||||
if not NodeUtils.is_custom(canvas_node.core_node.model):
|
# not custom node type and node's services haven't been modified before
|
||||||
|
if not NodeUtils.is_custom(
|
||||||
|
canvas_node.core_node.model
|
||||||
|
) and not self.app.core.service_been_modified(self.node_id):
|
||||||
services = set(self.app.core.default_services[model])
|
services = set(self.app.core.default_services[model])
|
||||||
|
# services of default type nodes were modified to be empty
|
||||||
|
elif canvas_node.core_node.id in self.app.core.modified_service_nodes:
|
||||||
|
services = set()
|
||||||
else:
|
else:
|
||||||
services = set(
|
services = set(
|
||||||
NodeUtils.get_custom_node_services(self.app.guiconfig, model)
|
NodeUtils.get_custom_node_services(self.app.guiconfig, model)
|
||||||
|
@ -141,12 +147,14 @@ class NodeServiceDialog(Dialog):
|
||||||
)
|
)
|
||||||
|
|
||||||
def click_save(self):
|
def click_save(self):
|
||||||
|
# if node is custom type or current services are not the default services then set core node services and add node to modified services node set
|
||||||
if (
|
if (
|
||||||
self.canvas_node.core_node.model not in self.app.core.default_services
|
self.canvas_node.core_node.model not in self.app.core.default_services
|
||||||
or self.current_services
|
or self.current_services
|
||||||
!= self.app.core.default_services[self.canvas_node.core_node.model]
|
!= self.app.core.default_services[self.canvas_node.core_node.model]
|
||||||
):
|
):
|
||||||
self.canvas_node.core_node.services[:] = self.current_services
|
self.canvas_node.core_node.services[:] = self.current_services
|
||||||
|
self.app.core.modified_service_nodes.add(self.canvas_node.core_node.id)
|
||||||
else:
|
else:
|
||||||
if len(self.canvas_node.core_node.services) > 0:
|
if len(self.canvas_node.core_node.services) > 0:
|
||||||
self.canvas_node.core_node.services[:] = []
|
self.canvas_node.core_node.services[:] = []
|
||||||
|
|
|
@ -856,6 +856,11 @@ class CanvasGraph(tk.Canvas):
|
||||||
node = CanvasNode(
|
node = CanvasNode(
|
||||||
self.master, scaled_x, scaled_y, copy, self.nodes[canvas_nid].image
|
self.master, scaled_x, scaled_y, copy, self.nodes[canvas_nid].image
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# add new node to modified_service_nodes set if that set contains the to_copy node
|
||||||
|
if self.app.core.service_been_modified(core_node.id):
|
||||||
|
self.app.core.modified_service_nodes.add(copy.id)
|
||||||
|
|
||||||
copy_map[canvas_nid] = node.id
|
copy_map[canvas_nid] = node.id
|
||||||
self.core.canvas_nodes[copy.id] = node
|
self.core.canvas_nodes[copy.id] = node
|
||||||
self.nodes[node.id] = node
|
self.nodes[node.id] = node
|
||||||
|
|
Loading…
Add table
Reference in a new issue