From da88395af4e2ea7674675c421d2ac8a46c4950d6 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 03:14:25 +0300 Subject: [PATCH 01/16] Lets not frack-up eve.db, shall we? --- config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.py b/config.py index c02d78a94..c3dd90bfe 100644 --- a/config.py +++ b/config.py @@ -18,4 +18,4 @@ gamedata = os.path.join(homePath, "eve.db") # saveddata db location modifier, shouldn't ever need to touch this import eos.config eos.config.saveddata_connectionstring = "sqlite:///" + saveddata -eos.config.saveddata_connectionstring = "sqlite:///" + gamedata \ No newline at end of file +eos.config.gamedata_connectionstring = "sqlite:///" + gamedata \ No newline at end of file From 2f382601f59213ee51dc37560911558c57e51b8f Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 14:38:19 +0300 Subject: [PATCH 02/16] Added shorcut support for removal of fitting view active tab --- gui/mainFrame.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 747f6ede9..74851804b 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -180,6 +180,20 @@ class MainFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.clipboardDna, id=menuBar.idExportDna) self.Bind(wx.EVT_MENU, self.clipboardXml, id=menuBar.idExportXml) + hiddenMenu = wx.Menu() + hiddenMenu.Append(9911,"Delete Tab") + self.Bind(wx.EVT_MENU,self.HRemoveTab, id = 9911) + actb = [(wx.ACCEL_CTRL, ord('W'), 9911), + (wx.ACCEL_CMD, ord('W'), 9911)] + atable = wx.AcceleratorTable(actb) + self.SetAcceleratorTable(atable) + + def HRemoveTab(self,event): + sel = self.fitMultiSwitch.GetSelection() + self.fitMultiSwitch.removal = True + self.fitMultiSwitch.removeTab(sel) + self.fitMultiSwitch.removal = False + def clipboardEft(self, event): sFit = service.Fit.getInstance() self.toClipboard(sFit.exportFit(self.getActiveFit())) From f309597cda9eda0bd201bc807d14f6cc1757ea71 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 14:47:07 +0300 Subject: [PATCH 03/16] Fix attempt for a traceback caused by removeTab... imglist Remove() on wxmac --- gui/multiSwitch.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gui/multiSwitch.py b/gui/multiSwitch.py index a38afa8b9..ab284bb3d 100644 --- a/gui/multiSwitch.py +++ b/gui/multiSwitch.py @@ -88,7 +88,8 @@ class MultiSwitch(wx.Notebook): self.setTabTitle(i, None) remIcon = self.GetPageImage(i) self.SetPageImage(i, -1) - self.ImageList.Remove(remIcon) + if remIcon != -1: + self.ImageList.Remove(remIcon) page = self.GetPage(i) if page.type == "fit": page.view.changeFit(None) From c89839fc6727775e89bdb6724fa35bf2b8d25023 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 15:02:01 +0300 Subject: [PATCH 04/16] Updated pyfa's version string (displayed on about dialog) --- aboutData.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aboutData.py b/aboutData.py index 63714c1d0..4f92be77c 100644 --- a/aboutData.py +++ b/aboutData.py @@ -17,7 +17,7 @@ # along with pyfa. If not, see . #=============================================================================== -versionString = "0.0.1" +versionString = "1.0 pre-alpha" license = "GNU GPL" licenseLocation = "gpl.txt" developers = ("cncfanatics" , "DarkPhoenix", "Darriele") From 14d0f50aff9229850ae40d3ebd0abf21c0609d89 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 15:22:53 +0300 Subject: [PATCH 05/16] Added shortcut support for all pyfa child windows (ctrl/cmd + w = close window) --- gui/characterEditor.py | 11 +++++++++++ gui/importExport.py | 23 ++++++++++++++++++++++- gui/itemStats.py | 13 +++++++++++++ gui/patternEditor.py | 12 ++++++++++++ 4 files changed, 58 insertions(+), 1 deletion(-) diff --git a/gui/characterEditor.py b/gui/characterEditor.py index a9eff4a5e..c1fe109f8 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -122,6 +122,17 @@ class CharacterEditor(wx.Frame): self.registerEvents() self.mainFrame = gui.mainFrame.MainFrame.getInstance() + hiddenMenu = wx.Menu() + hiddenMenu.Append(9912,"Close window") + self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9913) + actb = [(wx.ACCEL_CTRL, ord('W'), 9913), + (wx.ACCEL_CMD, ord('W'), 9913)] + atable = wx.AcceleratorTable(actb) + self.SetAcceleratorTable(atable) + + def HCloseWindow(self,event): + self.Destroy() + event.Skip() def editingFinished(self, event): wx.PostEvent(self.mainFrame, CharListUpdated()) diff --git a/gui/importExport.py b/gui/importExport.py index 428b36314..5aecae740 100644 --- a/gui/importExport.py +++ b/gui/importExport.py @@ -86,6 +86,17 @@ class ImportDialog(wx.Dialog): self.btnImport.Bind( wx.EVT_BUTTON, self.ImportFittings ) self.Centre(wx.BOTH) + hiddenMenu = wx.Menu() + hiddenMenu.Append(9915,"Close window") + self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9915) + actb = [(wx.ACCEL_CTRL, ord('W'), 9915), + (wx.ACCEL_CMD, ord('W'), 9915)] + atable = wx.AcceleratorTable(actb) + self.SetAcceleratorTable(atable) + + def HCloseWindow(self,event): + self.Destroy() + event.Skip() def ImportFittings( self, event ): sFit = service.Fit.getInstance() @@ -212,8 +223,18 @@ class ExportDialog ( wx.Dialog ): self.btnExport.Bind( wx.EVT_BUTTON, self.ExportFit ) self.chCtrl.Bind( wx.EVT_RADIOBOX, self.OnExtSelect ) + hiddenMenu = wx.Menu() + hiddenMenu.Append(9916,"Close window") + self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9916) + actb = [(wx.ACCEL_CTRL, ord('W'), 9916), + (wx.ACCEL_CMD, ord('W'), 9916)] + atable = wx.AcceleratorTable(actb) + self.SetAcceleratorTable(atable) + + def HCloseWindow(self,event): + self.Destroy() + event.Skip() - # Virtual event handlers, overide them in your derived class def OnExtSelect( self, event ): # selection = self.chCtrl.GetSelection() # if selection == 0: diff --git a/gui/itemStats.py b/gui/itemStats.py index 1d508646e..9ef7b5ead 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -87,6 +87,19 @@ class ItemStatsDialog(wx.Dialog): self.Show() self.Bind(wx.EVT_CLOSE, self.closeEvent) + hiddenMenu = wx.Menu() + hiddenMenu.Append(9912,"Close window") + self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9912) + actb = [(wx.ACCEL_CTRL, ord('W'), 9912), + (wx.ACCEL_CMD, ord('W'), 9912)] + atable = wx.AcceleratorTable(actb) + self.SetAcceleratorTable(atable) + + def HCloseWindow(self,event): + if self.dlgOrder==ItemStatsDialog.counter: + ItemStatsDialog.counter -= 1 + self.Destroy() + event.Skip() def closeEvent(self, event): diff --git a/gui/patternEditor.py b/gui/patternEditor.py index 60e253c59..004135391 100644 --- a/gui/patternEditor.py +++ b/gui/patternEditor.py @@ -180,6 +180,18 @@ class DmgPatternEditorDlg (wx.Dialog): self.patternChanged() + hiddenMenu = wx.Menu() + hiddenMenu.Append(9914,"Close window") + self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9914) + actb = [(wx.ACCEL_CTRL, ord('W'), 9914), + (wx.ACCEL_CMD, ord('W'), 9914)] + atable = wx.AcceleratorTable(actb) + self.SetAcceleratorTable(atable) + + def HCloseWindow(self,event): + self.Destroy() + event.Skip() + def ValuesUpdated(self, event=None): if self.block: return From 1d9a5eb1b2f094ff88826089cbd62584c2d50696 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 16:07:58 +0300 Subject: [PATCH 06/16] Revert "Added shortcut support for all pyfa child windows (ctrl/cmd + w = close window)" This reverts commit 14d0f50aff9229850ae40d3ebd0abf21c0609d89. --- gui/characterEditor.py | 11 ----------- gui/importExport.py | 23 +---------------------- gui/itemStats.py | 13 ------------- gui/patternEditor.py | 12 ------------ 4 files changed, 1 insertion(+), 58 deletions(-) diff --git a/gui/characterEditor.py b/gui/characterEditor.py index c1fe109f8..a9eff4a5e 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -122,17 +122,6 @@ class CharacterEditor(wx.Frame): self.registerEvents() self.mainFrame = gui.mainFrame.MainFrame.getInstance() - hiddenMenu = wx.Menu() - hiddenMenu.Append(9912,"Close window") - self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9913) - actb = [(wx.ACCEL_CTRL, ord('W'), 9913), - (wx.ACCEL_CMD, ord('W'), 9913)] - atable = wx.AcceleratorTable(actb) - self.SetAcceleratorTable(atable) - - def HCloseWindow(self,event): - self.Destroy() - event.Skip() def editingFinished(self, event): wx.PostEvent(self.mainFrame, CharListUpdated()) diff --git a/gui/importExport.py b/gui/importExport.py index 5aecae740..428b36314 100644 --- a/gui/importExport.py +++ b/gui/importExport.py @@ -86,17 +86,6 @@ class ImportDialog(wx.Dialog): self.btnImport.Bind( wx.EVT_BUTTON, self.ImportFittings ) self.Centre(wx.BOTH) - hiddenMenu = wx.Menu() - hiddenMenu.Append(9915,"Close window") - self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9915) - actb = [(wx.ACCEL_CTRL, ord('W'), 9915), - (wx.ACCEL_CMD, ord('W'), 9915)] - atable = wx.AcceleratorTable(actb) - self.SetAcceleratorTable(atable) - - def HCloseWindow(self,event): - self.Destroy() - event.Skip() def ImportFittings( self, event ): sFit = service.Fit.getInstance() @@ -223,18 +212,8 @@ class ExportDialog ( wx.Dialog ): self.btnExport.Bind( wx.EVT_BUTTON, self.ExportFit ) self.chCtrl.Bind( wx.EVT_RADIOBOX, self.OnExtSelect ) - hiddenMenu = wx.Menu() - hiddenMenu.Append(9916,"Close window") - self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9916) - actb = [(wx.ACCEL_CTRL, ord('W'), 9916), - (wx.ACCEL_CMD, ord('W'), 9916)] - atable = wx.AcceleratorTable(actb) - self.SetAcceleratorTable(atable) - - def HCloseWindow(self,event): - self.Destroy() - event.Skip() + # Virtual event handlers, overide them in your derived class def OnExtSelect( self, event ): # selection = self.chCtrl.GetSelection() # if selection == 0: diff --git a/gui/itemStats.py b/gui/itemStats.py index 9ef7b5ead..1d508646e 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -87,19 +87,6 @@ class ItemStatsDialog(wx.Dialog): self.Show() self.Bind(wx.EVT_CLOSE, self.closeEvent) - hiddenMenu = wx.Menu() - hiddenMenu.Append(9912,"Close window") - self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9912) - actb = [(wx.ACCEL_CTRL, ord('W'), 9912), - (wx.ACCEL_CMD, ord('W'), 9912)] - atable = wx.AcceleratorTable(actb) - self.SetAcceleratorTable(atable) - - def HCloseWindow(self,event): - if self.dlgOrder==ItemStatsDialog.counter: - ItemStatsDialog.counter -= 1 - self.Destroy() - event.Skip() def closeEvent(self, event): diff --git a/gui/patternEditor.py b/gui/patternEditor.py index 004135391..60e253c59 100644 --- a/gui/patternEditor.py +++ b/gui/patternEditor.py @@ -180,18 +180,6 @@ class DmgPatternEditorDlg (wx.Dialog): self.patternChanged() - hiddenMenu = wx.Menu() - hiddenMenu.Append(9914,"Close window") - self.Bind(wx.EVT_MENU,self.HCloseWindow, id = 9914) - actb = [(wx.ACCEL_CTRL, ord('W'), 9914), - (wx.ACCEL_CMD, ord('W'), 9914)] - atable = wx.AcceleratorTable(actb) - self.SetAcceleratorTable(atable) - - def HCloseWindow(self,event): - self.Destroy() - event.Skip() - def ValuesUpdated(self, event=None): if self.block: return From 0c7d25bffb7aa11f082e7e7f30ce60ba5c12156b Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 16:08:15 +0300 Subject: [PATCH 07/16] Revert "Fix attempt for a traceback caused by removeTab... imglist Remove() on wxmac" This reverts commit f309597cda9eda0bd201bc807d14f6cc1757ea71. --- gui/multiSwitch.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/gui/multiSwitch.py b/gui/multiSwitch.py index ab284bb3d..a38afa8b9 100644 --- a/gui/multiSwitch.py +++ b/gui/multiSwitch.py @@ -88,8 +88,7 @@ class MultiSwitch(wx.Notebook): self.setTabTitle(i, None) remIcon = self.GetPageImage(i) self.SetPageImage(i, -1) - if remIcon != -1: - self.ImageList.Remove(remIcon) + self.ImageList.Remove(remIcon) page = self.GetPage(i) if page.type == "fit": page.view.changeFit(None) From 1c742e74d07d874e0c8bcf37fe26eefe34bba5f2 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 16:08:43 +0300 Subject: [PATCH 08/16] Revert "Added shorcut support for removal of fitting view active tab" This reverts commit 2f382601f59213ee51dc37560911558c57e51b8f. --- gui/mainFrame.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 74851804b..747f6ede9 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -180,20 +180,6 @@ class MainFrame(wx.Frame): self.Bind(wx.EVT_MENU, self.clipboardDna, id=menuBar.idExportDna) self.Bind(wx.EVT_MENU, self.clipboardXml, id=menuBar.idExportXml) - hiddenMenu = wx.Menu() - hiddenMenu.Append(9911,"Delete Tab") - self.Bind(wx.EVT_MENU,self.HRemoveTab, id = 9911) - actb = [(wx.ACCEL_CTRL, ord('W'), 9911), - (wx.ACCEL_CMD, ord('W'), 9911)] - atable = wx.AcceleratorTable(actb) - self.SetAcceleratorTable(atable) - - def HRemoveTab(self,event): - sel = self.fitMultiSwitch.GetSelection() - self.fitMultiSwitch.removal = True - self.fitMultiSwitch.removeTab(sel) - self.fitMultiSwitch.removal = False - def clipboardEft(self, event): sFit = service.Fit.getInstance() self.toClipboard(sFit.exportFit(self.getActiveFit())) From 44a367b1234c5829a73984838d67d51d45a9ccea Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 16:30:44 +0300 Subject: [PATCH 09/16] Added eve api hyperlink in character editor api tab --- gui/characterEditor.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gui/characterEditor.py b/gui/characterEditor.py index a9eff4a5e..87e82db7d 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -533,7 +533,12 @@ class APIView (wx.Panel): pmainSizer.Add(self.btnFetchSkills, 0, wx.ALL, 5) self.btnFetchSkills.Hide() self.btnFetchSkills.Bind(wx.EVT_BUTTON, self.fetchSkills) + self.stAPITip = wx.StaticText( self, wx.ID_ANY, u"Your API info is available at:", wx.DefaultPosition, wx.DefaultSize, 0 ) + self.stAPITip.Wrap( -1 ) + pmainSizer.Add( self.stAPITip, 0, wx.ALL, 5 ) + self.hlEveAPI = wx.HyperlinkCtrl( self, wx.ID_ANY, u"http://www.eveonline.com/api/default.asp", u"http://www.eveonline.com/api/default.asp", wx.DefaultPosition, wx.DefaultSize, wx.HL_DEFAULT_STYLE ) + pmainSizer.Add( self.hlEveAPI, 0, wx.ALL, 5 ) self.SetSizer(pmainSizer) self.Layout() self.charChanged(None) From 490fc913643db08b821332d542bb23c45bb9bc2d Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 16:57:30 +0300 Subject: [PATCH 10/16] Implemented removal of modules using delete key as requested in ticket #113 --- gui/fittingView.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/gui/fittingView.py b/gui/fittingView.py index 75419f050..3f5dce7ee 100644 --- a/gui/fittingView.py +++ b/gui/fittingView.py @@ -49,6 +49,24 @@ class FittingView(d.Display): self.activeFitID = None + self.Bind(wx.EVT_KEY_UP, self.kbEvent) + + def kbEvent(self,event): + keycode = event.GetKeyCode() + if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: + row = self.GetFirstSelected() + firstSel = row + while row != -1: + cFit = service.Fit.getInstance() + populate = cFit.removeModule(self.activeFitID, self.mods[self.GetItemData(row)].position) + self.Select(row,0) + row = self.GetNextSelected(row) + if populate is not None: + self.Select(firstSel) + if populate: self.slotsChanged() + wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID)) + + event.Skip() #Gets called from the fitMultiSwitch when it decides its time def changeFit(self, fitID): self.activeFitID = fitID From 737bf9795a70e5f47178ef7887efcc6a96f9047c Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 17:10:43 +0300 Subject: [PATCH 11/16] Implemented removal of implants using delete key as requested in ticket #113 --- gui/implantView.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gui/implantView.py b/gui/implantView.py index bec0da1af..42c1bd2cd 100644 --- a/gui/implantView.py +++ b/gui/implantView.py @@ -32,7 +32,18 @@ class ImplantView(d.Display): self.mainFrame.Bind(fv.FIT_CHANGED, self.fitChanged) self.mainFrame.Bind(mb.ITEM_SELECTED, self.addItem) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) + self.Bind(wx.EVT_KEY_UP, self.kbEvent) + def kbEvent(self,event): + keycode = event.GetKeyCode() + if keycode == wx.WXK_DELETE or keycode == wx.WXK_NUMPAD_DELETE: + fitID = self.mainFrame.getActiveFit() + cFit = service.Fit.getInstance() + row = self.GetFirstSelected() + if row != -1: + cFit.removeImplant(fitID, self.GetItemData(row)) + row = self.GetNextSelected(row) + wx.PostEvent(self.mainFrame, fv.FitChanged(fitID=fitID)) def fitChanged(self, event): cFit = service.Fit.getInstance() fit = cFit.getFit(event.fitID) From 352cfe4b89f33a9ccd499b67cbb08416ed89153b Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 17:30:18 +0300 Subject: [PATCH 12/16] Removed a leftover --- gui/characterEditor.py | 1 - 1 file changed, 1 deletion(-) diff --git a/gui/characterEditor.py b/gui/characterEditor.py index 87e82db7d..0f19b63c0 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -421,7 +421,6 @@ class ImplantsTreeView (wx.Panel): self.pluggedImplantsTree.update(self.implants) def charChanged(self, event): - print "charChanged" cChar = service.Character.getInstance() charID = self.Parent.Parent.getActiveCharacter() name = cChar.getCharName(charID) From 032a1b0f6b55521265edc52fe2efb51d59d91333 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 20:59:33 +0300 Subject: [PATCH 13/16] Sanity check while loading the item 'icon' --- gui/itemStats.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gui/itemStats.py b/gui/itemStats.py index 1d508646e..ba438e113 100644 --- a/gui/itemStats.py +++ b/gui/itemStats.py @@ -54,8 +54,9 @@ class ItemStatsDialog(wx.Dialog): if item.icon is not None: before,sep,after = item.icon.iconFile.rpartition("_") iconFile = "%s%s%s" % (before,sep,"0%s" % after if len(after) < 2 else after) - - self.SetIcon(wx.IconFromBitmap(bitmapLoader.getBitmap(iconFile, "pack"))) + itemImg = bitmapLoader.getBitmap(iconFile, "pack") + if itemImg is not None: + self.SetIcon(wx.IconFromBitmap(itemImg)) self.SetTitle("%s: %s" % ("%s stats" % context.capitalize() if context is not None else "Stats", item.name)) self.SetMinSize((300, 200)) From ceb2b7b60d13d099919533d72331534647579ecc Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sat, 16 Oct 2010 22:09:01 +0300 Subject: [PATCH 14/16] Show fit directly when we create one --- gui/shipBrowser.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/gui/shipBrowser.py b/gui/shipBrowser.py index 5c2a23b69..0df0a5a2a 100644 --- a/gui/shipBrowser.py +++ b/gui/shipBrowser.py @@ -104,7 +104,8 @@ class ShipBrowser(wx.Panel): if data is not None: type, fitID = data if type == "fit": - wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID)) + if self.mainFrame.getActiveFit() != fitID: + wx.PostEvent(self.mainFrame, FitSelected(fitID=fitID)) event.Skip() @@ -154,7 +155,7 @@ class ShipBrowser(wx.Panel): iconId = self.raceImageIds[race] if race in self.raceImageIds else -1 self.idRaceMap[id] = race childId = tree.AppendItem(root, name, iconId, data=wx.TreeItemData(("ship", id))) - for fitID, fitName in cFit.getFitsWithShip(id): + for fitID, fitName in cFit.getFitsWithShip(id): tree.AppendItem(childId, fitName, self.fitIconId, data=wx.TreeItemData(("fit", fitID))) tree.SortChildren(root) @@ -191,6 +192,7 @@ class ShipBrowser(wx.Panel): event.Skip() def changeFitName(self, event): + self.triggerFitSelect(event) if event.IsEditCancelled(): return @@ -286,7 +288,7 @@ class ShipBrowser(wx.Panel): event.Skip() def startSearch(self, event): - + search = self.shipMenu.search.GetLineText(0) if len(search) < 3: self.clearSearch(event, False) @@ -311,7 +313,7 @@ class ShipBrowser(wx.Panel): iconId = self.raceImageIds[race] if race in self.raceImageIds else -1 self.idRaceMap[id] = race childId = self.searchView.AppendItem(self.searchRoot, name, iconId, data=wx.TreeItemData(("ship", id))) - for fitID, fitName in cFit.getFitsWithShip(id): + for fitID, fitName in cFit.getFitsWithShip(id): self.searchView.AppendItem(childId, fitName, self.fitIconId, data=wx.TreeItemData(("fit", fitID))) foundFits = cMarket.searchFits(search) From d9fc65f18aa171cdff55f2abeb9c4e012b505111 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sun, 17 Oct 2010 04:34:05 +0300 Subject: [PATCH 15/16] DND modules test --- gui/fittingView.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ service/fit.py | 13 +++++++++++++ 2 files changed, 57 insertions(+) diff --git a/gui/fittingView.py b/gui/fittingView.py index 3f5dce7ee..f0837adf0 100644 --- a/gui/fittingView.py +++ b/gui/fittingView.py @@ -38,17 +38,43 @@ class FittingView(d.Display): "Max range", "Module Ammo"] + class FittingViewDrop(wx.PyDropTarget): + def __init__(self, dropFn): + wx.PyDropTarget.__init__(self) + self.dropFn = dropFn + # this is really transferring an EvE itemID + self.dropData = wx.PyTextDataObject() + self.SetDataObject(self.dropData) + + def OnData(self, x, y, t): + if self.GetData(): + self.dropFn(x, y, int(self.dropData.GetText())) + return t + def __init__(self, parent): d.Display.__init__(self, parent) self.mainFrame.Bind(FIT_CHANGED, self.fitChanged) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) + self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) if "__WXGTK__" in wx.PlatformInfo: self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu) else: self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu) + self.SetDropTarget(self.FittingViewDrop(self.swapItems)) self.activeFitID = None + def startDrag(self, event): + data = wx.PyTextDataObject() + row = event.GetIndex() + data.SetText(str(self.GetItemData(row))) + + dropSource = wx.DropSource(self) + dropSource.SetData(data) + res = dropSource.DoDragDrop() + + # We always copy drag + self.Bind(wx.EVT_KEY_UP, self.kbEvent) def kbEvent(self,event): @@ -104,6 +130,24 @@ class FittingView(d.Display): if populate: self.slotsChanged() wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID)) + def swapItems(self, x, y, itemID): + + srcRow = self.FindItemData(-1,itemID) + dstRow, _ = self.HitTest((x, y)) + if srcRow != -1 and dstRow != -1: + cFit = service.Fit.getInstance() +# populate = cFit.swapModules(self.activeFitID, self.mods[self.GetItemData(srcRow)].position, self.mods[self.GetItemData(dstRow)].position) +# cFit.swapModules(self.GetItemData(srcRow), self.GetItemData(dstRow)) + src = self.mods[self.GetItemData(srcRow)].position + dest = self.mods[self.GetItemData(dstRow)].position + self.mods[self.GetItemData(dstRow)].position = src + self.mods[self.GetItemData(srcRow)].position = dest + +# if populate is not None: + self.slotsChanged() + wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID)) + + def generateMods(self): cFit = service.Fit.getInstance() fit = cFit.getFit(self.activeFitID) diff --git a/service/fit.py b/service/fit.py index 79981cfac..b5f7bca37 100644 --- a/service/fit.py +++ b/service/fit.py @@ -180,6 +180,19 @@ class Fit(object): eos.db.commit() return numSlots != len(fit.modules) + def swapModules(self, position1, position2): + return True + fit = eos.db.getFit(fitID) + if fit.modules[position1].isEmpty or fit.modules[position2].isEmpty: + return None + +# fit.modules[position1], fit.modules[position2] = fit.modules[position2], fit.modules[position1] + fit.modules[position1].position = position2 + fit.modules[position2].position = position1 + print position1,position2 + eos.db.commit() + return True + def addDrone(self, fitID, itemID): if fitID == None: return False From 36be7839d18b82c3ad54a3bca6ca2f8ba0177381 Mon Sep 17 00:00:00 2001 From: HomeWorld Date: Sun, 17 Oct 2010 04:40:58 +0300 Subject: [PATCH 16/16] Revert "DND modules test" This reverts commit d9fc65f18aa171cdff55f2abeb9c4e012b505111. --- gui/fittingView.py | 44 -------------------------------------------- service/fit.py | 13 ------------- 2 files changed, 57 deletions(-) diff --git a/gui/fittingView.py b/gui/fittingView.py index f0837adf0..3f5dce7ee 100644 --- a/gui/fittingView.py +++ b/gui/fittingView.py @@ -38,43 +38,17 @@ class FittingView(d.Display): "Max range", "Module Ammo"] - class FittingViewDrop(wx.PyDropTarget): - def __init__(self, dropFn): - wx.PyDropTarget.__init__(self) - self.dropFn = dropFn - # this is really transferring an EvE itemID - self.dropData = wx.PyTextDataObject() - self.SetDataObject(self.dropData) - - def OnData(self, x, y, t): - if self.GetData(): - self.dropFn(x, y, int(self.dropData.GetText())) - return t - def __init__(self, parent): d.Display.__init__(self, parent) self.mainFrame.Bind(FIT_CHANGED, self.fitChanged) self.Bind(wx.EVT_LEFT_DCLICK, self.removeItem) - self.Bind(wx.EVT_LIST_BEGIN_DRAG, self.startDrag) if "__WXGTK__" in wx.PlatformInfo: self.Bind(wx.EVT_RIGHT_UP, self.scheduleMenu) else: self.Bind(wx.EVT_RIGHT_DOWN, self.scheduleMenu) - self.SetDropTarget(self.FittingViewDrop(self.swapItems)) self.activeFitID = None - def startDrag(self, event): - data = wx.PyTextDataObject() - row = event.GetIndex() - data.SetText(str(self.GetItemData(row))) - - dropSource = wx.DropSource(self) - dropSource.SetData(data) - res = dropSource.DoDragDrop() - - # We always copy drag - self.Bind(wx.EVT_KEY_UP, self.kbEvent) def kbEvent(self,event): @@ -130,24 +104,6 @@ class FittingView(d.Display): if populate: self.slotsChanged() wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID)) - def swapItems(self, x, y, itemID): - - srcRow = self.FindItemData(-1,itemID) - dstRow, _ = self.HitTest((x, y)) - if srcRow != -1 and dstRow != -1: - cFit = service.Fit.getInstance() -# populate = cFit.swapModules(self.activeFitID, self.mods[self.GetItemData(srcRow)].position, self.mods[self.GetItemData(dstRow)].position) -# cFit.swapModules(self.GetItemData(srcRow), self.GetItemData(dstRow)) - src = self.mods[self.GetItemData(srcRow)].position - dest = self.mods[self.GetItemData(dstRow)].position - self.mods[self.GetItemData(dstRow)].position = src - self.mods[self.GetItemData(srcRow)].position = dest - -# if populate is not None: - self.slotsChanged() - wx.PostEvent(self.mainFrame, FitChanged(fitID=self.activeFitID)) - - def generateMods(self): cFit = service.Fit.getInstance() fit = cFit.getFit(self.activeFitID) diff --git a/service/fit.py b/service/fit.py index b5f7bca37..79981cfac 100644 --- a/service/fit.py +++ b/service/fit.py @@ -180,19 +180,6 @@ class Fit(object): eos.db.commit() return numSlots != len(fit.modules) - def swapModules(self, position1, position2): - return True - fit = eos.db.getFit(fitID) - if fit.modules[position1].isEmpty or fit.modules[position2].isEmpty: - return None - -# fit.modules[position1], fit.modules[position2] = fit.modules[position2], fit.modules[position1] - fit.modules[position1].position = position2 - fit.modules[position2].position = position1 - print position1,position2 - eos.db.commit() - return True - def addDrone(self, fitID, itemID): if fitID == None: return False