diff --git a/html-src/wikipedia/shamrocksii.html b/html-src/wikipedia/shamrocksii.html
new file mode 100644
index 00000000..3d8ecd22
--- /dev/null
+++ b/html-src/wikipedia/shamrocksii.html
@@ -0,0 +1,27 @@
+
Shamrocks
+From Wikipedia, the free encyclopedia
+
+Shamrocks is a solitaire game akin to La Belle
+Lucie. The object is the same as the latter: move the cards into the
+foundations.
+
+The game is layout out as in La Belle Lucie: seventeen piles of three cards
+are placed on the tableau with one card counting as an eighteenth. Any card
+that can be moved to the foundations should be moved and built up by suit
+(starting from the ace). The top card of each pile can be used for play and
+once a pile is empty, it cannot be refilled.
+
+But its similarity to La Belle Lucie ends there. Before the game begins, each
+King which is on top or middle of its respective pile is placed underneath.
+(Morehead and Mott-Smith's rules to the game specifically states that a King
+that is on top of a lower-ranked card of the same suit should be placed under
+that lower-ranked card, no matter what else in its pile.) To play on the
+tableau, a card can be placed over a card that is one rank higher or lower,
+regardless of suit (a 6
can be placed on a
+7
or a 5
).
+However, each pile can hold no more than three cards at a time; thus no card
+can be placed on a pile with three cards.
+
+The game is won when all of the cards have been moved to the foundations.
+
+(Retrieved from http://en.wikipedia.org/wiki/Shamrocks)
diff --git a/po/games.pot b/po/games.pot
index 3047eff1..49f74405 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: Wed Feb 21 17:56:30 2007\n"
+"POT-Creation-Date: Mon Mar 5 17:55:43 2007\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -1092,6 +1092,9 @@ msgstr ""
msgid "Flamenco"
msgstr ""
+msgid "Flipper"
+msgstr ""
+
msgid "Floating City"
msgstr ""
@@ -1746,6 +1749,9 @@ msgstr ""
msgid "Legion"
msgstr ""
+msgid "Leprechaun"
+msgstr ""
+
msgid "Les Quatre Coins"
msgstr ""
@@ -3114,6 +3120,9 @@ msgstr ""
msgid "Shamrocks"
msgstr ""
+msgid "Shamrocks II"
+msgstr ""
+
msgid "Shamsher"
msgstr ""
@@ -3462,6 +3471,9 @@ msgstr ""
msgid "The Great Wall"
msgstr ""
+msgid "The Jolly Roger"
+msgstr ""
+
msgid "The Last Monarch"
msgstr ""
diff --git a/po/pysol.pot b/po/pysol.pot
index bfd4a5d3..0ef8945e 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: Wed Feb 21 17:57:33 2007\n"
+"POT-Creation-Date: Mon Mar 5 17:56:51 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.5\n"
"#-#-#-#-# pysol-2.pot (PACKAGE VERSION) #-#-#-#-#\n"
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2007-02-21 17:57+0300\n"
+"POT-Creation-Date: 2007-03-05 17:56+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -37,8 +37,8 @@ msgstr ""
msgid "New game"
msgstr ""
-#: pysollib/actions.py:272 pysollib/tile/menubar.py:832
-#: pysollib/tile/menubar.py:846 pysollib/tk/menubar.py:828
+#: pysollib/actions.py:272 pysollib/tile/menubar.py:824
+#: pysollib/tile/menubar.py:838 pysollib/tk/menubar.py:828
#: pysollib/tk/menubar.py:842
msgid "Select game"
msgstr ""
@@ -70,19 +70,17 @@ msgstr ""
msgid "&Next number"
msgstr ""
-#: pysollib/actions.py:315 pysollib/app.py:891 pysollib/app.py:1178
-#: pysollib/app.py:1190 pysollib/game.py:1012 pysollib/game.py:2247
+#: pysollib/actions.py:315 pysollib/app.py:904 pysollib/app.py:1191
+#: pysollib/app.py:1203 pysollib/game.py:1030 pysollib/game.py:2265
#: pysollib/tile/colorsdialog.py:112 pysollib/tile/edittextdialog.py:83
#: pysollib/tile/fontsdialog.py:144 pysollib/tile/fontsdialog.py:204
-#: pysollib/tile/gameinfodialog.py:155 pysollib/tile/menubar.py:1344
+#: pysollib/tile/gameinfodialog.py:155 pysollib/tile/menubar.py:1336
#: pysollib/tile/playeroptionsdialog.py:111 pysollib/tile/selectcardset.py:387
#: pysollib/tile/selecttile.py:161 pysollib/tile/soundoptionsdialog.py:168
#: pysollib/tile/soundoptionsdialog.py:206 pysollib/tile/timeoutsdialog.py:94
-#: pysollib/tile/tkhtml.py:501 pysollib/tile/tkstats.py:216
-#: pysollib/tile/tkstats.py:388 pysollib/tile/tkstats.py:461
-#: pysollib/tile/tkstats.py:484 pysollib/tile/tkstats.py:527
-#: pysollib/tile/tkstats.py:598 pysollib/tile/tkstats.py:682
-#: pysollib/tile/tkstats.py:844 pysollib/tile/tkwidget.py:154
+#: pysollib/tile/tkhtml.py:501 pysollib/tile/tkstats.py:122
+#: pysollib/tile/tkstats.py:543 pysollib/tile/tkstats.py:632
+#: pysollib/tile/tkstats.py:713 pysollib/tile/tkwidget.py:154
#: pysollib/tile/tkwidget.py:329 pysollib/tk/colorsdialog.py:111
#: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:143
#: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155
@@ -91,17 +89,17 @@ msgstr ""
#: pysollib/tk/selectcardset.py:397 pysollib/tk/selecttile.py:159
#: pysollib/tk/soundoptionsdialog.py:170 pysollib/tk/soundoptionsdialog.py:211
#: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkhtml.py:500
-#: pysollib/tk/tkstats.py:290 pysollib/tk/tkstats.py:516
-#: pysollib/tk/tkstats.py:583 pysollib/tk/tkstats.py:598
-#: pysollib/tk/tkstats.py:640 pysollib/tk/tkstats.py:712
-#: pysollib/tk/tkstats.py:796 pysollib/tk/tkstats.py:970
+#: pysollib/tk/tkstats.py:291 pysollib/tk/tkstats.py:517
+#: pysollib/tk/tkstats.py:584 pysollib/tk/tkstats.py:599
+#: pysollib/tk/tkstats.py:641 pysollib/tk/tkstats.py:713
+#: pysollib/tk/tkstats.py:797 pysollib/tk/tkstats.py:971
#: pysollib/tk/tkwidget.py:160 pysollib/tk/tkwidget.py:324
msgid "&OK"
msgstr ""
-#: pysollib/actions.py:315 pysollib/app.py:892 pysollib/app.py:1190
-#: pysollib/game.py:1012 pysollib/game.py:1676 pysollib/game.py:1692
-#: pysollib/game.py:1699 pysollib/game.py:1705
+#: pysollib/actions.py:315 pysollib/app.py:905 pysollib/app.py:1203
+#: pysollib/game.py:1030 pysollib/game.py:1694 pysollib/game.py:1710
+#: pysollib/game.py:1717 pysollib/game.py:1723
#: pysollib/tile/colorsdialog.py:112 pysollib/tile/edittextdialog.py:83
#: pysollib/tile/fontsdialog.py:144 pysollib/tile/fontsdialog.py:204
#: pysollib/tile/playeroptionsdialog.py:111 pysollib/tile/selectcardset.py:237
@@ -194,7 +192,7 @@ msgstr ""
msgid " Demo "
msgstr ""
-#: pysollib/actions.py:579 pysollib/actions.py:598
+#: pysollib/actions.py:579 pysollib/actions.py:599
msgid " for "
msgstr ""
@@ -202,43 +200,45 @@ msgstr ""
msgid "Statistics for "
msgstr ""
-#: pysollib/actions.py:588 pysollib/tile/selectgame.py:345
-#: pysollib/tile/toolbar.py:200 pysollib/tk/selectgame.py:350
-#: pysollib/tk/toolbar.py:203
+#: pysollib/actions.py:589 pysollib/tile/selectgame.py:345
+#: pysollib/tile/tkstats.py:76 pysollib/tile/toolbar.py:200
+#: pysollib/tk/selectgame.py:350 pysollib/tk/toolbar.py:203
msgid "Statistics"
msgstr ""
-#: pysollib/actions.py:592 data/glade-translations:31
+#: pysollib/actions.py:593 pysollib/tile/tkstats.py:525
+#: data/glade-translations:31
msgid "Full log"
msgstr ""
-#: pysollib/actions.py:595 data/glade-translations:32
+#: pysollib/actions.py:596 pysollib/tile/tkstats.py:529
+#: data/glade-translations:32
msgid "Session log"
msgstr ""
-#: pysollib/actions.py:601
+#: pysollib/actions.py:602
msgid "Game Info"
msgstr ""
-#: pysollib/actions.py:604
+#: pysollib/actions.py:605
msgid "Statistics progression"
msgstr ""
-#: pysollib/actions.py:620
+#: pysollib/actions.py:621
msgid "Reset all statistics"
msgstr ""
-#: pysollib/actions.py:621
+#: pysollib/actions.py:622
msgid ""
"Reset ALL statistics and logs for player\n"
"%s ?"
msgstr ""
-#: pysollib/actions.py:627
+#: pysollib/actions.py:628
msgid "Reset game statistics"
msgstr ""
-#: pysollib/actions.py:628
+#: pysollib/actions.py:629
msgid ""
"Reset statistics and logs for player\n"
"%s\n"
@@ -246,23 +246,23 @@ msgid ""
"%s ?"
msgstr ""
-#: pysollib/actions.py:684
+#: pysollib/actions.py:685
msgid "Play demo"
msgstr ""
-#: pysollib/actions.py:695
+#: pysollib/actions.py:696
msgid "Set player options"
msgstr ""
-#: pysollib/actions.py:709 data/glade-translations:40
+#: pysollib/actions.py:710 data/glade-translations:40
msgid "Set colors"
msgstr ""
-#: pysollib/actions.py:726
+#: pysollib/actions.py:727
msgid "Set fonts"
msgstr ""
-#: pysollib/actions.py:735 data/glade-translations:33
+#: pysollib/actions.py:736 data/glade-translations:33
msgid "Set timeouts"
msgstr ""
@@ -270,29 +270,29 @@ msgstr ""
msgid "Unknown"
msgstr ""
-#: pysollib/app.py:893 pysollib/game.py:1676 pysollib/game.py:1692
-#: pysollib/game.py:1699 pysollib/game.py:1705 pysollib/tile/menubar.py:358
+#: pysollib/app.py:906 pysollib/game.py:1694 pysollib/game.py:1710
+#: pysollib/game.py:1717 pysollib/game.py:1723 pysollib/tile/menubar.py:358
#: pysollib/tk/menubar.py:355
msgid "&New game"
msgstr ""
-#: pysollib/app.py:1036
+#: pysollib/app.py:1049
msgid "Loading %s %s..."
msgstr ""
-#: pysollib/app.py:1075
+#: pysollib/app.py:1088
msgid " load error"
msgstr ""
-#: pysollib/app.py:1076
+#: pysollib/app.py:1089
msgid "Error while loading "
msgstr ""
-#: pysollib/app.py:1170
+#: pysollib/app.py:1183
msgid "Incompatible "
msgstr ""
-#: pysollib/app.py:1172
+#: pysollib/app.py:1185
msgid ""
"The currently selected %s %s\n"
"is not compatible with the game\n"
@@ -301,45 +301,49 @@ msgid ""
"Please select a %s type %s.\n"
msgstr ""
-#: pysollib/app.py:1188
+#: pysollib/app.py:1201
msgid "Please select a %s type %s"
msgstr ""
-#: pysollib/game.py:931 pysollib/game.py:937
+#: pysollib/app.py:1427
+msgid "Error loading plugin %s: %s"
+msgstr ""
+
+#: pysollib/game.py:949 pysollib/game.py:955
msgid "Player\n"
msgstr ""
-#: pysollib/game.py:1008
+#: pysollib/game.py:1026
msgid "Discard current game ?"
msgstr ""
-#: pysollib/game.py:1629
+#: pysollib/game.py:1647
msgid ""
"\n"
"You have reached\n"
"#%d in the %s of playing time"
msgstr ""
-#: pysollib/game.py:1634
+#: pysollib/game.py:1652
msgid ""
"\n"
"and #%d in the %s of moves"
msgstr ""
-#: pysollib/game.py:1637
+#: pysollib/game.py:1655
msgid ""
"\n"
"You have reached\n"
"#%d in the %s of moves"
msgstr ""
-#: pysollib/game.py:1667 pysollib/game.py:1684
+#: pysollib/game.py:1685 pysollib/game.py:1702
#: pysollib/tile/soundoptionsdialog.py:102
#: pysollib/tk/soundoptionsdialog.py:100
msgid "Game won"
msgstr ""
-#: pysollib/game.py:1668
+#: pysollib/game.py:1686
msgid ""
"\n"
"Congratulations, this\n"
@@ -350,7 +354,7 @@ msgid ""
"%s\n"
msgstr ""
-#: pysollib/game.py:1685
+#: pysollib/game.py:1703
msgid ""
"\n"
"Congratulations, you did it !\n"
@@ -360,101 +364,101 @@ msgid ""
"%s\n"
msgstr ""
-#: pysollib/game.py:1697 pysollib/game.py:1703
+#: pysollib/game.py:1715 pysollib/game.py:1721
#: pysollib/tile/soundoptionsdialog.py:100
#: pysollib/tk/soundoptionsdialog.py:98
msgid "Game finished"
msgstr ""
-#: pysollib/game.py:1698 pysollib/game.py:2248
+#: pysollib/game.py:1716 pysollib/game.py:2266
msgid ""
"\n"
"Game finished\n"
msgstr ""
-#: pysollib/game.py:1704
+#: pysollib/game.py:1722
msgid ""
"\n"
"Game finished, but not without my help...\n"
msgstr ""
-#: pysollib/game.py:1705
+#: pysollib/game.py:1723
msgid "&Restart"
msgstr ""
-#: pysollib/game.py:2137
+#: pysollib/game.py:2155
msgid "Score %6d"
msgstr ""
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Cool"
msgstr ""
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Great"
msgstr ""
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Wow"
msgstr ""
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Yeah"
msgstr ""
-#: pysollib/game.py:2240 pysollib/game.py:2251 pysollib/game.py:2263
+#: pysollib/game.py:2258 pysollib/game.py:2269 pysollib/game.py:2281
msgid " Autopilot"
msgstr ""
-#: pysollib/game.py:2241
+#: pysollib/game.py:2259
msgid ""
"\n"
"Game solved in %d moves.\n"
msgstr ""
-#: pysollib/game.py:2262
+#: pysollib/game.py:2280
msgid "&Hmm"
msgstr ""
-#: pysollib/game.py:2262
+#: pysollib/game.py:2280
msgid "&Oh well"
msgstr ""
-#: pysollib/game.py:2262
+#: pysollib/game.py:2280
msgid "&That's life"
msgstr ""
-#: pysollib/game.py:2264
+#: pysollib/game.py:2282
msgid ""
"\n"
"This won't come out...\n"
msgstr ""
-#: pysollib/game.py:2704
+#: pysollib/game.py:2722
msgid "Set bookmark"
msgstr ""
-#: pysollib/game.py:2705
+#: pysollib/game.py:2723
msgid "Replace existing bookmark %d ?"
msgstr ""
-#: pysollib/game.py:2727
+#: pysollib/game.py:2745
msgid "Goto bookmark"
msgstr ""
-#: pysollib/game.py:2728
+#: pysollib/game.py:2746
msgid "Goto bookmark %d ?"
msgstr ""
-#: pysollib/game.py:2759
+#: pysollib/game.py:2777
msgid "Open game"
msgstr ""
-#: pysollib/game.py:2770 pysollib/game.py:2780 pysollib/game.py:2785
+#: pysollib/game.py:2788 pysollib/game.py:2798 pysollib/game.py:2803
msgid "Load game error"
msgstr ""
-#: pysollib/game.py:2771
+#: pysollib/game.py:2789
msgid ""
"Error while loading game.\n"
"\n"
@@ -462,36 +466,36 @@ msgid ""
"but this could also be a bug you might want to report."
msgstr ""
-#: pysollib/game.py:2781
+#: pysollib/game.py:2799
msgid "Error while loading game"
msgstr ""
-#: pysollib/game.py:2786
+#: pysollib/game.py:2804
msgid ""
"Internal error while loading game.\n"
"\n"
"Please report this bug."
msgstr ""
-#: pysollib/game.py:2815
+#: pysollib/game.py:2833
msgid "Save game error"
msgstr ""
-#: pysollib/game.py:2816
+#: pysollib/game.py:2834
msgid "Error while saving game"
msgstr ""
-#: pysollib/game.py:2841
+#: pysollib/game.py:2859
msgid "Invalid or damaged %s save file"
msgstr ""
-#: pysollib/game.py:2855
+#: pysollib/game.py:2873
msgid ""
"Cannot load games saved with\n"
"%s version %s"
msgstr ""
-#: pysollib/game.py:2872
+#: pysollib/game.py:2890
msgid ""
"Cannot load this game from version %s\n"
"as the game rules have changed\n"
@@ -740,12 +744,12 @@ msgid ""
msgstr ""
#: pysollib/games/canfield.py:528 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1482 pysollib/util.py:85
+#: pysollib/stack.py:1503 pysollib/util.py:85
msgid "King"
msgstr ""
#: pysollib/games/canfield.py:531 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1481 pysollib/util.py:85
+#: pysollib/stack.py:1502 pysollib/util.py:85
msgid "Queen"
msgstr ""
@@ -753,25 +757,25 @@ msgstr ""
msgid "Tableau. Build down by suit or of the same rank."
msgstr ""
-#: pysollib/games/fan.py:285
+#: pysollib/games/fan.py:307
msgid "Draw"
msgstr ""
-#: pysollib/games/fan.py:285
+#: pysollib/games/fan.py:307
msgid "X"
msgstr ""
-#: pysollib/games/fan.py:470
+#: pysollib/games/fan.py:492
msgid "Base card - Ace or King."
msgstr ""
#: pysollib/games/golf.py:114 pysollib/games/golf.py:302
-#: pysollib/stack.py:2145
+#: pysollib/stack.py:2166
msgid "Tableau. No building."
msgstr ""
#: pysollib/games/golf.py:387 pysollib/games/pileon.py:257
-#: pysollib/stack.py:2078
+#: pysollib/stack.py:2099
msgid "Foundation. Build up regardless of suit."
msgstr ""
@@ -779,15 +783,17 @@ msgstr ""
msgid "Balance $%d"
msgstr ""
-#: pysollib/games/klondike.py:170 pysollib/stack.py:2186
-msgid "Tableau. Build down by color."
+#: pysollib/games/klondike.py:170
+msgid ""
+"Tableau. Build down by color. Sequences of cards in the same suit can be "
+"moved as a unit."
msgstr ""
-#: pysollib/games/klondike.py:444
+#: pysollib/games/klondike.py:445
msgid "Reserve. Only Kings are acceptable."
msgstr ""
-#: pysollib/games/larasgame.py:163 pysollib/stack.py:1694
+#: pysollib/games/larasgame.py:163 pysollib/stack.py:1715
msgid "Round %d"
msgstr ""
@@ -890,7 +896,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:1483 pysollib/util.py:84
+#: pysollib/stack.py:1504 pysollib/util.py:84
msgid "Ace"
msgstr ""
@@ -1608,236 +1614,240 @@ msgstr ""
msgid "USA"
msgstr ""
-#: pysollib/settings.py:72 data/glade-translations:29
+#: pysollib/settings.py:73 data/glade-translations:29
msgid "Top 10"
msgstr ""
-#: pysollib/stack.py:1477
+#: pysollib/stack.py:1498
msgid "Base card - %s."
msgstr ""
-#: pysollib/stack.py:1478
+#: pysollib/stack.py:1499
msgid "Empty row cannot be filled."
msgstr ""
-#: pysollib/stack.py:1479
+#: pysollib/stack.py:1500
msgid "any card"
msgstr ""
-#: pysollib/stack.py:1480 pysollib/util.py:85
+#: pysollib/stack.py:1501 pysollib/util.py:85
msgid "Jack"
msgstr ""
-#: pysollib/stack.py:1489
+#: pysollib/stack.py:1510
msgid "No cards"
msgstr ""
-#: pysollib/stack.py:1490
+#: pysollib/stack.py:1511
msgid "1 card"
msgstr ""
-#: pysollib/stack.py:1491
+#: pysollib/stack.py:1512
msgid " cards"
msgstr ""
-#: pysollib/stack.py:1703 pysollib/stack.py:1705 pysollib/stack.py:1741
+#: pysollib/stack.py:1724 pysollib/stack.py:1726 pysollib/stack.py:1762
msgid "Redeal"
msgstr ""
-#: pysollib/stack.py:1705
+#: pysollib/stack.py:1726
msgid "Stop"
msgstr ""
-#: pysollib/stack.py:1766
+#: pysollib/stack.py:1787
msgid "Variable redeals."
msgstr ""
-#: pysollib/stack.py:1767
+#: pysollib/stack.py:1788
msgid "Unlimited redeals."
msgstr ""
-#: pysollib/stack.py:1768
+#: pysollib/stack.py:1789
msgid "No redeals."
msgstr ""
-#: pysollib/stack.py:1769
+#: pysollib/stack.py:1790
msgid "One redeal."
msgstr ""
-#: pysollib/stack.py:1770
+#: pysollib/stack.py:1791
msgid " redeals."
msgstr ""
-#: pysollib/stack.py:1772
+#: pysollib/stack.py:1793
msgid "Talon."
msgstr ""
-#: pysollib/stack.py:2008 pysollib/stack.py:2542
+#: pysollib/stack.py:2029 pysollib/stack.py:2563
msgid "Reserve. No building."
msgstr ""
-#: pysollib/stack.py:2046
+#: pysollib/stack.py:2067
msgid "Foundation."
msgstr ""
-#: pysollib/stack.py:2062
+#: pysollib/stack.py:2083
msgid "Foundation. Build up by suit."
msgstr ""
-#: pysollib/stack.py:2063
+#: pysollib/stack.py:2084
msgid "Foundation. Build down by suit."
msgstr ""
-#: pysollib/stack.py:2064 pysollib/stack.py:2080 pysollib/stack.py:2102
+#: pysollib/stack.py:2085 pysollib/stack.py:2101 pysollib/stack.py:2123
msgid "Foundation. Build by same rank."
msgstr ""
-#: pysollib/stack.py:2079
+#: pysollib/stack.py:2100
msgid "Foundation. Build down regardless of suit."
msgstr ""
-#: pysollib/stack.py:2100
+#: pysollib/stack.py:2121
msgid "Foundation. Build up by alternate color."
msgstr ""
-#: pysollib/stack.py:2101
+#: pysollib/stack.py:2122
msgid "Foundation. Build down by alternate color."
msgstr ""
-#: pysollib/stack.py:2175
+#: pysollib/stack.py:2196
msgid "Tableau. Build up by alternate color."
msgstr ""
-#: pysollib/stack.py:2176
+#: pysollib/stack.py:2197
msgid "Tableau. Build down by alternate color."
msgstr ""
-#: pysollib/stack.py:2177 pysollib/stack.py:2187 pysollib/stack.py:2196
-#: pysollib/stack.py:2205 pysollib/stack.py:2215 pysollib/stack.py:2244
-#: pysollib/stack.py:2254
+#: pysollib/stack.py:2198 pysollib/stack.py:2208 pysollib/stack.py:2217
+#: pysollib/stack.py:2226 pysollib/stack.py:2236 pysollib/stack.py:2265
+#: pysollib/stack.py:2275
msgid "Tableau. Build by same rank."
msgstr ""
-#: pysollib/stack.py:2185
+#: pysollib/stack.py:2206
msgid "Tableau. Build up by color."
msgstr ""
-#: pysollib/stack.py:2194
+#: pysollib/stack.py:2207
+msgid "Tableau. Build down by color."
+msgstr ""
+
+#: pysollib/stack.py:2215
msgid "Tableau. Build up by suit."
msgstr ""
-#: pysollib/stack.py:2195
+#: pysollib/stack.py:2216
msgid "Tableau. Build down by suit."
msgstr ""
-#: pysollib/stack.py:2203
+#: pysollib/stack.py:2224
msgid "Tableau. Build up regardless of suit."
msgstr ""
-#: pysollib/stack.py:2204
+#: pysollib/stack.py:2225
msgid "Tableau. Build down regardless of suit."
msgstr ""
-#: pysollib/stack.py:2213
+#: pysollib/stack.py:2234
msgid "Tableau. Build up in any suit but the same."
msgstr ""
-#: pysollib/stack.py:2214
+#: pysollib/stack.py:2235
msgid "Tableau. Build down in any suit but the same."
msgstr ""
-#: pysollib/stack.py:2242
+#: pysollib/stack.py:2263
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in alternate color "
"can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2243
+#: pysollib/stack.py:2264
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in alternate "
"color can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2252
+#: pysollib/stack.py:2273
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2253
+#: pysollib/stack.py:2274
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
msgstr ""
-#: pysollib/stack.py:2275
+#: pysollib/stack.py:2296
msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless "
"of sequence."
msgstr ""
-#: pysollib/stack.py:2276
+#: pysollib/stack.py:2297
msgid ""
"Tableau. Build down by alternate color, can move any face-up cards "
"regardless of sequence."
msgstr ""
-#: pysollib/stack.py:2277 pysollib/stack.py:2290
+#: pysollib/stack.py:2298 pysollib/stack.py:2311
msgid ""
"Tableau. Build by same rank, can move any face-up cards regardless of "
"sequence."
msgstr ""
-#: pysollib/stack.py:2288
+#: pysollib/stack.py:2309
msgid ""
"Tableau. Build up by suit, can move any face-up cards regardless of sequence."
msgstr ""
-#: pysollib/stack.py:2289
+#: pysollib/stack.py:2310
msgid ""
"Tableau. Build down by suit, can move any face-up cards regardless of "
"sequence."
msgstr ""
-#: pysollib/stack.py:2322
+#: pysollib/stack.py:2343
msgid "Tableau. Build up or down by color."
msgstr ""
-#: pysollib/stack.py:2333
+#: pysollib/stack.py:2354
msgid "Tableau. Build up or down by alternate color."
msgstr ""
-#: pysollib/stack.py:2344
+#: pysollib/stack.py:2365
msgid "Tableau. Build up or down by suit."
msgstr ""
-#: pysollib/stack.py:2355
+#: pysollib/stack.py:2376
msgid "Tableau. Build up or down regardless of suit."
msgstr ""
-#: pysollib/stack.py:2433
+#: pysollib/stack.py:2454
msgid "Waste."
msgstr ""
-#: pysollib/stack.py:2543
+#: pysollib/stack.py:2564
msgid "Free cell."
msgstr ""
-#: pysollib/stats.py:52 pysollib/stats.py:118
+#: pysollib/stats.py:52 pysollib/stats.py:118 pysollib/tile/tkstats.py:661
msgid "Game"
msgstr ""
-#: pysollib/stats.py:53 pysollib/tile/tkstats.py:772
-#: pysollib/tile/tkstats.py:773 pysollib/tile/tkstats.py:817
-#: pysollib/tk/tkstats.py:886 pysollib/tk/tkstats.py:887
-#: pysollib/tk/tkstats.py:940
+#: pysollib/stats.py:53 pysollib/tile/tkstats.py:897
+#: pysollib/tile/tkstats.py:898 pysollib/tile/tkstats.py:942
+#: pysollib/tk/tkstats.py:887 pysollib/tk/tkstats.py:888
+#: pysollib/tk/tkstats.py:941
msgid "Played"
msgstr ""
-#: pysollib/stats.py:54 pysollib/stats.py:157 pysollib/tile/tkstats.py:777
-#: pysollib/tile/tkstats.py:778 pysollib/tile/tkstats.py:824
-#: pysollib/tk/tkstats.py:891 pysollib/tk/tkstats.py:892
-#: pysollib/tk/tkstats.py:948
+#: pysollib/stats.py:54 pysollib/stats.py:157 pysollib/tile/tkstats.py:902
+#: pysollib/tile/tkstats.py:903 pysollib/tile/tkstats.py:949
+#: pysollib/tk/tkstats.py:892 pysollib/tk/tkstats.py:893
+#: pysollib/tk/tkstats.py:949
msgid "Won"
msgstr ""
@@ -1854,11 +1864,11 @@ msgstr ""
msgid "Moves"
msgstr ""
-#: pysollib/stats.py:58 pysollib/tile/tkstats.py:745
-#: pysollib/tile/tkstats.py:764 pysollib/tile/tkstats.py:782
-#: pysollib/tile/tkstats.py:831 pysollib/tk/tkstats.py:859
-#: pysollib/tk/tkstats.py:878 pysollib/tk/tkstats.py:896
-#: pysollib/tk/tkstats.py:956
+#: pysollib/stats.py:58 pysollib/tile/tkstats.py:870
+#: pysollib/tile/tkstats.py:889 pysollib/tile/tkstats.py:907
+#: pysollib/tile/tkstats.py:956 pysollib/tk/tkstats.py:860
+#: pysollib/tk/tkstats.py:879 pysollib/tk/tkstats.py:897
+#: pysollib/tk/tkstats.py:957
msgid "% won"
msgstr ""
@@ -1867,17 +1877,17 @@ msgid "Status"
msgstr ""
#: pysollib/stats.py:118 pysollib/tile/statusbar.py:152
-#: pysollib/tile/tkstats.py:556 pysollib/tk/statusbar.py:163
-#: pysollib/tk/tkstats.py:670
+#: pysollib/tile/tkstats.py:664 pysollib/tk/statusbar.py:163
+#: pysollib/tk/tkstats.py:671
msgid "Game number"
msgstr ""
-#: pysollib/stats.py:118 pysollib/tile/tkstats.py:559
-#: pysollib/tk/tkstats.py:673
+#: pysollib/stats.py:118 pysollib/tile/tkstats.py:667
+#: pysollib/tk/tkstats.py:674
msgid "Started at"
msgstr ""
-#: pysollib/stats.py:142
+#: pysollib/stats.py:142 pysollib/tile/tkstats.py:683
msgid "** UNKNOWN %d **"
msgstr ""
@@ -1901,8 +1911,8 @@ msgstr ""
msgid "Demo"
msgstr ""
-#: pysollib/stats.py:215 pysollib/tile/tkstats.py:287
-#: pysollib/tk/tkstats.py:421
+#: pysollib/stats.py:215 pysollib/tile/tkstats.py:374
+#: pysollib/tk/tkstats.py:422
msgid "Total (%d out of %d games)"
msgstr ""
@@ -2076,7 +2086,7 @@ msgstr ""
msgid "apple"
msgstr ""
-#: pysollib/tile/menubar.py:355 pysollib/tile/menubar.py:528
+#: pysollib/tile/menubar.py:355 pysollib/tile/menubar.py:520
#: pysollib/tk/menubar.py:352 pysollib/tk/menubar.py:524
msgid "&About "
msgstr ""
@@ -2208,377 +2218,360 @@ msgstr ""
msgid "&Comments..."
msgstr ""
-#: pysollib/tile/menubar.py:416 pysollib/tk/menubar.py:413
-msgid "&Statistics"
+#: pysollib/tile/menubar.py:416 pysollib/tile/tkstats.py:633
+#: pysollib/tk/tkstats.py:642
+msgid "&Statistics..."
msgstr ""
-#: pysollib/tile/menubar.py:417 pysollib/tile/menubar.py:426
-#: pysollib/tk/menubar.py:414 pysollib/tk/menubar.py:423
-msgid "Current game..."
+#: pysollib/tile/menubar.py:417
+msgid "Log..."
msgstr ""
-#: pysollib/tile/menubar.py:418 pysollib/tile/menubar.py:427
-#: pysollib/tk/menubar.py:415 pysollib/tk/menubar.py:424
-msgid "All games..."
-msgstr ""
-
-#: pysollib/tile/menubar.py:420 pysollib/tk/menubar.py:417
-msgid "Session log..."
-msgstr ""
-
-#: pysollib/tile/menubar.py:421 pysollib/tk/menubar.py:418
-msgid "Full log..."
-msgstr ""
-
-#: pysollib/tile/menubar.py:424 pysollib/tk/menubar.py:421
-msgid "Progression..."
-msgstr ""
-
-#: pysollib/tile/menubar.py:425 pysollib/tk/menubar.py:422
+#: pysollib/tile/menubar.py:419 pysollib/tk/menubar.py:422
msgid "D&emo statistics"
msgstr ""
-#: pysollib/tile/menubar.py:429 pysollib/tk/menubar.py:426
+#: pysollib/tile/menubar.py:421 pysollib/tk/menubar.py:426
msgid "&Assist"
msgstr ""
-#: pysollib/tile/menubar.py:430 pysollib/tk/menubar.py:427
+#: pysollib/tile/menubar.py:422 pysollib/tk/menubar.py:427
msgid "&Hint"
msgstr ""
-#: pysollib/tile/menubar.py:431 pysollib/tk/menubar.py:428
+#: pysollib/tile/menubar.py:423 pysollib/tk/menubar.py:428
msgid "Highlight p&iles"
msgstr ""
-#: pysollib/tile/menubar.py:432 pysollib/tk/menubar.py:429
+#: pysollib/tile/menubar.py:424 pysollib/tk/menubar.py:429
msgid "&Find card"
msgstr ""
-#: pysollib/tile/menubar.py:434 pysollib/tk/menubar.py:431
+#: pysollib/tile/menubar.py:426 pysollib/tk/menubar.py:431
msgid "&Demo"
msgstr ""
-#: pysollib/tile/menubar.py:435 pysollib/tk/menubar.py:432
+#: pysollib/tile/menubar.py:427 pysollib/tk/menubar.py:432
msgid "Demo (&all games)"
msgstr ""
-#: pysollib/tile/menubar.py:437 pysollib/tile/menubar.py:439
+#: pysollib/tile/menubar.py:429 pysollib/tile/menubar.py:431
#: pysollib/tk/menubar.py:434 pysollib/tk/menubar.py:436
msgid "&Solver (experimental)"
msgstr ""
-#: pysollib/tile/menubar.py:441 pysollib/tk/menubar.py:438
+#: pysollib/tile/menubar.py:433 pysollib/tk/menubar.py:438
msgid "&Piles description"
msgstr ""
-#: pysollib/tile/menubar.py:445 pysollib/tk/menubar.py:442
+#: pysollib/tile/menubar.py:437 pysollib/tk/menubar.py:442
msgid "&Options"
msgstr ""
-#: pysollib/tile/menubar.py:446 pysollib/tk/menubar.py:443
+#: pysollib/tile/menubar.py:438 pysollib/tk/menubar.py:443
msgid "&Player options..."
msgstr ""
-#: pysollib/tile/menubar.py:447 pysollib/tk/menubar.py:444
+#: pysollib/tile/menubar.py:439 pysollib/tk/menubar.py:444
msgid "&Automatic play"
msgstr ""
-#: pysollib/tile/menubar.py:448 pysollib/tk/menubar.py:445
+#: pysollib/tile/menubar.py:440 pysollib/tk/menubar.py:445
msgid "Auto &face up"
msgstr ""
-#: pysollib/tile/menubar.py:449 pysollib/tk/menubar.py:446
+#: pysollib/tile/menubar.py:441 pysollib/tk/menubar.py:446
msgid "A&uto drop"
msgstr ""
-#: pysollib/tile/menubar.py:450 pysollib/tk/menubar.py:447
+#: pysollib/tile/menubar.py:442 pysollib/tk/menubar.py:447
msgid "Auto &deal"
msgstr ""
-#: pysollib/tile/menubar.py:452 pysollib/tk/menubar.py:449
+#: pysollib/tile/menubar.py:444 pysollib/tk/menubar.py:449
msgid "&Quick play"
msgstr ""
-#: pysollib/tile/menubar.py:453 pysollib/tk/menubar.py:450
+#: pysollib/tile/menubar.py:445 pysollib/tk/menubar.py:450
msgid "Assist &level"
msgstr ""
-#: pysollib/tile/menubar.py:454 pysollib/tk/menubar.py:451
+#: pysollib/tile/menubar.py:446 pysollib/tk/menubar.py:451
msgid "Enable &undo"
msgstr ""
-#: pysollib/tile/menubar.py:455 pysollib/tk/menubar.py:452
+#: pysollib/tile/menubar.py:447 pysollib/tk/menubar.py:452
msgid "Enable &bookmarks"
msgstr ""
-#: pysollib/tile/menubar.py:456 pysollib/tk/menubar.py:453
+#: pysollib/tile/menubar.py:448 pysollib/tk/menubar.py:453
msgid "Enable &hint"
msgstr ""
-#: pysollib/tile/menubar.py:457 pysollib/tk/menubar.py:454
+#: pysollib/tile/menubar.py:449 pysollib/tk/menubar.py:454
msgid "Enable highlight p&iles"
msgstr ""
-#: pysollib/tile/menubar.py:458 pysollib/tk/menubar.py:455
+#: pysollib/tile/menubar.py:450 pysollib/tk/menubar.py:455
msgid "Enable highlight &cards"
msgstr ""
-#: pysollib/tile/menubar.py:459 pysollib/tk/menubar.py:456
+#: pysollib/tile/menubar.py:451 pysollib/tk/menubar.py:456
msgid "Enable highlight same &rank"
msgstr ""
-#: pysollib/tile/menubar.py:460 pysollib/tk/menubar.py:457
+#: pysollib/tile/menubar.py:452 pysollib/tk/menubar.py:457
msgid "Highlight &no matching"
msgstr ""
-#: pysollib/tile/menubar.py:462 pysollib/tk/menubar.py:459
+#: pysollib/tile/menubar.py:454 pysollib/tk/menubar.py:459
msgid "&Show removed tiles (in Mahjongg games)"
msgstr ""
-#: pysollib/tile/menubar.py:463 pysollib/tk/menubar.py:460
+#: pysollib/tile/menubar.py:455 pysollib/tk/menubar.py:460
msgid "Show hint &arrow (in Shisen-Sho games)"
msgstr ""
-#: pysollib/tile/menubar.py:465 pysollib/tk/menubar.py:462
+#: pysollib/tile/menubar.py:457 pysollib/tk/menubar.py:462
msgid "&Sound..."
msgstr ""
-#: pysollib/tile/menubar.py:473 pysollib/tk/menubar.py:470
+#: pysollib/tile/menubar.py:465 pysollib/tk/menubar.py:470
msgid "Cards&et..."
msgstr ""
-#: pysollib/tile/menubar.py:474 pysollib/tk/menubar.py:471
+#: pysollib/tile/menubar.py:466 pysollib/tk/menubar.py:471
msgid "Table t&ile..."
msgstr ""
-#: pysollib/tile/menubar.py:476 pysollib/tk/menubar.py:473
+#: pysollib/tile/menubar.py:468 pysollib/tk/menubar.py:473
msgid "Card &background"
msgstr ""
-#: pysollib/tile/menubar.py:477 pysollib/tk/menubar.py:474
+#: pysollib/tile/menubar.py:469 pysollib/tk/menubar.py:474
msgid "Card &view"
msgstr ""
-#: pysollib/tile/menubar.py:478 pysollib/tk/menubar.py:475
+#: pysollib/tile/menubar.py:470 pysollib/tk/menubar.py:475
msgid "Card shado&w"
msgstr ""
-#: pysollib/tile/menubar.py:479 pysollib/tk/menubar.py:476
+#: pysollib/tile/menubar.py:471 pysollib/tk/menubar.py:476
msgid "Shade &legal moves"
msgstr ""
-#: pysollib/tile/menubar.py:480 pysollib/tk/menubar.py:477
+#: pysollib/tile/menubar.py:472 pysollib/tk/menubar.py:477
msgid "&Negative cards bottom"
msgstr ""
-#: pysollib/tile/menubar.py:481 pysollib/tk/menubar.py:478
+#: pysollib/tile/menubar.py:473 pysollib/tk/menubar.py:478
msgid "Shrink face-down cards"
msgstr ""
-#: pysollib/tile/menubar.py:482 pysollib/tk/menubar.py:479
+#: pysollib/tile/menubar.py:474 pysollib/tk/menubar.py:479
msgid "Shade &filled stacks"
msgstr ""
-#: pysollib/tile/menubar.py:483 pysollib/tk/menubar.py:480
+#: pysollib/tile/menubar.py:475 pysollib/tk/menubar.py:480
msgid "A&nimations"
msgstr ""
-#: pysollib/tile/menubar.py:484 pysollib/tk/menubar.py:481
+#: pysollib/tile/menubar.py:476 pysollib/tk/menubar.py:481
msgid "&None"
msgstr ""
-#: pysollib/tile/menubar.py:485 pysollib/tk/menubar.py:482
+#: pysollib/tile/menubar.py:477 pysollib/tk/menubar.py:482
msgid "&Very fast"
msgstr ""
-#: pysollib/tile/menubar.py:486 pysollib/tk/menubar.py:483
+#: pysollib/tile/menubar.py:478 pysollib/tk/menubar.py:483
msgid "&Fast"
msgstr ""
-#: pysollib/tile/menubar.py:487 pysollib/tk/menubar.py:484
+#: pysollib/tile/menubar.py:479 pysollib/tk/menubar.py:484
msgid "&Medium"
msgstr ""
-#: pysollib/tile/menubar.py:488 pysollib/tk/menubar.py:485
+#: pysollib/tile/menubar.py:480 pysollib/tk/menubar.py:485
msgid "&Slow"
msgstr ""
-#: pysollib/tile/menubar.py:489 pysollib/tk/menubar.py:486
+#: pysollib/tile/menubar.py:481 pysollib/tk/menubar.py:486
msgid "V&ery slow"
msgstr ""
-#: pysollib/tile/menubar.py:491 pysollib/tk/menubar.py:488
+#: pysollib/tile/menubar.py:483 pysollib/tk/menubar.py:488
msgid "&Redeal animation"
msgstr ""
-#: pysollib/tile/menubar.py:493 pysollib/tk/menubar.py:490
+#: pysollib/tile/menubar.py:485 pysollib/tk/menubar.py:490
msgid "&Winning animation"
msgstr ""
-#: pysollib/tile/menubar.py:494 pysollib/tk/menubar.py:491
+#: pysollib/tile/menubar.py:486 pysollib/tk/menubar.py:491
msgid "&Mouse"
msgstr ""
-#: pysollib/tile/menubar.py:495 pysollib/tk/menubar.py:492
+#: pysollib/tile/menubar.py:487 pysollib/tk/menubar.py:492
msgid "&Drag-and-Drop"
msgstr ""
-#: pysollib/tile/menubar.py:496 pysollib/tk/menubar.py:493
+#: pysollib/tile/menubar.py:488 pysollib/tk/menubar.py:493
msgid "&Point-and-Click"
msgstr ""
-#: pysollib/tile/menubar.py:497 pysollib/tk/menubar.py:494
+#: pysollib/tile/menubar.py:489 pysollib/tk/menubar.py:494
msgid "&Sticky mouse"
msgstr ""
-#: pysollib/tile/menubar.py:499 pysollib/tk/menubar.py:496
+#: pysollib/tile/menubar.py:491 pysollib/tk/menubar.py:496
msgid "Use mouse for undo/redo"
msgstr ""
-#: pysollib/tile/menubar.py:501 pysollib/tk/menubar.py:498
+#: pysollib/tile/menubar.py:493 pysollib/tk/menubar.py:498
msgid "&Fonts..."
msgstr ""
-#: pysollib/tile/menubar.py:502 pysollib/tk/menubar.py:499
+#: pysollib/tile/menubar.py:494 pysollib/tk/menubar.py:499
msgid "&Colors..."
msgstr ""
-#: pysollib/tile/menubar.py:503 pysollib/tk/menubar.py:500
+#: pysollib/tile/menubar.py:495 pysollib/tk/menubar.py:500
msgid "Time&outs..."
msgstr ""
-#: pysollib/tile/menubar.py:506 pysollib/tk/menubar.py:502
+#: pysollib/tile/menubar.py:498 pysollib/tk/menubar.py:502
msgid "&Toolbar"
msgstr ""
-#: pysollib/tile/menubar.py:508 pysollib/tk/menubar.py:504
+#: pysollib/tile/menubar.py:500 pysollib/tk/menubar.py:504
msgid "Stat&usbar"
msgstr ""
-#: pysollib/tile/menubar.py:509 pysollib/tk/menubar.py:505
+#: pysollib/tile/menubar.py:501 pysollib/tk/menubar.py:505
msgid "Show &statusbar"
msgstr ""
-#: pysollib/tile/menubar.py:510 pysollib/tk/menubar.py:506
+#: pysollib/tile/menubar.py:502 pysollib/tk/menubar.py:506
msgid "Show &number of cards"
msgstr ""
-#: pysollib/tile/menubar.py:511 pysollib/tk/menubar.py:507
+#: pysollib/tile/menubar.py:503 pysollib/tk/menubar.py:507
msgid "Show &help bar"
msgstr ""
-#: pysollib/tile/menubar.py:512 pysollib/tk/menubar.py:508
+#: pysollib/tile/menubar.py:504 pysollib/tk/menubar.py:508
msgid "Save games &geometry"
msgstr ""
-#: pysollib/tile/menubar.py:513 pysollib/tk/menubar.py:509
+#: pysollib/tile/menubar.py:505 pysollib/tk/menubar.py:509
msgid "&Demo logo"
msgstr ""
-#: pysollib/tile/menubar.py:514 pysollib/tk/menubar.py:510
+#: pysollib/tile/menubar.py:506 pysollib/tk/menubar.py:510
msgid "Startup splash sc&reen"
msgstr ""
-#: pysollib/tile/menubar.py:520 pysollib/tk/menubar.py:516
+#: pysollib/tile/menubar.py:512 pysollib/tk/menubar.py:516
msgid "&Help"
msgstr ""
-#: pysollib/tile/menubar.py:521 pysollib/tk/menubar.py:517
+#: pysollib/tile/menubar.py:513 pysollib/tk/menubar.py:517
msgid "&Contents"
msgstr ""
-#: pysollib/tile/menubar.py:522 pysollib/tk/menubar.py:518
+#: pysollib/tile/menubar.py:514 pysollib/tk/menubar.py:518
msgid "&How to play"
msgstr ""
-#: pysollib/tile/menubar.py:523 pysollib/tk/menubar.py:519
+#: pysollib/tile/menubar.py:515 pysollib/tk/menubar.py:519
msgid "&Rules for this game"
msgstr ""
-#: pysollib/tile/menubar.py:524 pysollib/tk/menubar.py:520
+#: pysollib/tile/menubar.py:516 pysollib/tk/menubar.py:520
msgid "&License terms"
msgstr ""
-#: pysollib/tile/menubar.py:641 pysollib/tk/menubar.py:637
+#: pysollib/tile/menubar.py:633 pysollib/tk/menubar.py:637
msgid "All &games..."
msgstr ""
-#: pysollib/tile/menubar.py:643 pysollib/tk/menubar.py:639
+#: pysollib/tile/menubar.py:635 pysollib/tk/menubar.py:639
msgid "Playable pre&view..."
msgstr ""
-#: pysollib/tile/menubar.py:694 pysollib/tk/menubar.py:690
+#: pysollib/tile/menubar.py:686 pysollib/tk/menubar.py:690
msgid "&Mahjongg games"
msgstr ""
-#: pysollib/tile/menubar.py:732 pysollib/tk/menubar.py:728
+#: pysollib/tile/menubar.py:724 pysollib/tk/menubar.py:728
msgid "&Popular games"
msgstr ""
-#: pysollib/tile/menubar.py:740 pysollib/tk/menubar.py:736
+#: pysollib/tile/menubar.py:732 pysollib/tk/menubar.py:736
msgid "&French games"
msgstr ""
-#: pysollib/tile/menubar.py:747 pysollib/tk/menubar.py:743
+#: pysollib/tile/menubar.py:739 pysollib/tk/menubar.py:743
msgid "&Oriental games"
msgstr ""
-#: pysollib/tile/menubar.py:755 pysollib/tk/menubar.py:751
+#: pysollib/tile/menubar.py:747 pysollib/tk/menubar.py:751
msgid "&Special games"
msgstr ""
-#: pysollib/tile/menubar.py:761 pysollib/tk/menubar.py:757
+#: pysollib/tile/menubar.py:753 pysollib/tk/menubar.py:757
msgid "&All games by name"
msgstr ""
-#: pysollib/tile/menubar.py:1040 pysollib/tk/menubar.py:1036
+#: pysollib/tile/menubar.py:1032 pysollib/tk/menubar.py:1036
#: data/glade-translations:72
msgid "Sound settings"
msgstr ""
-#: pysollib/tile/menubar.py:1148 pysollib/tk/menubar.py:1148
+#: pysollib/tile/menubar.py:1140 pysollib/tk/menubar.py:1148
msgid "Select "
msgstr ""
-#: pysollib/tile/menubar.py:1194 pysollib/tk/menubar.py:1195
+#: pysollib/tile/menubar.py:1186 pysollib/tk/menubar.py:1195
msgid "Select table background"
msgstr ""
-#: pysollib/tile/menubar.py:1339
+#: pysollib/tile/menubar.py:1331
msgid "Change theme"
msgstr ""
-#: pysollib/tile/menubar.py:1340
+#: pysollib/tile/menubar.py:1332
msgid ""
"This settings will take effect\n"
"the next time you restart "
msgstr ""
-#: pysollib/tile/menubar.py:1347
+#: pysollib/tile/menubar.py:1339
msgid "Set t&heme"
msgstr ""
-#: pysollib/tile/menubar.py:1353
+#: pysollib/tile/menubar.py:1345
msgid "Default"
msgstr ""
-#: pysollib/tile/menubar.py:1354
+#: pysollib/tile/menubar.py:1346
msgid "Classic"
msgstr ""
-#: pysollib/tile/menubar.py:1355
+#: pysollib/tile/menubar.py:1347
msgid "Revitalized"
msgstr ""
-#: pysollib/tile/menubar.py:1356
+#: pysollib/tile/menubar.py:1348
msgid "Windows native"
msgstr ""
-#: pysollib/tile/menubar.py:1357
+#: pysollib/tile/menubar.py:1349
msgid "XP Native"
msgstr ""
-#: pysollib/tile/menubar.py:1358
+#: pysollib/tile/menubar.py:1350
msgid "Aqua"
msgstr ""
@@ -2906,28 +2899,28 @@ msgstr ""
msgid "Played:"
msgstr ""
-#: pysollib/tile/selectgame.py:361 pysollib/tile/tkstats.py:109
-#: pysollib/tile/tkstats.py:161 pysollib/tk/selectgame.py:371
-#: pysollib/tk/tkstats.py:113 pysollib/tk/tkstats.py:165
+#: pysollib/tile/selectgame.py:361 pysollib/tile/tkstats.py:200
+#: pysollib/tile/tkstats.py:252 pysollib/tk/selectgame.py:371
+#: pysollib/tk/tkstats.py:114 pysollib/tk/tkstats.py:166
#: data/glade-translations:9 data/glade-translations:13
msgid "Won:"
msgstr ""
-#: pysollib/tile/selectgame.py:362 pysollib/tile/tkstats.py:110
-#: pysollib/tile/tkstats.py:162 pysollib/tk/selectgame.py:372
-#: pysollib/tk/tkstats.py:114 pysollib/tk/tkstats.py:166
+#: pysollib/tile/selectgame.py:362 pysollib/tile/tkstats.py:201
+#: pysollib/tile/tkstats.py:254 pysollib/tk/selectgame.py:372
+#: pysollib/tk/tkstats.py:115 pysollib/tk/tkstats.py:167
#: data/glade-translations:11 data/glade-translations:14
msgid "Lost:"
msgstr ""
-#: pysollib/tile/selectgame.py:363 pysollib/tile/tkstats.py:626
-#: pysollib/tk/selectgame.py:373 pysollib/tk/tkstats.py:740
+#: pysollib/tile/selectgame.py:363 pysollib/tile/tkstats.py:763
+#: pysollib/tk/selectgame.py:373 pysollib/tk/tkstats.py:741
#: data/glade-translations:18
msgid "Playing time:"
msgstr ""
-#: pysollib/tile/selectgame.py:364 pysollib/tile/tkstats.py:633
-#: pysollib/tk/selectgame.py:374 pysollib/tk/tkstats.py:747
+#: pysollib/tile/selectgame.py:364 pysollib/tile/tkstats.py:770
+#: pysollib/tk/selectgame.py:374 pysollib/tk/tkstats.py:748
#: data/glade-translations:19
msgid "Moves:"
msgstr ""
@@ -3246,214 +3239,207 @@ msgstr ""
msgid "Unable to service request:\n"
msgstr ""
-#: pysollib/tile/tkstats.py:81 pysollib/tk/tkstats.py:80
+#: pysollib/tile/tkstats.py:92 pysollib/tile/tkstats.py:727
+#: pysollib/tile/tkstats.py:919 pysollib/tk/tkstats.py:910
+#: data/glade-translations:17
+msgid "Current game"
+msgstr ""
+
+#: pysollib/tile/tkstats.py:96 pysollib/tile/tkstats.py:735
+#: pysollib/tile/tkstats.py:914 pysollib/tk/tkstats.py:904
+#: data/glade-translations:30
+msgid "All games"
+msgstr ""
+
+#: pysollib/tile/tkstats.py:106
+msgid "Progression"
+msgstr ""
+
+#: pysollib/tile/tkstats.py:121
+msgid "&Play this game"
+msgstr ""
+
+#: pysollib/tile/tkstats.py:123 pysollib/tk/tkstats.py:294
+msgid "&Reset..."
+msgstr ""
+
+#: pysollib/tile/tkstats.py:181 pysollib/tk/tkstats.py:81
msgid "Demo games"
msgstr ""
-#: pysollib/tile/tkstats.py:93 pysollib/tk/tkstats.py:97
+#: pysollib/tile/tkstats.py:186 pysollib/tk/tkstats.py:98
#: data/glade-translations:16
msgid "Total"
msgstr ""
-#: pysollib/tile/tkstats.py:95 pysollib/tk/tkstats.py:99
+#: pysollib/tile/tkstats.py:188 pysollib/tk/tkstats.py:100
#: data/glade-translations:12
msgid "Current session"
msgstr ""
-#: pysollib/tile/tkstats.py:111 pysollib/tile/tkstats.py:163
-#: pysollib/tk/tkstats.py:115 pysollib/tk/tkstats.py:167
+#: pysollib/tile/tkstats.py:202 pysollib/tile/tkstats.py:256
+#: pysollib/tk/tkstats.py:116 pysollib/tk/tkstats.py:168
#: data/glade-translations:10 data/glade-translations:15
msgid "Total:"
msgstr ""
-#: pysollib/tile/tkstats.py:206 pysollib/tk/tkstats.py:280
+#: pysollib/tile/tkstats.py:309 pysollib/tk/tkstats.py:281
msgid "No games"
msgstr ""
-#: pysollib/tile/tkstats.py:217 pysollib/tk/tkstats.py:291
-msgid "&All games..."
+#: pysollib/tile/tkstats.py:513
+msgid "Log"
msgstr ""
-#: pysollib/tile/tkstats.py:219 pysollib/tk/tkstats.py:293
-msgid "&Reset..."
-msgstr ""
-
-#: pysollib/tile/tkstats.py:387
-msgid "&Play this game"
-msgstr ""
-
-#: pysollib/tile/tkstats.py:389 pysollib/tile/tkstats.py:462
-#: pysollib/tile/tkstats.py:485 pysollib/tk/tkstats.py:517
-#: pysollib/tk/tkstats.py:583 pysollib/tk/tkstats.py:598
+#: pysollib/tile/tkstats.py:544 pysollib/tk/tkstats.py:518
+#: pysollib/tk/tkstats.py:584 pysollib/tk/tkstats.py:599
msgid "&Save to file"
msgstr ""
-#: pysollib/tile/tkstats.py:390 pysollib/tk/tkstats.py:518
-msgid "&Reset all..."
-msgstr ""
-
-#: pysollib/tile/tkstats.py:461 pysollib/tk/tkstats.py:583
-msgid "Session &log..."
-msgstr ""
-
-#: pysollib/tile/tkstats.py:484 pysollib/tk/tkstats.py:598
-msgid "&Full log..."
-msgstr ""
-
-#: pysollib/tile/tkstats.py:500 pysollib/tk/tkstats.py:613
+#: pysollib/tile/tkstats.py:604 pysollib/tk/tkstats.py:614
msgid "Highlight piles: "
msgstr ""
-#: pysollib/tile/tkstats.py:501 pysollib/tk/tkstats.py:614
+#: pysollib/tile/tkstats.py:605 pysollib/tk/tkstats.py:615
msgid "Highlight cards: "
msgstr ""
-#: pysollib/tile/tkstats.py:502 pysollib/tk/tkstats.py:615
+#: pysollib/tile/tkstats.py:606 pysollib/tk/tkstats.py:616
msgid "Highlight same rank: "
msgstr ""
-#: pysollib/tile/tkstats.py:505 pysollib/tk/tkstats.py:618
+#: pysollib/tile/tkstats.py:609 pysollib/tk/tkstats.py:619
msgid ""
"\n"
"Redeals: "
msgstr ""
-#: pysollib/tile/tkstats.py:506 pysollib/tk/tkstats.py:619
+#: pysollib/tile/tkstats.py:610 pysollib/tk/tkstats.py:620
msgid ""
"\n"
"Cards in Talon: "
msgstr ""
-#: pysollib/tile/tkstats.py:508 pysollib/tk/tkstats.py:621
+#: pysollib/tile/tkstats.py:612 pysollib/tk/tkstats.py:622
msgid ""
"\n"
"Cards in Waste: "
msgstr ""
-#: pysollib/tile/tkstats.py:510 pysollib/tk/tkstats.py:623
+#: pysollib/tile/tkstats.py:614 pysollib/tk/tkstats.py:624
msgid ""
"\n"
"Cards in Foundations: "
msgstr ""
-#: pysollib/tile/tkstats.py:513 pysollib/tk/tkstats.py:626
+#: pysollib/tile/tkstats.py:618 pysollib/tk/tkstats.py:627
msgid "Game status"
msgstr ""
-#: pysollib/tile/tkstats.py:516 pysollib/tk/tkstats.py:629
+#: pysollib/tile/tkstats.py:621 pysollib/tk/tkstats.py:630
msgid "Playing time: "
msgstr ""
-#: pysollib/tile/tkstats.py:517 pysollib/tk/tkstats.py:630
+#: pysollib/tile/tkstats.py:622 pysollib/tk/tkstats.py:631
msgid "Started at: "
msgstr ""
-#: pysollib/tile/tkstats.py:518 pysollib/tk/tkstats.py:631
+#: pysollib/tile/tkstats.py:623 pysollib/tk/tkstats.py:632
msgid "Moves: "
msgstr ""
-#: pysollib/tile/tkstats.py:519 pysollib/tk/tkstats.py:632
+#: pysollib/tile/tkstats.py:624 pysollib/tk/tkstats.py:633
msgid "Undo moves: "
msgstr ""
-#: pysollib/tile/tkstats.py:520 pysollib/tk/tkstats.py:633
+#: pysollib/tile/tkstats.py:625 pysollib/tk/tkstats.py:634
msgid "Bookmark moves: "
msgstr ""
-#: pysollib/tile/tkstats.py:521 pysollib/tk/tkstats.py:634
+#: pysollib/tile/tkstats.py:626 pysollib/tk/tkstats.py:635
msgid "Demo moves: "
msgstr ""
-#: pysollib/tile/tkstats.py:522 pysollib/tk/tkstats.py:635
+#: pysollib/tile/tkstats.py:627 pysollib/tk/tkstats.py:636
msgid "Total player moves: "
msgstr ""
-#: pysollib/tile/tkstats.py:523 pysollib/tk/tkstats.py:636
+#: pysollib/tile/tkstats.py:628 pysollib/tk/tkstats.py:637
msgid "Total moves in this game: "
msgstr ""
-#: pysollib/tile/tkstats.py:524 pysollib/tk/tkstats.py:637
+#: pysollib/tile/tkstats.py:629 pysollib/tk/tkstats.py:638
msgid "Hints: "
msgstr ""
-#: pysollib/tile/tkstats.py:528 pysollib/tk/tkstats.py:641
-msgid "&Statistics..."
-msgstr ""
-
-#: pysollib/tile/tkstats.py:553 pysollib/tk/tkstats.py:667
+#: pysollib/tile/tkstats.py:657 pysollib/tk/tkstats.py:668
msgid "N"
msgstr ""
-#: pysollib/tile/tkstats.py:562 pysollib/tk/tkstats.py:676
+#: pysollib/tile/tkstats.py:670 pysollib/tk/tkstats.py:677
msgid "Result"
msgstr ""
-#: pysollib/tile/tkstats.py:618 pysollib/tk/tkstats.py:732
+#: pysollib/tile/tkstats.py:732 pysollib/tk/tkstats.py:786
+msgid "No TOP for this game"
+msgstr ""
+
+#: pysollib/tile/tkstats.py:740
+msgid "No TOP for all games"
+msgstr ""
+
+#: pysollib/tile/tkstats.py:751 pysollib/tk/tkstats.py:733
#: data/glade-translations:21
msgid "Minimum"
msgstr ""
-#: pysollib/tile/tkstats.py:619 pysollib/tk/tkstats.py:733
+#: pysollib/tile/tkstats.py:753 pysollib/tk/tkstats.py:734
#: data/glade-translations:22
msgid "Maximum"
msgstr ""
-#: pysollib/tile/tkstats.py:620 pysollib/tk/tkstats.py:734
+#: pysollib/tile/tkstats.py:755 pysollib/tk/tkstats.py:735
#: data/glade-translations:23
msgid "Average"
msgstr ""
-#: pysollib/tile/tkstats.py:640 pysollib/tk/tkstats.py:754
+#: pysollib/tile/tkstats.py:777 pysollib/tk/tkstats.py:755
#: data/glade-translations:20
msgid "Total moves:"
msgstr ""
-#: pysollib/tile/tkstats.py:671 pysollib/tk/tkstats.py:785
-msgid "No TOP for this game"
-msgstr ""
-
-#: pysollib/tile/tkstats.py:743 pysollib/tile/tkstats.py:759
-#: pysollib/tile/tkstats.py:859 pysollib/tk/tkstats.py:857
-#: pysollib/tk/tkstats.py:873 pysollib/tk/tkstats.py:985
+#: pysollib/tile/tkstats.py:868 pysollib/tile/tkstats.py:884
+#: pysollib/tile/tkstats.py:975 pysollib/tk/tkstats.py:858
+#: pysollib/tk/tkstats.py:874 pysollib/tk/tkstats.py:986
msgid "Games/day"
msgstr ""
-#: pysollib/tile/tkstats.py:744 pysollib/tile/tkstats.py:861
-#: pysollib/tk/tkstats.py:858 pysollib/tk/tkstats.py:987
+#: pysollib/tile/tkstats.py:869 pysollib/tile/tkstats.py:977
+#: pysollib/tk/tkstats.py:859 pysollib/tk/tkstats.py:988
msgid "Games/week"
msgstr ""
-#: pysollib/tile/tkstats.py:789 pysollib/tk/tkstats.py:903
-#: data/glade-translations:30
-msgid "All games"
-msgstr ""
-
-#: pysollib/tile/tkstats.py:794 pysollib/tk/tkstats.py:909
-#: data/glade-translations:17
-msgid "Current game"
-msgstr ""
-
-#: pysollib/tile/tkstats.py:799 pysollib/tk/tkstats.py:916
+#: pysollib/tile/tkstats.py:924 pysollib/tk/tkstats.py:917
msgid "Statistics for"
msgstr ""
-#: pysollib/tile/tkstats.py:804 pysollib/tk/tkstats.py:923
+#: pysollib/tile/tkstats.py:929 pysollib/tk/tkstats.py:924
msgid "Last 7 days"
msgstr ""
-#: pysollib/tile/tkstats.py:805 pysollib/tk/tkstats.py:924
+#: pysollib/tile/tkstats.py:930 pysollib/tk/tkstats.py:925
msgid "Last month"
msgstr ""
-#: pysollib/tile/tkstats.py:806 pysollib/tk/tkstats.py:925
+#: pysollib/tile/tkstats.py:931 pysollib/tk/tkstats.py:926
msgid "Last year"
msgstr ""
-#: pysollib/tile/tkstats.py:807 pysollib/tk/tkstats.py:926
+#: pysollib/tile/tkstats.py:932 pysollib/tk/tkstats.py:927
msgid "All time"
msgstr ""
-#: pysollib/tile/tkstats.py:813 pysollib/tk/tkstats.py:934
+#: pysollib/tile/tkstats.py:938 pysollib/tk/tkstats.py:935
msgid "Show graphs"
msgstr ""
@@ -3537,6 +3523,30 @@ msgstr ""
msgid "Toolbar"
msgstr ""
+#: pysollib/tk/menubar.py:413
+msgid "&Statistics"
+msgstr ""
+
+#: pysollib/tk/menubar.py:414 pysollib/tk/menubar.py:423
+msgid "Current game..."
+msgstr ""
+
+#: pysollib/tk/menubar.py:415 pysollib/tk/menubar.py:424
+msgid "All games..."
+msgstr ""
+
+#: pysollib/tk/menubar.py:417
+msgid "Session log..."
+msgstr ""
+
+#: pysollib/tk/menubar.py:418
+msgid "Full log..."
+msgstr ""
+
+#: pysollib/tk/menubar.py:421
+msgid "Progression..."
+msgstr ""
+
#: pysollib/tk/playeroptionsdialog.py:120
msgid "Choose..."
msgstr ""
@@ -3549,6 +3559,22 @@ msgstr ""
msgid "Enable samles"
msgstr ""
+#: pysollib/tk/tkstats.py:292
+msgid "&All games..."
+msgstr ""
+
+#: pysollib/tk/tkstats.py:519
+msgid "&Reset all..."
+msgstr ""
+
+#: pysollib/tk/tkstats.py:584
+msgid "Session &log..."
+msgstr ""
+
+#: pysollib/tk/tkstats.py:599
+msgid "&Full log..."
+msgstr ""
+
#: pysollib/util.py:80
msgid "Club"
msgstr ""
diff --git a/po/ru_games.po b/po/ru_games.po
index 78afba2e..81348862 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: Wed Feb 21 17:56:30 2007\n"
-"PO-Revision-Date: 2007-02-12 19:08+0300\n"
+"POT-Creation-Date: Mon Mar 5 17:55:43 2007\n"
+"PO-Revision-Date: 2007-03-05 18:01+0300\n"
"Last-Translator: Скоморох \n"
"Language-Team: Russian \n"
"MIME-Version: 1.0\n"
@@ -1104,6 +1104,10 @@ msgstr "Пять пирамид"
msgid "Flamenco"
msgstr "Фламенко"
+#, fuzzy
+msgid "Flipper"
+msgstr "Dieppe"
+
msgid "Floating City"
msgstr "Плавающий город"
@@ -1770,6 +1774,9 @@ msgstr "Le Grande Teton"
msgid "Legion"
msgstr "Легион"
+msgid "Leprechaun"
+msgstr ""
+
msgid "Les Quatre Coins"
msgstr "Les Quatre Coins"
@@ -2840,7 +2847,7 @@ msgid "Princess Patience"
msgstr "Княжеский пасьянс"
msgid "Progression"
-msgstr "Движение"
+msgstr "Прогресс"
msgid "Provisions"
msgstr "Припасы"
@@ -3149,6 +3156,10 @@ msgstr "Тенистые аллеи"
msgid "Shamrocks"
msgstr "Трилистники"
+#, fuzzy
+msgid "Shamrocks II"
+msgstr "Трилистники"
+
msgid "Shamsher"
msgstr ""
@@ -3506,6 +3517,10 @@ msgstr "Сад"
msgid "The Great Wall"
msgstr "Великая Стена"
+#, fuzzy
+msgid "The Jolly Roger"
+msgstr "Дверь"
+
msgid "The Last Monarch"
msgstr "Последний Монарх"
diff --git a/po/ru_pysol.po b/po/ru_pysol.po
index af9a242b..10a14788 100644
--- a/po/ru_pysol.po
+++ b/po/ru_pysol.po
@@ -5,8 +5,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PySol 0.0.1\n"
-"POT-Creation-Date: Wed Feb 21 17:57:33 2007\n"
-"PO-Revision-Date: 2007-02-19 18:56+0300\n"
+"POT-Creation-Date: Mon Mar 5 17:56:51 2007\n"
+"PO-Revision-Date: 2007-03-05 18:00+0300\n"
"Last-Translator: Скоморох \n"
"Language-Team: Russian \n"
"MIME-Version: 1.0\n"
@@ -19,8 +19,8 @@ msgstr ""
msgid "New game"
msgstr "Новая игра"
-#: pysollib/actions.py:272 pysollib/tile/menubar.py:832
-#: pysollib/tile/menubar.py:846 pysollib/tk/menubar.py:828
+#: pysollib/actions.py:272 pysollib/tile/menubar.py:824
+#: pysollib/tile/menubar.py:838 pysollib/tk/menubar.py:828
#: pysollib/tk/menubar.py:842
msgid "Select game"
msgstr "Выбрать игру"
@@ -55,19 +55,17 @@ msgstr ""
msgid "&Next number"
msgstr "&Следующий номер"
-#: pysollib/actions.py:315 pysollib/app.py:891 pysollib/app.py:1178
-#: pysollib/app.py:1190 pysollib/game.py:1012 pysollib/game.py:2247
+#: pysollib/actions.py:315 pysollib/app.py:904 pysollib/app.py:1191
+#: pysollib/app.py:1203 pysollib/game.py:1030 pysollib/game.py:2265
#: pysollib/tile/colorsdialog.py:112 pysollib/tile/edittextdialog.py:83
#: pysollib/tile/fontsdialog.py:144 pysollib/tile/fontsdialog.py:204
-#: pysollib/tile/gameinfodialog.py:155 pysollib/tile/menubar.py:1344
+#: pysollib/tile/gameinfodialog.py:155 pysollib/tile/menubar.py:1336
#: pysollib/tile/playeroptionsdialog.py:111 pysollib/tile/selectcardset.py:387
#: pysollib/tile/selecttile.py:161 pysollib/tile/soundoptionsdialog.py:168
#: pysollib/tile/soundoptionsdialog.py:206 pysollib/tile/timeoutsdialog.py:94
-#: pysollib/tile/tkhtml.py:501 pysollib/tile/tkstats.py:216
-#: pysollib/tile/tkstats.py:388 pysollib/tile/tkstats.py:461
-#: pysollib/tile/tkstats.py:484 pysollib/tile/tkstats.py:527
-#: pysollib/tile/tkstats.py:598 pysollib/tile/tkstats.py:682
-#: pysollib/tile/tkstats.py:844 pysollib/tile/tkwidget.py:154
+#: pysollib/tile/tkhtml.py:501 pysollib/tile/tkstats.py:122
+#: pysollib/tile/tkstats.py:543 pysollib/tile/tkstats.py:632
+#: pysollib/tile/tkstats.py:713 pysollib/tile/tkwidget.py:154
#: pysollib/tile/tkwidget.py:329 pysollib/tk/colorsdialog.py:111
#: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:143
#: pysollib/tk/fontsdialog.py:205 pysollib/tk/gameinfodialog.py:155
@@ -76,17 +74,17 @@ msgstr "&Следующий номер"
#: pysollib/tk/selectcardset.py:397 pysollib/tk/selecttile.py:159
#: pysollib/tk/soundoptionsdialog.py:170 pysollib/tk/soundoptionsdialog.py:211
#: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkhtml.py:500
-#: pysollib/tk/tkstats.py:290 pysollib/tk/tkstats.py:516
-#: pysollib/tk/tkstats.py:583 pysollib/tk/tkstats.py:598
-#: pysollib/tk/tkstats.py:640 pysollib/tk/tkstats.py:712
-#: pysollib/tk/tkstats.py:796 pysollib/tk/tkstats.py:970
+#: pysollib/tk/tkstats.py:291 pysollib/tk/tkstats.py:517
+#: pysollib/tk/tkstats.py:584 pysollib/tk/tkstats.py:599
+#: pysollib/tk/tkstats.py:641 pysollib/tk/tkstats.py:713
+#: pysollib/tk/tkstats.py:797 pysollib/tk/tkstats.py:971
#: pysollib/tk/tkwidget.py:160 pysollib/tk/tkwidget.py:324
msgid "&OK"
msgstr "&ОК"
-#: pysollib/actions.py:315 pysollib/app.py:892 pysollib/app.py:1190
-#: pysollib/game.py:1012 pysollib/game.py:1676 pysollib/game.py:1692
-#: pysollib/game.py:1699 pysollib/game.py:1705
+#: pysollib/actions.py:315 pysollib/app.py:905 pysollib/app.py:1203
+#: pysollib/game.py:1030 pysollib/game.py:1694 pysollib/game.py:1710
+#: pysollib/game.py:1717 pysollib/game.py:1723
#: pysollib/tile/colorsdialog.py:112 pysollib/tile/edittextdialog.py:83
#: pysollib/tile/fontsdialog.py:144 pysollib/tile/fontsdialog.py:204
#: pysollib/tile/playeroptionsdialog.py:111 pysollib/tile/selectcardset.py:237
@@ -185,7 +183,7 @@ msgstr " Демо"
msgid " Demo "
msgstr " Демо "
-#: pysollib/actions.py:579 pysollib/actions.py:598
+#: pysollib/actions.py:579 pysollib/actions.py:599
msgid " for "
msgstr " для "
@@ -193,33 +191,35 @@ msgstr " для "
msgid "Statistics for "
msgstr "Статистика игры "
-#: pysollib/actions.py:588 pysollib/tile/selectgame.py:345
-#: pysollib/tile/toolbar.py:200 pysollib/tk/selectgame.py:350
-#: pysollib/tk/toolbar.py:203
+#: pysollib/actions.py:589 pysollib/tile/selectgame.py:345
+#: pysollib/tile/tkstats.py:76 pysollib/tile/toolbar.py:200
+#: pysollib/tk/selectgame.py:350 pysollib/tk/toolbar.py:203
msgid "Statistics"
msgstr "Статистика"
-#: pysollib/actions.py:592 data/glade-translations:31
+#: pysollib/actions.py:593 pysollib/tile/tkstats.py:525
+#: data/glade-translations:31
msgid "Full log"
msgstr "Полный лог"
-#: pysollib/actions.py:595 data/glade-translations:32
+#: pysollib/actions.py:596 pysollib/tile/tkstats.py:529
+#: data/glade-translations:32
msgid "Session log"
msgstr "Лог сессии"
-#: pysollib/actions.py:601
+#: pysollib/actions.py:602
msgid "Game Info"
msgstr "Информация об игре"
-#: pysollib/actions.py:604
+#: pysollib/actions.py:605
msgid "Statistics progression"
msgstr "Прогресс статистики"
-#: pysollib/actions.py:620
+#: pysollib/actions.py:621
msgid "Reset all statistics"
msgstr "Очистить всю статистику"
-#: pysollib/actions.py:621
+#: pysollib/actions.py:622
msgid ""
"Reset ALL statistics and logs for player\n"
"%s ?"
@@ -227,11 +227,11 @@ msgstr ""
"Очистить всю статистику и лог для игрока\n"
"%s?"
-#: pysollib/actions.py:627
+#: pysollib/actions.py:628
msgid "Reset game statistics"
msgstr "Очистить статистику игры"
-#: pysollib/actions.py:628
+#: pysollib/actions.py:629
msgid ""
"Reset statistics and logs for player\n"
"%s\n"
@@ -243,23 +243,23 @@ msgstr ""
"и игры\n"
"%s?"
-#: pysollib/actions.py:684
+#: pysollib/actions.py:685
msgid "Play demo"
msgstr "Показать демо"
-#: pysollib/actions.py:695
+#: pysollib/actions.py:696
msgid "Set player options"
msgstr "Установить настройки игрока"
-#: pysollib/actions.py:709 data/glade-translations:40
+#: pysollib/actions.py:710 data/glade-translations:40
msgid "Set colors"
msgstr "Настроить цвета"
-#: pysollib/actions.py:726
+#: pysollib/actions.py:727
msgid "Set fonts"
msgstr "Настроить шрифт"
-#: pysollib/actions.py:735 data/glade-translations:33
+#: pysollib/actions.py:736 data/glade-translations:33
msgid "Set timeouts"
msgstr "Настроить таймауты"
@@ -267,29 +267,29 @@ msgstr "Настроить таймауты"
msgid "Unknown"
msgstr "Неизвестный"
-#: pysollib/app.py:893 pysollib/game.py:1676 pysollib/game.py:1692
-#: pysollib/game.py:1699 pysollib/game.py:1705 pysollib/tile/menubar.py:358
+#: pysollib/app.py:906 pysollib/game.py:1694 pysollib/game.py:1710
+#: pysollib/game.py:1717 pysollib/game.py:1723 pysollib/tile/menubar.py:358
#: pysollib/tk/menubar.py:355
msgid "&New game"
msgstr "&Новая игра"
-#: pysollib/app.py:1036
+#: pysollib/app.py:1049
msgid "Loading %s %s..."
msgstr "Загружается %s %s..."
-#: pysollib/app.py:1075
+#: pysollib/app.py:1088
msgid " load error"
msgstr " ошибка при загрузке"
-#: pysollib/app.py:1076
+#: pysollib/app.py:1089
msgid "Error while loading "
msgstr "Ошибка при загрузке"
-#: pysollib/app.py:1170
+#: pysollib/app.py:1183
msgid "Incompatible "
msgstr "Несовместимый "
-#: pysollib/app.py:1172
+#: pysollib/app.py:1185
msgid ""
"The currently selected %s %s\n"
"is not compatible with the game\n"
@@ -303,19 +303,23 @@ msgstr ""
"\n"
"Необходимо выбрать %s типа %s.\n"
-#: pysollib/app.py:1188
+#: pysollib/app.py:1201
msgid "Please select a %s type %s"
msgstr "Выберите %s типа %s"
-#: pysollib/game.py:931 pysollib/game.py:937
+#: pysollib/app.py:1427
+msgid "Error loading plugin %s: %s"
+msgstr ""
+
+#: pysollib/game.py:949 pysollib/game.py:955
msgid "Player\n"
msgstr "Игрок\n"
-#: pysollib/game.py:1008
+#: pysollib/game.py:1026
msgid "Discard current game ?"
msgstr "Завершить текущую игру?"
-#: pysollib/game.py:1629
+#: pysollib/game.py:1647
msgid ""
"\n"
"You have reached\n"
@@ -325,7 +329,7 @@ msgstr ""
"Вы достигли\n"
"#%d в %s игрового времени"
-#: pysollib/game.py:1634
+#: pysollib/game.py:1652
msgid ""
"\n"
"and #%d in the %s of moves"
@@ -333,7 +337,7 @@ msgstr ""
"\n"
"и #%d в %s количества ходов"
-#: pysollib/game.py:1637
+#: pysollib/game.py:1655
msgid ""
"\n"
"You have reached\n"
@@ -343,13 +347,13 @@ msgstr ""
"Вы достигли\n"
"#%d в %s количества ходов"
-#: pysollib/game.py:1667 pysollib/game.py:1684
+#: pysollib/game.py:1685 pysollib/game.py:1702
#: pysollib/tile/soundoptionsdialog.py:102
#: pysollib/tk/soundoptionsdialog.py:100
msgid "Game won"
msgstr "Игра выиграна"
-#: pysollib/game.py:1668
+#: pysollib/game.py:1686
msgid ""
"\n"
"Congratulations, this\n"
@@ -368,7 +372,7 @@ msgstr ""
"Количество ходов: %s\n"
"%s\n"
-#: pysollib/game.py:1685
+#: pysollib/game.py:1703
msgid ""
"\n"
"Congratulations, you did it !\n"
@@ -385,13 +389,13 @@ msgstr ""
"Количество ходов: %s\n"
"%s\n"
-#: pysollib/game.py:1697 pysollib/game.py:1703
+#: pysollib/game.py:1715 pysollib/game.py:1721
#: pysollib/tile/soundoptionsdialog.py:100
#: pysollib/tk/soundoptionsdialog.py:98
msgid "Game finished"
msgstr "Игра закончена"
-#: pysollib/game.py:1698 pysollib/game.py:2248
+#: pysollib/game.py:1716 pysollib/game.py:2266
msgid ""
"\n"
"Game finished\n"
@@ -399,7 +403,7 @@ msgstr ""
"\n"
"Игра закончена\n"
-#: pysollib/game.py:1704
+#: pysollib/game.py:1722
msgid ""
"\n"
"Game finished, but not without my help...\n"
@@ -407,35 +411,35 @@ msgstr ""
"\n"
"Игра закончена, но не без моей помощи...\n"
-#: pysollib/game.py:1705
+#: pysollib/game.py:1723
msgid "&Restart"
msgstr "&Начало"
-#: pysollib/game.py:2137
+#: pysollib/game.py:2155
msgid "Score %6d"
msgstr "Счёт %6d"
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Cool"
msgstr "&Отлично"
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Great"
msgstr "&Здорово"
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Wow"
msgstr "&Ура"
-#: pysollib/game.py:2239
+#: pysollib/game.py:2257
msgid "&Yeah"
msgstr "&Ага"
-#: pysollib/game.py:2240 pysollib/game.py:2251 pysollib/game.py:2263
+#: pysollib/game.py:2258 pysollib/game.py:2269 pysollib/game.py:2281
msgid " Autopilot"
msgstr " Автопилот"
-#: pysollib/game.py:2241
+#: pysollib/game.py:2259
msgid ""
"\n"
"Game solved in %d moves.\n"
@@ -443,19 +447,19 @@ msgstr ""
"\n"
"Игра решена за %d ходов\n"
-#: pysollib/game.py:2262
+#: pysollib/game.py:2280
msgid "&Hmm"
msgstr "&Хмм"
-#: pysollib/game.py:2262
+#: pysollib/game.py:2280
msgid "&Oh well"
msgstr "&Ох"
-#: pysollib/game.py:2262
+#: pysollib/game.py:2280
msgid "&That's life"
msgstr "&Такова жизнь"
-#: pysollib/game.py:2264
+#: pysollib/game.py:2282
msgid ""
"\n"
"This won't come out...\n"
@@ -463,31 +467,31 @@ msgstr ""
"\n"
"Не удалось...\n"
-#: pysollib/game.py:2704
+#: pysollib/game.py:2722
msgid "Set bookmark"
msgstr "Установить закладку"
-#: pysollib/game.py:2705
+#: pysollib/game.py:2723
msgid "Replace existing bookmark %d ?"
msgstr "Заменить существующую закладку %d ?"
-#: pysollib/game.py:2727
+#: pysollib/game.py:2745
msgid "Goto bookmark"
msgstr "Перейти к закладке"
-#: pysollib/game.py:2728
+#: pysollib/game.py:2746
msgid "Goto bookmark %d ?"
msgstr "Перейти к закладке %d ?"
-#: pysollib/game.py:2759
+#: pysollib/game.py:2777
msgid "Open game"
msgstr "Открыть игру"
-#: pysollib/game.py:2770 pysollib/game.py:2780 pysollib/game.py:2785
+#: pysollib/game.py:2788 pysollib/game.py:2798 pysollib/game.py:2803
msgid "Load game error"
msgstr "Ошибка при загрузке игры"
-#: pysollib/game.py:2771
+#: pysollib/game.py:2789
msgid ""
"Error while loading game.\n"
"\n"
@@ -499,11 +503,11 @@ msgstr ""
"Возможно повреждён файл,\n"
"или ошибка в программе."
-#: pysollib/game.py:2781
+#: pysollib/game.py:2799
msgid "Error while loading game"
msgstr "Ошибка при загрузке игры"
-#: pysollib/game.py:2786
+#: pysollib/game.py:2804
msgid ""
"Internal error while loading game.\n"
"\n"
@@ -513,25 +517,25 @@ msgstr ""
"\n"
"Пожалуйста сообщите об этой ошибке."
-#: pysollib/game.py:2815
+#: pysollib/game.py:2833
msgid "Save game error"
msgstr "Ошибка при сохранении игры"
-#: pysollib/game.py:2816
+#: pysollib/game.py:2834
msgid "Error while saving game"
msgstr "Ошибка при сохранении игры"
-#: pysollib/game.py:2841
+#: pysollib/game.py:2859
msgid "Invalid or damaged %s save file"
msgstr ""
-#: pysollib/game.py:2855
+#: pysollib/game.py:2873
msgid ""
"Cannot load games saved with\n"
"%s version %s"
msgstr ""
-#: pysollib/game.py:2872
+#: pysollib/game.py:2890
msgid ""
"Cannot load this game from version %s\n"
"as the game rules have changed\n"
@@ -785,12 +789,12 @@ msgstr ""
"4: 8 Д 3 7 В 2 6 10 Т 5 9 К"
#: pysollib/games/canfield.py:528 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1482 pysollib/util.py:85
+#: pysollib/stack.py:1503 pysollib/util.py:85
msgid "King"
msgstr "Король"
#: pysollib/games/canfield.py:531 pysollib/games/special/tarock.py:224
-#: pysollib/stack.py:1481 pysollib/util.py:85
+#: pysollib/stack.py:1502 pysollib/util.py:85
msgid "Queen"
msgstr "Королева"
@@ -799,26 +803,25 @@ msgid "Tableau. Build down by suit or of the same rank."
msgstr ""
"Игровой стол. Складывать в масть по убыванию или с таким же достоинством."
-#: pysollib/games/fan.py:285
+#: pysollib/games/fan.py:307
msgid "Draw"
msgstr "Снять"
-#: pysollib/games/fan.py:285
+#: pysollib/games/fan.py:307
msgid "X"
msgstr "Х"
-#: pysollib/games/fan.py:470
-#, fuzzy
+#: pysollib/games/fan.py:492
msgid "Base card - Ace or King."
-msgstr "Базовая карта - %s."
+msgstr "Базовая карта - Туз или Король."
#: pysollib/games/golf.py:114 pysollib/games/golf.py:302
-#: pysollib/stack.py:2145
+#: pysollib/stack.py:2166
msgid "Tableau. No building."
msgstr "Игровой стол. Без выкладывания."
#: pysollib/games/golf.py:387 pysollib/games/pileon.py:257
-#: pysollib/stack.py:2078
+#: pysollib/stack.py:2099
msgid "Foundation. Build up regardless of suit."
msgstr "Базовая ячейка. Складывать по возрастанию не считаясь с мастью."
@@ -826,15 +829,17 @@ msgstr "Базовая ячейка. Складывать по возраста
msgid "Balance $%d"
msgstr "Баланс $%d"
-#: pysollib/games/klondike.py:170 pysollib/stack.py:2186
-msgid "Tableau. Build down by color."
-msgstr "Игровой стол. Складывать по убыванию в соответствии с цветом."
+#: pysollib/games/klondike.py:170
+msgid ""
+"Tableau. Build down by color. Sequences of cards in the same suit can be "
+"moved as a unit."
+msgstr "Игровой стол. Складывать по убыванию в соответствии с цветом. Можно перемещать серии карт одинаковой масти."
-#: pysollib/games/klondike.py:444
+#: pysollib/games/klondike.py:445
msgid "Reserve. Only Kings are acceptable."
msgstr "Резерв. Только для королей."
-#: pysollib/games/larasgame.py:163 pysollib/stack.py:1694
+#: pysollib/games/larasgame.py:163 pysollib/stack.py:1715
msgid "Round %d"
msgstr "Раунд %d"
@@ -963,7 +968,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:1483 pysollib/util.py:84
+#: pysollib/stack.py:1504 pysollib/util.py:84
msgid "Ace"
msgstr "Туз"
@@ -1741,145 +1746,149 @@ msgstr "Швейцария"
msgid "USA"
msgstr "США"
-#: pysollib/settings.py:72 data/glade-translations:29
+#: pysollib/settings.py:73 data/glade-translations:29
msgid "Top 10"
msgstr "Top 10"
-#: pysollib/stack.py:1477
+#: pysollib/stack.py:1498
msgid "Base card - %s."
msgstr "Базовая карта - %s."
-#: pysollib/stack.py:1478
+#: pysollib/stack.py:1499
msgid "Empty row cannot be filled."
msgstr "Пустой ряд не заполняется."
-#: pysollib/stack.py:1479
+#: pysollib/stack.py:1500
msgid "any card"
msgstr "любая карта"
-#: pysollib/stack.py:1480 pysollib/util.py:85
+#: pysollib/stack.py:1501 pysollib/util.py:85
msgid "Jack"
msgstr "Валет"
-#: pysollib/stack.py:1489
+#: pysollib/stack.py:1510
msgid "No cards"
msgstr "Нет карт"
-#: pysollib/stack.py:1490
+#: pysollib/stack.py:1511
msgid "1 card"
msgstr "1 карта"
-#: pysollib/stack.py:1491
+#: pysollib/stack.py:1512
msgid " cards"
msgstr " карт"
-#: pysollib/stack.py:1703 pysollib/stack.py:1705 pysollib/stack.py:1741
+#: pysollib/stack.py:1724 pysollib/stack.py:1726 pysollib/stack.py:1762
msgid "Redeal"
msgstr "Сдать"
-#: pysollib/stack.py:1705
+#: pysollib/stack.py:1726
msgid "Stop"
msgstr "Стоп"
-#: pysollib/stack.py:1766
+#: pysollib/stack.py:1787
msgid "Variable redeals."
msgstr "Переменное количество пересдач."
-#: pysollib/stack.py:1767
+#: pysollib/stack.py:1788
msgid "Unlimited redeals."
msgstr "Неограниченное количество пересдач."
-#: pysollib/stack.py:1768
+#: pysollib/stack.py:1789
msgid "No redeals."
msgstr "Без пересдачи."
-#: pysollib/stack.py:1769
+#: pysollib/stack.py:1790
msgid "One redeal."
msgstr "1 пересдача."
-#: pysollib/stack.py:1770
+#: pysollib/stack.py:1791
msgid " redeals."
msgstr " пересдачи."
-#: pysollib/stack.py:1772
+#: pysollib/stack.py:1793
msgid "Talon."
msgstr "Колода."
-#: pysollib/stack.py:2008 pysollib/stack.py:2542
+#: pysollib/stack.py:2029 pysollib/stack.py:2563
msgid "Reserve. No building."
msgstr "Резерв. Без выкладывания."
-#: pysollib/stack.py:2046
+#: pysollib/stack.py:2067
msgid "Foundation."
msgstr "Базовая ячейка"
-#: pysollib/stack.py:2062
+#: pysollib/stack.py:2083
msgid "Foundation. Build up by suit."
msgstr "Базовая ячейка. Складывать по возрастанию в соответствии с мастью."
-#: pysollib/stack.py:2063
+#: pysollib/stack.py:2084
msgid "Foundation. Build down by suit."
msgstr "Базовая ячейка. Складывать по убыванию в соответствии с мастью."
-#: pysollib/stack.py:2064 pysollib/stack.py:2080 pysollib/stack.py:2102
+#: pysollib/stack.py:2085 pysollib/stack.py:2101 pysollib/stack.py:2123
msgid "Foundation. Build by same rank."
msgstr "Базовая ячейка. Складывать в соответствии с достоинством."
-#: pysollib/stack.py:2079
+#: pysollib/stack.py:2100
msgid "Foundation. Build down regardless of suit."
msgstr "Базовая ячейка. Складывать не считаясь с мастью."
-#: pysollib/stack.py:2100
+#: pysollib/stack.py:2121
msgid "Foundation. Build up by alternate color."
msgstr "Базовая ячейка. Складывать по возрастанию чередуя цвет."
-#: pysollib/stack.py:2101
+#: pysollib/stack.py:2122
msgid "Foundation. Build down by alternate color."
msgstr "Базовая ячейка. Складывать по убыванию чередуя цвет."
-#: pysollib/stack.py:2175
+#: pysollib/stack.py:2196
msgid "Tableau. Build up by alternate color."
msgstr "Игровой стол. Складывать по возрастанию чередуя цвет."
-#: pysollib/stack.py:2176
+#: pysollib/stack.py:2197
msgid "Tableau. Build down by alternate color."
msgstr "Игровой стол. Складывать по убыванию чередуя цвет."
-#: pysollib/stack.py:2177 pysollib/stack.py:2187 pysollib/stack.py:2196
-#: pysollib/stack.py:2205 pysollib/stack.py:2215 pysollib/stack.py:2244
-#: pysollib/stack.py:2254
+#: pysollib/stack.py:2198 pysollib/stack.py:2208 pysollib/stack.py:2217
+#: pysollib/stack.py:2226 pysollib/stack.py:2236 pysollib/stack.py:2265
+#: pysollib/stack.py:2275
msgid "Tableau. Build by same rank."
msgstr "Игровой стол. Складывать в соответствии с достоинством."
-#: pysollib/stack.py:2185
+#: pysollib/stack.py:2206
msgid "Tableau. Build up by color."
msgstr "Игровой стол. Складывать по возрастанию в соответствии с цветом."
-#: pysollib/stack.py:2194
+#: pysollib/stack.py:2207
+msgid "Tableau. Build down by color."
+msgstr "Игровой стол. Складывать по убыванию в соответствии с цветом."
+
+#: pysollib/stack.py:2215
msgid "Tableau. Build up by suit."
msgstr "Игровой стол. Складывать по возрастанию в соответствии с мастью."
-#: pysollib/stack.py:2195
+#: pysollib/stack.py:2216
msgid "Tableau. Build down by suit."
msgstr "Игровой стол. Складывать по убыванию в соответствии с мастью."
-#: pysollib/stack.py:2203
+#: pysollib/stack.py:2224
msgid "Tableau. Build up regardless of suit."
msgstr "Игровой стол. Складывать по возрастанию не считаясь с мастью."
-#: pysollib/stack.py:2204
+#: pysollib/stack.py:2225
msgid "Tableau. Build down regardless of suit."
msgstr "Игровой стол. Складывать по убыванию не считаясь с мастью."
-#: pysollib/stack.py:2213
+#: pysollib/stack.py:2234
msgid "Tableau. Build up in any suit but the same."
msgstr "Игровой стол. Складывать по возрастанию в любую масть кроме такой же."
-#: pysollib/stack.py:2214
+#: pysollib/stack.py:2235
msgid "Tableau. Build down in any suit but the same."
msgstr "Игровой стол. Складывать по убыванию в любую масть кроме такой же."
-#: pysollib/stack.py:2242
+#: pysollib/stack.py:2263
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in alternate color "
"can be moved as a unit."
@@ -1887,7 +1896,7 @@ msgstr ""
"Игровой стол. Складывать по возрастанию не считаясь с мастью. Можно "
"перемещать серии карт чередующихся цветом."
-#: pysollib/stack.py:2243
+#: pysollib/stack.py:2264
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in alternate "
"color can be moved as a unit."
@@ -1895,7 +1904,7 @@ msgstr ""
"Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать "
"серии карт чередующихся цветом."
-#: pysollib/stack.py:2252
+#: pysollib/stack.py:2273
msgid ""
"Tableau. Build up regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
@@ -1903,7 +1912,7 @@ msgstr ""
"Игровой стол. Складывать по возрастанию не считаясь с мастью. Можно "
"перемещать серии карт одинаковой масти."
-#: pysollib/stack.py:2253
+#: pysollib/stack.py:2274
msgid ""
"Tableau. Build down regardless of suit. Sequences of cards in the same suit "
"can be moved as a unit."
@@ -1911,7 +1920,7 @@ msgstr ""
"Игровой стол. Складывать по убыванию не считаясь с мастью. Можно перемещать "
"серии карт одинаковой масти."
-#: pysollib/stack.py:2275
+#: pysollib/stack.py:2296
msgid ""
"Tableau. Build up by alternate color, can move any face-up cards regardless "
"of sequence."
@@ -1919,7 +1928,7 @@ msgstr ""
"Игровой стол. Складывать по возрастанию чередуя цвет, можно перемещать любую "
"серию открытых карт."
-#: pysollib/stack.py:2276
+#: pysollib/stack.py:2297
msgid ""
"Tableau. Build down by alternate color, can move any face-up cards "
"regardless of sequence."
@@ -1927,7 +1936,7 @@ msgstr ""
"Игровой стол. Складывать по убыванию чередуя цвет, можно перемещать любую "
"серию открытых карт."
-#: pysollib/stack.py:2277 pysollib/stack.py:2290
+#: pysollib/stack.py:2298 pysollib/stack.py:2311
msgid ""
"Tableau. Build by same rank, can move any face-up cards regardless of "
"sequence."
@@ -1935,14 +1944,14 @@ msgstr ""
"Игровой стол. Складывать в соответствии с достоинством, можно перемещать "
"любую серию открытых карт."
-#: pysollib/stack.py:2288
+#: pysollib/stack.py:2309
msgid ""
"Tableau. Build up by suit, can move any face-up cards regardless of sequence."
msgstr ""
"Игровой стол. Складывать по возрастанию в соответствии с мастью, можно "
"перемещать любую серию открытых карт."
-#: pysollib/stack.py:2289
+#: pysollib/stack.py:2310
msgid ""
"Tableau. Build down by suit, can move any face-up cards regardless of "
"sequence."
@@ -1950,48 +1959,48 @@ msgstr ""
"Игровой стол. Складывать по убыванию в соответствии с мастью, можно "
"перемещать любую серию открытых карт."
-#: pysollib/stack.py:2322
+#: pysollib/stack.py:2343
msgid "Tableau. Build up or down by color."
msgstr ""
"Игровой стол. Складывать по возрастанию или убыванию в соответствии с цветом."
-#: pysollib/stack.py:2333
+#: pysollib/stack.py:2354
msgid "Tableau. Build up or down by alternate color."
msgstr "Игровой стол. Складывать по возрастанию или убыванию чередуя цвет."
-#: pysollib/stack.py:2344
+#: pysollib/stack.py:2365
msgid "Tableau. Build up or down by suit."
msgstr ""
"Игровой стол. Складывать по возрастанию или убыванию в соответствии с мастью."
-#: pysollib/stack.py:2355
+#: pysollib/stack.py:2376
msgid "Tableau. Build up or down regardless of suit."
msgstr ""
"Игровой стол. Складывать по возрастанию или убыванию не считаясь с мастью."
-#: pysollib/stack.py:2433
+#: pysollib/stack.py:2454
msgid "Waste."
msgstr "Сброс."
-#: pysollib/stack.py:2543
+#: pysollib/stack.py:2564
msgid "Free cell."
msgstr "Свободная ячейка."
-#: pysollib/stats.py:52 pysollib/stats.py:118
+#: pysollib/stats.py:52 pysollib/stats.py:118 pysollib/tile/tkstats.py:661
msgid "Game"
msgstr "Игра"
-#: pysollib/stats.py:53 pysollib/tile/tkstats.py:772
-#: pysollib/tile/tkstats.py:773 pysollib/tile/tkstats.py:817
-#: pysollib/tk/tkstats.py:886 pysollib/tk/tkstats.py:887
-#: pysollib/tk/tkstats.py:940
+#: pysollib/stats.py:53 pysollib/tile/tkstats.py:897
+#: pysollib/tile/tkstats.py:898 pysollib/tile/tkstats.py:942
+#: pysollib/tk/tkstats.py:887 pysollib/tk/tkstats.py:888
+#: pysollib/tk/tkstats.py:941
msgid "Played"
msgstr "Играл"
-#: pysollib/stats.py:54 pysollib/stats.py:157 pysollib/tile/tkstats.py:777
-#: pysollib/tile/tkstats.py:778 pysollib/tile/tkstats.py:824
-#: pysollib/tk/tkstats.py:891 pysollib/tk/tkstats.py:892
-#: pysollib/tk/tkstats.py:948
+#: pysollib/stats.py:54 pysollib/stats.py:157 pysollib/tile/tkstats.py:902
+#: pysollib/tile/tkstats.py:903 pysollib/tile/tkstats.py:949
+#: pysollib/tk/tkstats.py:892 pysollib/tk/tkstats.py:893
+#: pysollib/tk/tkstats.py:949
msgid "Won"
msgstr "Выиграл"
@@ -2008,11 +2017,11 @@ msgstr "Время игры"
msgid "Moves"
msgstr "Ходов"
-#: pysollib/stats.py:58 pysollib/tile/tkstats.py:745
-#: pysollib/tile/tkstats.py:764 pysollib/tile/tkstats.py:782
-#: pysollib/tile/tkstats.py:831 pysollib/tk/tkstats.py:859
-#: pysollib/tk/tkstats.py:878 pysollib/tk/tkstats.py:896
-#: pysollib/tk/tkstats.py:956
+#: pysollib/stats.py:58 pysollib/tile/tkstats.py:870
+#: pysollib/tile/tkstats.py:889 pysollib/tile/tkstats.py:907
+#: pysollib/tile/tkstats.py:956 pysollib/tk/tkstats.py:860
+#: pysollib/tk/tkstats.py:879 pysollib/tk/tkstats.py:897
+#: pysollib/tk/tkstats.py:957
msgid "% won"
msgstr "% побед"
@@ -2021,17 +2030,17 @@ msgid "Status"
msgstr "Статус"
#: pysollib/stats.py:118 pysollib/tile/statusbar.py:152
-#: pysollib/tile/tkstats.py:556 pysollib/tk/statusbar.py:163
-#: pysollib/tk/tkstats.py:670
+#: pysollib/tile/tkstats.py:664 pysollib/tk/statusbar.py:163
+#: pysollib/tk/tkstats.py:671
msgid "Game number"
msgstr "Номер игры"
-#: pysollib/stats.py:118 pysollib/tile/tkstats.py:559
-#: pysollib/tk/tkstats.py:673
+#: pysollib/stats.py:118 pysollib/tile/tkstats.py:667
+#: pysollib/tk/tkstats.py:674
msgid "Started at"
msgstr "Игра начата"
-#: pysollib/stats.py:142
+#: pysollib/stats.py:142 pysollib/tile/tkstats.py:683
msgid "** UNKNOWN %d **"
msgstr ""
@@ -2055,8 +2064,8 @@ msgstr "Великолепная"
msgid "Demo"
msgstr "Демо"
-#: pysollib/stats.py:215 pysollib/tile/tkstats.py:287
-#: pysollib/tk/tkstats.py:421
+#: pysollib/stats.py:215 pysollib/tile/tkstats.py:374
+#: pysollib/tk/tkstats.py:422
msgid "Total (%d out of %d games)"
msgstr "Всего (%d из %d игр)"
@@ -2231,7 +2240,7 @@ msgstr "Показывать кнопки"
msgid "apple"
msgstr "Клён"
-#: pysollib/tile/menubar.py:355 pysollib/tile/menubar.py:528
+#: pysollib/tile/menubar.py:355 pysollib/tile/menubar.py:520
#: pysollib/tk/menubar.py:352 pysollib/tk/menubar.py:524
msgid "&About "
msgstr "&О программе "
@@ -2363,347 +2372,330 @@ msgstr "С&татус"
msgid "&Comments..."
msgstr "&Комментарии..."
-#: pysollib/tile/menubar.py:416 pysollib/tk/menubar.py:413
-msgid "&Statistics"
-msgstr "Ст&атистика"
+#: pysollib/tile/menubar.py:416 pysollib/tile/tkstats.py:633
+#: pysollib/tk/tkstats.py:642
+msgid "&Statistics..."
+msgstr "&Статистика..."
-#: pysollib/tile/menubar.py:417 pysollib/tile/menubar.py:426
-#: pysollib/tk/menubar.py:414 pysollib/tk/menubar.py:423
-msgid "Current game..."
-msgstr "Текущая игра..."
+#: pysollib/tile/menubar.py:417
+msgid "Log..."
+msgstr "Лог..."
-#: pysollib/tile/menubar.py:418 pysollib/tile/menubar.py:427
-#: pysollib/tk/menubar.py:415 pysollib/tk/menubar.py:424
-msgid "All games..."
-msgstr "Все игры..."
-
-#: pysollib/tile/menubar.py:420 pysollib/tk/menubar.py:417
-msgid "Session log..."
-msgstr "Лог сессии..."
-
-#: pysollib/tile/menubar.py:421 pysollib/tk/menubar.py:418
-msgid "Full log..."
-msgstr "Полный лог..."
-
-#: pysollib/tile/menubar.py:424 pysollib/tk/menubar.py:421
-msgid "Progression..."
-msgstr "Прогресс..."
-
-#: pysollib/tile/menubar.py:425 pysollib/tk/menubar.py:422
+#: pysollib/tile/menubar.py:419 pysollib/tk/menubar.py:422
msgid "D&emo statistics"
msgstr "Статистика демо"
-#: pysollib/tile/menubar.py:429 pysollib/tk/menubar.py:426
+#: pysollib/tile/menubar.py:421 pysollib/tk/menubar.py:426
msgid "&Assist"
msgstr "&Подсказка"
-#: pysollib/tile/menubar.py:430 pysollib/tk/menubar.py:427
+#: pysollib/tile/menubar.py:422 pysollib/tk/menubar.py:427
msgid "&Hint"
msgstr "Подсказать &ход"
-#: pysollib/tile/menubar.py:431 pysollib/tk/menubar.py:428
+#: pysollib/tile/menubar.py:423 pysollib/tk/menubar.py:428
msgid "Highlight p&iles"
msgstr "П&оказать группы"
-#: pysollib/tile/menubar.py:432 pysollib/tk/menubar.py:429
+#: pysollib/tile/menubar.py:424 pysollib/tk/menubar.py:429
msgid "&Find card"
msgstr "&Найти карту"
-#: pysollib/tile/menubar.py:434 pysollib/tk/menubar.py:431
+#: pysollib/tile/menubar.py:426 pysollib/tk/menubar.py:431
msgid "&Demo"
msgstr "&Демо"
-#: pysollib/tile/menubar.py:435 pysollib/tk/menubar.py:432
+#: pysollib/tile/menubar.py:427 pysollib/tk/menubar.py:432
msgid "Demo (&all games)"
msgstr "Демо (&все игры)"
-#: pysollib/tile/menubar.py:437 pysollib/tile/menubar.py:439
+#: pysollib/tile/menubar.py:429 pysollib/tile/menubar.py:431
#: pysollib/tk/menubar.py:434 pysollib/tk/menubar.py:436
msgid "&Solver (experimental)"
msgstr ""
-#: pysollib/tile/menubar.py:441 pysollib/tk/menubar.py:438
+#: pysollib/tile/menubar.py:433 pysollib/tk/menubar.py:438
msgid "&Piles description"
msgstr "Описания &ячеек"
-#: pysollib/tile/menubar.py:445 pysollib/tk/menubar.py:442
+#: pysollib/tile/menubar.py:437 pysollib/tk/menubar.py:442
msgid "&Options"
msgstr "&Настройка"
-#: pysollib/tile/menubar.py:446 pysollib/tk/menubar.py:443
+#: pysollib/tile/menubar.py:438 pysollib/tk/menubar.py:443
msgid "&Player options..."
msgstr "Настройки &игрока..."
-#: pysollib/tile/menubar.py:447 pysollib/tk/menubar.py:444
+#: pysollib/tile/menubar.py:439 pysollib/tk/menubar.py:444
msgid "&Automatic play"
msgstr "Настройки &автоматической игры"
-#: pysollib/tile/menubar.py:448 pysollib/tk/menubar.py:445
+#: pysollib/tile/menubar.py:440 pysollib/tk/menubar.py:445
msgid "Auto &face up"
msgstr "Автоматически &переворачивать"
-#: pysollib/tile/menubar.py:449 pysollib/tk/menubar.py:446
+#: pysollib/tile/menubar.py:441 pysollib/tk/menubar.py:446
msgid "A&uto drop"
msgstr "А&втоматически сбрасывать карты"
-#: pysollib/tile/menubar.py:450 pysollib/tk/menubar.py:447
+#: pysollib/tile/menubar.py:442 pysollib/tk/menubar.py:447
msgid "Auto &deal"
msgstr "Автоматически &сдавать карты"
-#: pysollib/tile/menubar.py:452 pysollib/tk/menubar.py:449
+#: pysollib/tile/menubar.py:444 pysollib/tk/menubar.py:449
msgid "&Quick play"
msgstr "&Быстрая игра"
-#: pysollib/tile/menubar.py:453 pysollib/tk/menubar.py:450
+#: pysollib/tile/menubar.py:445 pysollib/tk/menubar.py:450
msgid "Assist &level"
msgstr "&Уровень подсказки"
-#: pysollib/tile/menubar.py:454 pysollib/tk/menubar.py:451
+#: pysollib/tile/menubar.py:446 pysollib/tk/menubar.py:451
msgid "Enable &undo"
msgstr "Разрешить &возврат хода"
-#: pysollib/tile/menubar.py:455 pysollib/tk/menubar.py:452
+#: pysollib/tile/menubar.py:447 pysollib/tk/menubar.py:452
msgid "Enable &bookmarks"
msgstr "Разрешить &закладки"
-#: pysollib/tile/menubar.py:456 pysollib/tk/menubar.py:453
+#: pysollib/tile/menubar.py:448 pysollib/tk/menubar.py:453
msgid "Enable &hint"
msgstr "Разрешить &подсказки"
-#: pysollib/tile/menubar.py:457 pysollib/tk/menubar.py:454
+#: pysollib/tile/menubar.py:449 pysollib/tk/menubar.py:454
msgid "Enable highlight p&iles"
msgstr "Разрешить показывать к&учи"
-#: pysollib/tile/menubar.py:458 pysollib/tk/menubar.py:455
+#: pysollib/tile/menubar.py:450 pysollib/tk/menubar.py:455
msgid "Enable highlight &cards"
msgstr "Разрешить показывать &карты"
-#: pysollib/tile/menubar.py:459 pysollib/tk/menubar.py:456
+#: pysollib/tile/menubar.py:451 pysollib/tk/menubar.py:456
msgid "Enable highlight same &rank"
msgstr "Разрешить показывать карты &одного достоинства"
-#: pysollib/tile/menubar.py:460 pysollib/tk/menubar.py:457
+#: pysollib/tile/menubar.py:452 pysollib/tk/menubar.py:457
msgid "Highlight &no matching"
msgstr "Подсветка отсутствия &совпадения"
-#: pysollib/tile/menubar.py:462 pysollib/tk/menubar.py:459
+#: pysollib/tile/menubar.py:454 pysollib/tk/menubar.py:459
msgid "&Show removed tiles (in Mahjongg games)"
msgstr "Показывать удалённые (в Маджонг)"
-#: pysollib/tile/menubar.py:463 pysollib/tk/menubar.py:460
+#: pysollib/tile/menubar.py:455 pysollib/tk/menubar.py:460
msgid "Show hint &arrow (in Shisen-Sho games)"
msgstr "Показывать стрелку (в Шисен-Сё)"
-#: pysollib/tile/menubar.py:465 pysollib/tk/menubar.py:462
+#: pysollib/tile/menubar.py:457 pysollib/tk/menubar.py:462
msgid "&Sound..."
msgstr "&Звук..."
-#: pysollib/tile/menubar.py:473 pysollib/tk/menubar.py:470
+#: pysollib/tile/menubar.py:465 pysollib/tk/menubar.py:470
msgid "Cards&et..."
msgstr "Коло&да..."
-#: pysollib/tile/menubar.py:474 pysollib/tk/menubar.py:471
+#: pysollib/tile/menubar.py:466 pysollib/tk/menubar.py:471
msgid "Table t&ile..."
msgstr "Игровой &стол..."
-#: pysollib/tile/menubar.py:476 pysollib/tk/menubar.py:473
+#: pysollib/tile/menubar.py:468 pysollib/tk/menubar.py:473
msgid "Card &background"
msgstr "&Рубашка карты"
-#: pysollib/tile/menubar.py:477 pysollib/tk/menubar.py:474
+#: pysollib/tile/menubar.py:469 pysollib/tk/menubar.py:474
msgid "Card &view"
msgstr "&Вид карты"
-#: pysollib/tile/menubar.py:478 pysollib/tk/menubar.py:475
+#: pysollib/tile/menubar.py:470 pysollib/tk/menubar.py:475
msgid "Card shado&w"
msgstr "Тень карты"
-#: pysollib/tile/menubar.py:479 pysollib/tk/menubar.py:476
+#: pysollib/tile/menubar.py:471 pysollib/tk/menubar.py:476
msgid "Shade &legal moves"
msgstr "Подсвечивать &разрешённые ходы"
-#: pysollib/tile/menubar.py:480 pysollib/tk/menubar.py:477
+#: pysollib/tile/menubar.py:472 pysollib/tk/menubar.py:477
msgid "&Negative cards bottom"
msgstr "&Негативные контуры карты"
-#: pysollib/tile/menubar.py:481 pysollib/tk/menubar.py:478
+#: pysollib/tile/menubar.py:473 pysollib/tk/menubar.py:478
msgid "Shrink face-down cards"
msgstr "Сжимать закрытые карты"
-#: pysollib/tile/menubar.py:482 pysollib/tk/menubar.py:479
+#: pysollib/tile/menubar.py:474 pysollib/tk/menubar.py:479
msgid "Shade &filled stacks"
msgstr "Затемнять заполненные ячейки"
-#: pysollib/tile/menubar.py:483 pysollib/tk/menubar.py:480
+#: pysollib/tile/menubar.py:475 pysollib/tk/menubar.py:480
msgid "A&nimations"
msgstr "Анимаци&я"
-#: pysollib/tile/menubar.py:484 pysollib/tk/menubar.py:481
+#: pysollib/tile/menubar.py:476 pysollib/tk/menubar.py:481
msgid "&None"
msgstr "&Нет"
-#: pysollib/tile/menubar.py:485 pysollib/tk/menubar.py:482
+#: pysollib/tile/menubar.py:477 pysollib/tk/menubar.py:482
msgid "&Very fast"
msgstr "&Очень быстрая"
-#: pysollib/tile/menubar.py:486 pysollib/tk/menubar.py:483
+#: pysollib/tile/menubar.py:478 pysollib/tk/menubar.py:483
msgid "&Fast"
msgstr "&Быстрая"
-#: pysollib/tile/menubar.py:487 pysollib/tk/menubar.py:484
+#: pysollib/tile/menubar.py:479 pysollib/tk/menubar.py:484
msgid "&Medium"
msgstr "С&редняя"
-#: pysollib/tile/menubar.py:488 pysollib/tk/menubar.py:485
+#: pysollib/tile/menubar.py:480 pysollib/tk/menubar.py:485
msgid "&Slow"
msgstr "&Медленная"
-#: pysollib/tile/menubar.py:489 pysollib/tk/menubar.py:486
+#: pysollib/tile/menubar.py:481 pysollib/tk/menubar.py:486
msgid "V&ery slow"
msgstr "&Очень медленная"
-#: pysollib/tile/menubar.py:491 pysollib/tk/menubar.py:488
+#: pysollib/tile/menubar.py:483 pysollib/tk/menubar.py:488
msgid "&Redeal animation"
msgstr "Анимация пере&сдачи"
-#: pysollib/tile/menubar.py:493 pysollib/tk/menubar.py:490
+#: pysollib/tile/menubar.py:485 pysollib/tk/menubar.py:490
msgid "&Winning animation"
msgstr "Анимация &победы"
-#: pysollib/tile/menubar.py:494 pysollib/tk/menubar.py:491
+#: pysollib/tile/menubar.py:486 pysollib/tk/menubar.py:491
msgid "&Mouse"
msgstr "&Мышь"
-#: pysollib/tile/menubar.py:495 pysollib/tk/menubar.py:492
+#: pysollib/tile/menubar.py:487 pysollib/tk/menubar.py:492
msgid "&Drag-and-Drop"
msgstr ""
-#: pysollib/tile/menubar.py:496 pysollib/tk/menubar.py:493
+#: pysollib/tile/menubar.py:488 pysollib/tk/menubar.py:493
msgid "&Point-and-Click"
msgstr ""
-#: pysollib/tile/menubar.py:497 pysollib/tk/menubar.py:494
+#: pysollib/tile/menubar.py:489 pysollib/tk/menubar.py:494
msgid "&Sticky mouse"
msgstr "&Липкая мышь"
-#: pysollib/tile/menubar.py:499 pysollib/tk/menubar.py:496
+#: pysollib/tile/menubar.py:491 pysollib/tk/menubar.py:496
msgid "Use mouse for undo/redo"
msgstr "Использовать мышь для отмены/повтора"
-#: pysollib/tile/menubar.py:501 pysollib/tk/menubar.py:498
+#: pysollib/tile/menubar.py:493 pysollib/tk/menubar.py:498
msgid "&Fonts..."
msgstr "&Шрифты..."
-#: pysollib/tile/menubar.py:502 pysollib/tk/menubar.py:499
+#: pysollib/tile/menubar.py:494 pysollib/tk/menubar.py:499
msgid "&Colors..."
msgstr "&Цвета..."
-#: pysollib/tile/menubar.py:503 pysollib/tk/menubar.py:500
+#: pysollib/tile/menubar.py:495 pysollib/tk/menubar.py:500
msgid "Time&outs..."
msgstr "Тайма&уты..."
-#: pysollib/tile/menubar.py:506 pysollib/tk/menubar.py:502
+#: pysollib/tile/menubar.py:498 pysollib/tk/menubar.py:502
msgid "&Toolbar"
msgstr "Панель и&нструментов"
-#: pysollib/tile/menubar.py:508 pysollib/tk/menubar.py:504
+#: pysollib/tile/menubar.py:500 pysollib/tk/menubar.py:504
msgid "Stat&usbar"
msgstr "Панель с&остояния"
-#: pysollib/tile/menubar.py:509 pysollib/tk/menubar.py:505
+#: pysollib/tile/menubar.py:501 pysollib/tk/menubar.py:505
msgid "Show &statusbar"
msgstr "Показывать панель состояния"
-#: pysollib/tile/menubar.py:510 pysollib/tk/menubar.py:506
+#: pysollib/tile/menubar.py:502 pysollib/tk/menubar.py:506
msgid "Show &number of cards"
msgstr "Показывать количество карт"
-#: pysollib/tile/menubar.py:511 pysollib/tk/menubar.py:507
+#: pysollib/tile/menubar.py:503 pysollib/tk/menubar.py:507
msgid "Show &help bar"
msgstr "Показывать панель помощи"
-#: pysollib/tile/menubar.py:512 pysollib/tk/menubar.py:508
+#: pysollib/tile/menubar.py:504 pysollib/tk/menubar.py:508
msgid "Save games &geometry"
msgstr "Сохранение &геометрии игры"
-#: pysollib/tile/menubar.py:513 pysollib/tk/menubar.py:509
+#: pysollib/tile/menubar.py:505 pysollib/tk/menubar.py:509
msgid "&Demo logo"
msgstr "Д&емо лого"
-#: pysollib/tile/menubar.py:514 pysollib/tk/menubar.py:510
+#: pysollib/tile/menubar.py:506 pysollib/tk/menubar.py:510
msgid "Startup splash sc&reen"
msgstr "О&кно запуска"
-#: pysollib/tile/menubar.py:520 pysollib/tk/menubar.py:516
+#: pysollib/tile/menubar.py:512 pysollib/tk/menubar.py:516
msgid "&Help"
msgstr "&Помощь"
-#: pysollib/tile/menubar.py:521 pysollib/tk/menubar.py:517
+#: pysollib/tile/menubar.py:513 pysollib/tk/menubar.py:517
msgid "&Contents"
msgstr "&Содержание"
-#: pysollib/tile/menubar.py:522 pysollib/tk/menubar.py:518
+#: pysollib/tile/menubar.py:514 pysollib/tk/menubar.py:518
msgid "&How to play"
msgstr "Как &играть"
-#: pysollib/tile/menubar.py:523 pysollib/tk/menubar.py:519
+#: pysollib/tile/menubar.py:515 pysollib/tk/menubar.py:519
msgid "&Rules for this game"
msgstr "&Правила текущей игры"
-#: pysollib/tile/menubar.py:524 pysollib/tk/menubar.py:520
+#: pysollib/tile/menubar.py:516 pysollib/tk/menubar.py:520
msgid "&License terms"
msgstr "&Лицензия"
-#: pysollib/tile/menubar.py:641 pysollib/tk/menubar.py:637
+#: pysollib/tile/menubar.py:633 pysollib/tk/menubar.py:637
msgid "All &games..."
msgstr "&Все игры..."
-#: pysollib/tile/menubar.py:643 pysollib/tk/menubar.py:639
+#: pysollib/tile/menubar.py:635 pysollib/tk/menubar.py:639
msgid "Playable pre&view..."
msgstr "Играемый &предпросмотр..."
-#: pysollib/tile/menubar.py:694 pysollib/tk/menubar.py:690
+#: pysollib/tile/menubar.py:686 pysollib/tk/menubar.py:690
msgid "&Mahjongg games"
msgstr "Игры маджонг"
-#: pysollib/tile/menubar.py:732 pysollib/tk/menubar.py:728
+#: pysollib/tile/menubar.py:724 pysollib/tk/menubar.py:728
msgid "&Popular games"
msgstr "&Популярные игры"
-#: pysollib/tile/menubar.py:740 pysollib/tk/menubar.py:736
+#: pysollib/tile/menubar.py:732 pysollib/tk/menubar.py:736
msgid "&French games"
msgstr "&Классические игры"
-#: pysollib/tile/menubar.py:747 pysollib/tk/menubar.py:743
+#: pysollib/tile/menubar.py:739 pysollib/tk/menubar.py:743
msgid "&Oriental games"
msgstr "&Восточные игры"
-#: pysollib/tile/menubar.py:755 pysollib/tk/menubar.py:751
+#: pysollib/tile/menubar.py:747 pysollib/tk/menubar.py:751
msgid "&Special games"
msgstr "&Особые игры"
-#: pysollib/tile/menubar.py:761 pysollib/tk/menubar.py:757
+#: pysollib/tile/menubar.py:753 pysollib/tk/menubar.py:757
msgid "&All games by name"
msgstr "&Все игры по имени"
-#: pysollib/tile/menubar.py:1040 pysollib/tk/menubar.py:1036
+#: pysollib/tile/menubar.py:1032 pysollib/tk/menubar.py:1036
#: data/glade-translations:72
msgid "Sound settings"
msgstr "Настройка звука"
-#: pysollib/tile/menubar.py:1148 pysollib/tk/menubar.py:1148
+#: pysollib/tile/menubar.py:1140 pysollib/tk/menubar.py:1148
msgid "Select "
msgstr "Выбрать "
-#: pysollib/tile/menubar.py:1194 pysollib/tk/menubar.py:1195
+#: pysollib/tile/menubar.py:1186 pysollib/tk/menubar.py:1195
msgid "Select table background"
msgstr "Выбрать фоновое изображение"
-#: pysollib/tile/menubar.py:1339
+#: pysollib/tile/menubar.py:1331
msgid "Change theme"
msgstr "Изменение темы"
-#: pysollib/tile/menubar.py:1340
+#: pysollib/tile/menubar.py:1332
msgid ""
"This settings will take effect\n"
"the next time you restart "
@@ -2711,33 +2703,33 @@ msgstr ""
"Эта установка вступит в силу\n"
"при следующем запуске "
-#: pysollib/tile/menubar.py:1347
+#: pysollib/tile/menubar.py:1339
msgid "Set t&heme"
msgstr "Установить &тему"
-#: pysollib/tile/menubar.py:1353
+#: pysollib/tile/menubar.py:1345
#, fuzzy
msgid "Default"
msgstr "Сдача"
-#: pysollib/tile/menubar.py:1354
+#: pysollib/tile/menubar.py:1346
#, fuzzy
msgid "Classic"
msgstr "Классический вид"
-#: pysollib/tile/menubar.py:1355
+#: pysollib/tile/menubar.py:1347
msgid "Revitalized"
msgstr ""
-#: pysollib/tile/menubar.py:1356
+#: pysollib/tile/menubar.py:1348
msgid "Windows native"
msgstr ""
-#: pysollib/tile/menubar.py:1357
+#: pysollib/tile/menubar.py:1349
msgid "XP Native"
msgstr ""
-#: pysollib/tile/menubar.py:1358
+#: pysollib/tile/menubar.py:1350
msgid "Aqua"
msgstr ""
@@ -3067,28 +3059,28 @@ msgstr "Пересдач:"
msgid "Played:"
msgstr "Играл:"
-#: pysollib/tile/selectgame.py:361 pysollib/tile/tkstats.py:109
-#: pysollib/tile/tkstats.py:161 pysollib/tk/selectgame.py:371
-#: pysollib/tk/tkstats.py:113 pysollib/tk/tkstats.py:165
+#: pysollib/tile/selectgame.py:361 pysollib/tile/tkstats.py:200
+#: pysollib/tile/tkstats.py:252 pysollib/tk/selectgame.py:371
+#: pysollib/tk/tkstats.py:114 pysollib/tk/tkstats.py:166
#: data/glade-translations:9 data/glade-translations:13
msgid "Won:"
msgstr "Выиграл:"
-#: pysollib/tile/selectgame.py:362 pysollib/tile/tkstats.py:110
-#: pysollib/tile/tkstats.py:162 pysollib/tk/selectgame.py:372
-#: pysollib/tk/tkstats.py:114 pysollib/tk/tkstats.py:166
+#: pysollib/tile/selectgame.py:362 pysollib/tile/tkstats.py:201
+#: pysollib/tile/tkstats.py:254 pysollib/tk/selectgame.py:372
+#: pysollib/tk/tkstats.py:115 pysollib/tk/tkstats.py:167
#: data/glade-translations:11 data/glade-translations:14
msgid "Lost:"
msgstr "Проиграл:"
-#: pysollib/tile/selectgame.py:363 pysollib/tile/tkstats.py:626
-#: pysollib/tk/selectgame.py:373 pysollib/tk/tkstats.py:740
+#: pysollib/tile/selectgame.py:363 pysollib/tile/tkstats.py:763
+#: pysollib/tk/selectgame.py:373 pysollib/tk/tkstats.py:741
#: data/glade-translations:18
msgid "Playing time:"
msgstr "Игровое время:"
-#: pysollib/tile/selectgame.py:364 pysollib/tile/tkstats.py:633
-#: pysollib/tk/selectgame.py:374 pysollib/tk/tkstats.py:747
+#: pysollib/tile/selectgame.py:364 pysollib/tile/tkstats.py:770
+#: pysollib/tk/selectgame.py:374 pysollib/tk/tkstats.py:748
#: data/glade-translations:19
msgid "Moves:"
msgstr "Ходов:"
@@ -3415,73 +3407,76 @@ msgstr ""
msgid "Unable to service request:\n"
msgstr "Невозможно выполнить запрос:\n"
-#: pysollib/tile/tkstats.py:81 pysollib/tk/tkstats.py:80
+#: pysollib/tile/tkstats.py:92 pysollib/tile/tkstats.py:727
+#: pysollib/tile/tkstats.py:919 pysollib/tk/tkstats.py:910
+#: data/glade-translations:17
+msgid "Current game"
+msgstr "Текущая игра"
+
+#: pysollib/tile/tkstats.py:96 pysollib/tile/tkstats.py:735
+#: pysollib/tile/tkstats.py:914 pysollib/tk/tkstats.py:904
+#: data/glade-translations:30
+msgid "All games"
+msgstr "Все игры"
+
+#: pysollib/tile/tkstats.py:106
+msgid "Progression"
+msgstr "Прогресс"
+
+#: pysollib/tile/tkstats.py:121
+msgid "&Play this game"
+msgstr "&Выбрать игру"
+
+#: pysollib/tile/tkstats.py:123 pysollib/tk/tkstats.py:294
+msgid "&Reset..."
+msgstr "О&чистить..."
+
+#: pysollib/tile/tkstats.py:181 pysollib/tk/tkstats.py:81
msgid "Demo games"
msgstr "Демо игры"
-#: pysollib/tile/tkstats.py:93 pysollib/tk/tkstats.py:97
+#: pysollib/tile/tkstats.py:186 pysollib/tk/tkstats.py:98
#: data/glade-translations:16
msgid "Total"
msgstr "Всего"
-#: pysollib/tile/tkstats.py:95 pysollib/tk/tkstats.py:99
+#: pysollib/tile/tkstats.py:188 pysollib/tk/tkstats.py:100
#: data/glade-translations:12
msgid "Current session"
msgstr "Текущая сессия"
-#: pysollib/tile/tkstats.py:111 pysollib/tile/tkstats.py:163
-#: pysollib/tk/tkstats.py:115 pysollib/tk/tkstats.py:167
+#: pysollib/tile/tkstats.py:202 pysollib/tile/tkstats.py:256
+#: pysollib/tk/tkstats.py:116 pysollib/tk/tkstats.py:168
#: data/glade-translations:10 data/glade-translations:15
msgid "Total:"
msgstr "Всего:"
-#: pysollib/tile/tkstats.py:206 pysollib/tk/tkstats.py:280
+#: pysollib/tile/tkstats.py:309 pysollib/tk/tkstats.py:281
msgid "No games"
msgstr "Нет игр"
-#: pysollib/tile/tkstats.py:217 pysollib/tk/tkstats.py:291
-msgid "&All games..."
-msgstr "&Все игры..."
+#: pysollib/tile/tkstats.py:513
+msgid "Log"
+msgstr "Лог"
-#: pysollib/tile/tkstats.py:219 pysollib/tk/tkstats.py:293
-msgid "&Reset..."
-msgstr "О&чистить..."
-
-#: pysollib/tile/tkstats.py:387
-msgid "&Play this game"
-msgstr "&Выбрать игру"
-
-#: pysollib/tile/tkstats.py:389 pysollib/tile/tkstats.py:462
-#: pysollib/tile/tkstats.py:485 pysollib/tk/tkstats.py:517
-#: pysollib/tk/tkstats.py:583 pysollib/tk/tkstats.py:598
+#: pysollib/tile/tkstats.py:544 pysollib/tk/tkstats.py:518
+#: pysollib/tk/tkstats.py:584 pysollib/tk/tkstats.py:599
msgid "&Save to file"
msgstr "&Сохранить в файл"
-#: pysollib/tile/tkstats.py:390 pysollib/tk/tkstats.py:518
-msgid "&Reset all..."
-msgstr "О&чистить все..."
-
-#: pysollib/tile/tkstats.py:461 pysollib/tk/tkstats.py:583
-msgid "Session &log..."
-msgstr "&Лог сессии..."
-
-#: pysollib/tile/tkstats.py:484 pysollib/tk/tkstats.py:598
-msgid "&Full log..."
-msgstr "&Полный лог..."
-
-#: pysollib/tile/tkstats.py:500 pysollib/tk/tkstats.py:613
+#: pysollib/tile/tkstats.py:604 pysollib/tk/tkstats.py:614
msgid "Highlight piles: "
msgstr "Подсветка групп: "
-#: pysollib/tile/tkstats.py:501 pysollib/tk/tkstats.py:614
+#: pysollib/tile/tkstats.py:605 pysollib/tk/tkstats.py:615
msgid "Highlight cards: "
msgstr "Подсветка карт: "
-#: pysollib/tile/tkstats.py:502 pysollib/tk/tkstats.py:615
+#: pysollib/tile/tkstats.py:606 pysollib/tk/tkstats.py:616
msgid "Highlight same rank: "
msgstr "Подсветка карт одного достоинства: "
-#: pysollib/tile/tkstats.py:505 pysollib/tk/tkstats.py:618
+#: pysollib/tile/tkstats.py:609 pysollib/tk/tkstats.py:619
msgid ""
"\n"
"Redeals: "
@@ -3489,7 +3484,7 @@ msgstr ""
"\n"
"Раздач: "
-#: pysollib/tile/tkstats.py:506 pysollib/tk/tkstats.py:619
+#: pysollib/tile/tkstats.py:610 pysollib/tk/tkstats.py:620
msgid ""
"\n"
"Cards in Talon: "
@@ -3497,7 +3492,7 @@ msgstr ""
"\n"
"Карт в колоде: "
-#: pysollib/tile/tkstats.py:508 pysollib/tk/tkstats.py:621
+#: pysollib/tile/tkstats.py:612 pysollib/tk/tkstats.py:622
msgid ""
"\n"
"Cards in Waste: "
@@ -3505,7 +3500,7 @@ msgstr ""
"\n"
"Карт в сбросе: "
-#: pysollib/tile/tkstats.py:510 pysollib/tk/tkstats.py:623
+#: pysollib/tile/tkstats.py:614 pysollib/tk/tkstats.py:624
msgid ""
"\n"
"Cards in Foundations: "
@@ -3513,124 +3508,114 @@ msgstr ""
"\n"
"Карт в игре: "
-#: pysollib/tile/tkstats.py:513 pysollib/tk/tkstats.py:626
+#: pysollib/tile/tkstats.py:618 pysollib/tk/tkstats.py:627
msgid "Game status"
msgstr "Статус игры"
-#: pysollib/tile/tkstats.py:516 pysollib/tk/tkstats.py:629
+#: pysollib/tile/tkstats.py:621 pysollib/tk/tkstats.py:630
msgid "Playing time: "
msgstr "Игровое время: "
-#: pysollib/tile/tkstats.py:517 pysollib/tk/tkstats.py:630
+#: pysollib/tile/tkstats.py:622 pysollib/tk/tkstats.py:631
msgid "Started at: "
msgstr "Игра начата: "
-#: pysollib/tile/tkstats.py:518 pysollib/tk/tkstats.py:631
+#: pysollib/tile/tkstats.py:623 pysollib/tk/tkstats.py:632
msgid "Moves: "
msgstr "Ходов: "
-#: pysollib/tile/tkstats.py:519 pysollib/tk/tkstats.py:632
+#: pysollib/tile/tkstats.py:624 pysollib/tk/tkstats.py:633
msgid "Undo moves: "
msgstr "Отменено ходов: "
-#: pysollib/tile/tkstats.py:520 pysollib/tk/tkstats.py:633
+#: pysollib/tile/tkstats.py:625 pysollib/tk/tkstats.py:634
msgid "Bookmark moves: "
msgstr "Ходов по закладкам: "
-#: pysollib/tile/tkstats.py:521 pysollib/tk/tkstats.py:634
+#: pysollib/tile/tkstats.py:626 pysollib/tk/tkstats.py:635
msgid "Demo moves: "
msgstr "Демо ходов: "
-#: pysollib/tile/tkstats.py:522 pysollib/tk/tkstats.py:635
+#: pysollib/tile/tkstats.py:627 pysollib/tk/tkstats.py:636
msgid "Total player moves: "
msgstr "Всего ходов игрока:"
-#: pysollib/tile/tkstats.py:523 pysollib/tk/tkstats.py:636
+#: pysollib/tile/tkstats.py:628 pysollib/tk/tkstats.py:637
msgid "Total moves in this game: "
msgstr "Всего ходов в этой игре: "
-#: pysollib/tile/tkstats.py:524 pysollib/tk/tkstats.py:637
+#: pysollib/tile/tkstats.py:629 pysollib/tk/tkstats.py:638
msgid "Hints: "
msgstr "Подсказок: "
-#: pysollib/tile/tkstats.py:528 pysollib/tk/tkstats.py:641
-msgid "&Statistics..."
-msgstr "&Статистика..."
-
-#: pysollib/tile/tkstats.py:553 pysollib/tk/tkstats.py:667
+#: pysollib/tile/tkstats.py:657 pysollib/tk/tkstats.py:668
msgid "N"
msgstr "N"
-#: pysollib/tile/tkstats.py:562 pysollib/tk/tkstats.py:676
+#: pysollib/tile/tkstats.py:670 pysollib/tk/tkstats.py:677
msgid "Result"
msgstr "Результат"
-#: pysollib/tile/tkstats.py:618 pysollib/tk/tkstats.py:732
+#: pysollib/tile/tkstats.py:732 pysollib/tk/tkstats.py:786
+msgid "No TOP for this game"
+msgstr "TOP для текущей игры отсутствует"
+
+#: pysollib/tile/tkstats.py:740
+msgid "No TOP for all games"
+msgstr "TOP для всех игр отсутствует"
+
+#: pysollib/tile/tkstats.py:751 pysollib/tk/tkstats.py:733
#: data/glade-translations:21
msgid "Minimum"
msgstr "Минимум"
-#: pysollib/tile/tkstats.py:619 pysollib/tk/tkstats.py:733
+#: pysollib/tile/tkstats.py:753 pysollib/tk/tkstats.py:734
#: data/glade-translations:22
msgid "Maximum"
msgstr "Максимум"
-#: pysollib/tile/tkstats.py:620 pysollib/tk/tkstats.py:734
+#: pysollib/tile/tkstats.py:755 pysollib/tk/tkstats.py:735
#: data/glade-translations:23
msgid "Average"
msgstr "Среднее"
-#: pysollib/tile/tkstats.py:640 pysollib/tk/tkstats.py:754
+#: pysollib/tile/tkstats.py:777 pysollib/tk/tkstats.py:755
#: data/glade-translations:20
msgid "Total moves:"
msgstr "Всего ходов:"
-#: pysollib/tile/tkstats.py:671 pysollib/tk/tkstats.py:785
-msgid "No TOP for this game"
-msgstr "TOP для текущей игры отсутствует"
-
-#: pysollib/tile/tkstats.py:743 pysollib/tile/tkstats.py:759
-#: pysollib/tile/tkstats.py:859 pysollib/tk/tkstats.py:857
-#: pysollib/tk/tkstats.py:873 pysollib/tk/tkstats.py:985
+#: pysollib/tile/tkstats.py:868 pysollib/tile/tkstats.py:884
+#: pysollib/tile/tkstats.py:975 pysollib/tk/tkstats.py:858
+#: pysollib/tk/tkstats.py:874 pysollib/tk/tkstats.py:986
msgid "Games/day"
msgstr "Игр за день"
-#: pysollib/tile/tkstats.py:744 pysollib/tile/tkstats.py:861
-#: pysollib/tk/tkstats.py:858 pysollib/tk/tkstats.py:987
+#: pysollib/tile/tkstats.py:869 pysollib/tile/tkstats.py:977
+#: pysollib/tk/tkstats.py:859 pysollib/tk/tkstats.py:988
msgid "Games/week"
msgstr "Игр за неделю"
-#: pysollib/tile/tkstats.py:789 pysollib/tk/tkstats.py:903
-#: data/glade-translations:30
-msgid "All games"
-msgstr "Все игры"
-
-#: pysollib/tile/tkstats.py:794 pysollib/tk/tkstats.py:909
-#: data/glade-translations:17
-msgid "Current game"
-msgstr "Текущая игра"
-
-#: pysollib/tile/tkstats.py:799 pysollib/tk/tkstats.py:916
+#: pysollib/tile/tkstats.py:924 pysollib/tk/tkstats.py:917
msgid "Statistics for"
msgstr "Статистика за"
-#: pysollib/tile/tkstats.py:804 pysollib/tk/tkstats.py:923
+#: pysollib/tile/tkstats.py:929 pysollib/tk/tkstats.py:924
msgid "Last 7 days"
msgstr "Последние 7 дней"
-#: pysollib/tile/tkstats.py:805 pysollib/tk/tkstats.py:924
+#: pysollib/tile/tkstats.py:930 pysollib/tk/tkstats.py:925
msgid "Last month"
msgstr "Последний месяц"
-#: pysollib/tile/tkstats.py:806 pysollib/tk/tkstats.py:925
+#: pysollib/tile/tkstats.py:931 pysollib/tk/tkstats.py:926
msgid "Last year"
msgstr "Последний год"
-#: pysollib/tile/tkstats.py:807 pysollib/tk/tkstats.py:926
+#: pysollib/tile/tkstats.py:932 pysollib/tk/tkstats.py:927
msgid "All time"
msgstr "Всё время"
-#: pysollib/tile/tkstats.py:813 pysollib/tk/tkstats.py:934
+#: pysollib/tile/tkstats.py:938 pysollib/tk/tkstats.py:935
msgid "Show graphs"
msgstr "Показывать графики"
@@ -3718,6 +3703,30 @@ msgstr "Установки игрока"
msgid "Toolbar"
msgstr "Панель инструментов"
+#: pysollib/tk/menubar.py:413
+msgid "&Statistics"
+msgstr "Ст&атистика"
+
+#: pysollib/tk/menubar.py:414 pysollib/tk/menubar.py:423
+msgid "Current game..."
+msgstr "Текущая игра..."
+
+#: pysollib/tk/menubar.py:415 pysollib/tk/menubar.py:424
+msgid "All games..."
+msgstr "Все игры..."
+
+#: pysollib/tk/menubar.py:417
+msgid "Session log..."
+msgstr "Лог сессии..."
+
+#: pysollib/tk/menubar.py:418
+msgid "Full log..."
+msgstr "Полный лог..."
+
+#: pysollib/tk/menubar.py:421
+msgid "Progression..."
+msgstr "Прогресс..."
+
#: pysollib/tk/playeroptionsdialog.py:120
msgid "Choose..."
msgstr "Выбрать..."
@@ -3730,6 +3739,22 @@ msgstr "Выбрать имя"
msgid "Enable samles"
msgstr "Включить звуки"
+#: pysollib/tk/tkstats.py:292
+msgid "&All games..."
+msgstr "&Все игры..."
+
+#: pysollib/tk/tkstats.py:519
+msgid "&Reset all..."
+msgstr "О&чистить все..."
+
+#: pysollib/tk/tkstats.py:584
+msgid "Session &log..."
+msgstr "&Лог сессии..."
+
+#: pysollib/tk/tkstats.py:599
+msgid "&Full log..."
+msgstr "&Полный лог..."
+
#: pysollib/util.py:80
msgid "Club"
msgstr "Треф"
diff --git a/pysollib/app.py b/pysollib/app.py
index 8dea6b17..7db65e9a 100644
--- a/pysollib/app.py
+++ b/pysollib/app.py
@@ -42,7 +42,7 @@ import traceback
from mfxutil import destruct, Struct
from mfxutil import pickle, unpickle, UnpicklingError
from mfxutil import getusername, gethomedir, getprefdir, EnvError
-from mfxutil import latin1_to_ascii
+from mfxutil import latin1_to_ascii, print_err
from mfxutil import Image
from util import Timer
from util import CARDSET, IMAGE_EXTENSIONS
@@ -664,7 +664,7 @@ class Application:
elif self.commandline.game is not None:
gameid = self.gdb.getGameByName(self.commandline.game)
if gameid is None:
- print >> sys.stderr, "WARNING: can't find game:", self.commandline.game
+ print_err(_("can't find game: ") + self.commandline.game)
else:
self.nextgame.id, self.nextgame.random = gameid, None
elif self.commandline.gameid is not None:
@@ -1424,8 +1424,7 @@ Please select a %s type %s.
try:
loadGame(m.group(1), n)
except Exception, ex:
- print >> sys.stderr, _("Error loading plugin %s: %s") % (n, ex)
- sys.stderr.flush()
+ print_err(_("error loading plugin %s: %s") % (n, ex))
sys.path = p
@@ -1456,8 +1455,9 @@ Please select a %s type %s.
return cs
def _parseCardsetConfig(self, cs, line):
- _debug = True
- def print_err(line, field=None, msg=''):
+ def perr(line, field=None, msg=''):
+ if not DEBUG:
+ return
if field:
print '_parseCardsetConfig error: line #%d, fields#%d %s' \
% (line, field, msg)
@@ -1465,7 +1465,7 @@ Please select a %s type %s.
print '_parseCardsetConfig error: line #%d: %s' \
% (line, msg)
if len(line) < 6:
- if _debug: print_err(1, msg='number of lines')
+ perr(1, msg='number of lines')
return 0
# line[0]: magic identifier, possible version information
fields = [f.strip() for f in line[0].split(';')]
@@ -1474,64 +1474,64 @@ Please select a %s type %s.
if m: cs.version = int(m.group(1))
if cs.version >= 3:
if len(fields) < 5:
- if _debug: print_err(1, msg='number of fields')
+ perr(1, msg='number of fields')
return 0
cs.ext = fields[2]
m = re.search(r"^(\d+)$", fields[3])
if not m:
- if _debug: print_err(1, 3, 'not integer')
+ perr(1, 3, 'not integer')
return 0
cs.type = int(m.group(1))
m = re.search(r"^(\d+)$", fields[4])
if not m:
- if _debug: print_err(1, 4, 'not integer')
+ perr(1, 4, 'not integer')
return 0
cs.ncards = int(m.group(1))
if cs.version >= 4:
if len(fields) < 6:
- if _debug: print_err(1, msg='number of fields')
+ perr(1, msg='number of fields')
return 0
styles = fields[5].split(",")
for s in styles:
m = re.search(r"^\s*(\d+)\s*$", s)
if not m:
- if _debug: print_err(1, 5, 'not integer')
+ perr(1, 5, 'not integer')
return 0
s = int(m.group(1))
if s not in cs.styles:
cs.styles.append(s)
if cs.version >= 5:
if len(fields) < 7:
- if _debug: print_err(1, msg='number of fields')
+ perr(1, msg='number of fields')
return 0
m = re.search(r"^(\d+)$", fields[6])
if not m:
- if _debug: print_err(1, 6, 'not integer')
+ perr(1, 6, 'not integer')
return 0
cs.year = int(m.group(1))
if len(cs.ext) < 2 or cs.ext[0] != ".":
- if _debug: print_err(1, msg='invalid extention')
+ perr(1, msg='invalid extention')
return 0
# line[1]: identifier/name
if not line[1]:
- if _debug: print_err(2, msg='empty line')
+ perr(2, msg='empty line')
return 0
cs.ident = line[1]
m = re.search(r"^(.*;)?([^;]+)$", cs.ident)
if not m:
- if _debug: print_err(2, msg='invalid format')
+ perr(2, msg='invalid format')
return 0
cs.name = m.group(2).strip()
# line[2]: CARDW, CARDH, CARDD
m = re.search(r"^(\d+)\s+(\d+)\s+(\d+)", line[2])
if not m:
- if _debug: print_err(3, msg='invalid format')
+ perr(3, msg='invalid format')
return 0
cs.CARDW, cs.CARDH, cs.CARDD = int(m.group(1)), int(m.group(2)), int(m.group(3))
# line[3]: CARD_UP_YOFFSET, CARD_DOWN_YOFFSET, SHADOW_XOFFSET, SHADOW_YOFFSET
m = re.search(r"^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)", line[3])
if not m:
- if _debug: print_err(4, msg='invalid format')
+ perr(4, msg='invalid format')
return 0
cs.CARD_XOFFSET = int(m.group(1))
cs.CARD_YOFFSET = int(m.group(2))
@@ -1540,7 +1540,7 @@ Please select a %s type %s.
# line[4]: default background
back = line[4]
if not back:
- if _debug: print_err(5, msg='empty line')
+ perr(5, msg='empty line')
return 0
# line[5]: all available backgrounds
cs.backnames = [f.strip() for f in line[5].split(';')]
diff --git a/pysollib/games/fan.py b/pysollib/games/fan.py
index e79e9621..01a0473f 100644
--- a/pysollib/games/fan.py
+++ b/pysollib/games/fan.py
@@ -152,6 +152,7 @@ class ScotchPatience(Fan):
# /***********************************************************************
# // Shamrocks
+# // Shamrocks II
# ************************************************************************/
class Shamrocks(Fan):
@@ -160,6 +161,27 @@ class Shamrocks(Fan):
Fan.createGame(self, playcards=4)
shallHighlightMatch = Game._shallHighlightMatch_RK
+class ShamrocksII(Shamrocks):
+ def _shuffleHook(self, cards):
+ # move Kings to bottom of each stack
+ i, n = 0, 17
+ kings = []
+ for c in cards:
+ if c.rank == KING:
+ kings.append(i)
+ i += 1
+ for i in kings:
+ if i == 51:
+ continue
+ j = i % n
+ while j < i:
+ if cards[j].rank != KING:
+ cards[i], cards[j] = cards[j], cards[i]
+ break
+ j += n
+ cards.reverse()
+ return cards
+
# /***********************************************************************
# // La Belle Lucie (Midnight Oil)
@@ -774,4 +796,6 @@ registerGame(GameInfo(625, FascinationFan, "Fascination Fan",
GI.GT_FAN_TYPE, 1, 6, GI.SL_BALANCED))
registerGame(GameInfo(647, Crescent, "Crescent",
GI.GT_FAN_TYPE, 2, 3, GI.SL_MOSTLY_SKILL))
+registerGame(GameInfo(714, ShamrocksII, "Shamrocks II",
+ GI.GT_FAN_TYPE | GI.GT_OPEN, 1, 0, GI.SL_MOSTLY_SKILL))
diff --git a/pysollib/games/klondike.py b/pysollib/games/klondike.py
index fd556ee3..4d96ac4f 100644
--- a/pysollib/games/klondike.py
+++ b/pysollib/games/klondike.py
@@ -167,7 +167,7 @@ class Whitehead_RowStack(SS_RowStack):
def _isAcceptableSequence(self, cards):
return isSameColorSequence(cards, self.cap.mod, self.cap.dir)
def getHelp(self):
- return _('Tableau. Build down by color.')
+ return _('Tableau. Build down by color. Sequences of cards in the same suit can be moved as a unit.')
class Whitehead(Klondike):
RowStack_Class = Whitehead_RowStack
@@ -180,6 +180,7 @@ class Whitehead(Klondike):
Klondike.startGame(self, flip=1)
shallHighlightMatch = Game._shallHighlightMatch_SS
+ getQuickPlayScore = Game._getSpiderQuickPlayScore
# /***********************************************************************
diff --git a/pysollib/main.py b/pysollib/main.py
index 8f1a349c..87bdf881 100644
--- a/pysollib/main.py
+++ b/pysollib/main.py
@@ -41,6 +41,7 @@ import getopt
# PySol imports
from util import DataLoader
+from mfxutil import print_err
from resource import Tile
from app import Application
from pysolaudio import AbstractAudioClient, PysolSoundServerModuleClient
@@ -87,8 +88,8 @@ def parse_option(argv):
"sound-mod=",
"help"])
except getopt.GetoptError, err:
- print >> sys.stderr, _("%s: %s\ntry %s --help for more information") \
- % (prog_name, err, prog_name)
+ print_err(_("%s\ntry %s --help for more information") %
+ (err, prog_name), 0)
return None
opts = {"help" : False,
"game" : None,
@@ -131,11 +132,15 @@ def parse_option(argv):
return None
if len(args) > 1:
- print >> sys.stderr, _("%s: too many files\ntry %s --help for more information") % (prog_name, prog_name)
+ print_err(
+ _("too many files\ntry %s --help for more information") %
+ prog_name, 0)
return None
filename = args and args[0] or None
if filename and not os.path.isfile(filename):
- print >> sys.stderr, _("%s: invalid file name\ntry %s --help for more information") % (prog_name, prog_name)
+ print_err(
+ _("invalid file name\ntry %s --help for more information") %
+ prog_name, 0)
return None
return opts, filename
@@ -173,8 +178,8 @@ def pysol_init(app, args):
if opts['gameid'] is not None:
try:
app.commandline.gameid = int(opts['gameid'])
- except:
- print >> sys.stderr, 'WARNING: invalid game id:', opts['gameid']
+ except ValueError:
+ print_err(_('invalid game id: ') + opts['gameid'])
# init games database
import games
diff --git a/pysollib/mfxutil.py b/pysollib/mfxutil.py
index c8d4a075..62102437 100644
--- a/pysollib/mfxutil.py
+++ b/pysollib/mfxutil.py
@@ -35,7 +35,7 @@
# imports
-import os, time, types
+import sys, os, time, types, locale
import webbrowser
try:
@@ -48,7 +48,8 @@ try:
except:
thread = None
-from settings import TOOLKIT
+from settings import PACKAGE, TOOLKIT
+
Image = ImageTk = ImageOps = None
if TOOLKIT == 'tk':
try: # PIL
@@ -108,6 +109,15 @@ def format_time(t):
return "%d:%02d:%02d" % (t / 3600, (t % 3600) / 60, t % 60)
+def print_err(s, level=1):
+ if level == 0:
+ ss = PACKAGE+': ERROR:'
+ elif level == 1:
+ ss = PACKAGE+': WARNING:'
+ print >> sys.stderr, ss, s.encode(locale.getpreferredencoding())
+ sys.stderr.flush()
+
+
# /***********************************************************************
# // misc. portab stuff
# ************************************************************************/
diff --git a/pysollib/tile/tkstats.py b/pysollib/tile/tkstats.py
index 245e0af2..6642ccb2 100644
--- a/pysollib/tile/tkstats.py
+++ b/pysollib/tile/tkstats.py
@@ -79,6 +79,9 @@ class StatsDialog(MfxDialog):
self.font = app.getFont('default')
self.tkfont = tkFont.Font(parent, self.font)
self.font_metrics = self.tkfont.metrics()
+ style = Tkinter.Style()
+ self.heading_font = style.lookup('Heading', 'font') # treeview heading
+ self.heading_tkfont = tkFont.Font(parent, self.heading_font)
self.selected_game = None
@@ -339,7 +342,7 @@ class TreeFormatter(PysolStatsFormatter):
self._tabs = [tw]
font = self.tkfont
for t in arg[1:]:
- tw = font.measure(t)+20
+ tw = font.measure(t)+8
self._tabs.append(tw)
self._tabs.append(10)
self.parent_window.tree_tabs = self._tabs
@@ -486,7 +489,8 @@ class AllGamesFrame(Tkinter.Frame):
self.tree.delete(tuple(self.tree_items))
self.tree_items = []
formatter = TreeFormatter(self.app, self.tree, self,
- self.dialog.tkfont, self.CHAR_W, self.CHAR_H)
+ self.dialog.heading_tkfont,
+ self.CHAR_W, self.CHAR_H)
formatter.writeStats(player, sort_by=self.sort_by)
if self.dialog.buttons:
run_button = self.dialog.buttons[0]
@@ -724,15 +728,7 @@ class TopFrame(Tkinter.Frame):
left_label = Tkinter.Label(self, image=app.gimages.logos[5])
left_label.pack(side='left', expand=True, fill='both')
- frame = Tkinter.LabelFrame(self, text='All games',
- padding=(10,5,10,10))
- frame.pack(side='top', expand=True, fill='x', padx=10, pady=10)
- ##frame.columnconfigure(0, weight=1)
- if not self.createTopFrame(frame, player, 'all'):
- Tkinter.Label(frame, text=_('No TOP for all games')
- ).pack(padx=10, pady=10)
-
- frame = Tkinter.LabelFrame(self, text='Current game',
+ frame = Tkinter.LabelFrame(self, text=_('Current game'),
padding=(10,5,10,10))
frame.pack(side='top', expand=True, fill='x', padx=10, pady=10)
##frame.columnconfigure(0, weight=1)
@@ -740,6 +736,14 @@ class TopFrame(Tkinter.Frame):
Tkinter.Label(frame, text=_('No TOP for this game')
).pack(padx=10, pady=10)
+ frame = Tkinter.LabelFrame(self, text=_('All games'),
+ padding=(10,5,10,10))
+ frame.pack(side='top', expand=True, fill='x', padx=10, pady=10)
+ ##frame.columnconfigure(0, weight=1)
+ if not self.createTopFrame(frame, player, 'all'):
+ Tkinter.Label(frame, text=_('No TOP for all games')
+ ).pack(padx=10, pady=10)
+
def createTopFrame(self, frame, player, gameid):
app = self.app
diff --git a/pysollib/winsystems/common.py b/pysollib/winsystems/common.py
index 2e62294a..37416bbb 100644
--- a/pysollib/winsystems/common.py
+++ b/pysollib/winsystems/common.py
@@ -25,6 +25,7 @@ from pysollib.settings import PACKAGE
from pysollib.settings import FC_VERSION as VERSION
from pysollib.settings import TOOLKIT, USE_TILE
from pysollib.settings import DEBUG
+from pysollib.mfxutil import print_err
from pysollib.tile import Tile
@@ -48,7 +49,7 @@ def set_theme(app, top, theme):
style = Tile.Style(top)
all_themes = style.theme_names()
if theme not in all_themes:
- print >> sys.stderr, 'WARNING: invalid theme name:', theme
+ print_err(_('invalid theme name: ') + theme)
theme = app.opt.default_tile_theme
style.theme_use(theme)
@@ -61,7 +62,7 @@ def get_font_name(font):
try:
f = Font(font=font)
except:
- print >> sys.stderr, 'invalid font name:', font
+ print_err(_('invalid font name: ') + font)
if DEBUG:
traceback.print_exc()
else:
diff --git a/pysollib/winsystems/x11.py b/pysollib/winsystems/x11.py
index 183e1c0c..d1118c77 100644
--- a/pysollib/winsystems/x11.py
+++ b/pysollib/winsystems/x11.py
@@ -21,6 +21,8 @@
import sys, os
+import tkFont
+
from pysollib.settings import PACKAGE
from pysollib.settings import TOOLKIT, USE_TILE
from pysollib.tile import Tile
@@ -62,6 +64,9 @@ class initRootWindow(baseInitRootWindow):
root.option_add('*font', font)
style.configure('.', font=font)
app.opt.fonts['default'] = fn
+ # treeview heading
+ f = root.tk.splitlist(root.tk.call('font', 'actual', fn))
+ root.tk.call('font', 'configure', 'TkHeadingFont', *f)
else:
# use font from Tile settings
font = style.lookup('.', 'font')