diff --git a/utils/resedit/faction.py b/utils/resedit/faction.py new file mode 100644 index 0000000..e5b644d --- /dev/null +++ b/utils/resedit/faction.py @@ -0,0 +1,84 @@ +#!/usr/bin/env python + +import gtk, gtk.glade +import gobject + +import data + +class Factions: + def __init__(self): + self.faction = {} + self.factionsXML = "../../dat/faction.xml" + self.glade = "space.glade" + self.cur_faction = "" + + def loadFactions(self, xmlfile=None): + if xmlfile == None: + xmlFile = self.factionsXML + self.factions = data.load(xmlfile, "faction", True) + + def saveFactions(self, xmlfile=None): + """ + Needs to take into account alliances to be implemented properly. + """ + print "TODO" + + def data(self): + return self.factions + + def window(self): + self.wtree = gtk.glade.XML(self.glade, "winFactions") + + hooks = { + "treFactions":["button-release-event", self.__update] + } + for key, val in hooks.items(): + self.__widget(key).connect(val[0], val[1]) + + # List the factions. + self.__createTree() + + self.__widget("winFactions").show_all() + + def __widget(self, name): + return self.wtree.get_widget(name) + + def __createTree(self): + wgt = self.__widget("treFactions") + tree = gtk.TreeStore(str) + for faction in self.factions: # Load the factions. + treenode = tree.append(None, [faction]) + col = gtk.TreeViewColumn('Factions') + 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(tree) + + def __update(self, wgt=None, event=None): + self.cur_faction = self.__curFaction() + if self.cur_faction == "": + return + + dic = { + "entName":self.cur_faction + } + for key, value in dic.items(): + self.__widget(key).set_text(str(value)) + + def __curFaction(self): + tree = self.__widget("treFactions") + model = tree.get_model() + try: + iter = tree.get_selection().get_selected()[1] + except: + return "" + return model.get_value(iter, 0) + + def debug(self): + print "---FACTIONS--------------------" + print self.factions + print "-------------------------------" + diff --git a/utils/resedit/faction.pyc b/utils/resedit/faction.pyc new file mode 100644 index 0000000..42bf038 Binary files /dev/null and b/utils/resedit/faction.pyc differ diff --git a/utils/resedit/resedit.py b/utils/resedit/resedit.py index a924a15..059c9b1 100755 --- a/utils/resedit/resedit.py +++ b/utils/resedit/resedit.py @@ -1,10 +1,26 @@ #!/usr/bin/env python -import space +try: + import gtk, gtk.glade + import gobject +except: + print "You do not have python gtk bindings, or you're missin glade libs" + print "To use Lephisto's resedit you must install them" + print "http://pygtk.org/" + raise SystemExit + +import space, faction + +# Load the factions +factions = faction.Factions() +factions.loadFactions("../../dat/faction.xml") +factions.window() # Load the universe. -universe = space.Space() +universe = space.Space(factions.data()) universe.loadSystems("../../dat/ssys.xml") universe.loadPlanets("../../dat/planet.xml") universe.window() +gtk.main() + diff --git a/utils/resedit/space.glade b/utils/resedit/space.glade index cfeed96..00a132e 100644 --- a/utils/resedit/space.glade +++ b/utils/resedit/space.glade @@ -957,4 +957,97 @@ + + 400 + 150 + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 150 + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + True + + + False + True + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 72 + 20 + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Name + + + 34 + 17 + + + + + 100 + 20 + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + 108 + 17 + + + + + 62 + 37 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Save + 0 + + + 105 + 46 + + + + + 68 + 37 + True + True + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + New + 0 + + + 13 + 45 + + + + + True + True + + + + + diff --git a/utils/resedit/space.py b/utils/resedit/space.py index 945ab1c..c724e4e 100644 --- a/utils/resedit/space.py +++ b/utils/resedit/space.py @@ -1,25 +1,23 @@ #!/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 gtk,gtk.glade +import gobject import data class Space: - def __init__(self): + def __init__(self, factions=None): 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) + if factions==None: + self.factions = {} + else: + self.factions = factions def loadSystems(self, xmlfile): self.systems = data.load(xmlfile, "ssys", True, @@ -105,6 +103,7 @@ class Space: "butNew":["clicked", self.__pnew], "trePlanets":["button-release-event", self.__pupdate], "comSystem":["changed", self.__pnewSys], + "comFaction":["changed", self.__pnewFact], "butSave":["clicked", self.savePlanets] } for key, val in hooks.items(): @@ -118,15 +117,25 @@ class Space: "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) + for c in classes: + node = combo.append(c) + cell = gtk.CellRendererText() + wgt.pack_start(cell, True) + wgt.add_attribute(cell, 'text', 0) + wgt.set_model(combo) + + # Factions. + wgt = self.__pwidget("comFaction") + combo = gtk.ListStore(str) + combo.append(["None"]) + for f in self.factions.keys(): + node = combo.append([f]) cell = gtk.CellRendererText() wgt.pack_start(cell, True) wgt.add_attribute(cell, "text", 0) wgt.set_model(combo) # --------------------------------------------- - gtk.main() def __create_treSystems(self): # Populate the tree. @@ -239,6 +248,19 @@ class Space: wgt.set_active_iter(model.get_iter(i)) i = i + 1 + # Faction. + wgt = self.__pwidget("comFaction") + try: + fact = planet["general"]["faction"] + i = 0 + model = wgt.get_model() + for row in model: + if row[0] == fact: + wgt.set_active(i) + i = i + 1 + except: + wgt.set_active(0) # None. + # Tech. try: self.__pwidget("spiTech0").set_text(str(planet["general"]["tech"]["main"])) @@ -641,14 +663,34 @@ class Space: self.__supdate() self.__pupdate() + def __pnewFact(self, wgt=None, event=None): + combo = self.__pwidget("comFaction") + fact = combo.get_active_text() + planet = self.planets[self.cur_planet] + + if planet == "": + return + + if fact == "None": + try: + del planet["general"]["faction"] + except: + return + else: + planet["general"]["faction"] = fact + def debug(self): - print "SYSTEMS LOADED:" + print "---SYSTEMS------------------" print for name, sys in self.systems.items(): - print "SYSTEM: %s" % name + print " ---SYSTEM: %s-----------" % name print sys + print " ------------------------" print + print "----------------------------" print - print "PLANETS LOADED:" + print "---PLANETS------------------" print self.planets + print "----------------------------" + print diff --git a/utils/resedit/space.pyc b/utils/resedit/space.pyc index 20aa644..5fbc6f2 100644 Binary files a/utils/resedit/space.pyc and b/utils/resedit/space.pyc differ