Wire up events so the active fit in a tab changes when a new fit is selected, and names change when renamed, etc.
This commit is contained in:
@@ -30,6 +30,7 @@ class Fit(object):
|
||||
|
||||
return cls.instance
|
||||
|
||||
|
||||
def getFitsWithShip(self, id):
|
||||
fits = eos.db.getFitsWithShip(id)
|
||||
names = []
|
||||
@@ -62,3 +63,6 @@ class Fit(object):
|
||||
eos.db.saveddata_session.add(newFit)
|
||||
eos.db.saveddata_session.flush()
|
||||
return newFit.ID
|
||||
|
||||
def getFit(self, fitID):
|
||||
return eos.db.getFit(fitID)
|
||||
|
||||
@@ -18,8 +18,11 @@
|
||||
#===============================================================================
|
||||
|
||||
import wx
|
||||
import gui.mainFrame
|
||||
from gui.fittingView import FittingView
|
||||
from gui.statsPane import StatsPane
|
||||
import gui.shipBrowser as sb
|
||||
import controller
|
||||
|
||||
class FitMultiSwitch(wx.Notebook):
|
||||
def __init__(self, parent):
|
||||
@@ -28,19 +31,49 @@ class FitMultiSwitch(wx.Notebook):
|
||||
self.AddPage(wx.Panel(self), "+")
|
||||
self.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGING, self.checkAdd)
|
||||
|
||||
self.shipBrowser = gui.mainFrame.MainFrame.getInstance().shipBrowser
|
||||
|
||||
self.shipBrowser.Bind(sb.EVT_FIT_RENAMED, self.processRename)
|
||||
self.shipBrowser.Bind(sb.EVT_FIT_SELECTED, self.changeFit)
|
||||
|
||||
def AddTab(self):
|
||||
pos = self.GetPageCount() - 1
|
||||
|
||||
p = wx.Panel(self)
|
||||
sizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
|
||||
sizer.Add(FittingView(p), 1, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN)
|
||||
p.view = FittingView(p)
|
||||
sizer.Add(p.view, 1, wx.EXPAND | wx.RESERVE_SPACE_EVEN_IF_HIDDEN)
|
||||
|
||||
p.SetSizer(sizer)
|
||||
pos = self.GetPageCount() - 1
|
||||
self.InsertPage(pos, p, "Empty tab")
|
||||
|
||||
# Get fit name
|
||||
fitID = self.shipBrowser.getSelectedFitID()
|
||||
if fitID is None:
|
||||
name = "Empty Tab"
|
||||
else:
|
||||
cFit = controller.Fit.getInstance()
|
||||
name = cFit.getFit(fitID).name
|
||||
|
||||
self.InsertPage(pos, p, name)
|
||||
wx.CallAfter(self.ChangeSelection, pos)
|
||||
|
||||
def checkAdd(self, event):
|
||||
|
||||
if event.Selection == self.GetPageCount() - 1:
|
||||
self.AddTab()
|
||||
event.Veto()
|
||||
|
||||
def changeFit(self, event):
|
||||
fitID = event.fitID
|
||||
cFit = controller.Fit.getInstance()
|
||||
selected = self.GetSelection()
|
||||
view = self.GetPage(selected).view
|
||||
self.SetPageText(selected, cFit.getFit(fitID).name)
|
||||
view.changeFit(fitID)
|
||||
|
||||
def processRename(self, event):
|
||||
fitID = event.fitID
|
||||
cFit = controller.Fit.getInstance()
|
||||
for i in xrange(self.GetPageCount() - 1):
|
||||
view = self.GetPage(i).view
|
||||
if view.activeFitID == fitID:
|
||||
self.SetPageText(i, cFit.getFit(fitID).name)
|
||||
|
||||
@@ -18,8 +18,9 @@
|
||||
#===============================================================================
|
||||
|
||||
import wx
|
||||
import sys
|
||||
import controller
|
||||
import gui.builtinViewColumns
|
||||
import gui.shipBrowser as sb
|
||||
import gui.mainFrame
|
||||
from gui.builtinViewColumns import *
|
||||
|
||||
@@ -40,14 +41,12 @@ class FittingView(wx.ListCtrl):
|
||||
self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL)
|
||||
self.activeColumns = []
|
||||
self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.resizeChecker)
|
||||
self.Bind(wx.EVT_LIST_COL_CLICK, self.dragCheck)
|
||||
self.Bind(wx.EVT_LIST_COL_END_DRAG, self.dragCheck)
|
||||
|
||||
#Listen to when stuff in the ship browser changes
|
||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
for tree in (mainFrame.shipBrowser.shipView, mainFrame.shipBrowser.searchView):
|
||||
tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.changeFit)
|
||||
tree.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.renameFit)
|
||||
self.shipBrowser = mainFrame.shipBrowser
|
||||
self.shipView = mainFrame.shipBrowser.shipView
|
||||
self.searchView = mainFrame.shipBrowser.shipView
|
||||
self.switch = mainFrame.fitMultiSwitch
|
||||
|
||||
i = 0
|
||||
for colName in FittingView.DEFAULT_COLS:
|
||||
@@ -64,6 +63,7 @@ class FittingView(wx.ListCtrl):
|
||||
i += 1
|
||||
|
||||
self.imageListBase = self.imageList.ImageCount
|
||||
self.activeFitID = None
|
||||
|
||||
def addColumn(self, i, col):
|
||||
self.activeColumns.append(col)
|
||||
@@ -78,16 +78,6 @@ class FittingView(wx.ListCtrl):
|
||||
if self.activeColumns[event.Column].resizable is False:
|
||||
event.Veto()
|
||||
|
||||
def dragCheck(self, event):
|
||||
print event
|
||||
|
||||
def dragEnd(self, event):
|
||||
print event
|
||||
|
||||
def renameFit(self, event):
|
||||
print event
|
||||
event.Skip()
|
||||
|
||||
def changeFit(self, event):
|
||||
print event
|
||||
event.Skip()
|
||||
#Gets called from the fitMultiSwitch when it decides its time
|
||||
def changeFit(self, fitID):
|
||||
self.activeFitID = fitID
|
||||
|
||||
@@ -2,6 +2,12 @@ import wx
|
||||
import controller
|
||||
import bitmapLoader
|
||||
import gui.mainFrame
|
||||
import wx.lib.newevent
|
||||
|
||||
FitCreated, EVT_FIT_CREATED = wx.lib.newevent.NewEvent()
|
||||
FitRenamed, EVT_FIT_RENAMED = wx.lib.newevent.NewEvent()
|
||||
FitRemoved, EVT_FIT_REMOVED = wx.lib.newevent.NewEvent()
|
||||
FitSelected, EVT_FIT_SELECTED = wx.lib.newevent.NewEvent()
|
||||
|
||||
class ShipBrowser(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
@@ -49,7 +55,6 @@ class ShipBrowser(wx.Panel):
|
||||
tree.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup)
|
||||
tree.Bind(wx.EVT_TREE_SEL_CHANGED, self.toggleButtons)
|
||||
tree.Bind(wx.EVT_TREE_END_LABEL_EDIT, self.changeFitName)
|
||||
tree.Bind(wx.EVT_LEFT_DCLICK, self.renameOrExpand)
|
||||
|
||||
#Bind buttons
|
||||
self.shipMenu.new.Bind(wx.EVT_BUTTON, self.newFit)
|
||||
@@ -68,6 +73,8 @@ class ShipBrowser(wx.Panel):
|
||||
|
||||
self.timer = None
|
||||
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
def build(self):
|
||||
if not self.built:
|
||||
self.built = True
|
||||
@@ -98,12 +105,14 @@ class ShipBrowser(wx.Panel):
|
||||
if data is None:
|
||||
return
|
||||
|
||||
type, groupID = data
|
||||
type, fitID = data
|
||||
if type == "fit":
|
||||
for btn in btns:
|
||||
btn.Enable()
|
||||
|
||||
elif type == "ship":
|
||||
wx.PostEvent(self, FitSelected(fitID=fitID))
|
||||
|
||||
elif type == "ship":
|
||||
for btn in btns:
|
||||
btn.Enable(btn == self.shipMenu.new)
|
||||
|
||||
@@ -154,17 +163,8 @@ class ShipBrowser(wx.Panel):
|
||||
tree.Expand(root)
|
||||
tree.SelectItem(childId)
|
||||
tree.EditLabel(childId)
|
||||
event.Skip()
|
||||
|
||||
def renameOrExpand(self, event):
|
||||
tree = self.getActiveTree()
|
||||
root = tree.GetSelection()
|
||||
type, _ = tree.GetPyData(root)
|
||||
if type == "fit":
|
||||
tree.EditLabel(root)
|
||||
|
||||
event.Skip()
|
||||
|
||||
wx.PostEvent(self, FitCreated(fitID=fitID))
|
||||
|
||||
def renameFit(self, event):
|
||||
tree = self.getActiveTree()
|
||||
@@ -182,8 +182,10 @@ class ShipBrowser(wx.Panel):
|
||||
type, fitID = tree.GetPyData(item)
|
||||
cFit = controller.Fit.getInstance()
|
||||
cFit.renameFit(fitID, newName)
|
||||
|
||||
wx.CallAfter(tree.SortChildren, tree.GetItemParent(item))
|
||||
event.Skip()
|
||||
|
||||
wx.PostEvent(self, FitRenamed(fitID=fitID))
|
||||
|
||||
def deleteFit(self, event):
|
||||
tree = self.getActiveTree()
|
||||
@@ -194,7 +196,7 @@ class ShipBrowser(wx.Panel):
|
||||
cFit.deleteFit(fitID)
|
||||
tree.Delete(root)
|
||||
|
||||
event.Skip()
|
||||
wx.PostEvent(self, FitRemoved(fitID=fitID))
|
||||
|
||||
def copyFit(self, event):
|
||||
tree = self.getActiveTree()
|
||||
@@ -210,7 +212,7 @@ class ShipBrowser(wx.Panel):
|
||||
tree.SelectItem(childId)
|
||||
tree.EditLabel(childId)
|
||||
|
||||
event.Skip()
|
||||
wx.PostEvent(self, FitCreated(fitID=newID))
|
||||
|
||||
def scheduleSearch(self, event):
|
||||
self.searchTimer.Stop()
|
||||
@@ -279,6 +281,16 @@ class ShipBrowser(wx.Panel):
|
||||
|
||||
event.Skip()
|
||||
|
||||
def getSelectedFitID(self):
|
||||
tree = self.getActiveTree()
|
||||
selection = tree.GetSelection()
|
||||
data = tree.GetPyData(selection)
|
||||
if data is not None:
|
||||
type, fitID = data
|
||||
if type == "fit":
|
||||
return fitID
|
||||
|
||||
|
||||
class ShipView(wx.TreeCtrl):
|
||||
def __init__(self, parent):
|
||||
wx.TreeCtrl.__init__(self, parent)
|
||||
|
||||
Reference in New Issue
Block a user