From 12e3f9f22265a449fef9a34a58e4bd95c11ccf22 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Wed, 27 Oct 2021 10:52:14 -0500 Subject: [PATCH] Core: Fix installation conflict with pkgutils --- src/App/FreeCADInit.py | 1 + src/Gui/FreeCADGuiInit.py | 22 ++++++++++++---------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/App/FreeCADInit.py b/src/App/FreeCADInit.py index 0d6cf25899..e6949134af 100644 --- a/src/App/FreeCADInit.py +++ b/src/App/FreeCADInit.py @@ -195,6 +195,7 @@ def InitApplications(): workbenches = content["workbench"] for workbench in workbenches: subdirectory = workbench.Name if not workbench.Subdirectory else workbench.Subdirectory + subdirectory = subdirectory.replace("/",os.path.sep) subdirectory = os.path.join(Dir, subdirectory) classname = workbench.Classname sys.path.insert(0,subdirectory) diff --git a/src/Gui/FreeCADGuiInit.py b/src/Gui/FreeCADGuiInit.py index 419d589d5b..9f06d178a2 100644 --- a/src/Gui/FreeCADGuiInit.py +++ b/src/Gui/FreeCADGuiInit.py @@ -148,20 +148,22 @@ def InitApplications(): workbenches = content["workbench"] for workbench_metadata in workbenches: subdirectory = workbench_metadata.Name if not workbench_metadata.Subdirectory else workbench_metadata.Subdirectory + subdirectory = subdirectory.replace("/",os.path.sep) subdirectory = os.path.join(Dir, subdirectory) RunInitGuiPy(subdirectory) - # Brute force this for now: + # Try to generate a new icon from the metadata-specified information classname = workbench_metadata.Classname - wb_handle = FreeCAD.Gui.getWorkbench(classname) - if wb_handle: - GeneratePackageIcon(dir, subdirectory, workbench_metadata, wb_handle) - else: - Log("Failed to get handle to {classname} -- no icon can be generated, check classname in package.xml\n") - - - - + if classname: + try: + wb_handle = FreeCAD.Gui.getWorkbench(classname) + GeneratePackageIcon(dir, subdirectory, workbench_metadata, wb_handle) + except Exception: + Log(f"Failed to get handle to {classname} -- no icon can be generated, check classname in package.xml\n") + Log("Available workbenches at calltime were:\n") + all_workbenches = FreeCAD.Gui.listWorkbenches() + for wb in all_workbenches: + Log(f" * {wb}\n") else: continue # The package content says there are no workbenches here, so just skip else: