Set of improvements to tab behaviour, as well as bugfixes and finishing

up the char editor behaviour
This commit is contained in:
cncfanatics
2010-09-16 16:25:11 +02:00
parent 85148cb87f
commit 5bb8c6e04a
5 changed files with 58 additions and 15 deletions

View File

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

View File

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

View File

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

View File

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

View File

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