[Add] resedit: Load/save systems, Lacking some features.
This commit is contained in:
		
							parent
							
								
									046f7d8eb9
								
							
						
					
					
						commit
						5346dc540b
					
				@ -9,7 +9,7 @@ def uniq(alist): # Fastest order preserving.
 | 
				
			|||||||
  for a in s:
 | 
					  for a in s:
 | 
				
			||||||
    alist.append(a)
 | 
					    alist.append(a)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def load(xmlfile, tag, has_name=True, do_array=None):
 | 
					def load(xmlfile, tag, has_name=True, do_array=None, do_special=None):
 | 
				
			||||||
  dom = minidom.parse(xmlfile)
 | 
					  dom = minidom.parse(xmlfile)
 | 
				
			||||||
  xmlNodes = dom.getElementsByTagName(tag)
 | 
					  xmlNodes = dom.getElementsByTagName(tag)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -23,16 +23,32 @@ def load(xmlfile, tag, has_name=True, do_array=None):
 | 
				
			|||||||
    # Process the nodes.
 | 
					    # Process the nodes.
 | 
				
			||||||
    for bignode in filter(lambda x: x.nodeType==x.ELEMENT_NODE, xmlNode.childNodes):
 | 
					    for bignode in filter(lambda x: x.nodeType==x.ELEMENT_NODE, xmlNode.childNodes):
 | 
				
			||||||
      # Load the nodes.
 | 
					      # Load the nodes.
 | 
				
			||||||
      section = {}
 | 
					      
 | 
				
			||||||
      array   = []
 | 
					      # Figure out if we need an array or dictionary.
 | 
				
			||||||
 | 
					      if bignode.nodeName in do_array:
 | 
				
			||||||
 | 
					        array = []
 | 
				
			||||||
 | 
					        use_array = True
 | 
				
			||||||
 | 
					      else:
 | 
				
			||||||
 | 
					        section = {}
 | 
				
			||||||
 | 
					        use_array = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      for node in filter(lambda x: x.nodeType==x.ELEMENT_NODE,
 | 
					      for node in filter(lambda x: x.nodeType==x.ELEMENT_NODE,
 | 
				
			||||||
          bignode.childNodes):
 | 
					          bignode.childNodes):
 | 
				
			||||||
        if bignode.nodeName in do_array: # Big ugly hack to use list instead of array.
 | 
					          
 | 
				
			||||||
          array.append(node.firstChild.data)
 | 
					          # Big ugly hack to use list instead of array.
 | 
				
			||||||
        else: # Normal way (but will overwrite lists).
 | 
					          if bignode.nodeName in do_array:
 | 
				
			||||||
          section[node.nodeName] = node.firstChild.data
 | 
					            use_array = True
 | 
				
			||||||
 | 
					            array.append(node.firstChild.data)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if len(array) > 0:
 | 
					          # Uglier hack for special things.
 | 
				
			||||||
 | 
					          elif do_special != None and bignode.nodeName in do_special.keys():
 | 
				
			||||||
 | 
					            section[node.firstChild.data] = node.attributes[do_special[bignode.nodeName]].value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          # Normal way (but will overwrite lists).
 | 
				
			||||||
 | 
					          else:
 | 
				
			||||||
 | 
					            section[node.nodeName] = node.firstChild.data
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      if use_array:
 | 
				
			||||||
        mdic[bignode.nodeName] = array
 | 
					        mdic[bignode.nodeName] = array
 | 
				
			||||||
      else:
 | 
					      else:
 | 
				
			||||||
        mdic[bignode.nodeName] = section
 | 
					        mdic[bignode.nodeName] = section
 | 
				
			||||||
@ -43,7 +59,7 @@ def load(xmlfile, tag, has_name=True, do_array=None):
 | 
				
			|||||||
  dom.unlink()
 | 
					  dom.unlink()
 | 
				
			||||||
  return dictionary
 | 
					  return dictionary
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def save(xmlfile, data, basetag, tag, has_name=True, do_array=None):
 | 
					def save(xmlfile, data, basetag, tag, has_name=True, do_array=None, do_special=None):
 | 
				
			||||||
  """
 | 
					  """
 | 
				
			||||||
  do_array is a DICTIONARY, not a list here
 | 
					  do_array is a DICTIONARY, not a list here
 | 
				
			||||||
  """
 | 
					  """
 | 
				
			||||||
@ -64,7 +80,16 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None):
 | 
				
			|||||||
      if do_array != None and key2 in do_array.keys():
 | 
					      if do_array != None and key2 in do_array.keys():
 | 
				
			||||||
        for text in value2:
 | 
					        for text in value2:
 | 
				
			||||||
          node2 = xml.createElement(do_array[key2])
 | 
					          node2 = xml.createElement(do_array[key2])
 | 
				
			||||||
          txtnode = xml.createTextNode(text)
 | 
					          txtnode = xml.createTextNode(str(text))
 | 
				
			||||||
 | 
					          node2.appendChild(txtnode)
 | 
				
			||||||
 | 
					          node.appendChild(node2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # Check to see if we need to run the ULTRA_UBER_HACK.
 | 
				
			||||||
 | 
					      elif do_special != None and key2 in do_special.keys():
 | 
				
			||||||
 | 
					        for key3, value3 in value2.items():
 | 
				
			||||||
 | 
					          node2 = xml.createElement(do_special[key2][0])
 | 
				
			||||||
 | 
					          node2.setAttribute(do_special[key2][1], value3)
 | 
				
			||||||
 | 
					          txtnode = xml.createTextNode(str(key3))
 | 
				
			||||||
          node2.appendChild(txtnode)
 | 
					          node2.appendChild(txtnode)
 | 
				
			||||||
          node.appendChild(node2)
 | 
					          node.appendChild(node2)
 | 
				
			||||||
      
 | 
					      
 | 
				
			||||||
@ -72,7 +97,7 @@ def save(xmlfile, data, basetag, tag, has_name=True, do_array=None):
 | 
				
			|||||||
      else:
 | 
					      else:
 | 
				
			||||||
        for key3, value3 in value2.items():
 | 
					        for key3, value3 in value2.items():
 | 
				
			||||||
          node2 = xml.createElement(key3)
 | 
					          node2 = xml.createElement(key3)
 | 
				
			||||||
          txtnode = xml.createTextNode(value3)
 | 
					          txtnode = xml.createTextNode(str(value3))
 | 
				
			||||||
          node2.appendChild(txtnode)
 | 
					          node2.appendChild(txtnode)
 | 
				
			||||||
          node.appendChild(node2)
 | 
					          node.appendChild(node2)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
										
											Binary file not shown.
										
									
								
							@ -21,12 +21,13 @@ class space:
 | 
				
			|||||||
     self.loadPlanets(self.planetsXML)
 | 
					     self.loadPlanets(self.planetsXML)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def loadSystems(self, xmlfile):
 | 
					  def loadSystems(self, xmlfile):
 | 
				
			||||||
    self.systems = data.load(xmlfile, "ssys", True, ["jumps","fleets","planets"])
 | 
					    self.systems = data.load(xmlfile, "ssys", True,
 | 
				
			||||||
 | 
					        ["jumps", "planets"], {"fleets":"chance"} )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def saveSystems(self, xmlfile):
 | 
					  def saveSystems(self, xmlfile):
 | 
				
			||||||
    data.save("ssys.xml", self.systems, "Systems", "ssys", True,
 | 
					    data.save( "ssys.xml", self.systems, "Systems", "ssys", True,
 | 
				
			||||||
        { "jumps":"jump", "fleets":"fleet", "planets":"planet" })
 | 
					        {"jumps":"jump","planets":"planet"}, {"fleets":["fleet","chance"]})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def loadPlanets(self, xmlfile):
 | 
					  def loadPlanets(self, xmlfile):
 | 
				
			||||||
    self.planets = data.load(xmlfile, "planet", True, ["commodities"])
 | 
					    self.planets = data.load(xmlfile, "planet", True, ["commodities"])
 | 
				
			||||||
@ -383,7 +384,7 @@ class space:
 | 
				
			|||||||
    name = "untitled"
 | 
					    name = "untitled"
 | 
				
			||||||
    gen = { "asteroids":0, "interference":0, "stars":100 }
 | 
					    gen = { "asteroids":0, "interference":0, "stars":100 }
 | 
				
			||||||
    pos = { "x":0, "y":0 }
 | 
					    pos = { "x":0, "y":0 }
 | 
				
			||||||
    new_ssys = { "general":gen, "pos":pos, "jumps":[], "fleets":[], "planets":[] }
 | 
					    new_ssys = { "general":gen, "pos":pos, "jumps":[], "fleets":{}, "planets":[] }
 | 
				
			||||||
    self.systems[name] = new_ssys
 | 
					    self.systems[name] = new_ssys
 | 
				
			||||||
    self.__create_treSystems()
 | 
					    self.__create_treSystems()
 | 
				
			||||||
    self.__selSys(name)
 | 
					    self.__selSys(name)
 | 
				
			||||||
 | 
				
			|||||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue
	
	Block a user