diff --git a/controller/__init__.py b/controller/__init__.py index 48b528375..eea353090 100644 --- a/controller/__init__.py +++ b/controller/__init__.py @@ -1,3 +1,4 @@ from controller.market import Market from controller.fit import Fit from controller.attribute import Attribute +from controller.character import Character diff --git a/controller/character.py b/controller/character.py index 620b1753f..7e92cb8c6 100644 --- a/controller/character.py +++ b/controller/character.py @@ -18,6 +18,7 @@ #=============================================================================== import eos.db +import eos.types class Character(): instance = None @@ -29,4 +30,18 @@ class Character(): return cls.instance def getCharacterList(self): - map(lambda c: c.name, eos.db.getCharacterList()) + baseChars = [eos.types.Character.getAll0(), eos.types.Character.getAll5()] + # Flush incase all0 & all5 weren't in the db yet + eos.db.saveddata_session.flush() + return map(lambda c: (c.ID, c.name), eos.db.getCharacterList()) + + def getSkillGroups(self): + marketGroup = eos.db.getMarketGroup(150) + return map(lambda mg: (mg.ID, mg.name), marketGroup.children) + + def getSkills(self, groupID): + marketGroup = eos.db.getMarketGroup(groupID) + skills = [] + for skill in marketGroup.items: + skills.append((skill.ID, skill.name)) + return skills diff --git a/eos b/eos index b557bb7ec..bd22e5b14 160000 --- a/eos +++ b/eos @@ -1 +1 @@ -Subproject commit b557bb7ec51c6e9c214e4fab9e2332afae1bebe9 +Subproject commit bd22e5b149e4af425e9e5983a288a9e97c4930bd diff --git a/gui/characterEditor.py b/gui/characterEditor.py index 4d2965223..c7679689b 100644 --- a/gui/characterEditor.py +++ b/gui/characterEditor.py @@ -19,6 +19,7 @@ import wx from gui import bitmapLoader +import controller class CharacterEditor (wx.Dialog): def __init__(self, parent): @@ -30,7 +31,16 @@ class CharacterEditor (wx.Dialog): mainSizer = wx.BoxSizer(wx.VERTICAL) navSizer = wx.BoxSizer(wx.HORIZONTAL) - self.skillTreeChoice = wx.Choice(self, wx.ID_ANY) + cChar = controller.Character.getInstance() + charList = cChar.getCharacterList() + + choices = [] + self.charIDs = [] + for ID, name in charList: + choices.append(name) + self.charIDs.append(ID) + + self.skillTreeChoice = wx.Choice(self, wx.ID_ANY, choices=choices) navSizer.Add(self.skillTreeChoice, 1, wx.ALL | wx.EXPAND, 5) buttons = (("new", wx.ART_NEW), @@ -57,13 +67,13 @@ class CharacterEditor (wx.Dialog): self.viewsNBContainer = wx.Notebook(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, 0) - sview = SkillTreeView(self.viewsNBContainer) - iview = ImplantsTreeView(self.viewsNBContainer) - aview = APIView(self.viewsNBContainer) + self.sview = SkillTreeView(self.viewsNBContainer) + self.iview = ImplantsTreeView(self.viewsNBContainer) + self.aview = APIView(self.viewsNBContainer) - self.viewsNBContainer.AddPage(sview, "Skills") - self.viewsNBContainer.AddPage(iview, "Implants") - self.viewsNBContainer.AddPage(aview, "API") + self.viewsNBContainer.AddPage(self.sview, "Skills") + self.viewsNBContainer.AddPage(self.iview, "Implants") + self.viewsNBContainer.AddPage(self.aview, "API") mainSizer.Add(self.viewsNBContainer, 1, wx.EXPAND | wx.ALL, 5) @@ -94,10 +104,14 @@ class CharacterEditor (wx.Dialog): def registerEvents(self): self.Bind(wx.EVT_CLOSE, self.closeEvent) + self.skillTreeChoice.Bind(wx.EVT_CHOICE, self.charChanged) def closeEvent(self, event): pass + def charChanged(self, event): + pass + 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) @@ -133,12 +147,48 @@ class SkillTreeView (wx.Panel): pmainSizer = wx.BoxSizer(wx.VERTICAL) - self.SkillTreeCtrl = wx.TreeCtrl(self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TR_DEFAULT_STYLE) + 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) + self.root = self.SkillTreeCtrl.AddRoot("Skills") + self.imageList = wx.ImageList(16, 16) + self.SkillTreeCtrl.SetImageList(self.imageList) + self.skillBookImageId = self.imageList.Add(bitmapLoader.getBitmap("skill_small", "icons")) + + self.populateSkillTree() + + self.SkillTreeCtrl.Bind(wx.EVT_TREE_ITEM_EXPANDING, self.expandLookup) + self.SetSizer(pmainSizer) self.Layout() + def populateSkillTree(self): + cChar = controller.Character.getInstance() + groups = cChar.getSkillGroups() + imageId = self.skillBookImageId + root = self.root + tree = self.SkillTreeCtrl + + for id, name in groups: + childId = tree.AppendItem(root, name, imageId, data=wx.TreeItemData(id)) + tree.AppendItem(childId, "dummy") + + self.SkillTreeCtrl.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) + + #Get the real intrestin' stuff + cChar = controller.Character.getInstance() + for id, name in cChar.getSkills(self.SkillTreeCtrl.GetPyData(root)): + iconId = self.skillBookImageId + self.SkillTreeCtrl.AppendItem(root, name, iconId, data=wx.TreeItemData(id)) + + self.SkillTreeCtrl.SortChildren(root) + class ImplantsTreeView (wx.Panel): def __init__(self, parent): wx.Panel.__init__ (self, parent, id=wx.ID_ANY, pos=wx.DefaultPosition, size=wx.Size(500, 300), style=wx.TAB_TRAVERSAL) diff --git a/gui/mainFrame.py b/gui/mainFrame.py index a165ea0f3..df751a997 100644 --- a/gui/mainFrame.py +++ b/gui/mainFrame.py @@ -21,7 +21,6 @@ import wx from gui import bitmapLoader from gui.mainMenuBar import MainMenuBar from gui.additionsPane import AdditionsPane -from gui.mainToolBar import MainToolBar from gui.marketBrowser import MarketBrowser from gui.multiSwitch import MultiSwitch from gui.statsPane import StatsPane diff --git a/icons/skill_small.png b/icons/skill_small.png new file mode 100644 index 000000000..9202c73b5 Binary files /dev/null and b/icons/skill_small.png differ