From 2a88e3114b1bd5659ff5e22a9b156edf08f3108b Mon Sep 17 00:00:00 2001 From: blitzmann Date: Thu, 24 Sep 2015 22:44:48 -0400 Subject: [PATCH] Skill color goes back to normal when saving/reverting skill. --- eos/saveddata/character.py | 3 +++ gui/characterEditor.py | 25 +++++++++++++++++-------- service/character.py | 10 +++++++++- 3 files changed, 29 insertions(+), 9 deletions(-) diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index 7fecdde1f..670c90faf 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -242,6 +242,9 @@ class Skill(HandledItem): def saveLevel(self): self.__level = self.activeLevel + if self in self.character.dirtySkills: + self.character.dirtySkills.remove(self) + def revert(self): self.level = self.__level diff --git a/gui/characterEditor.py b/gui/characterEditor.py index 2384949cc..be8ee3e42 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -338,8 +338,8 @@ class SkillTreeView (wx.Panel): def populateSkillTree(self): sChar = service.Character.getInstance() charID = self.Parent.Parent.getActiveCharacter() - char = sChar.getCharacter(charID) - dirtyGroups = set([skill.item.group.ID for skill in char.dirtySkills]) + dirtySkills = sChar.getDirtySkills(charID) + dirtyGroups = set([skill.item.group.ID for skill in dirtySkills]) groups = sChar.getSkillGroups() imageId = self.skillBookImageId @@ -398,17 +398,26 @@ class SkillTreeView (wx.Panel): charID = self.Parent.Parent.getActiveCharacter() selection = self.skillTreeListCtrl.GetSelection() skillID = self.skillTreeListCtrl.GetPyData(selection) + if level is not None: self.skillTreeListCtrl.SetItemText(selection, "Level %d" % level if isinstance(level, int) else level, 1) - sChar.changeLevel(charID, skillID, level) - sChar.saveCharacter(charID) - wx.PostEvent(self.Parent.Parent, GE.CharListUpdated()) + sChar.changeLevel(charID, skillID, level, persist=True) elif event.Id == self.revertID: sChar.revertLevel(charID, skillID) - self.populateSkillTree() - wx.PostEvent(self.Parent.Parent, GE.CharListUpdated()) - event.Skip() + self.skillTreeListCtrl.SetItemTextColour(selection, None) + + dirtySkills = sChar.getDirtySkills(charID) + dirtyGroups = set([skill.item.group.ID for skill in dirtySkills]) + + parentID = self.skillTreeListCtrl.GetItemParent(selection) + groupID = self.skillTreeListCtrl.GetPyData(parentID) + + if groupID not in dirtyGroups: + self.skillTreeListCtrl.SetItemTextColour(parentID, None) + + wx.PostEvent(self.Parent.Parent, GE.CharListUpdated()) + event.Skip() class ImplantsTreeView (wx.Panel): def addMarketViewImage(self, iconFile): diff --git a/service/character.py b/service/character.py index 5f569094e..5c86b629a 100644 --- a/service/character.py +++ b/service/character.py @@ -240,6 +240,9 @@ class Character(object): skill = eos.db.getCharacter(charID).getSkill(skillID) return (skill.level if skill.learned else "Not learned", skill.isDirty) + def getDirtySkills(self, charID): + return eos.db.getCharacter(charID).dirtySkills + def getCharName(self, charID): return eos.db.getCharacter(charID).name @@ -315,7 +318,7 @@ class Character(object): char.apiUpdateCharSheet(skills) eos.db.commit() - def changeLevel(self, charID, skillID, level): + def changeLevel(self, charID, skillID, level, persist=False): char = eos.db.getCharacter(charID) skill = char.getSkill(skillID) if isinstance(level, basestring) or level > 5 or level < 0: @@ -323,6 +326,11 @@ class Character(object): else: skill.level = level + if persist: + skill.saveLevel() + + eos.db.commit() + def revertLevel(self, charID, skillID): char = eos.db.getCharacter(charID) skill = char.getSkill(skillID)