From 79445225de800a6616e0fea70350a55a16f52ee8 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 14 May 2017 02:21:23 -0400 Subject: [PATCH 1/6] fix issue with market shortcuts if not active items are present --- gui/mainFrame.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index fe6b0f4d4..ffb6a367b 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -705,7 +705,8 @@ class MainFrame(wx.Frame, IPortUser): def ItemSelect(self, event): selItem = self.itemSelect.index(event.GetId()) - if selItem < len(self.marketBrowser.itemView.active): + activeListing = getattr(self.marketBrowser.itemView, 'active', None) + if activeListing and selItem < len(activeListing): wx.PostEvent(self, ItemSelected(itemID=self.marketBrowser.itemView.active[selItem].ID)) def CTabNext(self, event): From 0db141d0a65b46cb4a6339401252426d8253b4d7 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 14 May 2017 02:26:32 -0400 Subject: [PATCH 2/6] Fix exception when reverting character skills --- eos/saveddata/character.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index 1c0c7cecf..a12d0bcab 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -321,7 +321,7 @@ class Skill(HandledItem): self.character.dirtySkills.remove(self) def revert(self): - self.level = self.__level + self.activeLevel = self.__level @property def isDirty(self): From f9419977c0fcd7034f94ce4ae5a8ad3e7d761025 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 14 May 2017 20:55:48 -0400 Subject: [PATCH 3/6] Instantiate skills with a character (may help to solve https://forums.eveonline.com/default.aspx?g=posts&m=6939299#post6939299) --- eos/saveddata/character.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index a12d0bcab..5280cdbac 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -49,7 +49,7 @@ class Character(object): if initSkills: for item in self.getSkillList(): - self.addSkill(Skill(item.ID, self.defaultLevel)) + self.addSkill(Skill(self, item.ID, self.defaultLevel)) self.__implants = HandledImplantBoosterList() self.apiKey = None @@ -123,7 +123,7 @@ class Character(object): del self.__skills[:] self.__skillIdMap.clear() for skillRow in skills: - self.addSkill(Skill(skillRow["typeID"], skillRow["level"])) + self.addSkill(Skill(self, skillRow["typeID"], skillRow["level"])) self.secStatus = secStatus @property @@ -206,7 +206,7 @@ class Character(object): skill = self.__skillIdMap.get(item.ID) if skill is None: - skill = Skill(item, self.defaultLevel, False, True) + skill = Skill(self, item, self.defaultLevel, False, True) self.addSkill(skill) return skill @@ -272,7 +272,7 @@ class Character(object): copy.apiID = self.apiID for skill in self.skills: - copy.addSkill(Skill(skill.itemID, skill.level, False, skill.learned)) + copy.addSkill(Skill(self, skill.itemID, skill.level, False, skill.learned)) return copy @@ -297,7 +297,8 @@ class Character(object): class Skill(HandledItem): - def __init__(self, item, level=0, ro=False, learned=True): + def __init__(self, character, item, level=0, ro=False, learned=True): + self.character = character self.__item = item if not isinstance(item, int) else None self.itemID = item.ID if not isinstance(item, int) else item self.__level = level if learned else None @@ -431,7 +432,7 @@ class Skill(HandledItem): return val def __deepcopy__(self, memo): - copy = Skill(self.item, self.level, self.__ro) + copy = Skill(self.character, self.item, self.level, self.__ro) return copy def __repr__(self): From 7a0ea759ef09eceafb74fdf71d3cab833d018e6c Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 14 May 2017 22:23:45 -0400 Subject: [PATCH 4/6] Fix issue with character copy, as well as instantiating character with duplicate skills (since Skill has a backref to charactrer, it's automatically added to the characters skill list. No more need for the append()) --- eos/saveddata/character.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index 5280cdbac..1c04a45d5 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -190,7 +190,6 @@ class Character(object): else: return - self.__skills.append(skill) self.__skillIdMap[skill.itemID] = skill def removeSkill(self, skill): @@ -272,7 +271,7 @@ class Character(object): copy.apiID = self.apiID for skill in self.skills: - copy.addSkill(Skill(self, skill.itemID, skill.level, False, skill.learned)) + copy.addSkill(Skill(copy, skill.itemID, skill.level, False, skill.learned)) return copy From bff44c46f8a54041a6dc9444c09bc63a43b5ba95 Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 14 May 2017 22:44:02 -0400 Subject: [PATCH 5/6] Fix character list sorting (https://forums.eveonline.com/default.aspx?g=posts&m=6940327#post6940327) --- eos/saveddata/character.py | 6 +++++- gui/characterEditor.py | 2 +- gui/characterSelection.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index 1c04a45d5..4622875ba 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -218,8 +218,12 @@ class Character(object): def isDirty(self): return len(self.dirtySkills) > 0 + @property + def ro(self): + return self == self.getAll5() or self == self.getAll0() + def saveLevels(self): - if self == self.getAll5() or self == self.getAll0(): + if self.ro: raise ReadOnlyException("This character is read-only") for skill in self.dirtySkills.copy(): diff --git a/gui/characterEditor.py b/gui/characterEditor.py index c7862e817..6cd5d6761 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -93,7 +93,7 @@ class CharacterEntityEditor(EntityEditor): def getEntitiesFromContext(self): sChar = Character.getInstance() - charList = sorted(sChar.getCharacterList(), key=lambda c: c.name) + charList = sorted(sChar.getCharacterList(), key=lambda c: (not c.ro, c.name)) # Do some processing to ensure that we have All 0 and All 5 at the top all5 = sChar.all5() diff --git a/gui/characterSelection.py b/gui/characterSelection.py index e27fd62e2..13df550e8 100644 --- a/gui/characterSelection.py +++ b/gui/characterSelection.py @@ -125,7 +125,7 @@ class CharacterSelection(wx.Panel): activeChar = self.getActiveCharacter() choice.Clear() - charList = sChar.getCharacterList() + charList = sorted(sChar.getCharacterList(), key=lambda c: (not c.ro, c.name)) picked = False for char in charList: From 11eea37aa7d4850b1173905e29f85746d470195e Mon Sep 17 00:00:00 2001 From: blitzmann Date: Sun, 14 May 2017 22:50:18 -0400 Subject: [PATCH 6/6] Remove duplication of Character.ro property --- eos/saveddata/character.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index 4622875ba..c02f84464 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -218,10 +218,6 @@ class Character(object): def isDirty(self): return len(self.dirtySkills) > 0 - @property - def ro(self): - return self == self.getAll5() or self == self.getAll0() - def saveLevels(self): if self.ro: raise ReadOnlyException("This character is read-only")