diff --git a/eos b/eos index 2319c0297..61bb6cf13 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit 2319c0297f90643ea79017172613f478ec947d65 +Subproject commit 61bb6cf132acb549c5722d231ef7c21ac9058e9a diff --git a/gui/builtinViews/fittingView.py b/gui/builtinViews/fittingView.py index e86dccb1b..8ca0583fc 100644 --- a/gui/builtinViews/fittingView.py +++ b/gui/builtinViews/fittingView.py @@ -25,11 +25,10 @@ import gui.marketBrowser import gui.display as d from gui.contextMenu import ContextMenu import gui.shipBrowser +import gui.multiSwitch from eos.types import Slot from gui.builtinViewColumns.state import State -import gui.multiSwitch from gui import bitmapLoader -import gui.shipBrowser FitChanged, FIT_CHANGED = wx.lib.newevent.NewEvent() @@ -59,8 +58,19 @@ class FitSpawner(gui.multiSwitch.TabSpawner): def handleDrag(self, type, fitID): if type == "fit": + for page in self.multiSwitch.pages: + if isinstance(page, FittingView) and page.activeFitID == fitID: + index = self.multiSwitch.GetPageIndex(page) + self.multiSwitch.SetSelection(index) + return + elif isinstance(page, gui.multiSwitch.BlankPage): + view = FittingView(self.multiSwitch) + self.multiSwitch.ReplaceActivePage(view) + view.handleDrag(type, fitID) + return + view = FittingView(self.multiSwitch) - self.multiSwitch.ReplaceActivePage(view) + self.multiSwitch.AddPage(view) view.handleDrag(type, fitID) FitSpawner.register() diff --git a/gui/builtinViews/fleetView.py b/gui/builtinViews/fleetView.py index e21817e87..cda729d5c 100644 --- a/gui/builtinViews/fleetView.py +++ b/gui/builtinViews/fleetView.py @@ -33,12 +33,19 @@ class FleetView(wx.gizmos.TreeListCtrl): self.AddColumn(col) self.SetMainColumn(1) - self.icons = {} self.addImage = self.imageList.Add(bitmapLoader.getBitmap("add_small", "icons")) for icon in ("fb", "fc", "sb", "sc", "wb", "wc"): self.icons[icon] = self.imageList.Add(bitmapLoader.getBitmap("fleet_%s_small" % icon, "icons")) + self.Bind(wx.EVT_TREE_ITEM_ACTIVATED, self.checkNew) + + def checkNew(self, event): + data = self.GetPyData(event.Item) + if data and isinstance(data, tuple) and data[0] == "add": + layer = data[1] + + def populate(self, fleetID): sFleet = service.Fleet.getInstance() f = sFleet.getFleetByID(fleetID) @@ -75,9 +82,11 @@ class FleetView(wx.gizmos.TreeListCtrl): 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: diff --git a/gui/multiSwitch.py b/gui/multiSwitch.py index 0400927c4..0ad6364bb 100644 --- a/gui/multiSwitch.py +++ b/gui/multiSwitch.py @@ -29,10 +29,7 @@ class MultiSwitch(gui.chromeTabs.PFNotebook): for type in TabSpawner.tabTypes: handlers.append(type(self)) - def handleDrag(self, type, info, spawnTab=True): - if spawnTab: - self.AddPage() - + def handleDrag(self, type, info): for handler in self.handlers: h = getattr(handler, "handleDrag", None) if h: @@ -40,8 +37,8 @@ class MultiSwitch(gui.chromeTabs.PFNotebook): def AddPage(self, tabWnd=None, tabTitle="Empty Tab", tabImage=None): if tabWnd is None: - tabWnd = wx.Panel(self, size=(0, 0)) - tabWnd.handleDrag = lambda type, info: self.handleDrag(type, info, False) + tabWnd = BlankPage(self) + tabWnd.handleDrag = lambda type, info: self.handleDrag(type, info) gui.chromeTabs.PFNotebook.AddPage(self, tabWnd, tabTitle, tabImage, True) @@ -52,6 +49,10 @@ class MultiSwitch(gui.chromeTabs.PFNotebook): else: gui.mainFrame.MainFrame.getInstance().Close() +class BlankPage(wx.Panel): + def __init__(self, parent): + wx.Panel.__init__(self, parent, size=(0, 0)) + class TabSpawner(object): tabTypes = [] @classmethod