Separated out the model code from the gui code
[mevemon] / package / src / ui / models.py
1 import gtk
2
3
4 class CharacterListModel(gtk.ListStore):
5     C_PORTRAIT, C_NAME = range(2)
6
7     def __init__(self, controller):
8         gtk.ListStore.__init__(self, gtk.gdk.Pixbuf, str)
9         self.controller = controller
10         # should we do this on initialization?
11         self.get_characters()
12
13     def get_characters(self):
14         self.clear()
15         
16         char_list = self.controller.get_characters()
17
18         for name, icon in char_list:
19             liter = self.append()
20             self.set(liter, self.C_PORTRAIT, self._set_pix(icon), self.C_NAME, name)
21
22     def _set_pix(self, filename):
23         pixbuf = gtk.gdk.pixbuf_new_from_file(filename)
24         return pixbuf
25
26
27 class CharacterSkillsModel(gtk.ListStore):
28     C_NAME, C_RANK, C_SKILLPOINTS, C_LEVEL = range(4)
29
30     SP = [0, 250, 1414, 8000, 45255, 256000]
31
32     def __init__(self, controller, charID):
33         gtk.ListStore.__init__(self, str, str, str, str)
34         self.controller = controller
35         self.charID = charID
36         self.get_skills()
37
38     def get_skills(self):
39         self.clear()
40         
41         self.sheet = self.controller.get_char_sheet(self.charID)
42         
43         skilltree = self.controller.get_skill_tree()
44
45         for g in skilltree.skillGroups:
46
47             skills_trained_in_this_group = False
48
49             for skill in g.skills:
50
51                 trained = self.sheet.skills.Get(skill.typeID, False)
52                 
53                 if trained:
54
55                     if not skills_trained_in_this_group:
56
57                         #TODO: add as a heading/category
58                         skills_trained_in_this_group = True
59                     
60                     # add row for this skill
61                     liter = self.append()
62                     self.set(liter, self.C_NAME, "%s" % skill.typeName,
63                                       self.C_RANK, "<small>(Rank %d)</small>" % skill.rank,
64                                       self.C_SKILLPOINTS, "SP: %d" % trained.skillpoints,
65                                       self.C_LEVEL, "Level %d" % trained.level)
66
67