135 lines
3.7 KiB
Python
135 lines
3.7 KiB
Python
#!/usr/bin/env python
|
|
|
|
try:
|
|
import gtk,gtk.glade
|
|
import gobject
|
|
except:
|
|
print "You do not have python gtk bindings, or you're missing glade libs"
|
|
print "To use Lephisto's resedit you must install them"
|
|
print "http://pygtk.org/ "
|
|
raise SystemExit
|
|
|
|
import data
|
|
|
|
class space:
|
|
|
|
def __init__(self):
|
|
self.glade = "space.glade"
|
|
self.systemsXML = "../../dat/ssys.xml"
|
|
self.planetsXML = "../../dat/planet.xml"
|
|
self.loadSystems(self.systemsXML)
|
|
self.loadPlanets(self.planetsXML)
|
|
|
|
def loadSystems(self, xmlfile):
|
|
self.systems = data.load(xmlfile, "ssys", True, ["jumps","fleets","planets"])
|
|
|
|
|
|
def saveSystems(self, xmlfile):
|
|
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):
|
|
data.save("planet.xml", self.planets, "Planets", "planet", True,
|
|
{ "commodities":"commodity" })
|
|
|
|
def window(self):
|
|
"""
|
|
create the window
|
|
"""
|
|
# --------------- SYSTEMS --------------------
|
|
self.swtree = gtk.glade.XML(self.glade, "winSystems")
|
|
|
|
# Hook events and stuff.
|
|
self.__swidget("winSystems").connect("destroy", 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)
|
|
for system in self.systems: # Load the planets.
|
|
treenode = self.tree_systems.append(None, [system])
|
|
for planet in self.systems[system]['planets']:
|
|
self.tree_systems.append(treenode, [planet])
|
|
col = gtk.TreeViewColumn('Systems')
|
|
cell = gtk.CellRendererText()
|
|
self.__swidget("treSystems").append_column(col)
|
|
col.pack_start(cell, True)
|
|
col.add_attribute(cell, 'text', 0)
|
|
self.__swidget("treSystems").set_model(self.tree_systems)
|
|
|
|
# Display the window and such.
|
|
self.__swidget("winSystems").show_all()
|
|
|
|
# ---------------- PLANETS --------------------
|
|
|
|
# ---------------------------------------------
|
|
gtk.main()
|
|
|
|
|
|
def __swidget(self,wgtname):
|
|
"""
|
|
get a widget from the winSystems
|
|
"""
|
|
return self.swtree.get_widget(wgtname)
|
|
|
|
|
|
def __update(self, wgt=None, foo=None, bar=None):
|
|
"""
|
|
Update the window
|
|
"""
|
|
# Important thingies.
|
|
tree = self.__swidget("treSystems")
|
|
model = tree.get_model()
|
|
|
|
# Get system.
|
|
sel = model.iter_nth_child(None, foo[0])
|
|
sys_name = model.get_value( sel, 0 )
|
|
system = self.systems[sys_name]
|
|
|
|
# Load it all.
|
|
dic = {
|
|
"inpName":sys_name,
|
|
"spiInterference":system["general"]["interference"],
|
|
"spiAsteroids":system["general"]["asteroids"],
|
|
"spiStars":system["general"]["stars"],
|
|
"labPos":"%s,%s" % (system["pos"]["x"],system["pos"]["y"])
|
|
}
|
|
for key, value in dic.items():
|
|
self.__swidget(key).set_text(value)
|
|
|
|
# Load jumps.
|
|
|
|
jumps = gtk.ListStore(str)
|
|
for jump in system["jumps"]: # Load the planets.
|
|
treenode = jumps.append([jump])
|
|
col = gtk.TreeViewColumn('Jumps')
|
|
cell = gtk.CellRendererText()
|
|
wgt = self.__swidget("treJumps")
|
|
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(jumps)
|
|
|
|
def __done(self, widget=None, data=None):
|
|
"""
|
|
Window is done
|
|
"""
|
|
gtk.main_quit()
|
|
|
|
def debug(self):
|
|
print "SYSTEMS LOADED:"
|
|
print self.systems
|
|
print
|
|
print
|
|
print "PLANETS LOADED:"
|
|
print self.planets
|
|
|