From d09f21fe15ed71a92863cb20351692fd7ae8d3aa Mon Sep 17 00:00:00 2001 From: Michael Ryan Date: Tue, 30 May 2017 20:18:32 -0500 Subject: [PATCH] updated drag and drop behavior to not trigger a suspected wx bug on Mac --- gui/boosterView.py | 3 ++- gui/builtinViews/fittingView.py | 11 ++++++++--- gui/cargoView.py | 8 ++++++-- gui/commandView.py | 8 ++++++-- gui/droneView.py | 8 ++++++-- gui/fighterView.py | 8 ++++++-- gui/marketBrowser.py | 2 ++ gui/projectedView.py | 8 ++++++-- gui/utils/staticHelpers.py | 5 +++++ 9 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 gui/utils/staticHelpers.py diff --git a/gui/boosterView.py b/gui/boosterView.py index db0e0eba5..98d07753f 100644 --- a/gui/boosterView.py +++ b/gui/boosterView.py @@ -37,7 +37,8 @@ class BoosterViewDrop(wx.PyDropTarget): def OnData(self, x, y, t): if self.GetData(): - data = self.dropData.GetText().split(':') + dragged_data = DragDropHelper.data + data = dragged_data.split(':') self.dropFn(x, y, data) return t diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 0fde55718..d5dee9608 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -38,6 +38,8 @@ from gui.chromeTabs import EVT_NOTEBOOK_PAGE_CHANGED from service.fit import Fit from service.market import Market +from gui.utils.staticHelpers import DragDropHelper + import gui.globalEvents as GE pyfalog = Logger(__name__) @@ -110,8 +112,9 @@ class FittingViewDrop(wx.PyDropTarget): def OnData(self, x, y, t): if self.GetData(): - pyfalog.debug("fittingView: recieved drag: " + self.dropData.GetText()) - data = self.dropData.GetText().split(':') + dragged_data = DragDropHelper.data + #pyfalog.debug("fittingView: recieved drag: " + self.dropData.GetText()) + data = dragged_data.split(':') self.dropFn(x, y, data) return t @@ -235,10 +238,12 @@ class FittingView(d.Display): if row != -1 and row not in self.blanks and isinstance(self.mods[row], Module) and not self.mods[row].isEmpty: data = wx.PyTextDataObject() - data.SetText("fitting:" + str(self.mods[row].modPosition)) + dataStr = "fitting:" + str(self.mods[row].modPosition) + data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) + DragDropHelper.data = dataStr dropSource.DoDragDrop() def getSelectedMods(self): diff --git a/gui/cargoView.py b/gui/cargoView.py index cd560c1c2..8230cb975 100644 --- a/gui/cargoView.py +++ b/gui/cargoView.py @@ -23,6 +23,7 @@ import gui.display as d from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu import globalEvents as GE +from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market @@ -37,7 +38,8 @@ class CargoViewDrop(wx.PyDropTarget): def OnData(self, x, y, t): if self.GetData(): - data = self.dropData.GetText().split(':') + dragged_data = DragDropHelper.data + data = dragged_data.split(':') self.dropFn(x, y, data) return t @@ -87,10 +89,12 @@ class CargoView(d.Display): if row != -1: data = wx.PyTextDataObject() - data.SetText("cargo:" + str(row)) + dataStr = "cargo:" + str(row) + data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) + DragDropHelper.data = dataStr dropSource.DoDragDrop() def kbEvent(self, event): diff --git a/gui/commandView.py b/gui/commandView.py index 2d8899dff..8341e79fb 100644 --- a/gui/commandView.py +++ b/gui/commandView.py @@ -26,6 +26,7 @@ import gui.droneView from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu from gui.builtinContextMenus.commandFits import CommandFits +from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from eos.saveddata.drone import Drone as es_Drone @@ -51,7 +52,8 @@ class CommandViewDrop(wx.PyDropTarget): def OnData(self, x, y, t): if self.GetData(): - data = self.dropData.GetText().split(':') + dragged_data = DragDropHelper.data + data = dragged_data.split(':') self.dropFn(x, y, data) return t @@ -116,10 +118,12 @@ class CommandView(d.Display): row = event.GetIndex() if row != -1 and isinstance(self.get(row), es_Drone): data = wx.PyTextDataObject() - data.SetText("command:" + str(self.GetItemData(row))) + dataStr = "command:" + str(self.GetItemData(row)) + data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) + DragDropHelper.data = dataStr dropSource.DoDragDrop() @staticmethod diff --git a/gui/droneView.py b/gui/droneView.py index b075cfee0..e4316059c 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -25,6 +25,7 @@ from gui.marketBrowser import ITEM_SELECTED, ItemSelected from gui.display import Display from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu +from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market @@ -39,7 +40,8 @@ class DroneViewDrop(wx.PyDropTarget): def OnData(self, x, y, t): if self.GetData(): - data = self.dropData.GetText().split(':') + dragged_data = DragDropHelper.data + data = dragged_data.split(':') self.dropFn(x, y, data) return t @@ -122,10 +124,12 @@ class DroneView(Display): row = event.GetIndex() if row != -1: data = wx.PyTextDataObject() - data.SetText("drone:" + str(row)) + dataStr = "drone:" + str(row) + data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) + DragDropHelper.data = dataStr dropSource.DoDragDrop() def handleDragDrop(self, x, y, data): diff --git a/gui/fighterView.py b/gui/fighterView.py index 6332817fe..e5fdfd1c2 100644 --- a/gui/fighterView.py +++ b/gui/fighterView.py @@ -27,6 +27,7 @@ import gui.display as d from gui.builtinViewColumns.state import State from eos.saveddata.module import Slot from gui.contextMenu import ContextMenu +from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market @@ -41,7 +42,8 @@ class FighterViewDrop(wx.PyDropTarget): def OnData(self, x, y, t): if self.GetData(): - data = self.dropData.GetText().split(':') + dragged_data = DragDropHelper.data + data = dragged_data.split(':') self.dropFn(x, y, data) return t @@ -184,10 +186,12 @@ class FighterDisplay(d.Display): row = event.GetIndex() if row != -1: data = wx.PyTextDataObject() - data.SetText("fighter:" + str(row)) + dataStr = "fighter:" + str(row) + data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) + DragDropHelper.data = dataStr dropSource.DoDragDrop() def handleDragDrop(self, x, y, data): diff --git a/gui/marketBrowser.py b/gui/marketBrowser.py index d42ea56ec..d914069b7 100644 --- a/gui/marketBrowser.py +++ b/gui/marketBrowser.py @@ -28,6 +28,7 @@ from gui.cachingImageList import CachingImageList from gui.contextMenu import ContextMenu from gui.bitmapLoader import BitmapLoader from logbook import Logger +from utils.staticHelpers import DragDropHelper pyfalog = Logger(__name__) @@ -285,6 +286,7 @@ class ItemView(Display): data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) + DragDropHelper.data = dataStr dropSource.DoDragDrop() def itemActivated(self, event=None): diff --git a/gui/projectedView.py b/gui/projectedView.py index b971272b6..e131b88a4 100644 --- a/gui/projectedView.py +++ b/gui/projectedView.py @@ -24,6 +24,7 @@ import gui.globalEvents as GE import gui.droneView from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu +from gui.utils.staticHelpers import DragDropHelper from service.fit import Fit from service.market import Market from eos.saveddata.drone import Drone as es_Drone @@ -52,7 +53,8 @@ class ProjectedViewDrop(wx.PyDropTarget): def OnData(self, x, y, t): if self.GetData(): - data = self.dropData.GetText().split(':') + dragged_data = DragDropHelper.data + data = dragged_data.split(':') self.dropFn(x, y, data) return t @@ -127,10 +129,12 @@ class ProjectedView(d.Display): row = event.GetIndex() if row != -1 and isinstance(self.get(row), es_Drone): data = wx.PyTextDataObject() - data.SetText("projected:" + str(self.GetItemData(row))) + dataStr = "projected:" + str(self.GetItemData(row)) + data.SetText(dataStr) dropSource = wx.DropSource(self) dropSource.SetData(data) + DragDropHelper.data = dataStr dropSource.DoDragDrop() def mergeDrones(self, x, y, itemID): diff --git a/gui/utils/staticHelpers.py b/gui/utils/staticHelpers.py new file mode 100644 index 000000000..538936e3a --- /dev/null +++ b/gui/utils/staticHelpers.py @@ -0,0 +1,5 @@ +class DragDropHelper: + data = None + + def __init__(self): + pass