assembly: added a few context menu actions
* ElementGroup: sort elements by label * Constraint: toggle disable * Assembly: toggle freeze Closes #80
This commit is contained in:
parent
ed4b92ad23
commit
c83fbce99c
66
assembly.py
66
assembly.py
|
@ -1777,6 +1777,25 @@ class AsmConstraint(AsmGroup):
|
||||||
|
|
||||||
|
|
||||||
class ViewProviderAsmConstraint(ViewProviderAsmGroup):
|
class ViewProviderAsmConstraint(ViewProviderAsmGroup):
|
||||||
|
|
||||||
|
def setupContextMenu(self,vobj,menu):
|
||||||
|
obj = vobj.Object
|
||||||
|
action = QtGui.QAction(QtGui.QIcon(),
|
||||||
|
"Enable" if obj.Disabled else "Disable", menu)
|
||||||
|
QtCore.QObject.connect(
|
||||||
|
action,QtCore.SIGNAL("triggered()"),self.toggleDisable)
|
||||||
|
menu.addAction(action)
|
||||||
|
|
||||||
|
def toggleDisable(self):
|
||||||
|
obj = self.ViewObject.Object
|
||||||
|
FreeCAD.setActiveTransaction('Toggle constraint')
|
||||||
|
try:
|
||||||
|
obj.Disabled = not obj.Disabled
|
||||||
|
except Exception:
|
||||||
|
FreeCAD.closeActiveTransaction(True)
|
||||||
|
raise
|
||||||
|
FreeCAD.closeActiveTransaction()
|
||||||
|
|
||||||
def attach(self,vobj):
|
def attach(self,vobj):
|
||||||
super(ViewProviderAsmConstraint,self).attach(vobj)
|
super(ViewProviderAsmConstraint,self).attach(vobj)
|
||||||
vobj.OnTopWhenSelected = 2
|
vobj.OnTopWhenSelected = 2
|
||||||
|
@ -1927,6 +1946,35 @@ class AsmElementGroup(AsmGroup):
|
||||||
class ViewProviderAsmElementGroup(ViewProviderAsmGroup):
|
class ViewProviderAsmElementGroup(ViewProviderAsmGroup):
|
||||||
_iconName = 'Assembly_Assembly_Element_Tree.svg'
|
_iconName = 'Assembly_Assembly_Element_Tree.svg'
|
||||||
|
|
||||||
|
def setupContextMenu(self,_vobj,menu):
|
||||||
|
action = QtGui.QAction(QtGui.QIcon(),"Sort A~Z",menu)
|
||||||
|
QtCore.QObject.connect(action,QtCore.SIGNAL("triggered()"),self.sort)
|
||||||
|
menu.addAction(action)
|
||||||
|
action = QtGui.QAction(QtGui.QIcon(),"Sort Z~A",menu)
|
||||||
|
QtCore.QObject.connect(
|
||||||
|
action,QtCore.SIGNAL("triggered()"),self.sortReverse)
|
||||||
|
menu.addAction(action)
|
||||||
|
|
||||||
|
def sortReverse(self):
|
||||||
|
self.sort(True)
|
||||||
|
|
||||||
|
def sort(self,reverse=False):
|
||||||
|
obj = self.ViewObject.Object
|
||||||
|
group = [ (o,o.Label) for o in obj.Group ]
|
||||||
|
group = sorted(group,reverse=reverse,key=lambda x:x[1])
|
||||||
|
touched = 'Touched' in obj.State
|
||||||
|
FreeCAD.setActiveTransaction('Sort elements')
|
||||||
|
try:
|
||||||
|
obj.setPropertyStatus('Group','-Immutable')
|
||||||
|
obj.Group = [o[0] for o in group]
|
||||||
|
obj.setPropertyStatus('Group','Immutable')
|
||||||
|
except Exception:
|
||||||
|
FreeCAD.closeActiveTransaction(True)
|
||||||
|
raise
|
||||||
|
FreeCAD.closeActiveTransaction()
|
||||||
|
if not touched:
|
||||||
|
obj.purgeTouched()
|
||||||
|
|
||||||
def canDropObjectEx(self,_obj,owner,subname,elements):
|
def canDropObjectEx(self,_obj,owner,subname,elements):
|
||||||
if not owner:
|
if not owner:
|
||||||
return False
|
return False
|
||||||
|
@ -3009,6 +3057,24 @@ class ViewProviderAssembly(ViewProviderAsmGroup):
|
||||||
self._movingPart = None
|
self._movingPart = None
|
||||||
super(ViewProviderAssembly,self).__init__(vobj)
|
super(ViewProviderAssembly,self).__init__(vobj)
|
||||||
|
|
||||||
|
def setupContextMenu(self,vobj,menu):
|
||||||
|
obj = vobj.Object
|
||||||
|
action = QtGui.QAction(QtGui.QIcon(),
|
||||||
|
"Unfreeze" if obj.Freeze else "Freeze", menu)
|
||||||
|
QtCore.QObject.connect(
|
||||||
|
action,QtCore.SIGNAL("triggered()"),self.toggleFreeze)
|
||||||
|
menu.addAction(action)
|
||||||
|
|
||||||
|
def toggleFreeze(self):
|
||||||
|
obj = self.ViewObject.Object
|
||||||
|
FreeCAD.setActiveTransaction('Freeze assembly')
|
||||||
|
try:
|
||||||
|
obj.Freeze = not obj.Freeze
|
||||||
|
except Exception:
|
||||||
|
FreeCAD.closeActiveTransaction(True)
|
||||||
|
raise
|
||||||
|
FreeCAD.closeActiveTransaction()
|
||||||
|
|
||||||
def attach(self,vobj):
|
def attach(self,vobj):
|
||||||
super(ViewProviderAssembly,self).attach(vobj)
|
super(ViewProviderAssembly,self).attach(vobj)
|
||||||
if not hasattr(vobj,'ShowParts'):
|
if not hasattr(vobj,'ShowParts'):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user