Fix bug with char copy, and added char revert and save as (unfinished)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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())
|
||||
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user