Cleaned up. Supports txt, xml and emp (gzipped xml)

This commit is contained in:
Martin Falatic
2013-06-15 17:50:53 -07:00
parent 961fbaef69
commit 67ed8818d8
3 changed files with 41 additions and 23 deletions

View File

@@ -138,19 +138,24 @@ class CharacterSelection(wx.Panel):
event.Skip()
def _buildSkillsTooltip(self, reqs, tabulationLevel = 0):
def _buildSkillsTooltip(self, reqs, currItem = "", tabulationLevel = 0):
tip = ""
sCharacter = service.Character.getInstance()
if tabulationLevel == 0:
for item, subReqs in reqs.iteritems():
tip += " %s:\n" % item.name
tip += self._buildSkillsTooltip(subReqs, 1)
tip += self._buildSkillsTooltip(subReqs, item.name, 1)
else:
for name, info in reqs.iteritems():
level, ID, more = info
sCharacter.skillReqsDict['skills'].append(
{'skillID' : ID, 'skill' : name, 'level' : int(level)})
sCharacter.skillReqsDict['skills'].append({
'item' : currItem,
'skillID' : ID,
'skill' : name,
'level' : level,
'indent' : tabulationLevel
})
tip += " %s%s: %d\n" % (" " * tabulationLevel, name, level)
tip += self._buildSkillsTooltip(more, tabulationLevel + 1)
tip += self._buildSkillsTooltip(more, currItem, tabulationLevel + 1)
return tip

View File

@@ -263,7 +263,9 @@ class MainFrame(wx.Frame):
dlg=wx.FileDialog(
self,
"Open One Or More Fitting Files",
wildcard = "EFT text fitting files (*.cfg)|*.cfg|EvE XML fitting files (*.xml)|*.xml|All Files (*)|*",
wildcard = "EFT text fitting files (*.cfg)|*.cfg|" \
"EvE XML fitting files (*.xml)|*.xml|" \
"All Files (*)|*",
style = wx.FD_OPEN | wx.FD_FILE_MUST_EXIST | wx.FD_MULTIPLE)
if (dlg.ShowModal() == wx.ID_OK):
self.waitDialog = animUtils.WaitDialog(self, title = "Importing")
@@ -482,12 +484,16 @@ class MainFrame(wx.Frame):
saveDialog = wx.FileDialog(
self,
"Export Skills Needed As...",
wildcard = "EVEMon skills training file (*.xml)|*.xml|Text skills training file (*.txt)|*.txt",
wildcard = "EVEMon skills training file (*.emp)|*.emp|" \
"EVEMon skills training XML file (*.xml)|*.xml|" \
"Text skills training file (*.txt)|*.txt",
style = wx.FD_SAVE | wx.FD_OVERWRITE_PROMPT)
if (saveDialog.ShowModal() == wx.ID_OK):
saveFmtInt = saveDialog.GetFilterIndex()
saveFmt = ""
if saveFmtInt == 0: # Per ordering of wildcards above
saveFmt = "emp"
elif saveFmtInt == 1:
saveFmt = "xml"
else:
saveFmt = "txt"

View File

@@ -32,6 +32,8 @@ from codecs import open
from xml.etree import ElementTree
from xml.dom import minidom
import gzip
EVEMON_COMPATIBLE_VERSION = "4081"
class SkillBackupThread(threading.Thread):
@@ -47,16 +49,19 @@ class SkillBackupThread(threading.Thread):
sCharacter = Character.getInstance()
sFit = service.Fit.getInstance()
fit = sFit.getFit(self.activeFit)
backupFile = open(path, "w", encoding="utf-8")
backupData = "";
if self.saveFmt == "xml":
if self.saveFmt == "xml" or self.saveFmt == "emp":
backupData = sCharacter.exportXml()
elif self.saveFmt == "txt":
backupData = sCharacter.exportText()
else:
backupData = sCharacter.exportText()
backupFile.write(backupData)
backupFile.close()
if self.saveFmt == "emp":
with gzip.open(path, "wb") as backupFile:
backupFile.write(backupData)
else:
with open(path, "w", encoding="utf-8") as backupFile:
backupFile.write(backupData)
wx.CallAfter(self.callback)
class Character():
@@ -71,15 +76,17 @@ class Character():
return cls.instance
def exportText(self):
data = ""
mySkills = repr(self.skillReqsDict)
data += "-" * 79
data += '\n'
data += repr(self.skillReqsDict)
data += '\n'
data += "-" * 79
data += '\n'
data = "Pyfa exported plan for \""+self.skillReqsDict['charname']+"\"\n"
data += "=" * 79 + "\n"
data += "\n"
item = ""
for s in self.skillReqsDict['skills']:
if item == "" or not item == s["item"]:
item = s["item"]
data += "-" * 79 + "\n"
data += "Skills required for {}:\n".format(item)
data += "{}{}: {}\n".format(" " * s["indent"], s["skill"], int(s["level"]))
data += "-" * 79 + "\n"
return data
@@ -97,7 +104,7 @@ class Character():
entry = ElementTree.SubElement(root, "entry")
entry.attrib["skillID"] = str(s["skillID"])
entry.attrib["skill"] = s["skill"]
entry.attrib["level"] = str(s["level"])
entry.attrib["level"] = str(int(s["level"]))
entry.attrib["priority"] = "3"
entry.attrib["type"] = "Prerequisite"
notes = ElementTree.SubElement(entry, "notes")