From 29a2a08986f6bd5b7d6f94f2d976554c41f4e124 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 28 Oct 2018 22:06:08 -0400 Subject: [PATCH] Add drag n drop form market to implant view --- gui/builtinAdditionPanes/implantView.py | 32 +++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/gui/builtinAdditionPanes/implantView.py b/gui/builtinAdditionPanes/implantView.py index 5cdc72679..0b8521cea 100644 --- a/gui/builtinAdditionPanes/implantView.py +++ b/gui/builtinAdditionPanes/implantView.py @@ -23,6 +23,7 @@ import gui.display as d from gui.builtinMarketBrowser.events import ITEM_SELECTED import gui.mainFrame from gui.builtinViewColumns.state import State +from gui.utils.staticHelpers import DragDropHelper from gui.contextMenu import ContextMenu import gui.globalEvents as GE from eos.saveddata.fit import ImplantLocation @@ -31,6 +32,22 @@ from service.market import Market import gui.fitCommands as cmd +class ImplantViewDrop(wx.DropTarget): + def __init__(self, dropFn, *args, **kwargs): + super(ImplantViewDrop, self).__init__(*args, **kwargs) + self.dropFn = dropFn + # this is really transferring an EVE itemID + self.dropData = wx.TextDataObject() + self.SetDataObject(self.dropData) + + def OnData(self, x, y, t): + if self.GetData(): + dragged_data = DragDropHelper.data + data = dragged_data.split(':') + self.dropFn(x, y, data) + return t + + class ImplantView(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL) @@ -99,12 +116,27 @@ class ImplantDisplay(d.Display): self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_KEY_UP, self.kbEvent) + self.SetDropTarget(ImplantViewDrop(self.handleListDrag)) + if "__WXGTK__" in wx.PlatformInfo: self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu) else: self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu) + def handleListDrag(self, x, y, data): + """ + Handles dragging of items from various pyfa displays which support it + + data is list with two indices: + data[0] is hard-coded str of originating source + data[1] is typeID or index of data we want to manipulate + """ + + if data[0] == "market": + if self.mainFrame.command.Submit(cmd.GuiAddImplantCommand(self.mainFrame.getActiveFit(), int(data[1]))): + self.mainFrame.additionsPane.select("Implants") + def kbEvent(self, event): keycode = event.GetKeyCode() if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: