Merge lp:wahcade into lp:~andy-balcombe/wahcade/0.99pre5

Proposed by rdsanles
Status: Needs review
Proposed branch: lp:wahcade
Merge into: lp:~andy-balcombe/wahcade/0.99pre5
Diff against target: 18656 lines (+7096/-2523)
67 files modified
.bzrignore (+8/-0)
VERSION (+1/-1)
bdist_debian.py (+16/-15)
build_deb_package (+1/-0)
config.dist/layouts/simple_1024x768/layout.lay (+551/-0)
config.dist/layouts/simple_1024x768/main.svg (+111/-0)
config.dist/layouts/simple_640x480/layout.lay (+551/-0)
config.dist/layouts/simple_640x480/main.svg (+111/-0)
config.dist/layouts/simple_800x600/layout.lay (+551/-0)
config.dist/layouts/simple_800x600/main.svg (+111/-0)
config.dist/wahcade.ini (+11/-9)
constants.py (+7/-7)
doc/CHANGELOG (+135/-55)
doc/INI_FILES (+8/-6)
doc/INSTALL (+6/-6)
doc/LAYOUT_EDITOR (+27/-25)
doc/README (+17/-13)
doc/TODO (+2/-2)
filters.py (+59/-44)
glade/layout_editor.glade (+3/-0)
glade/layout_editor.glade.bak (+2/-0)
glade/layout_editor.glade.h (+1/-0)
glade/wahcade_setup.glade (+107/-14)
glade/wahcade_setup.glade.bak (+108/-15)
glade/wahcade_setup.glade.h (+4/-0)
glade2.py (+3/-7)
gst_media.py (+85/-84)
install (+6/-0)
joystick.py (+40/-24)
key_consts.py (+6/-8)
layout_editor.py (+43/-43)
layout_props.py (+13/-12)
layout_scr_props.py (+3/-2)
make_all (+9/-5)
make_gettext (+2/-0)
make_tarball (+1/-1)
mamewah_ini.py (+7/-6)
po/de.po (+310/-249)
po/en_GB.po (+306/-247)
po/es.po (+311/-249)
po/fr.po (+298/-237)
po/it.po (+1573/-0)
po/messages.pot (+297/-237)
po/sv.po (+298/-237)
scrolled_list.py (+91/-106)
setup.py (+6/-4)
setup.py2exe.py (+2/-2)
templates/mednafen-lynx.ini (+62/-0)
templates/mednafen-pce-tg16.ini (+61/-0)
templates/vectrex.ini (+63/-0)
wahcade (+1/-1)
wahcade-layout-editor (+1/-1)
wahcade-layout-editor.py (+2/-2)
wahcade-setup (+1/-1)
wahcade-setup.py (+2/-3)
wahcade.py (+19/-6)
wahcade_files (+9/-0)
wc_common.py (+59/-40)
wc_setup.py (+174/-156)
win_cpviewer.py (+28/-16)
win_filter.py (+37/-32)
win_history.py (+22/-16)
win_list.py (+36/-36)
win_main.py (+240/-190)
win_message.py (+9/-3)
win_options.py (+13/-11)
win_scrsaver.py (+38/-37)
To merge this branch: bzr merge lp:wahcade
Reviewer Review Type Date Requested Status
Andy Balcombe Pending
Review via email: mp+5504@code.launchpad.net
To post a comment you must log in.
lp:wahcade updated
12. By Andy Balcombe <email address hidden>

nearly ready for 99pre8

13. By Andy Balcombe <email address hidden>

Fix #377827

14. By Andy Balcombe <email address hidden>

couple'o'fixes

15. By Andy Balcombe <email address hidden>

New music / movie options

16. By Andy Balcombe <email address hidden>

Italian translation

17. By Andy Balcombe <email address hidden>

Fix for 400054

18. By Andy Balcombe <email address hidden>

0.99pre8

19. By Andy Balcombe <email address hidden>

Some bug fixes

20. By Andy Balcombe <email address hidden>

Added scroll fix

21. By Andy Balcombe <email address hidden>

v1.0 pre1

22. By Andy Balcombe <email address hidden>

merged enrico-magrella/wahcade/20100413

23. By Andy Balcombe <email address hidden>

Fixed: #573073

24. By Andy Balcombe <email address hidden>

video playback rewrite, incomplete

25. By Andy Balcombe <email address hidden>

movie fix

Unmerged revisions

25. By Andy Balcombe <email address hidden>

movie fix

24. By Andy Balcombe <email address hidden>

video playback rewrite, incomplete

23. By Andy Balcombe <email address hidden>

Fixed: #573073

22. By Andy Balcombe <email address hidden>

merged enrico-magrella/wahcade/20100413

21. By Andy Balcombe <email address hidden>

v1.0 pre1

20. By Andy Balcombe <email address hidden>

Added scroll fix

19. By Andy Balcombe <email address hidden>

Some bug fixes

18. By Andy Balcombe <email address hidden>

0.99pre8

17. By Andy Balcombe <email address hidden>

Fix for 400054

16. By Andy Balcombe <email address hidden>

Italian translation

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file '.bzrignore'
--- .bzrignore 2009-01-07 17:51:46 +0000
+++ .bzrignore 2011-03-03 21:06:42 +0000
@@ -30,3 +30,11 @@
30.layout_editor.py.marks30.layout_editor.py.marks
31.wc_common.py.marks31.wc_common.py.marks
32.win_main.py.marks32.win_main.py.marks
33.wc_setup.py.marks
34glade/layout_editor.glade.bak
35glade/layout_editor.gladep.bak
36glade/wahcade_setup.glade.bak
37glade/wahcade_setup.gladep.bak
38make.log
39.win_filter.py.marks
40.filters.py.marks
3341
=== modified file 'VERSION'
--- VERSION 2008-11-30 10:26:19 +0000
+++ VERSION 2011-03-03 21:06:42 +0000
@@ -1,1 +1,1 @@
10.99pre511.0pre1
22
=== modified file 'bdist_debian.py'
--- bdist_debian.py 2008-11-30 15:09:04 +0000
+++ bdist_debian.py 2011-03-03 21:06:42 +0000
@@ -8,7 +8,8 @@
8#8#
9# Ammended for Wah!Cade by: Andy Balcombe <wahcade@anti-particle.com> 24-MAR-20089# Ammended for Wah!Cade by: Andy Balcombe <wahcade@anti-particle.com> 24-MAR-2008
1010
11import os, base6411import os
12import base64
12import hashlib13import hashlib
13from distutils.core import Command, Distribution14from distutils.core import Command, Distribution
14from distutils.dir_util import remove_tree15from distutils.dir_util import remove_tree
@@ -21,6 +22,7 @@
2122
2223
23class ControlFile(object):24class ControlFile(object):
25
24 def __init__(self, Installed_Size=0, Long_Description='', Description='', **kwargs):26 def __init__(self, Installed_Size=0, Long_Description='', Description='', **kwargs):
25 self.options = kwargs27 self.options = kwargs
26 self.description = Description28 self.description = Description
@@ -36,7 +38,7 @@
36 content = []38 content = []
37 for o in order:39 for o in order:
38 opt = o[2:]40 opt = o[2:]
39 if self.options.has_key(opt):41 if opt in self.options:
40 content.append('%s: %s' % (opt, self.options[opt]))42 content.append('%s: %s' % (opt, self.options[opt]))
41 #content=['%s: %s' % (k, v) for k,v in self.options.iteritems()]43 #content=['%s: %s' % (k, v) for k,v in self.options.iteritems()]
42 content.append('Installed-Size: %d' % self.installed_size)44 content.append('Installed-Size: %d' % self.installed_size)
@@ -101,7 +103,7 @@
101 md5sums_fn = './md5sums'103 md5sums_fn = './md5sums'
102 data_fn = 'data'104 data_fn = 'data'
103 tgz_ext = '.tar.gz'105 tgz_ext = '.tar.gz'
104 106
105 #107 #
106 md5 = ''108 md5 = ''
107 # build everything locally109 # build everything locally
@@ -121,7 +123,7 @@
121 [m.update(l) for l in file(fname, 'r').readlines()]123 [m.update(l) for l in file(fname, 'r').readlines()]
122 fname = fname.replace(build_dir, '')[1:]124 fname = fname.replace(build_dir, '')[1:]
123 md5 += '%s %s\n' % (m.hexdigest(), fname)125 md5 += '%s %s\n' % (m.hexdigest(), fname)
124 126
125 # make compressed tarball127 # make compressed tarball
126 self.make_archive(os.path.join(dist_dir, data_fn), 'gztar', root_dir=build_dir)128 self.make_archive(os.path.join(dist_dir, data_fn), 'gztar', root_dir=build_dir)
127129
@@ -130,17 +132,17 @@
130132
131 # create control file contents133 # create control file contents
132 ctl = ControlFile(134 ctl = ControlFile(
133 Package = self.name, 135 Package = self.name,
134 Version = self.version, 136 Version = self.version,
135 Section = self.section, 137 Section = self.section,
136 Priority = self.priority,138 Priority = self.priority,
137 Installed_Size = (installed_size / 1024) + 1, 139 Installed_Size = (installed_size / 1024) + 1,
138 Architecture = 'all', 140 Architecture = 'all',
139 Maintainer = self.maintainer,141 Maintainer = self.maintainer,
140 Depends = self.depends, 142 Depends = self.depends,
141 Description = self.description, 143 Description = self.description,
142 Long_Description = self.long_description,144 Long_Description = self.long_description,
143 Recommends = self.recommends, 145 Recommends = self.recommends,
144 Suggests = self.suggests).getContent()146 Suggests = self.suggests).getContent()
145147
146 # grab scripts148 # grab scripts
@@ -154,7 +156,7 @@
154156
155 # write control file157 # write control file
156 file(control_fn, 'wb').write(ctl)158 file(control_fn, 'wb').write(ctl)
157 159
158 #write md5sums file160 #write md5sums file
159 file(md5sums_fn, 'wb').write(md5)161 file(md5sums_fn, 'wb').write(md5)
160162
@@ -190,9 +192,8 @@
190# new.deb should not cause the same complaints192# new.deb should not cause the same complaints
191#rm -rf tmp193#rm -rf tmp
192""" % (package_filename)194""" % (package_filename)
193 195
194 #write the script & execute it196 #write the script & execute it
195 file('fix_deb', 'w').write(fix_script)197 file('fix_deb', 'w').write(fix_script)
196 os.chmod('fix_deb', 0755)198 os.chmod('fix_deb', 0755)
197 os.system('./fix_deb')199 os.system('./fix_deb')
198
199200
=== modified file 'build_deb_package'
--- build_deb_package 2008-11-30 15:09:04 +0000
+++ build_deb_package 2011-03-03 21:06:42 +0000
@@ -22,4 +22,5 @@
22sudo alien --to-rpm $SOURCE/dist/$NAME*$VERSION*.deb22sudo alien --to-rpm $SOURCE/dist/$NAME*$VERSION*.deb
23cp -f $SOURCE/$NAME*$VERSION*.rpm $WWW/projects/$NAME23cp -f $SOURCE/$NAME*$VERSION*.rpm $WWW/projects/$NAME
24mv -f $SOURCE/$NAME*$VERSION*.rpm $SOURCE/dist/rpms24mv -f $SOURCE/$NAME*$VERSION*.rpm $SOURCE/dist/rpms
25mv $SOURCE/dist/$NAME*$VERSION*.deb $SOURCE/dist/debs
2526
2627
=== added directory 'config.dist/layouts/simple_1024x768'
=== added file 'config.dist/layouts/simple_1024x768/layout.lay'
--- config.dist/layouts/simple_1024x768/layout.lay 1970-01-01 00:00:00 +0000
+++ config.dist/layouts/simple_1024x768/layout.lay 2011-03-03 21:06:42 +0000
@@ -0,0 +1,551 @@
1 1024
2 768
3 0
4 main.png
5 1
6 5066061
7 16777215
8False
9 0
10 8421504
11 16777215
12Sans
13True
14False
15 9.75
16 2
17 342
18 0
19 340
20 36
21True
22 1
23 0
24 16777215
25Arial
26True
27False
28 16.0
29 2
30 112
31 21
32 400
33 30
34True
35 1
36 0
37 16777215
38Arial
39True
40False
41 16.0
42 2
43 512
44 21
45 400
46 30
47True
48 1
49 0
50 16777215
51Arial
52True
53False
54 16
55 2
56 150
57 106
58 724
59 518
60True
61 1
62 0
63 255
64Sans
65True
66False
67 9.75
68 2
69 0
70 767
71 510
72 20
73False
74 1
75 8421504
76 16777215
77Sans
78True
79False
80 9.75
81 2
82 540
83 231
84 270
85 205
86False
87 1
88 8421504
89 16777215
90Sans
91True
92False
93 9.75
94 2
95 328
96 40
97 320
98 277
99False
100 1
101 8421504
102 16777215
103Sans
104True
105False
106 9.75
107 2
108 336
109 40
110 320
111 277
112False
113 1
114 8421504
115 16777215
116Sans
117True
118False
119 9.75
120 2
121 344
122 40
123 320
124 277
125False
126 1
127 8421504
128 16777215
129Sans
130True
131False
132 9.75
133 2
134 352
135 40
136 320
137 277
138False
139 1
140 8421504
141 16777215
142Sans
143True
144False
145 9.75
146 2
147 360
148 40
149 320
150 277
151False
152 1
153 8421504
154 16777215
155Sans
156True
157False
158 9.75
159 2
160 368
161 40
162 320
163 277
164False
165 1
166 8421504
167 16777215
168Sans
169True
170False
171 9.75
172 2
173 376
174 40
175 320
176 277
177False
178 1
179 8421504
180 16777215
181Sans
182True
183False
184 9.75
185 2
186 384
187 40
188 320
189 277
190False
191 1
192 8421504
193 16777215
194Sans
195True
196False
197 9.75
198 2
199 392
200 40
201 320
202 277
203False
204 1
205 0
206 13408512
207Sans
208True
209False
210 9.75
211 2
212 514
213 602
214 510
215 40
216False
217 1
218 0
219 16777215
220Sans
221True
222False
223 9.75
224 2
225 514
226 643
227 510
228 20
229False
230 1
231 0
232 16777215
233Sans
234True
235False
236 9.75
237 2
238 514
239 664
240 510
241 20
242False
243 1
244 0
245 16777215
246Sans
247True
248False
249 9.75
250 2
251 514
252 685
253 510
254 20
255False
256 1
257 0
258 16777215
259Sans
260True
261False
262 9.75
263 2
264 514
265 706
266 510
267 20
268False
269 1
270 0
271 16777215
272Sans
273True
274False
275 9.75
276 2
277 514
278 727
279 510
280 20
281False
282 1
283 0
284 16777215
285Sans
286True
287False
288 9.75
289 2
290 514
291 748
292 510
293 20
294 305
295 330
296 3289650
297
298 1
299 10485760
300 16777215
301True
302 1
303 3289650
304 255
305Sans
306True
307False
308 9.75
309 2
310 0
311 5
312 305
313 20
314True
315 1
316 3289650
317 65280
318Sans
319True
320False
321 9.75
322 2
323 0
324 32
325 305
326 225
327True
328 1
329 3289650
330 16777215
331Sans
332True
333False
334 9.75
335 2
336 0
337 259
338 305
339 20
340True
341 1
342 3289650
343 13408512
344Sans
345True
346False
347 9.75
348 2
349 0
350 281
351 305
352 45
353 337
354 260
355 3289650
356
357True
358 1
359 3289650
360 255
361Sans
362True
363False
364 9.75
365 2
366 0
367 32
368 337
369 20
370True
371 1
372 3289650
373 65280
374Sans
375True
376False
377 9.75
378 2
379 0
380 80
381 337
382 113
383True
384 1
385 3289650
386 13408512
387Sans
388True
389False
390 9.75
391 2
392 0
393 200
394 337
395 40
396True
397 0
398 8421504
399 16777215
400Sans
401True
402False
403 9.75
404 2
405 0
406 0
407 1024
408 720
409False
410 0
411 8421504
412 16777215
413Sans
414True
415False
416 9.75
417 2
418 524
419 0
420 500
421 400
422False
423 0
424 8421504
425 16777215
426Sans
427True
428False
429 9.75
430 2
431 0
432 401
433 1024
434 87
435False
436 0
437 8421504
438 16777215
439Sans
440True
441False
442 9.75
443 2
444 30
445 0
446 640
447 430
448False
449 0
450 8421504
451 16777215
452Sans
453True
454False
455 9.75
456 2
457 40
458 0
459 640
460 430
461False
462 0
463 8421504
464 16777215
465Sans
466True
467False
468 9.75
469 2
470 50
471 0
472 640
473 430
474False
475 0
476 8421504
477 16777215
478Sans
479True
480False
481 9.75
482 2
483 60
484 0
485 640
486 430
487False
488 0
489 8421504
490 16777215
491Sans
492True
493False
494 9.75
495 2
496 70
497 0
498 640
499 430
500False
501 0
502 8421504
503 16777215
504Sans
505True
506False
507 9.75
508 2
509 80
510 0
511 640
512 430
513False
514 0
515 8421504
516 16777215
517Sans
518True
519False
520 9.75
521 2
522 90
523 0
524 640
525 430
526True
527 1
528 0
529 13408512
530Sans
531True
532False
533 9.75
534 2
535 0
536 726
537 1024
538 20
539True
540 1
541 0
542 16777215
543Sans
544True
545False
546 9.75
547 2
548 0
549 748
550 1024
551 20
0552
=== added file 'config.dist/layouts/simple_1024x768/main.png'
1Binary files config.dist/layouts/simple_1024x768/main.png 1970-01-01 00:00:00 +0000 and config.dist/layouts/simple_1024x768/main.png 2011-03-03 21:06:42 +0000 differ553Binary files config.dist/layouts/simple_1024x768/main.png 1970-01-01 00:00:00 +0000 and config.dist/layouts/simple_1024x768/main.png 2011-03-03 21:06:42 +0000 differ
=== added file 'config.dist/layouts/simple_1024x768/main.svg'
--- config.dist/layouts/simple_1024x768/main.svg 1970-01-01 00:00:00 +0000
+++ config.dist/layouts/simple_1024x768/main.svg 2011-03-03 21:06:42 +0000
@@ -0,0 +1,111 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3<svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 width="1024"
12 height="768"
13 id="svg2882"
14 sodipodi:version="0.32"
15 inkscape:version="0.46"
16 version="1.0"
17 sodipodi:docname="Simple List.svg"
18 inkscape:output_extension="org.inkscape.output.svg.inkscape"
19 inkscape:export-filename="/home/richard/.wahcade/layouts/Simple_1024x768/Simple List.png"
20 inkscape:export-xdpi="90"
21 inkscape:export-ydpi="90">
22 <defs
23 id="defs2884">
24 <inkscape:perspective
25 sodipodi:type="inkscape:persp3d"
26 inkscape:vp_x="0 : 526.18109 : 1"
27 inkscape:vp_y="0 : 1000 : 0"
28 inkscape:vp_z="744.09448 : 526.18109 : 1"
29 inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
30 id="perspective2890" />
31 </defs>
32 <sodipodi:namedview
33 id="base"
34 pagecolor="#ffffff"
35 bordercolor="#666666"
36 borderopacity="1.0"
37 gridtolerance="10000"
38 guidetolerance="10"
39 objecttolerance="10"
40 inkscape:pageopacity="0.0"
41 inkscape:pageshadow="2"
42 inkscape:zoom="0.55827438"
43 inkscape:cx="278.37028"
44 inkscape:cy="735.94033"
45 inkscape:document-units="px"
46 inkscape:current-layer="layer1"
47 showgrid="false"
48 inkscape:showpageshadow="false"
49 showborder="true"
50 borderlayer="true"
51 inkscape:window-width="1024"
52 inkscape:window-height="702"
53 inkscape:window-x="0"
54 inkscape:window-y="24"
55 showguides="false"
56 inkscape:guide-bbox="true">
57 <sodipodi:guide
58 orientation="1,0"
59 position="616.18447,386.90653"
60 id="guide3692" />
61 <inkscape:grid
62 type="xygrid"
63 id="grid4014"
64 visible="true"
65 enabled="true" />
66 </sodipodi:namedview>
67 <metadata
68 id="metadata2887">
69 <rdf:RDF>
70 <cc:Work
71 rdf:about="">
72 <dc:format>image/svg+xml</dc:format>
73 <dc:type
74 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
75 </cc:Work>
76 </rdf:RDF>
77 </metadata>
78 <g
79 inkscape:label="Layer 1"
80 inkscape:groupmode="layer"
81 id="layer1"
82 style="display:inline">
83 <rect
84 style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.99000001;stroke-miterlimit:4.4000001;stroke-dasharray:0.99, 5.94;stroke-dashoffset:0"
85 id="rect2898"
86 width="1314.2858"
87 height="1062.8572"
88 x="-149.10706"
89 y="-205.07777"
90 ry="21.73378" />
91 <text
92 xml:space="preserve"
93 style="font-size:100px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Technique BRK;-inkscape-font-specification:Technique BRK"
94 x="211.28438"
95 y="758"
96 id="text2892"
97 sodipodi:linespacing="100%"><tspan
98 sodipodi:role="line"
99 id="tspan2894"
100 x="211.28438"
101 y="758">Wah!Cade</tspan></text>
102 <rect
103 style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.70753038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
104 id="rect2398"
105 width="810"
106 height="48.292469"
107 x="107"
108 y="12.853765"
109 ry="10.747403" />
110 </g>
111</svg>
0112
=== added directory 'config.dist/layouts/simple_640x480'
=== added file 'config.dist/layouts/simple_640x480/layout.lay'
--- config.dist/layouts/simple_640x480/layout.lay 1970-01-01 00:00:00 +0000
+++ config.dist/layouts/simple_640x480/layout.lay 2011-03-03 21:06:42 +0000
@@ -0,0 +1,551 @@
1 640
2 480
3 0
4 main.png
5 1
6 5066061
7 16777215
8False
9 0
10 8421504
11 16777215
12Sans
13True
14False
15 9.75
16 2
17 342
18 0
19 340
20 36
21True
22 1
23 0
24 16777215
25Arial
26True
27False
28 16.0
29 2
30 30
31 19
32 280
33 30
34True
35 1
36 0
37 16777215
38Arial
39True
40False
41 16.0
42 2
43 328
44 19
45 280
46 30
47True
48 1
49 0
50 16777215
51Arial
52True
53False
54 16.0
55 2
56 24
57 62
58 589
59 314
60True
61 1
62 0
63 255
64Sans
65True
66False
67 9.75
68 2
69 0
70 767
71 510
72 20
73False
74 1
75 8421504
76 16777215
77Sans
78True
79False
80 9.75
81 2
82 540
83 231
84 270
85 205
86False
87 1
88 8421504
89 16777215
90Sans
91True
92False
93 9.75
94 2
95 328
96 40
97 320
98 277
99False
100 1
101 8421504
102 16777215
103Sans
104True
105False
106 9.75
107 2
108 336
109 40
110 320
111 277
112False
113 1
114 8421504
115 16777215
116Sans
117True
118False
119 9.75
120 2
121 344
122 40
123 320
124 277
125False
126 1
127 8421504
128 16777215
129Sans
130True
131False
132 9.75
133 2
134 352
135 40
136 320
137 277
138False
139 1
140 8421504
141 16777215
142Sans
143True
144False
145 9.75
146 2
147 360
148 40
149 320
150 277
151False
152 1
153 8421504
154 16777215
155Sans
156True
157False
158 9.75
159 2
160 368
161 40
162 320
163 277
164False
165 1
166 8421504
167 16777215
168Sans
169True
170False
171 9.75
172 2
173 376
174 40
175 320
176 277
177False
178 1
179 8421504
180 16777215
181Sans
182True
183False
184 9.75
185 2
186 384
187 40
188 320
189 277
190False
191 1
192 8421504
193 16777215
194Sans
195True
196False
197 9.75
198 2
199 392
200 40
201 320
202 277
203False
204 1
205 0
206 13408512
207Sans
208True
209False
210 9.75
211 2
212 514
213 602
214 510
215 40
216False
217 1
218 0
219 16777215
220Sans
221True
222False
223 9.75
224 2
225 514
226 643
227 510
228 20
229False
230 1
231 0
232 16777215
233Sans
234True
235False
236 9.75
237 2
238 514
239 664
240 510
241 20
242False
243 1
244 0
245 16777215
246Sans
247True
248False
249 9.75
250 2
251 514
252 685
253 510
254 20
255False
256 1
257 0
258 16777215
259Sans
260True
261False
262 9.75
263 2
264 514
265 706
266 510
267 20
268False
269 1
270 0
271 16777215
272Sans
273True
274False
275 9.75
276 2
277 514
278 727
279 510
280 20
281False
282 1
283 0
284 16777215
285Sans
286True
287False
288 9.75
289 2
290 514
291 748
292 510
293 20
294 305
295 330
296 3289650
297
298 1
299 10485760
300 16777215
301True
302 1
303 3289650
304 255
305Sans
306True
307False
308 9.75
309 2
310 0
311 5
312 305
313 20
314True
315 1
316 3289650
317 65280
318Sans
319True
320False
321 9.75
322 2
323 0
324 32
325 305
326 225
327True
328 1
329 3289650
330 16777215
331Sans
332True
333False
334 9.75
335 2
336 0
337 259
338 305
339 20
340True
341 1
342 3289650
343 13408512
344Sans
345True
346False
347 9.75
348 2
349 0
350 281
351 305
352 45
353 337
354 260
355 3289650
356
357True
358 1
359 3289650
360 255
361Sans
362True
363False
364 9.75
365 2
366 0
367 32
368 337
369 20
370True
371 1
372 3289650
373 65280
374Sans
375True
376False
377 9.75
378 2
379 0
380 80
381 337
382 113
383True
384 1
385 3289650
386 13408512
387Sans
388True
389False
390 9.75
391 2
392 0
393 200
394 337
395 40
396True
397 0
398 8421504
399 16777215
400Sans
401True
402False
403 9.75
404 2
405 0
406 0
407 1024
408 720
409False
410 0
411 8421504
412 16777215
413Sans
414True
415False
416 9.75
417 2
418 524
419 0
420 500
421 400
422False
423 0
424 8421504
425 16777215
426Sans
427True
428False
429 9.75
430 2
431 0
432 401
433 1024
434 87
435False
436 0
437 8421504
438 16777215
439Sans
440True
441False
442 9.75
443 2
444 30
445 0
446 640
447 430
448False
449 0
450 8421504
451 16777215
452Sans
453True
454False
455 9.75
456 2
457 40
458 0
459 640
460 430
461False
462 0
463 8421504
464 16777215
465Sans
466True
467False
468 9.75
469 2
470 50
471 0
472 640
473 430
474False
475 0
476 8421504
477 16777215
478Sans
479True
480False
481 9.75
482 2
483 60
484 0
485 640
486 430
487False
488 0
489 8421504
490 16777215
491Sans
492True
493False
494 9.75
495 2
496 70
497 0
498 640
499 430
500False
501 0
502 8421504
503 16777215
504Sans
505True
506False
507 9.75
508 2
509 80
510 0
511 640
512 430
513False
514 0
515 8421504
516 16777215
517Sans
518True
519False
520 9.75
521 2
522 90
523 0
524 640
525 430
526True
527 1
528 0
529 13408512
530Sans
531True
532False
533 9.75
534 2
535 0
536 726
537 1024
538 20
539True
540 1
541 0
542 16777215
543Sans
544True
545False
546 9.75
547 2
548 0
549 748
550 1024
551 20
0552
=== added file 'config.dist/layouts/simple_640x480/main.png'
1Binary files config.dist/layouts/simple_640x480/main.png 1970-01-01 00:00:00 +0000 and config.dist/layouts/simple_640x480/main.png 2011-03-03 21:06:42 +0000 differ553Binary files config.dist/layouts/simple_640x480/main.png 1970-01-01 00:00:00 +0000 and config.dist/layouts/simple_640x480/main.png 2011-03-03 21:06:42 +0000 differ
=== added file 'config.dist/layouts/simple_640x480/main.svg'
--- config.dist/layouts/simple_640x480/main.svg 1970-01-01 00:00:00 +0000
+++ config.dist/layouts/simple_640x480/main.svg 2011-03-03 21:06:42 +0000
@@ -0,0 +1,111 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3<svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 width="640"
12 height="480"
13 id="svg2882"
14 sodipodi:version="0.32"
15 inkscape:version="0.46"
16 version="1.0"
17 sodipodi:docname="Simple List.svg"
18 inkscape:output_extension="org.inkscape.output.svg.inkscape"
19 inkscape:export-filename="/home/richard/.wahcade/layouts/Simple_1024x768/Simple List.png"
20 inkscape:export-xdpi="90"
21 inkscape:export-ydpi="90">
22 <defs
23 id="defs2884">
24 <inkscape:perspective
25 sodipodi:type="inkscape:persp3d"
26 inkscape:vp_x="0 : 526.18109 : 1"
27 inkscape:vp_y="0 : 1000 : 0"
28 inkscape:vp_z="744.09448 : 526.18109 : 1"
29 inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
30 id="perspective2890" />
31 </defs>
32 <sodipodi:namedview
33 id="base"
34 pagecolor="#ffffff"
35 bordercolor="#666666"
36 borderopacity="1.0"
37 gridtolerance="10000"
38 guidetolerance="10"
39 objecttolerance="10"
40 inkscape:pageopacity="0.0"
41 inkscape:pageshadow="2"
42 inkscape:zoom="0.45725805"
43 inkscape:cx="264.19102"
44 inkscape:cy="91.737357"
45 inkscape:document-units="px"
46 inkscape:current-layer="layer1"
47 showgrid="false"
48 inkscape:showpageshadow="false"
49 showborder="true"
50 borderlayer="true"
51 inkscape:window-width="1024"
52 inkscape:window-height="702"
53 inkscape:window-x="0"
54 inkscape:window-y="24"
55 showguides="false"
56 inkscape:guide-bbox="true">
57 <sodipodi:guide
58 orientation="1,0"
59 position="616.18447,386.90653"
60 id="guide3692" />
61 <inkscape:grid
62 type="xygrid"
63 id="grid4014"
64 visible="true"
65 enabled="true" />
66 </sodipodi:namedview>
67 <metadata
68 id="metadata2887">
69 <rdf:RDF>
70 <cc:Work
71 rdf:about="">
72 <dc:format>image/svg+xml</dc:format>
73 <dc:type
74 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
75 </cc:Work>
76 </rdf:RDF>
77 </metadata>
78 <g
79 inkscape:label="Layer 1"
80 inkscape:groupmode="layer"
81 id="layer1"
82 style="display:inline">
83 <rect
84 style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.99000001;stroke-miterlimit:4.4000001;stroke-dasharray:0.99, 5.94;stroke-dashoffset:0"
85 id="rect2898"
86 width="1314.2858"
87 height="1062.8572"
88 x="-337.14288"
89 y="-291.42859"
90 ry="21.73378" />
91 <text
92 xml:space="preserve"
93 style="font-size:100px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Technique BRK;-inkscape-font-specification:Technique BRK"
94 x="19.284374"
95 y="470"
96 id="text2892"
97 sodipodi:linespacing="100%"><tspan
98 sodipodi:role="line"
99 id="tspan2894"
100 x="19.284374"
101 y="470">Wah!Cade</tspan></text>
102 <rect
103 style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.70753038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
104 id="rect2398"
105 width="600"
106 height="48.292469"
107 x="20"
108 y="10"
109 ry="10.747403" />
110 </g>
111</svg>
0112
=== added directory 'config.dist/layouts/simple_800x600'
=== added file 'config.dist/layouts/simple_800x600/layout.lay'
--- config.dist/layouts/simple_800x600/layout.lay 1970-01-01 00:00:00 +0000
+++ config.dist/layouts/simple_800x600/layout.lay 2011-03-03 21:06:42 +0000
@@ -0,0 +1,551 @@
1 800
2 600
3 0
4 main.png
5 1
6 5066061
7 16777215
8False
9 0
10 8421504
11 16777215
12Sans
13True
14False
15 9.75
16 2
17 342
18 0
19 340
20 36
21True
22 1
23 0
24 16777215
25Arial
26True
27False
28 16.0
29 2
30 25
31 19
32 370
33 30
34True
35 1
36 0
37 16777215
38Arial
39True
40False
41 16.0
42 2
43 404
44 19
45 370
46 30
47True
48 1
49 0
50 16777215
51Arial
52True
53False
54 16.0
55 2
56 26
57 65
58 749
59 424
60True
61 1
62 0
63 255
64Sans
65True
66False
67 9.75
68 2
69 0
70 767
71 510
72 20
73False
74 1
75 8421504
76 16777215
77Sans
78True
79False
80 9.75
81 2
82 540
83 231
84 270
85 205
86False
87 1
88 8421504
89 16777215
90Sans
91True
92False
93 9.75
94 2
95 328
96 40
97 320
98 277
99False
100 1
101 8421504
102 16777215
103Sans
104True
105False
106 9.75
107 2
108 336
109 40
110 320
111 277
112False
113 1
114 8421504
115 16777215
116Sans
117True
118False
119 9.75
120 2
121 344
122 40
123 320
124 277
125False
126 1
127 8421504
128 16777215
129Sans
130True
131False
132 9.75
133 2
134 352
135 40
136 320
137 277
138False
139 1
140 8421504
141 16777215
142Sans
143True
144False
145 9.75
146 2
147 360
148 40
149 320
150 277
151False
152 1
153 8421504
154 16777215
155Sans
156True
157False
158 9.75
159 2
160 368
161 40
162 320
163 277
164False
165 1
166 8421504
167 16777215
168Sans
169True
170False
171 9.75
172 2
173 376
174 40
175 320
176 277
177False
178 1
179 8421504
180 16777215
181Sans
182True
183False
184 9.75
185 2
186 384
187 40
188 320
189 277
190False
191 1
192 8421504
193 16777215
194Sans
195True
196False
197 9.75
198 2
199 392
200 40
201 320
202 277
203False
204 1
205 0
206 13408512
207Sans
208True
209False
210 9.75
211 2
212 514
213 602
214 510
215 40
216False
217 1
218 0
219 16777215
220Sans
221True
222False
223 9.75
224 2
225 514
226 643
227 510
228 20
229False
230 1
231 0
232 16777215
233Sans
234True
235False
236 9.75
237 2
238 514
239 664
240 510
241 20
242False
243 1
244 0
245 16777215
246Sans
247True
248False
249 9.75
250 2
251 514
252 685
253 510
254 20
255False
256 1
257 0
258 16777215
259Sans
260True
261False
262 9.75
263 2
264 514
265 706
266 510
267 20
268False
269 1
270 0
271 16777215
272Sans
273True
274False
275 9.75
276 2
277 514
278 727
279 510
280 20
281False
282 1
283 0
284 16777215
285Sans
286True
287False
288 9.75
289 2
290 514
291 748
292 510
293 20
294 305
295 330
296 3289650
297
298 1
299 10485760
300 16777215
301True
302 1
303 3289650
304 255
305Sans
306True
307False
308 9.75
309 2
310 0
311 5
312 305
313 20
314True
315 1
316 3289650
317 65280
318Sans
319True
320False
321 9.75
322 2
323 0
324 32
325 305
326 225
327True
328 1
329 3289650
330 16777215
331Sans
332True
333False
334 9.75
335 2
336 0
337 259
338 305
339 20
340True
341 1
342 3289650
343 13408512
344Sans
345True
346False
347 9.75
348 2
349 0
350 281
351 305
352 45
353 337
354 260
355 3289650
356
357True
358 1
359 3289650
360 255
361Sans
362True
363False
364 9.75
365 2
366 0
367 32
368 337
369 20
370True
371 1
372 3289650
373 65280
374Sans
375True
376False
377 9.75
378 2
379 0
380 80
381 337
382 113
383True
384 1
385 3289650
386 13408512
387Sans
388True
389False
390 9.75
391 2
392 0
393 200
394 337
395 40
396True
397 0
398 8421504
399 16777215
400Sans
401True
402False
403 9.75
404 2
405 0
406 0
407 1024
408 720
409False
410 0
411 8421504
412 16777215
413Sans
414True
415False
416 9.75
417 2
418 524
419 0
420 500
421 400
422False
423 0
424 8421504
425 16777215
426Sans
427True
428False
429 9.75
430 2
431 0
432 401
433 1024
434 87
435False
436 0
437 8421504
438 16777215
439Sans
440True
441False
442 9.75
443 2
444 30
445 0
446 640
447 430
448False
449 0
450 8421504
451 16777215
452Sans
453True
454False
455 9.75
456 2
457 40
458 0
459 640
460 430
461False
462 0
463 8421504
464 16777215
465Sans
466True
467False
468 9.75
469 2
470 50
471 0
472 640
473 430
474False
475 0
476 8421504
477 16777215
478Sans
479True
480False
481 9.75
482 2
483 60
484 0
485 640
486 430
487False
488 0
489 8421504
490 16777215
491Sans
492True
493False
494 9.75
495 2
496 70
497 0
498 640
499 430
500False
501 0
502 8421504
503 16777215
504Sans
505True
506False
507 9.75
508 2
509 80
510 0
511 640
512 430
513False
514 0
515 8421504
516 16777215
517Sans
518True
519False
520 9.75
521 2
522 90
523 0
524 640
525 430
526True
527 1
528 0
529 13408512
530Sans
531True
532False
533 9.75
534 2
535 0
536 726
537 1024
538 20
539True
540 1
541 0
542 16777215
543Sans
544True
545False
546 9.75
547 2
548 0
549 748
550 1024
551 20
0552
=== added file 'config.dist/layouts/simple_800x600/main.png'
1Binary files config.dist/layouts/simple_800x600/main.png 1970-01-01 00:00:00 +0000 and config.dist/layouts/simple_800x600/main.png 2011-03-03 21:06:42 +0000 differ553Binary files config.dist/layouts/simple_800x600/main.png 1970-01-01 00:00:00 +0000 and config.dist/layouts/simple_800x600/main.png 2011-03-03 21:06:42 +0000 differ
=== added file 'config.dist/layouts/simple_800x600/main.svg'
--- config.dist/layouts/simple_800x600/main.svg 1970-01-01 00:00:00 +0000
+++ config.dist/layouts/simple_800x600/main.svg 2011-03-03 21:06:42 +0000
@@ -0,0 +1,111 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) -->
3<svg
4 xmlns:dc="http://purl.org/dc/elements/1.1/"
5 xmlns:cc="http://creativecommons.org/ns#"
6 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
7 xmlns:svg="http://www.w3.org/2000/svg"
8 xmlns="http://www.w3.org/2000/svg"
9 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
10 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
11 width="800"
12 height="600"
13 id="svg2882"
14 sodipodi:version="0.32"
15 inkscape:version="0.46"
16 version="1.0"
17 sodipodi:docname="Simple List.svg"
18 inkscape:output_extension="org.inkscape.output.svg.inkscape"
19 inkscape:export-filename="/home/richard/.wahcade/layouts/Simple_1024x768/Simple List.png"
20 inkscape:export-xdpi="90"
21 inkscape:export-ydpi="90">
22 <defs
23 id="defs2884">
24 <inkscape:perspective
25 sodipodi:type="inkscape:persp3d"
26 inkscape:vp_x="0 : 526.18109 : 1"
27 inkscape:vp_y="0 : 1000 : 0"
28 inkscape:vp_z="744.09448 : 526.18109 : 1"
29 inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
30 id="perspective2890" />
31 </defs>
32 <sodipodi:namedview
33 id="base"
34 pagecolor="#ffffff"
35 bordercolor="#666666"
36 borderopacity="1.0"
37 gridtolerance="10000"
38 guidetolerance="10"
39 objecttolerance="10"
40 inkscape:pageopacity="0.0"
41 inkscape:pageshadow="2"
42 inkscape:zoom="0.23758383"
43 inkscape:cx="-69.308041"
44 inkscape:cy="306.04419"
45 inkscape:document-units="px"
46 inkscape:current-layer="layer1"
47 showgrid="false"
48 inkscape:showpageshadow="false"
49 showborder="true"
50 borderlayer="true"
51 inkscape:window-width="1024"
52 inkscape:window-height="702"
53 inkscape:window-x="0"
54 inkscape:window-y="24"
55 showguides="false"
56 inkscape:guide-bbox="true">
57 <sodipodi:guide
58 orientation="1,0"
59 position="616.18447,386.90653"
60 id="guide3692" />
61 <inkscape:grid
62 type="xygrid"
63 id="grid4014"
64 visible="true"
65 enabled="true" />
66 </sodipodi:namedview>
67 <metadata
68 id="metadata2887">
69 <rdf:RDF>
70 <cc:Work
71 rdf:about="">
72 <dc:format>image/svg+xml</dc:format>
73 <dc:type
74 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
75 </cc:Work>
76 </rdf:RDF>
77 </metadata>
78 <g
79 inkscape:label="Layer 1"
80 inkscape:groupmode="layer"
81 id="layer1"
82 style="display:inline">
83 <rect
84 style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.99000001;stroke-miterlimit:4.4000001;stroke-dasharray:0.99, 5.94;stroke-dashoffset:0"
85 id="rect2898"
86 width="1314.2858"
87 height="1062.8572"
88 x="-257.14288"
89 y="-231.42859"
90 ry="21.73378" />
91 <text
92 xml:space="preserve"
93 style="font-size:100px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Technique BRK;-inkscape-font-specification:Technique BRK"
94 x="99.284378"
95 y="590"
96 id="text2892"
97 sodipodi:linespacing="100%"><tspan
98 sodipodi:role="line"
99 id="tspan2894"
100 x="99.284378"
101 y="590">Wah!Cade</tspan></text>
102 <rect
103 style="opacity:1;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:1.70753038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
104 id="rect2398"
105 width="760"
106 height="48.292469"
107 x="20"
108 y="10"
109 ry="10.747403" />
110 </g>
111</svg>
0112
=== modified file 'config.dist/wahcade.ini'
--- config.dist/wahcade.ini 2009-01-07 17:51:46 +0000
+++ config.dist/wahcade.ini 2011-03-03 21:06:42 +0000
@@ -1,9 +1,11 @@
1### wahcade.ini (wahcade v0.99) ###1### wahcade.ini (wahcade v0.99) ###
22
3### Addtionnal Wah!Cade Options ###3### Addtional Wah!Cade Options (not used by MameWAH) ###
4fullscreen 14fullscreen 1
5setup_window_size 400x2005setup_window_size 400x200
6layout_orientation 06layout_orientation 0
7show_list_arrows 0
8shuffle_music 0
79
8### (Global) Screen-Saver Options ###10### (Global) Screen-Saver Options ###
9delay 30011delay 300
@@ -12,13 +14,13 @@
12### Audio Options ###14### Audio Options ###
13enable_sounds 015enable_sounds 0
14sound_volume 10016sound_volume 100
15music_path 17music_path
16enable_music 018enable_music 0
17music_volume 7019music_volume 70
1820
19### Movie Options ###21### Movie Options ###
20intro_movie_file 22intro_movie_file
21exit_movie_file 23exit_movie_file
22keep_movie_preview_aspect game_aspect24keep_movie_preview_aspect game_aspect
23delay_before_movie_preview 725delay_before_movie_preview 7
24music_movie_mix mute_movies26music_movie_mix mute_movies
@@ -35,14 +37,14 @@
35safe_mode 037safe_mode 0
36show_cursor 038show_cursor 0
37keyboard_led_states -,-,-39keyboard_led_states -,-,-
38winipac_file 40winipac_file
39mamewah_ipc_file 41mamewah_ipc_file
40lcd_com_port 142lcd_com_port 1
41lcd_settings 43lcd_settings
42exit_action choice44exit_action choice
43app_to_run_on_exit 45app_to_run_on_exit
4446
45### Settings used by MAMEWAH ###47### Settings used by MAMEWAH ###
46current_emulator mame48current_emulator mame
47locked 049locked 0
48last_ipc 50last_ipc
4951
=== modified file 'constants.py'
--- constants.py 2009-01-07 17:51:46 +0000
+++ constants.py 2011-03-03 21:06:42 +0000
@@ -4,7 +4,7 @@
4# Application: wah!cade4# Application: wah!cade
5# File: constants.py5# File: constants.py
6# Description: constants file6# Description: constants file
7# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>7# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
8###8###
9#9#
10# This program is free software; you can redistribute it and/or modify10# This program is free software; you can redistribute it and/or modify
@@ -30,8 +30,9 @@
30#application constants30#application constants
31APP_NAME = 'wahcade'31APP_NAME = 'wahcade'
32APP_PATH = os.path.abspath(os.getcwd())32APP_PATH = os.path.abspath(os.getcwd())
33VERSION = '0.99pre5'33CONFIG_DIR = os.path.expanduser('~/.wahcade')
34VERSION_NAME = "Themed Indeed"34VERSION = '1.0pre1'
35VERSION_NAME = "Here we are"
35LAYOUT_GLADE_FILE = os.path.join(APP_PATH, 'glade', 'layout_editor.glade')36LAYOUT_GLADE_FILE = os.path.join(APP_PATH, 'glade', 'layout_editor.glade')
36SETUP_GLADE_FILE = os.path.join(APP_PATH, 'glade', 'wahcade_setup.glade')37SETUP_GLADE_FILE = os.path.join(APP_PATH, 'glade', 'wahcade_setup.glade')
37LOCALE_DIR = os.path.join(APP_PATH, 'locale')38LOCALE_DIR = os.path.join(APP_PATH, 'locale')
@@ -49,9 +50,9 @@
49MAME_INI_FILES = ['mame', 'xmame', 'sdlmame', 'advmame', 'mame32', 'mameosx']50MAME_INI_FILES = ['mame', 'xmame', 'sdlmame', 'advmame', 'mame32', 'mameosx']
5051
51#file types52#file types
52IMAGE_FILETYPES= ['png', 'jpg', 'jpeg', 'bmp', 'gif']53IMAGE_FILETYPES= ['jpg', 'jpeg', 'png', 'bmp', 'gif']
53MOVIE_FILETYPES= ['avi', 'mpg', 'ogg', 'ogv']54MOVIE_FILETYPES= ['avi', 'mpg', 'mpeg', 'ogg', 'ogv', 'mp4', 'mov', 'wmv', 'flv', 'mkv']
54MUSIC_FILESPEC = '*.ogg;*.oga;*.mp3;*.flac'55MUSIC_FILESPEC = '*.ogg;*.oga;*.mp3;*.flac;*.mid'
5556
56#maximum number of lists per emulator57#maximum number of lists per emulator
57MAX_LISTS = 10058MAX_LISTS = 100
@@ -79,4 +80,3 @@
79FTR_CLONES_NO = 080FTR_CLONES_NO = 0
80FTR_CLONES_YES = 181FTR_CLONES_YES = 1
81FTR_CLONES_BETTER = 282FTR_CLONES_BETTER = 2
82
8383
=== modified file 'doc/CHANGELOG'
--- doc/CHANGELOG 2009-01-11 16:29:58 +0000
+++ doc/CHANGELOG 2011-03-03 21:06:42 +0000
@@ -1,13 +1,93 @@
1Wah!Cade CHANGELOG1Wah!Cade CHANGELOG
2==================2==================
303.Mar.02011 - Movie fix done? Maybe?
407.Jan.02011 - Movie fix nearly completed.
5 - Fixed "updatetotalgames()" bug when adding game ot list manually.
601.Oct.02010 - Added fix to remove_current_game. Thanks to Enrico Magrella.
727.May.02010 - Tweaked scrolled list row calcs. Thanks to sairuk for pointers.
8 - Tweaked start / stop timer code.
909.May.02010 - Fixed #573073: setup crashes with sdlmame 0.137u3. Added
10 "keyboard" to list of controller types. Thanks to iamlost.
1122.Apr.02010 - Merged Wahcade Setup list changes from Enrico Magrella.
1202.Apr.02010 - Made "scroll-fix" the default. Use "--old-key-handler" option to
13 revert to old keyboard event handling method.
1401.Apr.02010 - Added extra movie file types. Thanks to Vítor Baptista.
1503.Feb.02010 - Added "--scroll-fix" workaround option to try and improve
16 scrolling performance on systems that seem to have broken
17 key-press / key-release events (e.g. ubuntu 9.10).
18 - Requried minimum pygtk version is now 2.12.
19 - Fixed bug in history viewer (caused by #376142).
2001.Feb.02010 - Removed unneccessary gtk.glade dependency for most files.
21 - Made config dir easier to change (now in constants.py).
2221.Jan.02010 - Removed old gtk.Toolips() call.
23 - Increased default height of wahcade-setup to 400 pixels.
24 - Fixed video playback issue reported by alain40.
2511.Jan.02010 - Changed filters.py to fix #376142. Thanks to Jason Carter for
26 supplying the fix.
2724.Dec.02009 - Adding midi files to music filespec.
2819.Jul.02009 - Released 0.99pre8 "Could it be?".
29 - Fixed empty game description which could appear in lists.
30 - Fixed #400054: Missing games in filters. Thanks to 3vi1 for
31 reporting this.
3206.Jul.02009 - Added Italian translation. Thanks to Diego Pierotto.
3328.Jun.02009 - Stoped music playing during intro / exit movies (reported by
34 Pinball Wizard).
35 - Added shuffle option for music playlists.
36 - Use music_movie_mix in wahcade.ini (merge / mute_movie settings).
3715.Jun.02009 - Fixed problem with cpviewler layout images. Thanks to the Pinball
38 Wizard for spotting this.
3910.Jun.02009 - Hopefully fixed bug #382247. Thanks to hamelg.
4009.Jun.02009 - Fixed background image bug reported in the forums by dirkomatic.
41 Please see the LAYOUT_EDITOR document for more information
42 on how background images are selected.
4319.May.02009 - Fixed small bug when writing ctrlr .ini file (missing " chars).
44 - Fixed #377827: Launching emulator with alternative command-line
45 options doesn't always work. Thanks to Jason Carter.
4617.May.02009 - Added "no-pygame" option to disable all joystick use.
47 This can be used in combination with --no-gstreamer to definitely
48 stop Wah!Cade grabbing the sound device.
49 - Added "simple" layouts from battlecat.
50 - Fixed #318606: IndexError: list index out of range.
5114.Apr.02009 - Pressing Escape key should close Property dialogs on Layout
52 Editor.
53 - Added mednafen-pce-tg16.ini template from battlecat.
54 - Renamed mednafen.ini to madnafe-lynx.ini.
5530.Mar.02009 - Released 0.99pre7 "Dizzy".
5628.Mar.02009 - Fixed #350088: UnboundLocalError.
57 - Added some debug text to get some more info on #318921.
5827.Mar.02009 - Released 0.99pre6 "Flumped".
5926.Mar.02009 - Added "no-gstreamer" option to disable all music / video.
6016.Mar.02009 - Yet another attempt at fixing #318921 (joystick looping).
6115.Mar.02009 - Another attempt at fixing #318921 (joystick looping).
6202.Mar.02009 - Fix for #318877 (launch game with invalid external app).
63 - Added mednafen (Zombie) and Vectrex (battlecat) templates.
64 - Added new wahcade.ini option ("show_list_arrows"). Set to 1 to
65 show scroll up/down arrows in Games, Options and History Lists.
66 - Set delay_before_movie_preview to 0 to disable movie playback.
6726.Feb.02009 - Formatted code according to (most) PEP8 standards.
68 - Fixed bug that stopped Mame XML / Catver info from populating in
69 Setup Editor.
7005.Feb.02009 - Another tweak to scrolled_list.py (setattr).
7104.Feb.02009 - Fixed potential bug in Setup Editor where mame settings might not
72 get saved.
73 - Partially fixed #324750 (controls.ini error).
7403.Feb.02009 - New simpler version of Scrolled list - hopefully this will be
75 faster.
7627.Jan.02009 - Added functions to set busy / normal mouse cursor.
77 - Possible fix for #318921 (joystick looping).
7825.Jan.02009 - Fixed #318606 (bug when emulator exe does not exist).
79 - Message window can now wait for a key press to continue.
8019.Jan.02009 - Joystick test label now updates properly in Setup Editor.
8116.Jan.02009 - Fixes for #317750 and #316668 (crashes on startup).
82 - Released 0.99pre5.1 "Fixed Indeed".
311.Jan.02009 - Released 0.99pre5 "Themed Indeed".8311.Jan.02009 - Released 0.99pre5 "Themed Indeed".
410.Jan.02009 - Fixed a few problems with list editor.8410.Jan.02009 - Fixed a few problems with list editor.
5 - List editor will now attempt to create a list if empty (#0 only).85 - List editor will now attempt to create a list if empty (#0 only).
6 - Added Daphne template from Gabesword.86 - Added Daphne template from Gabesword.
704.Jan.02009 - Fixed Layout Editor screen sizing.8704.Jan.02009 - Fixed Layout Editor screen sizing.
824.Dec.02008 - More rotation / layout rework.8824.Dec.02008 - More rotation / layout rework.
923.Dec.02008 - Reworked rotation code. 8923.Dec.02008 - Reworked rotation code.
1022.Dec.02008 - Fixed default layouts in Layout Editor. 9022.Dec.02008 - Fixed default layouts in Layout Editor.
11 - Disabled Layout Drop down in Layout Editor as it keeps getting91 - Disabled Layout Drop down in Layout Editor as it keeps getting
12 the focus when it shouldn't.92 the focus when it shouldn't.
13 - Created a retro 90deg rotated theme.93 - Created a retro 90deg rotated theme.
@@ -21,7 +101,7 @@
21 - Fixed #308973: History Viewer Traceback Crash.101 - Fixed #308973: History Viewer Traceback Crash.
22 Thanks to battlecat for reporting this one.102 Thanks to battlecat for reporting this one.
2307.Dec.02008 - Finished "one window" changes.10307.Dec.02008 - Finished "one window" changes.
2405.Dec.02008 - Started change to use just "one window". Should fix lots of the 10405.Dec.02008 - Started change to use just "one window". Should fix lots of the
25 focus problems. This should also fix the message window display.105 focus problems. This should also fix the message window display.
2630.Nov.02008 - Checked code into launchpad.10630.Nov.02008 - Checked code into launchpad.
27 - Fixed layout directory naming bug in setup.py.107 - Fixed layout directory naming bug in setup.py.
@@ -30,7 +110,7 @@
30 Thanks to blokeinlondon for reporting this.110 Thanks to blokeinlondon for reporting this.
3126.Nov.02008 - Fixed #301492: Screensaver - changes window type.11126.Nov.02008 - Fixed #301492: Screensaver - changes window type.
32 Thanks to spudgunman for reporting this.112 Thanks to spudgunman for reporting this.
3325.Nov.02008 - Wah!Cade bugs now on launchpad. 11325.Nov.02008 - Wah!Cade bugs now on launchpad.
3423.Nov.02008 - Started re-theming work. Big thanks to everyone involved.11423.Nov.02008 - Started re-theming work. Big thanks to everyone involved.
35 - Added wahcade to launchpad (not the code yet).115 - Added wahcade to launchpad (not the code yet).
36 - Tried to fix "video / movie bug" reported by netfire.116 - Tried to fix "video / movie bug" reported by netfire.
@@ -39,7 +119,7 @@
39 by spudgunman.119 by spudgunman.
40 - Updated default control panel viewer layout.120 - Updated default control panel viewer layout.
4128.Oct.02008 - Added various Exit... keyboard shortcuts.12128.Oct.02008 - Added various Exit... keyboard shortcuts.
42 - Added hugo, mess (atari 800) emulator templates by Zombie. 122 - Added hugo, mess (atari 800) emulator templates by Zombie.
4319.Oct.02008 - Added per list background images. See LAYOUT_EDITOR doc for more12319.Oct.02008 - Added per list background images. See LAYOUT_EDITOR doc for more
44 information.124 information.
45 - Fixed permssions in config.dist dir. This is probably causing125 - Fixed permssions in config.dist dir. This is probably causing
@@ -49,7 +129,7 @@
49 [clone_of], [display_type], [screen_type], [category]).129 [clone_of], [display_type], [screen_type], [category]).
50 - Better search for logo image for mame emulators.130 - Better search for logo image for mame emulators.
5115.Oct.02008 - Fixed current_list bug in mame .ini template files. Spotted by13115.Oct.02008 - Fixed current_list bug in mame .ini template files. Spotted by
52 bagleemo, msdin2002 and spudgunman. 132 bagleemo, msdin2002 and spudgunman.
53 - Fixed missing PIL library warning message. Spotted by emarcellus.133 - Fixed missing PIL library warning message. Spotted by emarcellus.
5413.Oct.02008 - Fixed "play music" error reported by Dave Baer.13413.Oct.02008 - Fixed "play music" error reported by Dave Baer.
5517.Sep.02008 - Stop game video from playing before playing exit movie. Reported13517.Sep.02008 - Stop game video from playing before playing exit movie. Reported
@@ -58,10 +138,10 @@
58 - Some fixes to keep the wahcade main window above desktop panels.138 - Some fixes to keep the wahcade main window above desktop panels.
59 - Added nestopia template from rbrohman.139 - Added nestopia template from rbrohman.
60 - Added sdlmame template.140 - Added sdlmame template.
6112.Sep.02008 - Added [autorotate] patches from Martin Kalitis. 14112.Sep.02008 - Added [autorotate] patches from Martin Kalitis.
62 - Command line options for external apps are now parsed properly.142 - Command line options for external apps are now parsed properly.
63 Thanks to zerojay for reporting this one.143 Thanks to zerojay for reporting this one.
6427.Aug.02008 - Sort key list in Setup Editor. 14427.Aug.02008 - Sort key list in Setup Editor.
6526.Aug.02008 - More work on the rotation patch.14526.Aug.02008 - More work on the rotation patch.
6624.Aug.02008 - Merged Martin Kalitis' excellent layout rotation patches.14624.Aug.02008 - Merged Martin Kalitis' excellent layout rotation patches.
67 - Try and handle errors from gstreamer video object creation.147 - Try and handle errors from gstreamer video object creation.
@@ -74,7 +154,7 @@
74 and http://localarcade.com/screenshotarchive for letting us154 and http://localarcade.com/screenshotarchive for letting us
75 include these.155 include these.
76 - Background should now display on layout load in Layout Editor.156 - Background should now display on layout load in Layout Editor.
7727.Jun.02008 - Any new .ini config options should now be added to file 15727.Jun.02008 - Any new .ini config options should now be added to file
78 automatically.158 automatically.
7924.Jun.02008 - Remember window size in Setup Editor.15924.Jun.02008 - Remember window size in Setup Editor.
8022.Jun.02008 - Fixed typo in gstreamer version check. Should play stuff again.16022.Jun.02008 - Fixed typo in gstreamer version check. Should play stuff again.
@@ -82,8 +162,8 @@
8204.Jun.02008 - Added updated Spanish (es) translation from Nicolás Álvarez.16204.Jun.02008 - Added updated Spanish (es) translation from Nicolás Álvarez.
8326.May.02008 - Added Full Screen option for Layout Editor (battlecat).16326.May.02008 - Added Full Screen option for Layout Editor (battlecat).
84 - Fixed volume sliders in Setup Editor (battlecat).164 - Fixed volume sliders in Setup Editor (battlecat).
8525.May.02008 - "Add emulator" list (Setup Editor) now sorted in alphabetical 16525.May.02008 - "Add emulator" list (Setup Editor) now sorted in alphabetical
86 order. No longer prompted for a save filename unless one already 166 order. No longer prompted for a save filename unless one already
87 exists (battlecat).167 exists (battlecat).
88 - Fixed problem where wahcade woulnd't always pick a layout file168 - Fixed problem where wahcade woulnd't always pick a layout file
89 to use.169 to use.
@@ -91,27 +171,27 @@
9104.May.02008 - Released 0.27 "Fixed?".17104.May.02008 - Released 0.27 "Fixed?".
92 - Fixed deb build script. Problem was caused by using "ar" to172 - Fixed deb build script. Problem was caused by using "ar" to
93 build deb files.173 build deb files.
9408.Apr.02008 - Added histview files to setup.py. Well spotted by battlecat. 17408.Apr.02008 - Added histview files to setup.py. Well spotted by battlecat.
9503.Apr.02008 - Added md5sum file to bdist_debian.py.17503.Apr.02008 - Added md5sum file to bdist_debian.py.
9631.Mar.02008 - Released 0.26 "Splat!".17631.Mar.02008 - Released 0.26 "Splat!".
9730.Mar.02008 - Added "save as" dialog to Add Emulator option in Setup Editor.17730.Mar.02008 - Added "save as" dialog to Add Emulator option in Setup Editor.
98 - Check that current emulator exists when starting up.178 - Check that current emulator exists when starting up.
99 - Added list of possible mame ini filenames to constants.py. 179 - Added list of possible mame ini filenames to constants.py.
100 Required because we treat the mame emulator differently to others.180 Required because we treat the mame emulator differently to others.
101 - Enable / disable mame only stuff as required in Setup Editor.181 - Enable / disable mame only stuff as required in Setup Editor.
10229.Mar.02008 - Create an empty list file when it doesn't already exist.18229.Mar.02008 - Create an empty list file when it doesn't already exist.
103 - Fixed empty options list bug.183 - Fixed empty options list bug.
10428.Mar.02008 - Added some more template ini files. Thanks to battlecat,18428.Mar.02008 - Added some more template ini files. Thanks to battlecat,
105 KillsTheWeak and robbforce.185 KillsTheWeak and robbforce.
106 - Now picks random artwork from dir matching rom names. Thanks to 186 - Now picks random artwork from dir matching rom names. Thanks to
107 Hioushi (http://www.anti-particle.com/forum/viewtopic.php?t=169).187 Hioushi (http://www.anti-particle.com/forum/viewtopic.php?t=169).
10824.Mar.02008 - Rewrote deb package builder to use setup.py and deb script from 18824.Mar.02008 - Rewrote deb package builder to use setup.py and deb script from
109 http://home.cfl.rr.com/genecash/nokia/making_packages.html189 http://home.cfl.rr.com/genecash/nokia/making_packages.html
11022.Mar.02008 - Fixed About dialog bug in deb package. Thanks to battlecat.19022.Mar.02008 - Fixed About dialog bug in deb package. Thanks to battlecat.
11110.Mar.02008 - Fixed drwVideo bug where gstreamer import fails. Thanks to 19110.Mar.02008 - Fixed drwVideo bug where gstreamer import fails. Thanks to
112 stealth for reporting this.192 stealth for reporting this.
113 - Removed win32 checks for gstreamer.193 - Removed win32 checks for gstreamer.
11417.Feb.02008 - Released 0.25 "Yikes!". 19417.Feb.02008 - Released 0.25 "Yikes!".
11513.Feb.02008 - Added better error handling for gstreamer music object creation.19513.Feb.02008 - Added better error handling for gstreamer music object creation.
116 Thanks to bonzo for help with this one.196 Thanks to bonzo for help with this one.
11703.Feb.02008 - Stopped game movies playing during intro / exit movies playback.19703.Feb.02008 - Stopped game movies playing during intro / exit movies playback.
@@ -126,12 +206,12 @@
12613.Jan.02008 - Added a couple of bug fixes from nellistc (scroll and cpviewer).20613.Jan.02008 - Added a couple of bug fixes from nellistc (scroll and cpviewer).
127 - Fixed movie player screen saver.207 - Fixed movie player screen saver.
128 - Added intro movie playback.208 - Added intro movie playback.
12927.Dec.02007 - Re-worked joystick support in the Setup Editor. 20927.Dec.02007 - Re-worked joystick support in the Setup Editor.
13021.Dec.02007 - Added zerodiv's excellent joystick patch. This requires pygame.21021.Dec.02007 - Added zerodiv's excellent joystick patch. This requires pygame.
13116.Dec.02007 - Added better mouse support to Setup Editor keys dialog.21116.Dec.02007 - Added better mouse support to Setup Editor keys dialog.
13210.Dec.02007 - Added Game List Editor.21210.Dec.02007 - Added Game List Editor.
13308.Dec.02007 - Improved mouse support.21308.Dec.02007 - Improved mouse support.
134 - Tweaked shutdown stuff to be more like MameWAH. Added reboot 214 - Tweaked shutdown stuff to be more like MameWAH. Added reboot
135 option too.215 option too.
13605.Dec.02007 - Added nellistc's shutdown patch.21605.Dec.02007 - Added nellistc's shutdown patch.
13703.Dec.02007 - Got trackball / spinner scrolling roughly implemented.21703.Dec.02007 - Got trackball / spinner scrolling roughly implemented.
@@ -140,10 +220,10 @@
140 to "Most Played" or "Longest Played" types.220 to "Most Played" or "Longest Played" types.
14119.Oct.02007 - Released 0.23 "Wet Your Whistle".22119.Oct.02007 - Released 0.23 "Wet Your Whistle".
14214.Oct.02007 - Added some template .ini files for the MESS emulator - cheers to22214.Oct.02007 - Added some template .ini files for the MESS emulator - cheers to
143 SeTTleR. The run_mess.sh script should be in the wahcade's 223 SeTTleR. The run_mess.sh script should be in the wahcade's
144 doc/samples directory.224 doc/samples directory.
14513.Oct.02007 - Finished off music stuff.22513.Oct.02007 - Finished off music stuff.
146 - Added rotation for History Viewer. 226 - Added rotation for History Viewer.
14710.Oct.02007 - Finished up the new template system in the Setup Editor.22710.Oct.02007 - Finished up the new template system in the Setup Editor.
148 - Added next / previous music track keys. More music tidy-up.228 - Added next / previous music track keys. More music tidy-up.
149 - Added support for vertical layouts. (Text & Lists can be rotated).229 - Added support for vertical layouts. (Text & Lists can be rotated).
@@ -154,11 +234,11 @@
154 - Added drop-down list of layouts in the Layout Editor.234 - Added drop-down list of layouts in the Layout Editor.
15518.Sep.02007 - Implemented Logo images in layouts. And check for list specific23518.Sep.02007 - Implemented Logo images in layouts. And check for list specific
156 background images too. Thanks to captbaritone for spotting this.236 background images too. Thanks to captbaritone for spotting this.
15706.Sep.02007 - Added music config to Setup Editor. 23706.Sep.02007 - Added music config to Setup Editor.
158 - Added another patch (change to emulator dir) from Sylvain Faveau.238 - Added another patch (change to emulator dir) from Sylvain Faveau.
15904.Sep.02007 - Fixed bug in layout editor height props. Cheers to 3NF for 23904.Sep.02007 - Fixed bug in layout editor height props. Cheers to 3NF for
160 spotting this one. 240 spotting this one.
16122.Aug.02007 - Started to add music browsing / playback. 24122.Aug.02007 - Started to add music browsing / playback.
16221.Aug.02007 - Lots of messing around with file encoding stuff in filters.py.24221.Aug.02007 - Lots of messing around with file encoding stuff in filters.py.
163 - Fixed mameinfo.xml generation in Setup Editor.243 - Fixed mameinfo.xml generation in Setup Editor.
16415.Aug.02007 - Impmenting new emulator tempate system in Setup Editor.24415.Aug.02007 - Impmenting new emulator tempate system in Setup Editor.
@@ -167,23 +247,23 @@
16708.Aug.02007 - Released 0.22 "Viva Viet Vegas".24708.Aug.02007 - Released 0.22 "Viva Viet Vegas".
168 - Tidied up gst video initialisation.248 - Tidied up gst video initialisation.
16907.Aug.02007 - Updated a few of the docs / quick start guide.24907.Aug.02007 - Updated a few of the docs / quick start guide.
17001.Aug.02007 - Added generate XML file button for mame in Setup Editor. 25001.Aug.02007 - Added generate XML file button for mame in Setup Editor.
17130.Jul.02007 - Fixed start up bug (image not displayed) in Layout Editor.25130.Jul.02007 - Fixed start up bug (image not displayed) in Layout Editor.
172 - Fixed missing image bug when emulators are switched. Cheers to252 - Fixed missing image bug when emulators are switched. Cheers to
173 SeTTleR and ztomiccomputers for spotting this one.253 SeTTleR and ztomiccomputers for spotting this one.
174 - Added German (de) translation - huge thanks to SeTTleR.254 - Added German (de) translation - huge thanks to SeTTleR.
17529.Jul.02007 - Finished off CPViewer bindings stuff.25529.Jul.02007 - Finished off CPViewer bindings stuff.
17627.Jul.02007 - Store fullscreen setting in wahcade.ini file. Added fullscreen 25627.Jul.02007 - Store fullscreen setting in wahcade.ini file. Added fullscreen
177 option to Setup Editor.257 option to Setup Editor.
178 - Cleaned up debian packing script. 258 - Cleaned up debian packing script.
17925.Jul.02007 - Build proper debian / ubuntu package with dependencies. RPM too.25925.Jul.02007 - Build proper debian / ubuntu package with dependencies. RPM too.
18023.Jul.02007 - Expanded CPViewer bindings.26023.Jul.02007 - Expanded CPViewer bindings.
18115.Jul.02007 - Display correct menu headings in options dialog. 26115.Jul.02007 - Display correct menu headings in options dialog.
18208.Jun.02007 - Optimized gstreamer video widget a bit.26208.Jun.02007 - Optimized gstreamer video widget a bit.
18306.Jun.02007 - Replaced mplayer video widget with gstreamer one.26306.Jun.02007 - Replaced mplayer video widget with gstreamer one.
184 - Changed Movie Volume checkbox in Setup Editor to a sliding scale.264 - Changed Movie Volume checkbox in Setup Editor to a sliding scale.
18502.Jun.02007 - Released 0.21 "Ten Toes Hanging".26502.Jun.02007 - Released 0.21 "Ten Toes Hanging".
18601.Jun.02007 - Added progress bar to "please wait..." dialog on Setup Filters. 26601.Jun.02007 - Added progress bar to "please wait..." dialog on Setup Filters.
18730.May.02007 - Added NMS file support (Thanks to lowlight for suggesting this).26730.May.02007 - Added NMS file support (Thanks to lowlight for suggesting this).
18828.May.02007 - Added Delete Emulator & Delete Emu List options to Setup Editor.26828.May.02007 - Added Delete Emulator & Delete Emu List options to Setup Editor.
18926.May.02007 - Fixed config file copying bug. Should be able to delete files26926.May.02007 - Fixed config file copying bug. Should be able to delete files
@@ -210,7 +290,7 @@
21017.Apr.02007 - Big thanks for Sylvain Faveau for the French translation.29017.Apr.02007 - Big thanks for Sylvain Faveau for the French translation.
21108.Apr.02007 - Fixed screen saver bug in Setup Editor - it should now recognize29108.Apr.02007 - Fixed screen saver bug in Setup Editor - it should now recognize
212 the launch_scr option.292 the launch_scr option.
21329.Mar.02007 - Spanish translation - Huge thanks to Nicolás Álvarez. 29329.Mar.02007 - Spanish translation - Huge thanks to Nicolás Álvarez.
21417.Mar.02007 - Released 0.19 "Nose Furnace".29417.Mar.02007 - Released 0.19 "Nose Furnace".
21516.Mar.02007 - Fixed layout bug that left dots on the screen.29516.Mar.02007 - Fixed layout bug that left dots on the screen.
21613.Mar.02007 - Added external screen saver function (set "saver_type" in29613.Mar.02007 - Added external screen saver function (set "saver_type" in
@@ -223,25 +303,25 @@
22316.Feb.02007 - Fixed another filename matching bug.30316.Feb.02007 - Fixed another filename matching bug.
22415.Feb.02007 - Changing Emulator List name in Setup Editor now updates the drop30415.Feb.02007 - Changing Emulator List name in Setup Editor now updates the drop
225 down list selection.305 down list selection.
22624.Jan.02007 - Fixed bug which let a game be added to a list multiple times. 30624.Jan.02007 - Fixed bug which let a game be added to a list multiple times.
227 - Cleaned up rom filename detection code (Thanks to Relayer for307 - Cleaned up rom filename detection code (Thanks to Relayer for
228 reporting this bug).308 reporting this bug).
22924.Jan.02007 - Added setup filters to Setup Editor (mame only). 30924.Jan.02007 - Added setup filters to Setup Editor (mame only).
23020.Jan.02007 - Huge thanks to Daniel Nylander for providing the Swedish (sv)31020.Jan.02007 - Huge thanks to Daniel Nylander for providing the Swedish (sv)
231 translation. 311 translation.
23218.Jan.02007 - Hopefully fixed multiple screensaver timer bug. 31218.Jan.02007 - Hopefully fixed multiple screensaver timer bug.
23315.Jan.02007 - Added support for per-list layouts (<emu-name>-?.lay).31315.Jan.02007 - Added support for per-list layouts (<emu-name>-?.lay).
234 - Seemed to actually have fixed the "black video window" bug. 314 - Seemed to actually have fixed the "black video window" bug.
23512.Jan.02007 - Released 0.17 "Jelly Result".31512.Jan.02007 - Released 0.17 "Jelly Result".
23609.Jan.02007 - Added a couple of reset options to the Setup Editor.31609.Jan.02007 - Added a couple of reset options to the Setup Editor.
237 - Made filters work with Mame versions > 0.106.317 - Made filters work with Mame versions > 0.106.
23808.Jan.02007 - Fixed "missing image" lookups - they should now work as advertised.31808.Jan.02007 - Fixed "missing image" lookups - they should now work as advertised.
239 - Made sure Game List is "on top" of other widgets. 319 - Made sure Game List is "on top" of other widgets.
240 Cheers again to robbforce for reporting these out.320 Cheers again to robbforce for reporting these out.
24121.Dec.02006 - Released 0.16 "Avalon".32121.Dec.02006 - Released 0.16 "Avalon".
24216.Dec.02006 - Added Auto Launch Apps option to Setup Editor (Emulator tab).32216.Dec.02006 - Added Auto Launch Apps option to Setup Editor (Emulator tab).
243 - Added Wrap List option to Setup Editor (Wah!Cade tab).323 - Added Wrap List option to Setup Editor (Wah!Cade tab).
244 - History Viewer heading now shows Game Title instead of Rom Name. 324 - History Viewer heading now shows Game Title instead of Rom Name.
24514.Dec.02006 - Implemented background colours on Main & History Viewer layouts.32514.Dec.02006 - Implemented background colours on Main & History Viewer layouts.
246 You might need to tidy up your layouts in the editor!326 You might need to tidy up your layouts in the editor!
24713.Dec.02006 - Fixed setting window width & height in the Setup Editor.32713.Dec.02006 - Fixed setting window width & height in the Setup Editor.
@@ -251,8 +331,8 @@
251 updated with any missing files.331 updated with any missing files.
25210.Dec.02006 - Added label alignment to layouts.33210.Dec.02006 - Added label alignment to layouts.
253 - History Viewer now has it's own layout file.333 - History Viewer now has it's own layout file.
25406.Dec.02006 - Don't expand paths that start with "~/" when saving .ini files. 33406.Dec.02006 - Don't expand paths that start with "~/" when saving .ini files.
25504.Dec.02006 - Default startup to fullscreen mode (this matches MameWAH). To 33504.Dec.02006 - Default startup to fullscreen mode (this matches MameWAH). To
256 start in windowed mode use the "-w" commandline option.336 start in windowed mode use the "-w" commandline option.
25730.Nov.02006 - The wahcade.ini "wrap_list" setting now works.33730.Nov.02006 - The wahcade.ini "wrap_list" setting now works.
258 - Rewrote scolled list row font size calcs.338 - Rewrote scolled list row font size calcs.
@@ -270,11 +350,11 @@
27027.Nov.02006 - Values of spinner widgets should now save properly in the Setup35027.Nov.02006 - Values of spinner widgets should now save properly in the Setup
271 Editor (Cheers to Buks again).351 Editor (Cheers to Buks again).
27226.Nov.02006 - File -> Quit show now work in Layout Editor (Cheers Buks).35226.Nov.02006 - File -> Quit show now work in Layout Editor (Cheers Buks).
27325.Nov.02006 - Updated setup.py (for building a windows version with py2exe). 35325.Nov.02006 - Updated setup.py (for building a windows version with py2exe).
274 - Fixed bug where the current game was not saved to ini file when354 - Fixed bug where the current game was not saved to ini file when
275 using mouse.355 using mouse.
27623.Nov.02006 - Fixed some bugs (some browse buttons not working) in the Setup 35623.Nov.02006 - Fixed some bugs (some browse buttons not working) in the Setup
277 Editor (cheers to Buks for spotting them). The "Keys" tab now 357 Editor (cheers to Buks for spotting them). The "Keys" tab now
278 saves any changes made too!358 saves any changes made too!
27922.Nov.02006 - Improved locale settings a bit (improving non-ascii unicode text).35922.Nov.02006 - Improved locale settings a bit (improving non-ascii unicode text).
280 - Fixed "IndexError: list index out of range bug" in scrolled_list.py.360 - Fixed "IndexError: list index out of range bug" in scrolled_list.py.
@@ -284,34 +364,34 @@
284 "remove game from list", "select emulator" and "select game list"364 "remove game from list", "select emulator" and "select game list"
285 now work.365 now work.
28619.Nov.02006 - Currently selected game now saved again.36619.Nov.02006 - Currently selected game now saved again.
287 - When jumping to next / previous game list, check for "cycle_list" 367 - When jumping to next / previous game list, check for "cycle_list"
288 setting in relevant .ini files. Also added this feature to 368 setting in relevant .ini files. Also added this feature to
289 Wahcade Setup.369 Wahcade Setup.
290 - Updated keyboard & mouse handling.370 - Updated keyboard & mouse handling.
29118.Nov.02006 - Fixed warning error when elementtree package is missing.37118.Nov.02006 - Fixed warning error when elementtree package is missing.
29217.Nov.02006 - (Hopefully) modified Wah!Cade so it can be internationalized.37217.Nov.02006 - (Hopefully) modified Wah!Cade so it can be internationalized.
29315.Nov.02006 - Added Wah!Cade icon to windows.37315.Nov.02006 - Added Wah!Cade icon to windows.
294 - Closing About... Dialog now uses the Launch_Game & Exit keys as 374 - Closing About... Dialog now uses the Launch_Game & Exit keys as
295 they are defined in the ~/.wahcade/ctrl/default.ini file.375 they are defined in the ~/.wahcade/ctrl/default.ini file.
29614.Nov.02006 - Added multiple selection feature to Layout Editor.37614.Nov.02006 - Added multiple selection feature to Layout Editor.
297 - Added option to Layout Editor view menu to keep property dialogs 377 - Added option to Layout Editor view menu to keep property dialogs
298 "on top".378 "on top".
299 - Fixed setup.py so it should now be possible to build a windows .exe379 - Fixed setup.py so it should now be possible to build a windows .exe
300 using py2exe.380 using py2exe.
30113.Nov.02006 - Emulator output is now sent to ~/.wahcade/emulator.log unless 38113.Nov.02006 - Emulator output is now sent to ~/.wahcade/emulator.log unless
302 debug mode is on.382 debug mode is on.
30309.Nov.02006 - Added check for python version on startup (must be at least 2.4.0).38309.Nov.02006 - Added check for python version on startup (must be at least 2.4.0).
30408.Nov.02006 - Reworked scrolling lists, so the mouse can now be used if "mouse = 1" 38408.Nov.02006 - Reworked scrolling lists, so the mouse can now be used if "mouse = 1"
305 in ~/.wahcade/ctrlr/default.ini file. 385 in ~/.wahcade/ctrlr/default.ini file.
306 - Mouse scroll wheel (up / down) is now detected - use MOUSE_SCROLLUP 386 - Mouse scroll wheel (up / down) is now detected - use MOUSE_SCROLLUP
307 and MOUSE_SCROLLDOWN in the ~/.wahcade/ctrlr/default.ini file. 387 and MOUSE_SCROLLDOWN in the ~/.wahcade/ctrlr/default.ini file.
30830.Oct.02006 - Released 0.14 "Dead Man".38830.Oct.02006 - Released 0.14 "Dead Man".
309 - Fixed Key Press Dialog display bug.389 - Fixed Key Press Dialog display bug.
310 - Fixed .deb package bug which stopped default layouts being included.390 - Fixed .deb package bug which stopped default layouts being included.
31125.Oct.02006 - Layout Editor now quits with a useful error message when no config39125.Oct.02006 - Layout Editor now quits with a useful error message when no config
312 files are found.392 files are found.
313 - Better defaults for the CPViewer config.393 - Better defaults for the CPViewer config.
31424.Oct.02006 - Fixed save on exit bug in Setup & Layout Editors. 39424.Oct.02006 - Fixed save on exit bug in Setup & Layout Editors.
315 - Fixed *huge* bug in mamewah_ini.py that meant no previously empty395 - Fixed *huge* bug in mamewah_ini.py that meant no previously empty
316 options could be updated.396 options could be updated.
317 - Now makes seconds attempt to populate list with games if none397 - Now makes seconds attempt to populate list with games if none
@@ -322,8 +402,8 @@
322 - Released 0.13.2 "Oh Dear".402 - Released 0.13.2 "Oh Dear".
32317.Oct.02006 - Quit menu in wahcade-setup & save while quitting now work properly.40317.Oct.02006 - Quit menu in wahcade-setup & save while quitting now work properly.
324 Thanks to Aaron Greenspan for these.404 Thanks to Aaron Greenspan for these.
32513.Oct.02006 - Ooops. Added a doc file for wahcade-setup. 40513.Oct.02006 - Ooops. Added a doc file for wahcade-setup.
326 - Included the templates directory in the tarball. 406 - Included the templates directory in the tarball.
327 - Hopefully fixed the dreaded sys.path[0] error.407 - Hopefully fixed the dreaded sys.path[0] error.
328 - Released 0.13.1 "Errr".408 - Released 0.13.1 "Errr".
32911.Oct.02006 - Released 0.13 "Gimme Danger".40911.Oct.02006 - Released 0.13 "Gimme Danger".
330410
=== modified file 'doc/INI_FILES'
--- doc/INI_FILES 2008-11-30 10:26:19 +0000
+++ doc/INI_FILES 2011-03-03 21:06:42 +0000
@@ -12,6 +12,8 @@
12fullscreen 0 #fullscreen display (0=no, 1=yes)12fullscreen 0 #fullscreen display (0=no, 1=yes)
13setup_window_size 400x200 #size of Setup Editor window (width x height)13setup_window_size 400x200 #size of Setup Editor window (width x height)
14layout_orientation 0 #orientation of current layout (0,90,180,270 degrees).14layout_orientation 0 #orientation of current layout (0,90,180,270 degrees).
15show_list_arrows 0 #show scroll up/down arrows in games, options and history lists (0=no, 1=yes)
16shuffle_music 0 #shuffle music playlist when loaded (0=no, 1=yes)
1517
16### (Global) Screen-Saver Options ###18### (Global) Screen-Saver Options ###
17delay 300 #screen saver delay in seconds (0 to disable)19delay 300 #screen saver delay in seconds (0 to disable)
@@ -28,8 +30,8 @@
28intro_movie_file #intro movie filename30intro_movie_file #intro movie filename
29exit_movie_file #exit movie filename31exit_movie_file #exit movie filename
30keep_movie_preview_aspect game_aspect #N/A32keep_movie_preview_aspect game_aspect #N/A
31delay_before_movie_preview 7 #movie delay in seconds33delay_before_movie_preview 7 #movie delay in seconds (0 to disable ALL movie playback)
32music_movie_mix mute_movies #mute_movies / merge / pause_music34music_movie_mix mute_movies #mute_movies / merge
33movie_volume 100 #movie volume (0-100%)35movie_volume 100 #movie volume (0-100%)
3436
35### Misc Options ###37### Misc Options ###
@@ -146,7 +148,7 @@
146list_title Favourites #title of your choice148list_title Favourites #title of your choice
147149
148### Games List Settings ###150### Games List Settings ###
149cycle_list 1 #include this list when changing to next / previous lists 151cycle_list 1 #include this list when changing to next / previous lists
150list_type normal #the type of list: normal / most_played / longest_played152list_type normal #the type of list: normal / most_played / longest_played
151display_clone_info 0 #N/A153display_clone_info 0 #N/A
152max_favorites 0 #N/A154max_favorites 0 #N/A
@@ -163,9 +165,9 @@
163Notes:165Notes:
164------166------
165* for information on configuring the keyboard, mouse & joystick see the KEYS document.167* for information on configuring the keyboard, mouse & joystick see the KEYS document.
166* emu_name-0.ini does not have the list_type, display_clone_info or max_favorites 168* emu_name-0.ini does not have the list_type, display_clone_info or max_favorites
167 settings, as these properties for the main list are fixed.169 settings, as these properties for the main list are fixed.
168 170
169* commandline_format flags:171* commandline_format flags:
170 As well as regular switches etc., the following strings can be used, which Wah!Cade will replace172 As well as regular switches etc., the following strings can be used, which Wah!Cade will replace
171 with information on the currently selected game when the application is launched:173 with information on the currently selected game when the application is launched:
@@ -174,7 +176,7 @@
174 [romext] is replaced by rom_extension (exluding the '.')176 [romext] is replaced by rom_extension (exluding the '.')
175 [autorotate] will rotate the game to match the current layouts rotation (Mame only)177 [autorotate] will rotate the game to match the current layouts rotation (Mame only)
176 [year] is replaced by rom year178 [year] is replaced by rom year
177 [manufacturer] is replaced by rom manufacturer 179 [manufacturer] is replaced by rom manufacturer
178 [clone_of] is replaced by "parent" rom name180 [clone_of] is replaced by "parent" rom name
179 [display_type] is replaced by display type181 [display_type] is replaced by display type
180 [screen_type] is replaced by screen type182 [screen_type] is replaced by screen type
181183
=== modified file 'doc/INSTALL'
--- doc/INSTALL 2009-01-07 17:51:46 +0000
+++ doc/INSTALL 2011-03-03 21:06:42 +0000
@@ -4,8 +4,8 @@
4Wah!Cade Requirements4Wah!Cade Requirements
5=====================5=====================
6To run wah!cade you'll need:6To run wah!cade you'll need:
7* python >= 2.4 (http://www.python.org)7* python >= 2.4 (http://www.python.org)
8* pygtk2 >= 2.8 (http://www.pygtk.org)8* pygtk2 >= 2.12 (http://www.pygtk.org)
9* chardet >= 1.0 (http://chardet.feedparser.org)9* chardet >= 1.0 (http://chardet.feedparser.org)
10* elementtree / celementtree (http://effbot.org/zone/element-index.htm)10* elementtree / celementtree (http://effbot.org/zone/element-index.htm)
11 elementree is not required for python >= 2.5 as it's included by default11 elementree is not required for python >= 2.5 as it's included by default
@@ -20,11 +20,11 @@
2020
21Installation Notes21Installation Notes
22==================22==================
23Either download and install the Debian / RPM packages, or get the source code 23Either download and install the Debian / RPM packages, or get the source code
24and:24and:
2525
26Method 1)26Method 1)
27 Extract the contents of the tarball into a suitable directory within 27 Extract the contents of the tarball into a suitable directory within
28 your home directory and then see the Quick Start Guide on the website and28 your home directory and then see the Quick Start Guide on the website and
29 the README file for information on initial setup & configuration, etc.29 the README file for information on initial setup & configuration, etc.
3030
@@ -34,12 +34,12 @@
34 ./install34 ./install
35 this should install wahcade in the /usr/local/share/wahcade directory.35 this should install wahcade in the /usr/local/share/wahcade directory.
3636
37The default config files are stored in wahcade/config.dist. When Wah!Cade is 37The default config files are stored in wahcade/config.dist. When Wah!Cade is
38first run these are copied into the users ~/.wahcade directory.38first run these are copied into the users ~/.wahcade directory.
3939
4040
41=================================================41=================================================
42Wah!Cade is Copyright (c) 2005-2009 Andy Balcombe42Wah!Cade is Copyright (c) 2005-2010 Andy Balcombe
43 email: wahcade at anti-particle dot com43 email: wahcade at anti-particle dot com
44=================================================44=================================================
4545
4646
=== modified file 'doc/LAYOUT_EDITOR'
--- doc/LAYOUT_EDITOR 2009-01-07 17:51:46 +0000
+++ doc/LAYOUT_EDITOR 2011-03-03 21:06:42 +0000
@@ -1,6 +1,6 @@
1Wah!Cade Layout Editor1Wah!Cade Layout Editor
2======================2======================
3The layout editor supports modifying the Main, Options, Message, Screen Saver 3The layout editor supports modifying the Main, Options, Message, Screen Saver
4and the Control Panel Viewer windows.4and the Control Panel Viewer windows.
55
66
@@ -17,12 +17,12 @@
17 The current layout files are loaded by default.17 The current layout files are loaded by default.
1818
19 The various settings for the currently selected item can be changed using19 The various settings for the currently selected item can be changed using
20 the Item Properties window (Ctrl + P). 20 the Item Properties window (Ctrl + P).
21 21
22 22
23Keyboard:23Keyboard:
24=========24=========
25 Cursor Keys: Change the position of selected items. 25 Cursor Keys: Change the position of selected items.
26 Shift + Cursor Keys: Change the size of selected items.26 Shift + Cursor Keys: Change the size of selected items.
2727
2828
@@ -37,7 +37,7 @@
3737
38Layout Notes:38Layout Notes:
39=============39=============
40Wah!Cade will check for the following layout and image files in the order 40Wah!Cade will check for the following layout and image files in the order
41specified below. If a given file does not exist, then Wah!Cade will check for41specified below. If a given file does not exist, then Wah!Cade will check for
42the next one in the hierarchy.42the next one in the hierarchy.
4343
@@ -55,23 +55,25 @@
55 ~/.wahcade/layouts/55 ~/.wahcade/layouts/
56 classic_640x480/layout.lay default Wah!Cade layout56 classic_640x480/layout.lay default Wah!Cade layout
5757
58 58
59Background Images59Background Images
60-----------------60-----------------
61 Note: This will only work if no image is specified in the layout file.
62
61 <emu_name>-?-main.??? emulator & custom list specific main backgound image63 <emu_name>-?-main.??? emulator & custom list specific main backgound image
62 <emu_name>-main.??? emulator specific main backgound image 64 <emu_name>-main.??? emulator specific main backgound image
63 main.??? general layout main backgound image 65 main.??? general layout main backgound image
64 66
65 <emu_name>-?-options.??? emulator & custom list specific options menu backgound image67 <emu_name>-?-options.??? emulator & custom list specific options menu backgound image
66 <emu_name>-options.??? emulator specific options menu backgound image 68 <emu_name>-options.??? emulator specific options menu backgound image
67 options.??? general layout options menu backgound image 69 options.??? general layout options menu backgound image
68 70
69 <emu_name>-?-message.??? emulator & custom list specific message box backgound image71 <emu_name>-?-message.??? emulator & custom list specific message box backgound image
70 <emu_name>-message.??? emulator specific message box backgound image 72 <emu_name>-message.??? emulator specific message box backgound image
71 message.??? general layout message box backgound image 73 message.??? general layout message box backgound image
7274
7375
74Artwork Images 76Artwork Images
75--------------77--------------
76 <game_rom_name>.??? game name78 <game_rom_name>.??? game name
77 <game_clone_name>.??? "clone of" game name79 <game_clone_name>.??? "clone of" game name
@@ -82,15 +84,15 @@
82 art?.??? artwork specific 'no pic' image84 art?.??? artwork specific 'no pic' image
83 art.??? general layout 'no pic' image85 art.??? general layout 'no pic' image
84 ~/.wahcade/pixmaps/empty.png default 'no pic' image86 ~/.wahcade/pixmaps/empty.png default 'no pic' image
85 87
86 88
87Main Logo Images89Main Logo Images
88----------------90----------------
89 <emu_name>-?-logo.??? emulator & custom list specific logo image91 <emu_name>-?-logo.??? emulator & custom list specific logo image
90 <emu_name>-logo.??? emulator specific logo image92 <emu_name>-logo.??? emulator specific logo image
91 <emu_name>logo.??? emulator specific logo image93 <emu_name>logo.??? emulator specific logo image
92 logo.??? general layout logo image94 logo.??? general layout logo image
93 (logo images must be in same dir as layout 95 (logo images must be in same dir as layout
94 files)96 files)
9597
96Movie Files98Movie Files
@@ -105,15 +107,15 @@
105 ### may be: avi or mpg107 ### may be: avi or mpg
106 <emu_name> is the emulator name, e.g. mame, zsnes, etc.108 <emu_name> is the emulator name, e.g. mame, zsnes, etc.
107 <rotation> is layouts rotation angle (0, 90, 180, 270)109 <rotation> is layouts rotation angle (0, 90, 180, 270)
108 110
109 111
110Notes:112Notes:
111======113======
112* Any fonts that a layout requires should be installed first 114* Any fonts that a layout requires should be installed first
113 (e.g. copy the font files into your ~/.fonts directory).115 (e.g. copy the font files into your ~/.fonts directory).
114116
115=================================================117=================================================
116Wah!Cade is Copyright (c) 2005-2009 Andy Balcombe118Wah!Cade is Copyright (c) 2005-2010 Andy Balcombe
117 email: wahcade at anti-particle dot com119 email: wahcade at anti-particle dot com
118=================================================120=================================================
119121
120122
=== modified file 'doc/README'
--- doc/README 2009-01-07 17:51:46 +0000
+++ doc/README 2011-03-03 21:06:42 +0000
@@ -51,13 +51,13 @@
51================51================
52to run Wah!Cade:52to run Wah!Cade:
53 wahcade53 wahcade
54 54
55to run the Layout Editor:55to run the Layout Editor:
56 wahcade-layout-editor56 wahcade-layout-editor
57 57
58to run the Setup Editor:58to run the Setup Editor:
59 wahcade-setup59 wahcade-setup
60 60
61or, if you're running from the source directory:61or, if you're running from the source directory:
62 cd /path/to/wahcade62 cd /path/to/wahcade
63 ./wahcade.py63 ./wahcade.py
@@ -70,7 +70,9 @@
70 -w, --window Set windowed mode70 -w, --window Set windowed mode
71 -f, --full-screen Set fullscreen mode71 -f, --full-screen Set fullscreen mode
72 -d, --debug Set debug mode (disables pysco)72 -d, --debug Set debug mode (disables pysco)
7373 --no-gstreamer Set to disable all gstreamer use (music / video playback)
74 --no-pygame Set to disable all pygame use (joysticks)
75 --old-key-handler Set to revert to old keyboard event handling
74* you need to change your desktop resolution to match your chosen layout if you76* you need to change your desktop resolution to match your chosen layout if you
75 want full-screen wah!cade to look right.77 want full-screen wah!cade to look right.
7678
@@ -82,30 +84,32 @@
82 and for letting me include some of the default MameWAH config files and layouts84 and for letting me include some of the default MameWAH config files and layouts
83 in the wah!cade package.85 in the wah!cade package.
84 * Buks & battlecat for artwork, testing & suggestions.86 * Buks & battlecat for artwork, testing & suggestions.
85 * Robbforce for the Arch-Linux port, FreeBSD news, bug reports and suggestions. 87 * Robbforce for the Arch-Linux port, FreeBSD news, bug reports and suggestions.
86 * Sylvan Faveau, Settler, Mike Crawford, Mike Schwartz, nellistic, 3NF, 88 * Sylvan Faveau, Settler, Mike Crawford, Mike Schwartz, nellistic, 3NF,
87 Bob Clough, Jim Merullo, Jose Herran & more for patches, bug reports and patience.89 Bob Clough, Jim Merullo, Jose Herran & more for patches, bug reports and patience.
88 * The translators: SeTTleR, Nicolás Álvarez. Sylvan Faveau and Daniel Nylander.90 * The translators: SeTTleR, Nicolás Álvarez. Sylvan Faveau and Daniel Nylander.
89 * all the M.A.M.E. developers (http://www.mame.net/)91 * all the M.A.M.E. developers (http://www.mame.net/)
90 * all the x.mame developers (http://x.mame.net/)92 * all the x.mame developers (http://x.mame.net/)
93 * everyone from the forums who have helped out with bug reporting,
94 feature suggestions and more.
9195
9296
93Supported OS97Supported OS
94============98============
95Wah!Cade has been tested on:99Wah!Cade is developed on:
96* Ubuntu "Hardy Heron" 8.04 / xmame 0.106 / sdlmame 0.125100* Ubuntu "Karmic Koala" 9.10 / sdlmame 0.132
97I've also had reports of it working on Arch, Debian (etch), Gentoo, FreeBSD, 101I've also had reports of it working on Arch, Debian (etch), Gentoo, FreeBSD,
98Mac OS X and Windows. YMMV.102Mac OS X, Windows and even the PS3. YMMV.
99103
100Comments104Comments
101========105========
102Check the Wah!Cade Forums: 106Check the Wah!Cade Forums:
103 http://www.anti-particle.com/forum/index.php107 http://www.anti-particle.com/forum
104If you have any bug reports, suggestions, features, patches or comments then108If you have any bug reports, suggestions, features, patches or comments then
105please contact me at the address below...109please contact me at the address below...
106110
107=================================================111=================================================
108Wah!Cade is Copyright (c) 2005-2009 Andy Balcombe112Wah!Cade is Copyright (c) 2005-2010 Andy Balcombe
109 email: wahcade at anti-particle dot com113 email: wahcade at anti-particle dot com
110=================================================114=================================================
111115
112116
=== modified file 'doc/TODO'
--- doc/TODO 2009-01-07 17:51:46 +0000
+++ doc/TODO 2011-03-03 21:06:42 +0000
@@ -7,7 +7,7 @@
7---------7---------
8* Rotate video if necessary8* Rotate video if necessary
9* Detect keyboard & mouse events when mouse pointer is over a video window9* Detect keyboard & mouse events when mouse pointer is over a video window
10* Add Nelistc's LIRC patch10* Add Nelistc's LIRC patch (if I can find it!)
11* Add various EXIT..., OP_MENU_HIDE actions11* Add various EXIT..., OP_MENU_HIDE actions
1212
1313
@@ -26,7 +26,7 @@
26 Postby spudgunman on 24 Oct 2008 07:01 am26 Postby spudgunman on 24 Oct 2008 07:01 am
27 could I put in a feature request for recursive directory searching option for ROM directory27 could I put in a feature request for recursive directory searching option for ROM directory
28 for instance I have roms like:28 for instance I have roms like:
29 29
30 SNES30 SNES
31 ../USA31 ../USA
32 ../Japan32 ../Japan
3333
=== modified file 'filters.py'
--- filters.py 2009-01-07 17:51:46 +0000
+++ filters.py 2011-03-03 21:06:42 +0000
@@ -5,7 +5,7 @@
5# Application: wah!cade5# Application: wah!cade
6# File: filters.py6# File: filters.py
7# Description: routines to read / write mamewah filters and lists7# Description: routines to read / write mamewah filters and lists
8# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>8# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
9###9###
10#10#
11# This program is free software; you can redistribute it and/or modify11# This program is free software; you can redistribute it and/or modify
@@ -86,8 +86,8 @@
86 'dial': u'Spinner (or 360\xb0 Wheel)',86 'dial': u'Spinner (or 360\xb0 Wheel)',
87 'trackball': u'Trackball',87 'trackball': u'Trackball',
88 'pedal': u'Pedal',88 'pedal': u'Pedal',
89 '': u'None'89 'keyboard': u'Keyboard',
90}90 '': u'None'}
9191
9292
93def get_file_encoding(filename):93def get_file_encoding(filename):
@@ -99,11 +99,12 @@
99 detector.feed(line)99 detector.feed(line)
100 i += 1100 i += 1
101 #done or hit max lines (it takes ages to read a large file)101 #done or hit max lines (it takes ages to read a large file)
102 if detector.done or i >= 2000: 102 if detector.done or i >= 2000:
103 break103 break
104 detector.close()104 detector.close()
105 return detector.result105 return detector.result
106 106
107
107def open_file(filename, filemode='r'):108def open_file(filename, filemode='r'):
108 """opens given filename, and autodetects the encoding"""109 """opens given filename, and autodetects the encoding"""
109 #detect encoding110 #detect encoding
@@ -112,12 +113,13 @@
112 except:113 except:
113 file_enc = sys.getdefaultencoding()114 file_enc = sys.getdefaultencoding()
114 #use utf8 instead of ascii115 #use utf8 instead of ascii
115 if file_enc.lower() == 'ascii': 116 if file_enc.lower() == 'ascii':
116 file_enc = 'utf8'117 file_enc = 'utf8'
117 #open file using correct encoding118 #open file using correct encoding
118 f = codecs.open(filename, mode=filemode, encoding=file_enc) 119 f = codecs.open(filename, mode=filemode, encoding=file_enc)
119 return f, file_enc120 return f, file_enc
120 121
122
121def get_dat_game_item(dat_filename):123def get_dat_game_item(dat_filename):
122 """read dat file"""124 """read dat file"""
123 #get category info125 #get category info
@@ -165,27 +167,27 @@
165 l = value[2:-2].split()167 l = value[2:-2].split()
166 for i in range(0, len(l) - 1, 2):168 for i in range(0, len(l) - 1, 2):
167 vid[l[i]] = l[i+1]169 vid[l[i]] = l[i+1]
168 if vid.has_key('screen'):170 if 'screen' in vid:
169 d['display_type'] = vid['screen']171 d['display_type'] = vid['screen']
170 if vid.has_key('orientation'):172 if 'orientation' in vid:
171 d['screen_type'] = vid['orientation']173 d['screen_type'] = vid['orientation']
172 elif key == '\tdriver':174 elif key == '\tdriver':
173 driver = {}175 driver = {}
174 l = value[2:-2].split()176 l = value[2:-2].split()
175 for i in range(0, len(l) - 1, 2):177 for i in range(0, len(l) - 1, 2):
176 driver[l[i]] = l[i+1]178 driver[l[i]] = l[i+1]
177 if driver.has_key('status'):179 if 'status' in driver:
178 d['driver_status'] = driver['status']180 d['driver_status'] = driver['status']
179 if driver.has_key('color'):181 if 'color' in driver:
180 d['colour_status'] = driver['color']182 d['colour_status'] = driver['color']
181 if driver.has_key('sound'):183 if 'sound' in driver:
182 d['sound_status'] = driver['sound']184 d['sound_status'] = driver['sound']
183 elif key == '\tinput':185 elif key == '\tinput':
184 ctrl = {}186 ctrl = {}
185 l = value[2:-2].split()187 l = value[2:-2].split()
186 for i in range(0, len(l) - 1, 2):188 for i in range(0, len(l) - 1, 2):
187 ctrl[l[i]] = l[i+1]189 ctrl[l[i]] = l[i+1]
188 if ctrl.has_key('control'):190 if 'control' in ctrl:
189 d['controller_type'] = _controllers[ctrl['control']]191 d['controller_type'] = _controllers[ctrl['control']]
190 #get category192 #get category
191 try:193 try:
@@ -200,6 +202,7 @@
200 #done202 #done
201 f.close()203 f.close()
202204
205
203def get_xml_game_item(xml_filename):206def get_xml_game_item(xml_filename):
204 """get game bits"""207 """get game bits"""
205 #get category info208 #get category info
@@ -208,7 +211,7 @@
208 for event, mame_element in ET.iterparse(xml_filename, events=('start', 'end')):211 for event, mame_element in ET.iterparse(xml_filename, events=('start', 'end')):
209 #get mame version element212 #get mame version element
210 if mame_element.tag == 'mame':213 if mame_element.tag == 'mame':
211 if not mame_element.attrib.has_key('build'):214 if 'build' not in mame_element.attrib:
212 mame_version = '0.000'215 mame_version = '0.000'
213 else:216 else:
214 spc_pos = mame_element.attrib['build'].find(' ')217 spc_pos = mame_element.attrib['build'].find(' ')
@@ -248,14 +251,14 @@
248 manu = game_element.findtext('manufacturer') or ''251 manu = game_element.findtext('manufacturer') or ''
249 desc = game_element.findtext('description') or ''252 desc = game_element.findtext('description') or ''
250 #create dict253 #create dict
251 d['rom_name'] = game_element.attrib['name'].upper()254 d['rom_name'] = game_element.attrib['name']#.upper()
252 d['game_name'] = desc255 d['game_name'] = desc
253 d['year'] = year256 d['year'] = year
254 d['manufacturer'] = manu.title()257 d['manufacturer'] = manu.title()
255 if 'cloneof' in game_element.keys():258 if 'cloneof' in game_element.keys():
256 d['clone_of'] = game_element.attrib['cloneof'].upper()259 d['clone_of'] = game_element.attrib['cloneof']#.upper()
257 if 'romof' in game_element.keys():260 if 'romof' in game_element.keys():
258 d['rom_of'] = game_element.attrib['romof'].upper()261 d['rom_of'] = game_element.attrib['romof']#.upper()
259 if vid is not None:262 if vid is not None:
260 if mame_version > '0.106':263 if mame_version > '0.106':
261 d['display_type'] = vid.attrib['type'].title()264 d['display_type'] = vid.attrib['type'].title()
@@ -279,9 +282,12 @@
279 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):282 except (ConfigParser.NoOptionError, ConfigParser.NoSectionError):
280 d['category'] = 'Unknown'283 d['category'] = 'Unknown'
281 #done284 #done
285 #if d['rom_name'] == 'ASTEROID':
286 # print "game=",d
282 yield d287 yield d
283 game_element.clear() # won't need this any more288 game_element.clear() # won't need this any more
284289
290
285def get_catver_ini(category_file):291def get_catver_ini(category_file):
286 """load catver.ini file"""292 """load catver.ini file"""
287 if not os.path.exists(category_file):293 if not os.path.exists(category_file):
@@ -290,6 +296,7 @@
290 catver.read(category_file)296 catver.read(category_file)
291 return catver297 return catver
292298
299
293def create_initial_filter(info_filename, filter_filename, list_filename, emu_ini, pgb_pulse=None):300def create_initial_filter(info_filename, filter_filename, list_filename, emu_ini, pgb_pulse=None):
294 """create a new mamewah .ftr & .lst file"""301 """create a new mamewah .ftr & .lst file"""
295 pulse_cnt = 0302 pulse_cnt = 0
@@ -330,7 +337,7 @@
330 'category': ''}337 'category': ''}
331 for rom_filename in roms:338 for rom_filename in roms:
332 rom_name = os.path.splitext(os.path.basename(rom_filename))[0]339 rom_name = os.path.splitext(os.path.basename(rom_filename))[0]
333 if nms_entries.has_key(rom_name):340 if rom_name in nms_entries:
334 game_name = nms_entries[rom_name]341 game_name = nms_entries[rom_name]
335 else:342 else:
336 game_name = rom_name343 game_name = rom_name
@@ -389,10 +396,10 @@
389 except StopIteration:396 except StopIteration:
390 break397 break
391 #for each key in sections398 #for each key in sections
392 for key in _sections[1:]:399 for k in _sections[1:]:
393 if gd.has_key(key):400 if k in gd:
394 if gd[key] not in mwfilter[key]:401 if gd[k] not in mwfilter[k]:
395 mwfilter[key].append(gd[key])402 mwfilter[k].append(gd[k])
396 #done list file403 #done list file
397 f.close()404 f.close()
398 #write filter file405 #write filter file
@@ -412,6 +419,7 @@
412 f.write('\n')419 f.write('\n')
413 f.close()420 f.close()
414421
422
415def read_filter(filter_file):423def read_filter(filter_file):
416 """read a mamewah .ftr file"""424 """read a mamewah .ftr file"""
417 #init425 #init
@@ -455,6 +463,7 @@
455 f.close()463 f.close()
456 return d464 return d
457465
466
458def write_filter(filter_spec, filter_filename):467def write_filter(filter_spec, filter_filename):
459 """write a filter file from a given spec"""468 """write a filter file from a given spec"""
460 f, file_enc = open_file(filter_filename, 'w')469 f, file_enc = open_file(filter_filename, 'w')
@@ -464,12 +473,13 @@
464 for key in _sections[1:]:473 for key in _sections[1:]:
465 l = filter_spec[key].items()474 l = filter_spec[key].items()
466 l.sort()475 l.sort()
467 for item, value in l: 476 for item, value in l:
468 f.write('%s\n%s\n' % (item, str(value)))477 f.write('%s\n%s\n' % (item, str(value)))
469 f.write('\n')478 f.write('\n')
470 #done479 #done
471 f.close()480 f.close()
472481
482
473def create_filtered_list(original_list_filename, filter_spec, list_filename):483def create_filtered_list(original_list_filename, filter_spec, list_filename):
474 """create a mamewah .lst file from <emu>-0.lst and the given spec"""484 """create a mamewah .lst file from <emu>-0.lst and the given spec"""
475 #open empty list file485 #open empty list file
@@ -480,6 +490,8 @@
480 #for each item in iterator490 #for each item in iterator
481 for game_item in all_games:491 for game_item in all_games:
482 gd = get_game_dict(game_item)492 gd = get_game_dict(game_item)
493 #if gd['rom_name'] == 'ASTEROID':
494 # print "cfl: game=",gd
483 #match filter conditions495 #match filter conditions
484 matched = True496 matched = True
485 #check filter type section497 #check filter type section
@@ -500,20 +512,25 @@
500 if matched:512 if matched:
501 #for each section513 #for each section
502 for section in _sections[1:]:514 for section in _sections[1:]:
503 if filter_spec.has_key(section) and gd.has_key(section):515 if section in filter_spec and section in gd:
504 #if spec and current game have same section516 #if spec and current game have same section
505 if filter_spec[section].has_key(gd[section]):517 if gd[section] in filter_spec[section]:
506 if not filter_spec[section][gd[section]]:518 if not filter_spec[section][gd[section]]:
507 #don't match if spec entry for game not set (i.e. False)519 #don't match if spec entry for game not set (i.e. False)
508 matched = False520 matched = False
509 if gd[section] is None or gd[section] == '':521 #if gd[section] is None or gd[section] == '':
510 matched = False522 # if gd['rom_name'] == 'ASTEROID':
523 # print "cfl: not matched (is none)"
524 # matched = False
525 #if gd['rom_name'] == 'ASTEROID':
526 # print "cfl: matched=",matched
511 if matched:527 if matched:
512 #write output528 #write output
513 add_game_to_filtered_list(gd, f)529 add_game_to_filtered_list(gd, f)
514 #done, close file530 #done, close file
515 f.close()531 f.close()
516532
533
517def read_filtered_list(list_filename):534def read_filtered_list(list_filename):
518 """read a mamewah .lst file"""535 """read a mamewah .lst file"""
519 l = []536 l = []
@@ -538,6 +555,7 @@
538 #done555 #done
539 return l, len(l)556 return l, len(l)
540557
558
541def add_game_to_filtered_list(gd, file_obj=None, list_filename=None):559def add_game_to_filtered_list(gd, file_obj=None, list_filename=None):
542 """add game info in given dictionary to specified file or .lst file"""560 """add game info in given dictionary to specified file or .lst file"""
543 if list_filename is not None:561 if list_filename is not None:
@@ -557,13 +575,13 @@
557 '%s\n' % gd['driver_status'],575 '%s\n' % gd['driver_status'],
558 '%s\n' % gd['colour_status'],576 '%s\n' % gd['colour_status'],
559 '%s\n' % gd['sound_status'],577 '%s\n' % gd['sound_status'],
560 '%s\n' % gd['category']578 '%s\n' % gd['category']])
561 ])
562 #done579 #done
563 if list_filename is not None:580 if list_filename is not None:
564 file_obj.close()581 file_obj.close()
565582
566def write_filtered_list(list_filename , list_items):583
584def write_filtered_list(list_filename, list_items):
567 """write the given list items into the specified .lst file"""585 """write the given list items into the specified .lst file"""
568 #f= codecs.open(list_filename, mode='w', encoding='utf-8')586 #f= codecs.open(list_filename, mode='w', encoding='utf-8')
569 f, file_enc = open_file(list_filename, 'w')587 f, file_enc = open_file(list_filename, 'w')
@@ -581,11 +599,11 @@
581 '%s\n' % game_info[GL_DRIVER_STATUS],599 '%s\n' % game_info[GL_DRIVER_STATUS],
582 '%s\n' % game_info[GL_COLOUR_STATUS],600 '%s\n' % game_info[GL_COLOUR_STATUS],
583 '%s\n' % game_info[GL_SOUND_STATUS],601 '%s\n' % game_info[GL_SOUND_STATUS],
584 '%s\n' % game_info[GL_CATEGORY]602 '%s\n' % game_info[GL_CATEGORY]])
585 ])
586 #done603 #done
587 f.close()604 f.close()
588605
606
589def read_fav_list(favlist_filename):607def read_fav_list(favlist_filename):
590 """reads a .fav list"""608 """reads a .fav list"""
591 d = {}609 d = {}
@@ -607,6 +625,7 @@
607 #done625 #done
608 return d626 return d
609627
628
610def write_fav_list(favlist_filename, favs):629def write_fav_list(favlist_filename, favs):
611 """writes a .fav list"""630 """writes a .fav list"""
612 f, file_enc = open_file(favlist_filename, 'w')631 f, file_enc = open_file(favlist_filename, 'w')
@@ -615,10 +634,10 @@
615 '%s\n' % fav_key,634 '%s\n' % fav_key,
616 '%s\n' % favs[fav_key][FAV_GAME_NAME],635 '%s\n' % favs[fav_key][FAV_GAME_NAME],
617 '%s\n' % favs[fav_key][FAV_TIMES_PLAYED],636 '%s\n' % favs[fav_key][FAV_TIMES_PLAYED],
618 '%s\n' % favs[fav_key][FAV_MINS_PLAYED]637 '%s\n' % favs[fav_key][FAV_MINS_PLAYED]])
619 ])
620 f.close()638 f.close()
621639
640
622def get_game_dict(game_item):641def get_game_dict(game_item):
623 """return dictionary of info for given game item"""642 """return dictionary of info for given game item"""
624 gd = {643 gd = {
@@ -634,15 +653,15 @@
634 'driver_status': game_item[GL_DRIVER_STATUS],653 'driver_status': game_item[GL_DRIVER_STATUS],
635 'colour_status': game_item[GL_COLOUR_STATUS],654 'colour_status': game_item[GL_COLOUR_STATUS],
636 'sound_status': game_item[GL_SOUND_STATUS],655 'sound_status': game_item[GL_SOUND_STATUS],
637 'category': game_item[GL_CATEGORY]656 'category': game_item[GL_CATEGORY]}
638 }
639 return gd657 return gd
640658
659
641def read_nms_file(nms_filename):660def read_nms_file(nms_filename):
642 """returns a dictionary created from a nms formatted file"""661 """returns a dictionary created from a nms formatted file"""
643 d = {}662 d = {}
644 if nms_filename == '':663 if nms_filename == '':
645 return d 664 return d
646 #read file665 #read file
647 try:666 try:
648 f, file_enc = open_file(nms_filename, 'r')667 f, file_enc = open_file(nms_filename, 'r')
@@ -659,7 +678,8 @@
659 d[r[1]] = r[0]678 d[r[1]] = r[0]
660 #done679 #done
661 return d680 return d
662 681
682
663def walk_dir(root, recurse=False, pattern='*', return_folders=False):683def walk_dir(root, recurse=False, pattern='*', return_folders=False):
664 # initialize684 # initialize
665 result = []685 result = []
@@ -696,18 +716,13 @@
696 import time716 import time
697 from mamewah_ini import MameWahIni717 from mamewah_ini import MameWahIni
698 #set vars718 #set vars
699 #CONFIG_DIR = os.path.join(sys.path[0], 'config')
700 CONFIG_DIR = os.path.expanduser('~/.wahcade')
701 cdir = sys.path[0]719 cdir = sys.path[0]
702 #_mameinfo_file = os.path.join(cdir, 'mameinfo111.xml')720 #_mameinfo_file = os.path.join(cdir, 'mameinfo111.xml')
703 _catver_ini = os.path.join(cdir, 'catver2.ini')721 _catver_ini = os.path.join(cdir, 'catver2.ini')
704
705 #set to unicode encoding722 #set to unicode encoding
706 try:723 try:
707 sys.setappdefaultencoding('utf-8')724 sys.setappdefaultencoding('utf-8')
708 except AttributeError:725 except AttributeError:
709 pass726 pass
710
711 #test nms feed727 #test nms feed
712 print read_nms_file(os.path.expanduser('~/emulators/pc/pc_games.nms'))728 print read_nms_file(os.path.expanduser('~/emulators/pc/pc_games.nms'))
713
714729
=== modified file 'glade/layout_editor.glade'
--- glade/layout_editor.glade 2009-01-11 16:29:58 +0000
+++ glade/layout_editor.glade 2011-03-03 21:06:42 +0000
@@ -729,6 +729,7 @@
729 <property name="relief">GTK_RELIEF_NORMAL</property>729 <property name="relief">GTK_RELIEF_NORMAL</property>
730 <property name="focus_on_click">True</property>730 <property name="focus_on_click">True</property>
731 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Wed, 28 Jun 2006 09:06:53 GMT"/>731 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Wed, 28 Jun 2006 09:06:53 GMT"/>
732 <accelerator key="Escape" modifiers="0" signal="clicked"/>
732 </widget>733 </widget>
733 </child>734 </child>
734 </widget>735 </widget>
@@ -1595,6 +1596,7 @@
1595 <child>1596 <child>
1596 <widget class="GtkCheckButton" id="chkBackgroundImage">1597 <widget class="GtkCheckButton" id="chkBackgroundImage">
1597 <property name="visible">True</property>1598 <property name="visible">True</property>
1599 <property name="tooltip" translatable="yes">Leave unchecked for Wah!Cade to auto-detect background images.</property>
1598 <property name="can_focus">True</property>1600 <property name="can_focus">True</property>
1599 <property name="label" translatable="yes">Background Image</property>1601 <property name="label" translatable="yes">Background Image</property>
1600 <property name="use_underline">True</property>1602 <property name="use_underline">True</property>
@@ -1789,6 +1791,7 @@
1789 <property name="relief">GTK_RELIEF_NORMAL</property>1791 <property name="relief">GTK_RELIEF_NORMAL</property>
1790 <property name="focus_on_click">True</property>1792 <property name="focus_on_click">True</property>
1791 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Tue, 04 Jul 2006 08:23:41 GMT"/>1793 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Tue, 04 Jul 2006 08:23:41 GMT"/>
1794 <accelerator key="Escape" modifiers="0" signal="clicked"/>
1792 </widget>1795 </widget>
1793 </child>1796 </child>
1794 </widget>1797 </widget>
17951798
=== modified file 'glade/layout_editor.glade.bak'
--- glade/layout_editor.glade.bak 2009-01-11 16:29:58 +0000
+++ glade/layout_editor.glade.bak 2011-03-03 21:06:42 +0000
@@ -729,6 +729,7 @@
729 <property name="relief">GTK_RELIEF_NORMAL</property>729 <property name="relief">GTK_RELIEF_NORMAL</property>
730 <property name="focus_on_click">True</property>730 <property name="focus_on_click">True</property>
731 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Wed, 28 Jun 2006 09:06:53 GMT"/>731 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Wed, 28 Jun 2006 09:06:53 GMT"/>
732 <accelerator key="Escape" modifiers="0" signal="clicked"/>
732 </widget>733 </widget>
733 </child>734 </child>
734 </widget>735 </widget>
@@ -1789,6 +1790,7 @@
1789 <property name="relief">GTK_RELIEF_NORMAL</property>1790 <property name="relief">GTK_RELIEF_NORMAL</property>
1790 <property name="focus_on_click">True</property>1791 <property name="focus_on_click">True</property>
1791 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Tue, 04 Jul 2006 08:23:41 GMT"/>1792 <signal name="clicked" handler="on_btnClose_clicked" last_modification_time="Tue, 04 Jul 2006 08:23:41 GMT"/>
1793 <accelerator key="Escape" modifiers="0" signal="clicked"/>
1792 </widget>1794 </widget>
1793 </child>1795 </child>
1794 </widget>1796 </widget>
17951797
=== modified file 'glade/layout_editor.glade.h'
--- glade/layout_editor.glade.h 2008-11-30 10:26:19 +0000
+++ glade/layout_editor.glade.h 2011-03-03 21:06:42 +0000
@@ -24,6 +24,7 @@
24char *s = N_("Item _Properties");24char *s = N_("Item _Properties");
25char *s = N_("Layout");25char *s = N_("Layout");
26char *s = N_("Layout Properties");26char *s = N_("Layout Properties");
27char *s = N_("Leave unchecked for Wah!Cade to auto-detect background images.");
27char *s = N_("Left");28char *s = N_("Left");
28char *s = N_("M_essage Window");29char *s = N_("M_essage Window");
29char *s = N_("Main Window");30char *s = N_("Main Window");
3031
=== modified file 'glade/wahcade_setup.glade'
--- glade/wahcade_setup.glade 2009-01-11 16:29:58 +0000
+++ glade/wahcade_setup.glade 2011-03-03 21:06:42 +0000
@@ -259,7 +259,7 @@
259 <widget class="GtkTable" id="tblWCMovies">259 <widget class="GtkTable" id="tblWCMovies">
260 <property name="border_width">5</property>260 <property name="border_width">5</property>
261 <property name="visible">True</property>261 <property name="visible">True</property>
262 <property name="n_rows">4</property>262 <property name="n_rows">5</property>
263 <property name="n_columns">2</property>263 <property name="n_columns">2</property>
264 <property name="homogeneous">False</property>264 <property name="homogeneous">False</property>
265 <property name="row_spacing">0</property>265 <property name="row_spacing">0</property>
@@ -299,7 +299,7 @@
299 <property name="can_focus">True</property>299 <property name="can_focus">True</property>
300 <property name="climb_rate">1</property>300 <property name="climb_rate">1</property>
301 <property name="digits">0</property>301 <property name="digits">0</property>
302 <property name="numeric">False</property>302 <property name="numeric">True</property>
303 <property name="update_policy">GTK_UPDATE_ALWAYS</property>303 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
304 <property name="snap_to_ticks">False</property>304 <property name="snap_to_ticks">False</property>
305 <property name="wrap">False</property>305 <property name="wrap">False</property>
@@ -386,8 +386,8 @@
386 <packing>386 <packing>
387 <property name="left_attach">0</property>387 <property name="left_attach">0</property>
388 <property name="right_attach">1</property>388 <property name="right_attach">1</property>
389 <property name="top_attach">2</property>389 <property name="top_attach">3</property>
390 <property name="bottom_attach">3</property>390 <property name="bottom_attach">4</property>
391 <property name="x_options">fill</property>391 <property name="x_options">fill</property>
392 <property name="y_options"></property>392 <property name="y_options"></property>
393 </packing>393 </packing>
@@ -414,8 +414,8 @@
414 <packing>414 <packing>
415 <property name="left_attach">0</property>415 <property name="left_attach">0</property>
416 <property name="right_attach">1</property>416 <property name="right_attach">1</property>
417 <property name="top_attach">3</property>417 <property name="top_attach">4</property>
418 <property name="bottom_attach">4</property>418 <property name="bottom_attach">5</property>
419 <property name="x_options">fill</property>419 <property name="x_options">fill</property>
420 <property name="y_options"></property>420 <property name="y_options"></property>
421 </packing>421 </packing>
@@ -479,8 +479,8 @@
479 <packing>479 <packing>
480 <property name="left_attach">1</property>480 <property name="left_attach">1</property>
481 <property name="right_attach">2</property>481 <property name="right_attach">2</property>
482 <property name="top_attach">2</property>482 <property name="top_attach">3</property>
483 <property name="bottom_attach">3</property>483 <property name="bottom_attach">4</property>
484 <property name="x_options">fill</property>484 <property name="x_options">fill</property>
485 <property name="y_options">fill</property>485 <property name="y_options">fill</property>
486 </packing>486 </packing>
@@ -544,8 +544,54 @@
544 <packing>544 <packing>
545 <property name="left_attach">1</property>545 <property name="left_attach">1</property>
546 <property name="right_attach">2</property>546 <property name="right_attach">2</property>
547 <property name="top_attach">3</property>547 <property name="top_attach">4</property>
548 <property name="bottom_attach">4</property>548 <property name="bottom_attach">5</property>
549 <property name="x_options">fill</property>
550 <property name="y_options">fill</property>
551 </packing>
552 </child>
553
554 <child>
555 <widget class="GtkLabel" id="label107">
556 <property name="visible">True</property>
557 <property name="label" translatable="yes">Music / Movie Mix</property>
558 <property name="use_underline">False</property>
559 <property name="use_markup">False</property>
560 <property name="justify">GTK_JUSTIFY_RIGHT</property>
561 <property name="wrap">False</property>
562 <property name="selectable">False</property>
563 <property name="xalign">1</property>
564 <property name="yalign">0.5</property>
565 <property name="xpad">4</property>
566 <property name="ypad">0</property>
567 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
568 <property name="width_chars">-1</property>
569 <property name="single_line_mode">False</property>
570 <property name="angle">0</property>
571 </widget>
572 <packing>
573 <property name="left_attach">0</property>
574 <property name="right_attach">1</property>
575 <property name="top_attach">2</property>
576 <property name="bottom_attach">3</property>
577 <property name="x_options">fill</property>
578 <property name="y_options"></property>
579 </packing>
580 </child>
581
582 <child>
583 <widget class="GtkComboBox" id="cboWCMovieMix">
584 <property name="visible">True</property>
585 <property name="items" translatable="yes"></property>
586 <property name="add_tearoffs">False</property>
587 <property name="focus_on_click">True</property>
588 <signal name="changed" handler="on_Setup_changed" last_modification_time="Sun, 28 Jun 2009 16:49:44 GMT"/>
589 </widget>
590 <packing>
591 <property name="left_attach">1</property>
592 <property name="right_attach">2</property>
593 <property name="top_attach">2</property>
594 <property name="bottom_attach">3</property>
549 <property name="x_options">fill</property>595 <property name="x_options">fill</property>
550 <property name="y_options">fill</property>596 <property name="y_options">fill</property>
551 </packing>597 </packing>
@@ -597,7 +643,7 @@
597 <widget class="GtkTable" id="tblWCMisc">643 <widget class="GtkTable" id="tblWCMisc">
598 <property name="border_width">5</property>644 <property name="border_width">5</property>
599 <property name="visible">True</property>645 <property name="visible">True</property>
600 <property name="n_rows">3</property>646 <property name="n_rows">4</property>
601 <property name="n_columns">2</property>647 <property name="n_columns">2</property>
602 <property name="homogeneous">False</property>648 <property name="homogeneous">False</property>
603 <property name="row_spacing">0</property>649 <property name="row_spacing">0</property>
@@ -673,6 +719,30 @@
673 <property name="y_options"></property>719 <property name="y_options"></property>
674 </packing>720 </packing>
675 </child>721 </child>
722
723 <child>
724 <widget class="GtkCheckButton" id="chkWCListArrows">
725 <property name="visible">True</property>
726 <property name="tooltip" translatable="yes">Show scroll up / down arrows in Games, Options and History Viewer lists.</property>
727 <property name="can_focus">True</property>
728 <property name="label" translatable="yes">Display Scroll Arrows in Lists</property>
729 <property name="use_underline">True</property>
730 <property name="relief">GTK_RELIEF_NORMAL</property>
731 <property name="focus_on_click">True</property>
732 <property name="active">False</property>
733 <property name="inconsistent">False</property>
734 <property name="draw_indicator">True</property>
735 <signal name="toggled" handler="on_Setup_changed" last_modification_time="Tue, 24 Oct 2006 16:09:06 GMT"/>
736 </widget>
737 <packing>
738 <property name="left_attach">0</property>
739 <property name="right_attach">2</property>
740 <property name="top_attach">3</property>
741 <property name="bottom_attach">4</property>
742 <property name="x_options">fill</property>
743 <property name="y_options"></property>
744 </packing>
745 </child>
676 </widget>746 </widget>
677 </child>747 </child>
678748
@@ -761,7 +831,7 @@
761 <property name="can_focus">True</property>831 <property name="can_focus">True</property>
762 <property name="climb_rate">1</property>832 <property name="climb_rate">1</property>
763 <property name="digits">0</property>833 <property name="digits">0</property>
764 <property name="numeric">False</property>834 <property name="numeric">True</property>
765 <property name="update_policy">GTK_UPDATE_ALWAYS</property>835 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
766 <property name="snap_to_ticks">False</property>836 <property name="snap_to_ticks">False</property>
767 <property name="wrap">False</property>837 <property name="wrap">False</property>
@@ -812,7 +882,7 @@
812 <property name="can_focus">True</property>882 <property name="can_focus">True</property>
813 <property name="climb_rate">1</property>883 <property name="climb_rate">1</property>
814 <property name="digits">0</property>884 <property name="digits">0</property>
815 <property name="numeric">False</property>885 <property name="numeric">True</property>
816 <property name="update_policy">GTK_UPDATE_ALWAYS</property>886 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
817 <property name="snap_to_ticks">False</property>887 <property name="snap_to_ticks">False</property>
818 <property name="wrap">False</property>888 <property name="wrap">False</property>
@@ -898,7 +968,7 @@
898 <widget class="GtkTable" id="tblWCMusic">968 <widget class="GtkTable" id="tblWCMusic">
899 <property name="border_width">5</property>969 <property name="border_width">5</property>
900 <property name="visible">True</property>970 <property name="visible">True</property>
901 <property name="n_rows">2</property>971 <property name="n_rows">3</property>
902 <property name="n_columns">2</property>972 <property name="n_columns">2</property>
903 <property name="homogeneous">False</property>973 <property name="homogeneous">False</property>
904 <property name="row_spacing">0</property>974 <property name="row_spacing">0</property>
@@ -1039,6 +1109,29 @@
1039 <property name="y_options"></property>1109 <property name="y_options"></property>
1040 </packing>1110 </packing>
1041 </child>1111 </child>
1112
1113 <child>
1114 <widget class="GtkCheckButton" id="chkWCMusicShuffle">
1115 <property name="visible">True</property>
1116 <property name="can_focus">True</property>
1117 <property name="label" translatable="yes">Shuffle Playlist</property>
1118 <property name="use_underline">True</property>
1119 <property name="relief">GTK_RELIEF_NORMAL</property>
1120 <property name="focus_on_click">True</property>
1121 <property name="active">False</property>
1122 <property name="inconsistent">False</property>
1123 <property name="draw_indicator">True</property>
1124 <signal name="toggled" handler="on_Setup_changed" last_modification_time="Mon, 01 Oct 2007 16:48:46 GMT"/>
1125 </widget>
1126 <packing>
1127 <property name="left_attach">0</property>
1128 <property name="right_attach">2</property>
1129 <property name="top_attach">2</property>
1130 <property name="bottom_attach">3</property>
1131 <property name="x_options">fill</property>
1132 <property name="y_options"></property>
1133 </packing>
1134 </child>
1042 </widget>1135 </widget>
1043 </child>1136 </child>
10441137
10451138
=== modified file 'glade/wahcade_setup.glade.bak'
--- glade/wahcade_setup.glade.bak 2009-01-11 16:29:58 +0000
+++ glade/wahcade_setup.glade.bak 2011-03-03 21:06:42 +0000
@@ -259,7 +259,7 @@
259 <widget class="GtkTable" id="tblWCMovies">259 <widget class="GtkTable" id="tblWCMovies">
260 <property name="border_width">5</property>260 <property name="border_width">5</property>
261 <property name="visible">True</property>261 <property name="visible">True</property>
262 <property name="n_rows">4</property>262 <property name="n_rows">5</property>
263 <property name="n_columns">2</property>263 <property name="n_columns">2</property>
264 <property name="homogeneous">False</property>264 <property name="homogeneous">False</property>
265 <property name="row_spacing">0</property>265 <property name="row_spacing">0</property>
@@ -299,7 +299,7 @@
299 <property name="can_focus">True</property>299 <property name="can_focus">True</property>
300 <property name="climb_rate">1</property>300 <property name="climb_rate">1</property>
301 <property name="digits">0</property>301 <property name="digits">0</property>
302 <property name="numeric">False</property>302 <property name="numeric">True</property>
303 <property name="update_policy">GTK_UPDATE_ALWAYS</property>303 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
304 <property name="snap_to_ticks">False</property>304 <property name="snap_to_ticks">False</property>
305 <property name="wrap">False</property>305 <property name="wrap">False</property>
@@ -386,8 +386,8 @@
386 <packing>386 <packing>
387 <property name="left_attach">0</property>387 <property name="left_attach">0</property>
388 <property name="right_attach">1</property>388 <property name="right_attach">1</property>
389 <property name="top_attach">2</property>389 <property name="top_attach">3</property>
390 <property name="bottom_attach">3</property>390 <property name="bottom_attach">4</property>
391 <property name="x_options">fill</property>391 <property name="x_options">fill</property>
392 <property name="y_options"></property>392 <property name="y_options"></property>
393 </packing>393 </packing>
@@ -414,8 +414,8 @@
414 <packing>414 <packing>
415 <property name="left_attach">0</property>415 <property name="left_attach">0</property>
416 <property name="right_attach">1</property>416 <property name="right_attach">1</property>
417 <property name="top_attach">3</property>417 <property name="top_attach">4</property>
418 <property name="bottom_attach">4</property>418 <property name="bottom_attach">5</property>
419 <property name="x_options">fill</property>419 <property name="x_options">fill</property>
420 <property name="y_options"></property>420 <property name="y_options"></property>
421 </packing>421 </packing>
@@ -479,8 +479,8 @@
479 <packing>479 <packing>
480 <property name="left_attach">1</property>480 <property name="left_attach">1</property>
481 <property name="right_attach">2</property>481 <property name="right_attach">2</property>
482 <property name="top_attach">2</property>482 <property name="top_attach">3</property>
483 <property name="bottom_attach">3</property>483 <property name="bottom_attach">4</property>
484 <property name="x_options">fill</property>484 <property name="x_options">fill</property>
485 <property name="y_options">fill</property>485 <property name="y_options">fill</property>
486 </packing>486 </packing>
@@ -544,8 +544,54 @@
544 <packing>544 <packing>
545 <property name="left_attach">1</property>545 <property name="left_attach">1</property>
546 <property name="right_attach">2</property>546 <property name="right_attach">2</property>
547 <property name="top_attach">3</property>547 <property name="top_attach">4</property>
548 <property name="bottom_attach">4</property>548 <property name="bottom_attach">5</property>
549 <property name="x_options">fill</property>
550 <property name="y_options">fill</property>
551 </packing>
552 </child>
553
554 <child>
555 <widget class="GtkLabel" id="label107">
556 <property name="visible">True</property>
557 <property name="label" translatable="yes">Music / Movie Mix</property>
558 <property name="use_underline">False</property>
559 <property name="use_markup">False</property>
560 <property name="justify">GTK_JUSTIFY_RIGHT</property>
561 <property name="wrap">False</property>
562 <property name="selectable">False</property>
563 <property name="xalign">1</property>
564 <property name="yalign">0.5</property>
565 <property name="xpad">4</property>
566 <property name="ypad">0</property>
567 <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
568 <property name="width_chars">-1</property>
569 <property name="single_line_mode">False</property>
570 <property name="angle">0</property>
571 </widget>
572 <packing>
573 <property name="left_attach">0</property>
574 <property name="right_attach">1</property>
575 <property name="top_attach">2</property>
576 <property name="bottom_attach">3</property>
577 <property name="x_options">fill</property>
578 <property name="y_options"></property>
579 </packing>
580 </child>
581
582 <child>
583 <widget class="GtkComboBox" id="cboWCMovieMix">
584 <property name="visible">True</property>
585 <property name="items" translatable="yes"></property>
586 <property name="add_tearoffs">False</property>
587 <property name="focus_on_click">True</property>
588 <signal name="changed" handler="on_setup_changed" last_modification_time="Sun, 28 Jun 2009 16:48:17 GMT"/>
589 </widget>
590 <packing>
591 <property name="left_attach">1</property>
592 <property name="right_attach">2</property>
593 <property name="top_attach">2</property>
594 <property name="bottom_attach">3</property>
549 <property name="x_options">fill</property>595 <property name="x_options">fill</property>
550 <property name="y_options">fill</property>596 <property name="y_options">fill</property>
551 </packing>597 </packing>
@@ -597,7 +643,7 @@
597 <widget class="GtkTable" id="tblWCMisc">643 <widget class="GtkTable" id="tblWCMisc">
598 <property name="border_width">5</property>644 <property name="border_width">5</property>
599 <property name="visible">True</property>645 <property name="visible">True</property>
600 <property name="n_rows">3</property>646 <property name="n_rows">4</property>
601 <property name="n_columns">2</property>647 <property name="n_columns">2</property>
602 <property name="homogeneous">False</property>648 <property name="homogeneous">False</property>
603 <property name="row_spacing">0</property>649 <property name="row_spacing">0</property>
@@ -673,6 +719,30 @@
673 <property name="y_options"></property>719 <property name="y_options"></property>
674 </packing>720 </packing>
675 </child>721 </child>
722
723 <child>
724 <widget class="GtkCheckButton" id="chkWCListArrows">
725 <property name="visible">True</property>
726 <property name="tooltip" translatable="yes">Show scroll up / down arrows in Games, Options and History Viewer lists.</property>
727 <property name="can_focus">True</property>
728 <property name="label" translatable="yes">Display Scroll Arrows in Lists</property>
729 <property name="use_underline">True</property>
730 <property name="relief">GTK_RELIEF_NORMAL</property>
731 <property name="focus_on_click">True</property>
732 <property name="active">False</property>
733 <property name="inconsistent">False</property>
734 <property name="draw_indicator">True</property>
735 <signal name="toggled" handler="on_Setup_changed" last_modification_time="Tue, 24 Oct 2006 16:09:06 GMT"/>
736 </widget>
737 <packing>
738 <property name="left_attach">0</property>
739 <property name="right_attach">2</property>
740 <property name="top_attach">3</property>
741 <property name="bottom_attach">4</property>
742 <property name="x_options">fill</property>
743 <property name="y_options"></property>
744 </packing>
745 </child>
676 </widget>746 </widget>
677 </child>747 </child>
678748
@@ -761,7 +831,7 @@
761 <property name="can_focus">True</property>831 <property name="can_focus">True</property>
762 <property name="climb_rate">1</property>832 <property name="climb_rate">1</property>
763 <property name="digits">0</property>833 <property name="digits">0</property>
764 <property name="numeric">False</property>834 <property name="numeric">True</property>
765 <property name="update_policy">GTK_UPDATE_ALWAYS</property>835 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
766 <property name="snap_to_ticks">False</property>836 <property name="snap_to_ticks">False</property>
767 <property name="wrap">False</property>837 <property name="wrap">False</property>
@@ -812,7 +882,7 @@
812 <property name="can_focus">True</property>882 <property name="can_focus">True</property>
813 <property name="climb_rate">1</property>883 <property name="climb_rate">1</property>
814 <property name="digits">0</property>884 <property name="digits">0</property>
815 <property name="numeric">False</property>885 <property name="numeric">True</property>
816 <property name="update_policy">GTK_UPDATE_ALWAYS</property>886 <property name="update_policy">GTK_UPDATE_ALWAYS</property>
817 <property name="snap_to_ticks">False</property>887 <property name="snap_to_ticks">False</property>
818 <property name="wrap">False</property>888 <property name="wrap">False</property>
@@ -898,7 +968,7 @@
898 <widget class="GtkTable" id="tblWCMusic">968 <widget class="GtkTable" id="tblWCMusic">
899 <property name="border_width">5</property>969 <property name="border_width">5</property>
900 <property name="visible">True</property>970 <property name="visible">True</property>
901 <property name="n_rows">2</property>971 <property name="n_rows">3</property>
902 <property name="n_columns">2</property>972 <property name="n_columns">2</property>
903 <property name="homogeneous">False</property>973 <property name="homogeneous">False</property>
904 <property name="row_spacing">0</property>974 <property name="row_spacing">0</property>
@@ -1039,6 +1109,29 @@
1039 <property name="y_options"></property>1109 <property name="y_options"></property>
1040 </packing>1110 </packing>
1041 </child>1111 </child>
1112
1113 <child>
1114 <widget class="GtkCheckButton" id="chkWCMusicShuffle">
1115 <property name="visible">True</property>
1116 <property name="can_focus">True</property>
1117 <property name="label" translatable="yes">Shuffle Playlist</property>
1118 <property name="use_underline">True</property>
1119 <property name="relief">GTK_RELIEF_NORMAL</property>
1120 <property name="focus_on_click">True</property>
1121 <property name="active">False</property>
1122 <property name="inconsistent">False</property>
1123 <property name="draw_indicator">True</property>
1124 <signal name="toggled" handler="on_Setup_changed" last_modification_time="Mon, 01 Oct 2007 16:48:46 GMT"/>
1125 </widget>
1126 <packing>
1127 <property name="left_attach">0</property>
1128 <property name="right_attach">2</property>
1129 <property name="top_attach">2</property>
1130 <property name="bottom_attach">3</property>
1131 <property name="x_options">fill</property>
1132 <property name="y_options"></property>
1133 </packing>
1134 </child>
1042 </widget>1135 </widget>
1043 </child>1136 </child>
10441137
@@ -6315,7 +6408,7 @@
6315 <property name="visible">True</property>6408 <property name="visible">True</property>
6316 <property name="add_tearoffs">False</property>6409 <property name="add_tearoffs">False</property>
6317 <property name="focus_on_click">True</property>6410 <property name="focus_on_click">True</property>
6318 <signal name="changed" handler="on_cboLists_changed" last_modification_time="Wed, 24 Jan 2007 17:53:43 GMT"/>6411 <signal name="changed" handler="on_cboList_changed" last_modification_time="Sat, 10 Jan 2009 16:07:36 GMT"/>
6319 </widget>6412 </widget>
6320 <packing>6413 <packing>
6321 <property name="padding">0</property>6414 <property name="padding">0</property>
63226415
=== modified file 'glade/wahcade_setup.glade.h'
--- glade/wahcade_setup.glade.h 2008-11-30 10:26:19 +0000
+++ glade/wahcade_setup.glade.h 2011-03-03 21:06:42 +0000
@@ -82,6 +82,7 @@
82char *s = N_("Directory for artwork that will be used in the layouts Artwork4 image.\n"82char *s = N_("Directory for artwork that will be used in the layouts Artwork4 image.\n"
83 "(also see Wah!Cade Layout Editor)");83 "(also see Wah!Cade Layout Editor)");
84char *s = N_("Display Mouse Cursor");84char *s = N_("Display Mouse Cursor");
85char *s = N_("Display Scroll Arrows in Lists");
85char *s = N_("Edit Game List");86char *s = N_("Edit Game List");
86char *s = N_("Edit List");87char *s = N_("Edit List");
87char *s = N_("Emulators");88char *s = N_("Emulators");
@@ -121,6 +122,7 @@
121char *s = N_("Movie Directory");122char *s = N_("Movie Directory");
122char *s = N_("Movies");123char *s = N_("Movies");
123char *s = N_("Music");124char *s = N_("Music");
125char *s = N_("Music / Movie Mix");
124char *s = N_("NMS File");126char *s = N_("NMS File");
125char *s = N_("Number of seconds before Screen Saver starts");127char *s = N_("Number of seconds before Screen Saver starts");
126char *s = N_("Number of seconds to display Screen Saver image / movie");128char *s = N_("Number of seconds to display Screen Saver image / movie");
@@ -148,6 +150,8 @@
148char *s = N_("Set Intro Movie");150char *s = N_("Set Intro Movie");
149char *s = N_("Set XML / Data File");151char *s = N_("Set XML / Data File");
150char *s = N_("Setup Filters...");152char *s = N_("Setup Filters...");
153char *s = N_("Show scroll up / down arrows in Games, Options and History Viewer lists.");
154char *s = N_("Shuffle Playlist");
151char *s = N_("Start Wah!Cade in fullscreen mode");155char *s = N_("Start Wah!Cade in fullscreen mode");
152char *s = N_("The Control Panel Viewer layout file location (.lay)");156char *s = N_("The Control Panel Viewer layout file location (.lay)");
153char *s = N_("The background image (if any) for the history viewer window.");157char *s = N_("The background image (if any) for the history viewer window.");
154158
=== modified file 'glade2.py'
--- glade2.py 2008-11-30 10:26:19 +0000
+++ glade2.py 2011-03-03 21:06:42 +0000
@@ -27,7 +27,7 @@
27 #not win32, ensure version 2 of pygtk is imported27 #not win32, ensure version 2 of pygtk is imported
28 pygtk.require('2.0')28 pygtk.require('2.0')
29import gtk29import gtk
30assert gtk.pygtk_version >= (2,6,0), 'pygtk should be >= 2.6.0'30assert gtk.pygtk_version >= (2, 12, 0), 'pygtk should be >= 2.12.0'
31import gtk.glade31import gtk.glade
32import gobject32import gobject
33import pango33import pango
@@ -39,6 +39,7 @@
39 glade_filename : name of .glade filename39 glade_filename : name of .glade filename
40 window_name : name of window / dialog / menu to be created40 window_name : name of window / dialog / menu to be created
41 """41 """
42
42 def __init__(self, glade_filename, window_name, app_name=None):43 def __init__(self, glade_filename, window_name, app_name=None):
43 #load glade file44 #load glade file
44 if app_name:45 if app_name:
@@ -155,10 +156,6 @@
155 None156 None
156 'text')157 'text')
157 """158 """
158 #check gtk version
159 if gtk.pygtk_version < (2,5,0):
160 print "pygtk>=2.5.0 required for iconview"
161 return None, None
162 #create the ListStore and IconView objects159 #create the ListStore and IconView objects
163 ls = gtk.ListStore(*column_types)160 ls = gtk.ListStore(*column_types)
164 ivw = gtk.IconView(ls)161 ivw = gtk.IconView(ls)
@@ -217,7 +214,7 @@
217 cboe.set_text_column(0)214 cboe.set_text_column(0)
218 #populate with text?215 #populate with text?
219 if initial_text:216 if initial_text:
220 ls.append((initial_text,))217 ls.append((initial_text, ))
221 cboe.child.set_text(initial_text)218 cboe.child.set_text(initial_text)
222219
223 def setup_menu(self, mnu_items, mnu_pixmaps, activate_cb):220 def setup_menu(self, mnu_items, mnu_pixmaps, activate_cb):
@@ -273,4 +270,3 @@
273270
274 #map getitem to getattr271 #map getitem to getattr
275 __getitem__ = __getattr__272 __getitem__ = __getattr__
276
277273
=== modified file 'gst_media.py'
--- gst_media.py 2009-01-07 17:51:46 +0000
+++ gst_media.py 2011-03-03 21:06:42 +0000
@@ -5,7 +5,7 @@
5# Application: wah!cade5# Application: wah!cade
6# File: gst_video.py6# File: gst_video.py
7# Description: gstreamer video widget7# Description: gstreamer video widget
8# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>8# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
9# Taken from gstreamer docs example code9# Taken from gstreamer docs example code
10###10###
11#11#
@@ -26,46 +26,46 @@
26import os26import os
27import urllib27import urllib
28import fnmatch28import fnmatch
29import random
30import sys
2931
30import pygtk32import pygtk
31pygtk.require('2.0')33pygtk.require('2.0')
32import gobject34#import gobject
33import pygst35import pygst
34pygst.require('0.10')36pygst.require('0.10')
35import gst37import gst
36import gst.interfaces
37import gtk38import gtk
3839
40
39class GstPlayer:41class GstPlayer:
42
40 def __init__(self, videowidget):43 def __init__(self, videowidget):
41 """initialise player class"""44 """initialise player class"""
45 print "GstPlayer.__init__"
42 self.playing = False46 self.playing = False
43 self.player = gst.element_factory_make("playbin", "player")47 self.player = gst.element_factory_make('playbin2')
44 self.videowidget = videowidget48 #self.imagesink = gst.element_factory_make('xvimagesink')
49 #self.imagesink.set_property('force-aspect-ratio', False)
50 #self.player.set_property('video-sink', self.imagesink)
51 if videowidget:
52 self.media_type = 'video'
53 self.videowidget = videowidget
54 else:
55 self.media_type = 'music'
45 self.on_eos = False56 self.on_eos = False
46 #
47 bus = self.player.get_bus()57 bus = self.player.get_bus()
58 bus.add_signal_watch()
48 bus.enable_sync_message_emission()59 bus.enable_sync_message_emission()
49 bus.add_signal_watch()60 bus.connect('message', self.on_message)
50 bus.connect('sync-message::element', self.on_sync_message)61 bus.connect('sync-message::element', self.on_sync_message)
51 bus.connect('message', self.on_message)
5262
53 def on_sync_message(self, bus, message):
54 """message from player?"""
55 if message.structure is None:
56 return
57 if message.structure.get_name() == 'prepare-xwindow-id':
58 self.videowidget.set_sink(message.src)
59 #message.src.set_property('force-aspect-ratio', True)
60 #self.player.set_property('volume', 0)
61 #print "vol=", self.player.get_property('volume')
62
63 def on_message(self, bus, message):63 def on_message(self, bus, message):
64 """message from player?"""64 """message from player?"""
65 t = message.type65 t = message.type
66 if t == gst.MESSAGE_ERROR:66 if t == gst.MESSAGE_ERROR:
67 err, debug = message.parse_error()67 err, debug = message.parse_error()
68 print "Error: %s" % err, debug68 #print "GST Error: %s" % err, debug
69 if self.on_eos:69 if self.on_eos:
70 self.on_eos()70 self.on_eos()
71 self.playing = False71 self.playing = False
@@ -74,9 +74,26 @@
74 self.on_eos()74 self.on_eos()
75 self.playing = False75 self.playing = False
7676
77 def on_sync_message(self, bus, message):
78 """ """
79 if message.structure is None:
80 return
81 message_name = message.structure.get_name()
82 #print "on_sync_message: ", message_name
83 if message_name == "prepare-xwindow-id":
84 # Assign the viewport
85 self.imagesink = message.src
86 self.imagesink.set_property('force-aspect-ratio', False)
87 self.imagesink.set_xwindow_id(self.videowidget.window.xid)
88 #self.imagesink = gst.element_factory_make('xvimagesink')
89 #self.imagesink.set_property('force-aspect-ratio', False)
90 self.player.set_property('video-sink', self.imagesink)
91
77 def set_location(self, location):92 def set_location(self, location):
78 """set filename"""93 """set filename"""
79 self.player.set_property('uri', location)94 self.player.set_property('uri', location)
95 #if self.media_type == 'video':
96 # self.imagesink.set_xwindow_id(self.videowidget.window_xid)
8097
81 def query_position(self):98 def query_position(self):
82 """Returns a (position, duration) tuple"""99 """Returns a (position, duration) tuple"""
@@ -120,7 +137,7 @@
120 gst.info("playing player")137 gst.info("playing player")
121 self.player.set_state(gst.STATE_PLAYING)138 self.player.set_state(gst.STATE_PLAYING)
122 self.playing = True139 self.playing = True
123 140
124 def stop(self):141 def stop(self):
125 """stop playing"""142 """stop playing"""
126 self.player.set_state(gst.STATE_NULL)143 self.player.set_state(gst.STATE_NULL)
@@ -133,60 +150,35 @@
133 def is_playing(self):150 def is_playing(self):
134 """is file playing"""151 """is file playing"""
135 return self.playing152 return self.playing
136 153
137 def set_volume(self, volume_level):154 def set_volume(self, volume_level):
138 """set the volume level"""155 """set the volume level"""
139 self.player.set_property('volume', volume_level)156 self.player.set_property('volume', volume_level)
140 gst.info("changed volume to [%s]" % volume_level)157 gst.info("changed volume to [%s]" % volume_level)
141158
142 159
143class VideoWidget(gtk.DrawingArea):160class VideoWidget(gtk.DrawingArea):
161
144 def __init__(self):162 def __init__(self):
145 """initialise video widget"""163 """initialise video widget"""
164 print "VideoWidget.__init__"
146 gtk.DrawingArea.__init__(self)165 gtk.DrawingArea.__init__(self)
147 self.imagesink = None166 self.connect('realize', self.on_realize)
148 self.unset_flags(gtk.DOUBLE_BUFFERED)167
149 #print "events=", self.event168 def on_realize(self, sender):
150 #self.add_events(169 """video widget realized"""
151 # gtk.gdk.POINTER_MOTION_MASK |170 print "VideoWidget.on_realize"
152 # gtk.gdk.SCROLL_MASK |171 self.window_xid = self.window.xid
153 # gtk.gdk.BUTTON_RELEASE_MASK |172
154 # gtk.gdk.KEY_PRESS |173
155 # gtk.gdk.KEY_RELEASE)
156 #self.set_flags(gtk.CAN_FOCUS)
157 #self.set_flags(gtk.HAS_FOCUS)
158 #self.set_flags(gtk.CAN_DEFAULT)
159 #self.set_flags(gtk.HAS_DEFAULT)
160 #self.connect('key-press-event', self.test_key)
161 #self.set_property('can-focus', True)
162
163 #def test_key(self, widget, event, *args):
164 # print "event=", event
165
166 def do_expose_event(self, event):
167 """expose"""
168 #print "gst event=",event
169 if self.imagesink:
170 self.imagesink.expose()
171 return False
172 else:
173 return True
174
175 def set_sink(self, sink):
176 """set sink"""
177 assert self.window.xid
178 self.imagesink = sink
179 self.imagesink.set_xwindow_id(self.window.xid)
180
181
182class GstVideo:174class GstVideo:
175
183 def __init__(self, videowidget):176 def __init__(self, videowidget):
184 """initialise video widget"""177 """initialise video widget"""
185 #self.vid_filename = ''178 print "GstVideo.__init__"
186 self.videowidget = videowidget179 self.videowidget = videowidget
187 self.player = GstPlayer(self.videowidget)180 self.player = GstPlayer(self.videowidget)
188 self.player.on_eos = lambda *x: self.on_eos()181 self.player.on_eos = lambda *x: self.on_eos()
189 #self.loop_video = True
190 self.vid_finished_cb = None182 self.vid_finished_cb = None
191 self.update_id = -1183 self.update_id = -1
192 self.changed_id = -1184 self.changed_id = -1
@@ -203,7 +195,7 @@
203 else:195 else:
204 #finished196 #finished
205 self.vid_finished_cb()197 self.vid_finished_cb()
206 198
207 def play(self, vid_filename, vid_finished_cb=None):199 def play(self, vid_filename, vid_finished_cb=None):
208 """play given video file"""200 """play given video file"""
209 self.vid_finished_cb = vid_finished_cb201 self.vid_finished_cb = vid_finished_cb
@@ -215,18 +207,20 @@
215 self.player.stop()207 self.player.stop()
216 if self.vid_finished_cb:208 if self.vid_finished_cb:
217 self.vid_finished_cb()209 self.vid_finished_cb()
218 210
219 def close(self):211 def close(self):
220 """close"""212 """close"""
221 pass213 pass
222 214
223 def set_volume(self, volume_level):215 def set_volume(self, volume_level):
224 """change volume level"""216 """change volume level"""
225 self.player.set_volume((volume_level / 100.0))217 self.player.set_volume((volume_level / 100.0))
226218
227219
228class MusicPlayer:220class MusicPlayer:
221
229 def __init__(self):222 def __init__(self):
223 """initialise"""
230 self.player = GstPlayer(None)224 self.player = GstPlayer(None)
231 self.player.on_eos = self.on_eos225 self.player.on_eos = self.on_eos
232 self.current_track = -1226 self.current_track = -1
@@ -234,16 +228,17 @@
234 self.tracks = []228 self.tracks = []
235229
236 def get_uris_from_pls(self, uri):230 def get_uris_from_pls(self, uri):
231 """return list of tracks from playlist"""
237 uris = []232 uris = []
238 lines = open(uri).readlines()233 lines = open(uri).readlines()
239 # = content.splitlines()234 # = content.splitlines()
240 for line in lines:235 for line in lines:
241 if line.lower().startswith("file") and line.find("=") != -1:236 if line.lower().startswith("file") and line.find("=") != -1:
242 uris.append(line[line.find("=") + 1:].strip())237 uris.append(line[line.find("=") + 1:].strip())
243 uris = [self.pls_rebuild_uri(uri,u) for u in uris]238 uris = [self.pls_rebuild_uri(uri, u) for u in uris]
244 return uris239 return uris
245 240
246 def pls_rebuild_uri(self, base_uri,uri):241 def pls_rebuild_uri(self, base_uri, uri):
247 base_uri = base_uri[:base_uri.rfind("/")]242 base_uri = base_uri[:base_uri.rfind("/")]
248 if uri.find("://") != -1:243 if uri.find("://") != -1:
249 return uri244 return uri
@@ -251,32 +246,34 @@
251 return "file://%s" % urllib.quote(uri)246 return "file://%s" % urllib.quote(uri)
252 else:247 else:
253 return "%s/%s" % (base_uri, urllib.quote(uri))248 return "%s/%s" % (base_uri, urllib.quote(uri))
254 249
255 def on_eos(self):250 def on_eos(self):
256 #print "end of track"251 """end of track"""
257 self.next_track()252 self.next_track()
258 253
259 def load_file(self, location, play=True):254 def load_file(self, location, play=True):
260 """load individual track"""255 """load individual track"""
261 self.tracks = [location]256 self.tracks = [location]
262 self.current_track = -1257 self.current_track = -1
263 if play:258 if play:
264 self.next_track()259 self.next_track()
265 260
266 def load_playlist(self, playlist, play=True):261 def load_playlist(self, playlist, play=True, shuffle=False):
267 """load playlist"""262 """load playlist"""
268 self.tracks = playlist263 self.tracks = playlist
264 if shuffle:
265 random.shuffle(self.tracks)
269 self.current_track = -1266 self.current_track = -1
270 if play:267 if play:
271 self.next_track()268 self.next_track()
272 269
273 def load_playlist_file(self, playlist_file, play=True):270 def load_playlist_file(self, playlist_file, play=True):
274 """load playlist"""271 """load playlist"""
275 self.tracks = self.get_uris_from_pls(playlist_file)272 self.tracks = self.get_uris_from_pls(playlist_file)
276 self.current_track = -1273 self.current_track = -1
277 if play:274 if play:
278 self.next_track()275 self.next_track()
279 276
280 def next_track(self):277 def next_track(self):
281 """goto next track in playlist"""278 """goto next track in playlist"""
282 self.current_track += 1279 self.current_track += 1
@@ -285,11 +282,11 @@
285 #print "self.current_track=", self.current_track + 1282 #print "self.current_track=", self.current_track + 1
286 #print "setting track to: ", self.tracks[self.current_track]283 #print "setting track to: ", self.tracks[self.current_track]
287 self.player.stop()284 self.player.stop()
288 if len(self.tracks) > 0: 285 if len(self.tracks) > 0:
289 self.player.set_location('file://%s' % self.tracks[self.current_track])286 self.player.set_location('file://%s' % self.tracks[self.current_track])
290 self.player.seek(0L)287 self.player.seek(0L)
291 self.player.play()288 self.player.play()
292 289
293 def previous_track(self):290 def previous_track(self):
294 """goto previous track in playlist"""291 """goto previous track in playlist"""
295 self.current_track -= 1292 self.current_track -= 1
@@ -302,15 +299,19 @@
302 self.player.set_location('file://%s' % self.tracks[self.current_track])299 self.player.set_location('file://%s' % self.tracks[self.current_track])
303 self.player.seek(0L)300 self.player.seek(0L)
304 self.player.play()301 self.player.play()
305 302
306 def play(self):303 def play(self):
307 """pause"""304 """pause"""
308 self.player.play()305 self.player.play()
309 306
310 def pause(self):307 def pause(self):
311 """pause"""308 """pause"""
312 self.player.pause()309 self.player.pause()
313 310
311 def stop(self):
312 """pause"""
313 self.player.stop()
314
314 def play_toggle(self):315 def play_toggle(self):
315 """play / pause"""316 """play / pause"""
316 if self.player.is_playing():317 if self.player.is_playing():
@@ -321,7 +322,7 @@
321 def set_volume(self, volume_level):322 def set_volume(self, volume_level):
322 """change volume level"""323 """change volume level"""
323 self.player.set_volume((volume_level / 100.0))324 self.player.set_volume((volume_level / 100.0))
324 325
325 def set_directory(self, music_dir, filespec):326 def set_directory(self, music_dir, filespec):
326 """set player to given dir & load files in it"""327 """set player to given dir & load files in it"""
327 self.current_dir = music_dir328 self.current_dir = music_dir
@@ -329,13 +330,14 @@
329 if os.path.exists(self.current_dir):330 if os.path.exists(self.current_dir):
330 self.first_dir_matched = False331 self.first_dir_matched = False
331 first_tracks = self.get_first_music_tracks(332 first_tracks = self.get_first_music_tracks(
332 root = self.current_dir, 333 root = self.current_dir,
333 recurse = True, 334 recurse = True,
334 pattern = filespec)335 pattern = filespec)
335 first_tracks.sort()336 first_tracks.sort()
336 return first_tracks337 return first_tracks
337 338
338 def get_first_music_tracks(self, root, recurse=False, pattern='*'): 339 def get_first_music_tracks(self, root, recurse=False, pattern='*'):
340 """get list of music tracks"""
339 #initialize341 #initialize
340 result = []342 result = []
341 #must have at least root folder343 #must have at least root folder
@@ -362,4 +364,3 @@
362 if os.path.isdir(fullname) and not os.path.islink(fullname):364 if os.path.isdir(fullname) and not os.path.islink(fullname):
363 result += self.get_first_music_tracks(fullname, recurse, pattern)365 result += self.get_first_music_tracks(fullname, recurse, pattern)
364 return result366 return result
365
366367
=== modified file 'install'
--- install 2009-01-07 17:51:46 +0000
+++ install 2011-03-03 21:06:42 +0000
@@ -48,6 +48,9 @@
48install --directory $DESTDIR/config.dist/layouts/retro_white_1024x76848install --directory $DESTDIR/config.dist/layouts/retro_white_1024x768
49install --directory $DESTDIR/config.dist/layouts/retro_cpviewer49install --directory $DESTDIR/config.dist/layouts/retro_cpviewer
50install --directory $DESTDIR/config.dist/layouts/retro_histview50install --directory $DESTDIR/config.dist/layouts/retro_histview
51install --directory $DESTDIR/config.dist/layouts/simple_640x480
52install --directory $DESTDIR/config.dist/layouts/simple_800x600
53install --directory $DESTDIR/config.dist/layouts/simple_1024x768
51install --directory $DESTDIR/doc54install --directory $DESTDIR/doc
52install --directory $DESTDIR/doc/file_formats55install --directory $DESTDIR/doc/file_formats
53install --directory $DESTDIR/doc/xmame56install --directory $DESTDIR/doc/xmame
@@ -84,6 +87,9 @@
84install --mode=644 config.dist/layouts/retro_white_640x480/* $DESTDIR/config.dist/layouts/retro_white_640x48087install --mode=644 config.dist/layouts/retro_white_640x480/* $DESTDIR/config.dist/layouts/retro_white_640x480
85install --mode=644 config.dist/layouts/retro_white_800x600/* $DESTDIR/config.dist/layouts/retro_white_800x60088install --mode=644 config.dist/layouts/retro_white_800x600/* $DESTDIR/config.dist/layouts/retro_white_800x600
86install --mode=644 config.dist/layouts/retro_white_1024x768/* $DESTDIR/config.dist/layouts/retro_white_1024x76889install --mode=644 config.dist/layouts/retro_white_1024x768/* $DESTDIR/config.dist/layouts/retro_white_1024x768
90install --mode=644 config.dist/layouts/simple_640x480/* $DESTDIR/config.dist/layouts/simple_640x480
91install --mode=644 config.dist/layouts/simple_800x600/* $DESTDIR/config.dist/layouts/simple_800x600
92install --mode=644 config.dist/layouts/simple_1024x768/* $DESTDIR/config.dist/layouts/simple_1024x768
87install --mode=644 config.dist/layouts/retro_cpviewer/* $DESTDIR/config.dist/layouts/retro_cpviewer93install --mode=644 config.dist/layouts/retro_cpviewer/* $DESTDIR/config.dist/layouts/retro_cpviewer
88install --mode=644 config.dist/layouts/retro_histview/* $DESTDIR/config.dist/layouts/retro_histview94install --mode=644 config.dist/layouts/retro_histview/* $DESTDIR/config.dist/layouts/retro_histview
89install --mode=644 doc/* $DESTDIR/doc95install --mode=644 doc/* $DESTDIR/doc
9096
=== modified file 'joystick.py'
--- joystick.py 2008-11-30 10:26:19 +0000
+++ joystick.py 2011-03-03 21:06:42 +0000
@@ -29,21 +29,24 @@
29 import pygame29 import pygame
30 pygame_imported = True30 pygame_imported = True
31except ImportError:31except ImportError:
32 print _('Warning: pygame module not found. Joysticks not supported') 32 print _('Warning: pygame module not found. Joysticks not supported')
3333
34class joystick:34
35class Joystick:
35 """pygame joystick class"""36 """pygame joystick class"""
36 def __init__(self):37
38 def __init__(self, debug=False):
37 """initialise"""39 """initialise"""
40 self.debug = debug
38 self.state = {}41 self.state = {}
39 self.devices = {}42 self.devices = {}
40 self.ctrls = {}43 self.ctrls = {}
41 if pygame_imported:44 if pygame_imported:
42 pygame.init()45 pygame.init()
43 pygame.joystick.init()46 pygame.mixer.quit()
44 47
45 def use_ini_controls(self, ctrlr_ini):48 def use_ini_controls(self, ctrlr_ini):
46 """read controller ini file""" 49 """read controller ini file"""
47 if not pygame_imported:50 if not pygame_imported:
48 return51 return
49 for mw_keys in ctrlr_ini.ini_dict.itervalues():52 for mw_keys in ctrlr_ini.ini_dict.itervalues():
@@ -52,7 +55,7 @@
52 if mw_key[:3] == "JOY":55 if mw_key[:3] == "JOY":
53 self.state[mw_key] = 056 self.state[mw_key] = 0
54 (dev_num, control) = mw_key.split("_", 1)57 (dev_num, control) = mw_key.split("_", 1)
55 dev_num = dev_num[3:] 58 dev_num = dev_num[3:]
56 self.devices[int(dev_num) - 1] = None59 self.devices[int(dev_num) - 1] = None
57 #60 #
58 num_joysticks = pygame.joystick.get_count()61 num_joysticks = pygame.joystick.get_count()
@@ -60,7 +63,7 @@
60 if dev_num < num_joysticks:63 if dev_num < num_joysticks:
61 self.devices[dev_num] = pygame.joystick.Joystick(dev_num)64 self.devices[dev_num] = pygame.joystick.Joystick(dev_num)
62 self.devices[dev_num].init()65 self.devices[dev_num].init()
63 66
64 def use_all_controls(self):67 def use_all_controls(self):
65 """which joysticks"""68 """which joysticks"""
66 if not pygame_imported:69 if not pygame_imported:
@@ -72,9 +75,10 @@
72 num_buttons = self.devices[dev_num].get_numbuttons()75 num_buttons = self.devices[dev_num].get_numbuttons()
73 for button_num in range(num_buttons):76 for button_num in range(num_buttons):
74 mw_key = "JOY%s_BUTTON%s" % (dev_num + 1, button_num)77 mw_key = "JOY%s_BUTTON%s" % (dev_num + 1, button_num)
75 ctrl_name = _('Joystick %s Button %s') % (dev_num + 1, button_num)78 ctrl_name = _('Joystick %s Button %s') % (
79 dev_num + 1, button_num)
76 self.state[mw_key] = 080 self.state[mw_key] = 0
77 self.ctrls[ctrl_name] = mw_key 81 self.ctrls[ctrl_name] = mw_key
78 if self.devices[dev_num].get_numaxes() > 2:82 if self.devices[dev_num].get_numaxes() > 2:
79 mw_key = "JOY%s_" % (dev_num + 1)83 mw_key = "JOY%s_" % (dev_num + 1)
80 ctrl_name = _('Joystick %s ') % (dev_num + 1)84 ctrl_name = _('Joystick %s ') % (dev_num + 1)
@@ -86,27 +90,27 @@
86 self.ctrls[ctrl_name + _('Down')] = mw_key + "DOWN"90 self.ctrls[ctrl_name + _('Down')] = mw_key + "DOWN"
87 self.ctrls[ctrl_name + _('Left')] = mw_key + "LEFT"91 self.ctrls[ctrl_name + _('Left')] = mw_key + "LEFT"
88 self.ctrls[ctrl_name + _('Right')] = mw_key + "RIGHT"92 self.ctrls[ctrl_name + _('Right')] = mw_key + "RIGHT"
89 93
90 def poll(self, event_cb, initial_repeat_delay=40):94 def poll(self, event_cb, initial_repeat_delay=10):
91 """poll for joystick events"""95 """poll for joystick events"""
92 if not pygame_imported:96 if not pygame_imported:
93 return 097 return False
94 repeat_delay = 498 repeat_delay = 1
95 # give pygame a chance to do its magic with the joystick99 # give pygame a chance to do its magic with the joystick
96 pygame.event.pump()100 pygame.event.pump()
97 # end polling if no joysticks are found101 # end polling if no joysticks are found
98 num_joysticks = pygame.joystick.get_count()102 num_joysticks = pygame.joystick.get_count()
99 if num_joysticks == 0:103 if num_joysticks == 0:
100 return 0104 return False
101 # get the focused window or return105 # get the focused window or return
102 active_window = None106 active_window = None
103 windows = gtk.window_list_toplevels()107 windows = gtk.window_list_toplevels()
104 for window in windows:108 for window in windows:
105 if window.is_active():109 if window.is_active():
106 active_window = window110 active_window = window
107 if active_window == None: 111 if active_window == None:
108 return 1112 return True
109 # check if any of our defined controlls were pressed113 # check if any of our defined controls were pressed
110 mw_key_events = []114 mw_key_events = []
111 for mw_key in self.state.iterkeys():115 for mw_key in self.state.iterkeys():
112 (dev_num, joy_type) = (mw_key.split("_", 1))116 (dev_num, joy_type) = (mw_key.split("_", 1))
@@ -122,6 +126,7 @@
122 elif self.state[mw_key] > 0:126 elif self.state[mw_key] > 0:
123 self.state[mw_key] = 0127 self.state[mw_key] = 0
124 mw_key_events.append(mw_key)128 mw_key_events.append(mw_key)
129 #break #one event should be enough
125 elif joy_type in ["LEFT", "RIGHT", "UP", "DOWN"]:130 elif joy_type in ["LEFT", "RIGHT", "UP", "DOWN"]:
126 if joy_type in ["LEFT", "RIGHT"]:131 if joy_type in ["LEFT", "RIGHT"]:
127 axis_num = 0132 axis_num = 0
@@ -142,20 +147,31 @@
142 elif self.state[mw_key] > 0:147 elif self.state[mw_key] > 0:
143 self.state[mw_key] = 0148 self.state[mw_key] = 0
144 mw_key_events.append(mw_key)149 mw_key_events.append(mw_key)
150 #break #one event should be enough
145 # send fake key-press events151 # send fake key-press events
146 for mw_key in mw_key_events:152 if len(mw_key_events) > 0:
153 #print "mw_key_events=",mw_key_events
154 mw_key = mw_key_events[0]
155 #print "mw_key=",mw_key, self.state[mw_key]
156 #for mw_key in mw_key_events:
157 #print "mw_key=",mw_key, self.state[mw_key]
147 if self.state[mw_key] == 0:158 if self.state[mw_key] == 0:
148 e = gtk.gdk.Event(gtk.gdk.KEY_RELEASE)159 e = gtk.gdk.Event(gtk.gdk.KEY_RELEASE)
149 if active_window.window:160 if active_window.window:
150 e.window = active_window.window161 e.window = active_window.window
162 if self.debug:
163 print "joystick: key-release: raising: ", mw_key
151 event_cb(active_window, e, "JOYSTICK", mw_key)164 event_cb(active_window, e, "JOYSTICK", mw_key)
152 elif (self.state[mw_key] == 1 or 165 elif (self.state[mw_key] == 1 or
153 self.state[mw_key] == initial_repeat_delay or166 self.state[mw_key] == initial_repeat_delay or
154 (self.state[mw_key] > initial_repeat_delay and 167 (self.state[mw_key] > initial_repeat_delay and
155 (self.state[mw_key] - initial_repeat_delay) % repeat_delay == 0)):168 (self.state[mw_key] - initial_repeat_delay) % repeat_delay == 0)):
156 e = gtk.gdk.Event(gtk.gdk.KEY_PRESS)169 e = gtk.gdk.Event(gtk.gdk.KEY_PRESS)
157 if active_window.window:170 if active_window.window:
158 e.window = active_window.window171 e.window = active_window.window
172 if self.debug:
173 print "joystick: key-press: raising: ", mw_key
159 event_cb(active_window, e, "JOYSTICK", mw_key)174 event_cb(active_window, e, "JOYSTICK", mw_key)
160 return 1175 #try clearing event queue
161176 pygame.event.clear()
177 return True
162178
=== modified file 'key_consts.py'
--- key_consts.py 2009-01-07 17:51:46 +0000
+++ key_consts.py 2011-03-03 21:06:42 +0000
@@ -4,7 +4,7 @@
4# Application: wah!cade4# Application: wah!cade
5# File: key_consts.py5# File: key_consts.py
6# Description: keyboard constants file6# Description: keyboard constants file
7# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>7# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
8###8###
9#9#
10# This program is free software; you can redistribute it and/or modify10# This program is free software; you can redistribute it and/or modify
@@ -80,7 +80,7 @@
80 'delete': ['DIK_DELETE'],80 'delete': ['DIK_DELETE'],
81 'end': ['DIK_END'],81 'end': ['DIK_END'],
82 'pause': ['DIK_PAUSE'],82 'pause': ['DIK_PAUSE'],
83 83
84 #function keys84 #function keys
85 'f1': ['DIK_F1'],85 'f1': ['DIK_F1'],
86 'f2': ['DIK_F2'],86 'f2': ['DIK_F2'],
@@ -120,7 +120,7 @@
120 'kp_decimal': ['DIK_NUMPADPERIOD', 'DIK_DECIMAL'],120 'kp_decimal': ['DIK_NUMPADPERIOD', 'DIK_DECIMAL'],
121 'kp_enter': ['DIK_NUMPADENTER'],121 'kp_enter': ['DIK_NUMPADENTER'],
122122
123 #punctuation 123 #punctuation
124 'grave': ['DIK_GRAVE'],124 'grave': ['DIK_GRAVE'],
125 'backslash': ['DIK_BACKSLASH'],125 'backslash': ['DIK_BACKSLASH'],
126 'minus': ['DIK_MINUS'],126 'minus': ['DIK_MINUS'],
@@ -133,7 +133,7 @@
133 'period': ['DIK_PERIOD'],133 'period': ['DIK_PERIOD'],
134 'slash': ['DIK_SLASH'],134 'slash': ['DIK_SLASH'],
135 'space': ['DIK_SPACE'],135 'space': ['DIK_SPACE'],
136 136
137 #modifier keys137 #modifier keys
138 'escape': ['DIK_ESCAPE'],138 'escape': ['DIK_ESCAPE'],
139 'shift_l': ['DIK_LSHIFT'],139 'shift_l': ['DIK_LSHIFT'],
@@ -148,10 +148,8 @@
148 'caps_lock': ['DIK_CAPSLOCK'],148 'caps_lock': ['DIK_CAPSLOCK'],
149 'num_lock': ['DIK_NUMLOCK'],149 'num_lock': ['DIK_NUMLOCK'],
150 'scroll_lock': ['DIK_SCROLL'],150 'scroll_lock': ['DIK_SCROLL'],
151 151
152 #keys not recognized in GTK152 #keys not recognized in GTK
153 'voidsymbol': ['DIK_CAPITOL'],153 'voidsymbol': ['DIK_CAPITOL'],
154 'unknown': ['DIK_APPS'],154 'unknown': ['DIK_APPS'],
155 'unknown': ['DIK_SYSRQ']155 'unknown': ['DIK_SYSRQ']}
156}
157
158156
=== modified file 'layout_editor.py'
--- layout_editor.py 2009-01-11 16:29:58 +0000
+++ layout_editor.py 2011-03-03 21:06:42 +0000
@@ -5,7 +5,7 @@
5# Application: wah!cade5# Application: wah!cade
6# File: layout_editor.py6# File: layout_editor.py
7# Description: Wah!Cade Layout Editor7# Description: Wah!Cade Layout Editor
8# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>8# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
9###9###
10#10#
11# This program is free software; you can redistribute it and/or modify11# This program is free software; you can redistribute it and/or modify
@@ -54,8 +54,10 @@
54from mamewah_ini import MameWahIni54from mamewah_ini import MameWahIni
55_ = gettext.gettext55_ = gettext.gettext
5656
57
57class WinLayout(GladeSupport, WahCade):58class WinLayout(GladeSupport, WahCade):
58 """Layout Editor Main Window"""59 """Layout Editor Main Window"""
60
59 def __init__(self, glade_filename, window_name, config_opts, config_args):61 def __init__(self, glade_filename, window_name, config_opts, config_args):
60 """build the window"""62 """build the window"""
61 self.title = 'Wah!Cade Layout Editor'63 self.title = 'Wah!Cade Layout Editor'
@@ -71,7 +73,7 @@
71 self.config_dir = os.path.join(APP_PATH, 'config')73 self.config_dir = os.path.join(APP_PATH, 'config')
72 else:74 else:
73 #got with the default config location75 #got with the default config location
74 self.config_dir = os.path.expanduser('~/.wahcade')76 self.config_dir = CONFIG_DIR
75 if not os.path.exists(self.config_dir):77 if not os.path.exists(self.config_dir):
76 sys.exit(_('No Wah!Cade config files found. Run wahcade or wahcade-setup first.'))78 sys.exit(_('No Wah!Cade config files found. Run wahcade or wahcade-setup first.'))
77 self.fixdMain = gtk.Fixed()79 self.fixdMain = gtk.Fixed()
@@ -143,7 +145,7 @@
143 hist_widgets[widget_name] = evb145 hist_widgets[widget_name] = evb
144 self.fixdHist.put(evb, 100, 10 + (i * 30))146 self.fixdHist.put(evb, 100, 10 + (i * 30))
145 #fixed pos widgets147 #fixed pos widgets
146 self._fixed_widgets = [self.fixdMain, self.fixdOpt, self.fixdMsg, 148 self._fixed_widgets = [self.fixdMain, self.fixdOpt, self.fixdMsg,
147 self.fixdScr, self.fixdCpv, self.fixdHist]149 self.fixdScr, self.fixdCpv, self.fixdHist]
148 for fixd in self._fixed_widgets:150 for fixd in self._fixed_widgets:
149 fixd.connect('expose-event', self.on_fixd_expose_event)151 fixd.connect('expose-event', self.on_fixd_expose_event)
@@ -237,9 +239,9 @@
237 self.hist_widgets = hist_widgets239 self.hist_widgets = hist_widgets
238 #setup view menu / toolbar240 #setup view menu / toolbar
239 self.view_updating = True241 self.view_updating = True
240 self.view_menu = [self.mnuVMain, self.mnuVOpt, self.mnuVMsg, self.mnuVScr, 242 self.view_menu = [self.mnuVMain, self.mnuVOpt, self.mnuVMsg, self.mnuVScr,
241 self.mnuVCpv, self.mnuVHist]243 self.mnuVCpv, self.mnuVHist]
242 self.view_trb = [self.trbMain, self.trbOpt, self.trbMsg, self.trbScr, 244 self.view_trb = [self.trbMain, self.trbOpt, self.trbMsg, self.trbScr,
243 self.trbCpv, self.trbHist]245 self.trbCpv, self.trbHist]
244 for mnu in self.view_menu[1:]:246 for mnu in self.view_menu[1:]:
245 mnu.set_active(False)247 mnu.set_active(False)
@@ -259,7 +261,7 @@
259 cpviewer_ini = MameWahIni(os.path.join(self.config_dir, 'cpviewer.ini'), 'default', '0.10')261 cpviewer_ini = MameWahIni(os.path.join(self.config_dir, 'cpviewer.ini'), 'default', '0.10')
260 histview_ini = MameWahIni(os.path.join(self.config_dir, 'histview.ini'), 'default', '0.16')262 histview_ini = MameWahIni(os.path.join(self.config_dir, 'histview.ini'), 'default', '0.16')
261 #setup layout combo263 #setup layout combo
262 self.layouts = [] 264 self.layouts = []
263 layout_files = glob.glob(os.path.join(self.config_dir, 'layouts', wahcade_ini.get('layout'), '*.lay'))265 layout_files = glob.glob(os.path.join(self.config_dir, 'layouts', wahcade_ini.get('layout'), '*.lay'))
264 for layout_file in layout_files:266 for layout_file in layout_files:
265 self.layouts.append(267 self.layouts.append(
@@ -268,7 +270,7 @@
268 self.layouts.sort()270 self.layouts.sort()
269 #setup layout combo271 #setup layout combo
270 l = ['%s.lay' % (l[0]) for l in self.layouts]272 l = ['%s.lay' % (l[0]) for l in self.layouts]
271 self.setup_combo_box(self.cboLayout, l) 273 self.setup_combo_box(self.cboLayout, l)
272 #load layout274 #load layout
273 layout_file = os.path.join(self.config_dir, 'layouts', wahcade_ini.get('layout'), 'layout.lay')275 layout_file = os.path.join(self.config_dir, 'layouts', wahcade_ini.get('layout'), 'layout.lay')
274 if not os.path.isfile(layout_file):276 if not os.path.isfile(layout_file):
@@ -280,7 +282,7 @@
280 pass282 pass
281 if not os.path.exists(layout_file):283 if not os.path.exists(layout_file):
282 layout_file = os.path.join(self.config_dir, 'layouts', 'classic_640x480', 'layout.lay')284 layout_file = os.path.join(self.config_dir, 'layouts', 'classic_640x480', 'layout.lay')
283 idx = [self.layouts.index(l) for l in self.layouts if l[1] == layout_file] 285 idx = [self.layouts.index(l) for l in self.layouts if l[1] == layout_file]
284 if idx != []:286 if idx != []:
285 self.cboLayout.set_active(idx[0])287 self.cboLayout.set_active(idx[0])
286 else:288 else:
@@ -329,7 +331,7 @@
329 #exit gtk loop331 #exit gtk loop
330 gtk.main_quit()332 gtk.main_quit()
331 return False333 return False
332 334
333 def on_winMain_key_press(self, widget, event, *args):335 def on_winMain_key_press(self, widget, event, *args):
334 """key pressed - move selected widget"""336 """key pressed - move selected widget"""
335 if self.selected_widgets == []:337 if self.selected_widgets == []:
@@ -423,7 +425,7 @@
423 _('Save CP Viewer Layout'),425 _('Save CP Viewer Layout'),
424 self.save_cpviewer_file)426 self.save_cpviewer_file)
425 self.set_window_title()427 self.set_window_title()
426 428
427 def on_mnuFSaveHistAs_activate(self, *args):429 def on_mnuFSaveHistAs_activate(self, *args):
428 """save history viewer layout file as"""430 """save history viewer layout file as"""
429 self.save_layout_dialog(431 self.save_layout_dialog(
@@ -431,24 +433,24 @@
431 _('Save History Viewer Layout'),433 _('Save History Viewer Layout'),
432 self.save_histview_file)434 self.save_histview_file)
433 self.set_window_title()435 self.set_window_title()
434 436
435 def on_mnuFQuit_activate(self, *args):437 def on_mnuFQuit_activate(self, *args):
436 """quit"""438 """quit"""
437 self.on_winMain_delete_event()439 self.on_winMain_delete_event()
438 440
439 def on_mnuESelectAllVisible_activate(self, *args):441 def on_mnuESelectAllVisible_activate(self, *args):
440 """select all visible widgets"""442 """select all visible widgets"""
441 for widget in self.fixd.get_children():443 for widget in self.fixd.get_children():
442 if self.dLayout[widget]['visible']:444 if self.dLayout[widget]['visible']:
443 self.select_widget(widget)445 self.select_widget(widget)
444 self.selected_widgets.append(widget)446 self.selected_widgets.append(widget)
445 447
446 def on_mnuESelectAll_activate(self, *args):448 def on_mnuESelectAll_activate(self, *args):
447 """select all widgets"""449 """select all widgets"""
448 for widget in self.fixd.get_children():450 for widget in self.fixd.get_children():
449 self.select_widget(widget)451 self.select_widget(widget)
450 self.selected_widgets.append(widget)452 self.selected_widgets.append(widget)
451 453
452 def on_cboLayout_changed(self, cbo, *args):454 def on_cboLayout_changed(self, cbo, *args):
453 """change layout"""455 """change layout"""
454 self.load_layout_file(self.layouts[cbo.get_active()][1])456 self.load_layout_file(self.layouts[cbo.get_active()][1])
@@ -668,7 +670,7 @@
668 gc = fixed.style.light_gc[gtk.STATE_NORMAL]670 gc = fixed.style.light_gc[gtk.STATE_NORMAL]
669 window.draw_rectangle(gc, False, 0, 0, w, h)671 window.draw_rectangle(gc, False, 0, 0, w, h)
670 return False672 return False
671 673
672 def _make_label(self, widget_name):674 def _make_label(self, widget_name):
673 """create a label (inside an event box)"""675 """create a label (inside an event box)"""
674 evb = gtk.EventBox()676 evb = gtk.EventBox()
@@ -726,7 +728,7 @@
726 ftr.add_pattern('*.lay')728 ftr.add_pattern('*.lay')
727 dlg.add_filter(ftr)729 dlg.add_filter(ftr)
728 dlg.set_filter(ftr)730 dlg.set_filter(ftr)
729 if gtk.check_version(2,8,0) is None:731 if gtk.check_version(2, 8, 0) is None:
730 try:732 try:
731 dlg.set_do_overwrite_confirmation(True)733 dlg.set_do_overwrite_confirmation(True)
732 except AttributeError:734 except AttributeError:
@@ -807,27 +809,27 @@
807 main_bg_col = gtk.gdk.color_parse(self.get_colour(int(lines[3])))809 main_bg_col = gtk.gdk.color_parse(self.get_colour(int(lines[3])))
808 self.viewport.modify_bg(gtk.STATE_NORMAL, main_bg_col)810 self.viewport.modify_bg(gtk.STATE_NORMAL, main_bg_col)
809 self.dLayout[self.fixdMain]['image'] = lines[4]811 self.dLayout[self.fixdMain]['image'] = lines[4]
810 img_path = self.get_path(lines[4])812 img_file = self.get_path(lines[4])
811 if not os.path.dirname(img_path):813 if not os.path.dirname(img_file):
812 img_path = os.path.join(layout_path, img_path)814 img_file = os.path.join(layout_path, img_file)
813 #print "img=",img_path, os.path.isfile(img_path)815 #print "img=",img_file, os.path.isfile(img_file)
814 self.dLayout[self.fixdMain]['use_image'] = os.path.isfile(img_path)816 self.dLayout[self.fixdMain]['use_image'] = os.path.isfile(img_file)
815 #options window817 #options window
816 self.dLayout[self.fixdOpt]['background-col'] = self.get_colour(int(lines[296]))818 self.dLayout[self.fixdOpt]['background-col'] = self.get_colour(int(lines[296]))
817 opt_bg_col = gtk.gdk.color_parse(self.get_colour(int(lines[296])))819 opt_bg_col = gtk.gdk.color_parse(self.get_colour(int(lines[296])))
818 self.dLayout[self.fixdOpt]['image'] = lines[297]820 self.dLayout[self.fixdOpt]['image'] = lines[297]
819 img_path = self.get_path(lines[297])821 img_file = self.get_path(lines[297])
820 if not os.path.dirname(img_path):822 if not os.path.dirname(img_file):
821 img_path = os.path.join(layout_path, img_path)823 img_file = os.path.join(layout_path, img_file)
822 self.dLayout[self.fixdOpt]['use_image'] = os.path.isfile(img_path)824 self.dLayout[self.fixdOpt]['use_image'] = os.path.isfile(img_file)
823 #message window825 #message window
824 self.dLayout[self.fixdMsg]['background-col'] = self.get_colour(int(lines[355]))826 self.dLayout[self.fixdMsg]['background-col'] = self.get_colour(int(lines[355]))
825 msg_bg_col = gtk.gdk.color_parse(self.get_colour(int(lines[355])))827 msg_bg_col = gtk.gdk.color_parse(self.get_colour(int(lines[355])))
826 self.dLayout[self.fixdMsg]['image'] = lines[356]828 self.dLayout[self.fixdMsg]['image'] = lines[356]
827 img_path = self.get_path(lines[356])829 img_file = self.get_path(lines[356])
828 if not os.path.dirname(img_path):830 if not os.path.dirname(img_file):
829 img_path = os.path.join(layout_path, img_path)831 img_file = os.path.join(layout_path, img_file)
830 self.dLayout[self.fixdMsg]['use_image'] = os.path.isfile(img_path)832 self.dLayout[self.fixdMsg]['use_image'] = os.path.isfile(img_file)
831 #screen saver window833 #screen saver window
832 self.dLayout[self.fixdScr]['background-col'] = self.dLayout[self.fixdMain]['background-col']834 self.dLayout[self.fixdScr]['background-col'] = self.dLayout[self.fixdMain]['background-col']
833 self.dLayout[self.fixdScr]['image'] = ''835 self.dLayout[self.fixdScr]['image'] = ''
@@ -933,7 +935,7 @@
933 lines[offset + 7] = ' %s' % d['font-size']935 lines[offset + 7] = ' %s' % d['font-size']
934 align_rot = '%s' % d['text-align']936 align_rot = '%s' % d['text-align']
935 if d['text-rotation'] != 0:937 if d['text-rotation'] != 0:
936 align_rot = '%s;%s' % (align_rot, d['text-rotation']) 938 align_rot = '%s;%s' % (align_rot, d['text-rotation'])
937 lines[offset + 8] = ' %s' % align_rot939 lines[offset + 8] = ' %s' % align_rot
938 lines[offset + 9] = ' %s' % d['x']940 lines[offset + 9] = ' %s' % d['x']
939 lines[offset + 10] = ' %s' % d['y']941 lines[offset + 10] = ' %s' % d['y']
@@ -952,7 +954,7 @@
952 open(fname, 'w').writelines(lines[1:])954 open(fname, 'w').writelines(lines[1:])
953 #reset altered flag955 #reset altered flag
954 self.layout_altered = False956 self.layout_altered = False
955 957
956 def init_cpviewer_widgets(self):958 def init_cpviewer_widgets(self):
957 """set cpviewer widgets to sensible defaults"""959 """set cpviewer widgets to sensible defaults"""
958 for widget in self._cpv_widgets:960 for widget in self._cpv_widgets:
@@ -962,9 +964,9 @@
962 d['font-bold'] = False964 d['font-bold'] = False
963 d['font-italic'] = False965 d['font-italic'] = False
964 d['font-size'] = 10966 d['font-size'] = 10
965 d['transparent'] = True 967 d['transparent'] = True
966 d['text-col'] = '#FF0000'968 d['text-col'] = '#FF0000'
967 d['background-col'] = '#FFFFFF' 969 d['background-col'] = '#FFFFFF'
968 d['visible'] = False970 d['visible'] = False
969 d['text-align'] = 2971 d['text-align'] = 2
970 d['width'] = 100972 d['width'] = 100
@@ -1020,7 +1022,7 @@
1020 #visible?1022 #visible?
1021 d['visible'] = (ctrl_element.find('Visible').text == 'True')1023 d['visible'] = (ctrl_element.find('Visible').text == 'True')
1022 evb.set_property('visible', d['visible'])1024 evb.set_property('visible', d['visible'])
1023 #alignment 1025 #alignment
1024 if ctrl_element.find('TextAlign').text == 'MiddleLeft':1026 if ctrl_element.find('TextAlign').text == 'MiddleLeft':
1025 align = 0.01027 align = 0.0
1026 text_align = 01028 text_align = 0
@@ -1046,7 +1048,7 @@
1046 self.fixdCpv.move(evb, d['x'], d['y'])1048 self.fixdCpv.move(evb, d['x'], d['y'])
1047 #save widget settings1049 #save widget settings
1048 self.dLayout[evb] = d1050 self.dLayout[evb] = d
1049 elif ctrl_element.tag == 'MainForm':1051 elif ctrl_element.tag == 'MainForm':
1050 #setup background, etc1052 #setup background, etc
1051 cpv_width = int(ctrl_element.find('Width').text)1053 cpv_width = int(ctrl_element.find('Width').text)
1052 cpv_height = int(ctrl_element.find('Height').text)1054 cpv_height = int(ctrl_element.find('Height').text)
@@ -1061,7 +1063,7 @@
1061 self.dLayout[self.fixdCpv] = {1063 self.dLayout[self.fixdCpv] = {
1062 'name': 'C.P. Viewer',1064 'name': 'C.P. Viewer',
1063 'width': cpv_width, 'height': cpv_height,1065 'width': cpv_width, 'height': cpv_height,
1064 'background-col': back_col, 1066 'background-col': back_col,
1065 'image': cpv_img,1067 'image': cpv_img,
1066 'use_image': os.path.isfile(self.get_path(cpv_img))}1068 'use_image': os.path.isfile(self.get_path(cpv_img))}
1067 #done1069 #done
@@ -1083,7 +1085,7 @@
1083 e.tail = i1085 e.tail = i
1084 if level and (not elem.tail or not elem.tail.strip()):1086 if level and (not elem.tail or not elem.tail.strip()):
1085 elem.tail = i1087 elem.tail = i
1086 1088
1087 def save_cpviewer_file(self, cpviewer_filename=None):1089 def save_cpviewer_file(self, cpviewer_filename=None):
1088 """save the cpviewer layout file"""1090 """save the cpviewer layout file"""
1089 xml_elements = {1091 xml_elements = {
@@ -1100,8 +1102,7 @@
1100 'background-col': 'BackColor',1102 'background-col': 'BackColor',
1101 'text-align': 'TextAlign',1103 'text-align': 'TextAlign',
1102 'text-rotation': 'TextRotation',1104 'text-rotation': 'TextRotation',
1103 'transparent': 'Transparent'1105 'transparent': 'Transparent'}
1104 }
1105 #set filename1106 #set filename
1106 if cpviewer_filename:1107 if cpviewer_filename:
1107 self.cpviewer_filename = cpviewer_filename1108 self.cpviewer_filename = cpviewer_filename
@@ -1111,7 +1112,7 @@
1111 for cpv_widget in self._cpv_widgets:1112 for cpv_widget in self._cpv_widgets:
1112 widget_ele = ET.SubElement(cpv_ele, cpv_widget)1113 widget_ele = ET.SubElement(cpv_ele, cpv_widget)
1113 for k, v in self.dLayout[self.cpv_widgets[cpv_widget]].items():1114 for k, v in self.dLayout[self.cpv_widgets[cpv_widget]].items():
1114 if xml_elements.has_key(k):1115 if k in xml_elements:
1115 sub_ele = ET.SubElement(widget_ele, xml_elements[k])1116 sub_ele = ET.SubElement(widget_ele, xml_elements[k])
1116 if k in ['text-col', 'background-col']:1117 if k in ['text-col', 'background-col']:
1117 sub_ele.text = str(self.reverse_get_colour(v))1118 sub_ele.text = str(self.reverse_get_colour(v))
@@ -1144,7 +1145,7 @@
1144 tree.write(self.cpviewer_filename)1145 tree.write(self.cpviewer_filename)
1145 #reset altered flag1146 #reset altered flag
1146 self.cpviewer_altered = False1147 self.cpviewer_altered = False
1147 1148
1148 def load_histview_file(self, histview_filename):1149 def load_histview_file(self, histview_filename):
1149 """load history viewer layout file"""1150 """load history viewer layout file"""
1150 #read file & strip any crap1151 #read file & strip any crap
@@ -1245,7 +1246,7 @@
1245 lines[offset + 7] = ' %s' % d['font-size']1246 lines[offset + 7] = ' %s' % d['font-size']
1246 align_rot = '%s' % d['text-align']1247 align_rot = '%s' % d['text-align']
1247 if d['text-rotation'] != 0:1248 if d['text-rotation'] != 0:
1248 align_rot = '%s;%s' % (align_rot, d['text-rotation']) 1249 align_rot = '%s;%s' % (align_rot, d['text-rotation'])
1249 lines[offset + 8] = ' %s' % align_rot1250 lines[offset + 8] = ' %s' % align_rot
1250 lines[offset + 9] = ' %s' % d['x']1251 lines[offset + 9] = ' %s' % d['x']
1251 lines[offset + 10] = ' %s' % d['y']1252 lines[offset + 10] = ' %s' % d['y']
@@ -1270,4 +1271,3 @@
1270 self.winMain.set_title('%s - %s' % (self.title, self.histview_filename))1271 self.winMain.set_title('%s - %s' % (self.title, self.histview_filename))
1271 else:1272 else:
1272 self.winMain.set_title('%s -%s' % (self.title, self.layout_filename))1273 self.winMain.set_title('%s -%s' % (self.title, self.layout_filename))
1273
12741274
=== modified file 'layout_props.py'
--- layout_props.py 2009-01-07 17:51:46 +0000
+++ layout_props.py 2011-03-03 21:06:42 +0000
@@ -5,7 +5,7 @@
5# Application: wah!cade5# Application: wah!cade
6# File: layout_props.py6# File: layout_props.py
7# Description: Wah!Cade Layout Properties Dialog7# Description: Wah!Cade Layout Properties Dialog
8# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>8# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
9###9###
10#10#
11# This program is free software; you can redistribute it and/or modify11# This program is free software; you can redistribute it and/or modify
@@ -25,8 +25,10 @@
25from constants import *25from constants import *
26from glade2 import *26from glade2 import *
2727
28
28class DlgProps(GladeSupport):29class DlgProps(GladeSupport):
29 """Layout Editor Item Properties Dialog"""30 """Layout Editor Item Properties Dialog"""
31
30 def __init__(self, glade_filename, window_name, app):32 def __init__(self, glade_filename, window_name, app):
31 """build the window"""33 """build the window"""
32 GladeSupport.__init__(self, glade_filename, window_name)34 GladeSupport.__init__(self, glade_filename, window_name)
@@ -35,7 +37,7 @@
35 self.widget_list = []37 self.widget_list = []
36 self.name_idx = -138 self.name_idx = -1
37 self.updating = False39 self.updating = False
38 40
39 def populate_names(self, widget_list):41 def populate_names(self, widget_list):
40 #pop names42 #pop names
41 self.widget_list = widget_list43 self.widget_list = widget_list
@@ -89,7 +91,7 @@
89 if self.chkTransparent.get_active():91 if self.chkTransparent.get_active():
90 clr = self.WinLayout.dLayout[self.WinLayout.fixd]['background-col']92 clr = self.WinLayout.dLayout[self.WinLayout.fixd]['background-col']
91 else:93 else:
92 clr = self.WinLayout.dLayout[widget]['background-col'] 94 clr = self.WinLayout.dLayout[widget]['background-col']
93 widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(clr))95 widget.modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse(clr))
94 self.WinLayout.set_layout_altered(widget)96 self.WinLayout.set_layout_altered(widget)
9597
@@ -101,7 +103,7 @@
101 self.WinLayout.dLayout[widget]['x'] = x103 self.WinLayout.dLayout[widget]['x'] = x
102 self.WinLayout.fixd.move(widget, x, self.WinLayout.dLayout[widget]['y'])104 self.WinLayout.fixd.move(widget, x, self.WinLayout.dLayout[widget]['y'])
103 self.WinLayout.set_layout_altered(widget)105 self.WinLayout.set_layout_altered(widget)
104 106
105 def on_spnY_changed(self, *args):107 def on_spnY_changed(self, *args):
106 """change widget Y pos"""108 """change widget Y pos"""
107 if not self.updating:109 if not self.updating:
@@ -181,7 +183,7 @@
181 self.WinLayout.dLayout[widget]['text-align'] = text_align183 self.WinLayout.dLayout[widget]['text-align'] = text_align
182 widget.child.set_property('xalign', xalign)184 widget.child.set_property('xalign', xalign)
183 self.WinLayout.set_layout_altered(widget)185 self.WinLayout.set_layout_altered(widget)
184 186
185 def on_cboRotation_changed(self, cbo, *args):187 def on_cboRotation_changed(self, cbo, *args):
186 """text / image rotation"""188 """text / image rotation"""
187 if not self.updating:189 if not self.updating:
@@ -203,27 +205,27 @@
203 self.WinLayout.dLayout[widget]['font-size'] = int(pfd.get_size() / pango.SCALE)205 self.WinLayout.dLayout[widget]['font-size'] = int(pfd.get_size() / pango.SCALE)
204 widget.child.modify_font(pfd)206 widget.child.modify_font(pfd)
205 self.WinLayout.set_layout_altered(widget)207 self.WinLayout.set_layout_altered(widget)
206 208
207 def on_btnArtworkDir_clicked(self, *args):209 def on_btnArtworkDir_clicked(self, *args):
208 """select artwork dir dialog"""210 """select artwork dir dialog"""
209 pass211 pass
210 212
211 def on_txeArtworkDir_changed(self, *args):213 def on_txeArtworkDir_changed(self, *args):
212 """set artwork dir"""214 """set artwork dir"""
213 pass215 pass
214 216
215 def on_chkPlaysMovies_toggled(self, *args):217 def on_chkPlaysMovies_toggled(self, *args):
216 """play movies"""218 """play movies"""
217 pass219 pass
218 220
219 def on_btnMovieDir_clicked(self, *args):221 def on_btnMovieDir_clicked(self, *args):
220 """select movie dir dialog"""222 """select movie dir dialog"""
221 pass223 pass
222 224
223 def on_txeMovieDir_changed(self, *args):225 def on_txeMovieDir_changed(self, *args):
224 """set movie dir"""226 """set movie dir"""
225 pass227 pass
226 228
227 def set_properties(self, widget, widget_props):229 def set_properties(self, widget, widget_props):
228 """set props for given widget"""230 """set props for given widget"""
229 self.name_idx = self.widget_list.index(widget.get_name())231 self.name_idx = self.widget_list.index(widget.get_name())
@@ -261,4 +263,3 @@
261 self.lblSelected.set_sensitive(False)263 self.lblSelected.set_sensitive(False)
262 self.clrSelected.set_sensitive(False)264 self.clrSelected.set_sensitive(False)
263 self.updating = False265 self.updating = False
264
265266
=== modified file 'layout_scr_props.py'
--- layout_scr_props.py 2009-01-07 17:51:46 +0000
+++ layout_scr_props.py 2011-03-03 21:06:42 +0000
@@ -5,7 +5,7 @@
5# Application: wah!cade5# Application: wah!cade
6# File: layout_scr_props.py6# File: layout_scr_props.py
7# Description: Wah!Cade Layout Screen Properties Dialog7# Description: Wah!Cade Layout Screen Properties Dialog
8# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>8# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
9###9###
10#10#
11# This program is free software; you can redistribute it and/or modify11# This program is free software; you can redistribute it and/or modify
@@ -25,8 +25,10 @@
25from constants import *25from constants import *
26from glade2 import *26from glade2 import *
2727
28
28class DlgScreenProps(GladeSupport):29class DlgScreenProps(GladeSupport):
29 """Screen Properties Dialog"""30 """Screen Properties Dialog"""
31
30 def __init__(self, glade_filename, window_name, app):32 def __init__(self, glade_filename, window_name, app):
31 """build the window"""33 """build the window"""
32 GladeSupport.__init__(self, glade_filename, window_name)34 GladeSupport.__init__(self, glade_filename, window_name)
@@ -152,4 +154,3 @@
152 self.txeBackgroundImage.set_sensitive(False)154 self.txeBackgroundImage.set_sensitive(False)
153 self.btnBackgroundImage.set_sensitive(False)155 self.btnBackgroundImage.set_sensitive(False)
154 self.updating = False156 self.updating = False
155
156157
=== modified file 'locale/de/LC_MESSAGES/wahcade.mo'
157Binary files locale/de/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/de/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ158Binary files locale/de/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/de/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ
=== modified file 'locale/en_GB/LC_MESSAGES/wahcade.mo'
158Binary files locale/en_GB/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/en_GB/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ159Binary files locale/en_GB/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/en_GB/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ
=== modified file 'locale/es/LC_MESSAGES/wahcade.mo'
159Binary files locale/es/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/es/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ160Binary files locale/es/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/es/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ
=== modified file 'locale/fr/LC_MESSAGES/wahcade.mo'
160Binary files locale/fr/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/fr/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ161Binary files locale/fr/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/fr/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ
=== added directory 'locale/it'
=== added directory 'locale/it/LC_MESSAGES'
=== added file 'locale/it/LC_MESSAGES/wahcade.mo'
161Binary files locale/it/LC_MESSAGES/wahcade.mo 1970-01-01 00:00:00 +0000 and locale/it/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ162Binary files locale/it/LC_MESSAGES/wahcade.mo 1970-01-01 00:00:00 +0000 and locale/it/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ
=== modified file 'locale/sv/LC_MESSAGES/wahcade.mo'
162Binary files locale/sv/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/sv/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ163Binary files locale/sv/LC_MESSAGES/wahcade.mo 2009-01-11 16:29:58 +0000 and locale/sv/LC_MESSAGES/wahcade.mo 2011-03-03 21:06:42 +0000 differ
=== modified file 'make_all'
--- make_all 2008-11-30 10:26:19 +0000
+++ make_all 2011-03-03 21:06:42 +0000
@@ -1,7 +1,11 @@
1#!/bin/sh1#!/bin/bash
2#make get text, tarball & build deb2#make get text, tarball & build deb
33echo 'make wahcade' > make.log
4./make_gettext4if [ -z "$1" ]; then
5./make_tarball5 if [ "$1" = "--gettext" ]; then
6./build_deb_package6 ./make_gettext >> make.log
7 fi
8fi
9./make_tarball >> make.log
10./build_deb_package >> make.log
711
812
=== modified file 'make_gettext'
--- make_gettext 2008-11-30 10:26:19 +0000
+++ make_gettext 2011-03-03 21:06:42 +0000
@@ -17,6 +17,7 @@
17msgmerge -U en_GB.po messages.pot17msgmerge -U en_GB.po messages.pot
18msgmerge -U es.po messages.pot18msgmerge -U es.po messages.pot
19msgmerge -U fr.po messages.pot19msgmerge -U fr.po messages.pot
20msgmerge -U it.po messages.pot
20msgmerge -U sv.po messages.pot21msgmerge -U sv.po messages.pot
2122
22#compile into application format23#compile into application format
@@ -25,6 +26,7 @@
25msgfmt en.po -o ../locale/en/LC_MESSAGES/wahcade.mo26msgfmt en.po -o ../locale/en/LC_MESSAGES/wahcade.mo
26msgfmt es.po -o ../locale/es/LC_MESSAGES/wahcade.mo27msgfmt es.po -o ../locale/es/LC_MESSAGES/wahcade.mo
27msgfmt fr.po -o ../locale/fr/LC_MESSAGES/wahcade.mo28msgfmt fr.po -o ../locale/fr/LC_MESSAGES/wahcade.mo
29msgfmt it.po -o ../locale/fr/LC_MESSAGES/wahcade.mo
28msgfmt sv.po -o ../locale/sv/LC_MESSAGES/wahcade.mo30msgfmt sv.po -o ../locale/sv/LC_MESSAGES/wahcade.mo
2931
30#32#
3133
=== modified file 'make_tarball'
--- make_tarball 2008-11-30 15:09:04 +0000
+++ make_tarball 2011-03-03 21:06:42 +0000
@@ -15,7 +15,7 @@
15tar -zhcf $TARBALL -T $NAME/wahcade_files15tar -zhcf $TARBALL -T $NAME/wahcade_files
1616
17#copy stuff to antiparticle dir17#copy stuff to antiparticle dir
18cp -f $TARBALL /media/windows/downloads/temp18cp -f $TARBALL /media/windows_data/downloads/temp
19cp -f $TARBALL $WWW/projects/$NAME19cp -f $TARBALL $WWW/projects/$NAME
20cp -f $SOURCE/doc/[A-Z]* $WWW/projects/$NAME/20cp -f $SOURCE/doc/[A-Z]* $WWW/projects/$NAME/
21cp -f $SOURCE/doc/xmame/xmamerc $WWW/projects/$NAME/21cp -f $SOURCE/doc/xmame/xmamerc $WWW/projects/$NAME/
2222
=== modified file 'mamewah_ini.py'
--- mamewah_ini.py 2009-01-07 17:51:46 +0000
+++ mamewah_ini.py 2011-03-03 21:06:42 +0000
@@ -5,7 +5,7 @@
5# Application: wah!cade5# Application: wah!cade
6# File: mamewah_ini.py6# File: mamewah_ini.py
7# Description: read mamewah formatted ini file7# Description: read mamewah formatted ini file
8# Copyright (c) 2005-2009 Andy Balcombe <http://www.anti-particle.com>8# Copyright (c) 2005-2010 Andy Balcombe <http://www.anti-particle.com>
9###9###
10#10#
11# This program is free software; you can redistribute it and/or modify11# This program is free software; you can redistribute it and/or modify
@@ -26,7 +26,9 @@
2626
27from constants import *27from constants import *
2828
29
29class MameWahIni:30class MameWahIni:
31
30 def __init__(self, ini_filename, ini_type='default', min_version=None):32 def __init__(self, ini_filename, ini_type='default', min_version=None):
31 """init ini class"""33 """init ini class"""
32 self.ini_filename = ini_filename34 self.ini_filename = ini_filename
@@ -99,14 +101,14 @@
99 if spc_pos == -1:101 if spc_pos == -1:
100 spc_pos = len(line)102 spc_pos = len(line)
101 option = line[:spc_pos]103 option = line[:spc_pos]
102 if self.ini_dict.has_key(option):104 if option in self.ini_dict:
103 #build line105 #build line
104 self.lines[i] = '%s%s' % (option.ljust(40), self.ini_dict[option])106 self.lines[i] = '%s%s' % (option.ljust(40), self.ini_dict[option])
105 #add missing keys107 #add missing keys
106 if missing_keys:108 if missing_keys:
107 #print "missing keys=",missing_keys109 #print "missing keys=",missing_keys
108 self.lines.append('')110 self.lines.append('')
109 self.lines.append('### Added in v%s "%s" ###' % (VERSION, VERSION_NAME)) 111 self.lines.append('### Added in v%s "%s" ###' % (VERSION, VERSION_NAME))
110 for mk in missing_keys:112 for mk in missing_keys:
111 self.lines.append('%s%s' % (mk.ljust(40), self.ini_dict[mk]))113 self.lines.append('%s%s' % (mk.ljust(40), self.ini_dict[mk]))
112 #add correct line terminator114 #add correct line terminator
@@ -116,11 +118,11 @@
116118
117 def has_option(self, option):119 def has_option(self, option):
118 """does the option exist"""120 """does the option exist"""
119 return self.ini_dict.has_key(option)121 return option in self.ini_dict
120122
121 def get(self, option, get_mode='default', default_value=''):123 def get(self, option, get_mode='default', default_value=''):
122 """return value for given option"""124 """return value for given option"""
123 if self.ini_dict.has_key(option):125 if option in self.ini_dict:
124 value = self.ini_dict[option]126 value = self.ini_dict[option]
125 #set default value if none found127 #set default value if none found
126 if value == '':128 if value == '':
@@ -174,4 +176,3 @@
174 if os.path.exists(os.path.expanduser(test_path)):176 if os.path.exists(os.path.expanduser(test_path)):
175 value = test_path177 value = test_path
176 self.ini_dict[option] = value178 self.ini_dict[option] = value
177
178179
=== modified file 'po/de.po'
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches