Fix bug with char copy, and added char revert and save as (unfinished)

This commit is contained in:
blitzmann
2015-09-24 18:16:12 -04:00
parent ae870f9535
commit 61614553a2
4 changed files with 51 additions and 6 deletions

View File

@@ -24,6 +24,7 @@ from eos.effectHandlerHelpers import HandledItem
import eos.db
import eos
class Character(object):
__itemList = None
__itemIDMap = None
@@ -85,7 +86,7 @@ class Character(object):
return all0
def __init__(self, name, defaultLevel=None):
def __init__(self, name, defaultLevel=None, initSkills=True):
self.name = name
self.__owner = None
self.defaultLevel = defaultLevel
@@ -93,8 +94,9 @@ class Character(object):
self.__skillIdMap = {}
self.dirtySkills = set()
for item in self.getSkillList():
self.addSkill(Skill(item.ID, self.defaultLevel))
if initSkills:
for item in self.getSkillList():
self.addSkill(Skill(item.ID, self.defaultLevel))
self.__implants = eos.saveddata.fit.HandledImplantBoosterList()
self.apiKey = None
@@ -164,6 +166,12 @@ class Character(object):
self.dirtySkills = set()
eos.db.commit()
def revertLevels(self):
for skill in self.dirtySkills:
skill.revert()
self.dirtySkills = set()
def filteredSkillIncrease(self, filter, *args, **kwargs):
for element in self.skills:
if filter(element):
@@ -190,7 +198,7 @@ class Character(object):
skill.clear()
def __deepcopy__(self, memo):
copy = Character("%s copy" % self.name)
copy = Character("%s copy" % self.name, initSkills=False)
copy.apiKey = self.apiKey
copy.apiID = self.apiID
@@ -230,6 +238,9 @@ class Skill(HandledItem):
def saveLevel(self):
self.__level = self.activeLevel
def revert(self):
self.activeLevel = self.__level
@property
def learned(self):
return self.activeLevel is not None

View File

@@ -420,6 +420,10 @@ class MainFrame(wx.Frame):
self.Bind(wx.EVT_MENU, self.goForums, id = menuBar.forumId)
# Save current character
self.Bind(wx.EVT_MENU, self.saveChar, id = menuBar.saveCharId)
# Save current character as another character
self.Bind(wx.EVT_MENU, self.saveCharAs, id = menuBar.saveCharAsId)
# Save current character
self.Bind(wx.EVT_MENU, self.revertChar, id = menuBar.revertCharId)
#Clipboard exports
self.Bind(wx.EVT_MENU, self.exportToClipboard, id=wx.ID_COPY)
@@ -490,6 +494,18 @@ class MainFrame(wx.Frame):
sChr.saveCharacter(charID)
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())
def revertChar(self, event):
sChr = service.Character.getInstance()
charID = self.charSelection.getActiveCharacter()
sChr.revertCharacter(charID)
wx.PostEvent(self, GE.CharListUpdated())
def AdditionsTabSelect(self, event):
selTab = self.additionsSelect.index(event.GetId())

View File

@@ -37,6 +37,8 @@ class MainMenuBar(wx.MenuBar):
self.wikiId = wx.NewId()
self.forumId = wx.NewId()
self.saveCharId = wx.NewId()
self.saveCharAsId = wx.NewId()
self.revertCharId = wx.NewId()
self.mainFrame = gui.mainFrame.MainFrame.getInstance()
@@ -73,7 +75,8 @@ class MainMenuBar(wx.MenuBar):
editMenu.Append(wx.ID_PASTE, pasteText, "Import a fit from the clipboard")
editMenu.AppendSeparator()
editMenu.Append(self.saveCharId, "Save Character")
editMenu.Append(self.saveCharAsId, "Save Character As...")
editMenu.Append(self.revertCharId, "Revert Character")
# Character menu
windowMenu = wx.Menu()
self.Append(windowMenu, "&Window")

View File

@@ -199,6 +199,21 @@ class Character(object):
char = eos.db.getCharacter(charID)
char.saveLevels()
def saveCharacterAs(self, charID):
"""Save edited skills as a new character"""
char = eos.db.getCharacter(charID)
newChar = copy.deepcopy(char)
newChar.name = newChar.name + " (saved as)"
eos.db.save(newChar)
# revert old char
char.revertLevels()
def revertCharacter(self, charID):
"""Rollback edited skills"""
char = eos.db.getCharacter(charID)
char.revertLevels()
def getSkillGroups(self):
cat = eos.db.getCategory(16)
groups = []
@@ -251,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