From 0d3f3c4c6a431bf2961c6fd97d5862b843f41959 Mon Sep 17 00:00:00 2001 From: abmajith Date: Mon, 13 Apr 2026 14:51:46 +0200 Subject: [PATCH 1/3] added environment based orange canvas group data processing discovery --- src/ewoksorange/gui/canvas/main.py | 36 ++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/ewoksorange/gui/canvas/main.py b/src/ewoksorange/gui/canvas/main.py index cc375ffa..622a2241 100644 --- a/src/ewoksorange/gui/canvas/main.py +++ b/src/ewoksorange/gui/canvas/main.py @@ -1,7 +1,7 @@ import logging import sys from contextlib import contextmanager - +import os from ...orange_version import ORANGE_VERSION if ORANGE_VERSION == ORANGE_VERSION.oasys_fork: @@ -78,6 +78,38 @@ def arg_parser(): from orangecanvas.main import main as _main +def _apply_registry_filter(): + """ + Patches the WidgetRegistry to hide categories based on an environment variable. + """ + filter_env = os.environ.get("EWOKS_WIDGET_FILTER") + if not filter_env: + return + + try: + from orangecanvas.registry import WidgetRegistry + except ImportError: + try: + from Orange.canvas.registry import WidgetRegistry + except ImportError: + return + + original_categories_method = WidgetRegistry.categories + + def patched_categories(self): + # Call the real method to get all discovered categories + all_cats = original_categories_method(self) + + # Define what we want to keep + keep = {cat.strip() for cat in filter_env.split(",")} + + # Return a filtered list to the UI + return [c for c in all_cats if c.name in keep] + + # Apply the patch to the class method + WidgetRegistry.categories = patched_categories + + @contextmanager def _temporary_log_handlers(log_level): logger = logging.getLogger("ewoksorange") @@ -119,5 +151,5 @@ def main(argv=None): from orangecontrib.ewokstest import enable_ewokstest_category enable_ewokstest_category() - + _apply_registry_filter() _main(argv) From 266cb8b08e507d9eb94459c7eb6d8317a2301ceb Mon Sep 17 00:00:00 2001 From: abmajith Date: Mon, 13 Apr 2026 14:58:39 +0200 Subject: [PATCH 2/3] updated the function doc --- src/ewoksorange/gui/canvas/main.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/ewoksorange/gui/canvas/main.py b/src/ewoksorange/gui/canvas/main.py index 622a2241..cfa351f5 100644 --- a/src/ewoksorange/gui/canvas/main.py +++ b/src/ewoksorange/gui/canvas/main.py @@ -80,7 +80,7 @@ def arg_parser(): def _apply_registry_filter(): """ - Patches the WidgetRegistry to hide categories based on an environment variable. + Patches the WidgetRegistry to show categories based on an environment variable. """ filter_env = os.environ.get("EWOKS_WIDGET_FILTER") if not filter_env: @@ -95,18 +95,11 @@ def _apply_registry_filter(): return original_categories_method = WidgetRegistry.categories - def patched_categories(self): - # Call the real method to get all discovered categories all_cats = original_categories_method(self) - - # Define what we want to keep keep = {cat.strip() for cat in filter_env.split(",")} - - # Return a filtered list to the UI return [c for c in all_cats if c.name in keep] - # Apply the patch to the class method WidgetRegistry.categories = patched_categories From 5f4756bca0a7a262c4c218fcca1b593791cc137d Mon Sep 17 00:00:00 2001 From: abmajith Date: Mon, 13 Apr 2026 14:59:05 +0200 Subject: [PATCH 3/3] ruff format --- src/ewoksorange/gui/canvas/main.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ewoksorange/gui/canvas/main.py b/src/ewoksorange/gui/canvas/main.py index cfa351f5..2bc08b80 100644 --- a/src/ewoksorange/gui/canvas/main.py +++ b/src/ewoksorange/gui/canvas/main.py @@ -95,6 +95,7 @@ def _apply_registry_filter(): return original_categories_method = WidgetRegistry.categories + def patched_categories(self): all_cats = original_categories_method(self) keep = {cat.strip() for cat in filter_env.split(",")}