diff --git a/html-src/rules/mainecoon.html b/html-src/rules/mainecoon.html
new file mode 100644
index 00000000..a08b8006
--- /dev/null
+++ b/html-src/rules/mainecoon.html
@@ -0,0 +1,12 @@
+
Maine Coon
+
+Two-Deck game type. 2 decks. No redeal.
+
+
Object
+
+Move all cards to the foundation.
+
+
Rules
+
+Like Tabby Cat, but with 2 decks and 8
+foundations.
diff --git a/html-src/rules/manx.html b/html-src/rules/manx.html
new file mode 100644
index 00000000..22fcdce2
--- /dev/null
+++ b/html-src/rules/manx.html
@@ -0,0 +1,12 @@
+
Manx
+
+One-Deck game type. 1 deck. No redeal.
+
+
Object
+
+Move all cards to the foundation.
+
+
Rules
+
+Like Tabby Cat, but the reserve may hold
+only a single card.
diff --git a/html-src/rules/tabbycat.html b/html-src/rules/tabbycat.html
new file mode 100644
index 00000000..c84badc3
--- /dev/null
+++ b/html-src/rules/tabbycat.html
@@ -0,0 +1,19 @@
+
Tabby Cat
+
+One-Deck game type. 1 deck. No redeal.
+
+
Object
+
+Move all cards to the foundation.
+
+
Rules
+
+Foundations are built up from Ace to King, regardless of suit. One
+must move an entire Ace-to-King sequence to a foundation as one move.
+
+The playing piles build down by rank, regardless of suit. A king may
+be played on an ace.. An empty pile can receive any card, or
+sequence.
+
+When no more moves are possible, click on the talon. One card will be
+added to each of the playing piles.
diff --git a/po/games.pot b/po/games.pot
index 8218c7db..a54c50b4 100644
--- a/po/games.pot
+++ b/po/games.pot
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PySol 0.0.1\n"
-"POT-Creation-Date: Sat Sep 1 22:26:18 2007\n"
+"POT-Creation-Date: Wed Sep 5 17:37:12 2007\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -2418,6 +2418,9 @@ msgstr ""
msgid "Mahjongg Yummy"
msgstr ""
+msgid "Maine Coon"
+msgstr ""
+
msgid "Makara"
msgstr ""
@@ -2427,6 +2430,9 @@ msgstr ""
msgid "Mancunian"
msgstr ""
+msgid "Manx"
+msgstr ""
+
msgid "Maria"
msgstr ""
@@ -3507,6 +3513,9 @@ msgstr ""
msgid "Sweet Sixteen"
msgstr ""
+msgid "Tabby Cat"
+msgstr ""
+
msgid "Taipei"
msgstr ""
diff --git a/po/pysol.pot b/po/pysol.pot
index df43fcf6..021bb338 100644
--- a/po/pysol.pot
+++ b/po/pysol.pot
@@ -14,7 +14,7 @@ msgid ""
msgstr ""
"#-#-#-#-# pysol-1.pot (PACKAGE VERSION) #-#-#-#-#\n"
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: Sat Sep 1 22:27:31 2007\n"
+"POT-Creation-Date: Wed Sep 5 17:38:29 2007\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -24,7 +24,7 @@ msgstr ""
"Generated-By: pygettext.py 1.6con\n"
"#-#-#-#-# pysol-2.pot (PACKAGE VERSION) #-#-#-#-#\n"
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2007-09-01 22:27+0400\n"
+"POT-Creation-Date: 2007-09-05 17:38+0400\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -762,13 +762,13 @@ msgid ""
msgstr ""
#: pysollib/games/canfield.py:544 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1568 pysollib/util.py:78 pysollib/wizardutil.py:158
+#: pysollib/stack.py:1569 pysollib/util.py:78 pysollib/wizardutil.py:158
#: pysollib/wizardutil.py:216
msgid "King"
msgstr ""
#: pysollib/games/canfield.py:549 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1567 pysollib/util.py:78
+#: pysollib/stack.py:1568 pysollib/util.py:78
msgid "Queen"
msgstr ""
@@ -793,12 +793,12 @@ msgid "Waste. Build up or down regardless of suit."
msgstr ""
#: pysollib/games/golf.py:117 pysollib/games/golf.py:305
-#: pysollib/stack.py:2321
+#: pysollib/stack.py:2330
msgid "Tableau. No building."
msgstr ""
#: pysollib/games/golf.py:390 pysollib/games/pileon.py:255
-#: pysollib/stack.py:2210
+#: pysollib/stack.py:2211
msgid "Foundation. Build up regardless of suit."
msgstr ""
@@ -812,11 +812,11 @@ msgid ""
"moved as a unit."
msgstr ""
-#: pysollib/games/klondike.py:449
+#: pysollib/games/klondike.py:450
msgid "Reserve. Only Kings are acceptable."
msgstr ""
-#: pysollib/games/larasgame.py:163 pysollib/stack.py:1781
+#: pysollib/games/larasgame.py:163 pysollib/stack.py:1782
msgid "Round %d"
msgstr ""
@@ -890,7 +890,7 @@ msgid "Deal %d"
msgstr ""
#: pysollib/games/numerica.py:263 pysollib/games/royalcotillion.py:912
-#: pysollib/stack.py:2253
+#: pysollib/stack.py:2254
msgid "Foundation. Build up by color."
msgstr ""
@@ -956,7 +956,7 @@ msgstr ""
#: pysollib/games/special/tarock.py:223
#: pysollib/games/ultra/dashavatara.py:351
#: pysollib/games/ultra/hexadeck.py:273 pysollib/games/ultra/mughal.py:254
-#: pysollib/stack.py:1569 pysollib/util.py:77 pysollib/wizardutil.py:157
+#: pysollib/stack.py:1570 pysollib/util.py:77 pysollib/wizardutil.py:157
#: pysollib/wizardutil.py:161 pysollib/wizardutil.py:215
msgid "Ace"
msgstr ""
@@ -1299,10 +1299,9 @@ msgid ""
"PySol Fan Club edition\n"
"%s%s\n"
"\n"
-"Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003\n"
-"Markus F.X.J. Oberhumer\n"
+"Copyright (C) 1998 - 2003 Markus F.X.J. Oberhumer.\n"
"Copyright (C) 2003 Mt. Hood Playing Card Co.\n"
-"Copyright (C) 2005 Skomoroh\n"
+"Copyright (C) 2005 - 2007 Skomoroh.\n"
"All Rights Reserved.\n"
"\n"
"PySol is free software distributed under the terms\n"
@@ -1311,11 +1310,11 @@ msgid ""
"For more information about this application visit"
msgstr ""
-#: pysollib/help.py:93
+#: pysollib/help.py:92
msgid "Credits"
msgstr ""
-#: pysollib/help.py:94
+#: pysollib/help.py:93
msgid ""
" credits go to:\n"
"\n"
@@ -1330,15 +1329,15 @@ msgid ""
"for making this program possible"
msgstr ""
-#: pysollib/help.py:129
+#: pysollib/help.py:128
msgid " HTML Problem"
msgstr ""
-#: pysollib/help.py:130
+#: pysollib/help.py:129
msgid "Cannot find help document\n"
msgstr ""
-#: pysollib/help.py:143
+#: pysollib/help.py:142
msgid " Help"
msgstr ""
@@ -1685,221 +1684,221 @@ msgstr ""
msgid "Top 10"
msgstr ""
-#: pysollib/stack.py:1563
+#: pysollib/stack.py:1564
msgid "Base card - %s."
msgstr ""
-#: pysollib/stack.py:1564
+#: pysollib/stack.py:1565
msgid "Empty row cannot be filled."
msgstr ""
-#: pysollib/stack.py:1565
+#: pysollib/stack.py:1566
msgid "any card"
msgstr ""
-#: pysollib/stack.py:1566 pysollib/util.py:78
+#: pysollib/stack.py:1567 pysollib/util.py:78
msgid "Jack"
msgstr ""
-#: pysollib/stack.py:1576
+#: pysollib/stack.py:1577
msgid "No cards"
msgstr ""
-#: pysollib/stack.py:1577
+#: pysollib/stack.py:1578
msgid "%d card"
msgid_plural "%d cards"
msgstr[0] ""
msgstr[1] ""
-#: pysollib/stack.py:1790 pysollib/stack.py:1792 pysollib/stack.py:1828
+#: pysollib/stack.py:1791 pysollib/stack.py:1793 pysollib/stack.py:1829
msgid "Redeal"
msgstr ""
-#: pysollib/stack.py:1792
+#: pysollib/stack.py:1793
msgid "Stop"
msgstr ""
-#: pysollib/stack.py:1853
+#: pysollib/stack.py:1854
msgid "Variable redeals."
msgstr ""
-#: pysollib/stack.py:1854
+#: pysollib/stack.py:1855
msgid "Unlimited redeals."
msgstr ""
-#: pysollib/stack.py:1857
+#: pysollib/stack.py:1858
msgid "%d readeal"
msgid_plural "%d redeals"
msgstr[0] ""
msgstr[1] ""
-#: pysollib/stack.py:1859
+#: pysollib/stack.py:1860
msgid "Talon."
msgstr ""
-#: pysollib/stack.py:2124 pysollib/stack.py:2767
+#: pysollib/stack.py:2125 pysollib/stack.py:2776
msgid "Reserve. No building."
msgstr ""
-#: pysollib/stack.py:2161
+#: pysollib/stack.py:2162
msgid "Foundation."
msgstr ""
-#: pysollib/stack.py:2199
+#: pysollib/stack.py:2200
msgid "Foundation. Build up by suit."
msgstr ""
-#: pysollib/stack.py:2200
+#: pysollib/stack.py:2201
msgid "Foundation. Build down by suit."
msgstr ""
-#: pysollib/stack.py:2201 pysollib/stack.py:2212 pysollib/stack.py:2234
-#: pysollib/stack.py:2255
+#: pysollib/stack.py:2202 pysollib/stack.py:2213 pysollib/stack.py:2235
+#: pysollib/stack.py:2256
msgid "Foundation. Build by same rank."
msgstr ""
-#: pysollib/stack.py:2211
+#: pysollib/stack.py:2212
msgid "Foundation. Build down regardless of suit."
msgstr ""
-#: pysollib/stack.py:2232
+#: pysollib/stack.py:2233
msgid "Foundation. Build up by alternate color."
msgstr ""
-#: pysollib/stack.py:2233
+#: pysollib/stack.py:2234
msgid "Foundation. Build down by alternate color."
msgstr ""
-#: pysollib/stack.py:2254
+#: pysollib/stack.py:2255
msgid "Foundation. Build down by color."
msgstr ""
-#: pysollib/stack.py:2363
+#: pysollib/stack.py:2372
msgid "Tableau. Build up by alternate color."
msgstr ""
-#: pysollib/stack.py:2364
+#: pysollib/stack.py:2373
msgid "Tableau. Build down by alternate color."
msgstr ""
-#: pysollib/stack.py:2365 pysollib/stack.py:2375 pysollib/stack.py:2384
-#: pysollib/stack.py:2393 pysollib/stack.py:2403 pysollib/stack.py:2432
-#: pysollib/stack.py:2442
+#: pysollib/stack.py:2374 pysollib/stack.py:2384 pysollib/stack.py:2393
+#: pysollib/stack.py:2402 pysollib/stack.py:2412 pysollib/stack.py:2441
+#: pysollib/stack.py:2451
msgid "Tableau. Build by same rank."
msgstr ""
-#: pysollib/stack.py:2373
+#: pysollib/stack.py:2382
msgid "Tableau. Build up by color."
msgstr ""
-#: pysollib/stack.py:2374
+#: pysollib/stack.py:2383
msgid "Tableau. Build down by color."
msgstr ""
-#: pysollib/stack.py:2382
+#: pysollib/stack.py:2391
msgid "Tableau. Build up by suit."
msgstr ""
-#: pysollib/stack.py:2383
+#: pysollib/stack.py:2392
msgid "Tableau. Build down by suit."
msgstr ""
-#: pysollib/stack.py:2391
+#: pysollib/stack.py:2400
msgid "Tableau. Build up regardless of suit."
msgstr ""
-#: pysollib/stack.py:2392
+#: pysollib/stack.py:2401
msgid "Tableau. Build down regardless of suit."
msgstr ""
-#: pysollib/stack.py:2401
+#: pysollib/stack.py:2410
msgid "Tableau. Build up in any suit but the same."
msgstr ""
-#: pysollib/stack.py:2402
+#: pysollib/stack.py:2411
msgid "Tableau. Build down in any suit but the same."
msgstr ""
-#: pysollib/stack.py:2430
+#: pysollib/stack.py:2439
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in alternate color "
"can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2431
+#: pysollib/stack.py:2440
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in alternate "
"color can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2440
+#: pysollib/stack.py:2449
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2441
+#: pysollib/stack.py:2450
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2463
+#: pysollib/stack.py:2472
msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless "
"of sequence."
msgstr ""
-#: pysollib/stack.py:2464
+#: pysollib/stack.py:2473
msgid ""
"Tableau. Build down by alternate color, can move any face-up cards "
"regardless of sequence."
msgstr ""
-#: pysollib/stack.py:2465 pysollib/stack.py:2478 pysollib/stack.py:2488
+#: pysollib/stack.py:2474 pysollib/stack.py:2487 pysollib/stack.py:2497
msgid ""
"Tableau. Build by same rank, can move any face-up cards regardless of "
"sequence."
msgstr ""
-#: pysollib/stack.py:2476
+#: pysollib/stack.py:2485
msgid ""
"Tableau. Build up by suit, can move any face-up cards regardless of sequence."
msgstr ""
-#: pysollib/stack.py:2477
+#: pysollib/stack.py:2486
msgid ""
"Tableau. Build down by suit, can move any face-up cards regardless of "
"sequence."
msgstr ""
-#: pysollib/stack.py:2486 pysollib/stack.py:2487
+#: pysollib/stack.py:2495 pysollib/stack.py:2496
msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless "
"of sequence."
msgstr ""
-#: pysollib/stack.py:2520
+#: pysollib/stack.py:2529
msgid "Tableau. Build up or down by color."
msgstr ""
-#: pysollib/stack.py:2531
+#: pysollib/stack.py:2540
msgid "Tableau. Build up or down by alternate color."
msgstr ""
-#: pysollib/stack.py:2542
+#: pysollib/stack.py:2551
msgid "Tableau. Build up or down by suit."
msgstr ""
-#: pysollib/stack.py:2553
+#: pysollib/stack.py:2562
msgid "Tableau. Build up or down regardless of suit."
msgstr ""
-#: pysollib/stack.py:2652
+#: pysollib/stack.py:2661
msgid "Waste."
msgstr ""
-#: pysollib/stack.py:2768
+#: pysollib/stack.py:2777
msgid "Free cell."
msgstr ""
diff --git a/po/ru_games.po b/po/ru_games.po
index 7e9a3c84..baf0cbd7 100644
--- a/po/ru_games.po
+++ b/po/ru_games.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PySol 0.0.1\n"
-"POT-Creation-Date: Sat Sep 1 22:26:18 2007\n"
-"PO-Revision-Date: 2007-09-02 22:22+0400\n"
+"POT-Creation-Date: Wed Sep 5 17:37:12 2007\n"
+"PO-Revision-Date: 2007-09-05 17:43+0400\n"
"Last-Translator: Скоморох \n"
"Language-Team: Russian \n"
"MIME-Version: 1.0\n"
@@ -2434,6 +2434,10 @@ msgstr "Маджонг X-Shape"
msgid "Mahjongg Yummy"
msgstr "Маджонг Приятный"
+#, fuzzy
+msgid "Maine Coon"
+msgstr "Луна на ущербе"
+
#, fuzzy
msgid "Makara"
msgstr "Мария"
@@ -2444,6 +2448,9 @@ msgstr "Мамочка Сюзи"
msgid "Mancunian"
msgstr "Манчестерский"
+msgid "Manx"
+msgstr "Бесхвостая кошка"
+
msgid "Maria"
msgstr "Мария"
@@ -3542,6 +3549,9 @@ msgstr ""
msgid "Sweet Sixteen"
msgstr "Приятные шестнадцать"
+msgid "Tabby Cat"
+msgstr "Полосатая кошка"
+
msgid "Taipei"
msgstr "Тайпей"
diff --git a/po/ru_pysol.po b/po/ru_pysol.po
index 8c858a38..56f98333 100644
--- a/po/ru_pysol.po
+++ b/po/ru_pysol.po
@@ -5,7 +5,7 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: Sat Sep 1 22:27:31 2007\n"
+"POT-Creation-Date: Wed Sep 5 17:38:29 2007\n"
"PO-Revision-Date: 2007-09-01 23:16+0400\n"
"Last-Translator: Skomoroh \n"
"Language-Team: Russian \n"
@@ -821,13 +821,13 @@ msgstr ""
"4: 8 Д 3 7 В 2 6 10 Т 5 9 К"
#: pysollib/games/canfield.py:544 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1568 pysollib/util.py:78 pysollib/wizardutil.py:158
+#: pysollib/stack.py:1569 pysollib/util.py:78 pysollib/wizardutil.py:158
#: pysollib/wizardutil.py:216
msgid "King"
msgstr "Король"
#: pysollib/games/canfield.py:549 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1567 pysollib/util.py:78
+#: pysollib/stack.py:1568 pysollib/util.py:78
msgid "Queen"
msgstr "Дама"
@@ -853,12 +853,12 @@ msgid "Waste. Build up or down regardless of suit."
msgstr "Сброс. Складывать по возрастанию или убыванию не считаясь с мастью."
#: pysollib/games/golf.py:117 pysollib/games/golf.py:305
-#: pysollib/stack.py:2321
+#: pysollib/stack.py:2330
msgid "Tableau. No building."
msgstr "Игровой стол. Без выкладывания."
#: pysollib/games/golf.py:390 pysollib/games/pileon.py:255
-#: pysollib/stack.py:2210
+#: pysollib/stack.py:2211
msgid "Foundation. Build up regardless of suit."
msgstr "Базовая ячейка. Складывать по возрастанию не считаясь с мастью."
@@ -874,11 +874,11 @@ msgstr ""
"Игровой стол. Складывать по убыванию в соответствии с цветом. Можно "
"перемещать серии карт одинаковой масти."
-#: pysollib/games/klondike.py:449
+#: pysollib/games/klondike.py:450
msgid "Reserve. Only Kings are acceptable."
msgstr "Резерв. Только для королей."
-#: pysollib/games/larasgame.py:163 pysollib/stack.py:1781
+#: pysollib/games/larasgame.py:163 pysollib/stack.py:1782
msgid "Round %d"
msgstr "Раунд %d"
@@ -993,7 +993,7 @@ msgid "Deal %d"
msgstr "Сдача %d"
#: pysollib/games/numerica.py:263 pysollib/games/royalcotillion.py:912
-#: pysollib/stack.py:2253
+#: pysollib/stack.py:2254
msgid "Foundation. Build up by color."
msgstr "Базовая ячейка. Складывать по возрастанию в соответствии с цветом."
@@ -1072,7 +1072,7 @@ msgstr "Жезлы"
#: pysollib/games/special/tarock.py:223
#: pysollib/games/ultra/dashavatara.py:351
#: pysollib/games/ultra/hexadeck.py:273 pysollib/games/ultra/mughal.py:254
-#: pysollib/stack.py:1569 pysollib/util.py:77 pysollib/wizardutil.py:157
+#: pysollib/stack.py:1570 pysollib/util.py:77 pysollib/wizardutil.py:157
#: pysollib/wizardutil.py:161 pysollib/wizardutil.py:215
msgid "Ace"
msgstr "Туз"
@@ -1425,14 +1425,14 @@ msgid "About "
msgstr "О программе "
#: pysollib/help.py:63
+#, fuzzy
msgid ""
"PySol Fan Club edition\n"
"%s%s\n"
"\n"
-"Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003\n"
-"Markus F.X.J. Oberhumer\n"
+"Copyright (C) 1998 - 2003 Markus F.X.J. Oberhumer.\n"
"Copyright (C) 2003 Mt. Hood Playing Card Co.\n"
-"Copyright (C) 2005 Skomoroh\n"
+"Copyright (C) 2005 - 2007 Skomoroh.\n"
"All Rights Reserved.\n"
"\n"
"PySol is free software distributed under the terms\n"
@@ -1454,11 +1454,11 @@ msgstr ""
"Для получения дополнительной информации\n"
"об этом приложении посетите сайт"
-#: pysollib/help.py:93
+#: pysollib/help.py:92
msgid "Credits"
msgstr "Благодарности"
-#: pysollib/help.py:94
+#: pysollib/help.py:93
msgid ""
" credits go to:\n"
"\n"
@@ -1473,15 +1473,15 @@ msgid ""
"for making this program possible"
msgstr ""
-#: pysollib/help.py:129
+#: pysollib/help.py:128
msgid " HTML Problem"
msgstr " проблема с HTML"
-#: pysollib/help.py:130
+#: pysollib/help.py:129
msgid "Cannot find help document\n"
msgstr "Не найден файл помощи\n"
-#: pysollib/help.py:143
+#: pysollib/help.py:142
msgid " Help"
msgstr " Помощь"
@@ -1858,144 +1858,144 @@ msgstr "США"
msgid "Top 10"
msgstr "Top 10"
-#: pysollib/stack.py:1563
+#: pysollib/stack.py:1564
msgid "Base card - %s."
msgstr "Базовая карта - %s."
-#: pysollib/stack.py:1564
+#: pysollib/stack.py:1565
msgid "Empty row cannot be filled."
msgstr "Пустой ряд не заполняется."
-#: pysollib/stack.py:1565
+#: pysollib/stack.py:1566
msgid "any card"
msgstr "любая карта"
-#: pysollib/stack.py:1566 pysollib/util.py:78
+#: pysollib/stack.py:1567 pysollib/util.py:78
msgid "Jack"
msgstr "Валет"
-#: pysollib/stack.py:1576
+#: pysollib/stack.py:1577
msgid "No cards"
msgstr "Нет карт"
-#: pysollib/stack.py:1577
+#: pysollib/stack.py:1578
msgid "%d card"
msgid_plural "%d cards"
msgstr[0] "%d карта"
msgstr[1] "%d карты"
msgstr[2] "%d карт"
-#: pysollib/stack.py:1790 pysollib/stack.py:1792 pysollib/stack.py:1828
+#: pysollib/stack.py:1791 pysollib/stack.py:1793 pysollib/stack.py:1829
msgid "Redeal"
msgstr "Сдать"
-#: pysollib/stack.py:1792
+#: pysollib/stack.py:1793
msgid "Stop"
msgstr "Стоп"
-#: pysollib/stack.py:1853
+#: pysollib/stack.py:1854
msgid "Variable redeals."
msgstr "Переменное количество пересдач."
-#: pysollib/stack.py:1854
+#: pysollib/stack.py:1855
msgid "Unlimited redeals."
msgstr "Неограниченное количество пересдач."
-#: pysollib/stack.py:1857
+#: pysollib/stack.py:1858
msgid "%d readeal"
msgid_plural "%d redeals"
msgstr[0] "%d пересдача"
msgstr[1] "%d пересдачи"
msgstr[2] "%d пересдач"
-#: pysollib/stack.py:1859
+#: pysollib/stack.py:1860
msgid "Talon."
msgstr "Колода."
-#: pysollib/stack.py:2124 pysollib/stack.py:2767
+#: pysollib/stack.py:2125 pysollib/stack.py:2776
msgid "Reserve. No building."
msgstr "Резерв. Без выкладывания."
-#: pysollib/stack.py:2161
+#: pysollib/stack.py:2162
msgid "Foundation."
msgstr "Базовая ячейка"
-#: pysollib/stack.py:2199
+#: pysollib/stack.py:2200
msgid "Foundation. Build up by suit."
msgstr "Базовая ячейка. Складывать по возрастанию в соответствии с мастью."
-#: pysollib/stack.py:2200
+#: pysollib/stack.py:2201
msgid "Foundation. Build down by suit."
msgstr "Базовая ячейка. Складывать по убыванию в соответствии с мастью."
-#: pysollib/stack.py:2201 pysollib/stack.py:2212 pysollib/stack.py:2234
-#: pysollib/stack.py:2255
+#: pysollib/stack.py:2202 pysollib/stack.py:2213 pysollib/stack.py:2235
+#: pysollib/stack.py:2256
msgid "Foundation. Build by same rank."
msgstr "Базовая ячейка. Складывать в соответствии с достоинством."
-#: pysollib/stack.py:2211
+#: pysollib/stack.py:2212
msgid "Foundation. Build down regardless of suit."
msgstr "Базовая ячейка. Складывать по убыванию не считаясь с мастью."
-#: pysollib/stack.py:2232
+#: pysollib/stack.py:2233
msgid "Foundation. Build up by alternate color."
msgstr "Базовая ячейка. Складывать по возрастанию чередуя цвет."
-#: pysollib/stack.py:2233
+#: pysollib/stack.py:2234
msgid "Foundation. Build down by alternate color."
msgstr "Базовая ячейка. Складывать по убыванию чередуя цвет."
-#: pysollib/stack.py:2254
+#: pysollib/stack.py:2255
msgid "Foundation. Build down by color."
msgstr "Базовая ячейка. Складывать по убыванию в соответствии с цветом."
-#: pysollib/stack.py:2363
+#: pysollib/stack.py:2372
msgid "Tableau. Build up by alternate color."
msgstr "Игровой стол. Складывать по возрастанию чередуя цвет."
-#: pysollib/stack.py:2364
+#: pysollib/stack.py:2373
msgid "Tableau. Build down by alternate color."
msgstr "Игровой стол. Складывать по убыванию чередуя цвет."
-#: pysollib/stack.py:2365 pysollib/stack.py:2375 pysollib/stack.py:2384
-#: pysollib/stack.py:2393 pysollib/stack.py:2403 pysollib/stack.py:2432
-#: pysollib/stack.py:2442
+#: pysollib/stack.py:2374 pysollib/stack.py:2384 pysollib/stack.py:2393
+#: pysollib/stack.py:2402 pysollib/stack.py:2412 pysollib/stack.py:2441
+#: pysollib/stack.py:2451
msgid "Tableau. Build by same rank."
msgstr "Игровой стол. Складывать в соответствии с достоинством."
-#: pysollib/stack.py:2373
+#: pysollib/stack.py:2382
msgid "Tableau. Build up by color."
msgstr "Игровой стол. Складывать по возрастанию в соответствии с цветом."
-#: pysollib/stack.py:2374
+#: pysollib/stack.py:2383
msgid "Tableau. Build down by color."
msgstr "Игровой стол. Складывать по убыванию в соответствии с цветом."
-#: pysollib/stack.py:2382
+#: pysollib/stack.py:2391
msgid "Tableau. Build up by suit."
msgstr "Игровой стол. Складывать по возрастанию в соответствии с мастью."
-#: pysollib/stack.py:2383
+#: pysollib/stack.py:2392
msgid "Tableau. Build down by suit."
msgstr "Игровой стол. Складывать по убыванию в соответствии с мастью."
-#: pysollib/stack.py:2391
+#: pysollib/stack.py:2400
msgid "Tableau. Build up regardless of suit."
msgstr "Игровой стол. Складывать по возрастанию не считаясь с мастью."
-#: pysollib/stack.py:2392
+#: pysollib/stack.py:2401
msgid "Tableau. Build down regardless of suit."
msgstr "Игровой стол. Складывать по убыванию не считаясь с мастью."
-#: pysollib/stack.py:2401
+#: pysollib/stack.py:2410
msgid "Tableau. Build up in any suit but the same."
msgstr "Игровой стол. Складывать по возрастанию в любую масть кроме такой же."
-#: pysollib/stack.py:2402
+#: pysollib/stack.py:2411
msgid "Tableau. Build down in any suit but the same."
msgstr "Игровой стол. Складывать по убыванию в любую масть кроме такой же."
-#: pysollib/stack.py:2430
+#: pysollib/stack.py:2439
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in alternate color "
"can be moved as a unit."
@@ -2003,7 +2003,7 @@ msgstr ""
"Игровой стол. Складывать по возрастанию не считаясь с мастью. Можно "
"перемещать серии карт чередующихся цветом."
-#: pysollib/stack.py:2431
+#: pysollib/stack.py:2440
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in alternate "
"color can be moved as a unit."
@@ -2011,7 +2011,7 @@ msgstr ""
"Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать "
"серии карт чередующихся цветом."
-#: pysollib/stack.py:2440
+#: pysollib/stack.py:2449
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
@@ -2019,7 +2019,7 @@ msgstr ""
"Игровой стол. Складывать по возрастанию не считаясь с мастью. Можно "
"перемещать серии карт одинаковой масти."
-#: pysollib/stack.py:2441
+#: pysollib/stack.py:2450
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
@@ -2027,7 +2027,7 @@ msgstr ""
"Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать "
"серии карт одинаковой масти."
-#: pysollib/stack.py:2463
+#: pysollib/stack.py:2472
msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless "
"of sequence."
@@ -2035,7 +2035,7 @@ msgstr ""
"Игровой стол. Складывать по возрастанию чередуя цвет, можно перемещать любую "
"серию открытых карт."
-#: pysollib/stack.py:2464
+#: pysollib/stack.py:2473
msgid ""
"Tableau. Build down by alternate color, can move any face-up cards "
"regardless of sequence."
@@ -2043,7 +2043,7 @@ msgstr ""
"Игровой стол. Складывать по убыванию чередуя цвет, можно перемещать любую "
"серию открытых карт."
-#: pysollib/stack.py:2465 pysollib/stack.py:2478 pysollib/stack.py:2488
+#: pysollib/stack.py:2474 pysollib/stack.py:2487 pysollib/stack.py:2497
msgid ""
"Tableau. Build by same rank, can move any face-up cards regardless of "
"sequence."
@@ -2051,14 +2051,14 @@ msgstr ""
"Игровой стол. Складывать в соответствии с достоинством, можно перемещать "
"любую серию открытых карт."
-#: pysollib/stack.py:2476
+#: pysollib/stack.py:2485
msgid ""
"Tableau. Build up by suit, can move any face-up cards regardless of sequence."
msgstr ""
"Игровой стол. Складывать по возрастанию в соответствии с мастью, можно "
"перемещать любую серию открытых карт."
-#: pysollib/stack.py:2477
+#: pysollib/stack.py:2486
msgid ""
"Tableau. Build down by suit, can move any face-up cards regardless of "
"sequence."
@@ -2066,7 +2066,7 @@ msgstr ""
"Игровой стол. Складывать по убыванию в соответствии с мастью, можно "
"перемещать любую серию открытых карт."
-#: pysollib/stack.py:2486 pysollib/stack.py:2487
+#: pysollib/stack.py:2495 pysollib/stack.py:2496
msgid ""
"Tableau. Build up regardless of suit, can move any face-up cards regardless "
"of sequence."
@@ -2074,30 +2074,30 @@ msgstr ""
"Игровой стол. Складывать по возрастанию не считаясь с мастью, можно "
"перемещать любую серию открытых карт."
-#: pysollib/stack.py:2520
+#: pysollib/stack.py:2529
msgid "Tableau. Build up or down by color."
msgstr ""
"Игровой стол. Складывать по возрастанию или убыванию в соответствии с цветом."
-#: pysollib/stack.py:2531
+#: pysollib/stack.py:2540
msgid "Tableau. Build up or down by alternate color."
msgstr "Игровой стол. Складывать по возрастанию или убыванию чередуя цвет."
-#: pysollib/stack.py:2542
+#: pysollib/stack.py:2551
msgid "Tableau. Build up or down by suit."
msgstr ""
"Игровой стол. Складывать по возрастанию или убыванию в соответствии с мастью."
-#: pysollib/stack.py:2553
+#: pysollib/stack.py:2562
msgid "Tableau. Build up or down regardless of suit."
msgstr ""
"Игровой стол. Складывать по возрастанию или убыванию не считаясь с мастью."
-#: pysollib/stack.py:2652
+#: pysollib/stack.py:2661
msgid "Waste."
msgstr "Сброс."
-#: pysollib/stack.py:2768
+#: pysollib/stack.py:2777
msgid "Free cell."
msgstr "Свободная ячейка."
diff --git a/pysollib/games/acesup.py b/pysollib/games/acesup.py
index 0a08974d..d7aecc7f 100644
--- a/pysollib/games/acesup.py
+++ b/pysollib/games/acesup.py
@@ -328,6 +328,82 @@ class FiringSquad(AcesUp):
AcesUp.createGame(self, reserve=True)
+# /***********************************************************************
+# // Tabby Cat
+# // Manx
+# // Maine Coon
+# ************************************************************************/
+
+class TabbyCatStack(RK_RowStack):
+ def acceptsCards(self, from_stack, cards):
+ if not RK_RowStack.acceptsCards( self, from_stack, cards):
+ return False
+ # Only allow a sequence if pile is empty
+ if len( self.cards) > 0:
+ return False
+ return True
+
+ getBottomImage = Stack._getReserveBottomImage
+
+
+class TabbyCat(Game):
+ Talon_Class = DealRowTalonStack
+ Foundation_Class = Spider_RK_Foundation
+ RowStack_Class = StackWrapper(RK_RowStack, mod=13)
+ ReserveStack_Class = StackWrapper(TabbyCatStack, mod=13)
+
+ #
+ # game layout
+ #
+
+ def createGame(self, rows=4, playcards=20):
+ # create layout
+ l, s = Layout(self), self.s
+ decks = self.gameinfo.decks
+
+ # set window
+ self.setSize(l.XM + (decks+rows+3.5)*l.XS,
+ l.YM + max(4*l.YS, l.YS+playcards*l.YOFFSET))
+
+ # create stacks
+ x = l.XM
+ for i in range(decks):
+ y = l.YM
+ for j in range(4):
+ s.foundations.append(self.Foundation_Class(x, y, self))
+ y += l.YS
+ x += l.XS
+
+ x, y, = l.XM + (decks+0.5)*l.XS, l.YM
+ for i in range(rows):
+ stack = self.RowStack_Class(x, y, self)
+ s.rows.append(stack)
+ stack.canDropCards = stack.spiderCanDropCards
+ x += l.XS
+ x += l.XS/2
+ s.reserves.append(self.ReserveStack_Class(x, y, self))
+ x += 1.5*l.XS
+ s.talon = self.Talon_Class(x, y, self)
+ l.createText(s.talon, "s")
+
+ # define stack-groups
+ l.defaultStackGroups()
+
+ def startGame(self):
+ self.startDealSample()
+ self.s.talon.dealRow()
+
+ shallHighlightMatch = Game._shallHighlightMatch_RKW
+
+
+class Manx(TabbyCat):
+ ReserveStack_Class = ReserveStack
+
+
+class MaineCoon(TabbyCat):
+ def createGame(self):
+ TabbyCat.createGame(self, playcards=26)
+
# register the game
registerGame(GameInfo(903, AcesUp, "Aces Up", # was: 52
@@ -348,3 +424,9 @@ registerGame(GameInfo(583, FiringSquad, "Firing Squad",
GI.GT_1DECK_TYPE, 1, 0, GI.SL_BALANCED))
registerGame(GameInfo(684, Deck, "Deck",
GI.GT_1DECK_TYPE, 1, 0, GI.SL_LUCK))
+registerGame(GameInfo(756, TabbyCat, "Tabby Cat",
+ GI.GT_1DECK_TYPE, 1, 0, GI.SL_MOSTLY_SKILL))
+registerGame(GameInfo(757, Manx, "Manx",
+ GI.GT_1DECK_TYPE, 1, 0, GI.SL_MOSTLY_SKILL))
+registerGame(GameInfo(758, MaineCoon, "Maine Coon",
+ GI.GT_2DECK_TYPE, 2, 0, GI.SL_MOSTLY_SKILL))
diff --git a/pysollib/games/klondike.py b/pysollib/games/klondike.py
index 3e08df5e..659711e2 100644
--- a/pysollib/games/klondike.py
+++ b/pysollib/games/klondike.py
@@ -428,7 +428,8 @@ class EightByEight(EightTimesEight):
RowStack_Class = EightByEight_RowStack
def createGame(self):
- l = Klondike.createGame(self, rows=8, max_rounds=3, round_text=True)
+ l = Klondike.createGame(self, rows=8, playcards=20,
+ max_rounds=3, round_text=True)
l.createRoundText(self.s.talon, 'ne', dx=l.XS)
shallHighlightMatch = Game._shallHighlightMatch_RK
diff --git a/pysollib/games/unionsquare.py b/pysollib/games/unionsquare.py
index 71737e3b..4fc3ad23 100644
--- a/pysollib/games/unionsquare.py
+++ b/pysollib/games/unionsquare.py
@@ -195,6 +195,7 @@ class Boomerang_Foundation(AbstractFoundationStack):
class Boomerang(UnionSquare):
Foundation_Class = StackWrapper(Boomerang_Foundation,
base_rank=6, max_cards=16)
+ RowStack_Class = StackWrapper(UnionSquare_RowStack, base_rank=NO_RANK)
def createGame(self):
UnionSquare.createGame(self, rows=12)
diff --git a/pysollib/init.py b/pysollib/init.py
index 334b7f2a..f0afb55d 100644
--- a/pysollib/init.py
+++ b/pysollib/init.py
@@ -70,7 +70,7 @@ def init():
os.environ['LANG'] = l[0]
except:
pass
- ##locale.setlocale(locale.LC_ALL, '')
+ locale.setlocale(locale.LC_ALL, '')
## install gettext
##locale_dir = 'locale'
diff --git a/pysollib/options.py b/pysollib/options.py
index 9b15409e..72204ffd 100644
--- a/pysollib/options.py
+++ b/pysollib/options.py
@@ -62,7 +62,7 @@ animations = integer(0, 5)
redeal_animation = boolean
win_animation = boolean
flip_animation = boolean
-squeeze_stacks = boolean
+compact_stacks = boolean
shadow = boolean
shade = boolean
shrink_face_down = boolean
@@ -190,7 +190,7 @@ class Options:
('redeal_animation', 'bool'),
('win_animation', 'bool'),
('flip_animation', 'bool'),
- ('squeeze_stacks', 'bool'),
+ ('compact_stacks', 'bool'),
('shadow', 'bool'),
('shade', 'bool'),
('shrink_face_down', 'bool'),
@@ -260,7 +260,7 @@ class Options:
self.redeal_animation = True
self.win_animation = True
self.flip_animation = True
- self.squeeze_stacks = True
+ self.compact_stacks = True
self.shadow = True
self.shade = True
self.shrink_face_down = True
diff --git a/pysollib/stack.py b/pysollib/stack.py
index 9b85a0f1..1766ef44 100644
--- a/pysollib/stack.py
+++ b/pysollib/stack.py
@@ -62,6 +62,7 @@ __all__ = ['cardsFaceUp',
'SC_FoundationStack',
'Spider_SS_Foundation',
'Spider_AC_Foundation',
+ 'Spider_RK_Foundation',
#'SequenceStack_StackMethods',
'BasicRowStack',
'SequenceRowStack',
@@ -862,7 +863,7 @@ class Stack:
self.texts.ncards.config(text=t)
def updatePositions(self):
- # squeeze the stack if a cards is off-screen
+ # compact the stack when a cards goes off screen
if self.reallocateCards():
for c in self.cards:
self._position(c)
@@ -870,7 +871,7 @@ class Stack:
def reallocateCards(self):
# change CARD_YOFFSET if a cards is off-screen
# returned False if CARD_YOFFSET is not changed, otherwise True
- if not self.game.app.opt.squeeze_stacks:
+ if not self.game.app.opt.compact_stacks:
return False
if TOOLKIT != 'tk':
return False
@@ -896,7 +897,7 @@ class Stack:
game_height = self.game.height + 2*self.canvas.ymargin
height = max(visible_height, game_height)
if stack_height > height:
- # squeeze stack
+ # compact stack
n = num_face_down / self.shrink_face_down + num_face_up
dy = float(height - self.y - cardh) / n
if dy < yoffset:
@@ -2277,6 +2278,14 @@ class Spider_AC_Foundation(Spider_SS_Foundation):
return isAlternateColorSequence(cards, self.cap.mod, self.cap.dir)
+class Spider_RK_Foundation(Spider_SS_Foundation):
+ def acceptsCards(self, from_stack, cards):
+ if not AbstractFoundationStack.acceptsCards(self, from_stack, cards):
+ return False
+ # now check the cards
+ return isRankSequence(cards, self.cap.mod, self.cap.dir)
+
+
# /***********************************************************************
# // Abstract classes for row stacks.
diff --git a/pysollib/wizardutil.py b/pysollib/wizardutil.py
index c36585e2..3eee3bf6 100644
--- a/pysollib/wizardutil.py
+++ b/pysollib/wizardutil.py
@@ -105,14 +105,14 @@ LayoutType = WizSetting(
var_name = 'layout',
)
TalonType = WizSetting(
- values_map = ((n_('Opening deal'), InitialDealTalonStack),
+ values_map = ((n_('Deal all cards at the beginning'), InitialDealTalonStack),
(n_('Deal to waste'), WasteTalonStack),
(n_('Deal to tableau'), DealRowRedealTalonStack),
(n_('Deal to reserves'), DealReserveRedealTalonStack),
(n_('Spider'), SpiderTalonStack),
(n_('Grounds for a Divorce'), GroundsForADivorceTalonStack),
),
- default = n_('Opening deal'),
+ default = n_('Deal all cards at the beginning'),
label = _('Type:'),
var_name = 'talon',
)