From 6e1b789fb26798e3ff5717bde7819beff4ae090b Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Sat, 20 Nov 2010 20:32:47 +0100 Subject: [PATCH] Move some view handling stuff around and do initial work on the fleetBrowser --- eos | 2 +- gui/boosterView.py | 2 +- gui/builtinContextMenus/ammoPattern.py | 2 - gui/builtinContextMenus/damagePattern.py | 6 +-- gui/builtinContextMenus/droneSplit.py | 4 +- gui/builtinContextMenus/factorReload.py | 4 +- gui/builtinContextMenus/moduleAmmoPicker.py | 4 +- gui/builtinContextMenus/project.py | 4 +- gui/builtinStatsViews/resistancesViewFull.py | 2 +- gui/builtinViews/__init__.py | 1 + gui/{ => builtinViews}/fittingView.py | 3 +- gui/builtinViews/fleetView.py | 55 ++++++++++++++++++++ gui/characterEditor.py | 2 +- gui/characterSelection.py | 2 +- gui/chromeTabs.py | 14 +++-- gui/droneView.py | 2 +- gui/fleetBrowser.py | 19 ++++--- gui/fleetView.py | 29 ----------- gui/graphFrame.py | 1 - gui/implantView.py | 2 +- gui/mainFrame.py | 2 +- gui/mainMenuBar.py | 3 +- gui/projectedView.py | 2 +- gui/shipBrowser.py | 4 +- gui/statsPane.py | 2 +- service/__init__.py | 1 + service/fleet.py | 12 +++++ 27 files changed, 117 insertions(+), 69 deletions(-) create mode 100755 gui/builtinViews/__init__.py rename gui/{ => builtinViews}/fittingView.py (99%) create mode 100644 gui/builtinViews/fleetView.py delete mode 100644 gui/fleetView.py diff --git a/eos b/eos index 5c635976f..0c6e93331 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit 5c635976f29ec5009e4f9867a5e2cefebc88b68a +Subproject commit 0c6e933317a204bc4d61be4347c42f262625f1c7 diff --git a/gui/boosterView.py b/gui/boosterView.py index 2fa80a713..98d4513e0 100644 --- a/gui/boosterView.py +++ b/gui/boosterView.py @@ -20,7 +20,7 @@ import wx import service import gui.display as d -import gui.fittingView as fv +import gui.builtinViews.fittingView as fv import gui.marketBrowser as mb from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu diff --git a/gui/builtinContextMenus/ammoPattern.py b/gui/builtinContextMenus/ammoPattern.py index 8693e2c21..a12d93cc8 100644 --- a/gui/builtinContextMenus/ammoPattern.py +++ b/gui/builtinContextMenus/ammoPattern.py @@ -1,9 +1,7 @@ from gui.contextMenu import ContextMenu import gui.mainFrame import service -import gui.fittingView import wx -import gui.fittingView from gui import bitmapLoader class AmmoPattern(ContextMenu): diff --git a/gui/builtinContextMenus/damagePattern.py b/gui/builtinContextMenus/damagePattern.py index a2da50777..ff8e741eb 100644 --- a/gui/builtinContextMenus/damagePattern.py +++ b/gui/builtinContextMenus/damagePattern.py @@ -1,7 +1,7 @@ from gui.contextMenu import ContextMenu import gui.mainFrame import service -import gui.fittingView +import gui.builtinViews.fittingView import wx from gui import bitmapLoader @@ -15,7 +15,7 @@ class DamagePattern(ContextMenu): def getText(self, context, selection): sDP = service.DamagePattern.getInstance() self.patterns = sDP.getDamagePatternList() - self.patterns.sort( key=lambda p: (p.name in ["Selected Ammo", + self.patterns.sort( key=lambda p: (p.name in ["Selected Ammo", "Uniform"], p.name) ) m = map(lambda p: p.name, self.patterns) return m @@ -26,7 +26,7 @@ class DamagePattern(ContextMenu): fitID = self.mainFrame.getActiveFit() sFit.setDamagePattern(fitID, self.patterns[i]) setattr(self.mainFrame,"_activeDmgPattern",self.patterns[i]) - wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, gui.builtinViews.fittingView.FitChanged(fitID=fitID)) def getBitmap(self, context, selection): sFit = service.Fit.getInstance() diff --git a/gui/builtinContextMenus/droneSplit.py b/gui/builtinContextMenus/droneSplit.py index 7e6e360e0..a48fd5023 100644 --- a/gui/builtinContextMenus/droneSplit.py +++ b/gui/builtinContextMenus/droneSplit.py @@ -1,7 +1,7 @@ from gui.contextMenu import ContextMenu from gui.itemStats import ItemStatsDialog import gui.mainFrame -import gui.fittingView +import gui.builtinViews.fittingView import service import wx @@ -54,5 +54,5 @@ class DroneSpinner(wx.Dialog): sFit.splitDroneStack(fitID, self.drone, self.spinner.GetValue()) else: sFit.splitProjectedDroneStack(fitID, self.drone, self.spinner.GetValue()) - wx.PostEvent(mainFrame, gui.fittingView.FitChanged(fitID=fitID)) + wx.PostEvent(mainFrame, gui.builtinViews.fittingView.FitChanged(fitID=fitID)) event.Skip() diff --git a/gui/builtinContextMenus/factorReload.py b/gui/builtinContextMenus/factorReload.py index 5a889fbb7..fbf2ad0bf 100644 --- a/gui/builtinContextMenus/factorReload.py +++ b/gui/builtinContextMenus/factorReload.py @@ -1,7 +1,7 @@ from gui.contextMenu import ContextMenu import gui.mainFrame import service -import gui.fittingView +import gui.builtinViews.fittingView import wx from gui import bitmapLoader @@ -19,7 +19,7 @@ class FactorReload(ContextMenu): sFit = service.Fit.getInstance() fitID = self.mainFrame.getActiveFit() sFit.toggleFactorReload(fitID) - wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, gui.builtinViews.fittingView.FitChanged(fitID=fitID)) def getBitmap(self, context, selection): sFit = service.Fit.getInstance() diff --git a/gui/builtinContextMenus/moduleAmmoPicker.py b/gui/builtinContextMenus/moduleAmmoPicker.py index 13ba18f44..3b172b313 100644 --- a/gui/builtinContextMenus/moduleAmmoPicker.py +++ b/gui/builtinContextMenus/moduleAmmoPicker.py @@ -1,10 +1,10 @@ from gui.contextMenu import ContextMenu import gui.mainFrame import service -import gui.fittingView import wx from gui import bitmapLoader from eos.types import Hardpoint +import gui.builtinViews.fittingView class ModuleAmmoPicker(ContextMenu): def __init__(self): @@ -179,6 +179,6 @@ class ModuleAmmoPicker(ContextMenu): fitID = self.mainFrame.getActiveFit() sFit.setAmmo(fitID, charge.ID if charge is not None else None, self.modules) - wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, gui.builtinViews.fittingView.FitChanged(fitID=fitID)) ModuleAmmoPicker.register() diff --git a/gui/builtinContextMenus/project.py b/gui/builtinContextMenus/project.py index 2f709e6c8..ec9d5747c 100644 --- a/gui/builtinContextMenus/project.py +++ b/gui/builtinContextMenus/project.py @@ -1,7 +1,7 @@ from gui.contextMenu import ContextMenu import gui.mainFrame import service -import gui.fittingView +import gui.builtinViews.fittingView import wx class Project(ContextMenu): @@ -22,6 +22,6 @@ class Project(ContextMenu): sFit = service.Fit.getInstance() fitID = self.mainFrame.getActiveFit() sFit.project(fitID, selection[0]) - wx.PostEvent(self.mainFrame, gui.fittingView.FitChanged(fitID=fitID)) + wx.PostEvent(self.mainFrame, gui.builtinViews.fittingView.FitChanged(fitID=fitID)) Project.register() diff --git a/gui/builtinStatsViews/resistancesViewFull.py b/gui/builtinStatsViews/resistancesViewFull.py index 629087ed9..aaaa67989 100644 --- a/gui/builtinStatsViews/resistancesViewFull.py +++ b/gui/builtinStatsViews/resistancesViewFull.py @@ -25,7 +25,7 @@ from gui import pygauge as PG from util import formatAmount import service import gui.mainFrame -import gui.fittingView as fv +import gui.builtinViews.fittingView as fv EffictiveHpToggled, EFFECTIVE_HP_TOGGLED = wx.lib.newevent.NewEvent() diff --git a/gui/builtinViews/__init__.py b/gui/builtinViews/__init__.py new file mode 100755 index 000000000..4d1ed63c6 --- /dev/null +++ b/gui/builtinViews/__init__.py @@ -0,0 +1 @@ +__all__ = ["fittingView", "fleetView"] diff --git a/gui/fittingView.py b/gui/builtinViews/fittingView.py similarity index 99% rename from gui/fittingView.py rename to gui/builtinViews/fittingView.py index ae8333094..048857817 100644 --- a/gui/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -22,14 +22,13 @@ import wx.lib.newevent import service import gui.mainFrame import gui.marketBrowser -import bitmapLoader import gui.display as d from gui.contextMenu import ContextMenu import gui.shipBrowser -import sys from eos.types import Slot from gui.builtinViewColumns.state import State import gui.multiSwitch +from gui import bitmapLoader FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent() diff --git a/gui/builtinViews/fleetView.py b/gui/builtinViews/fleetView.py new file mode 100644 index 000000000..0266c9a8a --- /dev/null +++ b/gui/builtinViews/fleetView.py @@ -0,0 +1,55 @@ +import wx.gizmos +import gui.fleetBrowser +import service + +#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): + 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): + wx.gizmos.TreeListCtrl.__init__(self, parent) + + self.tabManager = parent + self.imageList = wx.ImageList(16, 16) + self.SetImageList(self.imageList) + + for col in ("Fit", "Shiptype", "Character", "Bonusses"): + self.AddColumn(col) + + + def populate(self, fleetID): + sFleet = service.Fleet.getInstance() + f = sFleet.getFleet(fleetID) + self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), f.name) + self.fleet = f + self.DeleteAllItems() + root = self.AddRoot("FC") + self.setEntry(root, f.leader) + + def setEntry(self, treeItemId, fit): + if fit is None: + self.SetItemText(treeItemId, "Empty", 0) + else: + fleet = self.fleet + self.SetItemText(treeItemId, fit.name, 0) + self.SetItemText(treeItemId, fit.ship.item.name, 1) + self.SetItemText(treeItemId, fit.character.name, 2) + 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) diff --git a/gui/characterEditor.py b/gui/characterEditor.py index c4599b83b..351742d16 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -27,7 +27,7 @@ import service import gui.display as d from gui.contextMenu import ContextMenu import sys -import gui.fittingView as fv +import gui.builtinViews.fittingView as fv CharListUpdated, CHAR_LIST_UPDATED = wx.lib.newevent.NewEvent() CharChanged, CHAR_CHANGED = wx.lib.newevent.NewEvent() diff --git a/gui/characterSelection.py b/gui/characterSelection.py index b30c10212..f9434017b 100644 --- a/gui/characterSelection.py +++ b/gui/characterSelection.py @@ -21,7 +21,7 @@ import wx import service from gui import characterEditor as ce from gui import bitmapLoader -from gui import fittingView as fv +from gui.builtinViews import fittingView as fv import gui.mainFrame class CharacterSelection(wx.Panel): diff --git a/gui/chromeTabs.py b/gui/chromeTabs.py index a7f97e092..22413196d 100644 --- a/gui/chromeTabs.py +++ b/gui/chromeTabs.py @@ -204,17 +204,23 @@ class PFNotebook(wx.Panel): def IsActive(self, page): return self.activePage == page - def SetPageText(self, i, text, refresh=False): + def SetPageText(self, i, text, refresh=True): tab = self.tabsContainer.tabs[i] tab.text = text + if refresh: + self.tabsContainer.AdjustTabsSize() + self.Refresh() - def SetPageIcon(self, i, icon, refresh=False): + def SetPageIcon(self, i, icon, refresh=True): tab = self.tabsContainer.tabs[i] tab.tabImg = icon + if refresh: + self.tabsContainer.AdjustTabsSize() + self.Refresh() def SetPageTextIcon(self, i, text=wx.EmptyString, icon=None): - self.SetPageText(i, text) - self.SetPageIcon(i, icon) + self.SetPageText(i, text, False) + self.SetPageIcon(i, icon, False) self.tabsContainer.AdjustTabsSize() self.Refresh() diff --git a/gui/droneView.py b/gui/droneView.py index f897a6bde..0b400c1a0 100644 --- a/gui/droneView.py +++ b/gui/droneView.py @@ -20,7 +20,7 @@ import wx import service -import gui.fittingView as fv +import gui.builtinViews.fittingView as fv import gui.marketBrowser as mb import gui.display as d from gui.builtinViewColumns.state import State diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index fb88d0c7f..04f726eab 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -1,6 +1,13 @@ import wx import copy from gui import bitmapLoader +import gui.mainFrame + +class FleetBrowser(wx.Panel): + def __init__(self, parent): + wx.Panel.__init__(self, parent) + self.SetBackgroundColour("pink") + x = FleetItem(self, 1, "IMBA Fleet", 23, size = (200,32)) FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent() @@ -10,6 +17,7 @@ class FleetItem(wx.Window): size=(0,16), style=0): wx.Window.__init__(self, parent, id, pos, size, style) + self.mainFrame = gui.mainFrame.MainFrame.getInstance() self.fleetID = fleetID self.fleetName = fleetName self.fleetCount = fleetCount @@ -26,6 +34,11 @@ class FleetItem(wx.Window): self.Bind(wx.EVT_LEAVE_WINDOW, self.LeaveWindow) self.Bind(wx.EVT_ENTER_WINDOW, self.EnterWindow) + self.Bind(wx.EVT_LEFT_UP, self.selected) + + def selected(self, event): + wx.PostEvent(self.mainFrame, FleetSelected(fleetID=0)) + event.Skip() def Rename(self, newName): self.fleetName = newName @@ -102,9 +115,3 @@ class FleetItem(wx.Window): event.Skip() - -class FleetBrowser(wx.Panel): - def __init__(self, parent): - wx.Panel.__init__(self, parent) - self.SetBackgroundColour("pink") - x = FleetItem(self, 1, "IMBA Fleet", 23, size = (200,32)) \ No newline at end of file diff --git a/gui/fleetView.py b/gui/fleetView.py deleted file mode 100644 index 204f77123..000000000 --- a/gui/fleetView.py +++ /dev/null @@ -1,29 +0,0 @@ -import wx.gizmos -import gui.fleetBrowser - -#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): - view = FleetView(self.multiSwitch) - self.multiSwitch.ReplaceActivePage(view) - -FleetSpawner.register() - -class FleetView(wx.gizmos.TreeListCtrl): - def __init__(self, parent): - wx.gizmos.TreeListCtrl.__init__(self, parent) - self.imageList = wx.ImageList(16, 16) - self.SetImageList(self.imageList) - - for col in ("Fit", "Character", "Bonusses"): - self.AddColumn(col) - - self.AddRoot("WC") - - def populate(self): - pass diff --git a/gui/graphFrame.py b/gui/graphFrame.py index ed3ffe583..908ed23f3 100644 --- a/gui/graphFrame.py +++ b/gui/graphFrame.py @@ -20,7 +20,6 @@ import wx import bitmapLoader import gui.display -import gui.fittingView try: import matplotlib as mpl diff --git a/gui/implantView.py b/gui/implantView.py index b4637570c..24d6557e3 100644 --- a/gui/implantView.py +++ b/gui/implantView.py @@ -20,7 +20,7 @@ import wx import service import gui.display as d -import gui.fittingView as fv +import gui.builtinViews.fittingView as fv import gui.marketBrowser as mb from gui.builtinViewColumns.state import State from gui.contextMenu import ContextMenu diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 568082a6b..1b5cb99cb 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -35,11 +35,11 @@ from gui.graphFrame import GraphFrame from gui.copySelectDialog import CopySelectDialog from gui.fleetBrowser import FleetBrowser import aboutData -import gui.fittingView as fv from wx._core import PyDeadObjectError import os.path import gui.chromeTabs from util import toClipboard, fromClipboard +from builtinViews import * #dummy panel no paint no erasebk class PFPanel(wx.Panel): diff --git a/gui/mainMenuBar.py b/gui/mainMenuBar.py index 465f38c33..2c5992a70 100644 --- a/gui/mainMenuBar.py +++ b/gui/mainMenuBar.py @@ -19,7 +19,6 @@ import wx import bitmapLoader -import gui.fittingView import gui.mainFrame import gui.graphFrame @@ -91,7 +90,7 @@ class MainMenuBar(wx.MenuBar): - self.mainFrame.Bind(gui.fittingView.FIT_CHANGED, self.fitChanged) + self.mainFrame.Bind(gui.builtinViews.fittingView.FIT_CHANGED, self.fitChanged) def fitChanged(self, event): enable = event.fitID is not None diff --git a/gui/projectedView.py b/gui/projectedView.py index 8017e504b..dd3a4e8c3 100644 --- a/gui/projectedView.py +++ b/gui/projectedView.py @@ -19,7 +19,7 @@ import wx import gui.display as d -import gui.fittingView as fv +import gui.builtinViews.fittingView as fv import service import gui.droneView from gui.builtinViewColumns.state import State diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py index 8b7144840..fdff546df 100644 --- a/gui/shipBrowser.py +++ b/gui/shipBrowser.py @@ -2,7 +2,7 @@ import wx import copy from gui import bitmapLoader import gui.mainFrame -import gui.fittingView +import gui.builtinViews.fittingView import service import time import os @@ -79,7 +79,7 @@ class ShipBrowser(wx.Panel): self.Bind(EVT_SB_STAGE3_SEL, self.stage3) self.Bind(EVT_SB_SEARCH_SEL, self.searchStage) - self.mainFrame.Bind(gui.fittingView.FIT_CHANGED, self.RefreshList) + self.mainFrame.Bind(gui.builtinViews.fittingView.FIT_CHANGED, self.RefreshList) self.stage1(None) diff --git a/gui/statsPane.py b/gui/statsPane.py index 00020c9e7..260a047c8 100644 --- a/gui/statsPane.py +++ b/gui/statsPane.py @@ -23,7 +23,7 @@ import service from gui.pyfatogglepanel import TogglePanel import gui.builtinStatsViews from gui.contextMenu import ContextMenu -import gui.fittingView as fv +import gui.builtinViews.fittingView as fv import gui.mainFrame class StatsPane(wx.Panel): diff --git a/service/__init__.py b/service/__init__.py index d67f3d046..7ade0eb7e 100644 --- a/service/__init__.py +++ b/service/__init__.py @@ -4,3 +4,4 @@ from service.attribute import Attribute from service.character import Character from service.damagePattern import DamagePattern from service.settings import SettingsProvider +from service.fleet import Fleet diff --git a/service/fleet.py b/service/fleet.py index 191f3b154..e23a76366 100644 --- a/service/fleet.py +++ b/service/fleet.py @@ -18,6 +18,8 @@ #=============================================================================== import eos.db +from eos.types import Fit, Ship, Character +from eos.types import Fleet as Fleet_ class Fleet(object): instance = None @@ -38,3 +40,13 @@ class Fleet(object): fleetList.append(fleet.ID, fleet.name, fleet.count()) return fleetList + + def getFleet(self, ID): + f = Fleet_() + f.name = "Test" + f.leader = Fit() + f.leader.name = "FC" + f.leader.ship = Ship(eos.db.getItem("Damnation")) + f.character = Character("Moo") + f.calculateModifiedAttributes() + return f