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:
HomeWorld
2010-11-28 20:04:45 +02:00
parent 99c2661b45
commit 1c820e3859
14 changed files with 67 additions and 34 deletions

View File

@@ -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)

View 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()

View File

@@ -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()

View File

@@ -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

View File

@@ -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

View File

@@ -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
View File

@@ -0,0 +1,3 @@
import wx.lib.newevent
FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent()

View File

@@ -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):

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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