annotate orpg/gametree/nodehandlers/StarWarsd20.py @ 33:6f460a73989e ornery-orc

Traipse 'OpenRPG' {100503-02} Traipse is a distribution of OpenRPG that is designed to be easy to setup and go. Traipse also makes it easy for developers to work on code without fear of sacrifice. 'Ornery-Orc' continues the trend of 'Grumpy' and adds fixes to the code. 'Ornery-Orc's main goal is to offer more advanced features and enhance the productivity of the user. Update Summary (Patch-2) New Features: New Namespace method with two new syntaxes New Namespace Internal is context sensitive, always! New Namespace External is 'as narrow as you make it' New Namespace FutureCheck helps ensure you don't receive an incorrect node New Namespace 2.0 documentation in the User Manual New Namespace plugin, Allows Traipse users to use the Standard syntax !@ :: @! New Mini Library with minis from Devin Knight New PluginDB access for URL2Link plugin New to Forms, they now show their content in Design Mode New to Update Manager, checks Repo for updates on software start New to Mini Lib node, change title in design mode New to Game Tree, never lose a node, appends a number to the end of corrupted trees New to Server GUI, Traipse Suite's Debug Console New Warhammer PC Sheet Updates: Update to White Board layer, uses a pencil image for color button Update to Grid Layer, uses a grid image for color button Update to Chat Window, size of drop down menus Update to default lobby message Update to template Text node Update to 4e PC Sheet node Update to how display names are acquired Update to Server, added some 'Pious' technology Update to features node Fixes: Fix to Server GUI startup errors Fix to Server GUI Rooms tab updating Fix to Chat and Settings if non existant die roller is picked Fix to Dieroller and .open() used with .vs(). Successes are correctly calculated Fix to Alias Lib's Export to Tree, Open, Save features Fix to alias node, now works properly Fix to Splitter node, minor GUI cleanup Fix to Backgrounds not loading through remote loader Fix to Node name errors Fix to rolling dice in chat Whispers Fix to Splitters Sizing issues Fix to URL2Link plugin, modified regex compilation should remove memory leak Fix to mapy.py, a roll back due to zoomed grid issues Fix to whiteboard_handler, Circles work by you clicking the center of the circle Fix to Servers parse_incoming_dom which was outdated and did not respect XML Fix to a broken link in the server welcome message Fix to InterParse and logger requiring traceback Fix to Update Manager Status Bar Fix to failed image and erroneous pop up Fix to Mini Lib node that was preventing use Fix to plugins that parce dice but did not call InterParse Fix to nodes for name changing by double click Fix to Game Tree, node ordering on drag and drop corrected Fix to Game Tree, corrupted error message was not showing Fix to Update Manager, checks for internet connection Fix to Update Manager, Auto Update corrections Fix to Server GUI's broadcast, room, player messaging Daily-01: Figured out, this time, why the version file is copied. because of the linux .py~ files. Daily-02: Incomplete feature node updates, sorry. Should be a complete transition after this. Files in the update: Currently selected branch: ornery-orc Author: sirebral Files Modified (in update): data/tips.txt images/draw.png images/grid.png orpg/chat/chatwnd.py orpg/chat/commands.py orpg/dieroller/base.py orpg/dieroller/rollers/std.py orpg/gametree/gametree.py orpg/gametree/nodehandlers/chatmacro.py orpg/gametree/nodehandlers/containers.py orpg/gametree/nodehandlers/core.py~ orpg/gametree/nodehandlers/forms.py orpg/gametree/nodehandlers/minilib.py orpg/gametree/nodehandlers/minilib.py~ orpg/gametree/nodehandlers/rpg_grid.py orpg/main.py orpg/mapper/background.py orpg/mapper/grid_handler.py orpg/mapper/map.py orpg/mapper/whiteboard_handler.py orpg/networking/mplay_server.py orpg/networking/mplay_server_gui.py orpg/orpg_version.py orpg/pluginhandler.py orpg/templates/default_LobbyMessage.html orpg/templates/feature.xml orpg/templates/nodes/4e_char_sheet.xml orpg/templates/nodes/Warhammerv2CS2-Traipse.xml orpg/templates/nodes/split.xml orpg/templates/nodes/textctrl.xml orpg/tools/InterParse.py orpg/tools/aliaslib.py orpg/tools/orpg_log.py orpg/tools/orpg_settings.py plugins/xxhiddendice.py plugins/xxsimpleinit.py plugins/xxstdnamespace.py plugins/xxurl2link.py readme.txt rollback.py start_developer.py start_noupdate.py upmana/updatemana.py
author sirebral
date Mon, 03 May 2010 03:47:00 -0500
parents ff154cf3350c
children
rev   line source
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1 # Copyright (C) 2000-2001 The OpenRPG Project
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
2 #
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
3 # openrpg-dev@lists.sourceforge.net
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
4 #
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
5 # This program is free software; you can redistribute it and/or modify
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
6 # it under the terms of the GNU General Public License as published by
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
7 # the Free Software Foundation; either version 2 of the License, or
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
8 # (at your option) any later version.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
9 #
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
10 # This program is distributed in the hope that it will be useful,
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
13 # GNU General Public License for more details.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
14 #
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
15 # You should have received a copy of the GNU General Public License
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
16 # along with this program; if not, write to the Free Software
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
17 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
18 # --
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
19 #
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
20 # File: StarWarsd20.py
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
21 # Author: Chris Davis; Mark Twombley
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
22 # Maintainer: Mark Twombley
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
23 # Version:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
24 # $Id: StarWarsd20.py,v Traipse 'Ornery-Orc' prof.ebral Exp $
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
25 #
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
26 # Description: The file contains code for the StarWarsd20 nodehanlers
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
27 #
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
28
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
29 __version__ = "$Id: StarWarsd20.py,v Traipse 'Ornery-Orc' prof.ebral Exp $"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
30
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
31 from core import *
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
32 from containers import *
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
33 from orpg.tools.orpg_log import debug
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
34 from xml.etree.ElementTree import parse
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
35
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
36 SWD20_EXPORT = wx.NewId()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
37 ############################
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
38 ## StarWarsd20 character node handler
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
39 ############################
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
40 ##The whole look and easy of use redone by Digitalxero
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
41 class container_handler(node_handler):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
42 """ should not be used! only a base class!
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
43 <nodehandler name='?' module='core' class='container_handler' />
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
44 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
45 def __init__(self,xml_dom,tree_node):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
46 node_handler.__init__(self,xml_dom,tree_node)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
47 self.load_children()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
48
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
49 def load_children(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
50 children = self.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
51 for c in children:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
52 self.tree.load_xml(c,self.mytree_node)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
53
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
54 def on_drop(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
55 drag_obj = self.tree.drag_obj
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
56 #if self.is_my_child(self.mytree_node,drag_obj.mytree_node):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
57 # return
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
58 if drag_obj == self:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
59 return
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
60 opt = wx.MessageBox("Add node as child?","Container Node",wx.YES_NO|wx.CANCEL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
61 if opt == wx.YES:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
62 xml_dom = self.tree.drag_obj.delete()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
63 xml_dom = self.xml.insertBefore(xml_dom,None)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
64 self.tree.load_xml(xml_dom, self.mytree_node)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
65 self.tree.Expand(self.mytree_node)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
66 elif opt == wx.NO:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
67 node_handler.on_drop(self,evt)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
68
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
69 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
70 cookie = 0
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
71 html_str = "<table border=\"1\" ><tr><td>"
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
72 html_str += "<b>"+self.xml.get("name") + "</b>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
73 html_str += "</td></tr>\n"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
74 html_str += "<tr><td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
75 max = tree.GetChildrenCount(handler.mytree_node)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
76 try: (child,cookie)=self.tree.GetFirstChild(self.mytree_node,cookie)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
77 except: (child,cookie)=self.tree.GetFirstChild(self.mytree_node)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
78 obj = self.tree.GetPyData(child)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
79 for m in xrange(max):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
80 html_str += "<p>" + obj.tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
81 if m < max-1:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
82 child = self.tree.GetNextSibling(child)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
83 obj = self.tree.GetPyData(child)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
84 html_str += "</td></tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
85 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
86
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
87 def get_size_constraint(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
88 return 1
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
89
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
90 def get_char_name( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
91 return self.child_handlers['general'].get_char_name()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
92
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
93 def get_char_lvl( self, attr ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
94 return self.child_handlers['classes'].get_char_lvl(attr)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
95
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
96
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
97 class SWd20char_handler(node_handler):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
98 """ Node handler for a SWd20 charactor
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
99 <nodehandler name='?' module='StarWarsd20' class='SWd20char_handler' />
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
100 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
101 def __init__(self,xml_dom,tree_node):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
102 node_handler.__init__(self,xml_dom,tree_node)
18
97265586402b Traipse 'OpenRPG' {090827-00}
sirebral
parents: 17
diff changeset
103 self.frame = component.get('frame')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
104 self.child_handlers = {}
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
105 self.new_child_handler('howtouse','HowTO use this tool',SWd20howto,'note')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
106 self.new_child_handler('general','General Information',SWd20general,'gear')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
107 self.new_child_handler('inventory','Money and Inventory',SWd20inventory,'money')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
108 self.new_child_handler('abilities','Abilities Scores',SWd20ability,'gear')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
109 self.new_child_handler('classes','Classes',SWd20classes,'knight')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
110 self.new_child_handler('saves','Saves',SWd20saves,'skull')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
111 self.new_child_handler('skills','Skills',SWd20skill,'book')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
112 self.new_child_handler('feats','Feats',SWd20feats,'book')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
113 self.new_child_handler('wp','Wound Points',SWd20hp,'gear')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
114 self.new_child_handler('vp','Vitality Points',SWd20vp,'gear')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
115 self.new_child_handler('attacks','Attacks',SWd20attacks,'spears')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
116 self.new_child_handler('ac','Armor',SWd20armor,'spears')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
117 self.myeditor = None
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
118
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
119
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
120 def on_version(self,old_version):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
121 node_handler.on_version(self,old_version)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
122 if old_version == "":
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
123 tree = parse(dir_struct["nodes"]+"StarWars_d20character.xml")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
124 xml_dom = tree.getroot()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
125 ## add new nodes
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
126 for tag in ("howtouse","inventory","powers","divine","pp"):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
127 node_list = xml_dom.findall(tag)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
128 self.xml.append(node_list[0])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
129
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
130 ## add new atts
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
131 melee_attack = self.xml.findall('melee')[0]
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
132 melee_attack.set("second","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
133 melee_attack.set("third","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
134 melee_attack.set("forth","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
135 melee_attack.set("fifth","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
136 melee_attack.set("sixth","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
137 range_attack = self.xml.findall('ranged')[0]
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
138 range_attack.set("second","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
139 range_attack.set("third","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
140 range_attack.set("forth","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
141 range_attack.set("fifth","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
142 range_attack.set("sixth","0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
143 gen_list = self.xml.findall('general')[0]
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
144
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
145 for tag in ("currentxp","xptolevel"):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
146 node_list = xml_dom.findall(tag)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
147 gen_list.append(node_list[0])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
148 print old_version
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
149
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
150
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
151 def get_char_name( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
152 return self.child_handlers['general'].get_char_name()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
153
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
154 def get_char_lvl( self, attr ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
155 return self.child_handlers['classes'].get_char_lvl(attr)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
156
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
157
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
158 def new_child_handler(self,tag,text,handler_class,icon='gear'):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
159 node_list = self.xml.findall(tag)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
160 tree = self.tree
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
161 i = self.tree.icons[icon]
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
162 new_tree_node = tree.AppendItem(self.mytree_node,text,i,i)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
163 handler = handler_class(node_list[0],new_tree_node,self)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
164 tree.SetPyData(new_tree_node,handler)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
165 self.child_handlers[tag] = handler
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
166
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
167 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
168 return tabbed_panel(parent,self,1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
169
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
170
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
171 def get_use_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
172 return tabbed_panel(parent,self,2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
173
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
174 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
175 html_str = "<table><tr><td colspan=2 >"+self.child_handlers['general'].tohtml()+"</td></tr>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
176 html_str += "<tr><td width='50%' valign=top >"+self.child_handlers['abilities'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
177 html_str += "<P>" + self.child_handlers['saves'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
178 html_str += "<P>" + self.child_handlers['attacks'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
179 html_str += "<P>" + self.child_handlers['ac'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
180 html_str += "<P>" + self.child_handlers['feats'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
181 html_str += "<P>" + self.child_handlers['inventory'].tohtml() +"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
182 html_str += "<td width='50%' valign=top >"+self.child_handlers['classes'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
183 html_str += "<P>" + self.child_handlers['wp'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
184 html_str += "<P>" + self.child_handlers['vp'].tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
185 html_str += "<P>" + self.child_handlers['skills'].tohtml() +"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
186 html_str += "</tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
187 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
188
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
189 def about(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
190 """html_str = "<img src='" + dir_struct["icon"]+'d20_logo.gif' "><br /><b>d20 Character Tool v0.7 beta</b>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
191 html_str += "<br />by Chris Davis<br />chris@rpgarchive.com"
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
192 return html_str"""
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
193 text = 'd20 Character Tool 0.7 beta\n'
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
194 text += 'by Chris Davis chris@rpgarchive.com'
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
195 return text
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
196
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
197 def get_char_name( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
198 return self.child_handlers['general'].get_char_name()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
199 def get_armor_class( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
200 return self.child_handlers['ac'].get_armor_class()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
201 def get_max_hp( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
202 return self.child_handlers['wp'].get_max_hp()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
203 def get_current_hp( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
204 return self.child_handlers['wp'].get_current_hp()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
205 def get_max_vp( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
206 return self.child_handlers['vp'].get_max_vp()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
207 def get_current_vp( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
208 return self.child_handlers['vp'].get_current_vp()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
209 def get_char_lvl( self, attr ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
210 return self.child_handlers['classes'].get_char_lvl(attr)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
211
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
212 """ Removed to use the supplied Tabbed Panel
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
213 class tabbed_panel(wx.Notebook):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
214 def __init__(self, parent, handler, mode):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
215 wx.Notebook.__init__(self, parent, -1, size=(1200,800))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
216 self.handler = handler
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
217 self.parent = parent
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
218 tree = self.handler.tree
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
219 max = tree.GetChildrenCount(handler.mytree_node, False)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
220 cookie = 0
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
221 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
222 (child,cookie)=tree.GetFirstChild(handler.mytree_node,cookie)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
223 except: # If this happens we probably have a newer version of wxPython
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
224 (child,cookie)=tree.GetFirstChild(handler.mytree_node)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
225 obj = tree.GetPyData(child)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
226 for m in xrange(max):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
227
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
228 if mode == 1: panel = obj.get_design_panel(self)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
229 else: panel = obj.get_use_panel(self)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
230 name = obj.xml.get("name")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
231 if panel: self.AddPage(panel,name)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
232 if m < max-1:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
233 child = tree.GetNextSibling(child)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
234 obj = tree.GetPyData(child)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
235
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
236 def about(self):
18
97265586402b Traipse 'OpenRPG' {090827-00}
sirebral
parents: 17
diff changeset
237 html_str = "<img src='" + dir_struct["icon"]+'d20_logo.gif' "><br /><b>d20 Character Tool v0.7 beta</b>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
238 html_str += "<br />by Chris Davis<br />chris@rpgarchive.com"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
239 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
240
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
241 def get_char_name( self ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
242 return self.child_handlers['general'].get_char_name()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
243
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
244 def get_char_lvl( self, attr ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
245 return self.child_handlers['classes'].get_char_lvl(attr)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
246 """
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
247
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
248 class SWd20_char_child(node_handler):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
249 """ Node Handler for skill. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
250 created by SWd20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
251 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
252 def __init__(self, xml_dom, tree_node, parent):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
253 node_handler.__init__(self, xml_dom, tree_node)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
254 self.char_hander = parent
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
255 self.drag = False
18
97265586402b Traipse 'OpenRPG' {090827-00}
sirebral
parents: 17
diff changeset
256 self.frame = component.get('frame')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
257 self.myeditor = None
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
258
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
259 def on_drop(self, evt):
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
260 pass
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
261
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
262 def on_rclick(self, evt):
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
263 pass
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
264
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
265 def on_ldclick(self, evt):
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
266 return
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
267
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
268 def on_html(self, evt):
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
269 html_str = self.tohtml()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
270 wnd = http_html_window(self.frame.note,-1)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
271 wnd.title = self.xml.get('name')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
272 self.frame.add_panel(wnd)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
273 wnd.SetPage(html_str)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
274
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
275 def get_design_panel(self, parent):
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
276 pass
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
277
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
278 def get_use_panel(self, parent):
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
279 return self.get_design_panel(parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
280
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
281 def delete(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
282 pass
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
283
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
284
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
285 class SWd20skill(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
286 """ Node Handler for skill. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
287 created by SWd20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
288 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
289 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
290 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
291 tree = self.tree
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
292 icons = self.tree.icons
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
293 node_list = self.xml.findall('skill')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
294 self.skills={}
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
295 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
296 name = n.get('name')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
297 self.skills[name] = n
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
298 new_tree_node = tree.AppendItem(self.mytree_node,name,icons['gear'],icons['gear'])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
299 tree.SetPyData(new_tree_node,self)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
300
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
301 def get_mod(self,name):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
302 skill = self.skills[name]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
303 stat = skill.get('stat')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
304 ac = int(skill.get('armorcheck'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
305 if ac:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
306 ac = self.char_hander.child_handlers['ac'].get_check_pen()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
307 stat_mod = self.char_hander.child_handlers['abilities'].get_mod(stat)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
308 rank = int(skill.get('rank'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
309 misc = int(skill.get('misc'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
310 total = stat_mod + rank + misc + ac
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
311 return total
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
312
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
313 def on_rclick(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
314 #updated with code for untrained use check
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
315 item = self.tree.GetSelection()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
316 name = self.tree.GetItemText(item)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
317 skill = self.skills[name]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
318 rank = int(skill.get('rank'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
319 untrained = int(skill.get('untrained'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
320 chat = self.chat
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
321 if item == self.mytree_node:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
322 SWd20_char_child.on_ldclick(self,evt)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
323 else:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
324 if rank == 0 and untrained == 0: chat.Post("Can't use untrained!",True,True)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
325 else:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
326 mod = self.get_mod(name)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
327 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
328 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
329 txt = '%s Skill Check: [1d20%s%s]' % (name, mod1, mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
330 chat.ParsePost(txt,True,True)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
331
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
332 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
333 wnd = outline_panel(parent,self,skill_grid,"Skills")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
334 wnd.title = "Skills (edit)"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
335 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
336
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
337 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
338 html_str = """<table border='1' width=100% ><tr BGCOLOR=#E9E9E9 ><th width='30%'>Skill</th><th>Key</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
339 <th>Rank</th><th>Abil</th><th>Misc</th><th>Total</th></tr>"""
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
340 node_list = self.xml.findall('skill')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
341 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
342 name = n.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
343 stat = n.get('stat')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
344 rank = n.get('rank')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
345 html_str = html_str + "<tr ALIGN='center'><td>"+name+"</td><td>"+stat+"</td><td>"+rank+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
346 stat_mod = str(self.char_hander.child_handlers['abilities'].get_mod(stat))
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
347 misc = n.get('misc')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
348 mod = str(self.get_mod(name))
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
349 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
350 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
351 html_str = html_str + "<td>"+stat_mod+"</td><td>"+misc+'</td><td>%s%s</td></tr>' % (mod1, mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
352 html_str = html_str + "</table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
353 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
354
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
355
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
356 class SWd20ability(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
357 """ Node Handler for ability. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
358 created by SWd20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
359 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
360 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
361 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
362 self.abilities = {}
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
363 node_list = self.xml.findall('stat')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
364 tree = self.tree
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
365 icons = tree.icons
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
366 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
367 name = n.get('abbr')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
368 self.abilities[name] = n
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
369 new_tree_node = tree.AppendItem( self.mytree_node, name, icons['gear'], icons['gear'] )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
370 tree.SetPyData( new_tree_node, self )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
371
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
372 def on_rclick( self, evt ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
373 item = self.tree.GetSelection()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
374 name = self.tree.GetItemText( item )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
375 if item == self.mytree_node:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
376 SWd20_char_child.on_ldclick( self, evt )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
377 else:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
378 mod = self.get_mod( name )
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
379 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
380 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
381 chat = self.chat
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
382 txt = '%s check: [1d20%s%s]' % ( name, mod1, mod )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
383 chat.ParsePost( txt, True, True )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
384
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
385 def get_mod(self,abbr):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
386 score = int(self.abilities[abbr].get('base'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
387 mod = (score - 10) / 2
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
388 return mod
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
389
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
390 def set_score(self,abbr,score):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
391 if score >= 0:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
392 self.abilities[abbr].set("base",str(score))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
393
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
394 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
395 wnd = outline_panel(parent,self,abil_grid,"Abilities")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
396 wnd.title = "Abilities (edit)"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
397 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
398
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
399 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
400 html_str = """<table border='1' width=100%><tr BGCOLOR=#E9E9E9 ><th width='50%'>Ability</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
401 <th>Base</th><th>Modifier</th></tr>"""
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
402 node_list = self.xml.findall('stat')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
403 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
404 name = n.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
405 abbr = n.get('abbr')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
406 base = n.get('base')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
407 mod = str(self.get_mod(abbr))
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
408 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
409 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
410 html_str = html_str + "<tr ALIGN='center'><td>"+name+"</td><td>"+base+'</td><td>%s%s</td></tr>' % (mod1, mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
411 html_str = html_str + "</table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
412 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
413
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
414 class SWd20saves(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
415 """ Node Handler for saves. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
416 created by SWd20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
417 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
418 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
419 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
420 tree = self.tree
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
421 icons = self.tree.icons
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
422 node_list = self.xml.findall('save')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
423 self.saves={}
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
424 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
425 name = n.get('name')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
426 self.saves[name] = n
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
427 new_tree_node = tree.AppendItem(self.mytree_node,name,icons['gear'],icons['gear'])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
428 tree.SetPyData(new_tree_node,self)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
429
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
430 def get_mod(self,name):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
431 save = self.saves[name]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
432 stat = save.get('stat')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
433 stat_mod = self.char_hander.child_handlers['abilities'].get_mod(stat)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
434 base = int(save.get('base'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
435 miscmod = int(save.get('miscmod'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
436 total = stat_mod + base + miscmod
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
437 return total
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
438
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
439 def on_rclick(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
440 item = self.tree.GetSelection()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
441 name = self.tree.GetItemText(item)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
442 if item == self.mytree_node:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
443 SWd20_char_child.on_ldclick(self,evt)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
444 #wnd = save_grid(self.frame.note,self)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
445 #wnd.title = "Saves"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
446 #self.frame.add_panel(wnd)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
447 else:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
448 mod = self.get_mod(name)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
449 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
450 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
451 chat = self.chat
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
452 txt = '%s save: [1d20%s%s]' % (name, mod1, mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
453 chat.ParsePost( txt, True, True )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
454
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
455 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
456 wnd = outline_panel(parent,self,save_grid,"Saves")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
457 wnd.title = "Saves"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
458 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
459
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
460 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
461 html_str = """<table border='1' width=100% ><tr BGCOLOR=#E9E9E9 ><th width='30%'>Save</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
462 <th>Key</th><th>Base</th><th>Abil</th><th>Magic</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
463 <th>Misc</th><th>Total</th></tr>"""
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
464 node_list = self.xml.findall('save')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
465 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
466 name = n.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
467 stat = n.get('stat')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
468 base = n.get('base')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
469 html_str = html_str + "<tr ALIGN='center'><td>"+name+"</td><td>"+stat+"</td><td>"+base+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
470 stat_mod = str(self.char_hander.child_handlers['abilities'].get_mod(stat))
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
471 mag = n.get('magmod')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
472 misc = n.get('miscmod')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
473 mod = str(self.get_mod(name))
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
474 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
475 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
476 html_str = html_str + "<td>"+stat_mod+"</td><td>"+mag+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
477 html_str = html_str + '<td>'+misc+'</td><td>%s%s</td></tr>' % (mod1, mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
478 html_str = html_str + "</table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
479 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
480
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
481
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
482 class SWd20general(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
483 """ Node Handler for general information. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
484 created by SWd20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
485 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
486 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
487 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
488
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
489 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
490 wnd = outline_panel(parent,self,gen_grid,"General Information")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
491 wnd.title = "General Info"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
492 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
493
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
494 def tohtml(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
495 n_list = self.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
496 html_str = "<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th>General Information</th></tr><tr><td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
497 for n in n_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
498 html_str += "<B>"+n.tag.capitalize() +":</B> "
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
499 html_str += n.text + ", "
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
500 html_str = html_str[:len(html_str)-2] + "</td></tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
501 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
502
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
503 def on_name_change(self,name):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
504 self.char_hander.rename(name)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
505
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
506 def get_char_name( self ):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
507 node = self.xml.findall( 'name' )[0]
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
508 return node.text
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
509
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
510
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
511 class SWd20classes(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
512 """ Node Handler for classes. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
513 created by SWd20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
514 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
515 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
516 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
517
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
518 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
519 wnd = outline_panel(parent,self,class_panel,"Classes")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
520 wnd.title = "Classes"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
521 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
522
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
523 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
524 html_str = "<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th>Classes</th></tr><tr><td>"
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
525 n_list = self.xml.getchildren()
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
526 for n in n_list: html_str += n.get('name') + " ("+n.get('level')+"), "
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
527 html_str = html_str[:len(html_str)-2] + "</td></tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
528 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
529
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
530 def get_char_lvl( self, attr ):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
531 node_list = self.xml.findall('class')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
532 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
533 lvl = n.get('level')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
534 type = n.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
535 if attr == "level": return lvl
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
536 elif attr == "class": return type
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
537
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
538
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
539 class SWd20feats(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
540 """ Node Handler for classes. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
541 created by d20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
542 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
543 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
544 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
545
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
546 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
547 wnd = outline_panel(parent,self,feat_panel,"Feats")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
548 wnd.title = "Feats"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
549 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
550
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
551 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
552 html_str = "<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th>Feats</th></tr><tr><td>"
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
553 n_list = self.xml.getchildren()
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
554 for n in n_list: html_str += n.get('name')+ ", "
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
555 html_str = html_str[:len(html_str)-2] + "</td></tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
556 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
557
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
558 class SWd20howto(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
559 """ Node Handler for hit points. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
560 created by d20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
561 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
562 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
563 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
564
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
565 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
566 wnd = outline_panel(parent,self,howto_panel,"How To")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
567 wnd.title = "How To"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
568 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
569
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
570 class SWd20inventory(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
571 """ Node Handler for general information. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
572 created by d20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
573 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
574 def __init__(self, xml_dom, tree_node, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
575 SWd20_char_child.__init__(self, xml_dom, tree_node, parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
576
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
577 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
578 wnd = outline_panel(parent,self,inventory_grid,"Inventory")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
579 wnd.title = "General Info"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
580 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
581
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
582 def tohtml(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
583 n_list = self.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
584 html_str = "<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th>General Information</th></tr><tr><td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
585 for n in n_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
586 html_str += "<B>"+n.tag.capitalize() +":</B> "
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
587 html_str += n.text + "<br />"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
588 html_str = html_str[:len(html_str)-2] + "</td></tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
589 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
590
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
591 def on_name_change(self,name):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
592 self.char_hander.rename(name)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
593
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
594 def get_char_name( self ):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
595 node = self.xml.findall( 'name' )[0]
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
596 return node.text
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
597
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
598 class SWd20hp(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
599 """ Node Handler for hit points. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
600 created by d20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
601 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
602 def __init__(self,xml_dom,tree_node,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
603 SWd20_char_child.__init__(self,xml_dom,tree_node,parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
604
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
605 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
606 wnd = outline_panel(parent,self,hp_panel,"Wound Points")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
607 wnd.title = "Wound Points"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
608 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
609
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
610 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
611 html_str = "<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th colspan=4>Wound Points</th></tr>"
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
612 html_str += "<tr><th>Max:</th><td>"+self.xml.get('max')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
613 html_str += "<th>Current:</th><td>"+self.xml.get('current')+"</td>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
614 html_str += "</tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
615 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
616
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
617 def get_max_hp( self ):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
618 try: return eval( self.xml.get( 'max' ) )
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
619 except: return 0
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
620 def get_current_hp( self ):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
621 try: return eval( self.xml.get( 'current' ) )
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
622 except: return 0
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
623
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
624 class SWd20vp(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
625 """ Node Handler for hit points. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
626 created by d20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
627 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
628 def __init__(self,xml_dom,tree_node,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
629 SWd20_char_child.__init__(self,xml_dom,tree_node,parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
630
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
631 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
632 wnd = outline_panel(parent,self,vp_panel,"Vitality Points")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
633 wnd.title = "Vitality Points"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
634 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
635
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
636 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
637 html_str = "<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th colspan=4>Vitality Points</th></tr>"
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
638 html_str += "<tr><th>Max:</th><td>"+self.xml.get('max')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
639 html_str += "<th>Current:</th><td>"+self.xml.get('current')+"</td>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
640 html_str += "</tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
641 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
642
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
643 def get_max_vp( self ):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
644 try: return eval( self.xml.get( 'max' ) )
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
645 except: return 0
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
646 def get_current_vp( self ):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
647 try: return eval( self.xml.get( 'current' ) )
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
648 except: return 0
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
649
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
650 class SWd20attacks(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
651 """ Node Handler for attacks. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
652 created by d20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
653 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
654 def __init__(self,xml_dom,tree_node,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
655 SWd20_char_child.__init__(self,xml_dom,tree_node,parent)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
656 node_list = self.xml.findall('melee')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
657 self.melee = node_list[0]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
658 node_list = self.xml.findall('ranged')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
659 self.ranged = node_list[0]
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
660 self.refresh_weapons()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
661
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
662 def refresh_weapons(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
663 self.weapons = {}
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
664 tree = self.tree
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
665 icons = self.tree.icons
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
666 tree.CollapseAndReset(self.mytree_node)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
667 node_list = self.xml.findall('weapon')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
668 for n in node_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
669 name = n.get('name')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
670 new_tree_node = tree.AppendItem(self.mytree_node,name,icons['sword'],icons['sword'])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
671 tree.SetPyData(new_tree_node,self)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
672 self.weapons[name]=n
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
673
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
674 def get_mod(self,type='m'):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
675 (base, base2, base3, base4, base5, base6, stat_mod, misc) = self.get_attack_data(type)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
676 return base + misc + stat_mod
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
677
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
678 def get_attack_data(self,type='m'):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
679 if type=='m' or type=='0':
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
680 stat_mod = self.char_hander.child_handlers['abilities'].get_mod('Str')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
681 temp = self.melee
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
682 else:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
683 stat_mod = self.char_hander.child_handlers['abilities'].get_mod('Dex')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
684 temp = self.ranged
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
685 base = int(temp.get('base'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
686 base2 = int(temp.get('second'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
687 base3 = int(temp.get('third'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
688 base4 = int(temp.get('forth'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
689 base5 = int(temp.get('fifth'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
690 base6 = int(temp.get('sixth'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
691 misc = int(temp.get('misc'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
692 return (base, base2, base3, base4, base5, base6, stat_mod ,misc)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
693
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
694 def on_rclick(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
695 #removed the DnD specific code
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
696 item = self.tree.GetSelection()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
697 name = self.tree.GetItemText(item)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
698 if item == self.mytree_node:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
699 SWd20_char_child.on_ldclick(self,evt)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
700 #self.frame.add_panel(self.get_design_panel(self.frame.note))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
701 else:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
702 mod = int(self.weapons[name].get('mod'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
703 if self.weapons[name].get('range') == '0':
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
704 mod = mod + self.get_mod('m')
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
705 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
706 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
707 else:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
708 mod = mod + self.get_mod('r')
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
709 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
710 else: mod1 = ""
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
711 chat = self.chat
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
712 dmg = self.weapons[name].get('damage')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
713 lvl = self.get_char_lvl('level')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
714 cname = self.char_hander.get_char_name()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
715 txt = '%s %s Attack Roll: [1d20%s%s] ===> DMG: [%s%s%s]' % (cname, name, mod1, mod, dmg, mod1, mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
716 chat.ParsePost( txt, True, False )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
717 temp = self.melee
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
718 stat_mod = self.char_hander.child_handlers['abilities'].get_mod('Str')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
719
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
720 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
721 wnd = outline_panel(parent,self,attack_panel,"Attacks")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
722 wnd.title = "Attacks"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
723 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
724
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
725 def get_char_lvl( self, attr ):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
726 return self.char_hander.get_char_lvl(attr)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
727
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
728 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
729 melee = self.get_attack_data('m')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
730 ranged = self.get_attack_data('r')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
731 html_str = """<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th>Attack</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
732 <th>Total</th><th >Base</th><th>Abil</th><th>Misc</th></tr>"""
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
733 html_str += "<tr ALIGN='center' ><th >Melee:</th>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
734 html_str += "<td>"+str(melee[0]+melee[1]+melee[2])+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
735 html_str += "<td>"+str(melee[0])+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
736 html_str += "<td>"+str(melee[1])+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
737 html_str += "<td>"+str(melee[2])+"</td></tr>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
738
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
739 html_str += "<tr ALIGN='center' ><th >Ranged:</th>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
740 html_str += "<td>"+str(ranged[0]+ranged[1]+ranged[2])+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
741 html_str += "<td>"+str(ranged[0])+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
742 html_str += "<td>"+str(ranged[1])+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
743 html_str += "<td>"+str(ranged[2])+"</td></tr></table>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
744
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
745 n_list = self.xml.findall('weapon')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
746 for n in n_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
747 mod = n.get('mod')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
748 if mod >= 0: mod1 = "+"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
749 else: mod1 = ""
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
750 ran = n.get('range')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
751 total = str(int(mod) + self.get_mod(ran))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
752 html_str += """<P><table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th colspan=2>Weapon</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
753 <th>Attack</th><th >Damage</th><th>Critical</th></tr>"""
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
754 html_str += "<tr ALIGN='center' ><td colspan=2>"+n.get('name')+"</td><td>"+total+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
755 html_str += "<td>"+n.get('damage')+"</td><td>"+n.get('critical')+"</td></tr>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
756 html_str += """<tr BGCOLOR=#E9E9E9 ><th>Range</th><th>Weight</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
757 <th>Type</th><th>Size</th><th>Misc Mod</th></tr>"""
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
758 html_str += "<tr ALIGN='center'><td>"+ran+"</td><td>"+n.get('weight')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
759 html_str += "<td>"+n.get('type')+"</td><td>"+n.get('size')+"</td>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
760 html_str += '<td>%s%s</td></tr></table>' % (mod1, mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
761 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
762
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
763 class SWd20armor(SWd20_char_child):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
764 """ Node Handler for ac. This handler will be
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
765 created by d20char_handler.
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
766 """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
767 def __init__(self,xml_dom,tree_node,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
768 SWd20_char_child.__init__(self,xml_dom,tree_node,parent)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
769
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
770 def get_total_weight(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
771 return self.get_total('weight')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
772
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
773 def get_check_pen(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
774 return self.get_total('checkpenalty')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
775
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
776 def get_armor_class(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
777 ac_total = 10
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
778 ac_total += self.get_total('bonus')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
779 dex_mod = self.char_hander.child_handlers['abilities'].get_mod('Dex')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
780 max_dex = self.get_max_dex()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
781 if dex_mod < max_dex: ac_total += dex_mod
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
782 else: ac_total += max_dex
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
783 return ac_total
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
784
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
785 def get_max_dex(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
786 armor_list = self.xml.findall('armor')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
787 dex = 10
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
788 for a in armor_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
789 temp = int(a.get("maxdex"))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
790 if temp < dex: dex = temp
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
791 return dex
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
792
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
793 def get_total(self,attr):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
794 armor_list = self.xml.findall('armor')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
795 total = 0
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
796 for a in armor_list: total += int(a.get(attr))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
797 return total
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
798
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
799 def get_design_panel(self,parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
800 wnd = outline_panel(parent,self,ac_panel,"Armor")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
801 wnd.title = "Armor"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
802 return wnd
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
803
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
804 def tohtml(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
805 html_str = """<table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th>AC</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
806 <th>Check Penalty</th><th >Spell Failure</th><th>Max Dex</th><th>Total Weight</th></tr>"""
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
807 html_str += "<tr ALIGN='center' ><td>"+str(self.get_armor_class())+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
808 html_str += "<td>"+str(self.get_check_pen())+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
809 html_str += "<td>"+str(self.get_spell_failure())+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
810 html_str += "<td>"+str(self.get_max_dex())+"</td>"
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
811 html_str += "<td>"+str(self.get_total_weight())+"</td></tr></table>"
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
812 n_list = self.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
813 for n in n_list:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
814 html_str += """<P><table width=100% border=1 ><tr BGCOLOR=#E9E9E9 ><th colspan=3>Armor</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
815 <th>Type</th><th >Bonus</th></tr>"""
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
816 html_str += "<tr ALIGN='center' ><td colspan=3>"+n.get('name')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
817 html_str += "<td>"+n.get('type')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
818 html_str += "<td>"+n.get('bonus')+"</td></tr>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
819 html_str += """<tr BGCOLOR=#E9E9E9 ><th>Check Penalty</th><th>Spell Failure</th>
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
820 <th>Max Dex</th><th>Speed</th><th>Weight</th></tr>"""
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
821 html_str += "<tr ALIGN='center'><td>"+n.get('checkpenalty')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
822 html_str += "<td>"+n.get('maxdex')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
823 html_str += "<td>"+n.get('speed')+"</td>"
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
824 html_str += "<td>"+n.get('weight')+"</td></tr></table>"
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
825 return html_str
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
826
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
827
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
828 ########################
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
829 ## d20 char windows
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
830 ########################
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
831
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
832 class base_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
833 def __init__(self, parent):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
834 wx.Panel.__init__(self, parent, -1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
835
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
836 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
837
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
838 def on_size(self,event):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
839 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
840
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
841 class outline_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
842 def __init__(self, parent, handler, wnd, txt,):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
843 wx.Panel.__init__(self, parent, -1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
844 self.panel = wnd(self,handler)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
845 self.outline = wx.StaticBox(self,-1,txt)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
846 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
847
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
848 def on_size(self,event):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
849 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
850 self.panel.SetDimensions(20,20,s[0]-40,s[1]-40)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
851 self.outline.SetDimensions(5,5,s[0]-10,s[1]-10)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
852
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
853 class char_panel(wx.ScrolledWindow):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
854 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
855 pname = handler.xml.set("name", 'TWO')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
856 wx.ScrolledWindow.__init__(self, parent, -1,style=wx.VSCROLL | wx.SUNKEN_BORDER )
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
857 self.height = 1200
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
858 self.SetScrollbars(10, 10,80, self.height/10)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
859 self.main_sizer = wx.BoxSizer(wx.HORIZONTAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
860 self.panels = {}
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
861 keys = handler.child_handlers.keys()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
862 for k in keys: self.panels[k] = handler.child_handlers[k].get_design_panel(self, [k])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
863 self.sub_sizer = wx.BoxSizer(wx.VERTICAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
864 self.sub_sizer2 = wx.BoxSizer(wx.VERTICAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
865 self.sub_sizer.Add(self.panels['general'], 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
866 self.sub_sizer.Add(self.panels['abilities'], 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
867
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
868 self.sub_sizer.Add(self.panels['attacks'], 2, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
869 self.sub_sizer.Add(self.panels['ac'], 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
870
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
871 self.sub_sizer2.Add(self.panels['classes'], 2, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
872 self.sub_sizer2.Add(self.panels['wp'], 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
873 self.sub_sizer2.Add(self.panels['vp'], 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
874 self.sub_sizer2.Add(self.panels['saves'], 2, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
875
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
876 self.sub_sizer2.Add(self.panels['feats'], 2, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
877 self.sub_sizer2.Add(self.panels['skills'], 3, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
878
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
879 self.main_sizer.Add(self.sub_sizer, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
880 self.main_sizer.Add(self.sub_sizer2, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
881 self.panels['abilities'].panel.char_wnd = self
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
882 self.SetSizer(self.main_sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
883 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
884
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
885
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
886 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
887 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
888 self.SetScrollbars(10, 10,s[0]/10, self.height/10)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
889 dc = wx.ClientDC(self)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
890 x = dc.DeviceToLogicalX(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
891 y = dc.DeviceToLogicalY(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
892 self.main_sizer.SetDimension(x,y,s[0],self.height)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
893 evt.Skip()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
894
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
895 def refresh_data(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
896 self.panels['saves'].panel.refresh_data()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
897 self.panels['skills'].panel.refresh_data()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
898 self.panels['attacks'].panel.refresh_data()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
899
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
900 HOWTO_MAX = wx.NewId()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
901
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
902 class howto_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
903 def __init__(self, parent, handler):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
904 wx.Panel.__init__(self, parent, -1)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
905 pname = handler.xml.set("name", 'How To')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
906 self.sizer = wx.FlexGridSizer(2, 4, 2, 2) # rows, cols, hgap, vgap
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
907 self.xml = handler.xml
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
908 n_list = self.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
909 for n in n_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
910 self.sizer.AddMany([ (wx.StaticText(self, -1, n.text), 0, wx.ALIGN_CENTER_VERTICAL),
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
911 ])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
912 self.sizer.AddGrowableCol(1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
913 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
914
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
915
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
916 WP_CUR = wx.NewId()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
917 WP_MAX = wx.NewId()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
918
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
919 class hp_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
920 def __init__(self, parent, handler):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
921 wx.Panel.__init__(self, parent, -1)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
922 pname = handler.xml.set("name", 'WoundPoints')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
923 self.sizer = wx.FlexGridSizer(2, 4, 2, 2) # rows, cols, hgap, vgap
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
924 self.xml = handler.xml
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
925 self.sizer.AddMany([ (wx.StaticText(self, -1, "WP Current:"), 0, wx.ALIGN_CENTER_VERTICAL),
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
926 (wx.TextCtrl(self, WP_CUR, self.xml.get('current')), 0, wx.EXPAND),
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
927 (wx.StaticText(self, -1, "WP Max:"), 0, wx.ALIGN_CENTER_VERTICAL),
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
928 (wx.TextCtrl(self, WP_MAX, self.xml.get('max')), 0, wx.EXPAND),
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
929 ])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
930 self.sizer.AddGrowableCol(1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
931 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
932 self.Bind(wx.EVT_TEXT, self.on_text, id=WP_MAX)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
933 self.Bind(wx.EVT_TEXT, self.on_text, id=WP_CUR)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
934 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
935
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
936 def on_text(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
937 id = evt.GetId()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
938 if id == WP_CUR:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
939 self.xml.set('current',evt.GetString())
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
940 elif id == WP_MAX:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
941 self.xml.set('max',evt.GetString())
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
942
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
943 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
944 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
945 self.sizer.SetDimension(0,0,s[0],s[1])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
946
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
947 VP_CUR = wx.NewId()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
948 VP_MAX = wx.NewId()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
949
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
950 class vp_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
951 def __init__(self, parent, handler):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
952 wx.Panel.__init__(self, parent, -1)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
953 pname = handler.xml.set("name", 'VitalityPoints')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
954 self.sizer = wx.FlexGridSizer(2, 4, 2, 2) # rows, cols, hgap, vgap
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
955 self.xml = handler.xml
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
956 self.sizer.AddMany([ (wx.StaticText(self, -1, "VP Current:"), 0, wx.ALIGN_CENTER_VERTICAL),
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
957 (wx.TextCtrl(self, VP_CUR, self.xml.get('current')), 0, wx.EXPAND),
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
958 (wx.StaticText(self, -1, "VP Max:"), 0, wx.ALIGN_CENTER_VERTICAL),
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
959 (wx.TextCtrl(self, VP_MAX, self.xml.get('max')), 0, wx.EXPAND),
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
960 ])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
961 self.sizer.AddGrowableCol(1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
962 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
963 self.Bind(wx.EVT_TEXT, self.on_text, id=VP_MAX)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
964 self.Bind(wx.EVT_TEXT, self.on_text, id=VP_CUR)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
965 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
966
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
967 def on_text(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
968 id = evt.GetId()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
969 if id == VP_CUR: self.xml.set('current',evt.GetString())
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
970 elif id == VP_MAX: self.xml.set('max',evt.GetString())
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
971
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
972 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
973 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
974 self.sizer.SetDimension(0,0,s[0],s[1])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
975
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
976
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
977 class gen_grid(wx.grid.Grid):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
978 """grid for gen info"""
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
979 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
980 pname = handler.xml.set("name", 'General')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
981 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
982 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
983 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
984 self.handler = handler
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
985 n_list = handler.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
986 self.CreateGrid(len(n_list),2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
987 self.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
988 self.SetColLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
989 self.n_list = n_list
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
990 i = 0
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
991 for i in range(len(n_list)): self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
992
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
993 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
994 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
995 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
996 value = self.GetCellValue(row,col)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
997 self.n_list[row].text = value
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
998 if row==0: self.handler.on_name_change(value)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
999
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1000 def refresh_row(self,rowi):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1001 self.SetCellValue(rowi,0,self.n_list[rowi].tag)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1002 self.SetReadOnly(rowi,0)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1003 self.SetCellValue(rowi,1,self.n_list[rowi].text)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1004
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1005 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1006 (w,h) = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1007 cols = self.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1008 col_w = w/(cols)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1009 for i in range(0,cols): self.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1010 evt.Skip()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1011 self.Refresh()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1012
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1013 class inventory_grid(wx.grid.Grid):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1014 """grid for gen info"""
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1015 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1016 pname = handler.xml.set("name", 'Money and Inventory')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1017 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1018 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1019 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1020 self.handler = handler
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1021 n_list = handler.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1022 self.CreateGrid(len(n_list),2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1023 self.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1024 self.SetColLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1025 self.n_list = n_list
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1026 i = 0
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1027 for i in range(len(n_list)): self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1028
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1029 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1030 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1031 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1032 value = self.GetCellValue(row,col)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1033 self.n_list[row].text = value
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1034 if row==0: self.handler.on_name_change(value)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1035
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1036 def refresh_row(self,rowi):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1037 self.SetCellValue(rowi,0, self.n_list[rowi].tag)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1038 self.SetReadOnly(rowi,0)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1039 self.SetCellValue(rowi,1,self.n_list[rowi].text)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1040
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1041 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1042 (w,h) = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1043 cols = self.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1044 col_w = w/(cols)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1045 for i in range(0,cols): self.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1046 evt.Skip()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1047 self.Refresh()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1048
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1049 class abil_grid(wx.grid.Grid):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1050 """grid for abilities"""
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1051 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1052 pname = handler.xml.set("name", 'Stats')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1053 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1054 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1055 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1056 self.handler = handler
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1057 stats = handler.xml.findall('stat')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1058 self.CreateGrid(len(stats),3)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1059 self.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1060 col_names = ['Ability','Score','Modifier']
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1061 for i in range(len(col_names)): self.SetColLabelValue(i,col_names[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1062 self.stats = stats
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1063 i = 0
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1064 for i in range(len(stats)): self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1065 self.char_wnd = None
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1066
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1067 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1068 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1069 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1070 value = self.GetCellValue(row,col)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1071 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1072 int(value)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1073 self.stats[row].set('base',value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1074 self.refresh_row(row)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1075 except: self.SetCellValue(row,col,"0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1076 if self.char_wnd: self.char_wnd.refresh_data()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1077
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1078 def refresh_row(self,rowi):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1079 s = self.stats[rowi]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1080 name = s.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1081 abbr = s.get('abbr')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1082 self.SetCellValue(rowi,0,name)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1083 self.SetReadOnly(rowi,0)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1084 self.SetCellValue(rowi,1,s.get('base'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1085 self.SetCellValue(rowi,2,str(self.handler.get_mod(abbr)))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1086 self.SetReadOnly(rowi,2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1087
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1088 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1089 (w,h) = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1090 cols = self.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1091 col_w = w/(cols+2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1092 self.SetColSize(0,col_w*3)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1093 for i in range(1,cols): self.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1094 evt.Skip()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1095 self.Refresh()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1096
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1097 def refresh_data(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1098 for r in range(self.GetNumberRows()-1): self.refresh_row(r)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1099
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1100
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1101 class save_grid(wx.grid.Grid):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1102 """grid for saves"""
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1103 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1104 pname = handler.xml.set("name", 'Saves')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1105 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1106 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1107 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1108 self.handler = handler
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1109 saves = handler.xml.findall('save')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1110 self.stats = handler.char_hander.child_handlers['abilities']
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1111 self.CreateGrid(len(saves),7)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1112 self.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1113 col_names = ['Save','Key','base','Abil','Magic','Misc','Total']
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1114 for i in range(len(col_names)): self.SetColLabelValue(i,col_names[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1115 self.saves = saves
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1116 i = 0
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1117 for i in range(len(saves)):self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1118
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1119 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1120 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1121 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1122 value = self.GetCellValue(row,col)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1123 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1124 int(value)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1125 if col == 2: self.saves[row].set('base',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1126 elif col == 4:self.saves[row].set('magmod',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1127 elif col == 4: self.saves[row].set('miscmod',value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1128 self.refresh_row(row)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1129 except: self.SetCellValue(row,col,"0")
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1130
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1131 def refresh_row(self,rowi):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1132 s = self.saves[rowi]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1133 name = s.get('name')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1134 self.SetCellValue(rowi,0,name)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1135 self.SetReadOnly(rowi,0)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1136 stat = s.get('stat')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1137 self.SetCellValue(rowi,1,stat)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1138 self.SetReadOnly(rowi,1)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1139 self.SetCellValue(rowi,2,s.get('base'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1140 self.SetCellValue(rowi,3,str(self.stats.get_mod(stat)))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1141 self.SetReadOnly(rowi,3)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1142 self.SetCellValue(rowi,4,s.get('magmod'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1143 self.SetCellValue(rowi,5,s.get('miscmod'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1144 mod = str(self.handler.get_mod(name))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1145 self.SetCellValue(rowi,6,mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1146 self.SetReadOnly(rowi,6)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1147
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1148 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1149 (w,h) = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1150 cols = self.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1151 col_w = w/(cols+2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1152 self.SetColSize(0,col_w*3)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1153 for i in range(1,cols): self.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1154 evt.Skip()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1155 self.Refresh()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1156
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1157 def refresh_data(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1158 for r in range(self.GetNumberRows()): self.refresh_row(r)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1159
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1160
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1161 class skill_grid(wx.grid.Grid):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1162 """ panel for skills """
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1163 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1164 pname = handler.xml.set("name", 'Skills')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1165 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1166 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1167 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1168 self.handler = handler
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1169 skills = handler.xml.findall('skill')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1170 self.stats = handler.char_hander.child_handlers['abilities']
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1171 self.CreateGrid(len(skills),7)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1172 self.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1173 col_names = ['Skill','Key','Rank','Abil','Misc','Total']
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1174 for i in range(len(col_names)): self.SetColLabelValue(i,col_names[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1175 rowi = 0
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1176 self.skills = skills
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1177 for i in range(len(skills)):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1178 self.refresh_row(i)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1179
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1180 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1181 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1182 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1183 value = self.GetCellValue(row,col)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1184 #print value
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1185 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1186 int(value)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1187 if col == 3: self.skills[row].set('rank',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1188 elif col == 5: self.skills[row].set('misc',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1189 elif col == 1: self.skills[row].set('untrained',value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1190 self.refresh_row(row)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1191 except: self.SetCellValue(row,col,"0")
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1192
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1193 def refresh_row(self,rowi):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1194 s = self.skills[rowi]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1195 name = s.get('name')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1196 self.SetCellValue(rowi,0,name)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1197 self.SetReadOnly(rowi,0)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1198 self.SetCellValue(rowi,1,s.get('untrained'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1199 stat = s.get('stat')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1200 self.SetCellValue(rowi,2,stat)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1201 self.SetReadOnly(rowi,2)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1202 self.SetCellValue(rowi,3,s.get('rank'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1203 self.SetCellValue(rowi,4,str(self.stats.get_mod(stat)))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1204 self.SetReadOnly(rowi,4)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1205 self.SetCellValue(rowi,5,s.get('misc'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1206 mod = str(self.handler.get_mod(name))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1207 self.SetCellValue(rowi,6,mod)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1208 self.SetReadOnly(rowi,6)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1209
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1210 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1211 (w,h) = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1212 cols = self.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1213 col_w = w/(cols+2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1214 self.SetColSize(0,col_w*3)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1215 for i in range(1,cols): self.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1216 evt.Skip()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1217 self.Refresh()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1218
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1219 def refresh_data(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1220 for r in range(self.GetNumberRows()): self.refresh_row(r)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1221
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1222
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1223 class feat_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1224 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1225 pname = handler.xml.set("name", 'Feats')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1226 wx.Panel.__init__(self, parent, -1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1227 self.grid =wx.grid.Grid(self, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1228 sizer = wx.BoxSizer(wx.HORIZONTAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1229 remove_btn = wx.Button(self, wx.ID_ANY, "Remove Feat")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1230 add_btn = wx.Button(self, wx.ID_ANY, "Add Feat")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1231 sizer.Add(remove_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1232 sizer.Add(wx.Size(10,10))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1233 sizer.Add(add_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1234 self.sizer = sizer
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1235 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1236 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1237 self.Bind(wx.EVT_BUTTON, self.on_remove, remove_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1238 self.Bind(wx.EVT_BUTTON, self.on_add, add_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1239
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1240 n_list = handler.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1241 self.n_list = n_list
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1242 self.xml = handler.xml
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1243 self.grid.CreateGrid(len(n_list),2,1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1244 self.grid.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1245 self.grid.SetColLabelValue(0,"Feat")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1246 self.grid.SetColLabelValue(1,"Type")
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1247 for i in range(len(n_list)): self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1248 self.temp_dom = None
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1249
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1250 def refresh_row(self,i):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1251 feat = self.n_list[i]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1252 name = feat.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1253 type = feat.get('type')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1254 self.grid.SetCellValue(i,0,name)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1255 self.grid.SetReadOnly(i,0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1256 self.grid.SetCellValue(i,1,type)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1257 self.grid.SetReadOnly(i,1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1258
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1259 def on_remove(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1260 rows = self.grid.GetNumberRows()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1261 for i in range(rows):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1262 if self.grid.IsInSelection(i,0):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1263 self.grid.DeleteRows(i)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1264 self.xml.remove(self.n_list[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1265
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1266 def on_add(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1267 if not self.temp_dom:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1268 tree = parse(dir_struct["SWd20"]+"d20feats.xml")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1269 self.temp_dom = tree.getroot()
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1270 f_list = self.temp_dom.findall('feat')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1271 opts = []
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1272 for f in f_list: opts.append(f.get('name'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1273 dlg = wx.SingleChoiceDialog(self,'Choose Feat','Feats',opts)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1274 if dlg.ShowModal() == wx.ID_OK:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1275 i = dlg.GetSelection()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1276 new_node = self.xml.append(f_list[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1277 self.grid.AppendRows(1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1278 self.refresh_row(self.grid.GetNumberRows()-1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1279 dlg.Destroy()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1280
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1281
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1282 def on_size(self,event):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1283 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1284 self.grid.SetDimensions(0,0,s[0],s[1]-25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1285 self.sizer.SetDimension(0,s[1]-25,s[0],25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1286 (w,h) = self.grid.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1287 cols = self.grid.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1288 col_w = w/(cols)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1289 for i in range(0,cols): self.grid.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1290
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1291 class attack_grid(wx.grid.Grid):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1292 """grid for attacks"""
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1293 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1294 pname = handler.xml.set("name", 'Melee')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1295 wx.grid.Grid.__init__(self, parent, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1296 self.parent = parent
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1297 self.handler = handler
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1298 self.rows = (self.handler.melee,self.handler.ranged)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1299 self.CreateGrid(2,10)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1300 self.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1301 col_names = ['Type','base','base 2','base 3','base 4','base 5','base 6','abil','misc','Total']
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1302 for i in range(len(col_names)): self.SetColLabelValue(i,col_names[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1303 self.SetCellValue(0,0,"Melee")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1304 self.SetCellValue(1,0,"Ranged")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1305 self.refresh_data()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1306 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1307 self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1308
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1309 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1310 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1311 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1312 value = self.GetCellValue(row,col)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1313 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1314 int(value)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1315 if col== 1: self.rows[row].set('base',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1316 elif col== 2: self.rows[row].set('second',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1317 elif col== 3: self.rows[row].set('third',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1318 elif col== 4: self.rows[row].set('forth',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1319 elif col== 5: self.rows[row].set('fifth',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1320 elif col== 6: self.rows[row].set('sixth',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1321 elif col== 8: self.rows[row].set('misc',value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1322 self.parent.refresh_data()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1323 except: self.SetCellValue(row,col,"0")
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1324
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1325 def refresh_data(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1326 melee = self.handler.get_attack_data('m')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1327 ranged = self.handler.get_attack_data('r')
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1328 for i in range(0,7):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1329 self.SetCellValue(0,i+1,str(melee[i]))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1330 self.SetCellValue(1,i+1,str(ranged[i]))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1331 self.SetCellValue(0,9,str(melee[0]+melee[6]+melee[7]))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1332 self.SetCellValue(1,9,str(ranged[0]+ranged[6]+ranged[7]))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1333 self.SetReadOnly(0,0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1334 self.SetReadOnly(1,0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1335 self.SetReadOnly(0,7)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1336 self.SetReadOnly(1,7)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1337 self.SetReadOnly(0,9)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1338 self.SetReadOnly(1,9)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1339
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1340 def on_size(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1341 (w,h) = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1342 cols = self.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1343 col_w = w/(cols+1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1344 self.SetColSize(0,col_w*2)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1345 for i in range(1,cols): self.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1346 evt.Skip()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1347 self.Refresh()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1348
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1349 class weapon_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1350 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1351 pname = handler.xml.set("name", 'Weapons')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1352 wx.Panel.__init__(self, parent, -1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1353 self.grid =wx.grid.Grid(self, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1354 sizer = wx.BoxSizer(wx.HORIZONTAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1355 remove_btn = wx.Button(self, 10, "Remove Weapon")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1356 add_btn = wx.Button(self, 20, "Add Weapon")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1357 sizer.Add(remove_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1358 sizer.Add(wx.Size(10,10))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1359 sizer.Add(add_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1360 self.sizer = sizer
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1361 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1362 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1363 self.Bind(wx.EVT_BUTTON, self.on_remove, remove_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1364 self.Bind(wx.EVT_BUTTON, self.on_add, add_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1365 self.grid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1366 n_list = handler.xml.findall('weapon')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1367 self.n_list = n_list
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1368 self.xml = handler.xml
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1369 self.handler = handler
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1370 self.grid.CreateGrid(len(n_list),9,1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1371 self.grid.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1372 col_names = ['Name','damage','mod','critical','type','weight','range','size','Total']
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1373 for i in range(len(col_names)): self.grid.SetColLabelValue(i,col_names[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1374 self.refresh_data()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1375 self.temp_dom = None
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1376
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1377 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1378 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1379 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1380 value = self.grid.GetCellValue(row,col)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1381 if col == 0: self.n_list[row].set('name',value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1382 elif col == 2:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1383 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1384 int(value)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1385 self.n_list[row].set('mod',value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1386 self.refresh_row(row)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1387 except: self.grid.SetCellValue(row,col,"1")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1388 else: self.n_list[row].set(self.grid.GetColLabelValue(col),value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1389
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1390 def refresh_row(self,i):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1391 n = self.n_list[i]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1392 name = n.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1393 mod = n.get('mod')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1394 ran = n.get('range')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1395 total = str(int(mod) + self.handler.get_mod(ran))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1396 self.grid.SetCellValue(i,0,name)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1397 self.grid.SetCellValue(i,1,n.get('damage'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1398 self.grid.SetCellValue(i,2,mod)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1399 self.grid.SetCellValue(i,3,n.get('critical'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1400 self.grid.SetCellValue(i,4,n.get('type'))
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1401 self.grid.SetCellValue(i,5,n.get('weight'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1402 self.grid.SetCellValue(i,6,ran)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1403 self.grid.SetCellValue(i,7,n.get('size') )
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1404 self.grid.SetCellValue(i,8,total)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1405 self.grid.SetReadOnly(i,8)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1406
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1407 def on_remove(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1408 rows = self.grid.GetNumberRows()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1409 for i in range(rows):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1410 if self.grid.IsInSelection(i,0):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1411 self.grid.DeleteRows(i)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1412 self.xml.remove(self.n_list[i])
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1413 self.n_list = self.xml.findall('weapon')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1414 self.handler.refresh_weapons()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1415
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1416 def on_add(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1417 if not self.temp_dom:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1418 tree = parse(dir_struct["SWd20"]+"d20weapons.xml")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1419 self.temp_dom = tree.getroot()
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1420 f_list = self.temp_dom.findall('weapon')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1421 opts = []
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1422 for f in f_list:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1423 opts.append(f.get('name'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1424 dlg = wx.SingleChoiceDialog(self,'Choose Weapon','Weapon List',opts)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1425 if dlg.ShowModal() == wx.ID_OK:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1426 i = dlg.GetSelection()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1427 new_node = self.xml.append(f_list[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1428 self.grid.AppendRows(1)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1429 self.n_list = self.xml.findall('weapon')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1430 self.refresh_row(self.grid.GetNumberRows()-1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1431 self.handler.refresh_weapons()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1432 dlg.Destroy()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1433
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1434 def on_size(self,event):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1435 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1436 self.grid.SetDimensions(0,0,s[0],s[1]-25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1437 self.sizer.SetDimension(0,s[1]-25,s[0],25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1438 (w,h) = self.grid.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1439 cols = self.grid.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1440 col_w = w/(cols+1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1441 self.grid.SetColSize(0,col_w*2)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1442 for i in range(1,cols): self.grid.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1443
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1444 def refresh_data(self):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1445 for i in range(len(self.n_list)): self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1446
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1447
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1448 class attack_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1449 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1450 pname = handler.xml.set("name", 'Melee')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1451 wx.Panel.__init__(self, parent, -1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1452 self.a_grid = attack_grid(self, handler)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1453 self.w_panel = weapon_panel(self, handler)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1454 self.sizer = wx.BoxSizer(wx.VERTICAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1455 self.sizer.Add(self.a_grid, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1456 self.sizer.Add(self.w_panel, 2, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1457 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1458 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1459
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1460 def on_size(self,event):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1461 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1462 self.sizer.SetDimension(0,0,s[0],s[1])
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1463
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1464 def refresh_data(self):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1465 self.w_panel.refresh_data()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1466 self.a_grid.refresh_data()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1467
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1468
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1469 class ac_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1470 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1471 pname = handler.xml.set("name", 'Armor')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1472 wx.Panel.__init__(self, parent, -1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1473 self.grid =wx.grid.Grid(self, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1474 sizer = wx.BoxSizer(wx.HORIZONTAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1475 remove_btn = wx.Button(self, 10, "Remove Armor")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1476 add_btn = wx.Button(self, 20, "Add Armor")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1477 sizer.Add(remove_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1478 sizer.Add(wx.Size(10,10))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1479 sizer.Add(add_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1480 self.sizer = sizer
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1481 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1482 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1483 self.Bind(wx.EVT_BUTTON, self.on_remove, remove_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1484 self.Bind(wx.EVT_BUTTON, self.on_add, add_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1485 self.grid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1486 self.xml = handler.xml
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1487 n_list = handler.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1488 self.n_list = n_list
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1489 col_names = ['Armor','DR','Max Dex','Check Penalty','Weight','Speed (10)','Speed (6)','type']
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1490 self.grid.CreateGrid(len(n_list),len(col_names),1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1491 self.grid.SetRowLabelSize(0)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1492 for i in range(len(col_names)): self.grid.SetColLabelValue(i,col_names[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1493 self.atts =['name','bonus','maxdex','checkpenalty','weight','speed','speed6','type']
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1494 for i in range(len(n_list)): self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1495 self.temp_dom = None
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1496
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1497
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1498 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1499 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1500 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1501 value = self.grid.GetCellValue(row,col)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1502 if col >= 1 and col <= 5:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1503 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1504 int(value)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1505 self.n_list[row].set(self.atts[col],value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1506 except: self.grid.SetCellValue(row,col,"0")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1507 else: self.n_list[row].set(self.atts[col],value)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1508
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1509 def refresh_row(self,i):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1510 n = self.n_list[i]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1511 for y in range(len(self.atts)): self.grid.SetCellValue(i,y,n.get(self.atts[y]))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1512
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1513 def on_remove(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1514 rows = self.grid.GetNumberRows()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1515 for i in range(rows):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1516 if self.grid.IsInSelection(i,0):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1517 self.grid.DeleteRows(i)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1518 self.xml.remove(self.n_list[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1519
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1520 def on_add(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1521 if not self.temp_dom:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1522 tree = parse(dir_struct["SWd20"]+"d20armor.xml")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1523 self.temp_dom = tree.getroot()
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1524 f_list = self.temp_dom.findall('armor')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1525 opts = []
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1526 for f in f_list: opts.append(f.get('name'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1527 dlg = wx.SingleChoiceDialog(self,'Choose Armor:','Armor List',opts)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1528 if dlg.ShowModal() == wx.ID_OK:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1529 i = dlg.GetSelection()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1530 new_node = self.xml.append(f_list[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1531 self.grid.AppendRows(1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1532 self.refresh_row(self.grid.GetNumberRows()-1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1533 dlg.Destroy()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1534
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1535 def on_size(self,event):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1536 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1537 self.grid.SetDimensions(0,0,s[0],s[1]-25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1538 self.sizer.SetDimension(0,s[1]-25,s[0],25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1539 (w,h) = self.grid.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1540 cols = self.grid.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1541 col_w = w/(cols+2)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1542 self.grid.SetColSize(0,col_w*3)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1543 for i in range(1,cols): self.grid.SetColSize(i,col_w)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1544
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1545
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1546 class class_panel(wx.Panel):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1547 def __init__(self, parent, handler):
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1548 pname = handler.xml.set("name", 'Class')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1549 wx.Panel.__init__(self, parent, -1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1550 self.grid =wx.grid.Grid(self, -1, style=wx.SUNKEN_BORDER | wx.WANTS_CHARS)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1551 sizer = wx.BoxSizer(wx.HORIZONTAL)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1552 remove_btn = wx.Button(self, wx.ID_ANY, "Remove Class")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1553 add_btn = wx.Button(self, wx.ID_ANY, "Add Class")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1554 sizer.Add(remove_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1555 sizer.Add(wx.Size(10,10))
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1556 sizer.Add(add_btn, 1, wx.EXPAND)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1557 self.sizer = sizer
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1558 self.SetSizer(self.sizer)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1559 self.Bind(wx.EVT_SIZE, self.on_size)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1560 self.Bind(wx.EVT_BUTTON, self.on_remove, remove_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1561 self.Bind(wx.EVT_BUTTON, self.on_add, add_btn)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1562 self.grid.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.on_cell_change)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1563
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1564 n_list = handler.xml.getchildren()
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1565 self.n_list = n_list
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1566 self.xml = handler.xml
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1567 self.grid.CreateGrid(len(n_list),2,1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1568 self.grid.SetRowLabelSize(0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1569 self.grid.SetColLabelValue(0,"Class")
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1570 self.grid.SetColLabelValue(1,"Level")
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1571 for i in range(len(n_list)): self.refresh_row(i)
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1572 self.temp_dom = None
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1573
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1574 def on_cell_change(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1575 row = evt.GetRow()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1576 col = evt.GetCol()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1577 value = self.grid.GetCellValue(row,col)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1578 try:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1579 int(value)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1580 self.n_list[row].set('level',value)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1581 except: self.grid.SetCellValue(row,col,"1")
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1582
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1583
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1584 def refresh_row(self,i):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1585 n = self.n_list[i]
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1586 name = n.get('name')
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1587 level = n.get('level')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1588 self.grid.SetCellValue(i,0,name)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1589 self.grid.SetReadOnly(i,0)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1590 self.grid.SetCellValue(i,1,level)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1591
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1592 def on_remove(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1593 rows = self.grid.GetNumberRows()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1594 for i in range(rows):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1595 if self.grid.IsInSelection(i,0):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1596 self.grid.DeleteRows(i)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1597 self.xml.remove(self.n_list[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1598
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1599 def on_add(self,evt):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1600 if not self.temp_dom:
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1601 tree = parse(dir_struct["SWd20"]+"SWd20classes.xml")
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1602 self.temp_dom = tree.getroot()
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1603 f_list = self.temp_dom.findall('class')
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1604 opts = []
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1605 for f in f_list: opts.append(f.get('name'))
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1606 dlg = wx.SingleChoiceDialog(self,'Choose Class','Classes',opts)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1607 if dlg.ShowModal() == wx.ID_OK:
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1608 i = dlg.GetSelection()
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1609 new_node = self.xml.append(f_list[i])
17
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1610 self.grid.AppendRows(1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1611 self.refresh_row(self.grid.GetNumberRows()-1)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1612 dlg.Destroy()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1613
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1614
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1615 def on_size(self,event):
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1616 s = self.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1617 self.grid.SetDimensions(0,0,s[0],s[1]-25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1618 self.sizer.SetDimension(0,s[1]-25,s[0],25)
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1619 (w,h) = self.grid.GetClientSizeTuple()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1620 cols = self.grid.GetNumberCols()
265b987cce4f Traipse 'OpenRPG' {090813-00}
sirebral
parents: 0
diff changeset
1621 col_w = w/(cols)
28
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1622 for i in range(0,cols): self.grid.SetColSize(i,col_w)
ff154cf3350c Traipse 'OpenRPG' {100203-00}
sirebral
parents: 18
diff changeset
1623