From d40a796f85fd1435e9597e5012e14800fd3c4e99 Mon Sep 17 00:00:00 2001 From: cncfanatics Date: Tue, 7 Sep 2010 19:24:29 +0200 Subject: [PATCH] First draft of skill view of the character editor, can now switch characters and browse levels --- controller/character.py | 4 +++ gui/characterEditor.py | 62 ++++++++++++++++++++++++++++------------- 2 files changed, 47 insertions(+), 19 deletions(-) diff --git a/controller/character.py b/controller/character.py index b0d5eeaba..fda4f221e 100644 --- a/controller/character.py +++ b/controller/character.py @@ -51,3 +51,7 @@ class Character(): def getGroupDescription(self, groupID): return eos.db.getMarketGroup(groupID).description + + def getSkillLevel(self, charID, skillID): + skill = eos.db.getCharacter(charID).getSkill(skillID) + return skill.level if skill.learned else "Not learned" diff --git a/gui/characterEditor.py b/gui/characterEditor.py index fc94b3714..bc84d48a9 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -18,6 +18,7 @@ #=============================================================================== import wx +import wx.gizmos from gui import bitmapLoader import controller @@ -109,27 +110,37 @@ class CharacterEditor (wx.Dialog): def registerEvents(self): self.Bind(wx.EVT_CLOSE, self.closeEvent) self.skillTreeChoice.Bind(wx.EVT_CHOICE, self.charChanged) - self.sview.SkillTreeCtrl.Bind(wx.EVT_TREE_SEL_CHANGED, self.updateDescription) + self.sview.skillTreeListCtrl.Bind(wx.EVT_TREE_SEL_CHANGED, self.updateDescription) def closeEvent(self, event): pass def charChanged(self, event): - pass + event.Skip() + self.sview.skillTreeListCtrl.DeleteChildren(self.sview.root) + self.sview.populateSkillTree() def updateDescription(self, event): root = event.Item - tree = self.sview.SkillTreeCtrl + tree = self.sview.skillTreeListCtrl cChar = controller.Character.getInstance() + data = tree.GetPyData(root) + if data == None: + return + if tree.GetChildrenCount(root) == 0: - description = cChar.getSkillDescription(tree.GetPyData(root)) + description = cChar.getSkillDescription(data) else: - description = cChar.getGroupDescription(tree.GetPyData(root)) + description = cChar.getGroupDescription(data) self.description.SetLabel(description) self.description.Wrap(620) self.description.Show() + def getActiveCharacter(self): + selection = self.skillTreeChoice.GetSelection() + return self.charIDs[selection] if selection is not None else None + class NewCharacter (wx.Dialog): def __init__(self, parent): wx.Dialog.__init__ (self, parent, id=wx.ID_ANY, title=u"Create new character", pos=wx.DefaultPosition, size=wx.Size(344, 89), style=wx.DEFAULT_DIALOG_STYLE) @@ -165,17 +176,26 @@ class SkillTreeView (wx.Panel): pmainSizer = wx.BoxSizer(wx.VERTICAL) - self.SkillTreeCtrl = wx.TreeCtrl(self, wx.ID_ANY, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) - pmainSizer.Add(self.SkillTreeCtrl, 1, wx.EXPAND | wx.ALL, 5) + tree = self.skillTreeListCtrl = wx.gizmos.TreeListCtrl(self, wx.ID_ANY, style=wx.TR_DEFAULT_STYLE | wx.TR_HIDE_ROOT) + pmainSizer.Add(tree, 1, wx.EXPAND | wx.ALL, 5) + - self.root = self.SkillTreeCtrl.AddRoot("Skills") self.imageList = wx.ImageList(16, 16) - self.SkillTreeCtrl.SetImageList(self.imageList) + tree.SetImageList(self.imageList) self.skillBookImageId = self.imageList.Add(bitmapLoader.getBitmap("skill_small", "icons")) + tree.AddColumn("Skill") + tree.AddColumn("Level") + tree.SetMainColumn(0) + + self.root = tree.AddRoot("Skills") + tree.SetItemText(self.root, "Levels", 1) + + tree.SetColumnWidth(0, 500) + self.populateSkillTree() - self.SkillTreeCtrl.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup) + tree.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup) self.SetSizer(pmainSizer) self.Layout() @@ -185,27 +205,31 @@ class SkillTreeView (wx.Panel): groups = cChar.getSkillGroups() imageId = self.skillBookImageId root = self.root - tree = self.SkillTreeCtrl + tree = self.skillTreeListCtrl for id, name in groups: - childId = tree.AppendItem(root, name, imageId, data=wx.TreeItemData(id)) + childId = tree.AppendItem(root, name, imageId) + tree.SetPyData(childId, id) tree.AppendItem(childId, "dummy") - self.SkillTreeCtrl.SortChildren(root) + tree.SortChildren(root) def expandLookup(self, event): root = event.Item - child, cookie = self.SkillTreeCtrl.GetFirstChild(root) - if self.SkillTreeCtrl.GetItemText(child) == "dummy": - self.SkillTreeCtrl.Delete(child) + tree = self.skillTreeListCtrl + child, cookie = tree.GetFirstChild(root) + if tree.GetItemText(child) == "dummy": + tree.Delete(child) #Get the real intrestin' stuff cChar = controller.Character.getInstance() - for id, name in cChar.getSkills(self.SkillTreeCtrl.GetPyData(root)): + char = self.Parent.Parent.getActiveCharacter() + for id, name in cChar.getSkills(tree.GetPyData(root)): iconId = self.skillBookImageId - self.SkillTreeCtrl.AppendItem(root, name, iconId, data=wx.TreeItemData(id)) + childId = tree.AppendItem(root, name, iconId, data=wx.TreeItemData(id)) + tree.SetItemText(childId, str(cChar.getSkillLevel(char, id)), 1) - self.SkillTreeCtrl.SortChildren(root) + tree.SortChildren(root) class ImplantsTreeView (wx.Panel): def __init__(self, parent):