FreeCAD icon indicating copy to clipboard operation
FreeCAD copied to clipboard

Core: Create a SuppressibleExtension to provide the Suppressed property to all the WBs

Open FlachyJoe opened this issue 1 year ago • 6 comments

Many objects can be suppressed, this extension aims to provide a unique visualization in the tree view.

Fix #12361

FlachyJoe avatar Feb 14 '24 22:02 FlachyJoe

@wwmayer could you please take a look? ViewProviderSuppressibleExtension::extensionUpdateData is never called.

EDIT: Ok, done. I spent an hour for search and I found when I asked for help :roll_eyes:

FlachyJoe avatar Feb 15 '24 18:02 FlachyJoe

image

FlachyJoe avatar Feb 15 '24 21:02 FlachyJoe

Ready for review. I have no possibility to debug MacOS nor Windows build, it certainly lacks one new file's mention in a config.

FlachyJoe avatar Feb 16 '24 11:02 FlachyJoe

Back to draft: a crash occurs at object deletion.

FlachyJoe avatar Feb 17 '24 08:02 FlachyJoe

Got it. I was confused by

>>> doc=App.ActiveDocument
>>> doc.Body.addExtension('App::SuppressibleExtension')
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: Extension is not a python addable version: 'App::SuppressibleExtension'

But using App::SuppressibleExtensionPython is ok

>>> doc.Body.addExtension('App::SuppressibleExtensionPython')
>>> doc.Body.ViewObject.addExtension('Gui::ViewProviderSuppressibleExtensionPython')
>>> 

image

FlachyJoe avatar Feb 17 '24 10:02 FlachyJoe

In how far is this related to https://github.com/FreeCAD/FreeCAD/issues/5545? Original ticket in Mantis: https://tracker.freecad.org/view.php?id=402 Forum thread: https://forum.freecad.org/viewtopic.php?t=1070

wwmayer avatar Feb 17 '24 11:02 wwmayer

@wwmayer I don't think a Suppressed object aims to be a Emancipated one (cut from parents).

FlachyJoe avatar Feb 17 '24 14:02 FlachyJoe

I've added a Suppress/Unsuppress action in the tree context menu. This action is only shown if the Suppressed property of the object is not hidden so the action visibility is managed at workbench level. See https://github.com/FlachyJoe/FreeCAD/blob/7b90aea42915c87eaa643c96fe0758b17727a1e6/src/Mod/PartDesign/App/Feature.cpp#L63

    App::SuppressibleExtension::initExtension(this);
    Suppressed.setStatus(App::Property::Status::Hidden, true); //Todo: remove when TNP fixed

FlachyJoe avatar Feb 21 '24 15:02 FlachyJoe

Master does not build (Windows/libpack/visual studio) today. Coming from this PR.

Severity Code Description Project File Line Suppression State Error C2027 use of undefined type 'Gui::Document' FreeCADGui C:\Users\Sky_l\Desktop\Freecad-Src\src\Gui\ViewProviderSuppressibleExtension.cpp 59 Error C2039 'ActionFunction': is not a member of 'Gui' FreeCADGui C:\Users\Sky_l\Desktop\Freecad-Src\src\Gui\ViewProviderSuppressibleExtension.cpp 110 Error C2065 'ActionFunction': undeclared identifier FreeCADGui C:\Users\Sky_l\Desktop\Freecad-Src\src\Gui\ViewProviderSuppressibleExtension.cpp 110 Error C2065 'func': undeclared identifier FreeCADGui C:\Users\Sky_l\Desktop\Freecad-Src\src\Gui\ViewProviderSuppressibleExtension.cpp 110 Error C2039 'ActionFunction': is not a member of 'Gui' FreeCADGui C:\Users\Sky_l\Desktop\Freecad-Src\src\Gui\ViewProviderSuppressibleExtension.cpp 110 Error C2061 syntax error: identifier 'ActionFunction' FreeCADGui C:\Users\Sky_l\Desktop\Freecad-Src\src\Gui\ViewProviderSuppressibleExtension.cpp 110 Error C2065 'func': undeclared identifier FreeCADGui C:\Users\Sky_l\Desktop\Freecad-Src\src\Gui\ViewProviderSuppressibleExtension.cpp 117 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderPrimitive.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderMirror.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderPython.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderBoolean.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderRuledSurface.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderImport.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderExtrusion.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderScale.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProvider2DObject.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderRegularPolygon.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderTorusParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderCurveNet.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderSpline.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderSphereParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderCylinderParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderConeParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderPrism.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderPointParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderEllipseParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderHelixParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderPlaneParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderBox.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderCompound.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderCircleParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderLineParametric.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\CrossSections.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProvider.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderExt.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) PartGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Part\Gui\ViewProviderReference.obj 1 Error LNK1120 1 unresolved externals PartGui C:\Users\Sky_l\Desktop\FC build\Mod\Part\PartGui.pyd 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) SketcherGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Sketcher\Gui\ViewProviderSketch.obj 1 Error LNK2001 unresolved external symbol "public: virtual bool __cdecl Gui::ViewProvider::acceptReorderingObjects(void)const " (?acceptReorderingObjects@ViewProvider@Gui@@UEBA_NXZ) SketcherGui C:\Users\Sky_l\Desktop\FC build\src\Mod\Sketcher\Gui\ViewProviderPython.obj 1

PaddleStroke avatar Feb 27 '24 11:02 PaddleStroke

Thank you @PaddleStroke for the fix. Isn't the CI supposed to fail before the merge?

FlachyJoe avatar Feb 29 '24 20:02 FlachyJoe

The CI is not using the precompiled headers. This is something that is being discussed with @adrianinsaval and @chennes if I recall correctly

PaddleStroke avatar Mar 01 '24 08:03 PaddleStroke

@FlachyJoe Is it still in development ? I can't find the Suppress option in Properties or in the tree context menu in Part Design.

OS: Windows 10 build 19045
Word size of FreeCAD: 64-bit
Version: 0.22.0dev.36277 (Git)
Build type: Release
Branch: main
Hash: 9e1903d46112b3660bf10c6a4537d728101d560b
Python 3.10.13, Qt 5.15.8, Coin 4.0.2, Vtk 9.2.6, OCC 7.6.3
Locale: Polish/Poland (pl_PL)

FEA-eng avatar Mar 05 '24 11:03 FEA-eng

@FEA-eng in PD the Suppress property is hidden (right-click, show all) until the TNP fix is merged due to the problems it can produce in shapes hierarchy.

FlachyJoe avatar Mar 05 '24 14:03 FlachyJoe