Moved base and stock visibility tracking into ViewProvider.

This commit is contained in:
Markus Lampert
2017-09-25 21:07:51 -07:00
parent 974e706748
commit 57b7f6d293

View File

@@ -171,6 +171,41 @@ class ViewProvider:
if prop == 'Stock' and self.obj.Stock and self.obj.Stock.ViewObject and self.obj.Stock.ViewObject.Proxy:
self.obj.Stock.ViewObject.Proxy.onEdit(_OpenCloseResourceEditor)
def baseObjectViewObject(self, obj):
return PathUtil.getPublicObject(self.obj.Proxy.baseObject(obj)).ViewObject
def baseObjectSaveVisibility(self, obj):
baseVO = self.baseObjectViewObject(self.obj)
if baseVO:
self.baseOrigVisibility = baseVO.Visibility
baseVO.Visibility = False
if obj.Base and obj.Base.ViewObject:
obj.Base.ViewObject.Visibility = True
def baseObjectRestoreVisibility(self, obj):
baseVO = self.baseObjectViewObject(self.obj)
if baseVO:
baseVO.Visibility = self.baseOrigVisibility
def setupEditVisibility(self, obj):
self.baseVisibility = False
self.baseOrigVisibility = False
if obj.Base and obj.Base.ViewObject:
self.baseVisibility = obj.Base.ViewObject.Visibility
self.baseObjectSaveVisibility(obj)
self.stockVisibility = False
if obj.Stock and obj.Stock.ViewObject:
self.stockVisibility = obj.Stock.ViewObject.Visibility
self.obj.Stock.ViewObject.Visibility = True
def resetEditVisibility(self, obj):
if obj.Base and obj.Base.ViewObject:
obj.Base.ViewObject.Visibility = self.baseVisibility
self.baseObjectRestoreVisibility(obj)
if obj.Stock and obj.Stock.ViewObject:
obj.Stock.ViewObject.Visibility = self.stockVisibility
class StockEdit(object):
Index = -1
StockType = PathStock.StockType.Unknown
@@ -411,6 +446,7 @@ class TaskPanel:
def __init__(self, vobj, deleteOnReject):
FreeCAD.ActiveDocument.openTransaction(translate("Path_Job", "Edit Job"))
self.vobj = vobj
self.vproxy = vobj.Proxy
self.obj = vobj.Object
self.deleteOnReject = deleteOnReject
self.form = FreeCADGui.PySideUic.loadUi(":/panels/PathEdit.ui")
@@ -440,16 +476,7 @@ class TaskPanel:
self.postProcessorDefaultTooltip = self.form.postProcessor.toolTip()
self.postProcessorArgsDefaultTooltip = self.form.postProcessorArguments.toolTip()
self.baseVisibility = False
self.baseOrigVisibilty = False
if self.obj.Base and self.obj.Base.ViewObject:
self.baseVisibility = self.obj.Base.ViewObject.Visibility
self.baseObjectSaveVisibility(self.obj)
self.stockVisibility = False
if self.obj.Stock and self.obj.Stock.ViewObject:
self.stockVisibility = self.obj.Stock.ViewObject.Visibility
self.obj.Stock.ViewObject.Visibility = True
self.vproxy.setupEditVisibility(self.obj)
self.stockFromBase = None
self.stockFromExisting = None
@@ -457,28 +484,11 @@ class TaskPanel:
self.stockCreateCylinder = None
self.stockEdit = None
def baseObjectViewObject(self, obj):
return PathUtil.getPublicObject(obj.Proxy.baseObject(obj)).ViewObject
def baseObjectSaveVisibility(self, obj):
baseVO = self.baseObjectViewObject(self.obj)
self.baseOrigVisibility = baseVO.Visibility
baseVO.Visibility = False
obj.Base.ViewObject.Visibility = True
def baseObjectRestoreVisibility(self, obj):
baseVO = self.baseObjectViewObject(self.obj)
baseVO.Visibility = self.baseOrigVisibility
def preCleanup(self):
PathLog.track()
FreeCADGui.Selection.removeObserver(self)
if self.obj.Base and self.obj.Base.ViewObject:
self.obj.Base.ViewObject.Visibility = self.baseVisibility
self.baseObjectRestoreVisibility(self.obj)
if self.obj.Stock and self.obj.Stock.ViewObject:
self.obj.Stock.ViewObject.Visibility = self.stockVisibility
self.vobj.Proxy.resetTaskPanel()
self.vproxy.resetEditVisibility(self.obj)
self.vproxy.resetTaskPanel()
def accept(self, resetEdit=True):
PathLog.track()
@@ -531,11 +541,11 @@ class TaskPanel:
selObj = self.form.jobModel.itemData(self.form.jobModel.currentIndex())
if self.obj.Proxy.baseObject(self.obj) != selObj:
self.baseObjectRestoreVisibility(self.obj)
self.vproxy.baseObjectRestoreVisibility(self.obj)
if PathJob.isResourceClone(self.obj, 'Base'):
self.obj.Document.removeObject(self.obj.Base.Name)
self.obj.Base = PathJob.createResourceClone(self.obj, selObj, 'Base', 'Base')
self.baseObjectSaveVisibility(self.obj)
self.vproxy.baseObjectSaveVisibility(self.obj)
self.updateTooltips()
self.stockEdit.getFields(self.obj)