comparison orpg/mapper/miniatures_msg.py @ 0:4385a7d0efd1 grumpy-goblin

Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
author sirebral
date Tue, 14 Jul 2009 16:41:58 -0500
parents
children 78407d627cba
comparison
equal deleted inserted replaced
-1:000000000000 0:4385a7d0efd1
1 # Copyright (C) 2000-2001 The OpenRPG Project
2 #
3 # openrpg-dev@lists.sourceforge.net
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 # --
19 #
20 # File: mapper/miniatures_msg.py
21 # Author: Chris Davis
22 # Maintainer:
23 # Version:
24 # $Id: miniatures_msg.py,v 1.8 2006/11/04 21:24:21 digitalxero Exp $
25 #
26 # Description: This file contains some of the basic definitions for the chat
27 # utilities in the orpg project.
28 #
29 __version__ = "$Id: miniatures_msg.py,v 1.8 2006/11/04 21:24:21 digitalxero Exp $"
30
31 from base_msg import *
32
33 class mini_msg(map_element_msg_base):
34
35 def __init__(self,reentrant_lock_object = None):
36 self.tagname = "miniature" # set this to be for minis. Tagname gets used in some base class functions.
37 map_element_msg_base.__init__(self,reentrant_lock_object) # call base class
38
39
40
41 # convenience method to use if only this mini is modified
42 # outputs a <map/> element containing only the changes to this mini
43 def standalone_update_text(self,update_id_string):
44 buffer = "<map id='" + update_id_string + "'>"
45 buffer += "<miniatures>"
46 buffer += self.get_changed_xml()
47 buffer += "</miniatures></map>"
48 return buffer
49
50 # convenience method to use if only this mini is modified
51 # outputs a <map/> element that deletes this mini
52 def standalone_delete_text(self,update_id_string):
53 buffer = None
54
55 if self._props.has_key("id"):
56 buffer = "<map id='" + update_id_string + "'>"
57 buffer += "<miniatures>"
58 buffer += "<miniature action='del' id='" + self._props("id") + "'/>"
59 buffer += "</miniatures></map>"
60
61 return buffer
62
63 # convenience method to use if only this mini is modified
64 # outputs a <map/> element to add this mini
65 def standalone_add_text(self,update_id_string):
66 buffer = "<map id='" + update_id_string + "'>"
67 buffer += "<miniatures>"
68 buffer += self.get_all_xml()
69 buffer += "</miniatures></map>"
70 return buffer
71
72 def get_all_xml(self,action="new",output_action=1):
73 return map_element_msg_base.get_all_xml(self,action,output_action)
74
75 def get_changed_xml(self,action="update",output_action=1):
76 return map_element_msg_base.get_changed_xml(self,action,output_action)
77
78
79
80 class minis_msg(map_element_msg_base):
81
82 def __init__(self,reentrant_lock_object = None):
83 self.tagname = "miniatures"
84 map_element_msg_base.__init__(self,reentrant_lock_object)
85
86 def init_from_dom(self,xml_dom):
87 self.p_lock.acquire()
88 if xml_dom.tagName == self.tagname:
89 if xml_dom.getAttributeKeys():
90 for k in xml_dom.getAttributeKeys():
91 self.init_prop(k,xml_dom.getAttribute(k))
92
93 for c in xml_dom._get_childNodes():
94 mini = mini_msg(self.p_lock)
95
96 try:
97 mini.init_from_dom(c)
98 except Exception, e:
99 print e
100 continue
101
102 id = mini.get_prop("id")
103 action = mini.get_prop("action")
104
105
106 if action == "new":
107 self.children[id] = mini
108
109 elif action == "del":
110 if self.children.has_key(id):
111 self.children[id] = None
112 del self.children[id]
113
114 elif action == "update":
115 if self.children.has_key(id):
116 self.children[id].init_props(mini.get_all_props())
117
118 else:
119 self.p_lock.release()
120 raise Exception, "Error attempting to initialize a " + self.tagname + " from a non-<" + self.tagname + "/> element"
121 self.p_lock.release()
122
123
124
125 def set_from_dom(self,xml_dom):
126 self.p_lock.acquire()
127 if xml_dom.tagName == self.tagname:
128 if xml_dom.getAttributeKeys():
129 for k in xml_dom.getAttributeKeys():
130 self.set_prop(k,xml_dom.getAttribute(k))
131
132 for c in xml_dom._get_childNodes():
133 mini = mini_msg(self.p_lock)
134
135 try:
136 mini.set_from_dom(c)
137 except Exception, e:
138 print e
139 continue
140
141 id = mini.get_prop("id")
142 action = mini.get_prop("action")
143
144 if action == "new":
145 self.children[id] = mini
146
147 elif action == "del":
148 if self.children.has_key(id):
149 self.children[id] = None
150 del self.children[id]
151
152 elif action == "update":
153 if self.children.has_key(id):
154 self.children[id].set_props(mini.get_all_props())
155
156 else:
157 self.p_lock.release()
158 raise Exception, "Error attempting to set a " + self.tagname + " from a non-<" + self.tagname + "/> element"
159 self.p_lock.release()