Remove all specific code from multiSwitch, work with a spawning handler
This commit is contained in:
@@ -99,6 +99,20 @@ class PFNotebook(wx.Panel):
|
||||
def GetPage(self, i):
|
||||
return self.pages[i]
|
||||
|
||||
def SetPage(self, i, page):
|
||||
oldPage = self.pages[i]
|
||||
self.pages[i] = page
|
||||
if oldPage == self.activePage:
|
||||
self.activePage = page
|
||||
|
||||
oldPage.Destroy()
|
||||
page.Reparent(self.pageContainer)
|
||||
page.Layout()
|
||||
page.Show()
|
||||
|
||||
def ReplaceActivePage(self, page):
|
||||
self.SetPage(self.GetSelection(), page)
|
||||
|
||||
def GetSelectedPage(self):
|
||||
return self.activePage
|
||||
|
||||
|
||||
@@ -29,9 +29,25 @@ import gui.shipBrowser
|
||||
import sys
|
||||
from eos.types import Slot
|
||||
from gui.builtinViewColumns.state import State
|
||||
import gui.multiSwitch
|
||||
|
||||
FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent()
|
||||
|
||||
#Tab spawning handler
|
||||
class FitSpawner(gui.multiSwitch.TabSpawner):
|
||||
def __init__(self, multiSwitch):
|
||||
self.multiSwitch = multiSwitch
|
||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
mainFrame.Bind(gui.shipBrowser.EVT_FIT_SELECTED, self.fitSelected)
|
||||
|
||||
def fitSelected(self, event):
|
||||
view = FittingView(self.multiSwitch)
|
||||
self.multiSwitch.ReplaceActivePage(view)
|
||||
view.fitSelected(event)
|
||||
|
||||
FitSpawner.register()
|
||||
|
||||
#Drag'n'drop handler
|
||||
class FittingViewDrop(wx.PyDropTarget):
|
||||
def __init__(self, dropFn):
|
||||
wx.PyDropTarget.__init__(self)
|
||||
@@ -45,6 +61,7 @@ class FittingViewDrop(wx.PyDropTarget):
|
||||
self.dropFn(x, y, int(self.dropData.GetText()))
|
||||
return t
|
||||
|
||||
|
||||
class FittingView(d.Display):
|
||||
DEFAULT_COLS = ["State",
|
||||
"Ammo Icon",
|
||||
@@ -127,11 +144,15 @@ class FittingView(d.Display):
|
||||
if fitID == self.getActiveFit():
|
||||
self.parent.DeletePage(self.parent.GetPageIndex(self))
|
||||
|
||||
event.Skip()
|
||||
|
||||
def fitRenamed(self, event):
|
||||
fitID = event.fitID
|
||||
if fitID == self.getActiveFit():
|
||||
self.updateTab()
|
||||
|
||||
event.Skip()
|
||||
|
||||
def fitSelected(self, event):
|
||||
if self.parent.IsActive(self):
|
||||
fitID = event.fitID
|
||||
@@ -143,6 +164,8 @@ class FittingView(d.Display):
|
||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
||||
self.updateTab()
|
||||
|
||||
event.Skip()
|
||||
|
||||
def updateTab(self):
|
||||
cFit = service.Fit.getInstance()
|
||||
fit = cFit.getFit(self.getActiveFit())
|
||||
@@ -172,6 +195,8 @@ class FittingView(d.Display):
|
||||
if populate is not None:
|
||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
||||
|
||||
event.Skip()
|
||||
|
||||
def removeItem(self, event):
|
||||
row, _ = self.HitTest(event.Position)
|
||||
if row != -1:
|
||||
@@ -184,6 +209,8 @@ class FittingView(d.Display):
|
||||
if populate: self.slotsChanged()
|
||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID))
|
||||
|
||||
event.Skip()
|
||||
|
||||
def swapItems(self, x, y, itemID):
|
||||
srcRow = self.FindItemData(-1,itemID)
|
||||
dstRow, _ = self.HitTest((x, y))
|
||||
|
||||
@@ -19,9 +19,16 @@
|
||||
|
||||
import wx
|
||||
import gui.chromeTabs
|
||||
import gui.fittingView
|
||||
|
||||
class MultiSwitch(gui.chromeTabs.PFNotebook):
|
||||
def __init__(self, parent):
|
||||
gui.chromeTabs.PFNotebook.__init__(self, parent)
|
||||
self.AddPage(gui.fittingView.FittingView(self), "Empty Fit")
|
||||
self.AddPage(wx.Panel(self), "Empty Tab")
|
||||
for type in TabSpawner.tabTypes:
|
||||
type(self)
|
||||
|
||||
class TabSpawner(object):
|
||||
tabTypes = []
|
||||
@classmethod
|
||||
def register(cls):
|
||||
TabSpawner.tabTypes.append(cls)
|
||||
|
||||
Reference in New Issue
Block a user