From 72eb13d94192baca3c2443f25023462aa95e9d84 Mon Sep 17 00:00:00 2001 From: grossmj Date: Mon, 25 Jul 2022 20:22:12 +0200 Subject: [PATCH] Allow default symbol theme to be configured --- conf/gns3_server.conf | 5 +++++ gns3server/controller/symbols.py | 7 +++++-- gns3server/schemas/config.py | 12 ++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/conf/gns3_server.conf b/conf/gns3_server.conf index d4b94a1b..d1143eb4 100644 --- a/conf/gns3_server.conf +++ b/conf/gns3_server.conf @@ -49,6 +49,11 @@ symbols_path = /home/gns3/GNS3/symbols ; Path where custom configs are stored configs_path = /home/gns3/GNS3/configs +; Default symbol theme +; Currently available themes are "Classic", Affinity-square-blue", "Affinity-square-red" +; "Affinity-square-gray", "Affinity-circle-blue", "Affinity-circle-red" and "Affinity-circle-gray" +default_symbol_theme = Affinity-square-blue + ; Option to automatically send crash reports to the GNS3 team report_errors = True diff --git a/gns3server/controller/symbols.py b/gns3server/controller/symbols.py index 11fbc35c..053d0ab3 100644 --- a/gns3server/controller/symbols.py +++ b/gns3server/controller/symbols.py @@ -43,7 +43,9 @@ class Symbols: # Keep a cache of symbols size self._symbol_size_cache = {} - self._current_theme = "Affinity-square-blue" + + self._server_config = Config.instance().settings.Server + self._current_theme = self._server_config.default_symbol_theme self._themes = BUILTIN_SYMBOL_THEMES @property @@ -66,7 +68,8 @@ class Symbols: theme = self._themes.get(symbol_theme, None) if not theme: - raise ControllerNotFoundError(f"Could not find symbol theme '{symbol_theme}'") + log.warning(f"Could not find symbol theme '{self._current_theme}'") + return None symbol_path = theme.get(symbol) if symbol_path not in self._symbols_path: log.warning(f"Default symbol {symbol} was not found") diff --git a/gns3server/schemas/config.py b/gns3server/schemas/config.py index 9d4aae97..d2efdcc0 100644 --- a/gns3server/schemas/config.py +++ b/gns3server/schemas/config.py @@ -109,6 +109,17 @@ class ServerProtocol(str, Enum): https = "https" +class BuiltinSymbolTheme(str, Enum): + + classic = "Classic" + affinity_square_blue = "Affinity-square-blue" + affinity_square_red = "Affinity-square-red" + affinity_square_gray = "Affinity-square-gray" + affinity_circle_blue = "Affinity-circle-blue" + affinity_circle_red = "Affinity-circle-red" + affinity_circle_gray = "Affinity-circle-gray" + + class ServerSettings(BaseModel): local: bool = False @@ -124,6 +135,7 @@ class ServerSettings(BaseModel): appliances_path: str = "~/GNS3/appliances" symbols_path: str = "~/GNS3/symbols" configs_path: str = "~/GNS3/configs" + default_symbol_theme: BuiltinSymbolTheme = BuiltinSymbolTheme.affinity_square_blue report_errors: bool = True additional_images_paths: List[str] = Field(default_factory=list) console_start_port_range: int = Field(5000, gt=0, le=65535)