From 87514e63a7367e228565ff10adb2bf22878f39c2 Mon Sep 17 00:00:00 2001
From: Allanis <allanis@saracraft.net>
Date: Fri, 21 Jun 2013 21:51:49 +0100
Subject: [PATCH] [Add] <resedit> You can modify planet commodities now.

---
 utils/resedit/commodity.py | 22 +++++++++++
 utils/resedit/resedit.py   | 18 ++++++---
 utils/resedit/space.py     | 77 +++++++++++++++++++++++++++++++++-----
 3 files changed, 101 insertions(+), 16 deletions(-)
 create mode 100644 utils/resedit/commodity.py

diff --git a/utils/resedit/commodity.py b/utils/resedit/commodity.py
new file mode 100644
index 0000000..0b77824
--- /dev/null
+++ b/utils/resedit/commodity.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+
+import data
+
+class Commodities:
+  def __init__(self):
+    self.commodities = {}
+    self.commoditiesXML = "../../dat/commodity.xml"
+
+  def loadCommodities(self, xmlfile=None):
+    if xmlfile == None:
+      xmlFile = self.commoditiesXML
+    self.commodities = data.load(xmlfile, "commodity", True)
+
+  def data(self):
+    return self.commodities
+  
+  def debug(self):
+    print "---Commodities--------------------"
+    print self.commodities
+    print "----------------------------------"
+
diff --git a/utils/resedit/resedit.py b/utils/resedit/resedit.py
index ac98270..a5e1b70 100755
--- a/utils/resedit/resedit.py
+++ b/utils/resedit/resedit.py
@@ -9,20 +9,26 @@ except:
   print "http://pygtk.org/"
   raise SystemExit
 
-import space, faction, fleet
+import space, faction, fleet, commodity
+
+path = "../../dat/"
 
 # Load the factions
 factions = faction.Factions()
-factions.loadFactions("../../dat/faction.xml")
+factions.loadFactions(path+"faction.xml")
 
 # Load the fleets.
 fleets = fleet.Fleets()
-fleets.loadFleets("../../dat/fleet.xml")
+fleets.loadFleets(path+"fleet.xml")
+
+# Load the commodities.
+commodities = commodity.Commodities()
+commodities.loadCommodities(path+"commodity.xml")
 
 # Load the universe.
-universe = space.Space(factions.data(), fleets.data())
-universe.loadSystems("../../dat/ssys.xml")
-universe.loadPlanets("../../dat/planet.xml")
+universe = space.Space(factions.data(), fleets.data(), commodities.data())
+universe.loadSystems(path+"ssys.xml")
+universe.loadPlanets(path+"planet.xml")
 
 # Load the editor interface.
 # Functions.
diff --git a/utils/resedit/space.py b/utils/resedit/space.py
index 6a304e4..8d9a348 100644
--- a/utils/resedit/space.py
+++ b/utils/resedit/space.py
@@ -7,7 +7,7 @@ import data
 
 class Space:
 
-  def __init__(self, factions=None, fleets=None):
+  def __init__(self, factions=None, fleets=None, commodities=None):
      self.space_glade   = "space.glade"
      self.planet_glade  = "planets.glade"
      self.systemsXML    = "../../dat/ssys.xml"
@@ -15,14 +15,9 @@ class Space:
      self.planet_gfx    = "../../gfx/planet/"
      self.loadSystems(self.systemsXML)
      self.loadPlanets(self.planetsXML)
-     if factions==None:
-       self.factions = {}
-     else:
-       self.factions = factions
-     if fleets==None:
-       self.fleets = {}
-     else:
-       self.fleets = fleets
+     self.factions = {} if factions is None else factions
+     self.fleets = {} if fleets is None else fleets
+     self.commodities = {} if commodities is None else commodities
 
      self.swtree = None
      self.pwtree = None
@@ -136,7 +131,9 @@ class Space:
         "trePlanets":["button-release-event", self.__pupdate],
         "comSystem":["changed", self.__pnewSys],
         "comFaction":["changed", self.__pnewFact],
-        "butSave":["clicked", self.savePlanets]
+        "butSave":["clicked", self.savePlanets],
+        "butComAdd":["clicked", self.__commodity_add],
+        "butComRm":["clicked", self.__commodity_rm]
     }
     for key, val in hooks.items():
       self.__pwidget(key).connect(val[0], val[1])
@@ -169,6 +166,17 @@ class Space:
     wgt.set_model(combo)
     wgt.set_active(0)
 
+    # Commodities.
+    wgt = self.__pwidget("comCommodities")
+    combo.append(["None"])
+    for c in self.commodities.keys():
+      node = combo.append([c])
+    cell = gtk.CellRendererText()
+    wgt.pack_start(cell, True)
+    wgt.add_attribute(cell, 'text', 0)
+    wgt.set_model(combo)
+    wgt.set_active(0)
+
   def windowPlanetClose(self):
     wgt = self.__pwidget("winPlanets")
     if wgt != None:
@@ -206,6 +214,23 @@ class Space:
     col.add_attribute(cell, 'text', 0)
     wgt.set_model(self.tree_planets)
 
+  def __create_treCommodities(self):
+    # Treeview.
+    wgt = self.__pwdiget("treCommodities")
+    self.tree_commodities = gtk.TreeStore(str)
+    try:
+      for commodity in self.planets[self.cur_planet]["general"]["commodities"]:
+        treenode = self.tree_commodities.append(None, [commodity])
+    except:
+      commodity = None
+    col = gtk.TreeViewColumn('Commodities')
+    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_commodities)
 
   def __swidget(self,wgtname):
     """
@@ -360,6 +385,9 @@ class Space:
         wgt.set_active_iter(combo.get_iter(i))
       i = i + 1
 
+    # Commodities.
+    self.__create_treCommodities()
+  
   def __sstore(self):
     sys_name = self.__swidget("inpName").get_text()
     if sys_name == "":
@@ -684,6 +712,35 @@ class Space:
           return
       i = i+1
 
+  """
+  Add or remove a commodity from a planet.
+  """
+  def __comodity_sel(self):
+    tree = self.__pwidget("treCommodities")
+    model = tree.get_model()
+    try:
+      iter = tree.get_selection().get_selected()[1]
+    except:
+      return ""
+    return model.get_value(iter, 0)
+
+  def __commodity_add(self, wgt=None, event=None):
+    commodity = self.__pwidget("comCommodities").get_active_text()
+    if commodity != "None" and self.cur_planet != "":
+      planet = self.planets[self.cur_planet]
+      try:
+        planet["general"]["commodities"].append(commodity)
+        data.uniq(planet["general"]["commodities"])
+      except:
+        planet["general"]["commodities"] = [commodity]
+      self.__pupdate()
+
+  def __commodity_rm(self, wgt=None, event=None):
+    commodity = self.__commodity_sel()
+    if commodity != "":
+      self.planets[self.cur_planet]["general"]["commodities"].remove(commodity)
+      self.__pupdate()
+
   """
   Create a new star system.
   """