Set of improvements to tab behaviour, as well as bugfixes and finishing
up the char editor behaviour
This commit is contained in:
@@ -30,6 +30,11 @@ class Character():
|
||||
|
||||
return cls.instance
|
||||
|
||||
def all0ID(self):
|
||||
all0 = eos.types.Character.getAll0()
|
||||
eos.db.commit()
|
||||
return all0.ID
|
||||
|
||||
def getCharacterList(self):
|
||||
baseChars = [eos.types.Character.getAll0(), eos.types.Character.getAll5()]
|
||||
# Flush incase all0 & all5 weren't in the db yet
|
||||
|
||||
@@ -106,7 +106,7 @@ class Display(wx.ListCtrl):
|
||||
def refresh(self, stuff):
|
||||
if stuff == None:
|
||||
return
|
||||
|
||||
|
||||
self.Freeze()
|
||||
item = -1
|
||||
for id, st in enumerate(stuff):
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
import wx
|
||||
import controller
|
||||
from gui import characterEditor as ce
|
||||
from gui import shipBrowser as sb
|
||||
from gui import fittingView as fv
|
||||
import gui.mainFrame
|
||||
|
||||
@@ -40,6 +41,9 @@ class CharacterSelection(wx.Panel):
|
||||
|
||||
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.Enable(False)
|
||||
|
||||
def getActiveCharacter(self):
|
||||
selection = self.charChoice.GetCurrentSelection()
|
||||
@@ -72,3 +76,31 @@ class CharacterSelection(wx.Panel):
|
||||
cFit.changeChar(fitID, charID)
|
||||
|
||||
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID))
|
||||
|
||||
def selectChar(self, charID):
|
||||
choice = self.charChoice
|
||||
numItems = len(choice.GetItems())
|
||||
for i in xrange(numItems):
|
||||
id = choice.GetClientData(i)
|
||||
if id == charID:
|
||||
choice.SetSelection(i)
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def fitChanged(self, event):
|
||||
self.Enable(event.fitID != None)
|
||||
|
||||
choice = self.charChoice
|
||||
cFit = controller.Fit.getInstance()
|
||||
currCharID = choice.GetClientData(choice.GetCurrentSelection())
|
||||
fit = cFit.getFit(event.fitID)
|
||||
newCharID = fit.character.ID if fit is not None else None
|
||||
|
||||
if newCharID == None:
|
||||
cChar = controller.Character.getInstance()
|
||||
self.selectChar(cChar.all0ID())
|
||||
elif currCharID != newCharID:
|
||||
self.selectChar(newCharID)
|
||||
|
||||
event.Skip()
|
||||
@@ -40,17 +40,12 @@ class FittingView(d.Display):
|
||||
d.Display.__init__(self, parent)
|
||||
self.mainFrame.Bind(FIT_CHANGED, self.fitChanged)
|
||||
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
|
||||
self.Hide() #Don't show ourselves at start
|
||||
self.activeFitID = None
|
||||
|
||||
#Gets called from the fitMultiSwitch when it decides its time
|
||||
def changeFit(self, fitID):
|
||||
self.activeFitID = fitID
|
||||
if fitID == None:
|
||||
self.Hide()
|
||||
else:
|
||||
self.Show()
|
||||
|
||||
self.Show(fitID is not None)
|
||||
self.slotsChanged()
|
||||
wx.PostEvent(self.mainFrame, FitChanged(fitID=fitID))
|
||||
|
||||
@@ -91,9 +86,9 @@ class FittingView(d.Display):
|
||||
self.populate(self.mods)
|
||||
|
||||
def fitChanged(self, event):
|
||||
if event.fitID != self.activeFitID:
|
||||
return
|
||||
if self.activeFitID is not None and self.activeFitID == event.fitID:
|
||||
self.generateMods()
|
||||
self.refresh(self.mods)
|
||||
|
||||
self.generateMods()
|
||||
self.refresh(self.mods)
|
||||
self.Show(self.activeFitID is not None and self.activeFitID == event.fitID)
|
||||
event.Skip()
|
||||
|
||||
@@ -48,6 +48,9 @@ class MultiSwitch(wx.Notebook):
|
||||
return self.GetCurrentPage().view.activeFitID
|
||||
|
||||
def AddTab(self, type="fit", frame=None, title=None):
|
||||
#Hide current selection
|
||||
self.GetCurrentPage().Hide()
|
||||
|
||||
pos = self.GetPageCount() - 1
|
||||
|
||||
if type == "fit":
|
||||
@@ -59,14 +62,15 @@ class MultiSwitch(wx.Notebook):
|
||||
sizer.Add(p.view, 1, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN)
|
||||
|
||||
p.SetSizer(sizer)
|
||||
|
||||
self.InsertPage(pos, p, "")
|
||||
self.setTabTitle(pos, None)
|
||||
else:
|
||||
self.InsertPage(pos, frame, title)
|
||||
frame.type=type
|
||||
|
||||
self.ChangeSelection(pos)
|
||||
wx.CallAfter(self.ChangeSelection, pos)
|
||||
return pos
|
||||
|
||||
def removeTab(self, i):
|
||||
if self.GetPageCount() > 2:
|
||||
@@ -109,12 +113,20 @@ class MultiSwitch(wx.Notebook):
|
||||
self.SetPageImage(tab, self.imageList.Add(bitmap))
|
||||
|
||||
def pageChanged(self, event):
|
||||
print "p"
|
||||
selection = event.Selection
|
||||
#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
|
||||
|
||||
page = self.GetPage(selection)
|
||||
if hasattr(page, "type") and page.type == "fit":
|
||||
fitID = page.view.activeFitID
|
||||
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID))
|
||||
else:
|
||||
wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=None))
|
||||
|
||||
event.Skip()
|
||||
|
||||
def changeFit(self, event):
|
||||
selected = self.GetSelection()
|
||||
@@ -149,7 +161,6 @@ class MultiSwitch(wx.Notebook):
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user