Make sure graphs properly react to target profile updates
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx.lib.newevent
|
||||
|
||||
FitRenamed, EVT_FIT_RENAMED = wx.lib.newevent.NewEvent()
|
||||
FitSelected, EVT_FIT_SELECTED = wx.lib.newevent.NewEvent()\
|
||||
FitSelected, EVT_FIT_SELECTED = wx.lib.newevent.NewEvent()
|
||||
|
||||
BoosterListUpdated, BOOSTER_LIST_UPDATED = wx.lib.newevent.NewEvent()
|
||||
|
||||
|
||||
@@ -15,7 +15,6 @@ import gui.utils.color as colorUtils
|
||||
import gui.utils.draw as drawUtils
|
||||
import gui.utils.fonts as fonts
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED
|
||||
from gui.builtinShipBrowser.pfBitmapFrame import PFBitmapFrame
|
||||
from service.fit import Fit
|
||||
from .events import BoosterListUpdated, FitSelected, ImportSelected, SearchSelected, Stage3Selected
|
||||
@@ -123,7 +122,7 @@ class FitItem(SFItem.SFBrowserItem):
|
||||
self.tcFitName.Bind(wx.EVT_KILL_FOCUS, self.editLostFocus)
|
||||
self.tcFitName.Bind(wx.EVT_KEY_DOWN, self.editCheckEsc)
|
||||
self.Bind(wx.EVT_MOUSE_CAPTURE_LOST, self.OnMouseCaptureLost)
|
||||
self.mainFrame.Bind(EVT_FIT_RENAMED, self.OnFitRename)
|
||||
self.mainFrame.Bind(GE.FIT_RENAMED, self.OnFitRename)
|
||||
|
||||
self.animTimerId = wx.NewId()
|
||||
self.animTimer = wx.Timer(self, self.animTimerId)
|
||||
|
||||
@@ -34,7 +34,7 @@ from eos.saveddata.module import Module, Rack
|
||||
from eos.const import FittingSlot
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.builtinMarketBrowser.events import ITEM_SELECTED
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED, EVT_FIT_SELECTED, FitSelected
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_SELECTED, FitSelected
|
||||
from gui.builtinViewColumns.state import State
|
||||
from gui.chrome_tabs import EVT_NOTEBOOK_PAGE_CHANGED
|
||||
from gui.contextMenu import ContextMenu
|
||||
@@ -147,7 +147,7 @@ class FittingView(d.Display):
|
||||
self.Show(False)
|
||||
self.parent = parent
|
||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||
self.mainFrame.Bind(EVT_FIT_RENAMED, self.fitRenamed)
|
||||
self.mainFrame.Bind(GE.FIT_RENAMED, self.fitRenamed)
|
||||
self.mainFrame.Bind(GE.FIT_REMOVED, self.fitRemoved)
|
||||
self.mainFrame.Bind(ITEM_SELECTED, self.appendItem)
|
||||
self.font = wx.SystemSettings.GetFont(wx.SYS_DEFAULT_GUI_FONT)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import wx
|
||||
|
||||
import eos.db
|
||||
import gui.globalEvents as GE
|
||||
import gui.mainFrame
|
||||
from gui.builtinShipBrowser.events import FitRenamed
|
||||
from gui.fitCommands.calc.fitRename import CalcFitRenameCommand
|
||||
from gui.fitCommands.helpers import InternalCommandHistory
|
||||
|
||||
@@ -19,11 +19,11 @@ class GuiRenameFitCommand(wx.Command):
|
||||
cmd = CalcFitRenameCommand(fitID=self.fitID, name=self.name)
|
||||
success = self.internalHistory.submit(cmd)
|
||||
eos.db.commit()
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), FitRenamed(fitID=self.fitID))
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitRenamed(fitID=self.fitID))
|
||||
return success
|
||||
|
||||
def Undo(self):
|
||||
success = self.internalHistory.undoAll()
|
||||
eos.db.commit()
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), FitRenamed(fitID=self.fitID))
|
||||
wx.PostEvent(gui.mainFrame.MainFrame.getInstance(), GE.FitRenamed(fitID=self.fitID))
|
||||
return success
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
# noinspection PyPackageRequirements
|
||||
import wx.lib.newevent
|
||||
|
||||
FitRenamed, FIT_RENAMED = wx.lib.newevent.NewEvent()
|
||||
FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent()
|
||||
FitRemoved, FIT_REMOVED = wx.lib.newevent.NewEvent()
|
||||
CharListUpdated, CHAR_LIST_UPDATED = wx.lib.newevent.NewEvent()
|
||||
CharChanged, CHAR_CHANGED = wx.lib.newevent.NewEvent()
|
||||
GraphOptionChanged, GRAPH_OPTION_CHANGED = wx.lib.newevent.NewEvent()
|
||||
TargetProfileRenamed, TARGET_PROFILE_RENAMED = wx.lib.newevent.NewEvent()
|
||||
TargetProfileChanged, TARGET_PROFILE_CHANGED = wx.lib.newevent.NewEvent()
|
||||
TargetProfileRemoved, TARGET_PROFILE_REMOVED = wx.lib.newevent.NewEvent()
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ from eos.saveddata.fit import Fit
|
||||
from eos.saveddata.targetProfile import TargetProfile
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.builtinGraphs.base import FitGraph
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED
|
||||
from service.const import GraphCacheCleanupReason
|
||||
from service.settings import GraphSettings
|
||||
from .panel import GraphControlPanel
|
||||
@@ -124,9 +123,14 @@ class GraphFrame(wx.Frame):
|
||||
# Event bindings - local events
|
||||
self.Bind(wx.EVT_CLOSE, self.closeEvent)
|
||||
self.Bind(wx.EVT_CHAR_HOOK, self.kbEvent)
|
||||
|
||||
# Event bindings - external events
|
||||
self.mainFrame.Bind(GE.FIT_RENAMED, self.OnFitRenamed)
|
||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.OnFitChanged)
|
||||
self.mainFrame.Bind(EVT_FIT_RENAMED, self.OnFitRenamed)
|
||||
self.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved)
|
||||
self.mainFrame.Bind(GE.TARGET_PROFILE_RENAMED, self.OnProfileRenamed)
|
||||
self.mainFrame.Bind(GE.TARGET_PROFILE_CHANGED, self.OnProfileChanged)
|
||||
self.mainFrame.Bind(GE.TARGET_PROFILE_REMOVED, self.OnProfileRemoved)
|
||||
self.mainFrame.Bind(GE.GRAPH_OPTION_CHANGED, self.OnGraphOptionChanged)
|
||||
|
||||
self.Layout()
|
||||
@@ -155,14 +159,41 @@ class GraphFrame(wx.Frame):
|
||||
return
|
||||
event.Skip()
|
||||
|
||||
# Fit events
|
||||
def OnFitRenamed(self, event):
|
||||
event.Skip()
|
||||
self.ctrlPanel.OnFitRenamed(event)
|
||||
self.draw()
|
||||
|
||||
def OnFitChanged(self, event):
|
||||
event.Skip()
|
||||
for fitID in event.fitIDs:
|
||||
self.clearCache(reason=GraphCacheCleanupReason.fitChanged, extraData=fitID)
|
||||
self.ctrlPanel.OnFitChanged(event)
|
||||
self.draw()
|
||||
|
||||
def OnFitRenamed(self, event):
|
||||
def OnFitRemoved(self, event):
|
||||
event.Skip()
|
||||
self.clearCache(reason=GraphCacheCleanupReason.fitRemoved, extraData=event.fitID)
|
||||
self.ctrlPanel.OnFitRemoved(event)
|
||||
self.draw()
|
||||
|
||||
# Target profile events
|
||||
def OnProfileRenamed(self, event):
|
||||
event.Skip()
|
||||
self.ctrlPanel.OnProfileRenamed(event)
|
||||
self.draw()
|
||||
|
||||
def OnProfileChanged(self, event):
|
||||
event.Skip()
|
||||
self.clearCache(reason=GraphCacheCleanupReason.profileChanged, extraData=event.profileID)
|
||||
self.ctrlPanel.OnProfileChanged(event)
|
||||
self.draw()
|
||||
|
||||
def OnProfileRemoved(self, event):
|
||||
event.Skip()
|
||||
self.clearCache(reason=GraphCacheCleanupReason.profileRemoved, extraData=event.profileID)
|
||||
self.ctrlPanel.OnProfileRemoved(event)
|
||||
self.draw()
|
||||
|
||||
def OnGraphOptionChanged(self, event):
|
||||
@@ -179,10 +210,13 @@ class GraphFrame(wx.Frame):
|
||||
event.Skip()
|
||||
|
||||
def closeWindow(self):
|
||||
self.mainFrame.Unbind(GE.FIT_RENAMED, handler=self.OnFitRenamed)
|
||||
self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.OnFitChanged)
|
||||
self.mainFrame.Unbind(EVT_FIT_RENAMED, handler=self.OnFitRenamed)
|
||||
self.mainFrame.Unbind(GE.FIT_REMOVED, handler=self.OnFitRemoved)
|
||||
self.mainFrame.Unbind(GE.TARGET_PROFILE_RENAMED, handler=self.OnProfileRenamed)
|
||||
self.mainFrame.Unbind(GE.TARGET_PROFILE_CHANGED, handler=self.OnProfileChanged)
|
||||
self.mainFrame.Unbind(GE.TARGET_PROFILE_REMOVED, handler=self.OnProfileRemoved)
|
||||
self.mainFrame.Unbind(GE.GRAPH_OPTION_CHANGED, handler=self.OnGraphOptionChanged)
|
||||
self.ctrlPanel.unbindExternalEvents()
|
||||
self.Destroy()
|
||||
|
||||
def getView(self):
|
||||
|
||||
@@ -24,7 +24,6 @@ import wx
|
||||
import gui.display
|
||||
import gui.globalEvents as GE
|
||||
from eos.saveddata.targetProfile import TargetProfile
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED
|
||||
from gui.contextMenu import ContextMenu
|
||||
from service.const import GraphCacheCleanupReason
|
||||
from service.fit import Fit
|
||||
@@ -49,10 +48,6 @@ class BaseList(gui.display.Display):
|
||||
self.Bind(wx.EVT_MOTION, self.OnMouseMove)
|
||||
self.Bind(wx.EVT_LEAVE_WINDOW, self.OnLeaveWindow)
|
||||
|
||||
self.graphFrame.mainFrame.Bind(GE.FIT_CHANGED, self.OnFitChanged)
|
||||
self.graphFrame.mainFrame.Bind(EVT_FIT_RENAMED, self.OnFitRenamed)
|
||||
self.graphFrame.mainFrame.Bind(GE.FIT_REMOVED, self.OnFitRemoved)
|
||||
|
||||
def refreshExtraColumns(self, extraColSpecs):
|
||||
baseColNames = set()
|
||||
for baseColName in self.DEFAULT_COLS:
|
||||
@@ -94,21 +89,6 @@ class BaseList(gui.display.Display):
|
||||
return
|
||||
self.removeListItems([item])
|
||||
|
||||
def OnFitRenamed(self, event):
|
||||
event.Skip()
|
||||
self.updateView()
|
||||
|
||||
def OnFitChanged(self, event):
|
||||
event.Skip()
|
||||
if set(event.fitIDs).union(f.ID for f in self.fits):
|
||||
self.updateView()
|
||||
|
||||
def OnFitRemoved(self, event):
|
||||
event.Skip()
|
||||
fit = next((f for f in self.fits if f.ID == event.fitID), None)
|
||||
if fit is not None:
|
||||
self.removeListItems([fit])
|
||||
|
||||
def OnMouseMove(self, event):
|
||||
row, _, col = self.HitTestSubItem(event.Position)
|
||||
if row != self.hoveredRow or col != self.hoveredColumn:
|
||||
@@ -136,6 +116,21 @@ class BaseList(gui.display.Display):
|
||||
self.hoveredColumn = None
|
||||
event.Skip()
|
||||
|
||||
# Fit events
|
||||
def OnFitRenamed(self, event):
|
||||
if event.fitID in [f.ID for f in self.fits]:
|
||||
self.updateView()
|
||||
|
||||
def OnFitChanged(self, event):
|
||||
if set(event.fitIDs).union(f.ID for f in self.fits):
|
||||
self.updateView()
|
||||
|
||||
def OnFitRemoved(self, event):
|
||||
fit = next((f for f in self.fits if f.ID == event.fitID), None)
|
||||
if fit is not None:
|
||||
self.fits.remove(fit)
|
||||
self.updateView()
|
||||
|
||||
@property
|
||||
def defaultTTText(self):
|
||||
raise NotImplementedError
|
||||
@@ -161,11 +156,6 @@ class BaseList(gui.display.Display):
|
||||
items.append(item)
|
||||
return items
|
||||
|
||||
def unbindExternalEvents(self):
|
||||
self.graphFrame.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.OnFitChanged)
|
||||
self.graphFrame.mainFrame.Unbind(EVT_FIT_RENAMED, handler=self.OnFitRenamed)
|
||||
self.graphFrame.mainFrame.Unbind(GE.FIT_REMOVED, handler=self.OnFitRemoved)
|
||||
|
||||
# Context menu handlers
|
||||
def addFit(self, fit):
|
||||
if fit is None:
|
||||
@@ -288,6 +278,21 @@ class TargetList(BaseList):
|
||||
self.graphFrame.clearCache(reason=GraphCacheCleanupReason.profileRemoved, extraData=profile.ID)
|
||||
self.graphFrame.draw()
|
||||
|
||||
# Target profile events
|
||||
def OnProfileRenamed(self, event):
|
||||
if event.profileID in [tp.ID for tp in self.profiles]:
|
||||
self.updateView()
|
||||
|
||||
def OnProfileChanged(self, event):
|
||||
if event.profileID in [tp.ID for tp in self.profiles]:
|
||||
self.updateView()
|
||||
|
||||
def OnProfileRemoved(self, event):
|
||||
profile = next((tp for tp in self.profiles if tp.ID == event.profileID), None)
|
||||
if profile is not None:
|
||||
self.profiles.remove(profile)
|
||||
self.updateView()
|
||||
|
||||
@property
|
||||
def targets(self):
|
||||
return self.fits + self.profiles
|
||||
|
||||
@@ -320,9 +320,28 @@ class GraphControlPanel(wx.Panel):
|
||||
def targets(self):
|
||||
return self.targetList.targets
|
||||
|
||||
def unbindExternalEvents(self):
|
||||
self.fitList.unbindExternalEvents()
|
||||
self.targetList.unbindExternalEvents()
|
||||
# Fit events
|
||||
def OnFitRenamed(self, event):
|
||||
self.fitList.OnFitRenamed(event)
|
||||
self.targetList.OnFitRenamed(event)
|
||||
|
||||
def OnFitChanged(self, event):
|
||||
self.fitList.OnFitChanged(event)
|
||||
self.targetList.OnFitChanged(event)
|
||||
|
||||
def OnFitRemoved(self, event):
|
||||
self.fitList.OnFitRemoved(event)
|
||||
self.targetList.OnFitRemoved(event)
|
||||
|
||||
# Target profile events
|
||||
def OnProfileRenamed(self, event):
|
||||
self.targetList.OnProfileRenamed(event)
|
||||
|
||||
def OnProfileChanged(self, event):
|
||||
self.targetList.OnProfileChanged(event)
|
||||
|
||||
def OnProfileRemoved(self, event):
|
||||
self.targetList.OnProfileRemoved(event)
|
||||
|
||||
def formatLabel(self, axisDef):
|
||||
if axisDef.unit is None:
|
||||
|
||||
@@ -26,7 +26,6 @@ from service.fit import Fit
|
||||
import gui.graphFrame
|
||||
import gui.globalEvents as GE
|
||||
from gui.bitmap_loader import BitmapLoader
|
||||
from gui.builtinShipBrowser.events import EVT_FIT_RENAMED
|
||||
|
||||
from logbook import Logger
|
||||
|
||||
@@ -173,7 +172,7 @@ class MainMenuBar(wx.MenuBar):
|
||||
helpMenu.Append(self.devToolsId, "Open &Dev Tools", "Dev Tools")
|
||||
|
||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||
self.mainFrame.Bind(EVT_FIT_RENAMED, self.fitRenamed)
|
||||
self.mainFrame.Bind(GE.FIT_RENAMED, self.fitRenamed)
|
||||
|
||||
def fitChanged(self, event):
|
||||
event.Skip()
|
||||
|
||||
@@ -83,6 +83,7 @@ class TargetProfileEntityEditor(EntityEditor):
|
||||
def __init__(self, parent):
|
||||
EntityEditor.__init__(self, parent, "Target Profile")
|
||||
self.SetEditorValidator(TargetProfileNameValidator)
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
def getEntitiesFromContext(self):
|
||||
sTR = TargetProfile.getInstance()
|
||||
@@ -96,6 +97,7 @@ class TargetProfileEntityEditor(EntityEditor):
|
||||
def DoRename(self, entity, name):
|
||||
sTR = TargetProfile.getInstance()
|
||||
sTR.renamePattern(entity, name)
|
||||
wx.PostEvent(self.mainFrame, GE.TargetProfileChanged(profileID=entity.ID))
|
||||
|
||||
def DoCopy(self, entity, name):
|
||||
sTR = TargetProfile.getInstance()
|
||||
@@ -106,6 +108,7 @@ class TargetProfileEntityEditor(EntityEditor):
|
||||
def DoDelete(self, entity):
|
||||
sTR = TargetProfile.getInstance()
|
||||
sTR.deletePattern(entity)
|
||||
wx.PostEvent(self.mainFrame, GE.TargetProfileRemoved(profileID=entity.ID))
|
||||
|
||||
|
||||
class TargetProfileEditorDlg(wx.Dialog):
|
||||
|
||||
Reference in New Issue
Block a user