diff --git a/gui/builtinViewColumns/display.py b/gui/builtinViewColumns/display.py new file mode 100644 index 000000000..a03b15a1d --- /dev/null +++ b/gui/builtinViewColumns/display.py @@ -0,0 +1,73 @@ +#=============================================================================== +# Copyright (C) 2010 Diego Duclos +# +# This file is part of pyfa. +# +# pyfa is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# pyfa is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with pyfa. If not, see . +#=============================================================================== + +import wx +import gui.mainFrame + +class Display(wx.ListCtrl): + def __init__(self, parent): + from gui.builtinViewColumns import * + wx.ListCtrl.__init__(self, parent, style=wx.LC_REPORT | wx.BORDER_NONE) + + self.imageList = wx.ImageList(16, 16) + self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL) + self.activeColumns = [] + self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.resizeChecker) + + self.mainFrame = gui.mainFrame.MainFrame.getInstance() + + i = 0 + for colName in self.DEFAULT_COLS: + if colName[0:5] == "attr:": + attrName = colName[5:] + params = {"showIcon": True, + "displayName": False, + "attribute": attrName} + col = gui.builtinViewColumns.getColumn("Attribute Display")(self, params) + else: + col = gui.builtinViewColumns.getColumn(colName)(self, None) + + self.addColumn(i, col) + i += 1 + + self.imageListBase = self.imageList.ImageCount + + def OnEraseBackGround(self, event): + #Prevent flicker by not letting the parent's method get called. + pass + + def addColumn(self, i, col): + self.activeColumns.append(col) + info = wx.ListItem() + info.m_mask = col.mask + info.m_image = col.imageId + info.m_text = col.columnText + self.InsertColumnInfo(i, info) + col.resized = False + self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER if col.size is wx.LIST_AUTOSIZE else col.size) + + def resizeChecker(self, event): + if self.activeColumns[event.Column].resizable is False: + event.Veto() + else: + self.activeColumns[event.Column].resized = True + + def clearItemImages(self): + for i in xrange(self.imageList.ImageCount - 1, self.imageListBase, -1): + self.imageList.Remove(i) diff --git a/gui/droneView.py b/gui/droneView.py index 664552e1a..8ee3564b8 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -21,9 +21,9 @@ import wx import gui.mainFrame import gui.fittingView as fv -import gui.builtinViewColumns +import gui.builtinViewColumns.display as d -class DroneView(wx.ListCtrl): +class DroneView(d.Display): DEFAULT_COLS = ["Name", "Drone DPS", "Max range", @@ -31,51 +31,8 @@ class DroneView(wx.ListCtrl): "attr:maxVelocity"] def __init__(self, parent): - wx.ListCtrl.__init__(self, parent, style=wx.LC_REPORT | wx.BORDER_NONE) - - self.imageList = wx.ImageList(16, 16) - self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL) - self.activeColumns = [] - self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.resizeChecker) - - self.mainFrame = gui.mainFrame.MainFrame.getInstance() + d.Display.__init__(self, parent) self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) - i = 0 - for colName in self.DEFAULT_COLS: - if colName[0:5] == "attr:": - attrName = colName[5:] - params = {"showIcon": True, - "displayName": False, - "attribute": attrName} - col = gui.builtinViewColumns.getColumn("Attribute Display")(self, params) - else: - col = gui.builtinViewColumns.getColumn(colName)(self, None) - - self.addColumn(i, col) - i += 1 - - self.imageListBase = self.imageList.ImageCount - - def OnEraseBackGround(self, event): - #Prevent flicker by not letting the parent's method get called. - pass - - def addColumn(self, i, col): - self.activeColumns.append(col) - info = wx.ListItem() - info.m_mask = col.mask - info.m_image = col.imageId - info.m_text = col.columnText - self.InsertColumnInfo(i, info) - col.resized = False - self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER if col.size is wx.LIST_AUTOSIZE else col.size) - - def resizeChecker(self, event): - if self.activeColumns[event.Column].resizable is False: - event.Veto() - else: - self.activeColumns[event.Column].resized = True - def fitChanged(self, event): pass diff --git a/gui/fittingView.py b/gui/fittingView.py index f80e69b62..05ea29094 100644 --- a/gui/fittingView.py +++ b/gui/fittingView.py @@ -20,15 +20,14 @@ import wx import wx.lib.newevent import controller -import gui.builtinViewColumns import gui.mainFrame -from gui.builtinViewColumns import * +import gui.builtinViewColumns.display as d import sys from eos.types import Slot FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent() -class FittingView(wx.ListCtrl): +class FittingView(d.Display): DEFAULT_COLS = ["Module state", "Module name/slot", "attr:power", @@ -38,68 +37,11 @@ class FittingView(wx.ListCtrl): "Max range"] def __init__(self, parent): - listStyle = wx.LC_REPORT | wx.BORDER_NONE - wx.ListCtrl.__init__(self, parent, wx.ID_ANY, style=listStyle) - - self.imageList = wx.ImageList(16, 16) - self.SetImageList(self.imageList, wx.IMAGE_LIST_SMALL) - self.activeColumns = [] - self.Bind(wx.EVT_LIST_COL_BEGIN_DRAG, self.resizeChecker) - - mainFrame = gui.mainFrame.MainFrame.getInstance() - mainFrame.Bind(FIT_CHANGED, self.fitChanged) - - 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: - if colName[0:5] == "attr:": - attrName = colName[5:] - params = {"showIcon": True, - "displayName": False, - "attribute": attrName} - col = gui.builtinViewColumns.getColumn("Attribute Display")(self, params) - else: - col = gui.builtinViewColumns.getColumn(colName)(self, None) - - self.addColumn(i, col) - i += 1 - - self.imageListBase = self.imageList.ImageCount - self.activeFitID = None - + 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.mainFrame = gui.mainFrame.MainFrame.getInstance() - - def OnEraseBackGround(self, event): - #Prevent flicker by not letting the parent's method get called. - pass - - def addColumn(self, i, col): - self.activeColumns.append(col) - info = wx.ListItem() - info.m_mask = col.mask - info.m_image = col.imageId - info.m_text = col.columnText - self.InsertColumnInfo(i, info) - col.resized = False - self.SetColumnWidth(i, wx.LIST_AUTOSIZE_USEHEADER if col.size is wx.LIST_AUTOSIZE else col.size) - - def resizeChecker(self, event): - if self.activeColumns[event.Column].resizable is False: - event.Veto() - else: - self.activeColumns[event.Column].resized = True - - def clearItemImages(self): - for i in xrange(self.imageList.ImageCount - 1, self.imageListBase, -1): - self.imageList.Remove(i) + self.activeFitID = None #Gets called from the fitMultiSwitch when it decides its time def changeFit(self, fitID):