From c6161c8acd2849ce63d4d3e51903e6567069207a Mon Sep 17 00:00:00 2001 From: Allanis Date: Sat, 13 Apr 2013 16:48:36 +0100 Subject: [PATCH] [Add] resedit: Save uhm, kinda works. --- utils/resedit/data.py | 43 ++++++++++++++++++++++++++++++-- utils/resedit/data.pyc | Bin 1507 -> 2315 bytes utils/resedit/resedit.py | 1 - utils/resedit/space.glade | 50 ++++++++++++++------------------------ utils/resedit/space.py | 12 +++++---- utils/resedit/space.pyc | Bin 4733 -> 5003 bytes 6 files changed, 66 insertions(+), 40 deletions(-) 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 0d44609e3418730d99b828323678b91de6a38745..527d5b30b5c16838e8a76478041bc066e43e1fca 100644 GIT binary patch delta 1037 zcmah{O>fgc5S_K1k0x>5Bn2s|RD3Eq@R@ReLnTU6qzWmhCRK%0gxq?eP7}MeC#@^l z_z-TKQ2zn99{C&m4UXL4#0h3Lq;SLXj(6U^c{4lXuhkEYCH;q4slD^J58%(E)Aup0 zxbtyorDTAo!+Y)X=An@n30lNS=vQz(D8I z?yEJir$JVRY;MM*1L9R6H6Yr9v;qUlCLk@tL<123BtIdYyAsI10V`A?tIZUuO2LG* z0A2x(bcnt~T4i@o8`3(RYAeoH|mNavN<0;CoU%8)LwD^gQA z7CAYHlS|kQb|7(BaCWh-Dyt4zV{>-{|J-rFWBY#Q(9A{J@E-BDWEb1+K}&Z ze~D632vQ#bJZd&IrKwU=E1NtoehruyR6a#elK=$u=S7<*7~dsRv28DW?M9J%Zu_zA z+TE><{?_x}y7Tgu9fU~8(2vnRl#wK^LxYAK*`CqBNraUuJN>7(ANJZc+B=M5nM^l4 z7>{ItXp(afNf+hjP%5NAh>vmE(_mwfLH=j=T}tV`b()N-^J{#hlc6vr zrYHmcaZOX>JG=U<1Ei8lo^rl7lfYdsC1YhJ4%7%R{zGWqDIU& z#~1gFZXUa*@+P@)hYT1s&C*($C5ob{wS=WF3sW?OMRw63U+wBzUDSn1tm|4&4OJzi mOWg6o(R37CcRw0SXN5M-4K|O+v}yfg;(Hfs#)FG5h1PE+gT~qb delta 173 zcmeAcddw}&{F#^QU0h~hG6NJa18D~!F4mtYt;WL4(89RUBZI}C1tw zDU1y69w`hA!5U0Jo?i(_L5RPLzXp(I&;ap*gn&c|JCI09EKV&+Ob-$UiHb~Kz~nU9 lii3|0q>+Jfavg_)C|J8+eqL&jJV=cakkDWNEBweI1prK#9Ay9i 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 1acd9b0b478a0c5278df476f948921ddecf93871..f37563a83ac407b050c7c0dd4a574ea4b1225b44 100644 GIT binary patch delta 1077 zcmZ`&OKTHR6h1fe%3~&J(zlHZ(}bkOwpOt|HdV|*P-3}RbWuu4Gh<0iOxwAQ2_|F_ zLBy5ZZ8yb*n{JA~z?Ex35c~mks2iJfV*96zXM-bc)tn^J_E2J=p%wy%hT2SCX%NcvxUGRyl`OP)x4(=@iRR>%fIt+Fg&2HKCAx|%Ag_d9_ebhP0B+xr6Rd+%VK7RKnNabZ_iM>+z1fUcn?k*B73 z#-XEA!0=H`K*saetIgq!Ta`_u4u#xBaw_6Pft znkOglj68BOY(ai>7H3mfQ0949@kLQI_B~Gi{ah{;c4FdYF@>}weo|nm(&A6P4y<{nQ5^J)y%#D0vJ^6d&?i^|0q kV1XbBukp8k0rTL;p8x;= delta 783 zcmaJrNF7i?2uD>d0xh|eAZ%4A z14Act_ydKN1!aQ)@e>#sS%9Sz3kwqG+=dPe4EOUn-}%n#`tCG;&l&NbGuH9`J0q_( z1pqA48JYyXfUDPhfSwy8Z%Jx|HLMgTBOP`pf$N zDtS559#k=L&qx(jC2^0_xROps4Kl#lM0eYOaSTKV5NP1*FcuK#;2Xe9Ld7ImNsuPT zh`nRM=#~oG&{^$5q}afMAO*e+p@22Pc~J~TXQnzLi+%!%oz*f#aYZV97~6(0K1~pt zA7Ev32UfUY8vGhH<^NUjqH zOYUL3Y_8#3^Sj97E6cZPOzWk1S)gWz;ut=+x5V|yFMCgjqxfy+Q>v`;3WQ!2C+UW8 z@k_d0uMk1k4sc_AD0}kZqrTT*O_SjSLknA(M&Trzrx?-