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):
|
||||
|
||||
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):
|
||||
super(ViewProviderAsmConstraint,self).attach(vobj)
|
||||
vobj.OnTopWhenSelected = 2
|
||||
|
@ -1927,6 +1946,35 @@ class AsmElementGroup(AsmGroup):
|
|||
class ViewProviderAsmElementGroup(ViewProviderAsmGroup):
|
||||
_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):
|
||||
if not owner:
|
||||
return False
|
||||
|
@ -3009,6 +3057,24 @@ class ViewProviderAssembly(ViewProviderAsmGroup):
|
|||
self._movingPart = None
|
||||
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):
|
||||
super(ViewProviderAssembly,self).attach(vobj)
|
||||
if not hasattr(vobj,'ShowParts'):
|
||||
|
|
Loading…
Reference in New Issue
Block a user