From 57783fe80f5255895cba5a9c14618b43fcf29da4 Mon Sep 17 00:00:00 2001 From: Ryan Holmes Date: Sun, 2 Jul 2017 15:28:42 -0400 Subject: [PATCH] More work on character editor --- eos/saveddata/character.py | 2 +- gui/characterEditor.py | 49 ++++++++++++++++++-------------------- service/network.py | 2 +- 3 files changed, 25 insertions(+), 28 deletions(-) diff --git a/eos/saveddata/character.py b/eos/saveddata/character.py index d98b456ad..213457925 100644 --- a/eos/saveddata/character.py +++ b/eos/saveddata/character.py @@ -345,7 +345,7 @@ class Skill(HandledItem): def setLevel(self, level, persist=False): - if (level < 0 or level > 5) and level is not None: + if level is not None and (level < 0 or level > 5): raise ValueError(str(level) + " is not a valid value for level") if hasattr(self, "_Skill__ro") and self.__ro is True: diff --git a/gui/characterEditor.py b/gui/characterEditor.py index 55fb10157..e9a60bb16 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -20,6 +20,7 @@ # noinspection PyPackageRequirements import wx import wx.dataview +import wx.lib.agw.hyperlink from .utils.floatspin import FloatSpin # noinspection PyPackageRequirements import wx.lib.newevent @@ -150,12 +151,12 @@ class CharacterEditor(wx.Frame): self.viewsNBContainer = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) self.sview = SkillTreeView(self.viewsNBContainer) - # self.iview = ImplantEditorView(self.viewsNBContainer) - # self.aview = APIView(self.viewsNBContainer) + self.iview = ImplantEditorView(self.viewsNBContainer) + self.aview = APIView(self.viewsNBContainer) self.viewsNBContainer.AddPage(self.sview, "Skills") - # self.viewsNBContainer.AddPage(self.iview, "Implants") - # self.viewsNBContainer.AddPage(self.aview, "API") + self.viewsNBContainer.AddPage(self.iview, "Implants") + self.viewsNBContainer.AddPage(self.aview, "API") mainSizer.Add(self.viewsNBContainer, 1, wx.EXPAND | wx.ALL, 5) @@ -448,9 +449,6 @@ class SkillTreeView(wx.Panel): # if id in dirtyGroups: # tree.(childId, wx.BLUE) - # @todo: pheonix - #tree.SortChildren(root) - if event: event.Skip() @@ -475,8 +473,6 @@ class SkillTreeView(wx.Panel): # if dirty: # tree.SetItemTextColour(childId, wx.BLUE) - #tree.SortChildren(root) - def scheduleMenu(self, event): event.Skip() wx.CallAfter(self.spawnMenu, event.GetItem()) @@ -516,31 +512,33 @@ class SkillTreeView(wx.Panel): # level setting. We don't want to refresh tree, as that will lose all expanded categories and users location # within the tree. Thus, we loop through the tree and refresh the info. # @todo: when collapsing branch, remove the data. This will make this loop more performant - child, cookie = self.skillTreeListCtrl.GetFirstChild(self.root) + + child = self.skillTreeListCtrl.GetFirstChild(self.root) def _setTreeSkillLevel(treeItem, skillID): lvl, dirty = sChar.getSkillLevel(char.ID, skillID) self.skillTreeListCtrl.SetItemText(treeItem, - "Level {}".format(int(lvl)) if not isinstance(lvl, str) else lvl, - 1) - if not dirty: - self.skillTreeListCtrl.SetItemTextColour(treeItem, None) + 1, + "Level {}".format(int(lvl)) if not isinstance(lvl, str) else lvl) + # @todo: pheonix + # if not dirty: + # self.skillTreeListCtrl.SetItemTextColour(treeItem, None) while child.IsOk(): # child = Skill category dataType, id = self.skillTreeListCtrl.GetItemData(child) + if dataType == 'skill': _setTreeSkillLevel(child, id) else: - grand, cookie2 = self.skillTreeListCtrl.GetFirstChild(child) - + grand = self.skillTreeListCtrl.GetFirstChild(child) while grand.IsOk(): if self.skillTreeListCtrl.GetItemText(grand) != "dummy": _, skillID = self.skillTreeListCtrl.GetItemData(grand) _setTreeSkillLevel(grand, skillID) - grand, cookie2 = self.skillTreeListCtrl.GetNextChild(child, cookie2) + grand = self.skillTreeListCtrl.GetNextSibling(grand) - child, cookie = self.skillTreeListCtrl.GetNextChild(self.root, cookie) + child = self.skillTreeListCtrl.GetNextSibling(child) dirtySkills = sChar.getDirtySkills(char.ID) dirtyGroups = set([skill.item.group.ID for skill in dirtySkills]) @@ -548,9 +546,10 @@ class SkillTreeView(wx.Panel): parentID = self.skillTreeListCtrl.GetItemParent(selection) parent = self.skillTreeListCtrl.GetItemData(parentID) - if parent: - if parent[1] in dirtyGroups: - self.skillTreeListCtrl.SetItemTextColour(parentID, None) + # @todo: pheonix + # if parent: + # if parent[1] in dirtyGroups: + # self.skillTreeListCtrl.SetItemTextColour(parentID, None) event.Skip() @@ -691,8 +690,7 @@ class APIView(wx.Panel): pmainSizer.Add(self.stAPITip, 0, wx.ALL, 2) - self.hlEveAPI = wx.HyperlinkCtrl(self, wx.ID_ANY, self.apiUrlCreatePredefined, self.apiUrlCreatePredefined, - wx.DefaultPosition, wx.DefaultSize, wx.HL_DEFAULT_STYLE) + self.hlEveAPI = wx.lib.agw.hyperlink.HyperLinkCtrl(self, wx.ID_ANY, label=self.apiUrlCreatePredefined) pmainSizer.Add(self.hlEveAPI, 0, wx.ALL, 2) self.stAPITip2 = wx.StaticText(self, wx.ID_ANY, "Or, you can choose an existing key from:", wx.DefaultPosition, @@ -700,8 +698,7 @@ class APIView(wx.Panel): self.stAPITip2.Wrap(-1) pmainSizer.Add(self.stAPITip2, 0, wx.ALL, 2) - self.hlEveAPI2 = wx.HyperlinkCtrl(self, wx.ID_ANY, self.apiUrlKeyList, self.apiUrlKeyList, wx.DefaultPosition, - wx.DefaultSize, wx.HL_DEFAULT_STYLE) + self.hlEveAPI2 = wx.lib.agw.hyperlink.HyperLinkCtrl(self, wx.ID_ANY, label=self.apiUrlKeyList) pmainSizer.Add(self.hlEveAPI2, 0, wx.ALL, 2) self.charEditor.entityEditor.Bind(wx.EVT_CHOICE, self.charChanged) @@ -764,7 +761,7 @@ class APIView(wx.Panel): self.stStatus.SetLabel(msg) except Exception as e: pyfalog.error(e) - self.stStatus.SetLabel("Error:\n%s" % e.message) + self.stStatus.SetLabel("Error:\n%s" % e) else: self.charChoice.Clear() for charName in list: diff --git a/service/network.py b/service/network.py index 0099300f9..924e2940b 100644 --- a/service/network.py +++ b/service/network.py @@ -113,7 +113,7 @@ class Network(object): # another option could be installing a default opener: # urllib2.install_opener(urllib2.build_opener()) - request = urllib.request.Request(url, headers=headers, data=urllib.parse.urlencode(data) if data else None) + request = urllib.request.Request(url, headers=headers, data=urllib.parse.urlencode(data).encode("utf-8") if data else None) try: return urllib.request.urlopen(request) except urllib.error.HTTPError as error: