From 83d71671954574518bd129b6f9b7641742fb32c6 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Mon, 22 Nov 2010 19:08:38 +0200 Subject: [PATCH 1/4] Implemented fleet copy --- gui/builtinViews/fleetView.py | 2 +- gui/fleetBrowser.py | 25 +++++++++++++++++++++---- service/fleet.py | 8 ++++++-- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/gui/builtinViews/fleetView.py b/gui/builtinViews/fleetView.py index 91ae727da..3e20af06e 100644 --- a/gui/builtinViews/fleetView.py +++ b/gui/builtinViews/fleetView.py @@ -40,7 +40,7 @@ class FleetView(wx.gizmos.TreeListCtrl): def populate(self, fleetID): sFleet = service.Fleet.getInstance() - f = sFleet.getFleet(fleetID) + f = sFleet.getFleetByID(fleetID) self.tabManager.SetPageTextIcon(self.tabManager.GetSelection(), f.name) self.fleet = f self.DeleteAllItems() diff --git a/gui/fleetBrowser.py b/gui/fleetBrowser.py index f46d8e514..fb965059a 100644 --- a/gui/fleetBrowser.py +++ b/gui/fleetBrowser.py @@ -12,6 +12,7 @@ FleetSelected, EVT_FLEET_SELECTED = wx.lib.newevent.NewEvent() FleetItemSelect, EVT_FLEET_ITEM_SELECT = wx.lib.newevent.NewEvent() FleetItemDelete, EVT_FLEET_ITEM_DELETE = wx.lib.newevent.NewEvent() FleetItemNew, EVT_FLEET_ITEM_NEW = wx.lib.newevent.NewEvent() +FleetItemCopy, EVT_FLEET_ITEM_COPY = wx.lib.newevent.NewEvent() @@ -44,6 +45,7 @@ class FleetBrowser(wx.Panel): self.Bind(EVT_FLEET_ITEM_NEW, self.AddNewFleetItem) self.Bind(EVT_FLEET_ITEM_SELECT, self.SelectFleetItem) self.Bind(EVT_FLEET_ITEM_DELETE, self.DeleteFleetItem) + self.Bind(EVT_FLEET_ITEM_COPY, self.CopyFleetItem) self.PopulateFleetList() @@ -52,18 +54,31 @@ class FleetBrowser(wx.Panel): newFleet = self.sFleet.addFleet() self.sFleet.renameFleet(newFleet, fleetName) - self.fleetItemContainer.AddWidget(FleetItem(self, newFleet.ID, newFleet.name, newFleet.count())) - self.fleetItemContainer.RefreshList() + self.AddItem(newFleet.ID, newFleet.name, newFleet.count()) def SelectFleetItem(self, event): fleetID = event.fleetID self.fleetItemContainer.SelectWidgetByFleetID(fleetID) wx.PostEvent(self.mainFrame, FleetSelected(fleetID=fleetID)) + def CopyFleetItem(self, event): + fleetID = event.fleetID + fleet = self.sFleet.copyFleetByID(fleetID) + fleetName = fleet.name + " Copy" + self.sFleet.renameFleet(fleet,fleetName) + + self.AddItem(fleet.ID, fleet.name, fleet.count()) + self.fleetItemContainer.SelectWidgetByFleetID(fleet.ID) + wx.PostEvent(self.mainFrame, FleetSelected(fleetID=fleet.ID)) + def DeleteFleetItem(self, event): self.sFleet.deleteFleetByID(event.fleetID) self.PopulateFleetList() + def AddItem (self, ID, name, count): + self.fleetItemContainer.AddWidget(FleetItem(self, ID, name, count)) + self.fleetItemContainer.RefreshList() + def PopulateFleetList(self): self.Freeze() filter = self.filter @@ -261,6 +276,7 @@ class FleetItem(wx.Window): self.btnDelete.Bind(wx.EVT_ENTER_WINDOW, self.OnBtnEnterWindow) self.btnDelete.Bind(wx.EVT_BUTTON, self.OnDelete) + self.btnCopy.Bind(wx.EVT_BUTTON, self.OnCopy) self.Bind(wx.EVT_TIMER, self.OnTimer) @@ -288,8 +304,9 @@ class FleetItem(wx.Window): wx.PostEvent(self.Parent.Parent, FleetItemDelete(fleetID = self.fleetID)) event.Skip() - def Copy(self): - print "Copy" + def OnCopy(self, event): + wx.PostEvent(self.Parent.Parent, FleetItemCopy(fleetID = self.fleetID)) + event.Skip() def IsSelected(self): return self.selected diff --git a/service/fleet.py b/service/fleet.py index 2d2417cd5..a4116d734 100644 --- a/service/fleet.py +++ b/service/fleet.py @@ -41,7 +41,7 @@ class Fleet(object): return fleetList - def getFleet(self, ID): + def getFleetByID(self, ID): f = eos.db.getFleet(ID) return f @@ -59,9 +59,13 @@ class Fleet(object): eos.db.save(newFleet) return newFleet + def copyFleetByID(self, ID): + fleet = self.getFleetByID(ID) + return self.copyFleet(fleet) + def deleteFleet(self, fleet): eos.db.remove(fleet) def deleteFleetByID(self, ID): - fleet = self.getFleet(ID) + fleet = self.getFleetByID(ID) self.deleteFleet(fleet) From d5718d97f980fc82255fa2461e9fc41fe1488b93 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Mon, 22 Nov 2010 21:19:51 +0200 Subject: [PATCH 2/4] Hideapp in case of wxDuck --- gui/mainFrame.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index f318c99fb..60e3e859d 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -132,6 +132,7 @@ class MainFrame(wx.Frame): self.registerMenu() #Show ourselves + self.Bind(wx.EVT_CLOSE, self.OnClose) self.Show() def getActiveFit(self): @@ -142,17 +143,29 @@ class MainFrame(wx.Frame): def getActiveView(self): sel = self.fitMultiSwitch.GetSelectedPage() + def OnClose(self, event): + if 'wxMac' in wx.PlatformInfo: + if hasattr(wx.GetApp(), "MacHideApp"): + wx.GetApp().MacHideApp() + else: + self.ExitApp(event) + return + self.ExitApp(event) + def CloseCurrentFit(self, evt): ms = self.fitMultiSwitch page = ms.GetSelection() if page is not None: ms.DeletePage(page) + return + if 'wxMac' in wx.PlatformInfo: + self.Close() def ExitApp(self, evt): try: service.SettingsProvider.getInstance().saveAll() - self.Close() + self.Destroy() except PyDeadObjectError: pass From 448cc23afabb89ef88653363ffc518b71125566f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20B=C3=B6lter?= Date: Mon, 22 Nov 2010 20:22:29 +0100 Subject: [PATCH 3/4] Revert "Hideapp in case of wxDuck" This reverts commit d5718d97f980fc82255fa2461e9fc41fe1488b93. --- gui/mainFrame.py | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 60e3e859d..f318c99fb 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -132,7 +132,6 @@ class MainFrame(wx.Frame): self.registerMenu() #Show ourselves - self.Bind(wx.EVT_CLOSE, self.OnClose) self.Show() def getActiveFit(self): @@ -143,29 +142,17 @@ class MainFrame(wx.Frame): def getActiveView(self): sel = self.fitMultiSwitch.GetSelectedPage() - def OnClose(self, event): - if 'wxMac' in wx.PlatformInfo: - if hasattr(wx.GetApp(), "MacHideApp"): - wx.GetApp().MacHideApp() - else: - self.ExitApp(event) - return - self.ExitApp(event) - def CloseCurrentFit(self, evt): ms = self.fitMultiSwitch page = ms.GetSelection() if page is not None: ms.DeletePage(page) - return - if 'wxMac' in wx.PlatformInfo: - self.Close() def ExitApp(self, evt): try: service.SettingsProvider.getInstance().saveAll() - self.Destroy() + self.Close() except PyDeadObjectError: pass From 6c23b6e2c2e1ff356b8c40bae6b338138cb0a2a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20B=C3=B6lter?= Date: Mon, 22 Nov 2010 20:49:45 +0100 Subject: [PATCH 4/4] The mainFrame will now close when the last tab is closed --- gui/chromeTabs.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gui/chromeTabs.py b/gui/chromeTabs.py index 14e37ff7b..6ff796206 100644 --- a/gui/chromeTabs.py +++ b/gui/chromeTabs.py @@ -188,6 +188,9 @@ class PFNotebook(wx.Panel): else: self.activePage = None + # The last Page got deleted + if len(self.pages) == 0: + wx.GetApp().GetTopWindow().Close() def SwitchPages(self, src, dest, internal = False): self.pages[src], self.pages[dest] = self.pages[dest], self.pages[src]