From 5334f6c60d6e6a25421e4e15bfa8eb616d066131 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Mon, 21 Jun 2021 21:11:52 +0200 Subject: [PATCH] Fix 3 issues with the Draft Tray layer list Fix 3 issues with the Draft Tray layer list: The layer list should display even if there are no layers so that the "Add new Layer" option can be selected. "Project" and "BuildingPart" objects should be added to the list (depending on "AutogroupAddGroups" of course). The "LayerContainer" object should not be added to the list. Although it is in fact a group, it is just too confusing. --- src/Mod/Draft/draftguitools/gui_groups.py | 46 +++++++++++------------ 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/src/Mod/Draft/draftguitools/gui_groups.py b/src/Mod/Draft/draftguitools/gui_groups.py index a5d2b22988..cbb4d46774 100644 --- a/src/Mod/Draft/draftguitools/gui_groups.py +++ b/src/Mod/Draft/draftguitools/gui_groups.py @@ -254,14 +254,13 @@ class SetAutoGroup(gui_base.GuiCommandSimplest): # and globally initialized in the `Gui` namespace to run # some actions. # If there is only a group selected, it runs the `AutoGroup` method. + params = App.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft") self.ui = Gui.draftToolBar s = Gui.Selection.getSelection() if len(s) == 1: - if (utils.get_type(s[0]) == "Layer") or \ - (App.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft").GetBool("AutogroupAddGroups", False) - and (s[0].isDerivedFrom("App::DocumentObjectGroup") - or utils.get_type(s[0]) in ["Site", "Building", - "Floor", "BuildingPart"])): + if (utils.get_type(s[0]) == "Layer" + or (params.GetBool("AutogroupAddGroups", False) + and groups.is_group(s[0]))): self.ui.setAutoGroup(s[0].Name) return @@ -269,27 +268,26 @@ class SetAutoGroup(gui_base.GuiCommandSimplest): # including the options "None" and "Add new layer". self.groups = ["None"] gn = [o.Name for o in self.doc.Objects if utils.get_type(o) == "Layer"] - if App.ParamGet("User parameter:BaseApp/Preferences/Mod/Draft").GetBool("AutogroupAddGroups", False): + if params.GetBool("AutogroupAddGroups", False): gn.extend(groups.get_group_names()) - if gn: - self.groups.extend(gn) - self.labels = [translate("draft", "None")] - self.icons = [self.ui.getIcon(":/icons/button_invalid.svg")] - for g in gn: - o = self.doc.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.groups.extend(gn) + self.labels = [translate("draft", "None")] + self.icons = [self.ui.getIcon(":/icons/button_invalid.svg")] + for g in gn: + o = self.doc.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")) - # With the lists created is uses the interface - # to pop up a menu with layer options. - # Once the desired option is chosen - # it launches the `proceed` method. - self.ui.sourceCmd = self - pos = self.ui.autoGroupButton.mapToGlobal(QtCore.QPoint(0, self.ui.autoGroupButton.geometry().height())) - self.ui.popupMenu(self.labels, self.icons, pos) + # With the lists created is uses the interface + # to pop up a menu with layer options. + # Once the desired option is chosen + # it launches the `proceed` method. + self.ui.sourceCmd = self + 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): """Set the defined autogroup, or create a new layer.