diff --git a/gui/builtinViews/fleetView.py b/gui/builtinViews/fleetView.py index 1fab389c5..fa9916d63 100644 --- a/gui/builtinViews/fleetView.py +++ b/gui/builtinViews/fleetView.py @@ -26,6 +26,10 @@ class FleetView(wx.gizmos.TreeListCtrl): wx.gizmos.TreeListCtrl.__init__(self, parent, size = size) self.tabManager = parent + + self.fleetId = None + self.fleetImg = bitmapLoader.getImage("53_16", "pack") + self.imageList = wx.ImageList(16, 16) self.SetImageList(self.imageList) @@ -39,6 +43,29 @@ class FleetView(wx.gizmos.TreeListCtrl): self.icons[icon] = self.imageList.Add(bitmapLoader.getBitmap("fleet_%s_small" % icon, "icons")) 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) @@ -46,11 +73,15 @@ class FleetView(wx.gizmos.TreeListCtrl): 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) - fleetBmp = bitmapLoader.getImage("53_16", "pack") - self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), f.name, fleetBmp) + self.fleetId = fleetID + + self.UpdateTab( f.name, self.fleetImg) self.fleet = f self.DeleteAllItems() root = self.AddRoot("") diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index 34d2cd6a4..b081096f1 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -14,6 +14,9 @@ import gui.utils.drawUtils as drawUtils import gui.sfBrowserItem as SFItem FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent() +FleetRenamed, EVT_FLEET_RENAMED = wx.lib.newevent.NewEvent() +FleetRemoved, EVT_FLEET_REMOVED = wx.lib.newevent.NewEvent() + FleetItemSelect, EVT_FLEET_ITEM_SELECT = wx.lib.newevent.NewEvent() FleetItemDelete, EVT_FLEET_ITEM_DELETE = wx.lib.newevent.NewEvent() @@ -91,10 +94,12 @@ class FleetBrowser(wx.Panel): newFleetName = event.fleetName self.sFleet.renameFleet(fleet, newFleetName) + wx.PostEvent(self.mainFrame, FleetRenamed(fleetID = fleet.ID)) def DeleteFleetItem(self, event): self.sFleet.deleteFleetByID(event.fleetID) self.PopulateFleetList() + wx.PostEvent(self.mainFrame, FleetRemoved(fleetID = event.fleetID)) def AddItem (self, ID, name, count): self.fleetItemContainer.AddWidget(FleetItem(self, ID, name, count)) @@ -301,6 +306,10 @@ class FleetItem(SFItem.SFBrowserItem): wx.PostEvent(self.fleetBrowser, FleetItemSelect(fleetID = self.fleetID)) def CopyFleetCB(self): + if self.tcFleetName.IsShown(): + self.tcFleetName.Show(False) + return + wx.PostEvent(self.fleetBrowser, FleetItemCopy(fleetID = self.fleetID)) def RenameFleetCB(self): @@ -328,6 +337,9 @@ class FleetItem(SFItem.SFBrowserItem): self.Refresh() def DeleteFleetCB(self): + if self.tcFleetName.IsShown(): + self.tcFleetName.Show(False) + return wx.PostEvent(self.fleetBrowser, FleetItemDelete(fleetID = self.fleetID)) def OnEditLostFocus(self, event):