When fit is removed, update projected/command contents if needed

This commit is contained in:
DarkPhoenix
2019-05-19 21:53:44 +03:00
parent 1ec78d9beb
commit 8dd87cde58
2 changed files with 43 additions and 25 deletions

View File

@@ -70,7 +70,7 @@ class CommandView(d.Display):
self.lastFitId = None
self.mainFrame.Bind(GE.FIT_CHANGED, AddCommandFit.fitChanged)
self.mainFrame.Bind(GE.FIT_REMOVED, AddCommandFit.populateFits)
self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved)
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
self.Bind(wx.EVT_LEFT_DOWN, self.click)
self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick)
@@ -82,6 +82,13 @@ class CommandView(d.Display):
self.SetDropTarget(CommandViewDrop(self.handleListDrag))
def OnFitRemoved(self, event):
event.Skip()
AddCommandFit.populateFits(event)
fitID = self.mainFrame.getActiveFit()
fit = Fit.getInstance().getFit(fitID)
self.refreshContents(fit)
@staticmethod
def handleListDrag(x, y, data):
"""
@@ -131,12 +138,6 @@ class CommandView(d.Display):
event.Skip()
return
stuff = []
if fit is not None:
self.fits = fit.commandFits[:]
self.fits.sort(key=self.fitSort)
stuff.extend(self.fits)
if event.fitID != self.lastFitId:
self.lastFitId = event.fitID
@@ -147,13 +148,20 @@ class CommandView(d.Display):
self.unselectAll()
if not stuff:
stuff = [DummyEntry("Drag a fit to this area")]
self.update(stuff)
self.refreshContents(fit)
event.Skip()
def refreshContents(self, fit):
stuff = []
if fit is not None:
self.fits = fit.commandFits[:]
self.fits.sort(key=self.fitSort)
stuff.extend(self.fits)
if not stuff:
stuff = [DummyEntry("Drag a fit to this area")]
self.update(stuff)
def click(self, event):
mainRow, _ = self.HitTest(event.Position)
if mainRow != -1:

View File

@@ -82,6 +82,7 @@ class ProjectedView(d.Display):
self.lastFitId = None
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved)
self.Bind(wx.EVT_LEFT_DOWN, self.click)
self.Bind(wx.EVT_RIGHT_DOWN, self.click)
self.Bind(wx.EVT_LEFT_DCLICK, self.onLeftDoubleClick)
@@ -93,6 +94,12 @@ class ProjectedView(d.Display):
self.SetDropTarget(ProjectedViewDrop(self.handleListDrag))
def OnFitRemoved(self, event):
event.Skip()
fitID = self.mainFrame.getActiveFit()
fit = Fit.getInstance().getFit(fitID)
self.refreshContents(fit)
def handleListDrag(self, x, y, data):
"""
Handles dragging of items from various pyfa displays which support it
@@ -174,6 +181,23 @@ class ProjectedView(d.Display):
event.Skip()
return
if event.fitID != self.lastFitId:
self.lastFitId = event.fitID
item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE)
if item != -1:
self.EnsureVisible(item)
self.unselectAll()
self.refreshContents(fit)
event.Skip()
def refreshContents(self, fit):
stuff = []
if fit is not None:
self.originalFits = fit.projectedFits
@@ -194,24 +218,10 @@ class ProjectedView(d.Display):
stuff.extend(self.modules)
stuff.extend(self.drones)
stuff.extend(self.fighters)
if event.fitID != self.lastFitId:
self.lastFitId = event.fitID
item = self.GetNextItem(-1, wx.LIST_NEXT_ALL, wx.LIST_STATE_DONTCARE)
if item != -1:
self.EnsureVisible(item)
self.unselectAll()
if not stuff:
stuff = [DummyEntry('Drag an item or fit, or use right-click menu for wormhole effects')]
self.update(stuff)
event.Skip()
def get(self, row):
if row == -1:
return None