From 169b0416777d7f942e22ae9c9a9a71ed1df6321c Mon Sep 17 00:00:00 2001 From: PhatPhuckDave Date: Fri, 9 Jan 2026 20:50:34 +0100 Subject: [PATCH] Add an "all" skills button to any right click skills menu --- gui/builtinContextMenus/skillAffectors.py | 25 ++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/gui/builtinContextMenus/skillAffectors.py b/gui/builtinContextMenus/skillAffectors.py index f2521955e..ebcd24bb4 100644 --- a/gui/builtinContextMenus/skillAffectors.py +++ b/gui/builtinContextMenus/skillAffectors.py @@ -89,6 +89,24 @@ class ChangeAffectingSkills(ContextMenuSingle): self.skillIds = {} sub = wx.Menu() + # Add "All" entry + allItem = wx.MenuItem(sub, ContextMenuSingle.nextID(), _t("All")) + grandSubAll = wx.Menu() + allItem.SetSubMenu(grandSubAll) + + # For "All", only show levels 1-5 (not "Not Learned") + for i in range(1, 6): + id = ContextMenuSingle.nextID() + self.skillIds[id] = (None, i) # None indicates "All" was selected + label = _t("Level %s") % i + menuItem = wx.MenuItem(rootMenu if msw else grandSubAll, id, label, kind=wx.ITEM_RADIO) + grandSubAll.Bind(wx.EVT_MENU, self.handleSkillChange, menuItem) + grandSubAll.Append(menuItem) + sub.Append(allItem) + + # Add separator + sub.AppendSeparator() + for skill in self.skills: skillItem = wx.MenuItem(sub, ContextMenuSingle.nextID(), skill.item.name) grandSub = wx.Menu() @@ -110,7 +128,12 @@ class ChangeAffectingSkills(ContextMenuSingle): def handleSkillChange(self, event): skill, level = self.skillIds[event.Id] - self.sChar.changeLevel(self.charID, skill.item.ID, level) + if skill is None: # "All" was selected + for s in self.skills: + self.sChar.changeLevel(self.charID, s.item.ID, level) + else: + self.sChar.changeLevel(self.charID, skill.item.ID, level) + fitID = self.mainFrame.getActiveFit() self.sFit.changeChar(fitID, self.charID)