From 24969cf8071fcbf8089b09bb75939c3bb0df7c72 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Tue, 16 Apr 2013 21:35:08 +0100
Subject: [PATCH] [Add] resedit: More progress on the planet editor.

---
 utils/resedit/space.glade | 168 +++++++++++++++++++++++++++-----------
 utils/resedit/space.py    | 135 +++++++++++++++++++++++++++++-
 utils/resedit/space.pyc   | Bin 15186 -> 18502 bytes
 3 files changed, 253 insertions(+), 50 deletions(-)

diff --git a/utils/resedit/space.glade b/utils/resedit/space.glade
index e21763d..cfeed96 100644
--- a/utils/resedit/space.glade
+++ b/utils/resedit/space.glade
@@ -5,7 +5,7 @@
     <property name="width_request">750</property>
     <property name="height_request">450</property>
     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
-    <property name="title" translatable="yes">Systems</property>
+    <property name="title" translatable="yes">System Editor</property>
     <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
     <child>
       <widget class="GtkVBox" id="vbox1">
@@ -422,8 +422,9 @@
   </widget>
   <widget class="GtkWindow" id="winPlanets">
     <property name="width_request">600</property>
-    <property name="height_request">450</property>
+    <property name="height_request">500</property>
     <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+    <property name="title" translatable="yes">Planet Editor</property>
     <child>
       <widget class="GtkHPaned" id="hpaned2">
         <property name="visible">True</property>
@@ -490,8 +491,8 @@
             </child>
             <child>
               <widget class="GtkComboBox" id="comFaction">
-                <property name="width_request">129</property>
-                <property name="height_request">29</property>
+                <property name="width_request">182</property>
+                <property name="height_request">24</property>
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
               </widget>
@@ -520,22 +521,22 @@
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
               </widget>
               <packing>
-                <property name="x">11</property>
-                <property name="y">94</property>
+                <property name="x">12</property>
+                <property name="y">173</property>
               </packing>
             </child>
             <child>
               <widget class="GtkTreeView" id="treCommodities">
                 <property name="width_request">188</property>
-                <property name="height_request">166</property>
+                <property name="height_request">149</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
                 <property name="headers_clickable">True</property>
               </widget>
               <packing>
-                <property name="x">16</property>
-                <property name="y">116</property>
+                <property name="x">17</property>
+                <property name="y">196</property>
               </packing>
             </child>
             <child>
@@ -547,7 +548,7 @@
               </widget>
               <packing>
                 <property name="x">15</property>
-                <property name="y">287</property>
+                <property name="y">350</property>
               </packing>
             </child>
             <child>
@@ -562,8 +563,8 @@
                 <property name="response_id">0</property>
               </widget>
               <packing>
-                <property name="x">15</property>
-                <property name="y">318</property>
+                <property name="x">16</property>
+                <property name="y">380</property>
               </packing>
             </child>
             <child>
@@ -579,19 +580,19 @@
               </widget>
               <packing>
                 <property name="x">115</property>
-                <property name="y">316</property>
+                <property name="y">380</property>
               </packing>
             </child>
             <child>
               <widget class="GtkVSeparator" id="vseparator2">
                 <property name="width_request">20</property>
-                <property name="height_request">255</property>
+                <property name="height_request">171</property>
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
               </widget>
               <packing>
                 <property name="x">209</property>
-                <property name="y">110</property>
+                <property name="y">194</property>
               </packing>
             </child>
             <child>
@@ -602,8 +603,8 @@
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
               </widget>
               <packing>
-                <property name="x">7</property>
-                <property name="y">360</property>
+                <property name="x">6</property>
+                <property name="y">419</property>
               </packing>
             </child>
             <child>
@@ -615,8 +616,8 @@
                 <property name="label" translatable="yes">Services</property>
               </widget>
               <packing>
-                <property name="x">232</property>
-                <property name="y">115</property>
+                <property name="x">254</property>
+                <property name="y">194</property>
               </packing>
             </child>
             <child>
@@ -632,7 +633,7 @@
               </widget>
               <packing>
                 <property name="x">240</property>
-                <property name="y">145</property>
+                <property name="y">215</property>
               </packing>
             </child>
             <child>
@@ -648,7 +649,7 @@
               </widget>
               <packing>
                 <property name="x">320</property>
-                <property name="y">145</property>
+                <property name="y">215</property>
               </packing>
             </child>
             <child>
@@ -664,7 +665,7 @@
               </widget>
               <packing>
                 <property name="x">240</property>
-                <property name="y">170</property>
+                <property name="y">235</property>
               </packing>
             </child>
             <child>
@@ -680,7 +681,7 @@
               </widget>
               <packing>
                 <property name="x">240</property>
-                <property name="y">195</property>
+                <property name="y">255</property>
               </packing>
             </child>
             <child>
@@ -696,7 +697,7 @@
               </widget>
               <packing>
                 <property name="x">320</property>
-                <property name="y">195</property>
+                <property name="y">255</property>
               </packing>
             </child>
             <child>
@@ -707,8 +708,8 @@
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
               </widget>
               <packing>
-                <property name="x">221</property>
-                <property name="y">217</property>
+                <property name="x">219</property>
+                <property name="y">274</property>
               </packing>
             </child>
             <child>
@@ -720,8 +721,8 @@
                 <property name="label" translatable="yes">Tech</property>
               </widget>
               <packing>
-                <property name="x">246</property>
-                <property name="y">238</property>
+                <property name="x">260</property>
+                <property name="y">293</property>
               </packing>
             </child>
             <child>
@@ -734,12 +735,12 @@
               </widget>
               <packing>
                 <property name="x">222</property>
-                <property name="y">260</property>
+                <property name="y">320</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkSpinButton" id="spinbutton1">
-                <property name="width_request">72</property>
+              <widget class="GtkSpinButton" id="spiTech0">
+                <property name="width_request">58</property>
                 <property name="height_request">20</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -747,8 +748,8 @@
                 <property name="adjustment">0 0 100000 1 10 10</property>
               </widget>
               <packing>
-                <property name="x">272</property>
-                <property name="y">260</property>
+                <property name="x">300</property>
+                <property name="y">320</property>
               </packing>
             </child>
             <child>
@@ -760,8 +761,8 @@
                 <property name="label" translatable="yes">Special</property>
               </widget>
               <packing>
-                <property name="x">225</property>
-                <property name="y">290</property>
+                <property name="x">224</property>
+                <property name="y">345</property>
               </packing>
             </child>
             <child>
@@ -775,7 +776,7 @@
               </widget>
               <packing>
                 <property name="x">235</property>
-                <property name="y">315</property>
+                <property name="y">365</property>
               </packing>
             </child>
             <child>
@@ -789,7 +790,7 @@
               </widget>
               <packing>
                 <property name="x">300</property>
-                <property name="y">315</property>
+                <property name="y">365</property>
               </packing>
             </child>
             <child>
@@ -803,7 +804,7 @@
               </widget>
               <packing>
                 <property name="x">235</property>
-                <property name="y">340</property>
+                <property name="y">390</property>
               </packing>
             </child>
             <child>
@@ -817,19 +818,19 @@
               </widget>
               <packing>
                 <property name="x">300</property>
-                <property name="y">340</property>
+                <property name="y">390</property>
               </packing>
             </child>
             <child>
               <widget class="GtkComboBox" id="comSystem">
                 <property name="width_request">160</property>
-                <property name="height_request">25</property>
+                <property name="height_request">23</property>
                 <property name="visible">True</property>
                 <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
               </widget>
               <packing>
                 <property name="x">12</property>
-                <property name="y">400</property>
+                <property name="y">465</property>
               </packing>
             </child>
             <child>
@@ -841,7 +842,7 @@
                 <property name="label" translatable="yes">System</property>
               </widget>
               <packing>
-                <property name="y">378</property>
+                <property name="y">440</property>
               </packing>
             </child>
             <child>
@@ -856,8 +857,8 @@
                 <property name="response_id">0</property>
               </widget>
               <packing>
-                <property name="x">190</property>
-                <property name="y">377</property>
+                <property name="x">189</property>
+                <property name="y">438</property>
               </packing>
             </child>
             <child>
@@ -869,8 +870,82 @@
                 <property name="label" translatable="yes">Class</property>
               </widget>
               <packing>
-                <property name="x">227</property>
-                <property name="y">60</property>
+                <property name="x">289</property>
+                <property name="y">20</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkImage" id="imaPlanet">
+                <property name="width_request">152</property>
+                <property name="height_request">122</property>
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="stock">gtk-missing-image</property>
+              </widget>
+              <packing>
+                <property name="x">260</property>
+                <property name="y">48</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkComboBox" id="comClass">
+                <property name="width_request">79</property>
+                <property name="height_request">33</property>
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </widget>
+              <packing>
+                <property name="x">341</property>
+                <property name="y">9</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label13">
+                <property name="width_request">101</property>
+                <property name="height_request">20</property>
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">GFX Space</property>
+              </widget>
+              <packing>
+                <property name="y">92</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkComboBox" id="comSpace">
+                <property name="width_request">163</property>
+                <property name="height_request">24</property>
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </widget>
+              <packing>
+                <property name="x">96</property>
+                <property name="y">89</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label14">
+                <property name="width_request">98</property>
+                <property name="height_request">20</property>
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+                <property name="label" translatable="yes">GFX Exterior</property>
+              </widget>
+              <packing>
+                <property name="x">10</property>
+                <property name="y">123</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkComboBox" id="comExterior">
+                <property name="width_request">154</property>
+                <property name="height_request">22</property>
+                <property name="visible">True</property>
+                <property name="events">GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
+              </widget>
+              <packing>
+                <property name="x">106</property>
+                <property name="y">120</property>
               </packing>
             </child>
           </widget>
@@ -883,4 +958,3 @@
     </child>
   </widget>
 </glade-interface>
-
diff --git a/utils/resedit/space.py b/utils/resedit/space.py
index 13039a2..a382860 100644
--- a/utils/resedit/space.py
+++ b/utils/resedit/space.py
@@ -17,6 +17,7 @@ class Space:
      self.glade = "space.glade"
      self.systemsXML = "../../dat/ssys.xml"
      self.planetsXML = "../../dat/planet.xml"
+     self.planet_gfx = "../../gfx/planet/"
      self.loadSystems(self.systemsXML)
      self.loadPlanets(self.planetsXML)
 
@@ -66,7 +67,7 @@ class Space:
         "butReset":["clicked", self.__space_reset],
         "butAddJump":["clicked", self.__jump_add],
         "butRmJump":["clicked", self.__jump_rm],
-        "butNew":["clicked", self.__new]
+        "butNew":["clicked", self.__snew]
     }
     for key, val in hooks.items():
       self.__swidget(key).connect(val[0], val[1])
@@ -99,6 +100,29 @@ class Space:
     self.__pwidget("winPlanets").show_all()
     self.cur_planet = ""
 
+    # Hooks.
+    hooks = {
+        "butNew":["clicked", self.__pnew],
+        "trePlanets":["button-release-event", self.__pupdate]
+    }
+    for key, val in hooks.items():
+      self.__pwidget(key).connect(val[0], val[1])
+
+    # Planet tree.
+    self.__create_trePlanets()
+
+    # Classes.
+    classes = [ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L",
+        "M", "O", "P", "Q", "R", "S", "T", "X", "Y", "Z", "0", "1"]
+    wgt = self.__pwidget("comClass")
+    combo = gtk.ListStore(str)
+    for a in classes:
+      node = combo.append(a)
+    cell = gtk.CellRendererText()
+    wgt.pack_start(cell, True)
+    wgt.add_attribute(cell, "text", 0)
+    wgt.set_model(combo)
+
     # ---------------------------------------------
     gtk.main()
 
@@ -119,6 +143,22 @@ class Space:
     col.add_attribute(cell, 'text', 0)
     wgt.set_model(self.tree_systems)
 
+  def __create_trePlanets(self):
+    # Population.
+    wgt = self.__pwidget("trePlanets")
+    self.tree_planets = gtk.TreeStore(str)
+    for planet in self.planets:
+      treenode = self.tree_planets.append(None, [planet])
+    col = gtk.TreeViewColumn('Planets')
+    cell = gtk.CellRendererText()
+    if wgt.get_column(0): 
+      wgt.remove_column(wgt.get_column(0))
+    wgt.append_column(col)
+    col.pack_start(cell, True)
+    col.add_attribute(cell, 'text', 0)
+    wgt.set_model(self.tree_planets)
+
+
   def __swidget(self,wgtname):
     """
     get a widget from the winSystems
@@ -180,6 +220,48 @@ class Space:
       return
     planet = self.planets[self.cur_planet]
 
+    dic = {
+        "inpName":self.cur_planet
+    }
+
+    for key, value in dic.items():
+      self.__pwidget(key).set_text(str(value))
+
+    # Class.
+    cls = planet["general"]["class"]
+    i = 0
+    wgt = self.__pwidget("comClass")
+    model = wgt.get_model()
+    for row in model:
+      if row[0] == cls:
+        wgt.set_active_iter(model.get_iter(i))
+      i = i + 1
+
+    # Tech.
+    try:
+      self.__pwidget("spiTech0").set_text(str(planet["general"]["tech"]["main"]))
+    except:
+      self.__pwidget("spiTech0").set_text(str(0))
+
+    # Services.
+    services = int(planet["general"]["services"])
+    serv = {
+        "cheLand":2**0,
+        "cheBasic":2**1,
+        "cheCommodity":2**2,
+        "cheOutfits":2**3,
+        "cheShipyard":2**4,
+    }
+
+    for s, m in serv.items():
+      if services & m > 0:
+        self.__pwidget(s).set_active(True)
+      else:
+        self.__pwidget(s).set_active(False)
+
+    self.__pwidget("imaPlanet").set_from_file(self.planet_gfx + "space/" +
+        planet["GFX"]["space"])
+
   def __sstore(self):
     sys_name = self.__swidget("inpName").get_text()
     if sys_name == "":
@@ -220,6 +302,43 @@ class Space:
     self.__sinpStore(system, "spiInterference", "general", "interference")
     self.__sinpStore(system, "spiAsteroids", "general", "asteroids")
 
+  def __pstore(self):
+    planet_name = self.__swidget("inpName").get_text()
+    if planet_name == "":
+      return
+    
+    if planet_name != self.cur_planet:
+      self.planets[planet_name] = self.planets[self.cur_planet]
+      model = self.__pwidget("trePlanets").get_model()
+
+      for i in model:
+        if i[0] == self.cur_planet:
+          i[0] = planet_name
+          break
+
+      del self.planets[self.cur_planet]
+      self.cur_planet = planet_name
+
+    try:
+      planet = self.planets[self.cur_planet]
+    except:
+      return
+
+    # Get the service.
+    services = 0
+    serv = {
+        "cheLand":2**0,
+        "cheBasic":2**1,
+        "cheCommodity":2**2,
+        "cheOutfits":2**3,
+        "cheShipyard":2**4
+    }
+
+    for s, m in serv.items():
+      if self.__pwidget(s).get_active():
+        services = services + m
+    planet["general"]["services"] = services
+
   def __sinpStore(self, system, wgt, tag, minortag=None):
     text = self.__swidget(wgt).get_text()
     if minortag==None:
@@ -427,8 +546,8 @@ class Space:
       self.__supdate()
       self.__space_draw()
 
-  def __new(self, wgt=None, event=None):
-    name = "untitled"
+  def __snew(self, wgt=None, event=None):
+    name = "new system"
     gen = { "asteroids":0, "interference":0, "stars":100 }
     pos = { "x":0, "y":0 }
     new_ssys = { "general":gen, "pos":pos, "jumps":[], "fleets":{}, "planets":[] }
@@ -436,6 +555,16 @@ class Space:
     self.__create_treSystems()
     self.__selSys(name)
 
+  def __pnew(self, wgt=None, event=None):
+    name = "new planet"
+    gfx = { "space":"none.png" }
+    gen = { "class":"A", "services":0, "GFX":gfx }
+    pos = { "x":0, "y":0 }
+    new_planet = { "general":gen, "pos":pos }
+    self.planets[name] = new_planet
+    self.__create_trePlanets()
+    self.__selPlanet(name)
+
   def __selSys(self, system):
     i = 0
     tree = self.__swidget("treSystems")
diff --git a/utils/resedit/space.pyc b/utils/resedit/space.pyc
index f3fb02217d080e865740546d1ce89d81073836f9..91ca96603df3d08a25c59964aabe9762995a4003 100644
GIT binary patch
delta 6492
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
H+thynf&{8M

delta 3663
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
HnbQ9O<q)is