Fixed PFNotebook not sending PageChanged event when deleting a tab (if it's the case); multiSwitch uses a smarter BlankPage that responds to PageChanged event, now pyfa is behaving correctly when switching betwen fittingView tabs and empty tabs; FIT_CHANGED event moved to globalEvents.py since it is used a lot in different locations;...
This commit is contained in:
@@ -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)
|
||||
|
||||
26
gui/builtinViews/emptyView.py
Normal file
26
gui/builtinViews/emptyView.py
Normal file
@@ -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()
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
3
gui/globalEvents.py
Normal file
3
gui/globalEvents.py
Normal file
@@ -0,0 +1,3 @@
|
||||
import wx.lib.newevent
|
||||
|
||||
FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent()
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user