so many pep8 fixes
(cherry picked from commit bee125d)
This commit is contained in:
@@ -3,6 +3,7 @@ import gui.globalEvents as GE
|
||||
import gui.chromeTabs
|
||||
import gui.mainFrame
|
||||
|
||||
|
||||
class BlankPage(wx.Panel):
|
||||
def __init__(self, parent):
|
||||
wx.Panel.__init__(self, parent, size=(0, 0))
|
||||
@@ -22,8 +23,8 @@ class BlankPage(wx.Panel):
|
||||
def pageChanged(self, event):
|
||||
if self.parent.IsActive(self):
|
||||
fitID = None
|
||||
# sFit = Fit.getInstance()
|
||||
# sFit.switchFit(fitID)
|
||||
# sFit = Fit.getInstance()
|
||||
# sFit.switchFit(fitID)
|
||||
wx.PostEvent(self.mainFrame, GE.FitChanged(fitID=fitID))
|
||||
|
||||
event.Skip()
|
||||
event.Skip()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#===============================================================================
|
||||
# =============================================================================
|
||||
# Copyright (C) 2010 Diego Duclos
|
||||
#
|
||||
# This file is part of pyfa.
|
||||
@@ -15,7 +15,7 @@
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with pyfa. If not, see <http://www.gnu.org/licenses/>.
|
||||
#===============================================================================
|
||||
# =============================================================================
|
||||
|
||||
import wx
|
||||
import wx.lib.newevent
|
||||
@@ -36,7 +36,8 @@ from service.market import Market
|
||||
|
||||
import gui.globalEvents as GE
|
||||
|
||||
#Tab spawning handler
|
||||
|
||||
# Tab spawning handler
|
||||
class FitSpawner(gui.multiSwitch.TabSpawner):
|
||||
def __init__(self, multiSwitch):
|
||||
self.multiSwitch = multiSwitch
|
||||
@@ -86,9 +87,11 @@ class FitSpawner(gui.multiSwitch.TabSpawner):
|
||||
self.multiSwitch.AddPage(view)
|
||||
view.handleDrag(type, fitID)
|
||||
|
||||
|
||||
FitSpawner.register()
|
||||
|
||||
#Drag'n'drop handler
|
||||
|
||||
# Drag'n'drop handler
|
||||
class FittingViewDrop(wx.PyDropTarget):
|
||||
def __init__(self, dropFn):
|
||||
wx.PyDropTarget.__init__(self)
|
||||
@@ -103,6 +106,7 @@ class FittingViewDrop(wx.PyDropTarget):
|
||||
self.dropFn(x, y, data)
|
||||
return t
|
||||
|
||||
|
||||
class FittingView(d.Display):
|
||||
DEFAULT_COLS = ["State",
|
||||
"Ammo Icon",
|
||||
@@ -118,7 +122,7 @@ class FittingView(d.Display):
|
||||
]
|
||||
|
||||
def __init__(self, parent):
|
||||
d.Display.__init__(self, parent, size = (0,0), style = wx.BORDER_NONE)
|
||||
d.Display.__init__(self, parent, size=(0, 0), style=wx.BORDER_NONE)
|
||||
self.Show(False)
|
||||
self.parent = parent
|
||||
self.mainFrame.Bind(GE.FIT_CHANGED, self.fitChanged)
|
||||
@@ -128,7 +132,7 @@ class FittingView(d.Display):
|
||||
|
||||
self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem)
|
||||
self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag)
|
||||
if "__WXGTK__" in wx.PlatformInfo:
|
||||
if "__WXGTK__" in wx.PlatformInfo:
|
||||
self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu)
|
||||
else:
|
||||
self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu)
|
||||
@@ -193,7 +197,7 @@ class FittingView(d.Display):
|
||||
self.addModule(x, y, int(data[1]))
|
||||
|
||||
def handleDrag(self, type, fitID):
|
||||
#Those are drags coming from pyfa sources, NOT builtin wx drags
|
||||
# Those are drags coming from pyfa sources, NOT builtin wx drags
|
||||
if type == "fit":
|
||||
wx.PostEvent(self.mainFrame, gui.shipBrowser.FitSelected(fitID=fitID))
|
||||
|
||||
@@ -223,11 +227,11 @@ class FittingView(d.Display):
|
||||
|
||||
if row != -1 and row not in self.blanks:
|
||||
data = wx.PyTextDataObject()
|
||||
data.SetText("fitting:"+str(self.mods[row].position))
|
||||
data.SetText("fitting:" + str(self.mods[row].position))
|
||||
|
||||
dropSource = wx.DropSource(self)
|
||||
dropSource.SetData(data)
|
||||
res = dropSource.DoDragDrop()
|
||||
dropSource.DoDragDrop()
|
||||
|
||||
def getSelectedMods(self):
|
||||
sel = []
|
||||
@@ -238,15 +242,14 @@ class FittingView(d.Display):
|
||||
|
||||
return sel
|
||||
|
||||
def kbEvent(self,event):
|
||||
def kbEvent(self, event):
|
||||
keycode = event.GetKeyCode()
|
||||
if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE:
|
||||
row = self.GetFirstSelected()
|
||||
firstSel = row
|
||||
while row != -1:
|
||||
if row not in self.blanks:
|
||||
self.removeModule(self.mods[row])
|
||||
self.Select(row,0)
|
||||
self.Select(row, 0)
|
||||
row = self.GetNextSelected(row)
|
||||
|
||||
event.Skip()
|
||||
@@ -309,7 +312,7 @@ class FittingView(d.Display):
|
||||
if self.parent.IsActive(self):
|
||||
itemID = event.itemID
|
||||
fitID = self.activeFitID
|
||||
if fitID != None:
|
||||
if fitID is not None:
|
||||
sFit = Fit.getInstance()
|
||||
if sFit.isAmmo(itemID):
|
||||
modules = []
|
||||
@@ -349,7 +352,6 @@ class FittingView(d.Display):
|
||||
|
||||
def addModule(self, x, y, srcIdx):
|
||||
'''Add a module from the market browser'''
|
||||
mstate = wx.GetMouseState()
|
||||
|
||||
dstRow, _ = self.HitTest((x, y))
|
||||
if dstRow != -1 and dstRow not in self.blanks:
|
||||
@@ -433,12 +435,12 @@ class FittingView(d.Display):
|
||||
for i, mod in enumerate(self.mods):
|
||||
if mod.slot != slotDivider:
|
||||
slotDivider = mod.slot
|
||||
self.blanks.append((i, slotDivider)) # where and what
|
||||
self.blanks.append((i, slotDivider)) # where and what
|
||||
|
||||
# second loop modifies self.mods, rewrites self.blanks to represent actual index of blanks
|
||||
for i, (x, slot) in enumerate(self.blanks):
|
||||
self.blanks[i] = x+i # modify blanks with actual index
|
||||
self.mods.insert(x+i, Rack.buildRack(slot))
|
||||
self.blanks[i] = x + i # modify blanks with actual index
|
||||
self.mods.insert(x + i, Rack.buildRack(slot))
|
||||
|
||||
if fit.mode:
|
||||
# Modes are special snowflakes and need a little manual loving
|
||||
@@ -494,13 +496,13 @@ class FittingView(d.Display):
|
||||
srcContext = "fittingModule"
|
||||
itemContext = sMkt.getCategoryByItem(mod.item).name
|
||||
fullContext = (srcContext, itemContext)
|
||||
if not srcContext in tuple(fCtxt[0] for fCtxt in contexts):
|
||||
if srcContext not in tuple(fCtxt[0] for fCtxt in contexts):
|
||||
contexts.append(fullContext)
|
||||
if mod.charge is not None:
|
||||
srcContext = "fittingCharge"
|
||||
itemContext = sMkt.getCategoryByItem(mod.charge).name
|
||||
fullContext = (srcContext, itemContext)
|
||||
if not srcContext in tuple(fCtxt[0] for fCtxt in contexts):
|
||||
if srcContext not in tuple(fCtxt[0] for fCtxt in contexts):
|
||||
contexts.append(fullContext)
|
||||
|
||||
selection.append(mod)
|
||||
@@ -530,7 +532,7 @@ class FittingView(d.Display):
|
||||
sel = []
|
||||
curr = self.GetFirstSelected()
|
||||
|
||||
while curr != -1 and row not in self.blanks :
|
||||
while curr != -1 and row not in self.blanks:
|
||||
sel.append(curr)
|
||||
curr = self.GetNextSelected(curr)
|
||||
|
||||
@@ -611,7 +613,7 @@ class FittingView(d.Display):
|
||||
try:
|
||||
self.MakeSnapshot()
|
||||
except:
|
||||
pass
|
||||
pass
|
||||
|
||||
def OnShow(self, event):
|
||||
if event.GetShow():
|
||||
@@ -624,19 +626,19 @@ class FittingView(d.Display):
|
||||
def Snapshot(self):
|
||||
return self.FVsnapshot
|
||||
|
||||
def MakeSnapshot(self, maxColumns = 1337):
|
||||
def MakeSnapshot(self, maxColumns=1337):
|
||||
|
||||
if self.FVsnapshot:
|
||||
del self.FVsnapshot
|
||||
|
||||
tbmp = wx.EmptyBitmap(16,16)
|
||||
tbmp = wx.EmptyBitmap(16, 16)
|
||||
tdc = wx.MemoryDC()
|
||||
tdc.SelectObject(tbmp)
|
||||
font = wx.SystemSettings_GetFont(wx.SYS_DEFAULT_GUI_FONT)
|
||||
tdc.SetFont(font)
|
||||
|
||||
columnsWidths = []
|
||||
for i in xrange(len(self.DEFAULT_COLS)):
|
||||
for i in range(len(self.DEFAULT_COLS)):
|
||||
columnsWidths.append(0)
|
||||
|
||||
sFit = Fit.getInstance()
|
||||
@@ -660,25 +662,25 @@ class FittingView(d.Display):
|
||||
maxWidth = 0
|
||||
maxRowHeight = isize
|
||||
rows = 0
|
||||
for id,st in enumerate(self.mods):
|
||||
for st in self.mods:
|
||||
for i, col in enumerate(self.activeColumns):
|
||||
if i>maxColumns:
|
||||
if i > maxColumns:
|
||||
break
|
||||
name = col.getText(st)
|
||||
|
||||
if not isinstance(name, basestring):
|
||||
name = ""
|
||||
|
||||
nx,ny = tdc.GetTextExtent(name)
|
||||
nx, ny = tdc.GetTextExtent(name)
|
||||
imgId = col.getImageId(st)
|
||||
cw = 0
|
||||
if imgId != -1:
|
||||
cw += isize + padding
|
||||
if name != "":
|
||||
cw += nx + 4*padding
|
||||
cw += nx + 4 * padding
|
||||
|
||||
if imgId == -1 and name == "":
|
||||
cw += isize +padding
|
||||
cw += isize + padding
|
||||
|
||||
maxRowHeight = max(ny, maxRowHeight)
|
||||
columnsWidths[i] = max(columnsWidths[i], cw)
|
||||
@@ -687,7 +689,7 @@ class FittingView(d.Display):
|
||||
|
||||
render = wx.RendererNative.Get()
|
||||
|
||||
#Fix column widths (use biggest between header or items)
|
||||
# Fix column widths (use biggest between header or items)
|
||||
|
||||
for i, col in enumerate(self.activeColumns):
|
||||
if i > maxColumns:
|
||||
@@ -705,26 +707,23 @@ class FittingView(d.Display):
|
||||
opts.m_labelText = name
|
||||
|
||||
if imgId != -1:
|
||||
opts.m_labelBitmap = wx.EmptyBitmap(isize,isize)
|
||||
opts.m_labelBitmap = wx.EmptyBitmap(isize, isize)
|
||||
|
||||
width = render.DrawHeaderButton(self, tdc, (0, 0, 16, 16),
|
||||
sortArrow = wx.HDR_SORT_ICON_NONE, params = opts)
|
||||
width = render.DrawHeaderButton(self, tdc, (0, 0, 16, 16), sortArrow=wx.HDR_SORT_ICON_NONE, params=opts)
|
||||
|
||||
columnsWidths[i] = max(columnsWidths[i], width)
|
||||
|
||||
tdc.SelectObject(wx.NullBitmap)
|
||||
|
||||
|
||||
maxWidth = padding * 2
|
||||
|
||||
for i in xrange(len(self.DEFAULT_COLS)):
|
||||
for i in range(len(self.DEFAULT_COLS)):
|
||||
if i > maxColumns:
|
||||
break
|
||||
maxWidth += columnsWidths[i]
|
||||
|
||||
|
||||
mdc = wx.MemoryDC()
|
||||
mbmp = wx.EmptyBitmap(maxWidth, (maxRowHeight) * rows + padding*4 + headerSize)
|
||||
mbmp = wx.EmptyBitmap(maxWidth, (maxRowHeight) * rows + padding * 4 + headerSize)
|
||||
|
||||
mdc.SelectObject(mbmp)
|
||||
|
||||
@@ -754,8 +753,8 @@ class FittingView(d.Display):
|
||||
bmp = col.bitmap
|
||||
opts.m_labelBitmap = bmp
|
||||
|
||||
width = render.DrawHeaderButton (self, mdc, (cx, padding, columnsWidths[i], headerSize), wx.CONTROL_CURRENT,
|
||||
sortArrow = wx.HDR_SORT_ICON_NONE, params = opts)
|
||||
width = render.DrawHeaderButton(self, mdc, (cx, padding, columnsWidths[i], headerSize), wx.CONTROL_CURRENT,
|
||||
sortArrow=wx.HDR_SORT_ICON_NONE, params=opts)
|
||||
|
||||
cx += columnsWidths[i]
|
||||
|
||||
@@ -765,15 +764,15 @@ class FittingView(d.Display):
|
||||
mdc.SetPen(pen)
|
||||
mdc.SetBrush(brush)
|
||||
|
||||
cy = padding*2 + headerSize
|
||||
for id,st in enumerate(self.mods):
|
||||
cy = padding * 2 + headerSize
|
||||
for st in self.mods:
|
||||
cx = padding
|
||||
|
||||
if slotMap[st.slot]:
|
||||
mdc.DrawRectangle(cx,cy,maxWidth - cx,maxRowHeight)
|
||||
mdc.DrawRectangle(cx, cy, maxWidth - cx, maxRowHeight)
|
||||
|
||||
for i, col in enumerate(self.activeColumns):
|
||||
if i>maxColumns:
|
||||
if i > maxColumns:
|
||||
break
|
||||
|
||||
name = col.getText(st)
|
||||
@@ -784,14 +783,14 @@ class FittingView(d.Display):
|
||||
tcx = cx
|
||||
|
||||
if imgId != -1:
|
||||
self.imageList.Draw(imgId,mdc,cx,cy,wx.IMAGELIST_DRAW_TRANSPARENT,False)
|
||||
self.imageList.Draw(imgId, mdc, cx, cy, wx.IMAGELIST_DRAW_TRANSPARENT, False)
|
||||
tcx += isize + padding
|
||||
|
||||
if name != "":
|
||||
nx,ny = mdc.GetTextExtent(name)
|
||||
nx, ny = mdc.GetTextExtent(name)
|
||||
rect = wx.Rect()
|
||||
rect.top = cy
|
||||
rect.left = cx + 2*padding
|
||||
rect.left = cx + 2 * padding
|
||||
rect.width = nx
|
||||
rect.height = maxRowHeight + padding
|
||||
mdc.DrawLabel(name, rect, wx.ALIGN_CENTER_VERTICAL)
|
||||
@@ -803,4 +802,4 @@ class FittingView(d.Display):
|
||||
|
||||
mdc.SelectObject(wx.NullBitmap)
|
||||
|
||||
self.FVsnapshot = mbmp
|
||||
self.FVsnapshot = mbmp
|
||||
|
||||
@@ -1,139 +1,142 @@
|
||||
import wx.gizmos
|
||||
import gui.fleetBrowser
|
||||
from gui.bitmapLoader import BitmapLoader
|
||||
|
||||
#Tab spawning handler
|
||||
class FleetSpawner(gui.multiSwitch.TabSpawner):
|
||||
def __init__(self, multiSwitch):
|
||||
self.multiSwitch = multiSwitch
|
||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_SELECTED, self.fleetSelected)
|
||||
|
||||
def fleetSelected(self, event):
|
||||
if self.multiSwitch.GetPageCount() == 0:
|
||||
self.multiSwitch.AddPage(wx.Panel(self.multiSwitch, size = (0,0)), "Empty Tab")
|
||||
|
||||
view = FleetView(self.multiSwitch)
|
||||
self.multiSwitch.ReplaceActivePage(view)
|
||||
view.populate(event.fleetID)
|
||||
view.Show()
|
||||
|
||||
FleetSpawner.register()
|
||||
|
||||
class FleetView(wx.gizmos.TreeListCtrl):
|
||||
def __init__(self, parent, size = (0,0)):
|
||||
wx.gizmos.TreeListCtrl.__init__(self, parent, size = size)
|
||||
|
||||
self.tabManager = parent
|
||||
|
||||
self.fleetId = None
|
||||
self.fleetImg = BitmapLoader.getImage("53_16", "icons")
|
||||
|
||||
self.imageList = wx.ImageList(16, 16)
|
||||
self.SetImageList(self.imageList)
|
||||
|
||||
for col in ("", "Fit", "Shiptype", "Character", "Bonusses"):
|
||||
self.AddColumn(col)
|
||||
|
||||
self.SetMainColumn(1)
|
||||
self.icons = {}
|
||||
self.addImage = self.imageList.Add(BitmapLoader.getBitmap("add_small", "gui"))
|
||||
for icon in ("fb", "fc", "sb", "sc", "wb", "wc"):
|
||||
self.icons[icon] = self.imageList.Add(BitmapLoader.getBitmap("fleet_%s_small" % icon, "gui"))
|
||||
|
||||
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.checkNew)
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_RENAMED, self.fleetRenamed)
|
||||
self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_REMOVED, self.fleetRemoved)
|
||||
|
||||
def Destroy(self):
|
||||
self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_REMOVED, handler = self.fleetRemoved)
|
||||
self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_RENAMED, handler = self.fleetRenamed)
|
||||
wx.gizmos.TreeListCtrl.Destroy(self)
|
||||
|
||||
def fleetRenamed(self, event):
|
||||
if event.fleetID == self.fleetId:
|
||||
sFleet = service.Fleet.getInstance()
|
||||
f = sFleet.getFleetByID(event.fleetID)
|
||||
self.UpdateTab(f.name, self.fleetImg)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def fleetRemoved(self, event):
|
||||
if event.fleetID == self.fleetId:
|
||||
self.tabManager.DeletePage(self.tabManager.GetPageIndex(self))
|
||||
|
||||
event.Skip()
|
||||
|
||||
def checkNew(self, event):
|
||||
data = self.GetPyData(event.Item)
|
||||
if data and isinstance(data, tuple) and data[0] == "add":
|
||||
layer = data[1]
|
||||
|
||||
|
||||
def UpdateTab(self, name, img):
|
||||
self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), name, img)
|
||||
|
||||
def populate(self, fleetID):
|
||||
sFleet = service.Fleet.getInstance()
|
||||
f = sFleet.getFleetByID(fleetID)
|
||||
self.fleetId = fleetID
|
||||
|
||||
self.UpdateTab( f.name, self.fleetImg)
|
||||
self.fleet = f
|
||||
self.DeleteAllItems()
|
||||
root = self.AddRoot("")
|
||||
|
||||
self.setEntry(root, f.leader, "fleet", f)
|
||||
for wing in f.wings:
|
||||
wingId = self.AppendItem(root, "")
|
||||
self.setEntry(wingId, wing.leader, "wing", wing)
|
||||
for squad in wing.squads:
|
||||
for member in squad.members:
|
||||
memberId = self.AppendItem(wingId, "")
|
||||
self.setEntry(memberId, member, "squad", squad)
|
||||
|
||||
self.addAdder(wingId, "squad")
|
||||
|
||||
self.addAdder(root, "wing")
|
||||
|
||||
self.ExpandAll(root)
|
||||
self.SetColumnWidth(0, 16)
|
||||
for i in xrange(1, 5):
|
||||
self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER)
|
||||
headerWidth = self.GetColumnWidth(i) + 5
|
||||
self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
|
||||
baseWidth = self.GetColumnWidth(i)
|
||||
if baseWidth < headerWidth:
|
||||
self.SetColumnWidth(i, headerWidth)
|
||||
else:
|
||||
self.SetColumnWidth(i, baseWidth)
|
||||
|
||||
|
||||
def addAdder(self, treeItemId, layer):
|
||||
id = self.AppendItem(treeItemId, "Add new %s" % layer.capitalize())
|
||||
self.SetPyData(id, ("add", layer))
|
||||
self.SetItemImage(id, self.addImage, 1)
|
||||
|
||||
def setEntry(self, treeItemId, fit, layer, info):
|
||||
self.SetPyData(treeItemId, info)
|
||||
if fit is None:
|
||||
self.SetItemText(treeItemId, "%s Commander" % layer.capitalize(), 1)
|
||||
else:
|
||||
fleet = self.fleet
|
||||
if fit == info.booster:
|
||||
self.SetItemImage(treeItemId, self.icons["%sb" % layer[0]], 0)
|
||||
elif fit == info.leader:
|
||||
self.SetItemImage(treeItemId, self.icons["%sc" % layer[0]], 1)
|
||||
|
||||
self.SetItemText(treeItemId, fit.name, 1)
|
||||
self.SetItemText(treeItemId, fit.ship.item.name, 2)
|
||||
self.SetItemText(treeItemId, fit.character.name, 3)
|
||||
boosts = fleet.store.getBoosts(fit)
|
||||
if boosts:
|
||||
bonusses = []
|
||||
for name, info in boosts.iteritems():
|
||||
bonusses.append("%s: %.2g" % (name, info[0]))
|
||||
|
||||
self.SetItemText(treeItemId, ", ".join(bonusses), 3)
|
||||
import wx.gizmos
|
||||
import gui.fleetBrowser
|
||||
from gui.bitmapLoader import BitmapLoader
|
||||
from service.fleet import Fleet
|
||||
|
||||
|
||||
# Tab spawning handler
|
||||
class FleetSpawner(gui.multiSwitch.TabSpawner):
|
||||
def __init__(self, multiSwitch):
|
||||
self.multiSwitch = multiSwitch
|
||||
mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_SELECTED, self.fleetSelected)
|
||||
|
||||
def fleetSelected(self, event):
|
||||
if self.multiSwitch.GetPageCount() == 0:
|
||||
self.multiSwitch.AddPage(wx.Panel(self.multiSwitch, size=(0, 0)), "Empty Tab")
|
||||
|
||||
view = FleetView(self.multiSwitch)
|
||||
self.multiSwitch.ReplaceActivePage(view)
|
||||
view.populate(event.fleetID)
|
||||
view.Show()
|
||||
|
||||
|
||||
FleetSpawner.register()
|
||||
|
||||
|
||||
class FleetView(wx.gizmos.TreeListCtrl):
|
||||
def __init__(self, parent, size=(0, 0)):
|
||||
wx.gizmos.TreeListCtrl.__init__(self, parent, size=size)
|
||||
|
||||
self.tabManager = parent
|
||||
|
||||
self.fleetId = None
|
||||
self.fleetImg = BitmapLoader.getImage("53_16", "icons")
|
||||
|
||||
self.imageList = wx.ImageList(16, 16)
|
||||
self.SetImageList(self.imageList)
|
||||
|
||||
for col in ("", "Fit", "Shiptype", "Character", "Bonusses"):
|
||||
self.AddColumn(col)
|
||||
|
||||
self.SetMainColumn(1)
|
||||
self.icons = {}
|
||||
self.addImage = self.imageList.Add(BitmapLoader.getBitmap("add_small", "gui"))
|
||||
for icon in ("fb", "fc", "sb", "sc", "wb", "wc"):
|
||||
self.icons[icon] = self.imageList.Add(BitmapLoader.getBitmap("fleet_%s_small" % icon, "gui"))
|
||||
|
||||
self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.checkNew)
|
||||
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
|
||||
|
||||
self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_RENAMED, self.fleetRenamed)
|
||||
self.mainFrame.Bind(gui.fleetBrowser.EVT_FLEET_REMOVED, self.fleetRemoved)
|
||||
|
||||
def Destroy(self):
|
||||
self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_REMOVED, handler=self.fleetRemoved)
|
||||
self.mainFrame.Unbind(gui.fleetBrowser.EVT_FLEET_RENAMED, handler=self.fleetRenamed)
|
||||
wx.gizmos.TreeListCtrl.Destroy(self)
|
||||
|
||||
def fleetRenamed(self, event):
|
||||
if event.fleetID == self.fleetId:
|
||||
sFleet = Fleet.getInstance()
|
||||
f = sFleet.getFleetByID(event.fleetID)
|
||||
self.UpdateTab(f.name, self.fleetImg)
|
||||
|
||||
event.Skip()
|
||||
|
||||
def fleetRemoved(self, event):
|
||||
if event.fleetID == self.fleetId:
|
||||
self.tabManager.DeletePage(self.tabManager.GetPageIndex(self))
|
||||
|
||||
event.Skip()
|
||||
|
||||
def checkNew(self, event):
|
||||
data = self.GetPyData(event.Item)
|
||||
if data and isinstance(data, tuple) and data[0] == "add":
|
||||
layer = data[1]
|
||||
|
||||
|
||||
def UpdateTab(self, name, img):
|
||||
self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), name, img)
|
||||
|
||||
def populate(self, fleetID):
|
||||
sFleet = Fleet.getInstance()
|
||||
f = sFleet.getFleetByID(fleetID)
|
||||
self.fleetId = fleetID
|
||||
|
||||
self.UpdateTab(f.name, self.fleetImg)
|
||||
self.fleet = f
|
||||
self.DeleteAllItems()
|
||||
root = self.AddRoot("")
|
||||
|
||||
self.setEntry(root, f.leader, "fleet", f)
|
||||
for wing in f.wings:
|
||||
wingId = self.AppendItem(root, "")
|
||||
self.setEntry(wingId, wing.leader, "wing", wing)
|
||||
for squad in wing.squads:
|
||||
for member in squad.members:
|
||||
memberId = self.AppendItem(wingId, "")
|
||||
self.setEntry(memberId, member, "squad", squad)
|
||||
|
||||
self.addAdder(wingId, "squad")
|
||||
|
||||
self.addAdder(root, "wing")
|
||||
|
||||
self.ExpandAll(root)
|
||||
self.SetColumnWidth(0, 16)
|
||||
for i in range(1, 5):
|
||||
self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER)
|
||||
headerWidth = self.GetColumnWidth(i) + 5
|
||||
self.SetColumnWidth(i, wx.LIST_AUTOSIZE)
|
||||
baseWidth = self.GetColumnWidth(i)
|
||||
if baseWidth < headerWidth:
|
||||
self.SetColumnWidth(i, headerWidth)
|
||||
else:
|
||||
self.SetColumnWidth(i, baseWidth)
|
||||
|
||||
def addAdder(self, treeItemId, layer):
|
||||
id_ = self.AppendItem(treeItemId, "Add new %s" % layer.capitalize())
|
||||
self.SetPyData(id_, ("add", layer))
|
||||
self.SetItemImage(id_, self.addImage, 1)
|
||||
|
||||
def setEntry(self, treeItemId, fit, layer, info):
|
||||
self.SetPyData(treeItemId, info)
|
||||
if fit is None:
|
||||
self.SetItemText(treeItemId, "%s Commander" % layer.capitalize(), 1)
|
||||
else:
|
||||
fleet = self.fleet
|
||||
if fit == info.booster:
|
||||
self.SetItemImage(treeItemId, self.icons["%sb" % layer[0]], 0)
|
||||
elif fit == info.leader:
|
||||
self.SetItemImage(treeItemId, self.icons["%sc" % layer[0]], 1)
|
||||
|
||||
self.SetItemText(treeItemId, fit.name, 1)
|
||||
self.SetItemText(treeItemId, fit.ship.item.name, 2)
|
||||
self.SetItemText(treeItemId, fit.character.name, 3)
|
||||
boosts = fleet.store.getBoosts(fit)
|
||||
if boosts:
|
||||
bonusses = []
|
||||
for name, info in boosts.iteritems():
|
||||
bonusses.append("%s: %.2g" % (name, info[0]))
|
||||
|
||||
self.SetItemText(treeItemId, ", ".join(bonusses), 3)
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import wx
|
||||
import gui.display as d
|
||||
from gui.bitmapLoader import BitmapLoader
|
||||
import gui.PFSearchBox as SBox
|
||||
from gui.marketBrowser import SearchBox
|
||||
from wx.lib.buttons import GenBitmapButton
|
||||
|
||||
from service.market import Market
|
||||
import gui.display as d
|
||||
import gui.PFSearchBox as SBox
|
||||
from gui.bitmapLoader import BitmapLoader
|
||||
from gui.marketBrowser import SearchBox
|
||||
|
||||
|
||||
class BaseImplantEditorView (wx.Panel):
|
||||
def addMarketViewImage(self, iconFile):
|
||||
@@ -17,7 +19,7 @@ class BaseImplantEditorView (wx.Panel):
|
||||
return self.availableImplantsImageList.Add(bitmap)
|
||||
|
||||
def __init__(self, parent):
|
||||
wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL)
|
||||
wx.Panel.__init__(self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.TAB_TRAVERSAL)
|
||||
self.SetBackgroundColour(wx.SystemSettings_GetColour(wx.SYS_COLOUR_WINDOW))
|
||||
|
||||
pmainSizer = wx.BoxSizer(wx.HORIZONTAL)
|
||||
@@ -46,25 +48,23 @@ class BaseImplantEditorView (wx.Panel):
|
||||
|
||||
availableSizer.Add(self.availableImplantsTree, 1, wx.EXPAND)
|
||||
|
||||
|
||||
pmainSizer.Add(availableSizer, 1, wx.ALL | wx.EXPAND, 5)
|
||||
|
||||
|
||||
buttonSizer = wx.BoxSizer(wx.VERTICAL)
|
||||
buttonSizer.AddSpacer(( 0, 0), 1)
|
||||
buttonSizer.AddSpacer((0, 0), 1)
|
||||
|
||||
self.btnAdd = GenBitmapButton(self, wx.ID_ADD, BitmapLoader.getBitmap("fit_add_small", "gui"), style = wx.BORDER_NONE)
|
||||
self.btnAdd = GenBitmapButton(self, wx.ID_ADD, BitmapLoader.getBitmap("fit_add_small", "gui"), style=wx.BORDER_NONE)
|
||||
buttonSizer.Add(self.btnAdd, 0)
|
||||
|
||||
self.btnRemove = GenBitmapButton(self, wx.ID_REMOVE, BitmapLoader.getBitmap("fit_delete_small", "gui"), style = wx.BORDER_NONE)
|
||||
self.btnRemove = GenBitmapButton(self, wx.ID_REMOVE, BitmapLoader.getBitmap("fit_delete_small", "gui"), style=wx.BORDER_NONE)
|
||||
buttonSizer.Add(self.btnRemove, 0)
|
||||
|
||||
buttonSizer.AddSpacer(( 0, 0), 1)
|
||||
buttonSizer.AddSpacer((0, 0), 1)
|
||||
pmainSizer.Add(buttonSizer, 0, wx.EXPAND, 0)
|
||||
|
||||
characterImplantSizer = wx.BoxSizer(wx.VERTICAL)
|
||||
self.pluggedImplantsTree = AvailableImplantsView(self)
|
||||
characterImplantSizer.Add(self.pluggedImplantsTree, 1, wx.ALL|wx.EXPAND, 5)
|
||||
characterImplantSizer.Add(self.pluggedImplantsTree, 1, wx.ALL | wx.EXPAND, 5)
|
||||
pmainSizer.Add(characterImplantSizer, 1, wx.EXPAND, 5)
|
||||
|
||||
self.SetSizer(pmainSizer)
|
||||
@@ -80,13 +80,13 @@ class BaseImplantEditorView (wx.Panel):
|
||||
|
||||
self.availableImplantsTree.SortChildren(self.availableRoot)
|
||||
|
||||
#Bind the event to replace dummies by real data
|
||||
# Bind the event to replace dummies by real data
|
||||
self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup)
|
||||
self.availableImplantsTree.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.itemSelected)
|
||||
|
||||
self.itemView.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.itemSelected)
|
||||
|
||||
#Bind add & remove buttons
|
||||
# Bind add & remove buttons
|
||||
self.btnAdd.Bind(wx.EVT_BUTTON, self.itemSelected)
|
||||
self.btnRemove.Bind(wx.EVT_BUTTON, self.removeItem)
|
||||
|
||||
@@ -136,7 +136,7 @@ class BaseImplantEditorView (wx.Panel):
|
||||
|
||||
# if the dummy item is a market group, replace with actual market groups
|
||||
if text == "dummy":
|
||||
#Add 'real stoof!' instead
|
||||
# Add 'real stoof!' instead
|
||||
currentMktGrp = sMkt.getMarketGroup(tree.GetPyData(parent), eager="children")
|
||||
for childMktGrp in sMkt.getMarketGroupChildren(currentMktGrp):
|
||||
iconId = self.addMarketViewImage(sMkt.getIconByMarketGroup(childMktGrp))
|
||||
@@ -194,6 +194,7 @@ class BaseImplantEditorView (wx.Panel):
|
||||
self.removeImplantFromContext(self.implants[pos])
|
||||
self.update()
|
||||
|
||||
|
||||
class AvailableImplantsView(d.Display):
|
||||
DEFAULT_COLS = ["attr:implantness",
|
||||
"Base Icon",
|
||||
@@ -203,6 +204,7 @@ class AvailableImplantsView(d.Display):
|
||||
d.Display.__init__(self, parent, style=wx.LC_SINGLE_SEL)
|
||||
self.Bind(wx.EVT_LEFT_DCLICK, parent.removeItem)
|
||||
|
||||
|
||||
class ItemView(d.Display):
|
||||
DEFAULT_COLS = ["Base Icon",
|
||||
"Base Name",
|
||||
@@ -255,4 +257,4 @@ class ItemView(d.Display):
|
||||
|
||||
self.items = sorted(list(items), key=lambda i: i.name)
|
||||
|
||||
self.update(self.items)
|
||||
self.update(self.items)
|
||||
|
||||
Reference in New Issue
Block a user