Skip to content

Commit

Permalink
Fixed PFNotebook not sending PageChanged event when deleting a tab (i…
Browse files Browse the repository at this point in the history
…f 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;...
  • Loading branch information
hwdro committed Nov 28, 2010
1 parent 99c2661 commit 1c820e3
Show file tree
Hide file tree
Showing 14 changed files with 67 additions and 34 deletions.
4 changes: 2 additions & 2 deletions gui/boosterView.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand Down
26 changes: 26 additions & 0 deletions gui/builtinViews/emptyView.py
Original file line number Diff line number Diff line change
@@ -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()
16 changes: 8 additions & 8 deletions gui/builtinViews/fittingView.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
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):
Expand Down Expand Up @@ -108,7 +108,7 @@ def __init__(self, parent):
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)
Expand Down Expand Up @@ -138,7 +138,7 @@ def handleDrag(self, type, fitID):

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)
Expand All @@ -150,7 +150,7 @@ def pageChanged(self, event):
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()

Expand Down Expand Up @@ -216,7 +216,7 @@ def fitSelected(self, event):
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()
Expand All @@ -242,13 +242,13 @@ def appendItem(self, event):
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()

Expand All @@ -262,7 +262,7 @@ def removeItem(self, event):

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

Expand Down
6 changes: 3 additions & 3 deletions gui/characterSelection.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
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):
Expand Down Expand Up @@ -49,7 +49,7 @@ def __init__(self, parent):
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)
Expand Down Expand Up @@ -93,7 +93,7 @@ def charChanged(self, event):
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
Expand Down
10 changes: 7 additions & 3 deletions gui/chromeTabs.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,10 +150,11 @@ def GetCurrentPage(self):
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()

Expand Down Expand Up @@ -796,6 +797,9 @@ def CheckTabClose(self, tab, mposx, mposy):
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

Expand All @@ -811,7 +815,7 @@ def CheckAddButton(self, mposx,mposy):
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

Expand Down
4 changes: 2 additions & 2 deletions gui/droneView.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
3 changes: 3 additions & 0 deletions gui/globalEvents.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import wx.lib.newevent

FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent()
5 changes: 3 additions & 2 deletions gui/graphFrame.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import wx
import bitmapLoader
import gui.display
import gui.globalEvents as GE

try:
import matplotlib as mpl
Expand Down Expand Up @@ -96,7 +97,7 @@ def __init__(self, parent, style=wx.DEFAULT_FRAME_STYLE | wx.NO_FULL_REPAINT_ON_
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()
Expand All @@ -108,7 +109,7 @@ def handleDrag(self, type, fitID):

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):
Expand Down
4 changes: 2 additions & 2 deletions gui/implantView.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,15 +24,15 @@
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",
"Base Name"]

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)
Expand Down
3 changes: 2 additions & 1 deletion gui/mainMenuBar.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import bitmapLoader
import gui.mainFrame
import gui.graphFrame
import gui.globalEvents as GE

class MainMenuBar(wx.MenuBar):
def __init__(self):
Expand Down Expand Up @@ -90,7 +91,7 @@ def __init__(self):



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
Expand Down
7 changes: 2 additions & 5 deletions gui/multiSwitch.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import wx
import gui.chromeTabs
import gui.builtinViews.emptyView

class MultiSwitch(gui.chromeTabs.PFNotebook):
def __init__(self, parent):
Expand All @@ -36,7 +37,7 @@ def handleDrag(self, type, info):

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)
Expand All @@ -47,10 +48,6 @@ def DeletePage(self, n, *args, **kwargs):
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
Expand Down
4 changes: 2 additions & 2 deletions gui/projectedView.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions gui/shipBrowser.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
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
Expand Down Expand Up @@ -76,7 +76,7 @@ def __init__(self, parent):
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)

Expand Down
5 changes: 3 additions & 2 deletions gui/statsPane.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
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",
Expand Down Expand Up @@ -84,7 +85,7 @@ def __init__(self, parent):


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
Expand Down

0 comments on commit 1c820e3

Please sign in to comment.