diff --git a/utils/resedit/data.py b/utils/resedit/data.py index 85b9dfb..92c9c59 100644 --- a/utils/resedit/data.py +++ b/utils/resedit/data.py @@ -36,6 +36,45 @@ def load(xmlfile, tag, has_name=True, do_array=None): dom.unlink() return dictionary -def save(xmlfile, basetag, tag, has_name=True): - print "TODO" +def save(xmlfile, data, basetag, tag, has_name=True, do_array=None): + """ + do_array is a DICTIONARY, not a list here + """ + xml = minidom.Document() + + base = xml.createElement(basetag) + + for key, value in data.items(): + + elem = xml.createElement(tag) + if has_name: + elem.setAttribute("name", key) + + for key2, value2 in value.items(): + node = xml.createElement(key2) + + # Check if it needs to parse an array instead of a dictionary. + if do_array != None and key2 in do_array.keys(): + for text in value2: + node2 = xml.createElement(do_array[key2]) + txtnode = xml.createTextNode(text) + node2.appendChild(txtnode) + node.appendChild(node2) + + # Standard dictionary approach. + else: + for key3, value3 in value2.items(): + node2 = xml.createElement(key3) + txtnode = xml.createTextNode(value3) + node2.appendChild(txtnode) + node.appendChild(node2) + + elem.appendChild(node) + base.appendChild(elem) + xml.appendChild(base) + + fp = open(xmlfile, "w") + xml.writexml(fp, "", "", "\n" "UTF-8") + + xml.unlink() diff --git a/utils/resedit/data.pyc b/utils/resedit/data.pyc index 0d44609..527d5b3 100644 Binary files a/utils/resedit/data.pyc and b/utils/resedit/data.pyc differ diff --git a/utils/resedit/resedit.py b/utils/resedit/resedit.py index 4150247..9061b8a 100755 --- a/utils/resedit/resedit.py +++ b/utils/resedit/resedit.py @@ -6,6 +6,5 @@ import space universe = space.space() universe.loadSystems("../../dat/ssys.xml") universe.loadPlanets("../../dat/planet.xml") -universe.debug() universe.window() diff --git a/utils/resedit/space.glade b/utils/resedit/space.glade index 41055f2..a990eeb 100644 --- a/utils/resedit/space.glade +++ b/utils/resedit/space.glade @@ -1,6 +1,5 @@ - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -19,7 +18,7 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 100 + 200 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -44,7 +43,7 @@ 31 - 26 + 25 @@ -58,7 +57,7 @@ 95 - 31 + 30 @@ -125,8 +124,8 @@ 0 0 100 1 10 10 - 117 - 79 + 120 + 80 @@ -139,7 +138,7 @@ 29 - 114 + 115 @@ -152,8 +151,8 @@ 0 0 100 1 10 10 - 119 - 113 + 120 + 110 @@ -180,7 +179,7 @@ 120 - 143 + 140 @@ -215,14 +214,14 @@ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - 5 - 169 + 4 + 162 193 - 86 + 110 True True GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK @@ -230,7 +229,7 @@ 10 - 205 + 181 @@ -246,13 +245,13 @@ 25 - 298 + 300 70 - 29 + 27 True True True @@ -262,20 +261,7 @@ 121 - 298 - - - - - 126 - 20 - True - GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK - Jumps - - - 44 - 184 + 300 @@ -322,7 +308,7 @@ 83 - 41 + 38 True True True @@ -332,7 +318,7 @@ 322 - 288 + 290 diff --git a/utils/resedit/space.py b/utils/resedit/space.py index 8e9d72d..203527f 100644 --- a/utils/resedit/space.py +++ b/utils/resedit/space.py @@ -25,16 +25,16 @@ class space: def saveSystems(self, xmlfile): - print "TODO" - + data.save("ssys.xml", self.systems, "Systems", "ssys", True, + { "jumps":"jump", "fleets":"fleet", "planets":"planet" }) def loadPlanets(self, xmlfile): self.planets = data.load(xmlfile, "planet", True, ["commodities"]) def savePlanets(self, xmlfile): - print "TODO" - + data.save("planet.xml", self.planets, "Planets", "planet", True, + { "commodities":"commodity" }) def window(self): """ @@ -45,8 +45,10 @@ class space: # Hook events and stuff. self.__swidget("winSystems").connect("destroy", self.__done) - self.__swidget("butDone").connect("clicked", self.__done) self.__swidget("treSystems").connect("row-activated", self.__update) + # Buttons. + self.__swidget("butDone").connect("clicked", self.__done) + self.__swidget("butSave").connect("clicked", self.saveSystems) # Populate the tree. self.tree_systems = gtk.TreeStore(str) diff --git a/utils/resedit/space.pyc b/utils/resedit/space.pyc index 1acd9b0..f37563a 100644 Binary files a/utils/resedit/space.pyc and b/utils/resedit/space.pyc differ