Enable/disable edit menu options, and add color to character editor to show which skills are edited
This commit is contained in:
@@ -114,6 +114,10 @@ class Character(object):
|
||||
for skillRow in skills:
|
||||
self.addSkill(Skill(skillRow["typeID"], skillRow["level"]))
|
||||
|
||||
@property
|
||||
def ro(self):
|
||||
return self == self.getAll0() or self == self.getAll5()
|
||||
|
||||
@property
|
||||
def owner(self):
|
||||
return self.__owner
|
||||
@@ -239,7 +243,11 @@ class Skill(HandledItem):
|
||||
self.__level = self.activeLevel
|
||||
|
||||
def revert(self):
|
||||
self.activeLevel = self.__level
|
||||
self.level = self.__level
|
||||
|
||||
@property
|
||||
def isDirty(self):
|
||||
return self.__level != self.activeLevel
|
||||
|
||||
@property
|
||||
def learned(self):
|
||||
|
||||
@@ -181,7 +181,6 @@ class CharacterEditor(wx.Frame):
|
||||
self.aview.Layout()
|
||||
|
||||
def charChanged(self, event):
|
||||
self.sview.skillTreeListCtrl.DeleteChildren(self.sview.root)
|
||||
self.sview.populateSkillTree()
|
||||
sChar = service.Character.getInstance()
|
||||
charID = self.getActiveCharacter()
|
||||
@@ -327,6 +326,10 @@ class SkillTreeView (wx.Panel):
|
||||
self.levelIds[id] = level
|
||||
self.levelChangeMenu.Append(id, "Level %d" % level)
|
||||
|
||||
self.levelChangeMenu.AppendSeparator()
|
||||
self.revertID = wx.NewId()
|
||||
self.levelChangeMenu.Append(self.revertID, "Revert")
|
||||
|
||||
self.levelChangeMenu.Bind(wx.EVT_MENU, self.changeLevel)
|
||||
self.SetSizer(pmainSizer)
|
||||
|
||||
@@ -334,15 +337,22 @@ 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])
|
||||
|
||||
groups = sChar.getSkillGroups()
|
||||
imageId = self.skillBookImageId
|
||||
root = self.root
|
||||
tree = self.skillTreeListCtrl
|
||||
tree.DeleteChildren(root)
|
||||
|
||||
for id, name in groups:
|
||||
childId = tree.AppendItem(root, name, imageId)
|
||||
tree.SetPyData(childId, id)
|
||||
tree.AppendItem(childId, "dummy")
|
||||
if id in dirtyGroups:
|
||||
tree.SetItemTextColour(childId, wx.BLUE)
|
||||
|
||||
tree.SortChildren(root)
|
||||
|
||||
@@ -359,8 +369,10 @@ class SkillTreeView (wx.Panel):
|
||||
for id, name in sChar.getSkills(tree.GetPyData(root)):
|
||||
iconId = self.skillBookImageId
|
||||
childId = tree.AppendItem(root, name, iconId, data=wx.TreeItemData(id))
|
||||
level = sChar.getSkillLevel(char, id)
|
||||
level, dirty = sChar.getSkillLevel(char, id)
|
||||
tree.SetItemText(childId, "Level %d" % level if isinstance(level, int) else level, 1)
|
||||
if dirty:
|
||||
tree.SetItemTextColour(childId, wx.BLUE)
|
||||
|
||||
tree.SortChildren(root)
|
||||
|
||||
@@ -381,17 +393,20 @@ class SkillTreeView (wx.Panel):
|
||||
|
||||
def changeLevel(self, event):
|
||||
level = self.levelIds.get(event.Id)
|
||||
if level is not None:
|
||||
sChar = service.Character.getInstance()
|
||||
charID = self.Parent.Parent.getActiveCharacter()
|
||||
selection = self.skillTreeListCtrl.GetSelection()
|
||||
skillID = self.skillTreeListCtrl.GetPyData(selection)
|
||||
|
||||
sChar = service.Character.getInstance()
|
||||
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())
|
||||
|
||||
elif event.Id == self.revertID:
|
||||
sChar.revertLevel(charID, skillID)
|
||||
self.populateSkillTree()
|
||||
wx.PostEvent(self.Parent.Parent, GE.CharListUpdated())
|
||||
event.Skip()
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import bitmapLoader
|
||||
import gui.mainFrame
|
||||
import gui.graphFrame
|
||||
import gui.globalEvents as GE
|
||||
import service
|
||||
|
||||
class MainMenuBar(wx.MenuBar):
|
||||
def __init__(self):
|
||||
@@ -119,5 +120,14 @@ class MainMenuBar(wx.MenuBar):
|
||||
self.Enable(wx.ID_SAVEAS, enable)
|
||||
self.Enable(wx.ID_COPY, enable)
|
||||
self.Enable(self.exportSkillsNeededId, enable)
|
||||
event.Skip()
|
||||
|
||||
sChar = service.Character.getInstance()
|
||||
charID = self.mainFrame.charSelection.getActiveCharacter()
|
||||
char = sChar.getCharacter(charID)
|
||||
|
||||
# enable/disable character saving stuff
|
||||
self.Enable(self.saveCharId, not char.ro and char.isDirty)
|
||||
self.Enable(self.saveCharAsId, char.isDirty)
|
||||
self.Enable(self.revertCharId, char.isDirty)
|
||||
|
||||
event.Skip()
|
||||
|
||||
@@ -238,7 +238,7 @@ class Character(object):
|
||||
|
||||
def getSkillLevel(self, charID, skillID):
|
||||
skill = eos.db.getCharacter(charID).getSkill(skillID)
|
||||
return skill.level if skill.learned else "Not learned"
|
||||
return (skill.level if skill.learned else "Not learned", skill.isDirty)
|
||||
|
||||
def getCharName(self, charID):
|
||||
return eos.db.getCharacter(charID).name
|
||||
@@ -323,6 +323,11 @@ class Character(object):
|
||||
else:
|
||||
skill.level = level
|
||||
|
||||
def revertLevel(self, charID, skillID):
|
||||
char = eos.db.getCharacter(charID)
|
||||
skill = char.getSkill(skillID)
|
||||
skill.revert()
|
||||
|
||||
def addImplant(self, charID, itemID):
|
||||
char = eos.db.getCharacter(charID)
|
||||
implant = eos.types.Implant(eos.db.getItem(itemID))
|
||||
|
||||
Reference in New Issue
Block a user