Add drag n drop form market to implant view

This commit is contained in:
blitzmann
2018-10-28 22:06:08 -04:00
parent 881b92a6ea
commit 29a2a08986

View File

@@ -23,6 +23,7 @@ import gui.display as d
from gui.builtinMarketBrowser.events import ITEM_SELECTED from gui.builtinMarketBrowser.events import ITEM_SELECTED
import gui.mainFrame import gui.mainFrame
from gui.builtinViewColumns.state import State from gui.builtinViewColumns.state import State
from gui.utils.staticHelpers import DragDropHelper
from gui.contextMenu import ContextMenu from gui.contextMenu import ContextMenu
import gui.globalEvents as GE import gui.globalEvents as GE
from eos.saveddata.fit import ImplantLocation from eos.saveddata.fit import ImplantLocation
@@ -31,6 +32,22 @@ from service.market import Market
import gui.fitCommands as cmd 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): class ImplantView(wx.Panel):
def __init__(self, parent): def __init__(self, parent):
wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, style=wx.TAB_TRAVERSAL) 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_DCLICK, self.removeItem)
self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DOWN, self.click)
self.Bind(wx.EVT_KEY_UP, self.kbEvent) self.Bind(wx.EVT_KEY_UP, self.kbEvent)
self.SetDropTarget(ImplantViewDrop(self.handleListDrag))
if "__WXGTK__" in wx.PlatformInfo: if "__WXGTK__" in wx.PlatformInfo:
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu) self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
else: else:
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu) 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): def kbEvent(self, event):
keycode = event.GetKeyCode() keycode = event.GetKeyCode()
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: