diff --git a/gui/boosterView.py b/gui/boosterView.py index 98d4513e0..c86bc918e 100644 --- a/gui/boosterView.py +++ b/gui/boosterView.py @@ -20,7 +20,7 @@ import wx import service import gui.display as d -import gui.builtinViews.fittingView as fv +import gui.globalEvents as GE import gui.marketBrowser as mb from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu @@ -32,7 +32,7 @@ class BoosterView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL) - self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_LEFT_DOWN, self.click) diff --git a/gui/builtinViews/emptyView.py b/gui/builtinViews/emptyView.py new file mode 100644 index 000000000..a57021efa --- /dev/null +++ b/gui/builtinViews/emptyView.py @@ -0,0 +1,26 @@ +import wx +import gui.globalEvents as GE +import gui.chromeTabs +import gui.mainFrame +import service + +class BlankPage(wx.Panel): + def __init__(self, parent): + wx.Panel.__init__(self, parent, size=(0, 0)) + self.mainFrame = gui.mainFrame.MainFrame.getInstance() + self.parent = parent + self.parent.Bind(gui.chromeTabs.EVT_NOTEBOOK_PAGE_CHANGED, self.pageChanged) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=None)) + + def Destroy(self): + self.parent.Unbind(gui.chromeTabs.EVT_NOTEBOOK_PAGE_CHANGED, handler=self.pageChanged) + wx.Panel.Destroy(self) + + def pageChanged(self, event): + if self.parent.IsActive(self): + fitID = None +# sFit = service.Fit.getInstance() +# sFit.switchFit(fitID) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) + + event.Skip() \ No newline at end of file diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index 8ca0583fc..7d1909737 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -30,7 +30,7 @@ from eos.types import Slot from gui.builtinViewColumns.state import State from gui import bitmapLoader -FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent() +import gui.globalEvents as GE #Tab spawning handler class FitSpawner(gui.multiSwitch.TabSpawner): @@ -108,7 +108,7 @@ class FittingView(d.Display): d.Display.__init__(self, parent, size = (0,0)) self.Show(False) self.parent = parent - self.mainFrame.Bind(FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(gui.shipBrowser.EVT_FIT_RENAMED, self.fitRenamed) self.mainFrame.Bind(gui.shipBrowser.EVT_FIT_REMOVED, self.fitRemoved) self.mainFrame.Bind(gui.marketBrowser.ITEM_SELECTED, self.appendItem) @@ -138,7 +138,7 @@ class FittingView(d.Display): def Destroy(self): self.parent.Unbind(gui.chromeTabs.EVT_NOTEBOOK_PAGE_CHANGED, handler=self.pageChanged) - self.mainFrame.Unbind(FIT_CHANGED, handler=self.fitChanged) + self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.fitChanged) self.mainFrame.Unbind(gui.shipBrowser.EVT_FIT_RENAMED, handler=self.fitRenamed) self.mainFrame.Unbind(gui.shipBrowser.EVT_FIT_REMOVED, handler=self.fitRemoved) self.mainFrame.Unbind(gui.marketBrowser.ITEM_SELECTED, handler=self.appendItem) @@ -150,7 +150,7 @@ class FittingView(d.Display): fitID = self.getActiveFit() sFit = service.Fit.getInstance() sFit.switchFit(fitID) - wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) event.Skip() @@ -216,7 +216,7 @@ class FittingView(d.Display): self.slotsChanged() sFit = service.Fit.getInstance() sFit.switchFit(fitID) - wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) self.updateTab() event.Skip() @@ -242,13 +242,13 @@ class FittingView(d.Display): sel = self.GetNextSelected(sel) cFit.setAmmo(fitID, itemID, modules) - wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) else: populate = cFit.appendModule(fitID, itemID) if populate: self.slotsChanged() if populate is not None: - wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) event.Skip() @@ -262,7 +262,7 @@ class FittingView(d.Display): if populate is not None: if populate: self.slotsChanged() - wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=self.activeFitID)) event.Skip() diff --git a/gui/characterSelection.py b/gui/characterSelection.py index f9434017b..27d797c98 100644 --- a/gui/characterSelection.py +++ b/gui/characterSelection.py @@ -21,7 +21,7 @@ import wx import service from gui import characterEditor as ce from gui import bitmapLoader -from gui.builtinViews import fittingView as fv +import gui.globalEvents as GE import gui.mainFrame class CharacterSelection(wx.Panel): @@ -49,7 +49,7 @@ class CharacterSelection(wx.Panel): self.skillReqsStaticBitmap.SetBitmap(self.cleanSkills) self.Bind(wx.EVT_CHOICE, self.charChanged) self.mainFrame.Bind(ce.CHAR_LIST_UPDATED, self.refreshCharacterList) - self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) panelSize = wx.Size(-1,30) self.SetMinSize(panelSize) @@ -93,7 +93,7 @@ class CharacterSelection(wx.Panel): cFit = service.Fit.getInstance() cFit.changeChar(fitID, charID) - wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID)) def selectChar(self, charID): choice = self.charChoice diff --git a/gui/chromeTabs.py b/gui/chromeTabs.py index e7a35fb6a..8fcc38da3 100644 --- a/gui/chromeTabs.py +++ b/gui/chromeTabs.py @@ -150,10 +150,11 @@ class PFNotebook(wx.Panel): def GetPageCount(self): return len(self.pages) - def AddPage(self, tabWnd, tabTitle ="Empty Tab", tabImage = None, showClose = True): + def AddPage(self, tabWnd = None, tabTitle ="Empty Tab", tabImage = None, showClose = True): if self.activePage: self.activePage.Hide() - + if not tabWnd: + tabWnd = wx.Panel(self) tabWnd.Reparent(self.pageContainer) self.pageContainer.Layout() @@ -796,6 +797,9 @@ class PFTabsContainer(wx.Panel): index = self.GetTabIndex(tab) self.DeleteTab(index) wx.PostEvent(self.Parent, PageClosed(index=index)) + sel = self.GetSelected() + if sel: + wx.PostEvent(self.Parent, PageChanged(-1, sel)) return True return False @@ -811,7 +815,7 @@ class PFTabsContainer(wx.Panel): if ev.isVetoed(): return False - self.Parent.AddPage(wx.Panel(self.Parent, size = (0,0))) + self.Parent.AddPage() wx.PostEvent(self.Parent, PageAdded()) return True diff --git a/gui/droneView.py b/gui/droneView.py index 0b400c1a0..b21837fe9 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -20,7 +20,7 @@ import wx import service -import gui.builtinViews.fittingView as fv +import gui.globalEvents as GE import gui.marketBrowser as mb import gui.display as d from gui.builtinViewColumns.state import State @@ -50,7 +50,7 @@ class DroneView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL) - self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_LEFT_DOWN, self.click) diff --git a/gui/globalEvents.py b/gui/globalEvents.py new file mode 100644 index 000000000..a0d4bedad --- /dev/null +++ b/gui/globalEvents.py @@ -0,0 +1,3 @@ +import wx.lib.newevent + +FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent() \ No newline at end of file diff --git a/gui/graphFrame.py b/gui/graphFrame.py index ba447b77a..04c4d6eb6 100644 --- a/gui/graphFrame.py +++ b/gui/graphFrame.py @@ -20,6 +20,7 @@ import wx import bitmapLoader import gui.display +import gui.globalEvents as GE try: import matplotlib as mpl @@ -96,7 +97,7 @@ class GraphFrame(wx.Frame): self.mainSizer.Add(self.fitList, 0, wx.EXPAND) self.fitList.fitList.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) - self.mainFrame.Bind(gui.builtinViews.fittingView.FIT_CHANGED, self.draw) + self.mainFrame.Bind(GE.FIT_CHANGED, self.draw) self.Bind(wx.EVT_CLOSE, self.close) self.Fit() @@ -108,7 +109,7 @@ class GraphFrame(wx.Frame): def close(self, event): self.fitList.fitList.Unbind(wx.EVT_LEFT_DCLICK, handler=self.removeItem) - self.mainFrame.Unbind(gui.builtinViews.fittingView.FIT_CHANGED, handler=self.draw) + self.mainFrame.Unbind(GE.FIT_CHANGED, handler=self.draw) event.Skip() def getView(self): diff --git a/gui/implantView.py b/gui/implantView.py index 24d6557e3..c7eddcc34 100644 --- a/gui/implantView.py +++ b/gui/implantView.py @@ -24,7 +24,7 @@ import gui.builtinViews.fittingView as fv import gui.marketBrowser as mb from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu - +import globalEvents as GE class ImplantView(d.Display): DEFAULT_COLS = ["State", "attr:implantness", @@ -32,7 +32,7 @@ class ImplantView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL) - self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_KEY_UP, self.kbEvent) diff --git a/gui/mainMenuBar.py b/gui/mainMenuBar.py index b442589c2..7dcdbc21e 100644 --- a/gui/mainMenuBar.py +++ b/gui/mainMenuBar.py @@ -21,6 +21,7 @@ import wx import bitmapLoader import gui.mainFrame import gui.graphFrame +import gui.globalEvents as GE class MainMenuBar(wx.MenuBar): def __init__(self): @@ -90,7 +91,7 @@ class MainMenuBar(wx.MenuBar): - self.mainFrame.Bind(gui.builtinViews.fittingView.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) def fitChanged(self, event): enable = event.fitID is not None diff --git a/gui/multiSwitch.py b/gui/multiSwitch.py index e0a3bb886..dd37e9d56 100644 --- a/gui/multiSwitch.py +++ b/gui/multiSwitch.py @@ -19,6 +19,7 @@ import wx import gui.chromeTabs +import gui.builtinViews.emptyView class MultiSwitch(gui.chromeTabs.PFNotebook): def __init__(self, parent): @@ -36,7 +37,7 @@ class MultiSwitch(gui.chromeTabs.PFNotebook): def AddPage(self, tabWnd=None, tabTitle="Empty Tab", tabImage=None): if tabWnd is None: - tabWnd = BlankPage(self) + tabWnd = gui.builtinViews.emptyView.BlankPage(self) tabWnd.handleDrag = lambda type, info: self.handleDrag(type, info) gui.chromeTabs.PFNotebook.AddPage(self, tabWnd, tabTitle, tabImage, True) @@ -47,10 +48,6 @@ class MultiSwitch(gui.chromeTabs.PFNotebook): if self.GetPageCount() == 0: self.AddPage() -class BlankPage(wx.Panel): - def __init__(self, parent): - wx.Panel.__init__(self, parent, size=(0, 0)) - class TabSpawner(object): tabTypes = [] @classmethod diff --git a/gui/projectedView.py b/gui/projectedView.py index 10a0c2291..bc53471e6 100644 --- a/gui/projectedView.py +++ b/gui/projectedView.py @@ -19,7 +19,7 @@ import wx import gui.display as d -import gui.builtinViews.fittingView as fv +import gui.globalEvents as GE import service import gui.droneView from gui.builtinViewColumns.state import State @@ -49,7 +49,7 @@ class ProjectedView(d.Display): def __init__(self, parent): d.Display.__init__(self, parent, style = wx.LC_SINGLE_SEL) - self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_RIGHT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DCLICK, self.remove) diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py index 455354e64..5375b74fa 100644 --- a/gui/shipBrowser.py +++ b/gui/shipBrowser.py @@ -2,7 +2,7 @@ import wx import copy from gui import bitmapLoader import gui.mainFrame -import gui.builtinViews.fittingView +import gui.globalEvents as GE import time from gui.PFListPane import PFListPane import service @@ -76,7 +76,7 @@ class ShipBrowser(wx.Panel): self.Bind(EVT_SB_STAGE3_SEL, self.stage3) self.Bind(EVT_SB_SEARCH_SEL, self.searchStage) - self.mainFrame.Bind(gui.builtinViews.fittingView.FIT_CHANGED, self.RefreshList) + self.mainFrame.Bind(GE.FIT_CHANGED, self.RefreshList) self.stage1(None) diff --git a/gui/statsPane.py b/gui/statsPane.py index 260a047c8..ac8a43ae2 100644 --- a/gui/statsPane.py +++ b/gui/statsPane.py @@ -23,8 +23,9 @@ import service from gui.pyfatogglepanel import TogglePanel import gui.builtinStatsViews from gui.contextMenu import ContextMenu -import gui.builtinViews.fittingView as fv +#import gui.builtinViews.fittingView as fv import gui.mainFrame +import gui.globalEvents as GE class StatsPane(wx.Panel): DEFAULT_VIEWS = ["resourcesViewFull", "resistancesViewFull" ,"rechargeViewFull", "firepowerViewFull", @@ -84,7 +85,7 @@ class StatsPane(wx.Panel): self.mainFrame = gui.mainFrame.MainFrame.getInstance() - self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged) def contextHandler(self, contentPanel): viewName = contentPanel.viewName