mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-05 00:02:29 -04:00
+ 3 new games
* cleanup main.py and mfxutil.py * bugs fixes git-svn-id: file:///home/shlomif/Backup/svn-dumps/PySolFC/svnsync-repos/pysolfc/PySolFC/trunk@91 efabe8c0-fbe8-4139-b769-b5e6d273206e
This commit is contained in:
parent
1b1a5e31e2
commit
c215cb2fdd
13 changed files with 296 additions and 395 deletions
11
po/games.pot
11
po/games.pot
|
@ -5,7 +5,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PySol 0.0.1\n"
|
||||
"POT-Creation-Date: Tue Nov 7 05:42:15 2006\n"
|
||||
"POT-Creation-Date: Thu Nov 9 17:36:05 2006\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -993,6 +993,9 @@ msgstr ""
|
|||
msgid "Fatimeh's Game Relaxed"
|
||||
msgstr ""
|
||||
|
||||
msgid "Fifteen"
|
||||
msgstr ""
|
||||
|
||||
msgid "Fifteen Puzzle"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1395,6 +1398,9 @@ msgstr ""
|
|||
msgid "Inca"
|
||||
msgstr ""
|
||||
|
||||
msgid "Incompatibility"
|
||||
msgstr ""
|
||||
|
||||
msgid "Indefatigable"
|
||||
msgstr ""
|
||||
|
||||
|
@ -2973,6 +2979,9 @@ msgstr ""
|
|||
msgid "Scorpion Head"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scorpion II"
|
||||
msgstr ""
|
||||
|
||||
msgid "Scorpion Tail"
|
||||
msgstr ""
|
||||
|
||||
|
|
134
po/pysol.pot
134
po/pysol.pot
|
@ -14,7 +14,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"#-#-#-#-# pysol-1.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: Tue Nov 7 05:43:10 2006\n"
|
||||
"POT-Creation-Date: Thu Nov 9 17:36:57 2006\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -24,7 +24,7 @@ msgstr ""
|
|||
"Generated-By: pygettext.py 1.5\n"
|
||||
"#-#-#-#-# pysol-2.pot (PACKAGE VERSION) #-#-#-#-#\n"
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"POT-Creation-Date: 2006-11-07 05:43+0300\n"
|
||||
"POT-Creation-Date: 2006-11-09 17:36+0300\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -70,7 +70,7 @@ msgstr ""
|
|||
|
||||
#: pysollib/actions.py:314 pysollib/app.py:892 pysollib/app.py:1155
|
||||
#: pysollib/app.py:1167 pysollib/game.py:929 pysollib/game.py:1864
|
||||
#: pysollib/main.py:376 pysollib/main.py:384 pysollib/tk/colorsdialog.py:122
|
||||
#: pysollib/main.py:379 pysollib/main.py:387 pysollib/tk/colorsdialog.py:122
|
||||
#: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:143
|
||||
#: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155
|
||||
#: pysollib/tk/playeroptionsdialog.py:85
|
||||
|
@ -465,211 +465,211 @@ msgstr ""
|
|||
msgid "Error while saving game"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:120
|
||||
#: pysollib/gamedb.py:121
|
||||
msgid "Baker's Dozen"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:121
|
||||
#: pysollib/gamedb.py:122
|
||||
msgid "Beleaguered Castle"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:122
|
||||
#: pysollib/gamedb.py:123
|
||||
msgid "Canfield"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:123
|
||||
#: pysollib/gamedb.py:124
|
||||
msgid "Fan"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:124
|
||||
#: pysollib/gamedb.py:125
|
||||
msgid "Forty Thieves"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:125
|
||||
#: pysollib/gamedb.py:126
|
||||
msgid "FreeCell"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:126
|
||||
#: pysollib/gamedb.py:127
|
||||
msgid "Golf"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:127
|
||||
#: pysollib/gamedb.py:128
|
||||
msgid "Gypsy"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:128
|
||||
#: pysollib/gamedb.py:129
|
||||
msgid "Klondike"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:129
|
||||
#: pysollib/gamedb.py:130
|
||||
msgid "Montana"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:130
|
||||
#: pysollib/gamedb.py:131
|
||||
msgid "Napoleon"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:131
|
||||
#: pysollib/gamedb.py:132
|
||||
msgid "Numerica"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:132
|
||||
#: pysollib/gamedb.py:133
|
||||
msgid "Pairing"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:133
|
||||
#: pysollib/gamedb.py:134
|
||||
msgid "Raglan"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:134 pysollib/gamedb.py:167
|
||||
#: pysollib/gamedb.py:135 pysollib/gamedb.py:168
|
||||
msgid "Simple games"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:135
|
||||
#: pysollib/gamedb.py:136
|
||||
msgid "Spider"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:136
|
||||
#: pysollib/gamedb.py:137
|
||||
msgid "Terrace"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:137
|
||||
#: pysollib/gamedb.py:138
|
||||
msgid "Yukon"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:138 pysollib/gamedb.py:171
|
||||
#: pysollib/gamedb.py:139 pysollib/gamedb.py:172
|
||||
msgid "One-Deck games"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:139 pysollib/gamedb.py:172
|
||||
#: pysollib/gamedb.py:140 pysollib/gamedb.py:173
|
||||
msgid "Two-Deck games"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:140 pysollib/gamedb.py:173
|
||||
#: pysollib/gamedb.py:141 pysollib/gamedb.py:174
|
||||
msgid "Three-Deck games"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:141 pysollib/gamedb.py:174
|
||||
#: pysollib/gamedb.py:142 pysollib/gamedb.py:175
|
||||
msgid "Four-Deck games"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:153
|
||||
#: pysollib/gamedb.py:154
|
||||
msgid "Baker's Dozen type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:154
|
||||
#: pysollib/gamedb.py:155
|
||||
msgid "Beleaguered Castle type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:155
|
||||
#: pysollib/gamedb.py:156
|
||||
msgid "Canfield type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:156
|
||||
#: pysollib/gamedb.py:157
|
||||
msgid "Fan type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:157
|
||||
#: pysollib/gamedb.py:158
|
||||
msgid "Forty Thieves type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:158
|
||||
#: pysollib/gamedb.py:159
|
||||
msgid "FreeCell type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:159
|
||||
#: pysollib/gamedb.py:160
|
||||
msgid "Golf type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:160
|
||||
#: pysollib/gamedb.py:161
|
||||
msgid "Gypsy type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:161
|
||||
#: pysollib/gamedb.py:162
|
||||
msgid "Klondike type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:162
|
||||
#: pysollib/gamedb.py:163
|
||||
msgid "Montana type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:163
|
||||
#: pysollib/gamedb.py:164
|
||||
msgid "Napoleon type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:164
|
||||
#: pysollib/gamedb.py:165
|
||||
msgid "Numerica type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:165
|
||||
#: pysollib/gamedb.py:166
|
||||
msgid "Pairing type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:166
|
||||
#: pysollib/gamedb.py:167
|
||||
msgid "Raglan type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:168
|
||||
#: pysollib/gamedb.py:169
|
||||
msgid "Spider type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:169
|
||||
#: pysollib/gamedb.py:170
|
||||
msgid "Terrace type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:170
|
||||
#: pysollib/gamedb.py:171
|
||||
msgid "Yukon type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:178 pysollib/gamedb.py:186
|
||||
#: pysollib/gamedb.py:179 pysollib/gamedb.py:187
|
||||
msgid "French type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:179 pysollib/gamedb.py:187 pysollib/gamedb.py:195
|
||||
#: pysollib/gamedb.py:180 pysollib/gamedb.py:188 pysollib/gamedb.py:196
|
||||
msgid "Ganjifa type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:180 pysollib/gamedb.py:188 pysollib/gamedb.py:196
|
||||
#: pysollib/gamedb.py:181 pysollib/gamedb.py:189 pysollib/gamedb.py:197
|
||||
msgid "Hanafuda type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:181 pysollib/gamedb.py:189 pysollib/gamedb.py:203
|
||||
#: pysollib/gamedb.py:182 pysollib/gamedb.py:190 pysollib/gamedb.py:204
|
||||
msgid "Hex A Deck type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:182 pysollib/gamedb.py:190 pysollib/gamedb.py:208
|
||||
#: pysollib/gamedb.py:183 pysollib/gamedb.py:191 pysollib/gamedb.py:209
|
||||
msgid "Tarock type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:194
|
||||
#: pysollib/gamedb.py:195
|
||||
msgid "Dashavatara Ganjifa type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:197
|
||||
#: pysollib/gamedb.py:198
|
||||
msgid "Mughal Ganjifa type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:198
|
||||
#: pysollib/gamedb.py:199
|
||||
msgid "Navagraha Ganjifa type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:202
|
||||
#: pysollib/gamedb.py:203
|
||||
msgid "Shisen-Sho"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:204
|
||||
#: pysollib/gamedb.py:205
|
||||
msgid "Matrix type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:205
|
||||
#: pysollib/gamedb.py:206
|
||||
msgid "Memory type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:206
|
||||
#: pysollib/gamedb.py:207
|
||||
msgid "Poker type"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:207
|
||||
#: pysollib/gamedb.py:208
|
||||
msgid "Puzzle type"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1227,11 +1227,11 @@ msgstr ""
|
|||
msgid " Help"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:67 pysollib/main.py:284
|
||||
#: pysollib/main.py:68 pysollib/main.py:287
|
||||
msgid " installation error"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:68
|
||||
#: pysollib/main.py:69
|
||||
msgid ""
|
||||
"No %ss were found !!!\n"
|
||||
"\n"
|
||||
|
@ -1241,17 +1241,17 @@ msgid ""
|
|||
"Please check your %s installation.\n"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:75 pysollib/main.py:292 pysollib/tk/menubar.py:382
|
||||
#: pysollib/main.py:76 pysollib/main.py:295 pysollib/tk/menubar.py:382
|
||||
msgid "&Quit"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:99
|
||||
#: pysollib/main.py:100
|
||||
msgid ""
|
||||
"%s: %s\n"
|
||||
"try %s --help for more information"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:143
|
||||
#: pysollib/main.py:147
|
||||
msgid ""
|
||||
"Usage: %s [OPTIONS] [FILE]\n"
|
||||
" -g --game=GAMENAME start game GAMENAME\n"
|
||||
|
@ -1269,19 +1269,19 @@ msgid ""
|
|||
" MOD - one of following: pss(default), pygame, oss, win\n"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:161
|
||||
#: pysollib/main.py:165
|
||||
msgid ""
|
||||
"%s: too many files\n"
|
||||
"try %s --help for more information"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:165
|
||||
#: pysollib/main.py:169
|
||||
msgid ""
|
||||
"%s: invalid file name\n"
|
||||
"try %s --help for more information"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:285
|
||||
#: pysollib/main.py:288
|
||||
msgid ""
|
||||
"\n"
|
||||
"No games were found !!!\n"
|
||||
|
@ -1292,25 +1292,25 @@ msgid ""
|
|||
"Please check your %s installation.\n"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:371 pysollib/main.py:379
|
||||
#: pysollib/main.py:374 pysollib/main.py:382
|
||||
msgid " installation problem"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:372
|
||||
#: pysollib/main.py:375
|
||||
msgid ""
|
||||
"Your Python installation is compiled without thread support.\n"
|
||||
"\n"
|
||||
"Sounds and background music will be disabled."
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:380
|
||||
#: pysollib/main.py:383
|
||||
msgid ""
|
||||
"The pysolsoundserver module was not found.\n"
|
||||
"\n"
|
||||
"Sounds and background music will be disabled."
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:387
|
||||
#: pysollib/main.py:390
|
||||
msgid "Welcome to "
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PySol 0.0.1\n"
|
||||
"POT-Creation-Date: Tue Nov 7 05:42:15 2006\n"
|
||||
"PO-Revision-Date: 2006-11-07 05:51+0300\n"
|
||||
"POT-Creation-Date: Thu Nov 9 17:36:05 2006\n"
|
||||
"PO-Revision-Date: 2006-11-09 17:59+0300\n"
|
||||
"Last-Translator: Скоморох <skomoroh@gmail.com>\n"
|
||||
"Language-Team: Russian <ru@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
@ -925,10 +925,10 @@ msgid "Elevator"
|
|||
msgstr "Лифт"
|
||||
|
||||
msgid "Elevens"
|
||||
msgstr "Одиннадцать"
|
||||
msgstr "По одиннадцать"
|
||||
|
||||
msgid "Elevens Too"
|
||||
msgstr "Тоже Одиннадцать"
|
||||
msgstr "Тоже по одиннадцать"
|
||||
|
||||
msgid "Emperor"
|
||||
msgstr "Император"
|
||||
|
@ -1003,6 +1003,9 @@ msgstr "Пасьянс Фатимы"
|
|||
msgid "Fatimeh's Game Relaxed"
|
||||
msgstr "Облегчённый Пасьянс Фатимы"
|
||||
|
||||
msgid "Fifteen"
|
||||
msgstr "Пятнадцать"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Fifteen Puzzle"
|
||||
msgstr "Пятнашки"
|
||||
|
@ -1011,7 +1014,7 @@ msgid "Fifteen plus"
|
|||
msgstr "Пятнадцать плюс"
|
||||
|
||||
msgid "Fifteens"
|
||||
msgstr "Пятнадцать"
|
||||
msgstr "По пятнадцать"
|
||||
|
||||
msgid "Final Battle"
|
||||
msgstr "Последняя битва"
|
||||
|
@ -1414,6 +1417,9 @@ msgstr "Маджонг Inazuma"
|
|||
msgid "Inca"
|
||||
msgstr "Инка"
|
||||
|
||||
msgid "Incompatibility"
|
||||
msgstr "Несовместимость"
|
||||
|
||||
msgid "Indefatigable"
|
||||
msgstr "Неутомимый"
|
||||
|
||||
|
@ -1576,53 +1582,41 @@ msgstr "Гигант"
|
|||
msgid "Kurma"
|
||||
msgstr ""
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 14"
|
||||
msgstr "Маджонг Kyodai 14"
|
||||
msgstr "Kyodai 14"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 17"
|
||||
msgstr "Маджонг Kyodai 17"
|
||||
msgstr "Kyodai 17"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 18"
|
||||
msgstr "Маджонг Kyodai 18"
|
||||
msgstr "Kyodai 18"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 20"
|
||||
msgstr "Маджонг Kyodai 20"
|
||||
msgstr "Kyodai 20"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 23"
|
||||
msgstr "Маджонг Kyodai 23"
|
||||
msgstr "Kyodai 23"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 24"
|
||||
msgstr "Маджонг Kyodai 24"
|
||||
msgstr "Kyodai 24"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 25"
|
||||
msgstr "Маджонг Kyodai 25"
|
||||
msgstr "Kyodai 25"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 26"
|
||||
msgstr "Маджонг Kyodai 26"
|
||||
msgstr "Kyodai 26"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 27"
|
||||
msgstr "Маджонг Kyodai 27"
|
||||
msgstr "Kyodai 27"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 28"
|
||||
msgstr "Маджонг Kyodai 28"
|
||||
msgstr "Kyodai 28"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 41"
|
||||
msgstr "Маджонг Kyodai 4"
|
||||
msgstr "Kyodai 41"
|
||||
|
||||
#, fuzzy
|
||||
msgid "Kyodai 42"
|
||||
msgstr "Маджонг Kyodai 42"
|
||||
msgstr "Kyodai 42"
|
||||
|
||||
msgid "La Belle Lucie"
|
||||
msgstr "Прекрасная Люси"
|
||||
|
@ -1747,7 +1741,7 @@ msgid "Lucas"
|
|||
msgstr "Лукас"
|
||||
|
||||
msgid "Lucky Piles"
|
||||
msgstr "Счастливая ячейка"
|
||||
msgstr "Счастливые кучки"
|
||||
|
||||
msgid "Lucky Thirteen"
|
||||
msgstr "Счастливые Тринадцать"
|
||||
|
@ -3023,6 +3017,9 @@ msgstr "Скорпион"
|
|||
msgid "Scorpion Head"
|
||||
msgstr "Голова скорпиона"
|
||||
|
||||
msgid "Scorpion II"
|
||||
msgstr "Скорпион II"
|
||||
|
||||
msgid "Scorpion Tail"
|
||||
msgstr "Хвост скорпиона"
|
||||
|
||||
|
@ -3039,7 +3036,7 @@ msgid "Sea Towers"
|
|||
msgstr "Морские башни"
|
||||
|
||||
msgid "Seahaven Towers"
|
||||
msgstr ""
|
||||
msgstr "Приморские башни"
|
||||
|
||||
msgid "Selective Castle"
|
||||
msgstr "Избирательный Замок"
|
||||
|
@ -3075,7 +3072,7 @@ msgid "Shady Lanes"
|
|||
msgstr "Тенистые аллеи"
|
||||
|
||||
msgid "Shamrocks"
|
||||
msgstr "Трилистник"
|
||||
msgstr "Трилистники"
|
||||
|
||||
msgid "Shamsher"
|
||||
msgstr ""
|
||||
|
@ -3457,7 +3454,7 @@ msgid "Thirteen Up"
|
|||
msgstr "Тринадцать вверх"
|
||||
|
||||
msgid "Thirteens"
|
||||
msgstr "Тринадцать"
|
||||
msgstr "По тринадцать"
|
||||
|
||||
msgid "Thirty Six"
|
||||
msgstr "Тридцать шесть"
|
||||
|
|
132
po/ru_pysol.po
132
po/ru_pysol.po
|
@ -5,7 +5,7 @@
|
|||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PySol 0.0.1\n"
|
||||
"POT-Creation-Date: Tue Nov 7 05:43:10 2006\n"
|
||||
"POT-Creation-Date: Thu Nov 9 17:36:57 2006\n"
|
||||
"PO-Revision-Date: 2006-11-06 09:53+0300\n"
|
||||
"Last-Translator: Скоморох <skomoroh@gmail.com>\n"
|
||||
"Language-Team: Russian <ru@li.org>\n"
|
||||
|
@ -55,7 +55,7 @@ msgstr "&Следующий номер"
|
|||
|
||||
#: pysollib/actions.py:314 pysollib/app.py:892 pysollib/app.py:1155
|
||||
#: pysollib/app.py:1167 pysollib/game.py:929 pysollib/game.py:1864
|
||||
#: pysollib/main.py:376 pysollib/main.py:384 pysollib/tk/colorsdialog.py:122
|
||||
#: pysollib/main.py:379 pysollib/main.py:387 pysollib/tk/colorsdialog.py:122
|
||||
#: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:143
|
||||
#: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155
|
||||
#: pysollib/tk/playeroptionsdialog.py:85
|
||||
|
@ -510,211 +510,211 @@ msgstr "Ошибка при сохранении игры"
|
|||
msgid "Error while saving game"
|
||||
msgstr "Ошибка при сохранении игры"
|
||||
|
||||
#: pysollib/gamedb.py:120
|
||||
#: pysollib/gamedb.py:121
|
||||
msgid "Baker's Dozen"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:121
|
||||
#: pysollib/gamedb.py:122
|
||||
msgid "Beleaguered Castle"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:122
|
||||
#: pysollib/gamedb.py:123
|
||||
msgid "Canfield"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:123
|
||||
#: pysollib/gamedb.py:124
|
||||
msgid "Fan"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:124
|
||||
#: pysollib/gamedb.py:125
|
||||
msgid "Forty Thieves"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:125
|
||||
#: pysollib/gamedb.py:126
|
||||
msgid "FreeCell"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:126
|
||||
#: pysollib/gamedb.py:127
|
||||
msgid "Golf"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:127
|
||||
#: pysollib/gamedb.py:128
|
||||
msgid "Gypsy"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:128
|
||||
#: pysollib/gamedb.py:129
|
||||
msgid "Klondike"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:129
|
||||
#: pysollib/gamedb.py:130
|
||||
msgid "Montana"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:130
|
||||
#: pysollib/gamedb.py:131
|
||||
msgid "Napoleon"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:131
|
||||
#: pysollib/gamedb.py:132
|
||||
msgid "Numerica"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:132
|
||||
#: pysollib/gamedb.py:133
|
||||
msgid "Pairing"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:133
|
||||
#: pysollib/gamedb.py:134
|
||||
msgid "Raglan"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:134 pysollib/gamedb.py:167
|
||||
#: pysollib/gamedb.py:135 pysollib/gamedb.py:168
|
||||
msgid "Simple games"
|
||||
msgstr "Простые игры"
|
||||
|
||||
#: pysollib/gamedb.py:135
|
||||
#: pysollib/gamedb.py:136
|
||||
msgid "Spider"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:136
|
||||
#: pysollib/gamedb.py:137
|
||||
msgid "Terrace"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:137
|
||||
#: pysollib/gamedb.py:138
|
||||
msgid "Yukon"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/gamedb.py:138 pysollib/gamedb.py:171
|
||||
#: pysollib/gamedb.py:139 pysollib/gamedb.py:172
|
||||
msgid "One-Deck games"
|
||||
msgstr "Игры с одной колодой"
|
||||
|
||||
#: pysollib/gamedb.py:139 pysollib/gamedb.py:172
|
||||
#: pysollib/gamedb.py:140 pysollib/gamedb.py:173
|
||||
msgid "Two-Deck games"
|
||||
msgstr "Игры с двумя колодами"
|
||||
|
||||
#: pysollib/gamedb.py:140 pysollib/gamedb.py:173
|
||||
#: pysollib/gamedb.py:141 pysollib/gamedb.py:174
|
||||
msgid "Three-Deck games"
|
||||
msgstr "Игры с тремя колодами"
|
||||
|
||||
#: pysollib/gamedb.py:141 pysollib/gamedb.py:174
|
||||
#: pysollib/gamedb.py:142 pysollib/gamedb.py:175
|
||||
msgid "Four-Deck games"
|
||||
msgstr "Игры с четырьмя колодами"
|
||||
|
||||
#: pysollib/gamedb.py:153
|
||||
#: pysollib/gamedb.py:154
|
||||
msgid "Baker's Dozen type"
|
||||
msgstr "Игры типа Чёртова Дюжина (Baker's Dozen)"
|
||||
|
||||
#: pysollib/gamedb.py:154
|
||||
#: pysollib/gamedb.py:155
|
||||
msgid "Beleaguered Castle type"
|
||||
msgstr "Игры типа Осаждённый Замок (Beleaguered Castle)"
|
||||
|
||||
#: pysollib/gamedb.py:155
|
||||
#: pysollib/gamedb.py:156
|
||||
msgid "Canfield type"
|
||||
msgstr "Игры типа Кенфилд (Canfield)"
|
||||
|
||||
#: pysollib/gamedb.py:156
|
||||
#: pysollib/gamedb.py:157
|
||||
msgid "Fan type"
|
||||
msgstr "Игры типа Веер (Fan)"
|
||||
|
||||
#: pysollib/gamedb.py:157
|
||||
#: pysollib/gamedb.py:158
|
||||
msgid "Forty Thieves type"
|
||||
msgstr "Игры типа Сорок Воров (Forty Thieves)"
|
||||
|
||||
#: pysollib/gamedb.py:158
|
||||
#: pysollib/gamedb.py:159
|
||||
msgid "FreeCell type"
|
||||
msgstr "Игры типа Свободная Ячейка (FreeCell)"
|
||||
|
||||
#: pysollib/gamedb.py:159
|
||||
#: pysollib/gamedb.py:160
|
||||
msgid "Golf type"
|
||||
msgstr "Игры типа Гольф (Golf)"
|
||||
|
||||
#: pysollib/gamedb.py:160
|
||||
#: pysollib/gamedb.py:161
|
||||
msgid "Gypsy type"
|
||||
msgstr "Игры типа Цыганский Пасьянс (Gypsy)"
|
||||
|
||||
#: pysollib/gamedb.py:161
|
||||
#: pysollib/gamedb.py:162
|
||||
msgid "Klondike type"
|
||||
msgstr "Игры типа Клондайк (Klondike)"
|
||||
|
||||
#: pysollib/gamedb.py:162
|
||||
#: pysollib/gamedb.py:163
|
||||
msgid "Montana type"
|
||||
msgstr "Игры типа Монтана (Montana)"
|
||||
|
||||
#: pysollib/gamedb.py:163
|
||||
#: pysollib/gamedb.py:164
|
||||
msgid "Napoleon type"
|
||||
msgstr "Игры типа Наполеон (Napoleon)"
|
||||
|
||||
#: pysollib/gamedb.py:164
|
||||
#: pysollib/gamedb.py:165
|
||||
msgid "Numerica type"
|
||||
msgstr "Игры числового типа (Numerica)"
|
||||
|
||||
#: pysollib/gamedb.py:165
|
||||
#: pysollib/gamedb.py:166
|
||||
msgid "Pairing type"
|
||||
msgstr "Парные игры"
|
||||
|
||||
#: pysollib/gamedb.py:166
|
||||
#: pysollib/gamedb.py:167
|
||||
msgid "Raglan type"
|
||||
msgstr "Игры типа Реглан (Raglan)"
|
||||
|
||||
#: pysollib/gamedb.py:168
|
||||
#: pysollib/gamedb.py:169
|
||||
msgid "Spider type"
|
||||
msgstr "Игры типа Паук (Spider)"
|
||||
|
||||
#: pysollib/gamedb.py:169
|
||||
#: pysollib/gamedb.py:170
|
||||
msgid "Terrace type"
|
||||
msgstr "Игры типа Терраса (Terrace)"
|
||||
|
||||
#: pysollib/gamedb.py:170
|
||||
#: pysollib/gamedb.py:171
|
||||
msgid "Yukon type"
|
||||
msgstr "Игры типа Юкон (Yukon)"
|
||||
|
||||
#: pysollib/gamedb.py:178 pysollib/gamedb.py:186
|
||||
#: pysollib/gamedb.py:179 pysollib/gamedb.py:187
|
||||
msgid "French type"
|
||||
msgstr "Классические"
|
||||
|
||||
#: pysollib/gamedb.py:179 pysollib/gamedb.py:187 pysollib/gamedb.py:195
|
||||
#: pysollib/gamedb.py:180 pysollib/gamedb.py:188 pysollib/gamedb.py:196
|
||||
msgid "Ganjifa type"
|
||||
msgstr "Игры типа Ганджифа"
|
||||
|
||||
#: pysollib/gamedb.py:180 pysollib/gamedb.py:188 pysollib/gamedb.py:196
|
||||
#: pysollib/gamedb.py:181 pysollib/gamedb.py:189 pysollib/gamedb.py:197
|
||||
msgid "Hanafuda type"
|
||||
msgstr "Игры типа Ханафуда"
|
||||
|
||||
#: pysollib/gamedb.py:181 pysollib/gamedb.py:189 pysollib/gamedb.py:203
|
||||
#: pysollib/gamedb.py:182 pysollib/gamedb.py:190 pysollib/gamedb.py:204
|
||||
msgid "Hex A Deck type"
|
||||
msgstr "Игры типа Hex A Deck"
|
||||
|
||||
#: pysollib/gamedb.py:182 pysollib/gamedb.py:190 pysollib/gamedb.py:208
|
||||
#: pysollib/gamedb.py:183 pysollib/gamedb.py:191 pysollib/gamedb.py:209
|
||||
msgid "Tarock type"
|
||||
msgstr "Таро"
|
||||
|
||||
#: pysollib/gamedb.py:194
|
||||
#: pysollib/gamedb.py:195
|
||||
msgid "Dashavatara Ganjifa type"
|
||||
msgstr "Игры типа Дашаватара Ганджифа"
|
||||
|
||||
#: pysollib/gamedb.py:197
|
||||
#: pysollib/gamedb.py:198
|
||||
msgid "Mughal Ganjifa type"
|
||||
msgstr "Игры типа Мугал Ганджифа"
|
||||
|
||||
#: pysollib/gamedb.py:198
|
||||
#: pysollib/gamedb.py:199
|
||||
msgid "Navagraha Ganjifa type"
|
||||
msgstr "Игры типа Наваграха Ганджифа"
|
||||
|
||||
#: pysollib/gamedb.py:202
|
||||
#: pysollib/gamedb.py:203
|
||||
msgid "Shisen-Sho"
|
||||
msgstr "Шисен-Сё"
|
||||
|
||||
#: pysollib/gamedb.py:204
|
||||
#: pysollib/gamedb.py:205
|
||||
msgid "Matrix type"
|
||||
msgstr "Мозаика"
|
||||
|
||||
#: pysollib/gamedb.py:205
|
||||
#: pysollib/gamedb.py:206
|
||||
msgid "Memory type"
|
||||
msgstr "Игры на запоминание"
|
||||
|
||||
#: pysollib/gamedb.py:206
|
||||
#: pysollib/gamedb.py:207
|
||||
msgid "Poker type"
|
||||
msgstr "Покер"
|
||||
|
||||
#: pysollib/gamedb.py:207
|
||||
#: pysollib/gamedb.py:208
|
||||
msgid "Puzzle type"
|
||||
msgstr "Пазлы"
|
||||
|
||||
|
@ -1331,11 +1331,11 @@ msgstr "Не найден файл помощи\n"
|
|||
msgid " Help"
|
||||
msgstr " Помощь"
|
||||
|
||||
#: pysollib/main.py:67 pysollib/main.py:284
|
||||
#: pysollib/main.py:68 pysollib/main.py:287
|
||||
msgid " installation error"
|
||||
msgstr " проблема с установкой"
|
||||
|
||||
#: pysollib/main.py:68
|
||||
#: pysollib/main.py:69
|
||||
msgid ""
|
||||
"No %ss were found !!!\n"
|
||||
"\n"
|
||||
|
@ -1345,11 +1345,11 @@ msgid ""
|
|||
"Please check your %s installation.\n"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:75 pysollib/main.py:292 pysollib/tk/menubar.py:382
|
||||
#: pysollib/main.py:76 pysollib/main.py:295 pysollib/tk/menubar.py:382
|
||||
msgid "&Quit"
|
||||
msgstr "В&ыход"
|
||||
|
||||
#: pysollib/main.py:99
|
||||
#: pysollib/main.py:100
|
||||
msgid ""
|
||||
"%s: %s\n"
|
||||
"try %s --help for more information"
|
||||
|
@ -1357,7 +1357,7 @@ msgstr ""
|
|||
"%s: %s\n"
|
||||
"попробуйте %s --help для получения более подробной информации"
|
||||
|
||||
#: pysollib/main.py:143
|
||||
#: pysollib/main.py:147
|
||||
msgid ""
|
||||
"Usage: %s [OPTIONS] [FILE]\n"
|
||||
" -g --game=GAMENAME start game GAMENAME\n"
|
||||
|
@ -1389,7 +1389,7 @@ msgstr ""
|
|||
" FILE - имя файла сохранённой игры\n"
|
||||
" MOD - one of following: pss(default), pygame, oss, win\n"
|
||||
|
||||
#: pysollib/main.py:161
|
||||
#: pysollib/main.py:165
|
||||
msgid ""
|
||||
"%s: too many files\n"
|
||||
"try %s --help for more information"
|
||||
|
@ -1397,7 +1397,7 @@ msgstr ""
|
|||
"\"%s: слишком много файлов\n"
|
||||
"попробуйте %s --help для получения более подробной информации"
|
||||
|
||||
#: pysollib/main.py:165
|
||||
#: pysollib/main.py:169
|
||||
msgid ""
|
||||
"%s: invalid file name\n"
|
||||
"try %s --help for more information"
|
||||
|
@ -1405,7 +1405,7 @@ msgstr ""
|
|||
"%s: неправильное имя файла\n"
|
||||
"попробуйте %s --help для получения более подробной информации"
|
||||
|
||||
#: pysollib/main.py:285
|
||||
#: pysollib/main.py:288
|
||||
msgid ""
|
||||
"\n"
|
||||
"No games were found !!!\n"
|
||||
|
@ -1416,18 +1416,18 @@ msgid ""
|
|||
"Please check your %s installation.\n"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:371 pysollib/main.py:379
|
||||
#: pysollib/main.py:374 pysollib/main.py:382
|
||||
msgid " installation problem"
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:372
|
||||
#: pysollib/main.py:375
|
||||
msgid ""
|
||||
"Your Python installation is compiled without thread support.\n"
|
||||
"\n"
|
||||
"Sounds and background music will be disabled."
|
||||
msgstr ""
|
||||
|
||||
#: pysollib/main.py:380
|
||||
#: pysollib/main.py:383
|
||||
msgid ""
|
||||
"The pysolsoundserver module was not found.\n"
|
||||
"\n"
|
||||
|
@ -1437,7 +1437,7 @@ msgstr ""
|
|||
"\n"
|
||||
"Звук и фоновая музыка будут недоступны"
|
||||
|
||||
#: pysollib/main.py:387
|
||||
#: pysollib/main.py:390
|
||||
msgid "Welcome to "
|
||||
msgstr "Добро пожаловать в "
|
||||
|
||||
|
|
|
@ -853,6 +853,7 @@ class Application:
|
|||
self.top.busyUpdate()
|
||||
|
||||
def loadImages1(self):
|
||||
# load dialog images
|
||||
dir = os.path.join("images", "logos")
|
||||
for f in ("joker07_40_774",
|
||||
"joker08_40_774",
|
||||
|
@ -861,12 +862,33 @@ class Application:
|
|||
"joker11_100_774",
|
||||
"joker10_100",):
|
||||
self.gimages.logos.append(self.dataloader.findImage(f, dir))
|
||||
if os.name == 'posix':
|
||||
dir = os.path.join('images', 'dialog', 'bluecurve')
|
||||
else:
|
||||
dir = os.path.join('images', 'dialog', 'default')
|
||||
for f in ('error', 'info', 'question', 'warning'):
|
||||
fn = self.dataloader.findImage(f, dir)
|
||||
im = loadImage(fn)
|
||||
MfxMessageDialog.img[f] = im
|
||||
|
||||
# load button images
|
||||
if 0 and TOOLKIT == 'tk':
|
||||
dir = os.path.join('images', 'buttons', 'bluecurve')
|
||||
for n, f in (
|
||||
(_('&OK'), 'ok'),
|
||||
(_('&Cancel'), 'cancel'),
|
||||
(_('&New game'), 'new'),
|
||||
):
|
||||
fn = self.dataloader.findImage(f, dir)
|
||||
im = loadImage(fn)
|
||||
MfxDialog.button_img[n] = im
|
||||
|
||||
def loadImages2(self):
|
||||
# load canvas images
|
||||
dir = "images"
|
||||
##for f in ("noredeal", "redeal",):
|
||||
for f in ("stopsign", "redeal",):
|
||||
self.gimages.redeal.append(self.dataloader.findImage(f, dir))
|
||||
|
||||
def loadImages2(self):
|
||||
dir = os.path.join("images", "demo")
|
||||
for f in ("demo01", "demo02", "demo03", "demo04", "demo05",):
|
||||
self.gimages.demo.append(self.dataloader.findImage(f, dir))
|
||||
|
@ -878,32 +900,16 @@ class Application:
|
|||
## self.gimages.stats.append(self.dataloader.findImage(f, dir))
|
||||
|
||||
def loadImages3(self):
|
||||
if os.name == 'posix':
|
||||
dir = os.path.join('images', 'dialog', 'bluecurve')
|
||||
else:
|
||||
dir = os.path.join('images', 'dialog', 'default')
|
||||
for f in ('error', 'info', 'question', 'warning'):
|
||||
fn = self.dataloader.findImage(f, dir)
|
||||
im = loadImage(fn)
|
||||
MfxMessageDialog.img[f] = im
|
||||
if 0 and TOOLKIT == 'tk':
|
||||
dir = os.path.join('images', 'buttons', 'bluecurve')
|
||||
for n, f in (
|
||||
(_('&OK'), 'ok'),
|
||||
(_('&Cancel'), 'cancel'),
|
||||
(_('&New game'), 'new'),
|
||||
):
|
||||
fn = self.dataloader.findImage(f, dir)
|
||||
im = loadImage(fn)
|
||||
MfxDialog.button_img[n] = im
|
||||
# load treeview images
|
||||
SelectDialogTreeData.img = []
|
||||
dir = os.path.join('images', 'tree')
|
||||
for f in ('folder', 'openfolder', 'node', 'emptynode'):
|
||||
fn = self.dataloader.findImage(f, dir)
|
||||
im = loadImage(fn)
|
||||
SelectDialogTreeData.img.append(im)
|
||||
|
||||
# load htmlviewer images
|
||||
dir = os.path.join('images', 'htmlviewer')
|
||||
#
|
||||
fn = self.dataloader.findImage('disk', dir)
|
||||
HTMLViewer.symbols_fn['disk'] = fn
|
||||
|
||||
|
|
|
@ -48,16 +48,16 @@ class Capricieuse(Game):
|
|||
# game layout
|
||||
#
|
||||
|
||||
def createGame(self, **layout):
|
||||
def createGame(self, rows=12):
|
||||
|
||||
# create layout
|
||||
l, s = Layout(self), self.s
|
||||
|
||||
# set window
|
||||
self.setSize(l.XM+12*l.XS, l.YM+2*l.YS+15*l.YOFFSET)
|
||||
self.setSize(l.XM+rows*l.XS, l.YM+2*l.YS+15*l.YOFFSET)
|
||||
|
||||
# create stacks
|
||||
x, y, = l.XM+2*l.XS, l.YM
|
||||
x, y, = l.XM+(rows-8)*l.XS/2, l.YM
|
||||
for i in range(4):
|
||||
s.foundations.append(SS_FoundationStack(x, y, self, suit=i))
|
||||
x = x + l.XS
|
||||
|
@ -66,7 +66,7 @@ class Capricieuse(Game):
|
|||
base_rank=KING, dir=-1))
|
||||
x = x + l.XS
|
||||
x, y, = l.XM, y + l.YS
|
||||
for i in range(12):
|
||||
for i in range(rows):
|
||||
s.rows.append(self.RowStack_Class(x, y, self,
|
||||
max_move=1, max_accept=1))
|
||||
x = x + l.XS
|
||||
|
@ -114,7 +114,7 @@ class Nationale(Capricieuse):
|
|||
|
||||
class Strata(Game):
|
||||
|
||||
def createGame(self, **layout):
|
||||
def createGame(self):
|
||||
|
||||
# create layout
|
||||
l, s = Layout(self), self.s
|
||||
|
@ -150,6 +150,27 @@ class Strata(Game):
|
|||
shallHighlightMatch = Game._shallHighlightMatch_AC
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // Fifteen
|
||||
# ************************************************************************/
|
||||
|
||||
class Fifteen(Capricieuse):
|
||||
Talon_Class = InitialDealTalonStack
|
||||
|
||||
def createGame(self):
|
||||
Capricieuse.createGame(self, rows=15)
|
||||
|
||||
def startGame(self):
|
||||
for i in range(6):
|
||||
self.s.talon.dealRow(frames=0)
|
||||
self.startDealSample()
|
||||
self.s.talon.dealRowAvail()
|
||||
|
||||
def _shuffleHook(self, cards):
|
||||
return cards
|
||||
|
||||
|
||||
|
||||
# register the game
|
||||
registerGame(GameInfo(292, Capricieuse, "Capricieuse",
|
||||
GI.GT_BAKERS_DOZEN | GI.GT_OPEN, 2, 2, GI.SL_MOSTLY_SKILL))
|
||||
|
@ -159,4 +180,6 @@ registerGame(GameInfo(293, Nationale, "Nationale",
|
|||
registerGame(GameInfo(606, Strata, "Strata",
|
||||
GI.GT_BAKERS_DOZEN | GI.GT_OPEN, 2, 2, GI.SL_MOSTLY_SKILL,
|
||||
ranks=(0, 6, 7, 8, 9, 10, 11, 12) ))
|
||||
registerGame(GameInfo(673, Fifteen, "Fifteen",
|
||||
GI.GT_BAKERS_DOZEN | GI.GT_OPEN, 2, 0, GI.SL_MOSTLY_SKILL))
|
||||
|
||||
|
|
|
@ -1081,6 +1081,39 @@ class ShortTail(LongTail):
|
|||
LongTail.createGame(self, rows=8, playcards=24)
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // Incompatibility
|
||||
# ************************************************************************/
|
||||
|
||||
class Incompatibility(Spidike):
|
||||
Talon_Class = GroundForADivorce_Talon
|
||||
RowStack_Class = Spider_SS_RowStack
|
||||
|
||||
def createGame(self):
|
||||
Spidike.createGame(self, rows=10)
|
||||
|
||||
def startGame(self):
|
||||
for i in range(4):
|
||||
self.s.talon.dealRow(frames=0)
|
||||
self.startDealSample()
|
||||
self.s.talon.dealRow()
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // Scorpion II
|
||||
# ************************************************************************/
|
||||
|
||||
class ScorpionII(Scorpion):
|
||||
|
||||
def startGame(self):
|
||||
for i in (3, 3, 3, 0, 0, 0):
|
||||
self.s.talon.dealRow(rows=self.s.rows[:i], flip=0, frames=0)
|
||||
self.s.talon.dealRow(rows=self.s.rows[i:], flip=1, frames=0)
|
||||
self.startDealSample()
|
||||
self.s.talon.dealRow()
|
||||
|
||||
|
||||
|
||||
# register the game
|
||||
registerGame(GameInfo(10, RelaxedSpider, "Relaxed Spider",
|
||||
GI.GT_SPIDER | GI.GT_RELAXED, 2, 0, GI.SL_MOSTLY_SKILL))
|
||||
|
@ -1193,4 +1226,8 @@ registerGame(GameInfo(571, ShortTail, "Short Tail",
|
|||
registerGame(GameInfo(670, ChineseSpider, "Chinese Spider",
|
||||
GI.GT_SPIDER, 4, 0, GI.SL_MOSTLY_SKILL,
|
||||
suits=(0, 1, 2),))
|
||||
registerGame(GameInfo(671, Incompatibility, "Incompatibility",
|
||||
GI.GT_SPIDER, 2, 0, GI.SL_MOSTLY_SKILL))
|
||||
registerGame(GameInfo(672, ScorpionII, "Scorpion II",
|
||||
GI.GT_SPIDER, 1, 0, GI.SL_MOSTLY_SKILL))
|
||||
|
||||
|
|
139
pysollib/main.py
139
pysollib/main.py
|
@ -35,27 +35,26 @@
|
|||
|
||||
|
||||
# imports
|
||||
import sys, os, locale
|
||||
import sys, os
|
||||
import traceback
|
||||
import getopt
|
||||
import gettext
|
||||
|
||||
# PySol imports
|
||||
from mfxutil import destruct, EnvError
|
||||
from util import CARDSET, DataLoader
|
||||
import settings
|
||||
from settings import PACKAGE, TOOLKIT, VERSION, SOUND_MOD
|
||||
from resource import Tile
|
||||
from gamedb import GI
|
||||
from app import Application
|
||||
from pysolaudio import thread, pysolsoundserver
|
||||
from pysolaudio import AbstractAudioClient, PysolSoundServerModuleClient
|
||||
from pysolaudio import Win32AudioClient, OSSAudioClient, PyGameAudioClient
|
||||
import settings
|
||||
PACKAGE, SOUND_MOD = settings.PACKAGE, settings.SOUND_MOD
|
||||
|
||||
# Toolkit imports
|
||||
from pysoltk import tkversion, wm_withdraw, loadImage
|
||||
from pysoltk import wm_withdraw, loadImage
|
||||
from pysoltk import MfxMessageDialog, MfxExceptionDialog
|
||||
from pysoltk import TclError, MfxRoot
|
||||
from pysoltk import MfxRoot
|
||||
from pysoltk import PysolProgressBar
|
||||
|
||||
|
||||
|
@ -97,21 +96,21 @@ def parse_option(argv):
|
|||
"sound-mod=",
|
||||
"help"])
|
||||
except getopt.GetoptError, err:
|
||||
print _("%s: %s\ntry %s --help for more information") \
|
||||
print >> sys.stderr, _("%s: %s\ntry %s --help for more information") \
|
||||
% (prog_name, err, prog_name)
|
||||
return None
|
||||
opts = {"help": False,
|
||||
"game": None,
|
||||
"gameid": None,
|
||||
"fg": None,
|
||||
"bg": None,
|
||||
"fn": None,
|
||||
"theme": None,
|
||||
"french-only": False,
|
||||
"noplugins": False,
|
||||
"nosound": False,
|
||||
"sound-mod": None,
|
||||
"debug": None,
|
||||
opts = {"help" : False,
|
||||
"game" : None,
|
||||
"gameid" : None,
|
||||
"fg" : None,
|
||||
"bg" : None,
|
||||
"fn" : None,
|
||||
"theme" : None,
|
||||
"french-only" : False,
|
||||
"noplugins" : False,
|
||||
"nosound" : False,
|
||||
"sound-mod" : None,
|
||||
"debug" : None,
|
||||
}
|
||||
for i in optlist:
|
||||
if i[0] in ("-h", "--help"):
|
||||
|
@ -162,11 +161,11 @@ def parse_option(argv):
|
|||
return None
|
||||
|
||||
if len(args) > 1:
|
||||
print _("%s: too many files\ntry %s --help for more information") % (prog_name, prog_name)
|
||||
print >> sys.stderr, _("%s: too many files\ntry %s --help for more information") % (prog_name, prog_name)
|
||||
return None
|
||||
filename = args and args[0] or None
|
||||
if filename and not os.path.isfile(filename):
|
||||
print _("%s: invalid file name\ntry %s --help for more information") % (prog_name, prog_name)
|
||||
print >> sys.stderr, _("%s: invalid file name\ntry %s --help for more information") % (prog_name, prog_name)
|
||||
return None
|
||||
return opts, filename
|
||||
|
||||
|
@ -332,7 +331,7 @@ Please check your %s installation.
|
|||
if not app.audio.CAN_PLAY_SOUND:
|
||||
app.opt.sound = 0
|
||||
if not opts["nosound"] and not opts['sound-mod'] and pysolsoundserver and not app.audio.connected:
|
||||
print PACKAGE + ": could not connect to pysolsoundserver, sound disabled."
|
||||
print >> sys.stderr, PACKAGE + ": could not connect to pysolsoundserver, sound disabled."
|
||||
warn_pysolsoundserver = 1
|
||||
app.audio.updateSettings()
|
||||
# start up the background music
|
||||
|
@ -364,9 +363,9 @@ Please check your %s installation.
|
|||
if thread is None:
|
||||
warn_thread = 1
|
||||
if thread is None:
|
||||
print PACKAGE + ": Python thread module not found, sound disabled."
|
||||
print >> sys.stderr, PACKAGE+": Python thread module not found, sound disabled."
|
||||
else:
|
||||
print PACKAGE + ": pysolsoundserver module not found, sound disabled."
|
||||
print >> sys.stderr, PACKAGE+": pysolsoundserver module not found, sound disabled."
|
||||
sys.stdout.flush()
|
||||
if not opts["nosound"]:
|
||||
if warn_thread:
|
||||
|
@ -415,39 +414,10 @@ Sounds and background music will be disabled.'''),
|
|||
|
||||
|
||||
# /***********************************************************************
|
||||
# //
|
||||
# // main
|
||||
# ************************************************************************/
|
||||
|
||||
def pysol_exit(app):
|
||||
# clean up
|
||||
if app.audio is not None:
|
||||
app.audio.destroy() # shut down audio
|
||||
destruct(app.audio)
|
||||
##app.wm_withdraw()
|
||||
if app.canvas is not None:
|
||||
app.canvas.destroy()
|
||||
destruct(app.canvas)
|
||||
if app.toolbar is not None:
|
||||
app.toolbar.destroy()
|
||||
destruct(app.toolbar)
|
||||
if app.menubar is not None:
|
||||
destruct(app.menubar)
|
||||
top = app.top
|
||||
destruct(app)
|
||||
app = None
|
||||
if top is not None:
|
||||
try:
|
||||
top.destroy()
|
||||
except:
|
||||
pass
|
||||
destruct(top)
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // PySol main entry
|
||||
# ************************************************************************/
|
||||
|
||||
def pysol_main(args):
|
||||
def main(args=None):
|
||||
# create the application
|
||||
app = Application()
|
||||
r = pysol_init(app, args)
|
||||
|
@ -455,63 +425,4 @@ def pysol_main(args):
|
|||
return r
|
||||
# let's go - enter the mainloop
|
||||
app.mainloop()
|
||||
## try:
|
||||
## r = pysol_init(app, args)
|
||||
## if r != 0:
|
||||
## return r
|
||||
## # let's go - enter the mainloop
|
||||
## app.mainloop()
|
||||
## except KeyboardInterrupt, ex:
|
||||
## print "Exiting on SIGINT."
|
||||
## pass
|
||||
## except StandardError, ex:
|
||||
## if not app.top:
|
||||
## raise
|
||||
## t = str(ex.__class__)
|
||||
## if str(ex): t = t + ":\n" + str(ex)
|
||||
## d = MfxMessageDialog(app.top, title=PACKAGE + " internal error",
|
||||
## text="Internal errror. Please report this bug:\n\n"+t,
|
||||
## strings=("&Quit",), bitmap="error")
|
||||
try:
|
||||
pysol_exit(app)
|
||||
except:
|
||||
pass
|
||||
return 0
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# // main
|
||||
# ************************************************************************/
|
||||
|
||||
def main(args=None):
|
||||
|
||||
# setup (mainly for JPython)
|
||||
if not hasattr(sys, "platform"):
|
||||
sys.platform = "unknown"
|
||||
if not hasattr(sys, "executable"):
|
||||
sys.executable = None
|
||||
if not hasattr(os, "defpath"):
|
||||
os.defpath = ""
|
||||
|
||||
# check versions
|
||||
if sys.platform[:4] != "java":
|
||||
if sys.version[:5] < "1.5.2":
|
||||
print "%s needs Python 1.5.2 or better (you have %s)" % (PACKAGE, sys.version)
|
||||
return 1
|
||||
assert len(tkversion) == 4
|
||||
if TOOLKIT == "tk":
|
||||
import Tkinter
|
||||
if tkversion < (8, 0, 0, 0):
|
||||
print "%s needs Tcl/Tk 8.0 or better (you have %s)" % (PACKAGE, str(tkversion))
|
||||
return 1
|
||||
# check that Tkinter bindings are also at version 1.5.2
|
||||
if not hasattr(Tkinter.Wm, "wm_aspect") or not hasattr(Tkinter.Canvas, "tag_lower"):
|
||||
print "%s: please update the Python-Tk bindings (aka Tkinter) to version 1.5.2 or better" % (PACKAGE,)
|
||||
return 1
|
||||
# check Python
|
||||
if -1 % 13 != 12:
|
||||
raise Exception, "-1 % 13 != 12"
|
||||
|
||||
# run it
|
||||
return pysol_main(args)
|
||||
|
||||
|
|
|
@ -320,90 +320,6 @@ def unpickle(filename):
|
|||
return obj
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# //
|
||||
# ************************************************************************/
|
||||
|
||||
def spawnv(file, args=()):
|
||||
if not args:
|
||||
args = ()
|
||||
args = (file,) + tuple(args)
|
||||
#
|
||||
if not os.path.isfile(file):
|
||||
raise os.error, str(file)
|
||||
mode = os.stat(file)[0]
|
||||
if not (mode & 0100):
|
||||
return 0
|
||||
#
|
||||
if os.name == "posix":
|
||||
pid = os.fork()
|
||||
if pid == -1:
|
||||
raise os.error, "fork failed"
|
||||
if pid != 0:
|
||||
# parent
|
||||
try:
|
||||
os.waitpid(pid, 0)
|
||||
except:
|
||||
pass
|
||||
return 1
|
||||
# child
|
||||
# 1) close all files
|
||||
for fd in range(255, -1, -1):
|
||||
try:
|
||||
os.close(fd)
|
||||
except:
|
||||
pass
|
||||
# 2) open stdin, stdout and stderr to /dev/null
|
||||
try:
|
||||
fd = os.open("/dev/null", os.O_RDWR)
|
||||
os.dup(fd)
|
||||
os.dup(fd)
|
||||
except:
|
||||
pass
|
||||
# 3) fork again and exec program
|
||||
try:
|
||||
if os.fork() == 0:
|
||||
try:
|
||||
os.setpgrp()
|
||||
except:
|
||||
pass
|
||||
os.execv(file, args)
|
||||
except:
|
||||
pass
|
||||
# 4) exit
|
||||
while 1:
|
||||
os._exit(0)
|
||||
return 0
|
||||
|
||||
|
||||
def spawnvp(file, args=()):
|
||||
if file and os.path.isabs(file):
|
||||
try:
|
||||
if spawnv(file, args):
|
||||
return file
|
||||
except:
|
||||
##if traceback: traceback.print_exc()
|
||||
pass
|
||||
return None
|
||||
#
|
||||
path = os.environ.get("PATH", "")
|
||||
path = path.split(os.pathsep)
|
||||
for dir in path:
|
||||
try:
|
||||
if dir and os.path.isdir(dir):
|
||||
f = os.path.join(dir, file)
|
||||
try:
|
||||
if spawnv(f, args):
|
||||
return f
|
||||
except:
|
||||
##if traceback: traceback.print_exc()
|
||||
pass
|
||||
except:
|
||||
##if traceback: traceback.print_exc()
|
||||
pass
|
||||
return None
|
||||
|
||||
|
||||
# /***********************************************************************
|
||||
# //
|
||||
# ************************************************************************/
|
||||
|
|
|
@ -41,7 +41,7 @@ import Tile as Tkinter
|
|||
import traceback
|
||||
|
||||
# PySol imports
|
||||
from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct, spawnvp
|
||||
from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
|
||||
from pysollib.settings import PACKAGE
|
||||
from pysollib.pysolaudio import pysolsoundserver
|
||||
|
||||
|
|
|
@ -496,7 +496,8 @@ to open the following URL:
|
|||
|
||||
def errorDialog(self, msg):
|
||||
d = MfxMessageDialog(self.parent, title=PACKAGE+" HTML Problem",
|
||||
text=msg, bitmap="warning",
|
||||
text=msg,
|
||||
##bitmap="warning", # FIXME: this interp don't have images
|
||||
strings=(_("&OK"),), default=0)
|
||||
|
||||
def getImage(self, fn):
|
||||
|
|
|
@ -41,7 +41,7 @@ import Tkinter
|
|||
import traceback
|
||||
|
||||
# PySol imports
|
||||
from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct, spawnvp
|
||||
from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
|
||||
from pysollib.settings import PACKAGE
|
||||
from pysollib.pysolaudio import pysolsoundserver
|
||||
|
||||
|
|
|
@ -495,7 +495,8 @@ to open the following URL:
|
|||
|
||||
def errorDialog(self, msg):
|
||||
d = MfxMessageDialog(self.parent, title=PACKAGE+" HTML Problem",
|
||||
text=msg, bitmap="warning",
|
||||
text=msg,
|
||||
##bitmap="warning", # FIXME: this interp don't have images
|
||||
strings=(_("&OK"),), default=0)
|
||||
|
||||
def getImage(self, fn):
|
||||
|
|
Loading…
Add table
Reference in a new issue