remove CoreClient.modified_service_node. When a new CORE node is created, assign default services right away (instead of leaving it empty), therefore no more confusion whether [] means empty service or means CORE node with default services
This commit is contained in:
parent
4037da49c2
commit
580641f5d9
3 changed files with 6 additions and 55 deletions
|
@ -3,11 +3,10 @@ core node services
|
|||
"""
|
||||
import tkinter as tk
|
||||
from tkinter import messagebox, ttk
|
||||
from typing import TYPE_CHECKING, Any, Set
|
||||
from typing import TYPE_CHECKING, Any
|
||||
|
||||
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
|
||||
|
||||
|
@ -17,13 +16,7 @@ if TYPE_CHECKING:
|
|||
|
||||
|
||||
class NodeServiceDialog(Dialog):
|
||||
def __init__(
|
||||
self,
|
||||
master: Any,
|
||||
app: "Application",
|
||||
canvas_node: "CanvasNode",
|
||||
services: Set[str] = None,
|
||||
):
|
||||
def __init__(self, master: Any, app: "Application", canvas_node: "CanvasNode"):
|
||||
title = f"{canvas_node.core_node.name} Services"
|
||||
super().__init__(master, app, title, modal=True)
|
||||
self.app = app
|
||||
|
@ -32,24 +25,7 @@ class NodeServiceDialog(Dialog):
|
|||
self.groups = None
|
||||
self.services = None
|
||||
self.current = None
|
||||
if services is None:
|
||||
services = canvas_node.core_node.services
|
||||
model = canvas_node.core_node.model
|
||||
if len(services) == 0:
|
||||
# not custom node type and node's services haven't been modified before
|
||||
if not NodeUtils.is_custom(
|
||||
canvas_node.core_node.type, 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 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:
|
||||
services = set(
|
||||
NodeUtils.get_custom_node_services(self.app.guiconfig, model)
|
||||
)
|
||||
else:
|
||||
services = set(services)
|
||||
services = set(canvas_node.core_node.services)
|
||||
self.current_services = services
|
||||
self.draw()
|
||||
|
||||
|
@ -103,7 +79,7 @@ class NodeServiceDialog(Dialog):
|
|||
button.grid(row=0, column=1, sticky="ew", padx=PADX)
|
||||
button = ttk.Button(frame, text="Remove", command=self.click_remove)
|
||||
button.grid(row=0, column=2, sticky="ew", padx=PADX)
|
||||
button = ttk.Button(frame, text="Cancel", command=self.click_cancel)
|
||||
button = ttk.Button(frame, text="Cancel", command=self.destroy)
|
||||
button.grid(row=0, column=3, sticky="ew")
|
||||
|
||||
# trigger group change
|
||||
|
@ -154,22 +130,7 @@ class NodeServiceDialog(Dialog):
|
|||
|
||||
def click_save(self):
|
||||
core_node = self.canvas_node.core_node
|
||||
# custom type node or CORE node with custom services
|
||||
if (
|
||||
core_node.model not in self.app.core.default_services
|
||||
or self.current_services != self.app.core.default_services[core_node.model]
|
||||
):
|
||||
core_node.services[:] = self.current_services
|
||||
self.app.core.modified_service_nodes.add(core_node.id)
|
||||
# custom services CORE node but modified back to having default services
|
||||
# or just CORE nodes that don't get any change
|
||||
else:
|
||||
core_node.services[:] = self.current_services
|
||||
self.app.core.modified_service_nodes.discard(core_node.id)
|
||||
self.destroy()
|
||||
|
||||
def click_cancel(self):
|
||||
self.current_services = None
|
||||
core_node.services[:] = self.current_services
|
||||
self.destroy()
|
||||
|
||||
def click_remove(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue