diff --git a/gui/characterEditor.py b/gui/characterEditor.py index 1ffa921bb..4f5012ae0 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -689,3 +689,34 @@ class APIView (wx.Panel): self.stStatus.SetLabel("Successfully fetched %s\'s skills from EVE API." % charName) except Exception, e: self.stStatus.SetLabel("Unable to retrieve %s\'s skills. Error message:\n%s" % (charName, e)) + +class SaveCharacterAs(wx.Dialog): + + def __init__(self, parent, charID): + wx.Dialog.__init__(self, parent, title="Save Character As...", size=wx.Size(300, 60)) + self.charID = charID + sChar = service.Character.getInstance() + name = sChar.getCharName(charID) + bSizer1 = wx.BoxSizer(wx.HORIZONTAL) + + self.input = wx.TextCtrl(self, wx.ID_ANY, name, style=wx.TE_PROCESS_ENTER) + + bSizer1.Add(self.input, 1, wx.ALL, 5) + self.input.Bind(wx.EVT_TEXT_ENTER, self.change) + self.button = wx.Button(self, wx.ID_OK, u"Save") + bSizer1.Add(self.button, 0, wx.ALL, 5) + + self.SetSizer(bSizer1) + self.Layout() + self.Centre(wx.BOTH) + self.button.Bind(wx.EVT_BUTTON, self.change) + + def change(self, event): + sChar = service.Character.getInstance() + mainFrame = gui.mainFrame.MainFrame.getInstance() + sChar.saveCharacterAs(self.charID, self.input.GetLineText(0)) + wx.PostEvent(mainFrame, GE.CharListUpdated()) + + event.Skip() + self.Destroy() + diff --git a/gui/mainFrame.py b/gui/mainFrame.py index 651c76a30..590b2b4be 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -43,7 +43,7 @@ from gui.marketBrowser import MarketBrowser, ItemSelected from gui.multiSwitch import MultiSwitch from gui.statsPane import StatsPane from gui.shipBrowser import ShipBrowser, FitSelected, ImportSelected, Stage3Selected -from gui.characterEditor import CharacterEditor +from gui.characterEditor import CharacterEditor, SaveCharacterAs from gui.characterSelection import CharacterSelection from gui.patternEditor import DmgPatternEditorDlg from gui.resistsEditor import ResistsEditorDlg @@ -495,10 +495,10 @@ class MainFrame(wx.Frame): wx.PostEvent(self, GE.CharListUpdated()) def saveCharAs(self, event): - sChr = service.Character.getInstance() charID = self.charSelection.getActiveCharacter() - sChr.saveCharacterAs(charID) - wx.PostEvent(self, GE.CharListUpdated()) + dlg = SaveCharacterAs(self, charID) + dlg.ShowModal() + dlg.Destroy() def revertChar(self, event): sChr = service.Character.getInstance() diff --git a/service/character.py b/service/character.py index 95f51f670..a57296779 100644 --- a/service/character.py +++ b/service/character.py @@ -199,11 +199,11 @@ class Character(object): char = eos.db.getCharacter(charID) char.saveLevels() - def saveCharacterAs(self, charID): + def saveCharacterAs(self, charID, newName): """Save edited skills as a new character""" char = eos.db.getCharacter(charID) newChar = copy.deepcopy(char) - newChar.name = newChar.name + " (saved as)" + newChar.name = newName eos.db.save(newChar) # revert old char @@ -266,7 +266,7 @@ class Character(object): def getApiDetails(self, charID): char = eos.db.getCharacter(charID) - if char.chars is not None: + if char.chars is not None: chars = json.loads(char.chars) else: chars = None