| 139 | |
| 140 | |
| 141 | class Character: |
| 142 | instance = None |
| 143 | skillReqsDict = {} |
| 144 | |
| 145 | @classmethod |
| 146 | def getInstance(cls): |
| 147 | if cls.instance is None: |
| 148 | cls.instance = Character() |
| 149 | |
| 150 | return cls.instance |
| 151 | |
| 152 | def __init__(self): |
| 153 | # Simply initializes default characters in case they aren't in the database yet |
| 154 | self.all0() |
| 155 | self.all5() |
| 156 | |
| 157 | def exportText(self): |
| 158 | data = "Pyfa exported plan for \"" + self.skillReqsDict['charname'] + "\"\n" |
| 159 | data += "=" * 79 + "\n" |
| 160 | data += "\n" |
| 161 | item = "" |
| 162 | try: |
| 163 | for s in self.skillReqsDict['skills']: |
| 164 | if item == "" or not item == s["item"]: |
| 165 | item = s["item"] |
| 166 | data += "-" * 79 + "\n" |
| 167 | data += "Skills required for {}:\n".format(item) |
| 168 | data += "{}{}: {}\n".format(" " * s["indent"], s["skill"], int(s["level"])) |
| 169 | data += "-" * 79 + "\n" |
| 170 | except (KeyboardInterrupt, SystemExit): |
| 171 | raise |
| 172 | except Exception: |
| 173 | pass |
| 174 | |
| 175 | return data |
| 176 | |
| 177 | def exportXml(self): |
| 178 | root = ElementTree.Element("plan") |
| 179 | root.attrib["name"] = "Pyfa exported plan for " + self.skillReqsDict['charname'] |
| 180 | root.attrib["revision"] = config.evemonMinVersion |
| 181 | |
| 182 | sorts = ElementTree.SubElement(root, "sorting") |
| 183 | sorts.attrib["criteria"] = "None" |
| 184 | sorts.attrib["order"] = "None" |
| 185 | sorts.attrib["groupByPriority"] = "false" |
| 186 | |
| 187 | skillsSeen = set() |
| 188 | |
| 189 | for s in self.skillReqsDict['skills']: |
| 190 | skillKey = str(s["skillID"]) + "::" + s["skill"] + "::" + str(int(s["level"])) |
| 191 | if skillKey in skillsSeen: |
| 192 | pass # Duplicate skills confuse EVEMon |
| 193 | else: |
| 194 | skillsSeen.add(skillKey) |
| 195 | entry = ElementTree.SubElement(root, "entry") |
| 196 | entry.attrib["skillID"] = str(s["skillID"]) |
| 197 | entry.attrib["skill"] = s["skill"] |
| 198 | entry.attrib["level"] = str(int(s["level"])) |