From 314f1a54b66c7720c8e89e42919ce6d436eb3925 Mon Sep 17 00:00:00 2001
From: skomoroh <skomoroh@39dd0a4e-7c14-0410-91b3-c4f2d318f732>
Date: Sat, 10 Jun 2006 21:21:22 +0000
Subject: [PATCH] - updated russian translation - added customization of
 sound-samples - improved soundoptionsdialog

git-svn-id: https://pysolfc.svn.sourceforge.net/svnroot/pysolfc/PySolFC/trunk@7 39dd0a4e-7c14-0410-91b3-c4f2d318f732
---
 po/games.pot                      |   5 +-
 po/pysol.pot                      | 294 ++++++++++++++--------------
 po/ru_games.po                    | 123 +++++-------
 po/ru_pysol.po                    | 314 +++++++++++++++---------------
 pysollib/actions.py               |  38 ++--
 pysollib/app.py                   |  28 +++
 pysollib/game.py                  |  12 +-
 pysollib/tk/menubar.py            |   6 +-
 pysollib/tk/soundoptionsdialog.py | 144 +++++++++-----
 pysollib/tk/tkwidget.py           |   2 +-
 10 files changed, 503 insertions(+), 463 deletions(-)

diff --git a/po/games.pot b/po/games.pot
index cf68fcf9..b7c609f4 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: Tue Jun  6 02:20:52 2006\n"
+"POT-Creation-Date: Sun Jun 11 00:30:03 2006\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -939,6 +939,9 @@ msgstr ""
 msgid "Grampus"
 msgstr ""
 
+msgid "Granada"
+msgstr ""
+
 msgid "Grandfather"
 msgstr ""
 
diff --git a/po/pysol.pot b/po/pysol.pot
index e1d7e6e9..62f17f65 100644
--- a/po/pysol.pot
+++ b/po/pysol.pot
@@ -5,7 +5,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: Tue Jun  6 02:20:47 2006\n"
+"POT-Creation-Date: Sun Jun 11 00:29:57 2006\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -19,8 +19,8 @@ msgstr ""
 msgid "New game"
 msgstr ""
 
-#: pysollib/actions.py:357 pysollib/tk/menubar.py:667
-#: pysollib/tk/menubar.py:681
+#: pysollib/actions.py:357 pysollib/tk/menubar.py:665
+#: pysollib/tk/menubar.py:679
 msgid "Select game"
 msgstr ""
 
@@ -52,34 +52,34 @@ msgstr ""
 msgid "&Next number"
 msgstr ""
 
-#: pysollib/actions.py:409 pysollib/app.py:1090 pysollib/app.py:1102
-#: pysollib/game.py:828 pysollib/game.py:1642 pysollib/main.py:413
+#: pysollib/actions.py:409 pysollib/app.py:1118 pysollib/app.py:1130
+#: pysollib/game.py:830 pysollib/game.py:1644 pysollib/main.py:413
 #: pysollib/main.py:421 pysollib/tk/colorsdialog.py:131
 #: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:140
 #: pysollib/tk/fontsdialog.py:204 pysollib/tk/gameinfodialog.py:133
-#: pysollib/tk/playeroptionsdialog.py:86
-#: pysollib/tk/playeroptionsdialog.py:161 pysollib/tk/selectcardset.py:240
+#: pysollib/tk/playeroptionsdialog.py:85
+#: pysollib/tk/playeroptionsdialog.py:160 pysollib/tk/selectcardset.py:240
 #: pysollib/tk/selectcardset.py:396 pysollib/tk/selecttile.py:158
-#: pysollib/tk/soundoptionsdialog.py:106 pysollib/tk/soundoptionsdialog.py:158
+#: pysollib/tk/soundoptionsdialog.py:169 pysollib/tk/soundoptionsdialog.py:223
 #: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkhtml.py:459
 #: pysollib/tk/tkstats.py:288 pysollib/tk/tkstats.py:571
 #: pysollib/tk/tkstats.py:645 pysollib/tk/tkstats.py:661
 #: pysollib/tk/tkstats.py:703 pysollib/tk/tkstats.py:775
-#: pysollib/tk/tkstats.py:859 pysollib/tk/tkwidget.py:159
-#: pysollib/tk/tkwidget.py:312
+#: pysollib/tk/tkstats.py:859 pysollib/tk/tkwidget.py:156
+#: pysollib/tk/tkwidget.py:320
 msgid "&OK"
 msgstr ""
 
-#: pysollib/actions.py:409 pysollib/app.py:1102 pysollib/game.py:828
-#: pysollib/game.py:1205 pysollib/game.py:1220 pysollib/game.py:1226
-#: pysollib/game.py:1231 pysollib/tk/colorsdialog.py:131
+#: pysollib/actions.py:409 pysollib/app.py:1130 pysollib/game.py:830
+#: pysollib/game.py:1207 pysollib/game.py:1222 pysollib/game.py:1228
+#: pysollib/game.py:1233 pysollib/tk/colorsdialog.py:131
 #: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:140
-#: pysollib/tk/fontsdialog.py:204 pysollib/tk/menubar.py:854
-#: pysollib/tk/menubar.py:856 pysollib/tk/playeroptionsdialog.py:86
-#: pysollib/tk/playeroptionsdialog.py:161 pysollib/tk/selectcardset.py:240
+#: pysollib/tk/fontsdialog.py:204 pysollib/tk/menubar.py:852
+#: pysollib/tk/menubar.py:854 pysollib/tk/playeroptionsdialog.py:85
+#: pysollib/tk/playeroptionsdialog.py:160 pysollib/tk/selectcardset.py:240
 #: pysollib/tk/selectgame.py:268 pysollib/tk/selectgame.py:409
-#: pysollib/tk/selecttile.py:158 pysollib/tk/soundoptionsdialog.py:106
-#: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkwidget.py:312
+#: pysollib/tk/selecttile.py:158 pysollib/tk/soundoptionsdialog.py:169
+#: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkwidget.py:320
 msgid "&Cancel"
 msgstr ""
 
@@ -125,7 +125,7 @@ msgstr ""
 msgid "Error while writing to file"
 msgstr ""
 
-#: pysollib/actions.py:616 pysollib/actions.py:652 pysollib/actions.py:941
+#: pysollib/actions.py:616 pysollib/actions.py:652
 msgid " Info"
 msgstr ""
 
@@ -236,37 +236,27 @@ msgstr ""
 msgid "Set timeouts"
 msgstr ""
 
-#: pysollib/actions.py:938
-msgid "Error while saving options"
-msgstr ""
-
-#: pysollib/actions.py:942
-msgid ""
-"Options were saved to\n"
-"\n"
-msgstr ""
-
 #: pysollib/app.py:86
 msgid "Unknown"
 msgstr ""
 
-#: pysollib/app.py:952
+#: pysollib/app.py:980
 msgid "Loading %s %s..."
 msgstr ""
 
-#: pysollib/app.py:987
+#: pysollib/app.py:1015
 msgid " load error"
 msgstr ""
 
-#: pysollib/app.py:988
+#: pysollib/app.py:1016
 msgid "Error while loading "
 msgstr ""
 
-#: pysollib/app.py:1082
+#: pysollib/app.py:1110
 msgid "Incompatible "
 msgstr ""
 
-#: pysollib/app.py:1084
+#: pysollib/app.py:1112
 msgid ""
 "The currently selected %s %s\n"
 "is not compatible with the game\n"
@@ -275,7 +265,7 @@ msgid ""
 "Please select a %s type %s.\n"
 msgstr ""
 
-#: pysollib/app.py:1100
+#: pysollib/app.py:1128
 msgid "Please select a %s type %s"
 msgstr ""
 
@@ -284,48 +274,48 @@ msgid ""
 "Player\n"
 msgstr ""
 
-#: pysollib/game.py:824
+#: pysollib/game.py:826
 msgid "Discard current game ?"
 msgstr ""
 
-#: pysollib/game.py:1159
+#: pysollib/game.py:1161
 msgid ""
 "\n"
 "You have reached\n"
 "#%d in the %s of playing time"
 msgstr ""
 
-#: pysollib/game.py:1162
+#: pysollib/game.py:1164
 msgid ""
 "\n"
 "and #%d in the %s of moves"
 msgstr ""
 
-#: pysollib/game.py:1164
+#: pysollib/game.py:1166
 msgid ""
 "\n"
 "You have reached\n"
 "#%d in the %s of moves"
 msgstr ""
 
-#: pysollib/game.py:1167
+#: pysollib/game.py:1169
 msgid ""
 "\n"
 "and #%d in the %s of total moves"
 msgstr ""
 
-#: pysollib/game.py:1169
+#: pysollib/game.py:1171
 msgid ""
 "\n"
 "You have reached\n"
 "#%d in the %s of total moves"
 msgstr ""
 
-#: pysollib/game.py:1196 pysollib/game.py:1212
+#: pysollib/game.py:1198 pysollib/game.py:1214
 msgid "Game won"
 msgstr ""
 
-#: pysollib/game.py:1197
+#: pysollib/game.py:1199
 msgid ""
 "\n"
 "Congratulations, this\n"
@@ -336,12 +326,12 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: pysollib/game.py:1205 pysollib/game.py:1220 pysollib/game.py:1226
-#: pysollib/game.py:1231 pysollib/tk/menubar.py:250
+#: pysollib/game.py:1207 pysollib/game.py:1222 pysollib/game.py:1228
+#: pysollib/game.py:1233 pysollib/tk/menubar.py:250
 msgid "&New game"
 msgstr ""
 
-#: pysollib/game.py:1213
+#: pysollib/game.py:1215
 msgid ""
 "\n"
 "Congratulations, you did it !\n"
@@ -351,99 +341,99 @@ msgid ""
 "%s\n"
 msgstr ""
 
-#: pysollib/game.py:1224 pysollib/game.py:1229
+#: pysollib/game.py:1226 pysollib/game.py:1231
 msgid "Game finished"
 msgstr ""
 
-#: pysollib/game.py:1225 pysollib/game.py:1643
+#: pysollib/game.py:1227 pysollib/game.py:1645
 msgid ""
 "\n"
 "Game finished\n"
 msgstr ""
 
-#: pysollib/game.py:1230
+#: pysollib/game.py:1232
 msgid ""
 "\n"
 "Game finished, but not without my help...\n"
 msgstr ""
 
-#: pysollib/game.py:1231
+#: pysollib/game.py:1233
 msgid "&Restart"
 msgstr ""
 
-#: pysollib/game.py:1535
+#: pysollib/game.py:1537
 msgid "Score %6d"
 msgstr ""
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Cool"
 msgstr ""
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Great"
 msgstr ""
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Wow"
 msgstr ""
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Yeah"
 msgstr ""
 
-#: pysollib/game.py:1635 pysollib/game.py:1646 pysollib/game.py:1658
+#: pysollib/game.py:1637 pysollib/game.py:1648 pysollib/game.py:1660
 msgid " Autopilot"
 msgstr ""
 
-#: pysollib/game.py:1636
+#: pysollib/game.py:1638
 msgid ""
 "\n"
 "Game solved in %d moves.\n"
 msgstr ""
 
-#: pysollib/game.py:1657
+#: pysollib/game.py:1659
 msgid "&Hmm"
 msgstr ""
 
-#: pysollib/game.py:1657
+#: pysollib/game.py:1659
 msgid "&Oh well"
 msgstr ""
 
-#: pysollib/game.py:1657
+#: pysollib/game.py:1659
 msgid "&That's life"
 msgstr ""
 
-#: pysollib/game.py:1659
+#: pysollib/game.py:1661
 msgid ""
 "\n"
 "This won't come out...\n"
 msgstr ""
 
-#: pysollib/game.py:2063
+#: pysollib/game.py:2065
 msgid "Set bookmark"
 msgstr ""
 
-#: pysollib/game.py:2064
+#: pysollib/game.py:2066
 msgid "Replace existing bookmark %d ?"
 msgstr ""
 
-#: pysollib/game.py:2086
+#: pysollib/game.py:2088
 msgid "Goto bookmark"
 msgstr ""
 
-#: pysollib/game.py:2087
+#: pysollib/game.py:2089
 msgid "Goto bookmark %d ?"
 msgstr ""
 
-#: pysollib/game.py:2118
+#: pysollib/game.py:2120
 msgid "Open game"
 msgstr ""
 
-#: pysollib/game.py:2129 pysollib/game.py:2138 pysollib/game.py:2143
+#: pysollib/game.py:2131 pysollib/game.py:2140 pysollib/game.py:2145
 msgid "Load game error"
 msgstr ""
 
-#: pysollib/game.py:2130
+#: pysollib/game.py:2132
 msgid ""
 "Error while loading game.\n"
 "\n"
@@ -451,22 +441,22 @@ msgid ""
 "but this could also be a bug you might want to report."
 msgstr ""
 
-#: pysollib/game.py:2139
+#: pysollib/game.py:2141
 msgid "Error while loading game"
 msgstr ""
 
-#: pysollib/game.py:2144
+#: pysollib/game.py:2146
 msgid ""
 "Internal error while loading game.\n"
 "\n"
 "Please report this bug."
 msgstr ""
 
-#: pysollib/game.py:2169
+#: pysollib/game.py:2171
 msgid "Save game error"
 msgstr ""
 
-#: pysollib/game.py:2170
+#: pysollib/game.py:2172
 msgid "Error while saving game"
 msgstr ""
 
@@ -1741,72 +1731,72 @@ msgstr ""
 msgid "Free cell."
 msgstr ""
 
-#: pysollib/stats.py:120 pysollib/tk/tkstats.py:78
+#: pysollib/stats.py:118 pysollib/tk/tkstats.py:78
 msgid "Demo games"
 msgstr ""
 
-#: pysollib/stats.py:121
+#: pysollib/stats.py:119
 msgid "Played"
 msgstr ""
 
-#: pysollib/stats.py:122 pysollib/stats.py:202
+#: pysollib/stats.py:120 pysollib/stats.py:200
 msgid "Won"
 msgstr ""
 
-#: pysollib/stats.py:123 pysollib/stats.py:202
+#: pysollib/stats.py:121 pysollib/stats.py:200
 msgid "Lost"
 msgstr ""
 
-#: pysollib/stats.py:124 pysollib/tk/statusbar.py:137
+#: pysollib/stats.py:122 pysollib/tk/statusbar.py:135
 msgid "Playing time"
 msgstr ""
 
-#: pysollib/stats.py:125
+#: pysollib/stats.py:123
 msgid "Moves"
 msgstr ""
 
-#: pysollib/stats.py:126
+#: pysollib/stats.py:124
 msgid "% won"
 msgstr ""
 
-#: pysollib/stats.py:155
+#: pysollib/stats.py:153
 msgid "Total (%d out of %d games)"
 msgstr ""
 
-#: pysollib/stats.py:164
+#: pysollib/stats.py:162
 msgid "Game"
 msgstr ""
 
-#: pysollib/stats.py:164
+#: pysollib/stats.py:162
 msgid "Status"
 msgstr ""
 
-#: pysollib/stats.py:164 pysollib/tk/statusbar.py:139
+#: pysollib/stats.py:162 pysollib/tk/statusbar.py:137
 #: pysollib/tk/tkstats.py:733
 msgid "Game number"
 msgstr ""
 
-#: pysollib/stats.py:164 pysollib/tk/tkstats.py:736
+#: pysollib/stats.py:162 pysollib/tk/tkstats.py:736
 msgid "Started at"
 msgstr ""
 
-#: pysollib/stats.py:187
+#: pysollib/stats.py:185
 msgid "** UNKNOWN %d **"
 msgstr ""
 
-#: pysollib/stats.py:195
+#: pysollib/stats.py:193
 msgid "** ERROR **"
 msgstr ""
 
-#: pysollib/stats.py:202
+#: pysollib/stats.py:200
 msgid "Loaded"
 msgstr ""
 
-#: pysollib/stats.py:202
+#: pysollib/stats.py:200
 msgid "Not won"
 msgstr ""
 
-#: pysollib/stats.py:202
+#: pysollib/stats.py:200
 msgid "Perfect"
 msgstr ""
 
@@ -2155,198 +2145,198 @@ msgstr ""
 msgid "&Sound"
 msgstr ""
 
-#: pysollib/tk/menubar.py:351
+#: pysollib/tk/menubar.py:349
 msgid "Cards&et..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:352
+#: pysollib/tk/menubar.py:350
 msgid "Table t&ile..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:354
+#: pysollib/tk/menubar.py:352
 msgid "Card &background"
 msgstr ""
 
-#: pysollib/tk/menubar.py:355
+#: pysollib/tk/menubar.py:353
 msgid "Card &view"
 msgstr ""
 
-#: pysollib/tk/menubar.py:356
+#: pysollib/tk/menubar.py:354
 msgid "Card shado&w"
 msgstr ""
 
-#: pysollib/tk/menubar.py:357
+#: pysollib/tk/menubar.py:355
 msgid "Shade &legal moves"
 msgstr ""
 
-#: pysollib/tk/menubar.py:358
+#: pysollib/tk/menubar.py:356
 msgid "&Negative card bottom"
 msgstr ""
 
-#: pysollib/tk/menubar.py:359
+#: pysollib/tk/menubar.py:357
 msgid "A&nimations"
 msgstr ""
 
-#: pysollib/tk/menubar.py:360
+#: pysollib/tk/menubar.py:358
 msgid "&None"
 msgstr ""
 
-#: pysollib/tk/menubar.py:361
+#: pysollib/tk/menubar.py:359
 msgid "&Timer based"
 msgstr ""
 
-#: pysollib/tk/menubar.py:362
+#: pysollib/tk/menubar.py:360
 msgid "&Fast"
 msgstr ""
 
-#: pysollib/tk/menubar.py:363
+#: pysollib/tk/menubar.py:361
 msgid "&Slow"
 msgstr ""
 
-#: pysollib/tk/menubar.py:364
+#: pysollib/tk/menubar.py:362
 msgid "&Very slow"
 msgstr ""
 
-#: pysollib/tk/menubar.py:365
+#: pysollib/tk/menubar.py:363
 msgid "Stick&y mouse"
 msgstr ""
 
-#: pysollib/tk/menubar.py:367
+#: pysollib/tk/menubar.py:365
 msgid "&Fonts..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:368
+#: pysollib/tk/menubar.py:366
 msgid "&Colors..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:369
+#: pysollib/tk/menubar.py:367
 msgid "Time&outs..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:371
+#: pysollib/tk/menubar.py:369
 msgid "&Toolbar"
 msgstr ""
 
-#: pysollib/tk/menubar.py:373
+#: pysollib/tk/menubar.py:371
 msgid "Stat&usbar"
 msgstr ""
 
-#: pysollib/tk/menubar.py:374
+#: pysollib/tk/menubar.py:372
 msgid "Show &statusbar"
 msgstr ""
 
-#: pysollib/tk/menubar.py:375
+#: pysollib/tk/menubar.py:373
 msgid "Show &number of cards"
 msgstr ""
 
-#: pysollib/tk/menubar.py:376
+#: pysollib/tk/menubar.py:374
 msgid "Show &help bar"
 msgstr ""
 
-#: pysollib/tk/menubar.py:377
+#: pysollib/tk/menubar.py:375
 msgid "&Demo logo"
 msgstr ""
 
-#: pysollib/tk/menubar.py:378
+#: pysollib/tk/menubar.py:376
 msgid "Startup splash sc&reen"
 msgstr ""
 
-#: pysollib/tk/menubar.py:382
+#: pysollib/tk/menubar.py:380
 msgid "&Help"
 msgstr ""
 
-#: pysollib/tk/menubar.py:383
+#: pysollib/tk/menubar.py:381
 msgid "&Contents"
 msgstr ""
 
-#: pysollib/tk/menubar.py:384
+#: pysollib/tk/menubar.py:382
 msgid "&How to play"
 msgstr ""
 
-#: pysollib/tk/menubar.py:385
+#: pysollib/tk/menubar.py:383
 msgid "&Rules for this game"
 msgstr ""
 
-#: pysollib/tk/menubar.py:386
+#: pysollib/tk/menubar.py:384
 msgid "&License terms"
 msgstr ""
 
-#: pysollib/tk/menubar.py:389
+#: pysollib/tk/menubar.py:387
 msgid "&About "
 msgstr ""
 
-#: pysollib/tk/menubar.py:497
+#: pysollib/tk/menubar.py:495
 msgid "All &games..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:498
+#: pysollib/tk/menubar.py:496
 msgid "Playable pre&view..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:500
+#: pysollib/tk/menubar.py:498
 msgid "&Popular games"
 msgstr ""
 
-#: pysollib/tk/menubar.py:503
+#: pysollib/tk/menubar.py:501
 msgid "&French games"
 msgstr ""
 
-#: pysollib/tk/menubar.py:506
+#: pysollib/tk/menubar.py:504
 msgid "&Mahjongg games"
 msgstr ""
 
-#: pysollib/tk/menubar.py:509
+#: pysollib/tk/menubar.py:507
 msgid "&Oriental games"
 msgstr ""
 
-#: pysollib/tk/menubar.py:513
+#: pysollib/tk/menubar.py:511
 msgid "&Special games"
 msgstr ""
 
-#: pysollib/tk/menubar.py:517
+#: pysollib/tk/menubar.py:515
 msgid "All games by name"
 msgstr ""
 
-#: pysollib/tk/menubar.py:854 pysollib/tk/menubar.py:856
+#: pysollib/tk/menubar.py:852 pysollib/tk/menubar.py:854
 #: pysollib/tk/selectcardset.py:240
 msgid "&Load"
 msgstr ""
 
-#: pysollib/tk/menubar.py:856
+#: pysollib/tk/menubar.py:854
 msgid "&Info..."
 msgstr ""
 
-#: pysollib/tk/menubar.py:859
+#: pysollib/tk/menubar.py:857
 msgid "Select "
 msgstr ""
 
-#: pysollib/tk/menubar.py:919
+#: pysollib/tk/menubar.py:917
 msgid "Select table background"
 msgstr ""
 
-#: pysollib/tk/menubar.py:931 pysollib/tk/selecttile.py:177
+#: pysollib/tk/menubar.py:929 pysollib/tk/selecttile.py:177
 msgid "Select table color"
 msgstr ""
 
-#: pysollib/tk/playeroptionsdialog.py:113
+#: pysollib/tk/playeroptionsdialog.py:112
 msgid ""
 "\n"
 "Please enter your name"
 msgstr ""
 
-#: pysollib/tk/playeroptionsdialog.py:121
+#: pysollib/tk/playeroptionsdialog.py:120
 msgid "Select..."
 msgstr ""
 
-#: pysollib/tk/playeroptionsdialog.py:125
+#: pysollib/tk/playeroptionsdialog.py:124
 msgid "Confirm quit"
 msgstr ""
 
-#: pysollib/tk/playeroptionsdialog.py:129
+#: pysollib/tk/playeroptionsdialog.py:128
 msgid "Update statistics and logs"
 msgstr ""
 
-#: pysollib/tk/playeroptionsdialog.py:146
+#: pysollib/tk/playeroptionsdialog.py:145
 msgid "Select name"
 msgstr ""
 
@@ -2681,45 +2671,49 @@ msgstr ""
 msgid "&Solid color..."
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:76
+#: pysollib/tk/soundoptionsdialog.py:111
 msgid "Sound enabled"
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:82
+#: pysollib/tk/soundoptionsdialog.py:117
 msgid "Use DirectX for sound playing"
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:88
-msgid "Sample volume"
+#: pysollib/tk/soundoptionsdialog.py:123
+msgid "Sample volume:"
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:94
-msgid "Music volume"
+#: pysollib/tk/soundoptionsdialog.py:131
+msgid "Music volume:"
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:106
+#: pysollib/tk/soundoptionsdialog.py:144
+msgid "Enable samles"
+msgstr ""
+
+#: pysollib/tk/soundoptionsdialog.py:169
 msgid "&Apply"
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:106 pysollib/tk/soundoptionsdialog.py:108
+#: pysollib/tk/soundoptionsdialog.py:169 pysollib/tk/soundoptionsdialog.py:171
 msgid "&Mixer..."
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:155
+#: pysollib/tk/soundoptionsdialog.py:220
 msgid "Sound preferences info"
 msgstr ""
 
-#: pysollib/tk/soundoptionsdialog.py:156
+#: pysollib/tk/soundoptionsdialog.py:221
 msgid ""
 "Changing DirectX settings will take effect\n"
 "the next time you restart "
 msgstr ""
 
-#: pysollib/tk/statusbar.py:138
+#: pysollib/tk/statusbar.py:136
 msgid "Moves/Total moves"
 msgstr ""
 
-#: pysollib/tk/statusbar.py:140
+#: pysollib/tk/statusbar.py:138
 msgid "Games played: won/lost"
 msgstr ""
 
@@ -3041,7 +3035,7 @@ msgstr ""
 msgid "Player options"
 msgstr ""
 
-#: pysollib/tk/toolbar.py:429
+#: pysollib/tk/toolbar.py:435
 msgid "Toolbar"
 msgstr ""
 
diff --git a/po/ru_games.po b/po/ru_games.po
index 0a209d3b..8c5b3024 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: Tue Jun  6 02:20:52 2006\n"
-"PO-Revision-Date: 2006-06-03 03:28+0400\n"
+"POT-Creation-Date: Sun Jun 11 00:30:03 2006\n"
+"PO-Revision-Date: 2006-06-10 11:07+0400\n"
 "Last-Translator: Скоморох <skomoroh@gmail.com>\n"
 "Language-Team: Russian <ru@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -81,9 +81,8 @@ msgstr "Аляска"
 msgid "Algerian Patience"
 msgstr "Алжирский пасьянс"
 
-#, fuzzy
 msgid "Algerian Patience (3 decks)"
-msgstr "Алжирский пасьянс"
+msgstr "Алжирский пасьянс (3 колоды)"
 
 msgid "Alhambra"
 msgstr "Алхамбра"
@@ -148,13 +147,11 @@ msgstr "Старые добрые времена"
 msgid "Aunt Mary"
 msgstr ""
 
-#, fuzzy
 msgid "Australian Patience"
-msgstr "Русский пасьянс"
+msgstr "Австралийский пасьянс"
 
-#, fuzzy
 msgid "Baby Spiderette"
-msgstr "Паучок"
+msgstr "Крошка Паучок"
 
 msgid "Backbone"
 msgstr "Основа"
@@ -191,9 +188,8 @@ msgstr "Летучая мышь"
 msgid "Batsford"
 msgstr "Бетсфорд"
 
-#, fuzzy
 msgid "Bavarian Patience"
-msgstr "Алжирский пасьянс"
+msgstr "Баварский пасьянс"
 
 msgid "Beak and Flipper"
 msgstr "Клюв и ласты"
@@ -233,20 +229,18 @@ msgstr "Большая гора"
 msgid "Big Spider"
 msgstr "Большой паук"
 
-#, fuzzy
 msgid "Big Spider (1 suit)"
-msgstr "Паук (1 масть)"
+msgstr "Большой Паук (1 масть)"
 
-#, fuzzy
 msgid "Big Spider (2 suits)"
-msgstr "Паук (2 масти)"
+msgstr "Большой Паук (2 масти)"
 
 #, fuzzy
 msgid "Big Sumo"
 msgstr "Большая дыра"
 
 msgid "Bim Bom"
-msgstr ""
+msgstr "Бим-Бом"
 
 msgid "Bisley"
 msgstr "Бисли"
@@ -319,9 +313,8 @@ msgstr "Бристоль"
 msgid "British Constitution"
 msgstr "Британская конституция"
 
-#, fuzzy
 msgid "British Square"
-msgstr "Восемь квадратов"
+msgstr "Британский квадрат"
 
 msgid "Brunswick"
 msgstr "Брюнсвик"
@@ -519,9 +512,8 @@ msgstr "Дашаватара"
 msgid "Dead King Golf"
 msgstr "Гольф Смертельный Король"
 
-#, fuzzy
 msgid "Deep"
-msgstr "Глубокий колодец"
+msgstr "Глубокий"
 
 msgid "Deep Well"
 msgstr "Глубокий колодец"
@@ -598,9 +590,8 @@ msgstr "Двойной Кенфилд"
 msgid "Double Cockroach"
 msgstr "Двойной таракан"
 
-#, fuzzy
 msgid "Double Dot"
-msgstr "Дубликаты"
+msgstr "Двоеточие"
 
 msgid "Double Drawbridge"
 msgstr "Двойной разводной мост"
@@ -842,7 +833,7 @@ msgstr "Крепостные башни"
 
 #, fuzzy
 msgid "Fortune's Favor"
-msgstr "Судьба"
+msgstr "Благосклонность фортуны"
 
 msgid "Fortunes"
 msgstr "Судьба"
@@ -853,9 +844,8 @@ msgstr "Сорок разбойников"
 msgid "Forty and Eight"
 msgstr "Сорок и восемь"
 
-#, fuzzy
 msgid "Four Colours"
-msgstr "Четырёхлистный клевер"
+msgstr "Четыре цвета"
 
 msgid "Four Kings"
 msgstr "Четыре короля"
@@ -875,13 +865,11 @@ msgstr "Четыре ветра"
 msgid "Fourteen"
 msgstr "Четырнадцать"
 
-#, fuzzy
 msgid "Fred's Spider"
-msgstr "Смягчённый Паук"
+msgstr "Паук Фреда"
 
-#, fuzzy
 msgid "Fred's Spider (3 decks)"
-msgstr "Церлин (3 колоды)"
+msgstr "Паук Фреда (3 колоды)"
 
 msgid "Free Fan"
 msgstr "Свободный веер"
@@ -946,9 +934,8 @@ msgstr "Происхождение"
 msgid "Genesis +"
 msgstr "Происхождение +"
 
-#, fuzzy
 msgid "German Patience"
-msgstr "Алжирский пасьянс"
+msgstr "Германский пасьянс"
 
 msgid "Ghulam"
 msgstr ""
@@ -980,6 +967,10 @@ msgstr "Полная мера"
 msgid "Grampus"
 msgstr "Касатка"
 
+#, fuzzy
+msgid "Granada"
+msgstr "Алмаз"
+
 msgid "Grandfather"
 msgstr "Дедушка"
 
@@ -1010,9 +1001,8 @@ msgstr "Повод для разрыва"
 msgid "Ground for a Divorce (3 decks)"
 msgstr "Повод для разрыва (3 колоды)"
 
-#, fuzzy
 msgid "Ground for a Divorce (4 decks)"
-msgstr "Повод для разрыва (3 колоды)"
+msgstr "Повод для разрыва (4 колоды)"
 
 msgid "Gypsy"
 msgstr "Цыганский"
@@ -1124,9 +1114,8 @@ msgstr ""
 msgid "Indian"
 msgstr "Индийский"
 
-#, fuzzy
 msgid "Indian Patience"
-msgstr "Русский пасьянс"
+msgstr "Индийский пасьянс"
 
 msgid "Inner Circle"
 msgstr "Внутренний круг"
@@ -1364,9 +1353,8 @@ msgstr "Ограниченный"
 msgid "Lion"
 msgstr "Лион"
 
-#, fuzzy
 msgid "Little Billie"
-msgstr "Малые ворота"
+msgstr "Малыш Билли"
 
 #, fuzzy
 msgid "Little Easy"
@@ -1960,9 +1948,8 @@ msgstr "Марта"
 msgid "Matriarchy"
 msgstr "Матриархат"
 
-#, fuzzy
 msgid "Matrimony"
-msgstr "Матриархат"
+msgstr "Супружество"
 
 msgid "MatsuKiri"
 msgstr ""
@@ -2001,17 +1988,14 @@ msgstr ""
 msgid "Midshipman"
 msgstr "Гардемарин"
 
-#, fuzzy
 msgid "Milligan Cell"
-msgstr "Мисс Миллиган"
+msgstr "Ячейка Миллиган"
 
-#, fuzzy
 msgid "Milligan Harp"
-msgstr "Большая арфа"
+msgstr "Арфа Миллиган"
 
-#, fuzzy
 msgid "Minerva"
-msgstr "Джунгли"
+msgstr "Минерва"
 
 #, fuzzy
 msgid "Mini Traditional"
@@ -2100,7 +2084,6 @@ msgstr "Изгнание Наполеона"
 msgid "Napoleon's Favorite"
 msgstr "Фаворит Наполеона"
 
-#, fuzzy
 msgid "Napoleon's Flank"
 msgstr "Фланг Наполеона"
 
@@ -2157,9 +2140,8 @@ msgstr "Номер десять"
 msgid "Numerica"
 msgstr "Числовой"
 
-#, fuzzy
 msgid "Octagon"
-msgstr "Дракон"
+msgstr "Восьмиугольник"
 
 msgid "Octave"
 msgstr "Восемь"
@@ -2198,12 +2180,11 @@ msgstr "Открытый гигант"
 msgid "Open Peek"
 msgstr ""
 
-#, fuzzy
 msgid "Open Spider"
-msgstr "Паук"
+msgstr "Открытый паук"
 
 msgid "Opus"
-msgstr ""
+msgstr "Опус"
 
 msgid "Orbital"
 msgstr "Орбитальный"
@@ -2248,9 +2229,8 @@ msgstr "Сольный танец"
 msgid "Pas de Deux"
 msgstr "Па-де-де"
 
-#, fuzzy
 msgid "Patriarchs"
-msgstr "Матриархат"
+msgstr "Патриархи"
 
 msgid "Pattern"
 msgstr "Образец"
@@ -2302,7 +2282,7 @@ msgstr "Картинная галерея"
 
 #, fuzzy
 msgid "Pigtail"
-msgstr "Портал"
+msgstr "Косичка"
 
 msgid "PileOn"
 msgstr ""
@@ -2344,9 +2324,8 @@ msgstr "Припасы"
 msgid "Push Pin"
 msgstr "Пуш-пин"
 
-#, fuzzy
 msgid "Puss in the Corner"
-msgstr "Дом в лесу"
+msgstr "Кошка в углу"
 
 msgid "Pyramid"
 msgstr "Пирамида"
@@ -2400,9 +2379,8 @@ msgstr "Овен"
 msgid "Rambling"
 msgstr "Бродячий"
 
-#, fuzzy
 msgid "Rangoon"
-msgstr "Дракон"
+msgstr "Рангун"
 
 msgid "Rank and File"
 msgstr "Ряд и шеренга"
@@ -2413,9 +2391,8 @@ msgstr "Крыса"
 msgid "Raw Prawn"
 msgstr ""
 
-#, fuzzy
 msgid "Realm"
-msgstr "Овен"
+msgstr "Царство"
 
 msgid "Rectangle"
 msgstr "Прямоугольник"
@@ -2448,7 +2425,7 @@ msgid "Relaxed Spider"
 msgstr "Смягчённый Паук"
 
 msgid "Repair"
-msgstr ""
+msgstr "Ремонт"
 
 msgid "Retinue"
 msgstr "Свита"
@@ -2465,9 +2442,8 @@ msgstr "Риттенхаус"
 msgid "River Bridge"
 msgstr "Мост через реку"
 
-#, fuzzy
 msgid "Robert"
-msgstr "Ракета"
+msgstr "Роберт"
 
 msgid "Robin"
 msgstr "Робин"
@@ -2732,13 +2708,11 @@ msgstr "Паук (1 масть)"
 msgid "Spider (2 suits)"
 msgstr "Паук (2 масти)"
 
-#, fuzzy
 msgid "Spider (4 decks)"
-msgstr "Паук (1 масть)"
+msgstr "Паук (4 колоды)"
 
-#, fuzzy
 msgid "Spider 3x3"
-msgstr "Паук"
+msgstr "Паук 3x3"
 
 msgid "Spider Web"
 msgstr "Паутина"
@@ -2754,9 +2728,8 @@ msgstr "Паучок"
 msgid "Spidike"
 msgstr "Паук"
 
-#, fuzzy
 msgid "Squadron"
-msgstr "Квадрат"
+msgstr "Эскадрон"
 
 msgid "Square"
 msgstr "Квадрат"
@@ -2863,9 +2836,8 @@ msgstr ""
 msgid "Superior Canfield"
 msgstr "Двойной Кенфилд"
 
-#, fuzzy
 msgid "Surprise"
-msgstr "Предприятие"
+msgstr "Сюрприз"
 
 msgid "Surukh"
 msgstr ""
@@ -3027,19 +2999,17 @@ msgstr "Тройной Клондайк"
 msgid "Triple Klondike by Threes"
 msgstr "Тройной Клондайк по три"
 
-#, fuzzy
 msgid "Triple Line"
-msgstr "Тройной Юкон"
+msgstr "Тройная линия"
 
-#, fuzzy
 msgid "Triple York"
-msgstr "Тройной Юкон"
+msgstr "Тройной Йорк"
 
 msgid "Triple Yukon"
 msgstr "Тройной Юкон"
 
 msgid "Twenty"
-msgstr ""
+msgstr "Двенадцать"
 
 msgid "Twin"
 msgstr ""
@@ -3165,9 +3135,8 @@ msgstr "Маджонг X-Files"
 msgid "X-Shape"
 msgstr "Маджонг X-Shape"
 
-#, fuzzy
 msgid "York"
-msgstr "Нью-Йорк"
+msgstr "Йорк"
 
 msgid "Yukon"
 msgstr "Юкон"
diff --git a/po/ru_pysol.po b/po/ru_pysol.po
index c51e0a27..cdafff22 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: Tue Jun  6 02:20:47 2006\n"
-"PO-Revision-Date: 2006-06-06 09:08+0400\n"
+"POT-Creation-Date: Sun Jun 11 00:29:57 2006\n"
+"PO-Revision-Date: 2006-06-11 00:32+0400\n"
 "Last-Translator: Скоморох <skomoroh@gmail.com>\n"
 "Language-Team: Russian <ru@li.org>\n"
 "MIME-Version: 1.0\n"
@@ -18,8 +18,8 @@ msgstr ""
 msgid "New game"
 msgstr "Новая игра"
 
-#: pysollib/actions.py:357 pysollib/tk/menubar.py:667
-#: pysollib/tk/menubar.py:681
+#: pysollib/actions.py:357 pysollib/tk/menubar.py:665
+#: pysollib/tk/menubar.py:679
 msgid "Select game"
 msgstr "Выбрать игру"
 
@@ -53,34 +53,34 @@ msgstr ""
 msgid "&Next number"
 msgstr "&Следующий номер"
 
-#: pysollib/actions.py:409 pysollib/app.py:1090 pysollib/app.py:1102
-#: pysollib/game.py:828 pysollib/game.py:1642 pysollib/main.py:413
+#: pysollib/actions.py:409 pysollib/app.py:1118 pysollib/app.py:1130
+#: pysollib/game.py:830 pysollib/game.py:1644 pysollib/main.py:413
 #: pysollib/main.py:421 pysollib/tk/colorsdialog.py:131
 #: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:140
 #: pysollib/tk/fontsdialog.py:204 pysollib/tk/gameinfodialog.py:133
-#: pysollib/tk/playeroptionsdialog.py:86
-#: pysollib/tk/playeroptionsdialog.py:161 pysollib/tk/selectcardset.py:240
+#: pysollib/tk/playeroptionsdialog.py:85
+#: pysollib/tk/playeroptionsdialog.py:160 pysollib/tk/selectcardset.py:240
 #: pysollib/tk/selectcardset.py:396 pysollib/tk/selecttile.py:158
-#: pysollib/tk/soundoptionsdialog.py:106 pysollib/tk/soundoptionsdialog.py:158
+#: pysollib/tk/soundoptionsdialog.py:169 pysollib/tk/soundoptionsdialog.py:223
 #: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkhtml.py:459
 #: pysollib/tk/tkstats.py:288 pysollib/tk/tkstats.py:571
 #: pysollib/tk/tkstats.py:645 pysollib/tk/tkstats.py:661
 #: pysollib/tk/tkstats.py:703 pysollib/tk/tkstats.py:775
-#: pysollib/tk/tkstats.py:859 pysollib/tk/tkwidget.py:159
-#: pysollib/tk/tkwidget.py:312
+#: pysollib/tk/tkstats.py:859 pysollib/tk/tkwidget.py:156
+#: pysollib/tk/tkwidget.py:320
 msgid "&OK"
 msgstr "&ОК"
 
-#: pysollib/actions.py:409 pysollib/app.py:1102 pysollib/game.py:828
-#: pysollib/game.py:1205 pysollib/game.py:1220 pysollib/game.py:1226
-#: pysollib/game.py:1231 pysollib/tk/colorsdialog.py:131
+#: pysollib/actions.py:409 pysollib/app.py:1130 pysollib/game.py:830
+#: pysollib/game.py:1207 pysollib/game.py:1222 pysollib/game.py:1228
+#: pysollib/game.py:1233 pysollib/tk/colorsdialog.py:131
 #: pysollib/tk/edittextdialog.py:82 pysollib/tk/fontsdialog.py:140
-#: pysollib/tk/fontsdialog.py:204 pysollib/tk/menubar.py:854
-#: pysollib/tk/menubar.py:856 pysollib/tk/playeroptionsdialog.py:86
-#: pysollib/tk/playeroptionsdialog.py:161 pysollib/tk/selectcardset.py:240
+#: pysollib/tk/fontsdialog.py:204 pysollib/tk/menubar.py:852
+#: pysollib/tk/menubar.py:854 pysollib/tk/playeroptionsdialog.py:85
+#: pysollib/tk/playeroptionsdialog.py:160 pysollib/tk/selectcardset.py:240
 #: pysollib/tk/selectgame.py:268 pysollib/tk/selectgame.py:409
-#: pysollib/tk/selecttile.py:158 pysollib/tk/soundoptionsdialog.py:106
-#: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkwidget.py:312
+#: pysollib/tk/selecttile.py:158 pysollib/tk/soundoptionsdialog.py:169
+#: pysollib/tk/timeoutsdialog.py:92 pysollib/tk/tkwidget.py:320
 msgid "&Cancel"
 msgstr "От&мена"
 
@@ -128,7 +128,7 @@ msgstr "Комментарий для "
 msgid "Error while writing to file"
 msgstr "Ошибка при записи в файл"
 
-#: pysollib/actions.py:616 pysollib/actions.py:652 pysollib/actions.py:941
+#: pysollib/actions.py:616 pysollib/actions.py:652
 msgid " Info"
 msgstr " Информация"
 
@@ -249,39 +249,27 @@ msgstr "Настроить шрифт"
 msgid "Set timeouts"
 msgstr "Настроить таймауты"
 
-#: pysollib/actions.py:938
-msgid "Error while saving options"
-msgstr "Ошибка при сохранении настроек"
-
-#: pysollib/actions.py:942
-msgid ""
-"Options were saved to\n"
-"\n"
-msgstr ""
-"Опции сохранены в\n"
-"\n"
-
 #: pysollib/app.py:86
 msgid "Unknown"
 msgstr "Неизвестный"
 
-#: pysollib/app.py:952
+#: pysollib/app.py:980
 msgid "Loading %s %s..."
 msgstr "Загружается %s %s..."
 
-#: pysollib/app.py:987
+#: pysollib/app.py:1015
 msgid " load error"
 msgstr " ошибка при загрузке"
 
-#: pysollib/app.py:988
+#: pysollib/app.py:1016
 msgid "Error while loading "
 msgstr "Ошибка при загрузке"
 
-#: pysollib/app.py:1082
+#: pysollib/app.py:1110
 msgid "Incompatible "
 msgstr "Несовместимый "
 
-#: pysollib/app.py:1084
+#: pysollib/app.py:1112
 msgid ""
 "The currently selected %s %s\n"
 "is not compatible with the game\n"
@@ -295,7 +283,7 @@ msgstr ""
 "\n"
 "Необходимо выбрать %s типа %s.\n"
 
-#: pysollib/app.py:1100
+#: pysollib/app.py:1128
 msgid "Please select a %s type %s"
 msgstr "Выберите %s типа %s"
 
@@ -303,11 +291,11 @@ msgstr "Выберите %s типа %s"
 msgid "Player\n"
 msgstr "Игрок\n"
 
-#: pysollib/game.py:824
+#: pysollib/game.py:826
 msgid "Discard current game ?"
 msgstr "Завершить текущую игру?"
 
-#: pysollib/game.py:1159
+#: pysollib/game.py:1161
 msgid ""
 "\n"
 "You have reached\n"
@@ -317,7 +305,7 @@ msgstr ""
 "Вы достигли\n"
 "#%d в %s игрового времени"
 
-#: pysollib/game.py:1162
+#: pysollib/game.py:1164
 msgid ""
 "\n"
 "and #%d in the %s of moves"
@@ -325,7 +313,7 @@ msgstr ""
 "\n"
 "и #%d в %s количества ходов"
 
-#: pysollib/game.py:1164
+#: pysollib/game.py:1166
 msgid ""
 "\n"
 "You have reached\n"
@@ -335,7 +323,7 @@ msgstr ""
 "Вы достигли\n"
 "#%d в %s количества ходов"
 
-#: pysollib/game.py:1167
+#: pysollib/game.py:1169
 msgid ""
 "\n"
 "and #%d in the %s of total moves"
@@ -343,7 +331,7 @@ msgstr ""
 "\n"
 "и #%d в %s общего количества ходов"
 
-#: pysollib/game.py:1169
+#: pysollib/game.py:1171
 msgid ""
 "\n"
 "You have reached\n"
@@ -353,11 +341,11 @@ msgstr ""
 "Вы достигли\n"
 "#%d в %s общего количества ходов"
 
-#: pysollib/game.py:1196 pysollib/game.py:1212
+#: pysollib/game.py:1198 pysollib/game.py:1214
 msgid "Game won"
 msgstr "Игра выиграна"
 
-#: pysollib/game.py:1197
+#: pysollib/game.py:1199
 msgid ""
 "\n"
 "Congratulations, this\n"
@@ -376,12 +364,12 @@ msgstr ""
 "Количество ходов: %s\n"
 "%s\n"
 
-#: pysollib/game.py:1205 pysollib/game.py:1220 pysollib/game.py:1226
-#: pysollib/game.py:1231 pysollib/tk/menubar.py:250
+#: pysollib/game.py:1207 pysollib/game.py:1222 pysollib/game.py:1228
+#: pysollib/game.py:1233 pysollib/tk/menubar.py:250
 msgid "&New game"
 msgstr "&Новая игра"
 
-#: pysollib/game.py:1213
+#: pysollib/game.py:1215
 msgid ""
 "\n"
 "Congratulations, you did it !\n"
@@ -398,11 +386,11 @@ msgstr ""
 "Количество ходов: %s\n"
 "%s\n"
 
-#: pysollib/game.py:1224 pysollib/game.py:1229
+#: pysollib/game.py:1226 pysollib/game.py:1231
 msgid "Game finished"
 msgstr "Игра закончена"
 
-#: pysollib/game.py:1225 pysollib/game.py:1643
+#: pysollib/game.py:1227 pysollib/game.py:1645
 msgid ""
 "\n"
 "Game finished\n"
@@ -410,7 +398,7 @@ msgstr ""
 "\n"
 "Игра закончена\n"
 
-#: pysollib/game.py:1230
+#: pysollib/game.py:1232
 msgid ""
 "\n"
 "Game finished, but not without my help...\n"
@@ -418,35 +406,35 @@ msgstr ""
 "\n"
 "Игра закончена, но не без моей помощи...\n"
 
-#: pysollib/game.py:1231
+#: pysollib/game.py:1233
 msgid "&Restart"
 msgstr "&Начало"
 
-#: pysollib/game.py:1535
+#: pysollib/game.py:1537
 msgid "Score %6d"
 msgstr "Счет %6d"
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Cool"
 msgstr "&Отлично"
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Great"
 msgstr "&Эдорово"
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Wow"
 msgstr "&Ура"
 
-#: pysollib/game.py:1634
+#: pysollib/game.py:1636
 msgid "&Yeah"
 msgstr "&Ага"
 
-#: pysollib/game.py:1635 pysollib/game.py:1646 pysollib/game.py:1658
+#: pysollib/game.py:1637 pysollib/game.py:1648 pysollib/game.py:1660
 msgid " Autopilot"
 msgstr " Автопилот"
 
-#: pysollib/game.py:1636
+#: pysollib/game.py:1638
 msgid ""
 "\n"
 "Game solved in %d moves.\n"
@@ -454,19 +442,19 @@ msgstr ""
 "\n"
 "Игра решена за %d ходов\n"
 
-#: pysollib/game.py:1657
+#: pysollib/game.py:1659
 msgid "&Hmm"
 msgstr "&Хмм"
 
-#: pysollib/game.py:1657
+#: pysollib/game.py:1659
 msgid "&Oh well"
 msgstr "&Ох"
 
-#: pysollib/game.py:1657
+#: pysollib/game.py:1659
 msgid "&That's life"
 msgstr "&Такова жизнь"
 
-#: pysollib/game.py:1659
+#: pysollib/game.py:1661
 msgid ""
 "\n"
 "This won't come out...\n"
@@ -474,31 +462,31 @@ msgstr ""
 "\n"
 "Не удалось...\n"
 
-#: pysollib/game.py:2063
+#: pysollib/game.py:2065
 msgid "Set bookmark"
 msgstr "Установить закладку"
 
-#: pysollib/game.py:2064
+#: pysollib/game.py:2066
 msgid "Replace existing bookmark %d ?"
 msgstr "Заменить существующую закладку %d ?"
 
-#: pysollib/game.py:2086
+#: pysollib/game.py:2088
 msgid "Goto bookmark"
 msgstr "Перейти к закладке"
 
-#: pysollib/game.py:2087
+#: pysollib/game.py:2089
 msgid "Goto bookmark %d ?"
 msgstr "Перейти к закладке %d ?"
 
-#: pysollib/game.py:2118
+#: pysollib/game.py:2120
 msgid "Open game"
 msgstr "Открыть игру"
 
-#: pysollib/game.py:2129 pysollib/game.py:2138 pysollib/game.py:2143
+#: pysollib/game.py:2131 pysollib/game.py:2140 pysollib/game.py:2145
 msgid "Load game error"
 msgstr "Ошибка при загрузке игры"
 
-#: pysollib/game.py:2130
+#: pysollib/game.py:2132
 msgid ""
 "Error while loading game.\n"
 "\n"
@@ -506,11 +494,11 @@ msgid ""
 "but this could also be a bug you might want to report."
 msgstr ""
 
-#: pysollib/game.py:2139
+#: pysollib/game.py:2141
 msgid "Error while loading game"
 msgstr "Ошибка при загрузке игры"
 
-#: pysollib/game.py:2144
+#: pysollib/game.py:2146
 msgid ""
 "Internal error while loading game.\n"
 "\n"
@@ -520,11 +508,11 @@ msgstr ""
 "\n"
 "Пожалуйста сообщите об этой ошибке."
 
-#: pysollib/game.py:2169
+#: pysollib/game.py:2171
 msgid "Save game error"
 msgstr "Ошибка при сохранении игры"
 
-#: pysollib/game.py:2170
+#: pysollib/game.py:2172
 msgid "Error while saving game"
 msgstr "Ошибка при сохранении игры"
 
@@ -1881,72 +1869,72 @@ msgstr ""
 msgid "Free cell."
 msgstr "Свободная ячейка."
 
-#: pysollib/stats.py:120 pysollib/tk/tkstats.py:78
+#: pysollib/stats.py:118 pysollib/tk/tkstats.py:78
 msgid "Demo games"
 msgstr "Демо игры"
 
-#: pysollib/stats.py:121
+#: pysollib/stats.py:119
 msgid "Played"
 msgstr "Играл"
 
-#: pysollib/stats.py:122 pysollib/stats.py:202
+#: pysollib/stats.py:120 pysollib/stats.py:200
 msgid "Won"
 msgstr "Выиграл"
 
-#: pysollib/stats.py:123 pysollib/stats.py:202
+#: pysollib/stats.py:121 pysollib/stats.py:200
 msgid "Lost"
 msgstr "Проиграл"
 
-#: pysollib/stats.py:124 pysollib/tk/statusbar.py:137
+#: pysollib/stats.py:122 pysollib/tk/statusbar.py:135
 msgid "Playing time"
 msgstr "Время игры"
 
-#: pysollib/stats.py:125
+#: pysollib/stats.py:123
 msgid "Moves"
 msgstr "Ходов"
 
-#: pysollib/stats.py:126
+#: pysollib/stats.py:124
 msgid "% won"
 msgstr "% побед"
 
-#: pysollib/stats.py:155
+#: pysollib/stats.py:153
 msgid "Total (%d out of %d games)"
 msgstr "Всего (%d из %d игр)"
 
-#: pysollib/stats.py:164
+#: pysollib/stats.py:162
 msgid "Game"
 msgstr "Игра"
 
-#: pysollib/stats.py:164
+#: pysollib/stats.py:162
 msgid "Status"
 msgstr "Статус"
 
-#: pysollib/stats.py:164 pysollib/tk/statusbar.py:139
+#: pysollib/stats.py:162 pysollib/tk/statusbar.py:137
 #: pysollib/tk/tkstats.py:733
 msgid "Game number"
 msgstr "Номер игры"
 
-#: pysollib/stats.py:164 pysollib/tk/tkstats.py:736
+#: pysollib/stats.py:162 pysollib/tk/tkstats.py:736
 msgid "Started at"
 msgstr "Игра начата"
 
-#: pysollib/stats.py:187
+#: pysollib/stats.py:185
 msgid "** UNKNOWN %d **"
 msgstr ""
 
-#: pysollib/stats.py:195
+#: pysollib/stats.py:193
 msgid "** ERROR **"
 msgstr ""
 
-#: pysollib/stats.py:202
+#: pysollib/stats.py:200
 msgid "Loaded"
 msgstr "Загружал"
 
-#: pysollib/stats.py:202
+#: pysollib/stats.py:200
 msgid "Not won"
 msgstr "Не выиграл"
 
-#: pysollib/stats.py:202
+#: pysollib/stats.py:200
 msgid "Perfect"
 msgstr "Великолепная"
 
@@ -2295,180 +2283,180 @@ msgstr "Показывать стрелку (в Шисен-Сё)"
 msgid "&Sound"
 msgstr "&Звук"
 
-#: pysollib/tk/menubar.py:351
+#: pysollib/tk/menubar.py:349
 msgid "Cards&et..."
 msgstr "Коло&да..."
 
-#: pysollib/tk/menubar.py:352
+#: pysollib/tk/menubar.py:350
 msgid "Table t&ile..."
 msgstr "&Игровой стол..."
 
-#: pysollib/tk/menubar.py:354
+#: pysollib/tk/menubar.py:352
 msgid "Card &background"
 msgstr "&Рубашка карты"
 
-#: pysollib/tk/menubar.py:355
+#: pysollib/tk/menubar.py:353
 msgid "Card &view"
 msgstr "&Вид карты"
 
-#: pysollib/tk/menubar.py:356
+#: pysollib/tk/menubar.py:354
 msgid "Card shado&w"
 msgstr "Тень карты"
 
-#: pysollib/tk/menubar.py:357
+#: pysollib/tk/menubar.py:355
 msgid "Shade &legal moves"
 msgstr "Подсвечивать &разрешенные ходы"
 
-#: pysollib/tk/menubar.py:358
+#: pysollib/tk/menubar.py:356
 msgid "&Negative card bottom"
 msgstr "&Негативные контуры карты"
 
-#: pysollib/tk/menubar.py:359
+#: pysollib/tk/menubar.py:357
 msgid "A&nimations"
 msgstr "&Анимация"
 
-#: pysollib/tk/menubar.py:360
+#: pysollib/tk/menubar.py:358
 msgid "&None"
 msgstr "&Нет"
 
-#: pysollib/tk/menubar.py:361
+#: pysollib/tk/menubar.py:359
 msgid "&Timer based"
 msgstr "Базирующаяся на &таймере"
 
-#: pysollib/tk/menubar.py:362
+#: pysollib/tk/menubar.py:360
 msgid "&Fast"
 msgstr "&Быстрая"
 
-#: pysollib/tk/menubar.py:363
+#: pysollib/tk/menubar.py:361
 msgid "&Slow"
 msgstr "&Медленная"
 
-#: pysollib/tk/menubar.py:364
+#: pysollib/tk/menubar.py:362
 msgid "&Very slow"
 msgstr "&Очень медленная"
 
-#: pysollib/tk/menubar.py:365
+#: pysollib/tk/menubar.py:363
 msgid "Stick&y mouse"
 msgstr "&Липкая мышь"
 
-#: pysollib/tk/menubar.py:367
+#: pysollib/tk/menubar.py:365
 msgid "&Fonts..."
 msgstr "&Шрифты..."
 
-#: pysollib/tk/menubar.py:368
+#: pysollib/tk/menubar.py:366
 msgid "&Colors..."
 msgstr "&Цвета..."
 
-#: pysollib/tk/menubar.py:369
+#: pysollib/tk/menubar.py:367
 msgid "Time&outs..."
 msgstr "Тайма&уты..."
 
-#: pysollib/tk/menubar.py:371
+#: pysollib/tk/menubar.py:369
 msgid "&Toolbar"
 msgstr "Панель &инструментов"
 
-#: pysollib/tk/menubar.py:373
+#: pysollib/tk/menubar.py:371
 msgid "Stat&usbar"
 msgstr "Панель состояния"
 
-#: pysollib/tk/menubar.py:374
+#: pysollib/tk/menubar.py:372
 msgid "Show &statusbar"
 msgstr "Показывать панель состояния"
 
-#: pysollib/tk/menubar.py:375
+#: pysollib/tk/menubar.py:373
 msgid "Show &number of cards"
 msgstr "Показывать количество карт"
 
-#: pysollib/tk/menubar.py:376
+#: pysollib/tk/menubar.py:374
 msgid "Show &help bar"
 msgstr "Показывать панель помощи"
 
-#: pysollib/tk/menubar.py:377
+#: pysollib/tk/menubar.py:375
 msgid "&Demo logo"
 msgstr "&Демо лого"
 
-#: pysollib/tk/menubar.py:378
+#: pysollib/tk/menubar.py:376
 msgid "Startup splash sc&reen"
 msgstr "Окно &запуска"
 
-#: pysollib/tk/menubar.py:382
+#: pysollib/tk/menubar.py:380
 msgid "&Help"
 msgstr "&Помощь"
 
-#: pysollib/tk/menubar.py:383
+#: pysollib/tk/menubar.py:381
 msgid "&Contents"
 msgstr "&Содержание"
 
-#: pysollib/tk/menubar.py:384
+#: pysollib/tk/menubar.py:382
 msgid "&How to play"
 msgstr "Как &играть"
 
-#: pysollib/tk/menubar.py:385
+#: pysollib/tk/menubar.py:383
 msgid "&Rules for this game"
 msgstr "&Правила текущей игры"
 
-#: pysollib/tk/menubar.py:386
+#: pysollib/tk/menubar.py:384
 msgid "&License terms"
 msgstr "&Лицензия"
 
-#: pysollib/tk/menubar.py:389
+#: pysollib/tk/menubar.py:387
 msgid "&About "
 msgstr "&О программе "
 
-#: pysollib/tk/menubar.py:497
+#: pysollib/tk/menubar.py:495
 msgid "All &games..."
 msgstr "&Все игры..."
 
-#: pysollib/tk/menubar.py:498
+#: pysollib/tk/menubar.py:496
 msgid "Playable pre&view..."
 msgstr "Играемый &предпросмотр..."
 
-#: pysollib/tk/menubar.py:500
+#: pysollib/tk/menubar.py:498
 msgid "&Popular games"
 msgstr "&Популярные игры"
 
-#: pysollib/tk/menubar.py:503
+#: pysollib/tk/menubar.py:501
 msgid "&French games"
 msgstr "&Классические игры"
 
-#: pysollib/tk/menubar.py:506
+#: pysollib/tk/menubar.py:504
 msgid "&Mahjongg games"
 msgstr "Игры маджонг"
 
-#: pysollib/tk/menubar.py:509
+#: pysollib/tk/menubar.py:507
 msgid "&Oriental games"
 msgstr "&Восточные игры"
 
-#: pysollib/tk/menubar.py:513
+#: pysollib/tk/menubar.py:511
 msgid "&Special games"
 msgstr "&Особые игры"
 
-#: pysollib/tk/menubar.py:517
+#: pysollib/tk/menubar.py:515
 msgid "All games by name"
 msgstr "Все игры по имени"
 
-#: pysollib/tk/menubar.py:854 pysollib/tk/menubar.py:856
+#: pysollib/tk/menubar.py:852 pysollib/tk/menubar.py:854
 #: pysollib/tk/selectcardset.py:240
 msgid "&Load"
 msgstr "&Загрузить"
 
-#: pysollib/tk/menubar.py:856
+#: pysollib/tk/menubar.py:854
 msgid "&Info..."
 msgstr "&Информация..."
 
-#: pysollib/tk/menubar.py:859
+#: pysollib/tk/menubar.py:857
 msgid "Select "
 msgstr "Выбрать "
 
-#: pysollib/tk/menubar.py:919
+#: pysollib/tk/menubar.py:917
 msgid "Select table background"
 msgstr "Выбрать фоновое изображение"
 
-#: pysollib/tk/menubar.py:931 pysollib/tk/selecttile.py:177
+#: pysollib/tk/menubar.py:929 pysollib/tk/selecttile.py:177
 msgid "Select table color"
 msgstr "Выбрать цвет"
 
-#: pysollib/tk/playeroptionsdialog.py:113
+#: pysollib/tk/playeroptionsdialog.py:112
 msgid ""
 "\n"
 "Please enter your name"
@@ -2476,19 +2464,19 @@ msgstr ""
 "\n"
 "Пожалуйста введите Ваше имя"
 
-#: pysollib/tk/playeroptionsdialog.py:121
+#: pysollib/tk/playeroptionsdialog.py:120
 msgid "Select..."
 msgstr "Выбрать..."
 
-#: pysollib/tk/playeroptionsdialog.py:125
+#: pysollib/tk/playeroptionsdialog.py:124
 msgid "Confirm quit"
 msgstr "Подтверждение выхода"
 
-#: pysollib/tk/playeroptionsdialog.py:129
+#: pysollib/tk/playeroptionsdialog.py:128
 msgid "Update statistics and logs"
 msgstr "Обнавлять статистику и лог"
 
-#: pysollib/tk/playeroptionsdialog.py:146
+#: pysollib/tk/playeroptionsdialog.py:145
 msgid "Select name"
 msgstr "Выбрать имя"
 
@@ -2823,35 +2811,39 @@ msgstr "Все фоновые изображения"
 msgid "&Solid color..."
 msgstr "&Монотонный цвет..."
 
-#: pysollib/tk/soundoptionsdialog.py:76
+#: pysollib/tk/soundoptionsdialog.py:111
 msgid "Sound enabled"
 msgstr "Звук доступен"
 
-#: pysollib/tk/soundoptionsdialog.py:82
+#: pysollib/tk/soundoptionsdialog.py:117
 msgid "Use DirectX for sound playing"
-msgstr "Использовать DirectX длы вывода звука"
+msgstr "Использовать DirectX для вывода звука"
 
-#: pysollib/tk/soundoptionsdialog.py:88
-msgid "Sample volume"
-msgstr "Уровень звуков"
+#: pysollib/tk/soundoptionsdialog.py:123
+msgid "Sample volume:"
+msgstr "Уровень звуков:"
 
-#: pysollib/tk/soundoptionsdialog.py:94
-msgid "Music volume"
-msgstr "Уровень музыки"
+#: pysollib/tk/soundoptionsdialog.py:131
+msgid "Music volume:"
+msgstr "Уровень музыки:"
 
-#: pysollib/tk/soundoptionsdialog.py:106
+#: pysollib/tk/soundoptionsdialog.py:144
+msgid "Enable samles"
+msgstr "Включить звуки"
+
+#: pysollib/tk/soundoptionsdialog.py:169
 msgid "&Apply"
 msgstr "&Применить"
 
-#: pysollib/tk/soundoptionsdialog.py:106 pysollib/tk/soundoptionsdialog.py:108
+#: pysollib/tk/soundoptionsdialog.py:169 pysollib/tk/soundoptionsdialog.py:171
 msgid "&Mixer..."
 msgstr "&Миксер..."
 
-#: pysollib/tk/soundoptionsdialog.py:155
+#: pysollib/tk/soundoptionsdialog.py:220
 msgid "Sound preferences info"
 msgstr "Информация о настройках звука"
 
-#: pysollib/tk/soundoptionsdialog.py:156
+#: pysollib/tk/soundoptionsdialog.py:221
 msgid ""
 "Changing DirectX settings will take effect\n"
 "the next time you restart "
@@ -2859,11 +2851,11 @@ msgstr ""
 "Изменения установок DirectX вступят в силу\n"
 "при следующем запуске "
 
-#: pysollib/tk/statusbar.py:138
+#: pysollib/tk/statusbar.py:136
 msgid "Moves/Total moves"
 msgstr "Ходов/Всего ходов"
 
-#: pysollib/tk/statusbar.py:140
+#: pysollib/tk/statusbar.py:138
 msgid "Games played: won/lost"
 msgstr "Игр: выиграно/проиграно"
 
@@ -3200,7 +3192,7 @@ msgstr "Игрок"
 msgid "Player options"
 msgstr "Установки игрока"
 
-#: pysollib/tk/toolbar.py:429
+#: pysollib/tk/toolbar.py:435
 msgid "Toolbar"
 msgstr "Панель инструментов"
 
@@ -3232,6 +3224,16 @@ msgstr "красный"
 msgid "cardset"
 msgstr "набор карт"
 
+#~ msgid "Error while saving options"
+#~ msgstr "Ошибка при сохранении настроек"
+
+#~ msgid ""
+#~ "Options were saved to\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Опции сохранены в\n"
+#~ "\n"
+
 #~ msgid "Set demo options"
 #~ msgstr "Настройка демо"
 
diff --git a/pysollib/actions.py b/pysollib/actions.py
index 8a1ff42f..f3df4f29 100644
--- a/pysollib/actions.py
+++ b/pysollib/actions.py
@@ -863,11 +863,11 @@ class PysolMenubarActions:
         self.app.opt.shisen_show_hint = self.tkopt.shisen_show_hint.get()
         ##self.game.updateMenus()
 
-    def mOptSound(self, *args):
-        if self._cancelDrag(break_pause=False): return
-        self.app.opt.sound = self.tkopt.sound.get()
-        if not self.app.opt.sound:
-            self.app.audio.stopAll()
+##     def mOptSound(self, *args):
+##         if self._cancelDrag(break_pause=False): return
+##         self.app.opt.sound = self.tkopt.sound.get()
+##         if not self.app.opt.sound:
+##             self.app.audio.stopAll()
 
     def mOptSoundDialog(self, *args):
         if self._cancelDrag(break_pause=False): return
@@ -886,9 +886,9 @@ class PysolMenubarActions:
         if self._cancelDrag(break_pause=False): return
         self.app.opt.shade = self.tkopt.shade.get()
 
-    def mOptIrregularPiles(self, *args):
-        if self._cancelDrag(): return
-        self.app.opt.irregular_piles = self.tkopt.irregular_piles.get()
+##     def mOptIrregularPiles(self, *args):
+##         if self._cancelDrag(): return
+##         self.app.opt.irregular_piles = self.tkopt.irregular_piles.get()
 
     def mOptColorsOptions(self, *args):
         if self._cancelDrag(break_pause=False): return
@@ -929,17 +929,17 @@ class PysolMenubarActions:
             self.app.opt.highlight_cards_sleep = d.highlight_cards_sleep
             self.app.opt.highlight_samerank_sleep = d.highlight_samerank_sleep
 
-    def mOptSave(self, *args):
-        if self._cancelDrag(break_pause=False): return
-        try:
-            self.app.saveOptions()
-        except Exception, ex:
-            d = MfxExceptionDialog(self.top, ex,
-                                   text=_("Error while saving options"))
-        else:
-            # tell the player where their config files reside
-            d = MfxMessageDialog(self.top, title=PACKAGE+_(" Info"), bitmap="info",
-                                 text=_("Options were saved to\n\n") + self.app.fn.opt)
+##     def mOptSave(self, *args):
+##         if self._cancelDrag(break_pause=False): return
+##         try:
+##             self.app.saveOptions()
+##         except Exception, ex:
+##             d = MfxExceptionDialog(self.top, ex,
+##                                    text=_("Error while saving options"))
+##         else:
+##             # tell the player where their config files reside
+##             d = MfxMessageDialog(self.top, title=PACKAGE+_(" Info"), bitmap="info",
+##                                  text=_("Options were saved to\n\n") + self.app.fn.opt)
 
 
     #
diff --git a/pysollib/app.py b/pysollib/app.py
index 6b8bdabd..bd41e1eb 100644
--- a/pysollib/app.py
+++ b/pysollib/app.py
@@ -117,10 +117,38 @@ class Options:
         self.statusbar = 1
         self.num_cards = 0
         self.helpbar = 0
+        # sound
         self.sound = 1
         self.sound_mode = 1
         self.sound_sample_volume = 128
         self.sound_music_volume = 128
+        self.sound_samples = {
+            'areyousure'    : True,
+            'autodrop'      : True,
+            'autoflip'      : True,
+            'autopilotlost' : True,
+            'autopilotwon'  : True,
+            'deal'          : True,
+            'deal01'        : True,
+            'deal02'        : True,
+            'deal04'        : True,
+            'deal08'        : True,
+            'dealwaste'     : True,
+            'droppair'      : True,
+            'drop'          : True,
+            'extra'         : True,
+            'flip'          : True,
+            'move'          : True,
+            'nomove'        : True,
+            'redo'          : True,
+            'startdrag'     : True,
+            'turnwaste'     : True,
+            'undo'          : True,
+            'gamefinished'  : True,
+            'gamelost'      : True,
+            'gameperfect'   : True,
+            'gamewon'       : True,
+            }
         # fonts
         self.fonts = {"default"        : None,
                       #"default"        : ("helvetica", 12),
diff --git a/pysollib/game.py b/pysollib/game.py
index 5b498956..28bd6deb 100644
--- a/pysollib/game.py
+++ b/pysollib/game.py
@@ -784,6 +784,8 @@ class Game:
     #
 
     def playSample(self, name, priority=0, loop=0):
+        if not self.app.opt.sound_samples[name]:
+            return 0
         ##print "playSample:", name, priority, loop
         if self.app.audio:
             return self.app.audio.playSample(name, priority=priority, loop=loop)
@@ -801,7 +803,7 @@ class Game:
         a = self.app.opt.animations
         if a and not self.preview:
             self.canvas.update_idletasks()
-        if self.app.audio and self.app.opt.sound:
+        if self.app.audio and self.app.opt.sound and self.app.opt.sound_samples['deal']:
             if a in (1, 2, 5):
                 self.playSample("deal01", priority=100, loop=loop)
             elif a == 3:
@@ -1192,7 +1194,7 @@ class Game:
             top_msg = self.updateStats()
             time = self.getTime()
             self.finished = True
-            self.playSample("winperfect", priority=1000)
+            self.playSample("gameperfect", priority=1000)
             d = MfxMessageDialog(self.top, title=_("Game won"),
                                  text=_('''
 Congratulations, this
@@ -1208,7 +1210,7 @@ for %d moves.
             top_msg = self.updateStats()
             time = self.getTime()
             self.finished = True
-            self.playSample("winwon", priority=1000)
+            self.playSample("gamewon", priority=1000)
             d = MfxMessageDialog(self.top, title=_("Game won"),
                                  text=_('''
 Congratulations, you did it !
@@ -1220,12 +1222,12 @@ for %d moves.
                                  strings=(_("&New game"), None, _("&Cancel")),
                                  image=self.app.gimages.logos[4], separatorwidth=2)
         elif self.gstats.updated < 0:
-            self.playSample("winfinished", priority=1000)
+            self.playSample("gamefinished", priority=1000)
             d = MfxMessageDialog(self.top, title=_("Game finished"), bitmap="info",
                                  text=_("\nGame finished\n"),
                                  strings=(_("&New game"), None, _("&Cancel")))
         else:
-            self.playSample("winlost", priority=1000)
+            self.playSample("gamelost", priority=1000)
             d = MfxMessageDialog(self.top, title=_("Game finished"), bitmap="info",
                                  text=_("\nGame finished, but not without my help...\n"),
                                  strings=(_("&New game"), _("&Restart"), _("&Cancel")))
diff --git a/pysollib/tk/menubar.py b/pysollib/tk/menubar.py
index 4a61cc79..a38b69a3 100644
--- a/pysollib/tk/menubar.py
+++ b/pysollib/tk/menubar.py
@@ -340,11 +340,9 @@ class PysolMenubar(PysolMenubarActions):
         menu.add_separator()
         label = n_("&Sound")
         if self.app.audio.audiodev is None:
-            menu.add_checkbutton(label=label, variable=self.tkopt.sound, command=self.mOptSound, state=Tkinter.DISABLED)
-        elif pysolsoundserver:
-            menu.add_checkbutton(label=label, variable=self.tkopt.sound, command=self.mOptSoundDialog)
+            menu.add_checkbutton(label=label, variable=self.tkopt.sound, command=self.mOptSoundDialog, state=Tkinter.DISABLED)
         else:
-            menu.add_checkbutton(label=label, variable=self.tkopt.sound, command=self.mOptSound)
+            menu.add_checkbutton(label=label, variable=self.tkopt.sound, command=self.mOptSoundDialog)
         # cardsets
         #manager = self.app.cardset_manager
         #n = manager.len()
diff --git a/pysollib/tk/soundoptionsdialog.py b/pysollib/tk/soundoptionsdialog.py
index 0ca59eaa..f6adaaf8 100644
--- a/pysollib/tk/soundoptionsdialog.py
+++ b/pysollib/tk/soundoptionsdialog.py
@@ -36,7 +36,8 @@
 __all__ = ['SoundOptionsDialog']
 
 # imports
-import os, sys, string, Tkinter
+import os, sys, string
+from Tkinter import *
 import traceback
 
 # PySol imports
@@ -47,7 +48,7 @@ from pysollib.settings import MIXERS
 
 # Toolkit imports
 from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
-from tkwidget import MfxDialog
+from tkwidget import MfxDialog, MfxMessageDialog
 
 # /***********************************************************************
 # //
@@ -64,41 +65,103 @@ class SoundOptionsDialog(MfxDialog):
         self.createBitmaps(top_frame, kw)
         #
         self.saved_opt = app.opt.copy()
-        self.sound = Tkinter.BooleanVar()
+        self.sound = BooleanVar()
         self.sound.set(app.opt.sound != 0)
-        self.sound_mode = Tkinter.BooleanVar()
+        self.sound_mode = BooleanVar()
         self.sound_mode.set(app.opt.sound_mode != 0)
-        self.sample_volume = Tkinter.IntVar()
+        self.sample_volume = IntVar()
         self.sample_volume.set(app.opt.sound_sample_volume)
-        self.music_volume = Tkinter.IntVar()
+        self.music_volume = IntVar()
         self.music_volume.set(app.opt.sound_music_volume)
-        widget = Tkinter.Checkbutton(top_frame, variable=self.sound,
-                                     text=_("Sound enabled"),
-                                     anchor=Tkinter.W)
-        widget.pack(side=Tkinter.TOP, padx=kw.padx, pady=kw.pady,
-                    expand=Tkinter.YES, fill=Tkinter.BOTH)
+        self.samples = [
+            ('areyousure',    'AreYouSure',    BooleanVar()),
+            ('autodrop',      'AutoDrop',      BooleanVar()),
+            ('autoflip',      'AutoFlip',      BooleanVar()),
+            ('autopilotlost', 'AutopilotLost', BooleanVar()),
+            ('autopilotwon',  'AutopilotWon',  BooleanVar()),
+            ('deal',          'Deal',          BooleanVar()),
+            #('deal01',        'Deal01',        BooleanVar()),
+            #('deal02',        'Deal02',        BooleanVar()),
+            #('deal04',        'Deal04',        BooleanVar()),
+            #('deal08',        'Deal08',        BooleanVar()),
+            ('dealwaste',     'DealWaste',     BooleanVar()),
+            ('droppair',      'DropPair',      BooleanVar()),
+            ('drop',          'Drop',          BooleanVar()),
+            #('extra',         'Extra',         BooleanVar()),
+            ('flip',          'Flip',          BooleanVar()),
+            ('move',          'Move',          BooleanVar()),
+            ('nomove',        'NoMove',        BooleanVar()),
+            ('redo',          'Redo',          BooleanVar()),
+            ('startdrag',     'StartDrag',     BooleanVar()),
+            ('turnwaste',     'TurnWaste',     BooleanVar()),
+            ('undo',          'Undo',          BooleanVar()),
+            ('gamefinished',  'GameFinished',  BooleanVar()),
+            ('gamelost',      'GameLost',      BooleanVar()),
+            ('gameperfect',   'GamePerfect',   BooleanVar()),
+            ('gamewon',       'GameWon',       BooleanVar()),
+            ]
+
+        #
+        frame = Frame(top_frame)
+        frame.pack(expand=1, fill='both', padx=5, pady=5)
+        frame.columnconfigure(1, weight=1)
+        #
+        row = 0
+        w = Checkbutton(frame, variable=self.sound,
+                                text=_("Sound enabled"), anchor='w')
+        w.grid(row=row, column=0, columnspan=2, sticky='ew')
+        #
         if os.name == "nt" and pysolsoundserver:
-            widget = Tkinter.Checkbutton(top_frame, variable=self.sound_mode,
-                                         text=_("Use DirectX for sound playing"),
-                                         command=self.mOptSoundDirectX)
-            widget.pack(side=Tkinter.TOP, padx=kw.padx, pady=kw.pady)
+            row += 1
+            w = Checkbutton(frame, variable=self.sound_mode,
+                                    text=_("Use DirectX for sound playing"),
+                                    command=self.mOptSoundDirectX, anchor='w')
+            w.grid(row=row, column=0, columnspan=2, sticky='ew')
+        #
         if pysolsoundserver and app.startup_opt.sound_mode > 0:
-            widget = Tkinter.Scale(top_frame, from_=0, to=128,
-                                   resolution=1, orient=Tkinter.HORIZONTAL,
-                                   length="3i", label=_("Sample volume"),
-                                   variable=self.sample_volume, takefocus=0)
-            widget.pack(side=Tkinter.TOP, padx=kw.padx, pady=kw.pady,
-                        expand=Tkinter.YES, fill=Tkinter.BOTH)
-            widget = Tkinter.Scale(top_frame, from_=0, to=128,
-                                   resolution=1, orient=Tkinter.HORIZONTAL,
-                                   length="3i", label=_("Music volume"),
-                                   variable=self.music_volume, takefocus=0)
-            widget.pack(side=Tkinter.TOP, padx=kw.padx, pady=kw.pady,
-                        expand=Tkinter.YES, fill=Tkinter.BOTH)
+            row += 1
+            w = Label(frame, text=_('Sample volume:'))
+            w.grid(row=row, column=0, sticky='w')
+            w = Scale(frame, from_=0, to=128, resolution=1,
+                      orient='horizontal', takefocus=0,
+                      length="3i", #label=_('Sample volume'),
+                      variable=self.sample_volume)
+            w.grid(row=row, column=1, sticky='w', padx=5)
+            row += 1
+            w = Label(frame, text=_('Music volume:'))
+            w.grid(row=row, column=0, sticky='w', padx=5)
+            w = Scale(frame, from_=0, to=128, resolution=1,
+                      orient='horizontal', takefocus=0,
+                      length="3i", #label=_('Music volume'),
+                      variable=self.music_volume)
+            w.grid(row=row, column=1, sticky='w', padx=5)
+
         else:
             # remove "Apply" button
             kw.strings[1] = None
         #
+        if TkVersion >= 8.4:
+            frame = LabelFrame(top_frame, text=_('Enable samles'), padx=5, pady=5)
+        else:
+            frame = Frame(top_frame)
+        frame.pack(expand=1, fill='both', padx=5, pady=5)
+        frame.columnconfigure(0, weight=1)
+        frame.columnconfigure(1, weight=1)
+        #
+        row = 0
+        col = 0
+        for n, t, v in self.samples:
+            v.set(app.opt.sound_samples[n])
+            w = Checkbutton(frame, text=t, anchor='w', variable=v)
+            w.grid(row=row, column=col, sticky='ew')
+            if col == 1:
+                col = 0
+                row += 1
+            else:
+                col = 1
+        #
+        top_frame.columnconfigure(1, weight=1)
+        #
         focus = self.createButtons(bottom_frame, kw)
         self.mainloop(focus, kw.timeout)
 
@@ -113,7 +176,7 @@ class SoundOptionsDialog(MfxDialog):
                       default=0,
                       resizable=1,
                       padx=10, pady=10,
-                      buttonpadx=10, buttonpady=5,
+                      buttonpadx=1, buttonpady=5,
                       )
         return MfxDialog.initKw(self, kw)
 
@@ -123,6 +186,8 @@ class SoundOptionsDialog(MfxDialog):
             self.app.opt.sound_mode = self.sound_mode.get()
             self.app.opt.sound_sample_volume = self.sample_volume.get()
             self.app.opt.sound_music_volume = self.music_volume.get()
+            for n, t, v in self.samples:
+                self.app.opt.sound_samples[n] = v.get()
         elif button == 2:
             for name, args in MIXERS:
                 try:
@@ -152,29 +217,8 @@ class SoundOptionsDialog(MfxDialog):
 
     def mOptSoundDirectX(self, *event):
         ##print self.sound_mode.get()
-        d = MfxDialog(self.top, title=_("Sound preferences info"),
+        d = MfxMessageDialog(self.top, title=_("Sound preferences info"),
                       text=_("Changing DirectX settings will take effect\nthe next time you restart ")+PACKAGE,
                       bitmap="warning",
                       default=0, strings=(_("&OK"),))
 
-
-# /***********************************************************************
-# //
-# ************************************************************************/
-
-
-def soundoptionsdialog_main(args):
-    from tkutil import wm_withdraw
-    opt = Struct(sound=1, sound_mode=1, sound_sample_volume=128, sound_music_volume=96)
-    app = Struct(opt=opt, audio=None, debug=0)
-    tk = Tkinter.Tk()
-    wm_withdraw(tk)
-    tk.update()
-    d = SoundOptionsDialog(tk, "Sound settings", app)
-    print d.status, d.button
-    return 0
-
-if __name__ == "__main__":
-    import sys
-    sys.exit(soundoptionsdialog_main(sys.argv))
-
diff --git a/pysollib/tk/tkwidget.py b/pysollib/tk/tkwidget.py
index ca288979..85e7ed88 100644
--- a/pysollib/tk/tkwidget.py
+++ b/pysollib/tk/tkwidget.py
@@ -169,7 +169,7 @@ class MfxDialog: # ex. _ToplevelDialog
 
     def createFrames(self, kw):
         bottom_frame = Tkinter.Frame(self.top)
-        bottom_frame.pack(side='bottom', fill='both', expand=1, ipady=3)
+        bottom_frame.pack(side='bottom', fill='both', expand=1, ipadx=3, ipady=3)
         if kw.separatorwidth > 0:
             separator = Tkinter.Frame(self.top, relief="sunken",
                     height=kw.separatorwidth, width=kw.separatorwidth,