From 85c0b50f5c57e377f79ab8cb7b4152296d4a04b9 Mon Sep 17 00:00:00 2001 From: skomoroh Date: Tue, 6 Mar 2007 22:47:26 +0000 Subject: [PATCH] + 1 game * updated russian translation * misc. improvements git-svn-id: file:///home/shlomif/Backup/svn-dumps/PySolFC/svnsync-repos/pysolfc/PySolFC/trunk@148 efabe8c0-fbe8-4139-b769-b5e6d273206e --- html-src/wikipedia/shamrocksii.html | 27 + po/games.pot | 14 +- po/pysol.pot | 760 ++++++++++++++------------- po/ru_games.po | 21 +- po/ru_pysol.po | 771 ++++++++++++++-------------- pysollib/app.py | 40 +- pysollib/games/fan.py | 24 + pysollib/games/klondike.py | 3 +- pysollib/main.py | 17 +- pysollib/mfxutil.py | 14 +- pysollib/tile/tkstats.py | 26 +- pysollib/winsystems/common.py | 5 +- pysollib/winsystems/x11.py | 5 + 13 files changed, 941 insertions(+), 786 deletions(-) create mode 100644 html-src/wikipedia/shamrocksii.html 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')