1
0
Fork 0
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: https://pysolfc.svn.sourceforge.net/svnroot/pysolfc/PySolFC/trunk@91 39dd0a4e-7c14-0410-91b3-c4f2d318f732
This commit is contained in:
skomoroh 2006-11-09 22:18:46 +00:00
parent 40fc8ea105
commit 017379ea05
13 changed files with 296 additions and 395 deletions

View file

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PySol 0.0.1\n" "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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -993,6 +993,9 @@ msgstr ""
msgid "Fatimeh's Game Relaxed" msgid "Fatimeh's Game Relaxed"
msgstr "" msgstr ""
msgid "Fifteen"
msgstr ""
msgid "Fifteen Puzzle" msgid "Fifteen Puzzle"
msgstr "" msgstr ""
@ -1395,6 +1398,9 @@ msgstr ""
msgid "Inca" msgid "Inca"
msgstr "" msgstr ""
msgid "Incompatibility"
msgstr ""
msgid "Indefatigable" msgid "Indefatigable"
msgstr "" msgstr ""
@ -2973,6 +2979,9 @@ msgstr ""
msgid "Scorpion Head" msgid "Scorpion Head"
msgstr "" msgstr ""
msgid "Scorpion II"
msgstr ""
msgid "Scorpion Tail" msgid "Scorpion Tail"
msgstr "" msgstr ""

View file

@ -14,7 +14,7 @@ msgid ""
msgstr "" msgstr ""
"#-#-#-#-# pysol-1.pot (PACKAGE VERSION) #-#-#-#-#\n" "#-#-#-#-# pysol-1.pot (PACKAGE VERSION) #-#-#-#-#\n"
"Project-Id-Version: 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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -24,7 +24,7 @@ msgstr ""
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
"#-#-#-#-# pysol-2.pot (PACKAGE VERSION) #-#-#-#-#\n" "#-#-#-#-# pysol-2.pot (PACKAGE VERSION) #-#-#-#-#\n"
"Project-Id-Version: 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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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/actions.py:314 pysollib/app.py:892 pysollib/app.py:1155
#: pysollib/app.py:1167 pysollib/game.py:929 pysollib/game.py:1864 #: 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/edittextdialog.py:82 pysollib/tk/fontsdialog.py:143
#: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155 #: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155
#: pysollib/tk/playeroptionsdialog.py:85 #: pysollib/tk/playeroptionsdialog.py:85
@ -465,211 +465,211 @@ msgstr ""
msgid "Error while saving game" msgid "Error while saving game"
msgstr "" msgstr ""
#: pysollib/gamedb.py:120 #: pysollib/gamedb.py:121
msgid "Baker's Dozen" msgid "Baker's Dozen"
msgstr "" msgstr ""
#: pysollib/gamedb.py:121 #: pysollib/gamedb.py:122
msgid "Beleaguered Castle" msgid "Beleaguered Castle"
msgstr "" msgstr ""
#: pysollib/gamedb.py:122 #: pysollib/gamedb.py:123
msgid "Canfield" msgid "Canfield"
msgstr "" msgstr ""
#: pysollib/gamedb.py:123 #: pysollib/gamedb.py:124
msgid "Fan" msgid "Fan"
msgstr "" msgstr ""
#: pysollib/gamedb.py:124 #: pysollib/gamedb.py:125
msgid "Forty Thieves" msgid "Forty Thieves"
msgstr "" msgstr ""
#: pysollib/gamedb.py:125 #: pysollib/gamedb.py:126
msgid "FreeCell" msgid "FreeCell"
msgstr "" msgstr ""
#: pysollib/gamedb.py:126 #: pysollib/gamedb.py:127
msgid "Golf" msgid "Golf"
msgstr "" msgstr ""
#: pysollib/gamedb.py:127 #: pysollib/gamedb.py:128
msgid "Gypsy" msgid "Gypsy"
msgstr "" msgstr ""
#: pysollib/gamedb.py:128 #: pysollib/gamedb.py:129
msgid "Klondike" msgid "Klondike"
msgstr "" msgstr ""
#: pysollib/gamedb.py:129 #: pysollib/gamedb.py:130
msgid "Montana" msgid "Montana"
msgstr "" msgstr ""
#: pysollib/gamedb.py:130 #: pysollib/gamedb.py:131
msgid "Napoleon" msgid "Napoleon"
msgstr "" msgstr ""
#: pysollib/gamedb.py:131 #: pysollib/gamedb.py:132
msgid "Numerica" msgid "Numerica"
msgstr "" msgstr ""
#: pysollib/gamedb.py:132 #: pysollib/gamedb.py:133
msgid "Pairing" msgid "Pairing"
msgstr "" msgstr ""
#: pysollib/gamedb.py:133 #: pysollib/gamedb.py:134
msgid "Raglan" msgid "Raglan"
msgstr "" msgstr ""
#: pysollib/gamedb.py:134 pysollib/gamedb.py:167 #: pysollib/gamedb.py:135 pysollib/gamedb.py:168
msgid "Simple games" msgid "Simple games"
msgstr "" msgstr ""
#: pysollib/gamedb.py:135 #: pysollib/gamedb.py:136
msgid "Spider" msgid "Spider"
msgstr "" msgstr ""
#: pysollib/gamedb.py:136 #: pysollib/gamedb.py:137
msgid "Terrace" msgid "Terrace"
msgstr "" msgstr ""
#: pysollib/gamedb.py:137 #: pysollib/gamedb.py:138
msgid "Yukon" msgid "Yukon"
msgstr "" msgstr ""
#: pysollib/gamedb.py:138 pysollib/gamedb.py:171 #: pysollib/gamedb.py:139 pysollib/gamedb.py:172
msgid "One-Deck games" msgid "One-Deck games"
msgstr "" msgstr ""
#: pysollib/gamedb.py:139 pysollib/gamedb.py:172 #: pysollib/gamedb.py:140 pysollib/gamedb.py:173
msgid "Two-Deck games" msgid "Two-Deck games"
msgstr "" msgstr ""
#: pysollib/gamedb.py:140 pysollib/gamedb.py:173 #: pysollib/gamedb.py:141 pysollib/gamedb.py:174
msgid "Three-Deck games" msgid "Three-Deck games"
msgstr "" msgstr ""
#: pysollib/gamedb.py:141 pysollib/gamedb.py:174 #: pysollib/gamedb.py:142 pysollib/gamedb.py:175
msgid "Four-Deck games" msgid "Four-Deck games"
msgstr "" msgstr ""
#: pysollib/gamedb.py:153 #: pysollib/gamedb.py:154
msgid "Baker's Dozen type" msgid "Baker's Dozen type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:154 #: pysollib/gamedb.py:155
msgid "Beleaguered Castle type" msgid "Beleaguered Castle type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:155 #: pysollib/gamedb.py:156
msgid "Canfield type" msgid "Canfield type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:156 #: pysollib/gamedb.py:157
msgid "Fan type" msgid "Fan type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:157 #: pysollib/gamedb.py:158
msgid "Forty Thieves type" msgid "Forty Thieves type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:158 #: pysollib/gamedb.py:159
msgid "FreeCell type" msgid "FreeCell type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:159 #: pysollib/gamedb.py:160
msgid "Golf type" msgid "Golf type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:160 #: pysollib/gamedb.py:161
msgid "Gypsy type" msgid "Gypsy type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:161 #: pysollib/gamedb.py:162
msgid "Klondike type" msgid "Klondike type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:162 #: pysollib/gamedb.py:163
msgid "Montana type" msgid "Montana type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:163 #: pysollib/gamedb.py:164
msgid "Napoleon type" msgid "Napoleon type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:164 #: pysollib/gamedb.py:165
msgid "Numerica type" msgid "Numerica type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:165 #: pysollib/gamedb.py:166
msgid "Pairing type" msgid "Pairing type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:166 #: pysollib/gamedb.py:167
msgid "Raglan type" msgid "Raglan type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:168 #: pysollib/gamedb.py:169
msgid "Spider type" msgid "Spider type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:169 #: pysollib/gamedb.py:170
msgid "Terrace type" msgid "Terrace type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:170 #: pysollib/gamedb.py:171
msgid "Yukon type" msgid "Yukon type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:178 pysollib/gamedb.py:186 #: pysollib/gamedb.py:179 pysollib/gamedb.py:187
msgid "French type" msgid "French type"
msgstr "" 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" msgid "Ganjifa type"
msgstr "" 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" msgid "Hanafuda type"
msgstr "" 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" msgid "Hex A Deck type"
msgstr "" 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" msgid "Tarock type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:194 #: pysollib/gamedb.py:195
msgid "Dashavatara Ganjifa type" msgid "Dashavatara Ganjifa type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:197 #: pysollib/gamedb.py:198
msgid "Mughal Ganjifa type" msgid "Mughal Ganjifa type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:198 #: pysollib/gamedb.py:199
msgid "Navagraha Ganjifa type" msgid "Navagraha Ganjifa type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:202 #: pysollib/gamedb.py:203
msgid "Shisen-Sho" msgid "Shisen-Sho"
msgstr "" msgstr ""
#: pysollib/gamedb.py:204 #: pysollib/gamedb.py:205
msgid "Matrix type" msgid "Matrix type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:205 #: pysollib/gamedb.py:206
msgid "Memory type" msgid "Memory type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:206 #: pysollib/gamedb.py:207
msgid "Poker type" msgid "Poker type"
msgstr "" msgstr ""
#: pysollib/gamedb.py:207 #: pysollib/gamedb.py:208
msgid "Puzzle type" msgid "Puzzle type"
msgstr "" msgstr ""
@ -1227,11 +1227,11 @@ msgstr ""
msgid " Help" msgid " Help"
msgstr "" msgstr ""
#: pysollib/main.py:67 pysollib/main.py:284 #: pysollib/main.py:68 pysollib/main.py:287
msgid " installation error" msgid " installation error"
msgstr "" msgstr ""
#: pysollib/main.py:68 #: pysollib/main.py:69
msgid "" msgid ""
"No %ss were found !!!\n" "No %ss were found !!!\n"
"\n" "\n"
@ -1241,17 +1241,17 @@ msgid ""
"Please check your %s installation.\n" "Please check your %s installation.\n"
msgstr "" 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" msgid "&Quit"
msgstr "" msgstr ""
#: pysollib/main.py:99 #: pysollib/main.py:100
msgid "" msgid ""
"%s: %s\n" "%s: %s\n"
"try %s --help for more information" "try %s --help for more information"
msgstr "" msgstr ""
#: pysollib/main.py:143 #: pysollib/main.py:147
msgid "" msgid ""
"Usage: %s [OPTIONS] [FILE]\n" "Usage: %s [OPTIONS] [FILE]\n"
" -g --game=GAMENAME start game GAMENAME\n" " -g --game=GAMENAME start game GAMENAME\n"
@ -1269,19 +1269,19 @@ msgid ""
" MOD - one of following: pss(default), pygame, oss, win\n" " MOD - one of following: pss(default), pygame, oss, win\n"
msgstr "" msgstr ""
#: pysollib/main.py:161 #: pysollib/main.py:165
msgid "" msgid ""
"%s: too many files\n" "%s: too many files\n"
"try %s --help for more information" "try %s --help for more information"
msgstr "" msgstr ""
#: pysollib/main.py:165 #: pysollib/main.py:169
msgid "" msgid ""
"%s: invalid file name\n" "%s: invalid file name\n"
"try %s --help for more information" "try %s --help for more information"
msgstr "" msgstr ""
#: pysollib/main.py:285 #: pysollib/main.py:288
msgid "" msgid ""
"\n" "\n"
"No games were found !!!\n" "No games were found !!!\n"
@ -1292,25 +1292,25 @@ msgid ""
"Please check your %s installation.\n" "Please check your %s installation.\n"
msgstr "" msgstr ""
#: pysollib/main.py:371 pysollib/main.py:379 #: pysollib/main.py:374 pysollib/main.py:382
msgid " installation problem" msgid " installation problem"
msgstr "" msgstr ""
#: pysollib/main.py:372 #: pysollib/main.py:375
msgid "" msgid ""
"Your Python installation is compiled without thread support.\n" "Your Python installation is compiled without thread support.\n"
"\n" "\n"
"Sounds and background music will be disabled." "Sounds and background music will be disabled."
msgstr "" msgstr ""
#: pysollib/main.py:380 #: pysollib/main.py:383
msgid "" msgid ""
"The pysolsoundserver module was not found.\n" "The pysolsoundserver module was not found.\n"
"\n" "\n"
"Sounds and background music will be disabled." "Sounds and background music will be disabled."
msgstr "" msgstr ""
#: pysollib/main.py:387 #: pysollib/main.py:390
msgid "Welcome to " msgid "Welcome to "
msgstr "" msgstr ""

View file

@ -5,8 +5,8 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PySol 0.0.1\n" "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: 2006-11-07 05:51+0300\n" "PO-Revision-Date: 2006-11-09 17:59+0300\n"
"Last-Translator: Скоморох <skomoroh@gmail.com>\n" "Last-Translator: Скоморох <skomoroh@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
@ -925,10 +925,10 @@ msgid "Elevator"
msgstr "Лифт" msgstr "Лифт"
msgid "Elevens" msgid "Elevens"
msgstr "Одиннадцать" msgstr "По одиннадцать"
msgid "Elevens Too" msgid "Elevens Too"
msgstr "Тоже Одиннадцать" msgstr "Тоже по одиннадцать"
msgid "Emperor" msgid "Emperor"
msgstr "Император" msgstr "Император"
@ -1003,6 +1003,9 @@ msgstr "Пасьянс Фатимы"
msgid "Fatimeh's Game Relaxed" msgid "Fatimeh's Game Relaxed"
msgstr "Облегчённый Пасьянс Фатимы" msgstr "Облегчённый Пасьянс Фатимы"
msgid "Fifteen"
msgstr "Пятнадцать"
#, fuzzy #, fuzzy
msgid "Fifteen Puzzle" msgid "Fifteen Puzzle"
msgstr "Пятнашки" msgstr "Пятнашки"
@ -1011,7 +1014,7 @@ msgid "Fifteen plus"
msgstr "Пятнадцать плюс" msgstr "Пятнадцать плюс"
msgid "Fifteens" msgid "Fifteens"
msgstr "Пятнадцать" msgstr "По пятнадцать"
msgid "Final Battle" msgid "Final Battle"
msgstr "Последняя битва" msgstr "Последняя битва"
@ -1414,6 +1417,9 @@ msgstr "Маджонг Inazuma"
msgid "Inca" msgid "Inca"
msgstr "Инка" msgstr "Инка"
msgid "Incompatibility"
msgstr "Несовместимость"
msgid "Indefatigable" msgid "Indefatigable"
msgstr "Неутомимый" msgstr "Неутомимый"
@ -1576,53 +1582,41 @@ msgstr "Гигант"
msgid "Kurma" msgid "Kurma"
msgstr "" msgstr ""
#, fuzzy
msgid "Kyodai 14" msgid "Kyodai 14"
msgstr "Маджонг Kyodai 14" msgstr "Kyodai 14"
#, fuzzy
msgid "Kyodai 17" msgid "Kyodai 17"
msgstr "Маджонг Kyodai 17" msgstr "Kyodai 17"
#, fuzzy
msgid "Kyodai 18" msgid "Kyodai 18"
msgstr "Маджонг Kyodai 18" msgstr "Kyodai 18"
#, fuzzy
msgid "Kyodai 20" msgid "Kyodai 20"
msgstr "Маджонг Kyodai 20" msgstr "Kyodai 20"
#, fuzzy
msgid "Kyodai 23" msgid "Kyodai 23"
msgstr "Маджонг Kyodai 23" msgstr "Kyodai 23"
#, fuzzy
msgid "Kyodai 24" msgid "Kyodai 24"
msgstr "Маджонг Kyodai 24" msgstr "Kyodai 24"
#, fuzzy
msgid "Kyodai 25" msgid "Kyodai 25"
msgstr "Маджонг Kyodai 25" msgstr "Kyodai 25"
#, fuzzy
msgid "Kyodai 26" msgid "Kyodai 26"
msgstr "Маджонг Kyodai 26" msgstr "Kyodai 26"
#, fuzzy
msgid "Kyodai 27" msgid "Kyodai 27"
msgstr "Маджонг Kyodai 27" msgstr "Kyodai 27"
#, fuzzy
msgid "Kyodai 28" msgid "Kyodai 28"
msgstr "Маджонг Kyodai 28" msgstr "Kyodai 28"
#, fuzzy
msgid "Kyodai 41" msgid "Kyodai 41"
msgstr "Маджонг Kyodai 4" msgstr "Kyodai 41"
#, fuzzy
msgid "Kyodai 42" msgid "Kyodai 42"
msgstr "Маджонг Kyodai 42" msgstr "Kyodai 42"
msgid "La Belle Lucie" msgid "La Belle Lucie"
msgstr "Прекрасная Люси" msgstr "Прекрасная Люси"
@ -1747,7 +1741,7 @@ msgid "Lucas"
msgstr "Лукас" msgstr "Лукас"
msgid "Lucky Piles" msgid "Lucky Piles"
msgstr "Счастливая ячейка" msgstr "Счастливые кучки"
msgid "Lucky Thirteen" msgid "Lucky Thirteen"
msgstr "Счастливые Тринадцать" msgstr "Счастливые Тринадцать"
@ -3023,6 +3017,9 @@ msgstr "Скорпион"
msgid "Scorpion Head" msgid "Scorpion Head"
msgstr "Голова скорпиона" msgstr "Голова скорпиона"
msgid "Scorpion II"
msgstr "Скорпион II"
msgid "Scorpion Tail" msgid "Scorpion Tail"
msgstr "Хвост скорпиона" msgstr "Хвост скорпиона"
@ -3039,7 +3036,7 @@ msgid "Sea Towers"
msgstr "Морские башни" msgstr "Морские башни"
msgid "Seahaven Towers" msgid "Seahaven Towers"
msgstr "" msgstr "Приморские башни"
msgid "Selective Castle" msgid "Selective Castle"
msgstr "Избирательный Замок" msgstr "Избирательный Замок"
@ -3075,7 +3072,7 @@ msgid "Shady Lanes"
msgstr "Тенистые аллеи" msgstr "Тенистые аллеи"
msgid "Shamrocks" msgid "Shamrocks"
msgstr "Трилистник" msgstr "Трилистники"
msgid "Shamsher" msgid "Shamsher"
msgstr "" msgstr ""
@ -3457,7 +3454,7 @@ msgid "Thirteen Up"
msgstr "Тринадцать вверх" msgstr "Тринадцать вверх"
msgid "Thirteens" msgid "Thirteens"
msgstr "Тринадцать" msgstr "По тринадцать"
msgid "Thirty Six" msgid "Thirty Six"
msgstr "Тридцать шесть" msgstr "Тридцать шесть"

View file

@ -5,7 +5,7 @@
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PySol 0.0.1\n" "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" "PO-Revision-Date: 2006-11-06 09:53+0300\n"
"Last-Translator: Скоморох <skomoroh@gmail.com>\n" "Last-Translator: Скоморох <skomoroh@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\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/actions.py:314 pysollib/app.py:892 pysollib/app.py:1155
#: pysollib/app.py:1167 pysollib/game.py:929 pysollib/game.py:1864 #: 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/edittextdialog.py:82 pysollib/tk/fontsdialog.py:143
#: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155 #: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155
#: pysollib/tk/playeroptionsdialog.py:85 #: pysollib/tk/playeroptionsdialog.py:85
@ -510,211 +510,211 @@ msgstr "Ошибка при сохранении игры"
msgid "Error while saving game" msgid "Error while saving game"
msgstr "Ошибка при сохранении игры" msgstr "Ошибка при сохранении игры"
#: pysollib/gamedb.py:120 #: pysollib/gamedb.py:121
msgid "Baker's Dozen" msgid "Baker's Dozen"
msgstr "" msgstr ""
#: pysollib/gamedb.py:121 #: pysollib/gamedb.py:122
msgid "Beleaguered Castle" msgid "Beleaguered Castle"
msgstr "" msgstr ""
#: pysollib/gamedb.py:122 #: pysollib/gamedb.py:123
msgid "Canfield" msgid "Canfield"
msgstr "" msgstr ""
#: pysollib/gamedb.py:123 #: pysollib/gamedb.py:124
msgid "Fan" msgid "Fan"
msgstr "" msgstr ""
#: pysollib/gamedb.py:124 #: pysollib/gamedb.py:125
msgid "Forty Thieves" msgid "Forty Thieves"
msgstr "" msgstr ""
#: pysollib/gamedb.py:125 #: pysollib/gamedb.py:126
msgid "FreeCell" msgid "FreeCell"
msgstr "" msgstr ""
#: pysollib/gamedb.py:126 #: pysollib/gamedb.py:127
msgid "Golf" msgid "Golf"
msgstr "" msgstr ""
#: pysollib/gamedb.py:127 #: pysollib/gamedb.py:128
msgid "Gypsy" msgid "Gypsy"
msgstr "" msgstr ""
#: pysollib/gamedb.py:128 #: pysollib/gamedb.py:129
msgid "Klondike" msgid "Klondike"
msgstr "" msgstr ""
#: pysollib/gamedb.py:129 #: pysollib/gamedb.py:130
msgid "Montana" msgid "Montana"
msgstr "" msgstr ""
#: pysollib/gamedb.py:130 #: pysollib/gamedb.py:131
msgid "Napoleon" msgid "Napoleon"
msgstr "" msgstr ""
#: pysollib/gamedb.py:131 #: pysollib/gamedb.py:132
msgid "Numerica" msgid "Numerica"
msgstr "" msgstr ""
#: pysollib/gamedb.py:132 #: pysollib/gamedb.py:133
msgid "Pairing" msgid "Pairing"
msgstr "" msgstr ""
#: pysollib/gamedb.py:133 #: pysollib/gamedb.py:134
msgid "Raglan" msgid "Raglan"
msgstr "" msgstr ""
#: pysollib/gamedb.py:134 pysollib/gamedb.py:167 #: pysollib/gamedb.py:135 pysollib/gamedb.py:168
msgid "Simple games" msgid "Simple games"
msgstr "Простые игры" msgstr "Простые игры"
#: pysollib/gamedb.py:135 #: pysollib/gamedb.py:136
msgid "Spider" msgid "Spider"
msgstr "" msgstr ""
#: pysollib/gamedb.py:136 #: pysollib/gamedb.py:137
msgid "Terrace" msgid "Terrace"
msgstr "" msgstr ""
#: pysollib/gamedb.py:137 #: pysollib/gamedb.py:138
msgid "Yukon" msgid "Yukon"
msgstr "" msgstr ""
#: pysollib/gamedb.py:138 pysollib/gamedb.py:171 #: pysollib/gamedb.py:139 pysollib/gamedb.py:172
msgid "One-Deck games" msgid "One-Deck games"
msgstr "Игры с одной колодой" msgstr "Игры с одной колодой"
#: pysollib/gamedb.py:139 pysollib/gamedb.py:172 #: pysollib/gamedb.py:140 pysollib/gamedb.py:173
msgid "Two-Deck games" msgid "Two-Deck games"
msgstr "Игры с двумя колодами" msgstr "Игры с двумя колодами"
#: pysollib/gamedb.py:140 pysollib/gamedb.py:173 #: pysollib/gamedb.py:141 pysollib/gamedb.py:174
msgid "Three-Deck games" msgid "Three-Deck games"
msgstr "Игры с тремя колодами" msgstr "Игры с тремя колодами"
#: pysollib/gamedb.py:141 pysollib/gamedb.py:174 #: pysollib/gamedb.py:142 pysollib/gamedb.py:175
msgid "Four-Deck games" msgid "Four-Deck games"
msgstr "Игры с четырьмя колодами" msgstr "Игры с четырьмя колодами"
#: pysollib/gamedb.py:153 #: pysollib/gamedb.py:154
msgid "Baker's Dozen type" msgid "Baker's Dozen type"
msgstr "Игры типа Чёртова Дюжина (Baker's Dozen)" msgstr "Игры типа Чёртова Дюжина (Baker's Dozen)"
#: pysollib/gamedb.py:154 #: pysollib/gamedb.py:155
msgid "Beleaguered Castle type" msgid "Beleaguered Castle type"
msgstr "Игры типа Осаждённый Замок (Beleaguered Castle)" msgstr "Игры типа Осаждённый Замок (Beleaguered Castle)"
#: pysollib/gamedb.py:155 #: pysollib/gamedb.py:156
msgid "Canfield type" msgid "Canfield type"
msgstr "Игры типа Кенфилд (Canfield)" msgstr "Игры типа Кенфилд (Canfield)"
#: pysollib/gamedb.py:156 #: pysollib/gamedb.py:157
msgid "Fan type" msgid "Fan type"
msgstr "Игры типа Веер (Fan)" msgstr "Игры типа Веер (Fan)"
#: pysollib/gamedb.py:157 #: pysollib/gamedb.py:158
msgid "Forty Thieves type" msgid "Forty Thieves type"
msgstr "Игры типа Сорок Воров (Forty Thieves)" msgstr "Игры типа Сорок Воров (Forty Thieves)"
#: pysollib/gamedb.py:158 #: pysollib/gamedb.py:159
msgid "FreeCell type" msgid "FreeCell type"
msgstr "Игры типа Свободная Ячейка (FreeCell)" msgstr "Игры типа Свободная Ячейка (FreeCell)"
#: pysollib/gamedb.py:159 #: pysollib/gamedb.py:160
msgid "Golf type" msgid "Golf type"
msgstr "Игры типа Гольф (Golf)" msgstr "Игры типа Гольф (Golf)"
#: pysollib/gamedb.py:160 #: pysollib/gamedb.py:161
msgid "Gypsy type" msgid "Gypsy type"
msgstr "Игры типа Цыганский Пасьянс (Gypsy)" msgstr "Игры типа Цыганский Пасьянс (Gypsy)"
#: pysollib/gamedb.py:161 #: pysollib/gamedb.py:162
msgid "Klondike type" msgid "Klondike type"
msgstr "Игры типа Клондайк (Klondike)" msgstr "Игры типа Клондайк (Klondike)"
#: pysollib/gamedb.py:162 #: pysollib/gamedb.py:163
msgid "Montana type" msgid "Montana type"
msgstr "Игры типа Монтана (Montana)" msgstr "Игры типа Монтана (Montana)"
#: pysollib/gamedb.py:163 #: pysollib/gamedb.py:164
msgid "Napoleon type" msgid "Napoleon type"
msgstr "Игры типа Наполеон (Napoleon)" msgstr "Игры типа Наполеон (Napoleon)"
#: pysollib/gamedb.py:164 #: pysollib/gamedb.py:165
msgid "Numerica type" msgid "Numerica type"
msgstr "Игры числового типа (Numerica)" msgstr "Игры числового типа (Numerica)"
#: pysollib/gamedb.py:165 #: pysollib/gamedb.py:166
msgid "Pairing type" msgid "Pairing type"
msgstr "Парные игры" msgstr "Парные игры"
#: pysollib/gamedb.py:166 #: pysollib/gamedb.py:167
msgid "Raglan type" msgid "Raglan type"
msgstr "Игры типа Реглан (Raglan)" msgstr "Игры типа Реглан (Raglan)"
#: pysollib/gamedb.py:168 #: pysollib/gamedb.py:169
msgid "Spider type" msgid "Spider type"
msgstr "Игры типа Паук (Spider)" msgstr "Игры типа Паук (Spider)"
#: pysollib/gamedb.py:169 #: pysollib/gamedb.py:170
msgid "Terrace type" msgid "Terrace type"
msgstr "Игры типа Терраса (Terrace)" msgstr "Игры типа Терраса (Terrace)"
#: pysollib/gamedb.py:170 #: pysollib/gamedb.py:171
msgid "Yukon type" msgid "Yukon type"
msgstr "Игры типа Юкон (Yukon)" msgstr "Игры типа Юкон (Yukon)"
#: pysollib/gamedb.py:178 pysollib/gamedb.py:186 #: pysollib/gamedb.py:179 pysollib/gamedb.py:187
msgid "French type" msgid "French type"
msgstr "Классические" 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" msgid "Ganjifa type"
msgstr "Игры типа Ганджифа" 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" msgid "Hanafuda type"
msgstr "Игры типа Ханафуда" 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" msgid "Hex A Deck type"
msgstr "Игры типа Hex A Deck" 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" msgid "Tarock type"
msgstr "Таро" msgstr "Таро"
#: pysollib/gamedb.py:194 #: pysollib/gamedb.py:195
msgid "Dashavatara Ganjifa type" msgid "Dashavatara Ganjifa type"
msgstr "Игры типа Дашаватара Ганджифа" msgstr "Игры типа Дашаватара Ганджифа"
#: pysollib/gamedb.py:197 #: pysollib/gamedb.py:198
msgid "Mughal Ganjifa type" msgid "Mughal Ganjifa type"
msgstr "Игры типа Мугал Ганджифа" msgstr "Игры типа Мугал Ганджифа"
#: pysollib/gamedb.py:198 #: pysollib/gamedb.py:199
msgid "Navagraha Ganjifa type" msgid "Navagraha Ganjifa type"
msgstr "Игры типа Наваграха Ганджифа" msgstr "Игры типа Наваграха Ганджифа"
#: pysollib/gamedb.py:202 #: pysollib/gamedb.py:203
msgid "Shisen-Sho" msgid "Shisen-Sho"
msgstr "Шисен-Сё" msgstr "Шисен-Сё"
#: pysollib/gamedb.py:204 #: pysollib/gamedb.py:205
msgid "Matrix type" msgid "Matrix type"
msgstr "Мозаика" msgstr "Мозаика"
#: pysollib/gamedb.py:205 #: pysollib/gamedb.py:206
msgid "Memory type" msgid "Memory type"
msgstr "Игры на запоминание" msgstr "Игры на запоминание"
#: pysollib/gamedb.py:206 #: pysollib/gamedb.py:207
msgid "Poker type" msgid "Poker type"
msgstr "Покер" msgstr "Покер"
#: pysollib/gamedb.py:207 #: pysollib/gamedb.py:208
msgid "Puzzle type" msgid "Puzzle type"
msgstr "Пазлы" msgstr "Пазлы"
@ -1331,11 +1331,11 @@ msgstr "Не найден файл помощи\n"
msgid " Help" msgid " Help"
msgstr " Помощь" msgstr " Помощь"
#: pysollib/main.py:67 pysollib/main.py:284 #: pysollib/main.py:68 pysollib/main.py:287
msgid " installation error" msgid " installation error"
msgstr " проблема с установкой" msgstr " проблема с установкой"
#: pysollib/main.py:68 #: pysollib/main.py:69
msgid "" msgid ""
"No %ss were found !!!\n" "No %ss were found !!!\n"
"\n" "\n"
@ -1345,11 +1345,11 @@ msgid ""
"Please check your %s installation.\n" "Please check your %s installation.\n"
msgstr "" 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" msgid "&Quit"
msgstr "В&ыход" msgstr "В&ыход"
#: pysollib/main.py:99 #: pysollib/main.py:100
msgid "" msgid ""
"%s: %s\n" "%s: %s\n"
"try %s --help for more information" "try %s --help for more information"
@ -1357,7 +1357,7 @@ msgstr ""
"%s: %s\n" "%s: %s\n"
"попробуйте %s --help для получения более подробной информации" "попробуйте %s --help для получения более подробной информации"
#: pysollib/main.py:143 #: pysollib/main.py:147
msgid "" msgid ""
"Usage: %s [OPTIONS] [FILE]\n" "Usage: %s [OPTIONS] [FILE]\n"
" -g --game=GAMENAME start game GAMENAME\n" " -g --game=GAMENAME start game GAMENAME\n"
@ -1389,7 +1389,7 @@ msgstr ""
" FILE - имя файла сохранённой игры\n" " FILE - имя файла сохранённой игры\n"
" MOD - one of following: pss(default), pygame, oss, win\n" " MOD - one of following: pss(default), pygame, oss, win\n"
#: pysollib/main.py:161 #: pysollib/main.py:165
msgid "" msgid ""
"%s: too many files\n" "%s: too many files\n"
"try %s --help for more information" "try %s --help for more information"
@ -1397,7 +1397,7 @@ msgstr ""
"\"%s: слишком много файлов\n" "\"%s: слишком много файлов\n"
"попробуйте %s --help для получения более подробной информации" "попробуйте %s --help для получения более подробной информации"
#: pysollib/main.py:165 #: pysollib/main.py:169
msgid "" msgid ""
"%s: invalid file name\n" "%s: invalid file name\n"
"try %s --help for more information" "try %s --help for more information"
@ -1405,7 +1405,7 @@ msgstr ""
"%s: неправильное имя файла\n" "%s: неправильное имя файла\n"
"попробуйте %s --help для получения более подробной информации" "попробуйте %s --help для получения более подробной информации"
#: pysollib/main.py:285 #: pysollib/main.py:288
msgid "" msgid ""
"\n" "\n"
"No games were found !!!\n" "No games were found !!!\n"
@ -1416,18 +1416,18 @@ msgid ""
"Please check your %s installation.\n" "Please check your %s installation.\n"
msgstr "" msgstr ""
#: pysollib/main.py:371 pysollib/main.py:379 #: pysollib/main.py:374 pysollib/main.py:382
msgid " installation problem" msgid " installation problem"
msgstr "" msgstr ""
#: pysollib/main.py:372 #: pysollib/main.py:375
msgid "" msgid ""
"Your Python installation is compiled without thread support.\n" "Your Python installation is compiled without thread support.\n"
"\n" "\n"
"Sounds and background music will be disabled." "Sounds and background music will be disabled."
msgstr "" msgstr ""
#: pysollib/main.py:380 #: pysollib/main.py:383
msgid "" msgid ""
"The pysolsoundserver module was not found.\n" "The pysolsoundserver module was not found.\n"
"\n" "\n"
@ -1437,7 +1437,7 @@ msgstr ""
"\n" "\n"
"Звук и фоновая музыка будут недоступны" "Звук и фоновая музыка будут недоступны"
#: pysollib/main.py:387 #: pysollib/main.py:390
msgid "Welcome to " msgid "Welcome to "
msgstr "Добро пожаловать в " msgstr "Добро пожаловать в "

View file

@ -853,6 +853,7 @@ class Application:
self.top.busyUpdate() self.top.busyUpdate()
def loadImages1(self): def loadImages1(self):
# load dialog images
dir = os.path.join("images", "logos") dir = os.path.join("images", "logos")
for f in ("joker07_40_774", for f in ("joker07_40_774",
"joker08_40_774", "joker08_40_774",
@ -861,12 +862,33 @@ class Application:
"joker11_100_774", "joker11_100_774",
"joker10_100",): "joker10_100",):
self.gimages.logos.append(self.dataloader.findImage(f, dir)) 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" dir = "images"
##for f in ("noredeal", "redeal",): ##for f in ("noredeal", "redeal",):
for f in ("stopsign", "redeal",): for f in ("stopsign", "redeal",):
self.gimages.redeal.append(self.dataloader.findImage(f, dir)) self.gimages.redeal.append(self.dataloader.findImage(f, dir))
def loadImages2(self):
dir = os.path.join("images", "demo") dir = os.path.join("images", "demo")
for f in ("demo01", "demo02", "demo03", "demo04", "demo05",): for f in ("demo01", "demo02", "demo03", "demo04", "demo05",):
self.gimages.demo.append(self.dataloader.findImage(f, dir)) self.gimages.demo.append(self.dataloader.findImage(f, dir))
@ -878,32 +900,16 @@ class Application:
## self.gimages.stats.append(self.dataloader.findImage(f, dir)) ## self.gimages.stats.append(self.dataloader.findImage(f, dir))
def loadImages3(self): def loadImages3(self):
if os.name == 'posix': # load treeview images
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
SelectDialogTreeData.img = [] SelectDialogTreeData.img = []
dir = os.path.join('images', 'tree') dir = os.path.join('images', 'tree')
for f in ('folder', 'openfolder', 'node', 'emptynode'): for f in ('folder', 'openfolder', 'node', 'emptynode'):
fn = self.dataloader.findImage(f, dir) fn = self.dataloader.findImage(f, dir)
im = loadImage(fn) im = loadImage(fn)
SelectDialogTreeData.img.append(im) SelectDialogTreeData.img.append(im)
# load htmlviewer images
dir = os.path.join('images', 'htmlviewer') dir = os.path.join('images', 'htmlviewer')
#
fn = self.dataloader.findImage('disk', dir) fn = self.dataloader.findImage('disk', dir)
HTMLViewer.symbols_fn['disk'] = fn HTMLViewer.symbols_fn['disk'] = fn

View file

@ -48,16 +48,16 @@ class Capricieuse(Game):
# game layout # game layout
# #
def createGame(self, **layout): def createGame(self, rows=12):
# create layout # create layout
l, s = Layout(self), self.s l, s = Layout(self), self.s
# set window # 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 # 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): for i in range(4):
s.foundations.append(SS_FoundationStack(x, y, self, suit=i)) s.foundations.append(SS_FoundationStack(x, y, self, suit=i))
x = x + l.XS x = x + l.XS
@ -66,7 +66,7 @@ class Capricieuse(Game):
base_rank=KING, dir=-1)) base_rank=KING, dir=-1))
x = x + l.XS x = x + l.XS
x, y, = l.XM, y + l.YS 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, s.rows.append(self.RowStack_Class(x, y, self,
max_move=1, max_accept=1)) max_move=1, max_accept=1))
x = x + l.XS x = x + l.XS
@ -114,7 +114,7 @@ class Nationale(Capricieuse):
class Strata(Game): class Strata(Game):
def createGame(self, **layout): def createGame(self):
# create layout # create layout
l, s = Layout(self), self.s l, s = Layout(self), self.s
@ -150,6 +150,27 @@ class Strata(Game):
shallHighlightMatch = Game._shallHighlightMatch_AC 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 # register the game
registerGame(GameInfo(292, Capricieuse, "Capricieuse", registerGame(GameInfo(292, Capricieuse, "Capricieuse",
GI.GT_BAKERS_DOZEN | GI.GT_OPEN, 2, 2, GI.SL_MOSTLY_SKILL)) 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", registerGame(GameInfo(606, Strata, "Strata",
GI.GT_BAKERS_DOZEN | GI.GT_OPEN, 2, 2, GI.SL_MOSTLY_SKILL, GI.GT_BAKERS_DOZEN | GI.GT_OPEN, 2, 2, GI.SL_MOSTLY_SKILL,
ranks=(0, 6, 7, 8, 9, 10, 11, 12) )) 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))

View file

@ -1081,6 +1081,39 @@ class ShortTail(LongTail):
LongTail.createGame(self, rows=8, playcards=24) 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 # register the game
registerGame(GameInfo(10, RelaxedSpider, "Relaxed Spider", registerGame(GameInfo(10, RelaxedSpider, "Relaxed Spider",
GI.GT_SPIDER | GI.GT_RELAXED, 2, 0, GI.SL_MOSTLY_SKILL)) 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", registerGame(GameInfo(670, ChineseSpider, "Chinese Spider",
GI.GT_SPIDER, 4, 0, GI.SL_MOSTLY_SKILL, GI.GT_SPIDER, 4, 0, GI.SL_MOSTLY_SKILL,
suits=(0, 1, 2),)) 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))

View file

@ -35,27 +35,26 @@
# imports # imports
import sys, os, locale import sys, os
import traceback import traceback
import getopt import getopt
import gettext
# PySol imports # PySol imports
from mfxutil import destruct, EnvError from mfxutil import destruct, EnvError
from util import CARDSET, DataLoader from util import CARDSET, DataLoader
import settings
from settings import PACKAGE, TOOLKIT, VERSION, SOUND_MOD
from resource import Tile from resource import Tile
from gamedb import GI from gamedb import GI
from app import Application from app import Application
from pysolaudio import thread, pysolsoundserver from pysolaudio import thread, pysolsoundserver
from pysolaudio import AbstractAudioClient, PysolSoundServerModuleClient from pysolaudio import AbstractAudioClient, PysolSoundServerModuleClient
from pysolaudio import Win32AudioClient, OSSAudioClient, PyGameAudioClient from pysolaudio import Win32AudioClient, OSSAudioClient, PyGameAudioClient
import settings
PACKAGE, SOUND_MOD = settings.PACKAGE, settings.SOUND_MOD
# Toolkit imports # Toolkit imports
from pysoltk import tkversion, wm_withdraw, loadImage from pysoltk import wm_withdraw, loadImage
from pysoltk import MfxMessageDialog, MfxExceptionDialog from pysoltk import MfxMessageDialog, MfxExceptionDialog
from pysoltk import TclError, MfxRoot from pysoltk import MfxRoot
from pysoltk import PysolProgressBar from pysoltk import PysolProgressBar
@ -97,21 +96,21 @@ def parse_option(argv):
"sound-mod=", "sound-mod=",
"help"]) "help"])
except getopt.GetoptError, err: 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) % (prog_name, err, prog_name)
return None return None
opts = {"help": False, opts = {"help" : False,
"game": None, "game" : None,
"gameid": None, "gameid" : None,
"fg": None, "fg" : None,
"bg": None, "bg" : None,
"fn": None, "fn" : None,
"theme": None, "theme" : None,
"french-only": False, "french-only" : False,
"noplugins": False, "noplugins" : False,
"nosound": False, "nosound" : False,
"sound-mod": None, "sound-mod" : None,
"debug": None, "debug" : None,
} }
for i in optlist: for i in optlist:
if i[0] in ("-h", "--help"): if i[0] in ("-h", "--help"):
@ -162,11 +161,11 @@ def parse_option(argv):
return None return None
if len(args) > 1: 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 return None
filename = args and args[0] or None filename = args and args[0] or None
if filename and not os.path.isfile(filename): 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 None
return opts, filename return opts, filename
@ -332,7 +331,7 @@ Please check your %s installation.
if not app.audio.CAN_PLAY_SOUND: if not app.audio.CAN_PLAY_SOUND:
app.opt.sound = 0 app.opt.sound = 0
if not opts["nosound"] and not opts['sound-mod'] and pysolsoundserver and not app.audio.connected: 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 warn_pysolsoundserver = 1
app.audio.updateSettings() app.audio.updateSettings()
# start up the background music # start up the background music
@ -364,9 +363,9 @@ Please check your %s installation.
if thread is None: if thread is None:
warn_thread = 1 warn_thread = 1
if thread is None: 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: else:
print PACKAGE + ": pysolsoundserver module not found, sound disabled." print >> sys.stderr, PACKAGE+": pysolsoundserver module not found, sound disabled."
sys.stdout.flush() sys.stdout.flush()
if not opts["nosound"]: if not opts["nosound"]:
if warn_thread: if warn_thread:
@ -415,39 +414,10 @@ Sounds and background music will be disabled.'''),
# /*********************************************************************** # /***********************************************************************
# // # // main
# ************************************************************************/ # ************************************************************************/
def pysol_exit(app): def main(args=None):
# 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):
# create the application # create the application
app = Application() app = Application()
r = pysol_init(app, args) r = pysol_init(app, args)
@ -455,63 +425,4 @@ def pysol_main(args):
return r return r
# let's go - enter the mainloop # let's go - enter the mainloop
app.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 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)

View file

@ -320,90 +320,6 @@ def unpickle(filename):
return obj 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
# /*********************************************************************** # /***********************************************************************
# // # //
# ************************************************************************/ # ************************************************************************/

View file

@ -41,7 +41,7 @@ import Tile as Tkinter
import traceback import traceback
# PySol imports # 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.settings import PACKAGE
from pysollib.pysolaudio import pysolsoundserver from pysollib.pysolaudio import pysolsoundserver

View file

@ -496,7 +496,8 @@ to open the following URL:
def errorDialog(self, msg): def errorDialog(self, msg):
d = MfxMessageDialog(self.parent, title=PACKAGE+" HTML Problem", 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) strings=(_("&OK"),), default=0)
def getImage(self, fn): def getImage(self, fn):

View file

@ -41,7 +41,7 @@ import Tkinter
import traceback import traceback
# PySol imports # 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.settings import PACKAGE
from pysollib.pysolaudio import pysolsoundserver from pysollib.pysolaudio import pysolsoundserver

View file

@ -495,7 +495,8 @@ to open the following URL:
def errorDialog(self, msg): def errorDialog(self, msg):
d = MfxMessageDialog(self.parent, title=PACKAGE+" HTML Problem", 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) strings=(_("&OK"),), default=0)
def getImage(self, fn): def getImage(self, fn):