I worked on the new, handwritten game client.
[krufty_fps.git] / pygame_gui / widgets.xml
blobe2da8d5bae38f4a00ba0fdb88fcfe0eefa8c92ac
1 <?xml version="1.0" encoding="UTF-8"?>
2 <widgets>
4   <images>
6     <image>
7       <filename>button_bottom.png</filename>
8       <name>button_bottom_png</name>
9     </image>
11     <image>
12       <filename>button_left_bottom.png</filename>
13       <name>button_left_bottom_png</name>
14     </image>
16     <image>
17       <filename>button_left.png</filename>
18       <name>button_left_png</name>
19     </image>
21     <image>
22       <filename>button_left_top.png</filename>
23       <name>button_left_top_png</name>
24     </image>
26     <image>
27       <filename>button.png</filename>
28       <name>button_png</name>
29     </image>
31     <image>
32       <filename>button_right_bottom.png</filename>
33       <name>button_right_bottom_png</name>
34     </image>
36     <image>
37       <filename>button_right.png</filename>
38       <name>button_right_png</name>
39     </image>
41     <image>
42       <filename>button_right_top.png</filename>
43       <name>button_right_top_png</name>
44     </image>
46     <image>
47       <filename>button_top.png</filename>
48       <name>button_top_png</name>
49     </image>
51     <image>
52       <filename>button_bottom_pressed.png</filename>
53       <name>button_bottom_pressed_png</name>
54     </image>
56     <image>
57       <filename>button_left_bottom_pressed.png</filename>
58       <name>button_left_bottom_pressed_png</name>
59     </image>
61     <image>
62       <filename>button_left_pressed.png</filename>
63       <name>button_left_pressed_png</name>
64     </image>
66     <image>
67       <filename>button_left_top_pressed.png</filename>
68       <name>button_left_top_pressed_png</name>
69     </image>
71     <image>
72       <filename>button_right_bottom_pressed.png</filename>
73       <name>button_right_bottom_pressed_png</name>
74     </image>
76     <image>
77       <filename>button_right_pressed.png</filename>
78       <name>button_right_pressed_png</name>
79     </image>
81     <image>
82       <filename>button_right_top_pressed.png</filename>
83       <name>button_right_top_pressed_png</name>
84     </image>
86     <image>
87       <filename>button_top_pressed.png</filename>
88       <name>button_top_pressed_png</name>
89     </image>
91     <image>
92       <filename>button_center.png</filename>
93       <name>button_center_png</name>
94     </image>
96     <image>
97       <filename>textbox_bottom.png</filename>
98       <name>textbox_bottom_png</name>
99     </image>
101     <image>
102       <filename>textbox_left_bottom.png</filename>
103       <name>textbox_left_bottom_png</name>
104     </image>
106     <image>
107       <filename>textbox_left.png</filename>
108       <name>textbox_left_png</name>
109     </image>
111     <image>
112       <filename>textbox_left_top.png</filename>
113       <name>textbox_left_top_png</name>
114     </image>
116     <image>
117       <filename>textbox_right_bottom.png</filename>
118       <name>textbox_right_bottom_png</name>
119     </image>
121     <image>
122       <filename>textbox_right.png</filename>
123       <name>textbox_right_png</name>
124     </image>
126     <image>
127       <filename>textbox_right_top.png</filename>
128       <name>textbox_right_top_png</name>
129     </image>
131     <image>
132       <filename>textbox_top.png</filename>
133       <name>textbox_top_png</name>
134     </image>
136     <image>
137       <filename>textbox_center.png</filename>
138       <name>textbox_center_png</name>
139     </image>
141   </images>
143   <widget>
145     <name>label</name>
147     <parameter name="width" default="kill" type="int" />
148     <parameter name="height" default="kill" type="int" />
149     <parameter name="text:direct" default="" />
151     <part>
152       <name>label_text</name>
153       <type>text</type>
154       <source>text</source>
156       <position>0, 0</position>
157       <size>width, height</size>
158     </part>
160   </widget>
162   <widget>
164     <name>button</name>
166     <parameter name="width" default="kill" type="int" />
167     <parameter name="height" default="kill" type="int" />
168     <parameter name="text" default="" />
170     <part>
171       <name>button_center</name>
172       <type>image</type>
173       <source>button_center_png</source>
174       <zindex>0</zindex>
176         <position>button_left_top_png.get_width(), button_left_top_png.get_height()</position>
177         <size>width - (button_right_top_png.get_width() + button_left_top_png.get_width()), height - (button_right_bottom_png.get_height() + button_right_top_png.get_height())</size>
178     </part>
180     <part>
181       <name>button_text</name>
182       <type>text</type>
183       <source>text</source>
184       <zindex>1</zindex>
186       <position>[(width / 2) - (button_text.get_width() / 2), (height / 2) - (button_text.get_height() / 2)]</position>
187       <size>width, height</size>
188     </part>
190     <part>
191       <name>button_left_top</name>
192       <type>image</type>
193       <source>button_left_top_png</source>
194       <zindex>1</zindex>
196       <position>0, 0</position>
197       <size>button_left_top_png.get_width(), button_left_top_png.get_height()</size>
198     </part>
200     <part>
201       <name>button_top</name>
202       <type>image</type>
203       <source>button_top_png</source>
204       <zindex>1</zindex>
206       <position>button_left_top_png.get_width(), 0</position>
207       <size>width - (button_left_top_png.get_width() + button_right_top_png.get_width()), button_top_png.get_height()</size>
208     </part>
210     <part>
211       <name>button_right_top</name>
212       <type>image</type>
213       <source>button_right_top_png</source>
214       <zindex>1</zindex>
216       <position>width - button_right_top_png.get_width(), 0</position>
217       <size>button_right_top_png.get_width(), button_right_top_png.get_height()</size>
218     </part>
220     <part>
221       <name>button_right</name>
222       <type>image</type>
223       <source>button_right_png</source>
224       <zindex>1</zindex>
226       <position>width - button_right_png.get_width(), button_right_top_png.get_height()</position>
227       <size>button_right_png.get_width(), height - (button_right_top_png.get_height() + button_right_bottom_png.get_height())</size>
228     </part>
230     <part>
231       <name>button_right_bottom</name>
232       <type>image</type>
233       <source>button_right_bottom_png</source>
234       <zindex>1</zindex>
236       <position>width - button_right_bottom_png.get_width(), height - button_right_bottom_png.get_height()</position>
237       <size>button_right_bottom_png.get_width(), button_right_bottom_png.get_height()</size>
238     </part>
240     <part>
241       <name>button_bottom</name>
242       <type>image</type>
243       <source>button_bottom_png</source>
244       <zindex>1</zindex>
246       <position>button_left_top_png.get_width(), height - button_bottom_png.get_height()</position>
247       <size>width - (button_left_top_png.get_width() + button_right_top_png.get_width()), button_bottom_png.get_height()</size>
248     </part>
250     <part>
251       <name>button_left_bottom</name>
252       <type>image</type>
253       <source>button_left_bottom_png</source>
254       <zindex>1</zindex>
256       <position>0, height - button_left_bottom_png.get_height()</position>
257       <size>button_left_bottom_png.get_width(), button_left_top_png.get_height()</size>
258     </part>
260     <part>
261       <name>button_left</name>
262       <type>image</type>
263       <source>button_left_png</source>
264       <zindex>1</zindex>
266       <position>0, button_left_top_png.get_height()</position>
267       <size>button_left_png.get_width(), height - (button_left_top_png.get_height() + button_left_bottom_png.get_height())</size>
268     </part>
270     <behavior>
271       <on_event>MOUSEBUTTONUP</on_event>
273       <do>self.setPart('button_bottom', 'button_bottom_png')
274 self.setPart('button_left_bottom', 'button_left_bottom_png')
275 self.setPart('button_left', 'button_left_png')
276 self.setPart('button_left_top', 'button_left_top_png')
277 self.setPart('button_right_bottom', 'button_right_bottom_png')
278 self.setPart('button_right', 'button_right_png')
279 self.setPart('button_right_top', 'button_right_top_png')
280 self.setPart('button_top', 'button_top_png')
281 self.raiseEvent('BUTTON_CLICKED', {})</do>
283     </behavior>
285     <behavior>
286       <on_event>MOUSEBUTTONDOWN</on_event>
288       <do>self.setPart('button_bottom', 'button_bottom_pressed_png')
289 self.setPart('button_left_bottom', 'button_left_bottom_pressed_png')
290 self.setPart('button_left', 'button_left_pressed_png')
291 self.setPart('button_left_top', 'button_left_top_pressed_png')
292 self.setPart('button_right_bottom', 'button_right_bottom_pressed_png')
293 self.setPart('button_right', 'button_right_pressed_png')
294 self.setPart('button_right_top', 'button_right_top_pressed_png')
295 self.setPart('button_top', 'button_top_pressed_png')
297 print "Debug, button down"
298 </do>
300     </behavior>
302   </widget>
304   <widget>
306     <name>textbox</name>
308     <parameter name="width" default="kill" type="int" />
309     <parameter name="height" default="25" type="int" />
310     <parameter name="text" default="" />
312     <parameter name="render_text" default=" " />
314     <parameter name="insertion_mark" default="|" />
315     <parameter name="insertion_position" default="0" type="int" />
317     <parameter name="text_left" type="int" default="2" />
318     <parameter name="text_top" type="int" default="2" />
320     <part>
321       <name>contents</name>
322       <type>text</type>
323       <source>render_text</source>
325       <position>textbox_left_top_png.get_width() + self.params['parameters']['text_left'], textbox_left_top_png.get_height() + self.params['parameters']['text_top']</position>
326       <size>width, height</size>
328       <!--
329         width - (textbox_left_top_png.get_width() + textbox_right_top_png.get_width() + 4), height - (textbox_left_top_png.get_height() + textbox_right_top_png.get_height() + 4)
330         -->
331     </part>
333     <part>
334       <name>textbox_left_top</name>
335       <type>image</type>
336       <source>textbox_left_top_png</source>
338       <position>0, 0</position>
339       <size>textbox_left_top_png.get_width() , textbox_left_top_png.get_height()</size>
340     </part>
343     <part>
344       <name>textbox_top</name>
345       <type>image</type>
346       <source>textbox_top_png</source>
348       <position>textbox_left_top_png.get_width(), 0</position>
349       <size>width - (textbox_left_top_png.get_width() + textbox_right_top_png.get_width()), textbox_top_png.get_height()</size>
350     </part>
352     <part>
353       <name>textbox_right_top</name>
354       <type>image</type>
355       <source>textbox_right_top_png</source>
357       <position>width - textbox_right_top_png.get_width(), 0</position>
358       <size>textbox_right_top_png.get_width(), textbox_right_top_png.get_height()</size>
359     </part>
361     <part>
362       <name>textbox_right</name>
363       <type>image</type>
364       <source>textbox_right_png</source>
366       <position>width - textbox_right_png.get_width(), textbox_right_top_png.get_height()</position>
367       <size>textbox_right_png.get_width(), height - (textbox_right_top_png.get_height() + textbox_right_bottom_png.get_height())</size>
368     </part>
370     <part>
371       <name>textbox_right_bottom</name>
372       <type>image</type>
373       <source>textbox_right_bottom_png</source>
375       <position>width - textbox_right_bottom_png.get_width(), height - textbox_right_bottom_png.get_height()</position>
376       <size>textbox_right_bottom_png.get_width(), textbox_right_bottom_png.get_height()</size>
377     </part>
379     <part>
380       <name>textbox_bottom</name>
381       <type>image</type>
382       <source>textbox_bottom_png</source>
384       <position>textbox_left_top_png.get_width(), height - textbox_bottom_png.get_height()</position>
385       <size>width - (textbox_left_top_png.get_width() + textbox_right_top_png.get_width()), textbox_bottom_png.get_height()</size>
386     </part>
388     <part>
389       <name>textbox_left_bottom</name>
390       <type>image</type>
391       <source>textbox_left_bottom_png</source>
393       <position>0, height - textbox_left_bottom_png.get_height()</position>
394       <size>textbox_left_bottom_png.get_width(), textbox_left_top_png.get_height()</size>
395     </part>
397     <part>
398       <name>textbox_left</name>
399       <type>image</type>
400       <source>textbox_left_png</source>
402       <position>0, textbox_left_top_png.get_height()</position>
403       <size>textbox_left_png.get_width(), height - (textbox_left_top_png.get_height() + textbox_left_bottom_png.get_height())</size>
404     </part>
406     <part>
407       <name>textbox_center</name>
408       <type>image</type>
409       <source>textbox_center_png</source>
411       <position>textbox_left_top_png.get_width(), textbox_left_top_png.get_height()</position>
412       <size>width - textbox_right_top_png.get_width() , height - textbox_right_bottom_png.get_height() - 1</size>
413     </part>
415     <behavior>
417       <on_event>KEYDOWN</on_event>
419       <do>
421 letter = the_event['data']['unicode']
422 the_number = the_event['data']['key']
423 key_mod = the_event['data']['mod']
425 cur_pos = self.params['parameters']['insertion_position']
427 temp_array = array.array('u', self.params['parameters']['text'].decode())
429 if the_number == 8:
430     if len(temp_array):
431        if cur_pos != 0:
432            temp_array.pop(cur_pos)
433            cur_pos -= 1
434        else:
435            temp_array.pop(0)
437 if the_number == 127:
438     if cur_pos + 1 != len(temp_array):
439         if len(temp_array):
440             temp_array.pop(cur_pos + 1)
442 if letter in letters or letter in punctuation or letter in digits or letter == ' ':
443     if the_number == 308 or the_number == 303 or the_number == 277 or the_number == 300 or the_number == 302:
444         pass
446     elif the_number &gt;= 300 and the_number &lt;= 314:
447         pass
449     elif the_number &gt;= 282 and the_number &lt;= 293:
450         pass
452     elif the_number == 274 or the_number == 273 or the_number == 9:
453         pass
455     elif the_number == 276:
456         if cur_pos == 0:
457             cur_pos = 0
458         else:
459             cur_pos -= 1
461     elif the_number == 275:
462         if cur_pos == len(temp_array) - 1:
463             pass
464         else:
465             cur_pos += 1
467     elif len(temp_array) == 0:
468         temp_array.append(letter.decode())
469         cur_pos = 0
471     elif cur_pos == 0 and not len(temp_array):
472         temp_array.append(letter.decode())
473         cur_pos += 1
475     elif len(temp_array) - 1 == cur_pos:
476         temp_array.append(letter.decode())
477         cur_pos += 1
479     else:
480         temp_array.insert(cur_pos + 1, letter.decode())
481         cur_pos += 1
483 self.params['parameters']['insertion_position'] = cur_pos
484 self.params['parameters']['text'] = temp_array.tounicode()
485 temp_array.insert(self.params['parameters']['insertion_position'] + 1, self.params['parameters']['insertion_mark'])
487 prerender = self.the_gui_system.the_font.size(temp_array.tounicode().encode())
488 width = self.params['parameters']['width']
490 if width &lt; prerender[0]:
491     if len(temp_array):
492         ratio_text = float(cur_pos) / float(len(temp_array))
494         if ratio_text > (width / prerender[0]):
495             self.params['parameters']['text_left'] = (ratio_text * width) - (ratio_text * prerender[0])
496 else:
497     self.params['parameters']['text_left'] = 2
499 self.params['parameters']['render_text'] = temp_array.tounicode().encode()
501 self.raiseEvent('KEYDOWN', the_event['data'])
503 </do>
505     </behavior>
507     <behavior>
509       <on_event>KEYSTILLDOWN</on_event>
511       <do>
512 #self.event(the_event)
514 #print "debug", the_event['data']
516 self.event({'type': 'KEYDOWN', 'data': the_event['data']})
517 </do>
519     </behavior>
521   </widget>
523 </widgets>