From 114b1c272e3b7234a40e044e75b8ca1bbdcf5515 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Tue, 12 Jul 2011 19:18:44 +0300 Subject: [PATCH] Added delete key as an option to remove items from additions lists (drones/implants/boosters/projected) --- gui/boosterView.py | 15 +++++++++++++++ gui/droneView.py | 16 ++++++++++++++++ gui/implantView.py | 5 +++-- gui/projectedView.py | 14 ++++++++++++++ 4 files changed, 48 insertions(+), 2 deletions(-) diff --git a/gui/boosterView.py b/gui/boosterView.py index 141d74daf..a1848daca 100644 --- a/gui/boosterView.py +++ b/gui/boosterView.py @@ -37,13 +37,28 @@ class BoosterView(d.Display): self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) + self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_LEFT_DOWN, self.click) + self.Bind(wx.EVT_KEY_UP, self.kbEvent) + if "__WXGTK__" in wx.PlatformInfo: self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu) else: self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu) + def kbEvent(self,event): + keycode = event.GetKeyCode() + if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: + fitID = self.mainFrame.getActiveFit() + cFit = service.Fit.getInstance() + row = self.GetFirstSelected() + if row != -1: + cFit.removeBooster(fitID, self.GetItemData(row)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) + + event.Skip() + def fitChanged(self, event): #Clear list and get out if current fitId is None diff --git a/gui/droneView.py b/gui/droneView.py index 032a91f77..d360201d2 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -57,6 +57,8 @@ class DroneView(d.Display): self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_LEFT_DOWN, self.click) + self.Bind(wx.EVT_KEY_UP, self.kbEvent) + if "__WXGTK__" in wx.PlatformInfo: self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu) else: @@ -66,6 +68,20 @@ class DroneView(d.Display): self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) self.SetDropTarget(DroneViewDrop(self.mergeDrones)) + def kbEvent(self, event): + keycode = event.GetKeyCode() + if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: + row = self.GetFirstSelected() + firstSel = row + if row != -1: + fitID = self.mainFrame.getActiveFit() + cFit = service.Fit.getInstance() + drone = self.drones[self.GetItemData(row)] + cFit.removeDrone(fitID, self.original.index(drone)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) + + event.Skip() + def startDrag(self, event): row = event.GetIndex() if row != -1: diff --git a/gui/implantView.py b/gui/implantView.py index 6cca6cac4..9b7569da2 100644 --- a/gui/implantView.py +++ b/gui/implantView.py @@ -37,8 +37,9 @@ class ImplantView(d.Display): self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) - self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.Bind(wx.EVT_LEFT_DOWN, self.click) + self.Bind(wx.EVT_KEY_UP, self.kbEvent) + if "__WXGTK__" in wx.PlatformInfo: self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu) else: @@ -52,8 +53,8 @@ class ImplantView(d.Display): row = self.GetFirstSelected() if row != -1: cFit.removeImplant(fitID, self.GetItemData(row)) - row = self.GetNextSelected(row) wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) + event.Skip() def fitChanged(self, event): #Clear list and get out if current fitId is None diff --git a/gui/projectedView.py b/gui/projectedView.py index ba0b7becb..dc64fc423 100644 --- a/gui/projectedView.py +++ b/gui/projectedView.py @@ -56,11 +56,25 @@ class ProjectedView(d.Display): self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_RIGHT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DCLICK, self.remove) + self.Bind(wx.EVT_KEY_UP, self.kbEvent) + self.droneView = gui.droneView.DroneView self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) self.SetDropTarget(ProjectedViewDrop(self.mergeDrones)) + def kbEvent(self,event): + keycode = event.GetKeyCode() + if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: + fitID = self.mainFrame.getActiveFit() + cFit = service.Fit.getInstance() + row = self.GetFirstSelected() + if row != -1: + cFit.removeProjected(fitID, self.get(row)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) + + event.Skip() + def handleDrag(self, type, fitID): #Those are drags coming from pyfa sources, NOT builtin wx drags if type == "fit":