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,
|
image=image,
|
||||||
emane=emane,
|
emane=emane,
|
||||||
)
|
)
|
||||||
|
if NodeUtils.is_custom(model):
|
||||||
|
services = NodeUtils.get_custom_node_services(self.app.guiconfig, model)
|
||||||
|
node.services[:] = services
|
||||||
logging.debug(
|
logging.debug(
|
||||||
"adding node to core session: %s, coords: (%s, %s), name: %s",
|
"adding node to core session: %s, coords: (%s, %s), name: %s",
|
||||||
self.session_id,
|
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.dialog import Dialog
|
||||||
from core.gui.dialogs.serviceconfig import ServiceConfigDialog
|
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.themes import FRAME_PAD, PADX, PADY
|
||||||
from core.gui.widgets import CheckboxList, ListboxScroll
|
from core.gui.widgets import CheckboxList, ListboxScroll
|
||||||
|
|
||||||
|
@ -35,10 +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:
|
||||||
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:
|
else:
|
||||||
services = set(services)
|
services = set(services)
|
||||||
|
|
||||||
self.current_services = services
|
self.current_services = services
|
||||||
self.draw()
|
self.draw()
|
||||||
|
|
||||||
|
@ -137,7 +142,8 @@ class NodeServiceDialog(Dialog):
|
||||||
|
|
||||||
def click_save(self):
|
def click_save(self):
|
||||||
if (
|
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.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
|
||||||
|
|
|
@ -106,6 +106,17 @@ class NodeUtils:
|
||||||
logging.error("invalid icon: %s", core_node.icon)
|
logging.error("invalid icon: %s", core_node.icon)
|
||||||
return image
|
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
|
@classmethod
|
||||||
def setup(cls):
|
def setup(cls):
|
||||||
nodes = [
|
nodes = [
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue