Fixed some bugs, added character action buttons on editor

This commit is contained in:
blitzmann
2015-09-25 12:13:17 -04:00
parent 2a88e3114b
commit 05b9d1e607
2 changed files with 59 additions and 12 deletions

View File

@@ -164,14 +164,14 @@ class Character(object):
if self == self.getAll5() or self == self.getAll0():
raise ReadOnlyException("This character is read-only")
for skill in self.dirtySkills:
for skill in self.dirtySkills.copy():
skill.saveLevel()
self.dirtySkills = set()
eos.db.commit()
def revertLevels(self):
for skill in self.dirtySkills:
for skill in self.dirtySkills.copy():
skill.revert()
self.dirtySkills = set()
@@ -269,10 +269,11 @@ class Skill(HandledItem):
raise ReadOnlyException()
self.activeLevel = level
self.character.dirtySkills.add(self)
if self.activeLevel == self.__level and self in self.character.dirtySkills:
self.character.dirtySkills.remove(self)
else:
self.character.dirtySkills.add(self)
@property
def item(self):

View File

@@ -59,14 +59,12 @@ class CharacterEditor(wx.Frame):
self.charChoice = wx.Choice(self, wx.ID_ANY, style=0)
self.navSizer.Add(self.charChoice, 1, wx.ALL | wx.EXPAND, 5)
self.refreshCharacterList()
charList = sChar.getCharacterList()
'''
for id, name, active in charList:
i = self.charChoice.Append(name, id)
if active:
self.charChoice.SetSelection(i)
'''
buttons = (("new", wx.ART_NEW),
("rename", bitmapLoader.getBitmap("rename", "icons")),
@@ -113,12 +111,26 @@ class CharacterEditor(wx.Frame):
bSizerButtons = wx.BoxSizer(wx.HORIZONTAL)
self.btnSave = wx.Button(self, wx.ID_ANY, "Save")
self.btnSaveAs = wx.Button(self, wx.ID_ANY, "Save As...")
self.btnRevert = wx.Button(self, wx.ID_ANY, "Revert")
self.btnOK = wx.Button(self, wx.ID_OK)
bSizerButtons.Add(self.btnSave, 0, wx.ALL, 5)
bSizerButtons.Add(self.btnSaveAs, 0, wx.ALL, 5)
bSizerButtons.Add(self.btnRevert, 0, wx.ALL, 5)
bSizerButtons.AddStretchSpacer()
bSizerButtons.Add(self.btnOK, 0, wx.ALL, 5)
self.btnSave.Bind(wx.EVT_BUTTON, self.saveChar)
self.btnSaveAs.Bind(wx.EVT_BUTTON, self.saveCharAs)
self.btnRevert.Bind(wx.EVT_BUTTON, self.revertChar)
self.btnOK.Bind(wx.EVT_BUTTON, self.editingFinished)
mainSizer.Add(bSizerButtons, 0, wx.ALIGN_RIGHT, 5)
mainSizer.Add(bSizerButtons, 0, wx.EXPAND, 5)
self.btnRestrict()
self.SetSizer(mainSizer)
self.Layout()
@@ -131,17 +143,29 @@ class CharacterEditor(wx.Frame):
self.registerEvents()
def btnRestrict(self):
sChar = service.Character.getInstance()
charID = self.getActiveCharacter()
char = sChar.getCharacter(charID)
# enable/disable character saving stuff
self.btnSave.Enable(not char.ro and char.isDirty)
self.btnSaveAs.Enable(char.isDirty)
self.btnRevert.Enable(char.isDirty)
def refreshCharacterList(self, event=None):
sChar = service.Character.getInstance()
charList = sChar.getCharacterList()
active = self.getActiveCharacter()
self.charChoice.Clear()
for id, name, active in charList:
for id, name, _ in charList:
i = self.charChoice.Append(name, id)
if active:
if active == id:
self.charChoice.SetSelection(i)
self.btnRestrict()
def editingFinished(self, event):
del self.disableWin
wx.PostEvent(self.mainFrame, GE.CharListUpdated())
@@ -152,6 +176,27 @@ class CharacterEditor(wx.Frame):
self.Bind(GE.CHAR_LIST_UPDATED, self.refreshCharacterList)
self.charChoice.Bind(wx.EVT_CHOICE, self.charChanged)
def saveChar(self, event):
sChr = service.Character.getInstance()
charID = self.getActiveCharacter()
sChr.saveCharacter(charID)
self.sview.populateSkillTree()
wx.PostEvent(self, GE.CharListUpdated())
def saveCharAs(self, event):
charID = self.getActiveCharacter()
dlg = SaveCharacterAs(self, charID)
dlg.ShowModal()
dlg.Destroy()
self.sview.populateSkillTree()
def revertChar(self, event):
sChr = service.Character.getInstance()
charID = self.getActiveCharacter()
sChr.revertCharacter(charID)
self.sview.populateSkillTree()
wx.PostEvent(self, GE.CharListUpdated())
def closeEvent(self, event):
del self.disableWin
wx.PostEvent(self.mainFrame, GE.CharListUpdated())
@@ -339,6 +384,7 @@ class SkillTreeView (wx.Panel):
sChar = service.Character.getInstance()
charID = self.Parent.Parent.getActiveCharacter()
dirtySkills = sChar.getDirtySkills(charID)
print dirtySkills
dirtyGroups = set([skill.item.group.ID for skill in dirtySkills])
groups = sChar.getSkillGroups()
@@ -719,6 +765,7 @@ class SaveCharacterAs(wx.Dialog):
def __init__(self, parent, charID):
wx.Dialog.__init__(self, parent, title="Save Character As...", size=wx.Size(300, 60))
self.charID = charID
self.parent = parent
sChar = service.Character.getInstance()
name = sChar.getCharName(charID)
bSizer1 = wx.BoxSizer(wx.HORIZONTAL)
@@ -737,9 +784,8 @@ class SaveCharacterAs(wx.Dialog):
def change(self, event):
sChar = service.Character.getInstance()
mainFrame = gui.mainFrame.MainFrame.getInstance()
sChar.saveCharacterAs(self.charID, self.input.GetLineText(0))
wx.PostEvent(mainFrame, GE.CharListUpdated())
wx.PostEvent(self.parent, GE.CharListUpdated())
event.Skip()
self.Destroy()