Lephisto/utils/resedit/faction.py

85 lines
2.0 KiB
Python

#!/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 "-------------------------------"