From 2e29b3413f180a3f6d36067573f8bb136f20c82d Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 3 Mar 2020 21:04:41 +0100 Subject: [PATCH] FEM: use python base constraint class, material obj --- .../femguiobjects/_ViewProviderFemMaterial.py | 60 +++---------------- src/Mod/Fem/femobjects/_FemMaterial.py | 13 ++-- 2 files changed, 16 insertions(+), 57 deletions(-) diff --git a/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py b/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py index 8ee7910c9c..ea27cd51e6 100644 --- a/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py +++ b/src/Mod/Fem/femguiobjects/_ViewProviderFemMaterial.py @@ -30,7 +30,7 @@ __url__ = "http://www.freecadweb.org" import FreeCAD import FreeCADGui -import FemGui # needed to display the icons in TreeView +from . import ViewProviderFemConstraint # for the panel from FreeCAD import Units @@ -39,66 +39,24 @@ from PySide import QtCore from PySide import QtGui import sys -False if FemGui.__name__ else True # flake8, dummy FemGui usage if sys.version_info.major >= 3: unicode = str -class _ViewProviderFemMaterial: +class _ViewProviderFemMaterial(ViewProviderFemConstraint.ViewProxy): "A View Provider for the FemMaterial object" - def __init__(self, vobj): - vobj.Proxy = self - def getIcon(self): return ":/icons/fem-material.svg" - def attach(self, vobj): - self.ViewObject = vobj - self.Object = vobj.Object - - def updateData(self, obj, prop): - return - - def onChanged(self, vobj, prop): - return - - def setEdit(self, vobj, mode): - # hide all meshes - for o in FreeCAD.ActiveDocument.Objects: - if o.isDerivedFrom("Fem::FemMeshObject"): - o.ViewObject.hide() - # show task panel - taskd = _TaskPanelFemMaterial(self.Object) - taskd.obj = vobj.Object - FreeCADGui.Control.showDialog(taskd) - return True - - def unsetEdit(self, vobj, mode): - FreeCADGui.Control.closeDialog() - return True - - # overwrite the doubleClicked of material object python to make sure no other Material taskd - # (and thus no selection observer) is still active - def doubleClicked(self, vobj): - guidoc = FreeCADGui.getDocument(vobj.Object.Document) - # check if another VP is in edit mode - # https://forum.freecadweb.org/viewtopic.php?t=13077#p104702 - if not guidoc.getInEdit(): - guidoc.setEdit(vobj.Object.Name) - else: - from PySide.QtGui import QMessageBox - message = "Active Task Dialog found! Please close this one before opening a new one!" - QMessageBox.critical(None, "Error in tree view", message) - FreeCAD.Console.PrintError(message + "\n") - return True - - def __getstate__(self): - return None - - def __setstate__(self, state): - return None + def setEdit(self, vobj, mode=0): + ViewProviderFemConstraint.ViewProxy.setEdit( + self, + vobj, + mode, + _TaskPanelFemMaterial + ) class _TaskPanelFemMaterial: diff --git a/src/Mod/Fem/femobjects/_FemMaterial.py b/src/Mod/Fem/femobjects/_FemMaterial.py index eb661163f0..16fe442e08 100644 --- a/src/Mod/Fem/femobjects/_FemMaterial.py +++ b/src/Mod/Fem/femobjects/_FemMaterial.py @@ -27,10 +27,16 @@ __url__ = "http://www.freecadweb.org" # \ingroup FEM # \brief FEM material +from . import FemConstraint -class _FemMaterial: + +class _FemMaterial(FemConstraint.Proxy): "The FEM Material object" + + Type = "Fem::Material" + def __init__(self, obj): + super(_FemMaterial, self).__init__(obj) obj.addProperty( "App::PropertyLinkSubList", "References", @@ -44,8 +50,3 @@ class _FemMaterial: "Material type: fluid or solid" ) obj.Category = ["Solid", "Fluid"] # used in TaskPanel - obj.Proxy = self - self.Type = "Fem::Material" - - def execute(self, obj): - return