Draft: Better positioned layers button popup + new layer entry

This commit is contained in:
Yorik van Havre
2019-06-30 13:32:42 -03:00
parent dd6a6597e9
commit 6fa859ab89
3 changed files with 16 additions and 9 deletions

View File

@@ -2026,7 +2026,7 @@ class DraftToolBar:
def selectplane(self):
FreeCADGui.runCommand("Draft_SelectPlane")
def popupMenu(self,llist,ilist=None):
def popupMenu(self,llist,ilist=None,pos=None):
"pops up a menu filled with the given list"
self.groupmenu = QtGui.QMenu()
for i,l in enumerate(llist):
@@ -2034,7 +2034,8 @@ class DraftToolBar:
self.groupmenu.addAction(ilist[i],l)
else:
self.groupmenu.addAction(l)
pos = FreeCADGui.getMainWindow().cursor().pos()
if not pos:
pos = FreeCADGui.getMainWindow().cursor().pos()
self.groupmenu.popup(pos)
QtCore.QObject.connect(self.groupmenu,QtCore.SIGNAL("triggered(QAction *)"),self.popupTriggered)

View File

@@ -346,7 +346,7 @@ class ViewProviderLayerContainer:
def mergeByName(self):
if hasattr(self,"Object") and hasattr(self.Object,"Group"):
layers = [o for o in self.Object.Group if (hasattr(o,"Proxy") and isinstance(otherobj.Proxy,Layer))]
layers = [o for o in self.Object.Group if (hasattr(o,"Proxy") and isinstance(o.Proxy,Layer))]
todelete = []
for layer in layerss:
if layer.Label[-1].isdigit() and layer.Label[-2].isdigit() and layer.Label[-3].isdigit():

View File

@@ -5314,22 +5314,28 @@ class SetAutoGroup():
gn.extend(Draft.getGroupNames())
if gn:
self.groups.extend(gn)
self.labels = ["None"]
self.labels = [translate("draft","None")]
self.icons = [self.ui.getIcon(":/icons/button_invalid.svg")]
for g in gn:
o = FreeCAD.ActiveDocument.getObject(g)
if o:
self.labels.append(o.Label)
self.icons.append(o.ViewObject.Icon)
self.labels.append(translate("draft","Add new Layer"))
self.icons.append(self.ui.getIcon(":/icons/document-new.svg"))
self.ui.sourceCmd = self
self.ui.popupMenu(self.labels,self.icons)
from PySide import QtCore
pos = self.ui.autoGroupButton.mapToGlobal(QtCore.QPoint(0,self.ui.autoGroupButton.geometry().height()))
self.ui.popupMenu(self.labels,self.icons,pos)
def proceed(self,labelname):
self.ui.sourceCmd = None
if labelname == "None":
self.ui.setAutoGroup(None)
else:
if labelname in self.labels:
if labelname in self.labels:
if labelname == self.labels[0]:
self.ui.setAutoGroup(None)
elif labelname == self.labels[-1]:
FreeCADGui.runCommand("Draft_Layer")
else:
i = self.labels.index(labelname)
self.ui.setAutoGroup(self.groups[i])