fix right click service on custom nodes with empty services, load services to custom node when drawn on canvas, show current services for custom node's service dialog
This commit is contained in:
parent
b3463f1fb7
commit
09cc65646f
3 changed files with 23 additions and 3 deletions
|
@ -736,6 +736,9 @@ class CoreClient:
|
|||
image=image,
|
||||
emane=emane,
|
||||
)
|
||||
if NodeUtils.is_custom(model):
|
||||
services = NodeUtils.get_custom_node_services(self.app.guiconfig, model)
|
||||
node.services[:] = services
|
||||
logging.debug(
|
||||
"adding node to core session: %s, coords: (%s, %s), name: %s",
|
||||
self.session_id,
|
||||
|
|
|
@ -7,6 +7,7 @@ from typing import TYPE_CHECKING, Any, Set
|
|||
|
||||
from core.gui.dialogs.dialog import Dialog
|
||||
from core.gui.dialogs.serviceconfig import ServiceConfigDialog
|
||||
from core.gui.nodeutils import NodeUtils
|
||||
from core.gui.themes import FRAME_PAD, PADX, PADY
|
||||
from core.gui.widgets import CheckboxList, ListboxScroll
|
||||
|
||||
|
@ -35,10 +36,14 @@ class NodeServiceDialog(Dialog):
|
|||
services = canvas_node.core_node.services
|
||||
model = canvas_node.core_node.model
|
||||
if len(services) == 0:
|
||||
services = set(self.app.core.default_services[model])
|
||||
if not NodeUtils.is_custom(canvas_node.core_node.model):
|
||||
services = set(self.app.core.default_services[model])
|
||||
else:
|
||||
services = set(
|
||||
NodeUtils.get_custom_node_services(self.app.guiconfig, model)
|
||||
)
|
||||
else:
|
||||
services = set(services)
|
||||
|
||||
self.current_services = services
|
||||
self.draw()
|
||||
|
||||
|
@ -137,7 +142,8 @@ class NodeServiceDialog(Dialog):
|
|||
|
||||
def click_save(self):
|
||||
if (
|
||||
self.current_services
|
||||
self.canvas_node.core_node.model not in self.app.core.default_services
|
||||
or self.current_services
|
||||
!= self.app.core.default_services[self.canvas_node.core_node.model]
|
||||
):
|
||||
self.canvas_node.core_node.services[:] = self.current_services
|
||||
|
|
|
@ -106,6 +106,17 @@ class NodeUtils:
|
|||
logging.error("invalid icon: %s", core_node.icon)
|
||||
return image
|
||||
|
||||
@classmethod
|
||||
def is_custom(cls, model):
|
||||
return model not in cls.NODE_MODELS
|
||||
|
||||
@classmethod
|
||||
def get_custom_node_services(cls, gui_config, name):
|
||||
for m in gui_config["nodes"]:
|
||||
if m["name"] == name:
|
||||
return m["services"]
|
||||
return []
|
||||
|
||||
@classmethod
|
||||
def setup(cls):
|
||||
nodes = [
|
||||
|
|
Loading…
Add table
Reference in a new issue