From 8fd0e73e662e36f82d4973bb541b76f79e1a257d Mon Sep 17 00:00:00 2001 From: Allanis Date: Fri, 19 Apr 2013 19:56:45 +0100 Subject: [PATCH] [Add] resedit: Faction editor and support for planet factions. --- utils/resedit/faction.py | 84 ++++++++++++++++++++++++++++++++++ utils/resedit/faction.pyc | Bin 0 -> 3814 bytes utils/resedit/resedit.py | 20 +++++++- utils/resedit/space.glade | 93 ++++++++++++++++++++++++++++++++++++++ utils/resedit/space.py | 72 +++++++++++++++++++++++------ utils/resedit/space.pyc | Bin 19958 -> 20716 bytes 6 files changed, 252 insertions(+), 17 deletions(-) create mode 100644 utils/resedit/faction.py create mode 100644 utils/resedit/faction.pyc 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 0000000000000000000000000000000000000000..42bf0389df3f6691f56e79cd38c130815a85b52a GIT binary patch literal 3814 zcmcInTW=dh6rNdMVkb^hR4#QZz(S(3gc5^5<$iN8KJkRa&*JCs1K|74*iK5{Xt1;6GnYN*%y+(XW>WcUd2#oT!=EBG{Z#P#6`t}D znizjtrAqD2Wqn2V)UG#MQ&GDW6{A~KaYemQ>O!escG1ylt6PJvS$n3kT)S;10pSGrVE=> zrmmo0(x%cad<7HkgOLzS2phKi=vz=^OI$3!$IxO2pT041*|B-Yh6kpTWRSur$|sra zAWlh`MMkFgFgY5hW@IvJ;?B6p$EHY6*F=c}9~endR)Tss@s__s_LD`GO1`)>xx9o~^21J+k*)xH_z>Gf!P$dO@8bzpJXvpPFhz zsXlzDcDU~bU)7XQe_#*Gn=&Lk=jQv8&&NqN!?PrydlPH(Y_%|{2}`qTju2{DXp1@U zC_AV83}^P7&&C5cqG=0%74!vC-J~oNtYE^>=dmLXIBA8!021DVj3@VGK^6SGE6hY)l`0A{4us(6 zRdv`^JA4mEpHTL^CTfJ7=isrh5=RwO7Qab%@ufkGYt(G6TT*982lVkXY^k%lvdc^( z>EB=5$-u$+wfbwZ|BKB2OsAW{Bh}$IEbYh)rendl<n7BGmD6kT6x5R0SFJE_mpUv5c$hmus;yOiEx^EsOh zG?%dw>A(J`Al045 + + 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 20aa644ad0684f6578a248efc2201b3a465426b8..5fbc6f21f9a2adf8b970d29a73d3a66bc31bcf95 100644 GIT binary patch delta 6449 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 JFV9op`5!mgL4N=M