Start work on integrating new tabs into pyfa

This commit is contained in:
cncfanatics
2010-11-17 09:05:45 +01:00
parent 4922d6c880
commit 26df47699d
7 changed files with 1092 additions and 1320 deletions

2
eos

Submodule eos updated: f964b32559...dfe939dadf

View File

@@ -79,7 +79,7 @@ class CharacterSelection(wx.Panel):
if not picked: if not picked:
charID = cChar.all0ID() charID = cChar.all0ID()
self.selectChar(charID) self.selectChar(charID)
fitID = self.mainFrame.fitMultiSwitch.getActiveFit() fitID = self.mainFrame.getActiveFit()
cFit = service.Fit.getInstance() cFit = service.Fit.getInstance()
cFit.changeChar(fitID, charID) cFit.changeChar(fitID, charID)
@@ -87,7 +87,7 @@ class CharacterSelection(wx.Panel):
event.Skip() event.Skip()
def charChanged(self, event): def charChanged(self, event):
fitID = self.mainFrame.fitMultiSwitch.getActiveFit() fitID = self.mainFrame.getActiveFit()
charID = self.getActiveCharacter() charID = self.getActiveCharacter()
cFit = service.Fit.getInstance() cFit = service.Fit.getInstance()

View File

@@ -1,5 +1,3 @@
#!/usr/bin/env python
# --------------------------------------------------------------------------------- # # --------------------------------------------------------------------------------- #
# Pyfa's custom Notebook core python IMPLEMENTATION # Pyfa's custom Notebook core python IMPLEMENTATION
# #
@@ -10,9 +8,134 @@
import wx import wx
import copy import copy
import time
class PFTabRenderer: class PFNotebook(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, wx.ID_ANY,size = (-1,-1))
self.pages = []
self.activePage = None
mainSizer = wx.BoxSizer( wx.VERTICAL )
tabsSizer = wx.BoxSizer( wx.VERTICAL )
self.tabsContainer = PFTabsContainer(self)
tabsSizer.Add( self.tabsContainer, 0, wx.EXPAND )
mainSizer.Add( tabsSizer, 0, wx.EXPAND, 5 )
contentSizer = wx.BoxSizer( wx.VERTICAL )
self.pageContainer = wx.Panel(self)
contentSizer.Add( self.pageContainer, 1, wx.EXPAND, 5 )
mainSizer.Add( contentSizer, 1, wx.EXPAND, 5 )
self.SetSizer( mainSizer )
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Layout()
# for i in xrange(10):
# self.tabsContainer.AddTab("Pyfa TAB #%d Aw" % i)
def GetPage(self, i):
return self.pages[i]
def GetSelectedPage(self):
return self.activePage
def GetPageIndex(self, page):
return self.pages.index(page)
def GetSelection(self):
return self.GetPageIndex(self.activePage)
def AddPage(self, tabWnd, tabTitle = wx.EmptyString, tabImage = None):
if self.activePage:
self.activePage.Hide()
if tabWnd is not None:
tabWnd.Reparent(self.pageContainer)
self.pageContainer.Layout()
self.pages.append(tabWnd)
self.tabsContainer.AddTab(tabTitle, tabImage)
self.activePage = tabWnd
def SetSelection(self, page):
oldsel = self.GetSelection()
if oldsel != page:
self.activePage.Hide()
self.activePage = self.pages[page]
self.ShowActive()
def DeletePage(self, n, internal = False):
page = self.pages[n]
self.pages.remove(page)
page.Hide()
page.Destroy()
if not internal:
self.tabsContainer.DeleteTab(n, True)
sel = self.tabsContainer.GetSelected()
if sel is not None:
self.activePage = self.pages[sel]
self.ShowActive()
else:
self.activePage = None
def SwitchPages(self, src, dest, internal = False):
self.pages[src], self.pages[dest] = self.pages[dest], self.pages[src]
def ShowActive(self):
self.activePage.SetSize(self.pageContainer.GetSize())
self.activePage.Show()
self.Layout()
def IsActive(self, page):
return self.activePage == page
def SetPageText(self, i, text, refresh=False):
tab = self.tabsContainer.tabs[i]
tab.text = text
tab._Render()
if refresh:
self.Refresh()
def SetPageIcon(self, i, icon, refresh=False):
tab = self.tabsContainer.tabs[i]
tab.img = icon
tab._Render()
if refresh:
self.Refresh()
def SetPageTextIcon(self, i, text=wx.EmptyString, icon=None):
self.SetPageText(i, text)
self.SetPageIcon(i, icon)
self.Refresh()
def Refresh(self):
self.tabsContainer.Refresh()
def OnSize(self, event):
w,h= self.GetSize()
self.tabsContainer.SetSize((w, -1))
self.tabsContainer.UpdateSize()
self.tabsContainer.Refresh()
self.Layout()
size = self.pageContainer.GetSize()
if self.activePage:
self.activePage.SetSize(size)
event.Skip()
class PFTabRenderer(object):
def __init__(self, size = (36,24), text = wx.EmptyString, img = None, inclination = 6 , closeButton = True, fontSize = 8): def __init__(self, size = (36,24), text = wx.EmptyString, img = None, inclination = 6 , closeButton = True, fontSize = 8):
# tab left/right zones inclination # tab left/right zones inclination
@@ -588,7 +711,7 @@ class PFTabsContainer(wx.Window):
print "Selected: %s" %tab.text print "Selected: %s" %tab.text
selTab = self.tabs.index(tab) selTab = self.tabs.index(tab)
self.Parent.SetSelected(selTab) self.Parent.SetSelection(selTab)
return True return True
return False return False
@@ -790,6 +913,7 @@ class PFTabsContainer(wx.Window):
simg = fxBmp.ConvertToImage() simg = fxBmp.ConvertToImage()
# if not simg.HasAlpha(): # if not simg.HasAlpha():
# simg.InitAlpha() # simg.InitAlpha()
# simg = simg.Blur(2) # simg = simg.Blur(2)
# simg = simg.AdjustChannels(0.2,0.2,0.2,0.3) # simg = simg.AdjustChannels(0.2,0.2,0.2,0.3)
@@ -809,7 +933,7 @@ class PFTabsContainer(wx.Window):
for tab in self.tabs: for tab in self.tabs:
tab.SetSelected(False) tab.SetSelected(False)
def DeleteTab(self, tab): def DeleteTab(self, tab, internal=False):
tabRenderer = self.tabs[tab] tabRenderer = self.tabs[tab]
wasSelected = tabRenderer.GetSelected() wasSelected = tabRenderer.GetSelected()
self.tabs.remove(tabRenderer) self.tabs.remove(tabRenderer)
@@ -823,7 +947,8 @@ class PFTabsContainer(wx.Window):
else: else:
self.tabs[tab].SetSelected(True) self.tabs[tab].SetSelected(True)
self.Parent.DeletePage(tab, True) if not internal:
self.Parent.DeletePage(tab, True)
self.AdjustTabsSize() self.AdjustTabsSize()
self.Refresh() self.Refresh()
@@ -894,188 +1019,3 @@ class PFTabsContainer(wx.Window):
return wx.Colour(r,g,b) return wx.Colour(r,g,b)
class PFNotebook(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent, wx.ID_ANY,size = (-1,-1))
self.pages = []
self.activePage = None
mainSizer = wx.BoxSizer( wx.VERTICAL )
tabsSizer = wx.BoxSizer( wx.VERTICAL )
self.tabsContainer = PFTabsContainer(self)
tabsSizer.Add( self.tabsContainer, 0, wx.EXPAND )
mainSizer.Add( tabsSizer, 0, wx.EXPAND, 5 )
contentSizer = wx.BoxSizer( wx.VERTICAL )
self.pageContainer = wx.Panel(self)
contentSizer.Add( self.pageContainer, 1, wx.EXPAND, 5 )
mainSizer.Add( contentSizer, 1, wx.EXPAND, 5 )
self.SetSizer( mainSizer )
self.Bind(wx.EVT_SIZE, self.OnSize)
self.Layout()
# for i in xrange(10):
# self.tabsContainer.AddTab("Pyfa TAB #%d Aw" % i)
def AddPage(self, tabWnd, tabTitle = wx.EmptyString, tabImage = None):
if self.activePage:
self.activePage.Hide()
tabWnd.Reparent(self.pageContainer)
self.pageContainer.Layout()
self.pages.append(tabWnd)
self.tabsContainer.AddTab(tabTitle, tabImage)
self.activePage = tabWnd
def SetSelected(self, page):
oldsel = self.pages.index(self.activePage)
if oldsel != page:
self.activePage.Hide()
self.activePage = self.pages[page]
self.ShowActive()
def DeletePage(self, n, internal = False):
page = self.pages[n]
self.pages.remove(page)
page.Hide()
page.Destroy()
if not internal:
self.tabsContainer.DeleteTab(n)
sel = self.tabsContainer.GetSelected()
if sel is not None:
self.activePage = self.pages[sel]
self.ShowActive()
def SwitchPages(self, src, dest, internal = False):
self.pages[src], self.pages[dest] = self.pages[dest], self.pages[src]
def ShowActive(self):
self.activePage.SetSize(self.pageContainer.GetSize())
self.activePage.Show()
self.Layout()
def OnSize(self, event):
w,h= self.GetSize()
self.tabsContainer.SetSize((w, -1))
self.tabsContainer.UpdateSize()
self.tabsContainer.Refresh()
self.Layout()
size = self.pageContainer.GetSize()
if self.activePage:
self.activePage.SetSize(size)
event.Skip()
class MiniFrame(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, -1, 'MEGA Frame',
size=(1000, 200))
self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
# self.Bind(wx.EVT_SIZE, self.OnSize)
mainSizer = wx.BoxSizer(wx.VERTICAL)
self.nb = PFNotebook(self)
self.nb.AddPage(TestPanel(self),"TEST 1")
self.nb.AddPage(TestPanel(self),"TEST 2")
self.nb.AddPage(TestPanel(self),"TEST 3")
self.nb.AddPage(TestPanel(self),"TEST 4")
self.nb.AddPage(TestPanel(self),"TEST 5")
self.nb.AddPage(TestPanel(self),"TEST 6")
mainSizer.Add(self.nb,1,wx.EXPAND)
self.SetSizer(mainSizer)
self.Layout()
# def OnSize(self, event):
# size = self.GetRect()
# self.tabContainer.SetSize((size.width, -1))
# self.tabContainer.UpdateSize()
# self.tabContainer.Refresh()
# event.Skip()
# def OnLeftDown(self, event):
# event.Skip()
#
# def OnErase(self, event):
# pass
def OnCloseWindow(self, event):
self.Destroy()
# def OnPaint(self, event):
# rect = self.GetRect()
# canvas = wx.EmptyBitmap(rect.width, rect.height)
# mdc = wx.BufferedPaintDC(self)
# mdc.SelectObject(canvas)
#
# mdc.SetBackground (wx.Brush(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW)))
# mdc.Clear()
#
# selected = None
# selpos = 0
# tabsWidth = 0
# offset = 10
#
# for tab in self.tabs:
# tabsWidth += tab.tabWidth - tab.lrZoneWidth/2
#
# pos = tabsWidth
#
# for i in xrange(len(self.tabs) - 1, -1, -1):
# tab = self.tabs[i]
# width = tab.tabWidth - tab.lrZoneWidth/2
# pos -= width
# if not tab.IsSelected():
# mdc.DrawBitmap(tab.Render(),pos+offset,10, True)
# tab.SetPosition((pos + offset, 10))
# else:
# selected = tab
# selpos = pos + offset
# if selected:
# mdc.DrawBitmap(selected.Render(), selpos,10,True)
# selected.SetPosition((selpos, 10))
#
# mdc.SetPen( wx.Pen("#D0D0D0", width = 1 ) )
# mdc.DrawLine(10,34,10,100)
# mdc.DrawLine(10,100,tabsWidth + 18,100)
# mdc.DrawLine(tabsWidth+18,100,tabsWidth+18,33)
class TestPanel ( wx.Panel ):
def __init__( self, parent ):
wx.Panel.__init__ ( self, parent, id = wx.ID_ANY, pos = wx.DefaultPosition, size = wx.Size( -1,-1 ), style = wx.TAB_TRAVERSAL )
bSizer4 = wx.BoxSizer( wx.VERTICAL )
self.m_staticText3 = wx.StaticText( self, wx.ID_ANY, u"TESSSSSSSSSST %s" % time.time(), wx.DefaultPosition, wx.DefaultSize, wx.ALIGN_CENTRE )
self.m_staticText3.Wrap( -1 )
bSizer4.Add( self.m_staticText3, 1, wx.ALL|wx.EXPAND, 5 )
self.m_button1 = wx.Button( self, wx.ID_ANY, u"MyButton", wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer4.Add( self.m_button1, 0, wx.ALL, 5 )
self.m_textCtrl1 = wx.TextCtrl( self, wx.ID_ANY, wx.EmptyString, wx.DefaultPosition, wx.DefaultSize, 0 )
bSizer4.Add( self.m_textCtrl1, 0, wx.ALL, 5 )
self.m_staticline1 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
bSizer4.Add( self.m_staticline1, 0, wx.EXPAND |wx.ALL, 5 )
self.m_gauge1 = wx.Gauge( self, wx.ID_ANY, 100, wx.DefaultPosition, wx.DefaultSize, wx.GA_HORIZONTAL )
bSizer4.Add( self.m_gauge1, 0, wx.ALL, 5 )
self.SetSizer( bSizer4 )
self.Layout()
def __del__( self ):
pass
if __name__ == '__main__':
app = wx.PySimpleApp()
MiniFrame().Show()
app.MainLoop()

View File

@@ -21,8 +21,11 @@ import wx
import wx.lib.newevent import wx.lib.newevent
import service import service
import gui.mainFrame import gui.mainFrame
import gui.marketBrowser
import bitmapLoader
import gui.display as d import gui.display as d
from gui.contextMenu import ContextMenu from gui.contextMenu import ContextMenu
import gui.shipBrowser
import sys import sys
from eos.types import Slot from eos.types import Slot
from gui.builtinViewColumns.state import State from gui.builtinViewColumns.state import State
@@ -59,7 +62,13 @@ class FittingView(d.Display):
def __init__(self, parent): def __init__(self, parent):
d.Display.__init__(self, parent) d.Display.__init__(self, parent)
self.Show(False) self.Show(False)
self.parent = parent
self.mainFrame.Bind(FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(FIT_CHANGED, self.fitChanged)
self.mainFrame.Bind(gui.shipBrowser.EVT_FIT_SELECTED, self.fitSelected)
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)
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
if "__WXGTK__" in wx.PlatformInfo: if "__WXGTK__" in wx.PlatformInfo:
@@ -73,6 +82,9 @@ class FittingView(d.Display):
self.Bind(wx.EVT_LEFT_DOWN, self.click) self.Bind(wx.EVT_LEFT_DOWN, self.click)
self.Bind(wx.EVT_RIGHT_DOWN, self.click) self.Bind(wx.EVT_RIGHT_DOWN, self.click)
def getActiveFit(self):
return self.activeFitID
def startDrag(self, event): def startDrag(self, event):
row = event.GetIndex() row = event.GetIndex()
if row != -1: if row != -1:
@@ -110,32 +122,53 @@ class FittingView(d.Display):
event.Skip() event.Skip()
#Gets called from the fitMultiSwitch when it decides its time def fitRemoved(self, event):
def changeFit(self, fitID): fitID = event.fitID
self.activeFitID = fitID if fitID == self.getActiveFit():
self.Show(fitID is not None) self.parent.DeletePage(self.parent.GetPageIndex(self))
self.slotsChanged()
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
def appendItem(self, itemID): def fitRenamed(self, event):
fitID = self.activeFitID fitID = event.fitID
if fitID != None: if fitID == self.getActiveFit():
cFit = service.Fit.getInstance() self.updateTab()
if cFit.isAmmo(itemID):
modules = []
sel = self.GetFirstSelected()
while sel != -1:
modules.append(self.mods[self.GetItemData(sel)])
sel = self.GetNextSelected(sel)
cFit.setAmmo(fitID, itemID, modules) def fitSelected(self, event):
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) if self.parent.IsActive(self):
else: fitID = event.fitID
populate = cFit.appendModule(fitID, itemID) self.activeFitID = fitID
if populate: self.Show(fitID is not None)
self.slotsChanged() self.slotsChanged()
if populate is not None: wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
self.updateTab()
def updateTab(self):
cFit = service.Fit.getInstance()
fit = cFit.getFit(self.getActiveFit())
bitmap = bitmapLoader.getBitmap("race_%s_small", "icons")
text = "%s: %s" % (fit.ship.item.name, fit.name)
self.parent.SetPageTextIcon(self.parent.GetSelection(), text, bitmap)
def appendItem(self, event):
if self.parent.IsActive(self):
itemID = event.itemID
fitID = self.activeFitID
if fitID != None:
cFit = service.Fit.getInstance()
if cFit.isAmmo(itemID):
modules = []
sel = self.GetFirstSelected()
while sel != -1:
modules.append(self.mods[self.GetItemData(sel)])
sel = self.GetNextSelected(sel)
cFit.setAmmo(fitID, itemID, modules)
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID)) wx.PostEvent(self.mainFrame, 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))
def removeItem(self, event): def removeItem(self, event):
row, _ = self.HitTest(event.Position) row, _ = self.HitTest(event.Position)

View File

@@ -79,7 +79,7 @@ class MainFrame(wx.Frame):
faSizer = wx.BoxSizer(wx.VERTICAL) faSizer = wx.BoxSizer(wx.VERTICAL)
self.fitMultiSwitch = MultiSwitch(self.FitviewAdditionsPanel) self.fitMultiSwitch = MultiSwitch(self.FitviewAdditionsPanel)
self.fitMultiSwitch.AddTab() #self.fitMultiSwitch.AddTab()
faSizer.Add(self.fitMultiSwitch,1,wx.EXPAND) faSizer.Add(self.fitMultiSwitch,1,wx.EXPAND)
self.additionsPane = AdditionsPane(self.FitviewAdditionsPanel) self.additionsPane = AdditionsPane(self.FitviewAdditionsPanel)
@@ -128,9 +128,9 @@ class MainFrame(wx.Frame):
self.Show() self.Show()
def getActiveFit(self): def getActiveFit(self):
sel = self.fitMultiSwitch.GetSelection() p = self.fitMultiSwitch.GetSelectedPage()
view = self.fitMultiSwitch.GetPage(sel).view m = getattr(p, "getActiveFit", None)
return view.activeFitID return m() if m is not None else None
def getFittingView(self): def getFittingView(self):
sel = self.fitMultiSwitch.GetSelection() sel = self.fitMultiSwitch.GetSelection()

View File

@@ -18,210 +18,10 @@
#=============================================================================== #===============================================================================
import wx import wx
import bitmapLoader import gui.chromeTabs
import gui.mainFrame import gui.fittingView
import gui.fittingView as fv
import gui.marketBrowser as mb
import gui.shipBrowser as sb
import service
class MultiSwitch(wx.Notebook): class MultiSwitch(gui.chromeTabs.PFNotebook):
def __init__(self, parent): def __init__(self, parent):
wx.Notebook.__init__(self, parent, wx.ID_ANY) gui.chromeTabs.PFNotebook.__init__(self, parent)
self.fitPanes = [] self.AddPage(gui.fittingView.FittingView(self), "Empty Fit")
self.AddPage(wx.Panel(self), "+")
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.checkAdd)
self.Bind(wx.EVT_MIDDLE_DOWN, self.checkRemove)
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, self.pageChanged)
self.Bind(wx.EVT_NAVIGATION_KEY, self.OnNavigate)
self.mainFrame.Bind(sb.EVT_FIT_RENAMED, self.processRename)
self.mainFrame.Bind(sb.EVT_FIT_SELECTED, self.changeFit)
self.mainFrame.Bind(sb.EVT_FIT_REMOVED, self.processRemove)
self.mainFrame.Bind(mb.ITEM_SELECTED, self.itemSelected)
self.imageList = wx.ImageList(16, 16)
self.SetImageList(self.imageList)
self.removal = False
self.countEvt = 1
self.ignorePageChanged = False
def OnNavigate(self, event):
self.ignorePageChanged = True
event.Skip()
def getActiveFit(self):
return self.GetCurrentPage().view.activeFitID
def AddTab(self, type="fit", frame=None, title=None):
if self.removal:
self.SetSelection(self.GetPageCount() - 2)
return False
#Hide current selection
pos = self.GetPageCount() - 1
if type == "fit":
p = wx.Panel(self)
self.InsertPage(pos, p, "")
p.type = "fit"
sizer = wx.BoxSizer(wx.VERTICAL)
p.view = fv.FittingView(p)
sizer.Add(p.view, 1, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN)
p.SetSizer(sizer)
p.Layout()
self.setTabTitle(pos, None)
else:
self.InsertPage(pos, frame, title)
frame.type=type
self.SetSelection(pos)
wx.CallAfter(self.SetSelection, pos)
return pos
def removeTab(self, i):
if self.GetPageCount() > 2:
### FIXME - seems that we remove the wrong image from the list
# self.ImageList.Remove(self.GetPageImage(i))
###
self.DeletePage(i)
else:
self.setTabTitle(i, None)
remIcon = self.GetPageImage(i)
self.SetPageImage(i, -1)
self.ImageList.Remove(remIcon)
page = self.GetPage(i)
if page.type == "fit":
page.view.changeFit(None)
def checkRemove(self, event):
tab, _ = self.HitTest(event.Position)
if tab != -1 and tab != self.GetPageCount() - 1:
self.removal = True
self.removeTab(tab)
#Deleting a tab might have put us on the "+" tab, make sure we don't stay there
if self.GetSelection() == self.GetPageCount() - 1:
self.SetSelection(self.GetPageCount() - 2)
self.removal = False
def removeCurrentTab(self):
self.removal = True
self.removeTab(self.GetSelection())
#Deleting a tab might have put us on the "+" tab, make sure we don't stay there
if self.GetSelection() == self.GetPageCount() - 1:
self.SetSelection(self.GetPageCount() - 2)
self.removal = False
def checkAdd(self, event):
if event.Selection == self.GetPageCount() - 1:
if "__WXMSW__" not in wx.PlatformInfo:
self.countEvt = 1
if not self.ignorePageChanged:
self.AddTab()
else:
self.ignorePageChanged = False
event.Veto()
#Veto to prevent the + tab from being selected
event.Veto()
def setTabTitle(self, tab, fitID):
page = self.GetPage(tab)
if page.type == "fit":
if fitID == None:
self.SetPageText(tab, "Empty Tab")
self.SetPageImage(tab, -1)
else:
cFit = service.Fit.getInstance()
fit = cFit.getFit(fitID)
self.SetPageText(tab, "%s: %s" % (fit.ship.item.name, fit.name))
bitmap = bitmapLoader.getBitmap("race_%s_small" % fit.ship.item.race, "icons")
if bitmap:
self.SetPageImage(tab, self.imageList.Add(bitmap))
def pageChanged(self, event):
#On windows, we can't use the CHANGING event as its bugged, so we need to RECHECK here
if event.Selection == self.GetPageCount() - 1:
selection = self.AddTab()
else:
selection = event.Selection
if "__WXMSW__" in wx.PlatformInfo:
self.countEvt = 0
page = self.GetPage(selection)
if self.countEvt == 0:
fitID = page.view.activeFitID
sFit = service.Fit.getInstance()
sFit.switchFit(fitID)
if hasattr(page, "type") and page.type == "fit":
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID))
else:
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=None))
self.countEvt -= 1
if self.countEvt < 0:
if "__WXMSW__" not in wx.PlatformInfo:
self.countEvt = 0
else:
self.countEvt = 1
event.Skip()
def changeFit(self, event):
selected = self.GetSelection()
page = self.GetPage(selected)
if page.type == "fit":
fitID = event.fitID
view = page.view
#Notify service
sFit = service.Fit.getInstance()
sFit.switchFit(fitID)
#Change title of current tab to new fit
self.setTabTitle(selected, fitID)
view.changeFit(fitID)
event.Skip()
def processRename(self, event):
fitID = event.fitID
# Loop through every tab and check if they're our culprit, if so, change tab name
for i in xrange(self.GetPageCount() - 1):
page = self.GetPage(i)
if page.type == "fit":
view = page.view
if view.activeFitID == fitID:
self.setTabTitle(i, fitID)
event.Skip()
def processRemove(self, event):
fitID = event.fitID
for i in xrange(self.GetPageCount() - 2, -1, -1):
page = self.GetPage(i)
if page.type == "fit":
view = page.view
if view.activeFitID == fitID:
self.removeTab(i)
#Deleting a tab might have put us on the "+" tab, make sure we don't stay there
if self.GetSelection() == self.GetPageCount() - 1:
self.SetSelection(self.GetPageCount() - 2)
event.Skip()
def itemSelected(self, event):
selected = self.GetSelection()
page = self.GetPage(selected)
if page.type == "fit":
page.view.appendItem(event.itemID)
event.Skip()

View File

@@ -2,7 +2,7 @@ import wx
import copy import copy
from gui import bitmapLoader from gui import bitmapLoader
import gui.mainFrame import gui.mainFrame
import gui.fittingView as fv import gui.fittingView
import service import service
import time import time
import os import os
@@ -63,7 +63,7 @@ class ShipBrowser(wx.Panel):
self.Bind(EVT_SB_STAGE3_SEL, self.stage3) self.Bind(EVT_SB_STAGE3_SEL, self.stage3)
self.Bind(EVT_SB_SEARCH_SEL, self.searchStage) self.Bind(EVT_SB_SEARCH_SEL, self.searchStage)
self.mainFrame.Bind(fv.FIT_CHANGED, self.RefreshList) self.mainFrame.Bind(gui.fittingView.FIT_CHANGED, self.RefreshList)
self.stage1(None) self.stage1(None)
@@ -1594,12 +1594,11 @@ class FitItem(wx.Window):
fitInst = service.fit.Fit.getInstance() fitInst = service.fit.Fit.getInstance()
draggedFit = fitInst.getFit(self.fitID) draggedFit = fitInst.getFit(self.fitID)
fitInst.project(activeFit,draggedFit) fitInst.project(activeFit,draggedFit)
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=activeFit)) wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=activeFit))
if self.checkForGraphFrame(targetWnd, gfWnd): if self.checkForGraphFrame(targetWnd, gfWnd):
self.mainFrame.graphFrame.AppendFitToList(self.fitID) self.mainFrame.graphFrame.AppendFitToList(self.fitID)
event.Skip() event.Skip()
return return