From 5fd0909114af6ee765f30d582b2d31fb905d7403 Mon Sep 17 00:00:00 2001
From: skomoroh <skomoroh@efabe8c0-fbe8-4139-b769-b5e6d273206e>
Date: Wed, 27 Jun 2007 21:22:59 +0000
Subject: [PATCH] * pysollib/tk: removed unused imports * minor bugfixes

git-svn-id: file:///home/shlomif/Backup/svn-dumps/PySolFC/svnsync-repos/pysolfc/PySolFC/trunk@178 efabe8c0-fbe8-4139-b769-b5e6d273206e
---
 README                             |  2 +-
 html-src/install.html              |  2 +-
 pysollib/app.py                    |  6 ++++-
 pysollib/init.py                   |  8 +++++--
 pysollib/pysolgtk/statusbar.py     |  3 +++
 pysollib/tk/colorsdialog.py        |  4 +---
 pysollib/tk/edittextdialog.py      |  4 ++--
 pysollib/tk/findcarddialog.py      |  2 +-
 pysollib/tk/fontsdialog.py         |  5 +---
 pysollib/tk/gameinfodialog.py      |  1 -
 pysollib/tk/menubar.py             | 15 ++++++------
 pysollib/tk/playeroptionsdialog.py |  5 ++--
 pysollib/tk/progressbar.py         |  4 ++--
 pysollib/tk/selectcardset.py       | 29 +++++++++--------------
 pysollib/tk/selectgame.py          | 30 ++++++++----------------
 pysollib/tk/selecttile.py          |  5 +---
 pysollib/tk/selecttree.py          |  8 +------
 pysollib/tk/solverdialog.py        |  8 +++----
 pysollib/tk/soundoptionsdialog.py  | 14 ++++-------
 pysollib/tk/timeoutsdialog.py      |  4 +---
 pysollib/tk/tkcanvas.py            |  1 -
 pysollib/tk/tkconst.py             |  1 -
 pysollib/tk/tkhtml.py              |  4 ++--
 pysollib/tk/tkstats.py             | 18 +++++----------
 pysollib/tk/tkutil.py              |  3 +--
 pysollib/tk/tkwidget.py            |  5 ++--
 pysollib/tk/tkwrap.py              | 10 ++------
 pysollib/tk/toolbar.py             | 14 ++++-------
 pysollib/tk/wizarddialog.py        | 37 +++++++++++++++---------------
 pysollib/winsystems/common.py      |  6 ++---
 pysollib/winsystems/x11.py         |  6 ++---
 31 files changed, 108 insertions(+), 156 deletions(-)

diff --git a/README b/README
index d036ca89..53001b16 100644
--- a/README
+++ b/README
@@ -6,7 +6,7 @@ Requirements.
 -------------
 
 - Python (2.3 or later)
-- Tkinter
+- Tkinter (Tcl/Tk 8.4 or later)
 
 ** for sound support (optional) **
   - PySol-Sound-Server: http://www.pysol.org/ (mp3, wav, tracker music)
diff --git a/html-src/install.html b/html-src/install.html
index ba9f1edb..b02d7872 100644
--- a/html-src/install.html
+++ b/html-src/install.html
@@ -3,7 +3,7 @@
 There is no need to compile anything since the whole program is just
 a Python script. Just run it, and that's all.
 <p>
-PySol requires Python 2.3 and Tcl/Tk 8.3 or better. Both packages are
+PySol requires Python 2.3 and Tcl/Tk 8.4 or better. Both packages are
 freely available for Unix, Windows and Macintosh platforms.
 <p>
 PySol is free <i>Open Source</i> software distributed under the terms of the
diff --git a/pysollib/app.py b/pysollib/app.py
index ad3f3a19..8e265735 100644
--- a/pysollib/app.py
+++ b/pysollib/app.py
@@ -351,6 +351,8 @@ class Options:
         # general
         for key, t in self.GENERAL_OPTIONS:
             val = getattr(self, key)
+            if t == 'str' and isinstance(val, unicode):
+                val = val.encode('utf-8')
             config.set('general', key, val)
 
         recent_gameid = ' '.join([str(i) for i in self.recent_gameid])
@@ -410,8 +412,10 @@ class Options:
                 val = config.getint(section, key)
             elif t == 'float':
                 val = config.getfloat(section, key)
-            else:
+            else: # str
                 val = config.get(section, key)
+                if isinstance(val, str):
+                    val = unicode(val, 'utf-8')
         except ConfigParser.NoOptionError:
             val = None
         except:
diff --git a/pysollib/init.py b/pysollib/init.py
index a0d9cbff..e724da53 100644
--- a/pysollib/init.py
+++ b/pysollib/init.py
@@ -110,8 +110,12 @@ def init():
         sys.argv.remove('--tile')
     if settings.TOOLKIT == 'tk':
         import Tkinter
-        root = Tkinter.Tk(className='PySol')
+        root = Tkinter.Tk(className=settings.PACKAGE)
         root.withdraw()
+        if Tkinter.TkVersion < 8.4:
+            # we need unicode support
+            sys.exit("%s needs Tcl/Tk 8.4 or better (you have %s)" %
+                     (settings.PACKAGE, str(Tkinter.TkVersion)))
         settings.WIN_SYSTEM = root.tk.call('tk', 'windowingsystem')
         if settings.WIN_SYSTEM == 'aqua':
             # TkAqua displays the console automatically in application
@@ -123,7 +127,7 @@ def init():
             # check Tile
             settings.USE_TILE = False
             try:
-                root.tk.call('package', 'require', 'tile', '0.7.8')
+                root.tk.eval('package require tile 0.7.8')
             except Tkinter.TclError:
                 pass
             else:
diff --git a/pysollib/pysolgtk/statusbar.py b/pysollib/pysolgtk/statusbar.py
index 310a5b72..ee92037c 100644
--- a/pysollib/pysolgtk/statusbar.py
+++ b/pysollib/pysolgtk/statusbar.py
@@ -77,6 +77,9 @@ class BasicStatusbar:
             label.pop(0)
             label.push(0, unicode(v))
 
+    def config(self, name, show):
+        # FIXME
+        pass
 
     def configLabel(self, name, **kw):
         label = getattr(self, name + "_label")
diff --git a/pysollib/tk/colorsdialog.py b/pysollib/tk/colorsdialog.py
index f475c0a0..5c10314f 100644
--- a/pysollib/tk/colorsdialog.py
+++ b/pysollib/tk/colorsdialog.py
@@ -22,15 +22,13 @@
 __all__ = ['ColorsDialog']
 
 # imports
-import os, sys
 import Tkinter
 from tkColorChooser import askcolor
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
 from tkwidget import MfxDialog
 
 # /***********************************************************************
diff --git a/pysollib/tk/edittextdialog.py b/pysollib/tk/edittextdialog.py
index d13511fb..c8415575 100644
--- a/pysollib/tk/edittextdialog.py
+++ b/pysollib/tk/edittextdialog.py
@@ -36,10 +36,10 @@
 __all__ = ['EditTextDialog']
 
 # imports
-import os, sys, Tkinter
+import Tkinter
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct
 
 # Toolkit imports
 from tkwidget import MfxDialog
diff --git a/pysollib/tk/findcarddialog.py b/pysollib/tk/findcarddialog.py
index 6cb931fa..42d0b633 100644
--- a/pysollib/tk/findcarddialog.py
+++ b/pysollib/tk/findcarddialog.py
@@ -27,7 +27,7 @@ __all__ = ['create_find_card_dialog',
 # imports
 import os
 import Tkinter
-import traceback
+##import traceback
 
 # PySol imports
 
diff --git a/pysollib/tk/fontsdialog.py b/pysollib/tk/fontsdialog.py
index 8e5dd27d..8b7cd931 100644
--- a/pysollib/tk/fontsdialog.py
+++ b/pysollib/tk/fontsdialog.py
@@ -22,16 +22,13 @@
 __all__ = ['FontsDialog']
 
 # imports
-import os, sys
-import types
 import Tkinter
 import tkFont
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
 from tkwidget import MfxDialog
 from tkutil import bind
 
diff --git a/pysollib/tk/gameinfodialog.py b/pysollib/tk/gameinfodialog.py
index e3f98f0d..25cfabc9 100644
--- a/pysollib/tk/gameinfodialog.py
+++ b/pysollib/tk/gameinfodialog.py
@@ -23,7 +23,6 @@
 __all__ = ['GameInfoDialog']
 
 # imports
-import os, sys
 import Tkinter
 
 # PySol imports
diff --git a/pysollib/tk/menubar.py b/pysollib/tk/menubar.py
index 7ac73bcc..6378cfdd 100644
--- a/pysollib/tk/menubar.py
+++ b/pysollib/tk/menubar.py
@@ -38,10 +38,11 @@ __all__ = ['PysolMenubar']
 
 # imports
 import math, os, sys, re
+import traceback
 import Tkinter, tkFileDialog
 
 # PySol imports
-from pysollib.mfxutil import destruct, Struct, kwdefault
+from pysollib.mfxutil import Struct, kwdefault
 from pysollib.mfxutil import Image
 from pysollib.util import CARDSET
 from pysollib.settings import PACKAGE, WIN_SYSTEM
@@ -55,6 +56,7 @@ from pysollib.actions import PysolMenubarActions
 # toolkit imports
 from tkconst import EVENT_HANDLED, EVENT_PROPAGATE, CURSOR_WATCH, COMPOUNDS
 from tkutil import bind, after_idle
+from tkwidget import MfxMessageDialog
 from selectgame import SelectGameDialog, SelectGameDialogWithPreview
 from soundoptionsdialog import SoundOptionsDialog
 from selectcardset import SelectCardsetDialogWithPreview
@@ -80,12 +82,11 @@ def createToolbarMenu(menubar, menu):
 ##             submenu.add_radiobutton(label=name,
 ##                                     variable=menubar.tkopt.toolbar_style,
 ##                                     value=f, command=menubar.mOptToolbarStyle)
-    if Tkinter.TkVersion >= 8.4:
-        submenu = MfxMenu(menu, label=n_('Compound'), tearoff=tearoff)
-        for comp, label in COMPOUNDS:
-            submenu.add_radiobutton(
-                label=label, variable=menubar.tkopt.toolbar_compound,
-                value=comp, command=menubar.mOptToolbarCompound)
+    submenu = MfxMenu(menu, label=n_('Compound'), tearoff=tearoff)
+    for comp, label in COMPOUNDS:
+        submenu.add_radiobutton(
+            label=label, variable=menubar.tkopt.toolbar_compound,
+            value=comp, command=menubar.mOptToolbarCompound)
     menu.add_separator()
     menu.add_radiobutton(label=n_("Hide"),
                          variable=menubar.tkopt.toolbar, value=0,
diff --git a/pysollib/tk/playeroptionsdialog.py b/pysollib/tk/playeroptionsdialog.py
index d6e05208..f1291db8 100644
--- a/pysollib/tk/playeroptionsdialog.py
+++ b/pysollib/tk/playeroptionsdialog.py
@@ -36,13 +36,12 @@
 __all__ = ['PlayerOptionsDialog']
 
 # imports
-import os, sys, Tkinter
+import Tkinter
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct, Struct
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
 from tkwidget import MfxDialog
 from tkutil import bind
 
diff --git a/pysollib/tk/progressbar.py b/pysollib/tk/progressbar.py
index 3d277df5..87f536ee 100644
--- a/pysollib/tk/progressbar.py
+++ b/pysollib/tk/progressbar.py
@@ -36,10 +36,10 @@
 __all__ = ['PysolProgressBar']
 
 # imports
-import os, sys, Tkinter
+import Tkinter
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
+from tkconst import EVENT_HANDLED
 from tkutil import makeToplevel, setTransient
 
 
diff --git a/pysollib/tk/selectcardset.py b/pysollib/tk/selectcardset.py
index abe55882..023b2667 100644
--- a/pysollib/tk/selectcardset.py
+++ b/pysollib/tk/selectcardset.py
@@ -36,10 +36,11 @@
 __all__ = ['SelectCardsetDialogWithPreview']
 
 # imports
-import os, re, sys, types, Tkinter
+import os
+import Tkinter
 
 # PySol imports
-from pysollib.mfxutil import destruct, Struct, KwStruct
+from pysollib.mfxutil import KwStruct
 from pysollib.util import CARDSET
 from pysollib.resource import CSI
 
@@ -199,18 +200,13 @@ class SelectCardsetDialogWithPreview(MfxDialog):
             w1, w2 = 216, 400
         else:
             w1, w2 = 200, 300
-        if Tkinter.TkVersion >= 8.4:
-            paned_window = Tkinter.PanedWindow(top_frame)
-            paned_window.pack(expand=True, fill='both')
-            left_frame = Tkinter.Frame(paned_window)
-            right_frame = Tkinter.Frame(paned_window)
-            paned_window.add(left_frame)
-            paned_window.add(right_frame)
-        else:
-            left_frame = Tkinter.Frame(top_frame)
-            right_frame = Tkinter.Frame(top_frame)
-            left_frame.pack(side='left', expand=False, fill='both')
-            right_frame.pack(side='right', expand=True, fill='both')
+        paned_window = Tkinter.PanedWindow(top_frame)
+        paned_window.pack(expand=True, fill='both')
+        left_frame = Tkinter.Frame(paned_window)
+        right_frame = Tkinter.Frame(paned_window)
+        paned_window.add(left_frame)
+        paned_window.add(right_frame)
+
         font = app.getFont("default")
         self.tree = self.Tree_Class(self, left_frame, key=key,
                                     default=kw.default,
@@ -315,10 +311,7 @@ class CardsetInfoDialog(MfxDialog):
         frame.pack(fill="both", expand=True, padx=5, pady=10)
         #
         #
-        if Tkinter.TkVersion >= 8.4:
-            info_frame = Tkinter.LabelFrame(frame, text=_('About cardset'))
-        else:
-            info_frame = Tkinter.Frame(frame)
+        info_frame = Tkinter.LabelFrame(frame, text=_('About cardset'))
         info_frame.grid(row=0, column=0, columnspan=2, sticky='ew',
                         padx=0, pady=5, ipadx=5, ipady=5)
         styles = nationalities = year = None
diff --git a/pysollib/tk/selectgame.py b/pysollib/tk/selectgame.py
index 977a6a1f..38cd11af 100644
--- a/pysollib/tk/selectgame.py
+++ b/pysollib/tk/selectgame.py
@@ -35,7 +35,8 @@
 
 
 # imports
-import os, re, sys, types, Tkinter
+import os
+import Tkinter
 from UserList import UserList
 
 # PySol imports
@@ -48,7 +49,6 @@ from pysollib.resource import CSI
 # Toolkit imports
 from tkutil import unbind_destroy
 from tkwidget import MfxDialog, MfxScrolledCanvas
-from tkcanvas  import MfxCanvasText
 from selecttree import SelectDialogTreeLeaf, SelectDialogTreeNode
 from selecttree import SelectDialogTreeData, SelectDialogTreeCanvas
 
@@ -363,30 +363,20 @@ class SelectGameDialogWithPreview(SelectGameDialog):
         ##padx, pady = kw.padx, kw.pady
         padx, pady = kw.padx/2, kw.pady/2
         # PanedWindow
-        if Tkinter.TkVersion >= 8.4:
-            paned_window = Tkinter.PanedWindow(top_frame)
-            paned_window.pack(expand=True, fill='both')
-            left_frame = Tkinter.Frame(paned_window)
-            right_frame = Tkinter.Frame(paned_window)
-            paned_window.add(left_frame)
-            paned_window.add(right_frame)
-        else:
-            left_frame = Tkinter.Frame(top_frame)
-            right_frame = Tkinter.Frame(top_frame)
-            left_frame.pack(side='left', expand=True, fill='both')
-            right_frame.pack(side='right', expand=True, fill='both')
+        paned_window = Tkinter.PanedWindow(top_frame)
+        paned_window.pack(expand=True, fill='both')
+        left_frame = Tkinter.Frame(paned_window)
+        right_frame = Tkinter.Frame(paned_window)
+        paned_window.add(left_frame)
+        paned_window.add(right_frame)
         # Tree
         font = app.getFont("default")
         self.tree = self.Tree_Class(self, left_frame, key=gameid,
                                     default=kw.default, font=font, width=w1)
         self.tree.frame.pack(padx=padx, pady=pady, expand=True, fill='both')
         # LabelFrame
-        if Tkinter.TkVersion >= 8.4:
-            info_frame = Tkinter.LabelFrame(right_frame, text=_('About game'))
-            stats_frame = Tkinter.LabelFrame(right_frame, text=_('Statistics'))
-        else:
-            info_frame = Tkinter.Frame(right_frame, bd=2, relief='groove')
-            stats_frame = Tkinter.Frame(right_frame, bd=2, relief='groove')
+        info_frame = Tkinter.LabelFrame(right_frame, text=_('About game'))
+        stats_frame = Tkinter.LabelFrame(right_frame, text=_('Statistics'))
         info_frame.grid(row=0, column=0, padx=padx, pady=pady,
                         ipadx=padx, ipady=pady, sticky='nws')
         stats_frame.grid(row=0, column=1, padx=padx, pady=pady,
diff --git a/pysollib/tk/selecttile.py b/pysollib/tk/selecttile.py
index 703026af..9cec3f6a 100644
--- a/pysollib/tk/selecttile.py
+++ b/pysollib/tk/selecttile.py
@@ -35,15 +35,12 @@
 
 
 # imports
-import os, string, sys, types
 import Tkinter, tkColorChooser
 
 # PySol imports
-from pysollib.mfxutil import destruct, Struct, KwStruct
-from pysollib.resource import CSI
+from pysollib.mfxutil import KwStruct
 
 # Toolkit imports
-from tkutil import loadImage
 from tkwidget import MfxDialog, MfxScrolledCanvas
 from selecttree import SelectDialogTreeLeaf, SelectDialogTreeNode
 from selecttree import SelectDialogTreeData, SelectDialogTreeCanvas
diff --git a/pysollib/tk/selecttree.py b/pysollib/tk/selecttree.py
index 9b7e1b10..31aafc5d 100644
--- a/pysollib/tk/selecttree.py
+++ b/pysollib/tk/selecttree.py
@@ -36,15 +36,9 @@
 __all__ = ['SelectDialogTreeData']
 
 # imports
-import os, re, sys, types
-import Tkinter, tkFont
-
-# PySol imports
-from pysollib.mfxutil import destruct, Struct, KwStruct, kwdefault
+import tkFont
 
 # Toolkit imports
-from tkutil import makeImage
-from tkcanvas import MfxCanvas
 from tktree import MfxTreeLeaf, MfxTreeNode, MfxTreeInCanvas
 
 
diff --git a/pysollib/tk/solverdialog.py b/pysollib/tk/solverdialog.py
index e5626ff4..f40be95b 100644
--- a/pysollib/tk/solverdialog.py
+++ b/pysollib/tk/solverdialog.py
@@ -28,18 +28,16 @@ __all__ = [
     ]
 
 # imports
-import os, sys
 import Tkinter
-import traceback
+##import traceback
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct
 from pysollib.settings import PACKAGE
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
+from tkconst import EVENT_HANDLED
 from tkwidget import MfxDialog
-from tkutil import bind, unbind_destroy
 
 
 # /***********************************************************************
diff --git a/pysollib/tk/soundoptionsdialog.py b/pysollib/tk/soundoptionsdialog.py
index fe235c4d..63d84f46 100644
--- a/pysollib/tk/soundoptionsdialog.py
+++ b/pysollib/tk/soundoptionsdialog.py
@@ -36,17 +36,16 @@
 __all__ = ['SoundOptionsDialog']
 
 # imports
-import os, sys, string
+import os
 import Tkinter
-import traceback
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct
 from pysollib.settings import PACKAGE
 from pysollib.pysolaudio import pysolsoundserver
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
+from tkconst import EVENT_HANDLED
 from tkwidget import MfxDialog, MfxMessageDialog
 
 # /***********************************************************************
@@ -140,11 +139,8 @@ class SoundOptionsDialog(MfxDialog):
             # remove "Apply" button
             kw.strings[1] = None
         #
-        if Tkinter.TkVersion >= 8.4:
-            frame = Tkinter.LabelFrame(top_frame, text=_('Enable samles'),
-                                       padx=5, pady=5)
-        else:
-            frame = Tkinter.Frame(top_frame, bd=2, relief='groove')
+        frame = Tkinter.LabelFrame(top_frame, text=_('Enable samles'),
+                                   padx=5, pady=5)
         frame.pack(expand=True, fill='both', padx=5, pady=5)
         frame.columnconfigure(0, weight=1)
         frame.columnconfigure(1, weight=1)
diff --git a/pysollib/tk/timeoutsdialog.py b/pysollib/tk/timeoutsdialog.py
index bdb56b08..a9077a43 100644
--- a/pysollib/tk/timeoutsdialog.py
+++ b/pysollib/tk/timeoutsdialog.py
@@ -22,14 +22,12 @@
 __all__ = ['TimeoutsDialog']
 
 # imports
-import os, sys
 import Tkinter
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
 from tkwidget import MfxDialog
 
 # /***********************************************************************
diff --git a/pysollib/tk/tkcanvas.py b/pysollib/tk/tkcanvas.py
index 71d9467d..c98d4ac8 100644
--- a/pysollib/tk/tkcanvas.py
+++ b/pysollib/tk/tkcanvas.py
@@ -41,7 +41,6 @@ __all__ = ['MfxCanvasGroup',
            'MfxCanvas']
 
 # imports
-import os, sys, types
 import Tkinter, Canvas
 
 # PySol imports
diff --git a/pysollib/tk/tkconst.py b/pysollib/tk/tkconst.py
index 79d56bc5..7e215a65 100644
--- a/pysollib/tk/tkconst.py
+++ b/pysollib/tk/tkconst.py
@@ -51,7 +51,6 @@ __all__ = ['EVENT_HANDLED',
            ]
 
 # imports
-import sys, os
 import Tkinter
 
 
diff --git a/pysollib/tk/tkhtml.py b/pysollib/tk/tkhtml.py
index 7a1110a1..59b27730 100644
--- a/pysollib/tk/tkhtml.py
+++ b/pysollib/tk/tkhtml.py
@@ -36,7 +36,7 @@
 __all__ = ['HTMLViewer']
 
 # imports
-import os, sys, re, types
+import os, sys
 import htmllib, formatter
 import Tkinter
 
@@ -51,7 +51,7 @@ from pysollib.mfxutil import Struct, openURL
 from pysollib.settings import PACKAGE
 
 # Toolkit imports
-from tkutil import bind, unbind_destroy, loadImage
+from tkutil import bind, unbind_destroy
 from tkwidget import MfxMessageDialog
 from statusbar import HtmlStatusbar
 
diff --git a/pysollib/tk/tkstats.py b/pysollib/tk/tkstats.py
index 6fbd0f9c..0437ce3b 100644
--- a/pysollib/tk/tkstats.py
+++ b/pysollib/tk/tkstats.py
@@ -43,12 +43,12 @@ __all__ = ['SingleGame_StatsDialog',
            ]
 
 # imports
-import os, string, sys, types
+import os
 import time
 import Tkinter, tkFont
 
 # PySol imports
-from pysollib.mfxutil import destruct, Struct, kwdefault, KwStruct
+from pysollib.mfxutil import kwdefault, KwStruct
 from pysollib.mfxutil import format_time
 ##from pysollib.util import *
 from pysollib.stats import PysolStatsFormatter, ProgressionFormatter
@@ -415,9 +415,9 @@ class CanvasFormatter(PysolStatsFormatter):
             y += self.h
         #
         y += self.h
-        total, played, won, lost, time, moves, perc = self.getStatSummary()
+        total, played, won, lost, time_, moves, perc = self.getStatSummary()
         s = _("Total (%d out of %d games)") % (played, total)
-        self.pstats(y, (s, won+lost, won, lost, time, moves, perc))
+        self.pstats(y, (s, won+lost, won, lost, time_, moves, perc))
 
     def writeLog(self, player, prev_games):
         y = 0
@@ -907,10 +907,7 @@ class ProgressionDialog(MfxDialog):
                                 justify='left', anchor='w'
                                 )
         b.pack(fill='x', expand=True, padx=3, pady=1)
-        if Tkinter.TkVersion >= 8.4:
-            label_frame = Tkinter.LabelFrame(right_frame, text=_('Statistics for'))
-        else:
-            label_frame = Tkinter.Frame(right_frame)
+        label_frame = Tkinter.LabelFrame(right_frame, text=_('Statistics for'))
         label_frame.pack(side='top', fill='x', pady=10)
         self.variable = var = Tkinter.StringVar()
         var.set('week')
@@ -925,10 +922,7 @@ class ProgressionDialog(MfxDialog):
                                     justify='left', anchor='w'
                                     )
             b.pack(fill='x', expand=True, padx=3, pady=1)
-        if Tkinter.TkVersion >= 8.4:
-            label_frame = Tkinter.LabelFrame(right_frame, text=_('Show graphs'))
-        else:
-            label_frame = Tkinter.Frame(right_frame)
+        label_frame = Tkinter.LabelFrame(right_frame, text=_('Show graphs'))
         label_frame.pack(side='top', fill='x')
         self.played_graph_var = Tkinter.BooleanVar()
         self.played_graph_var.set(True)
diff --git a/pysollib/tk/tkutil.py b/pysollib/tk/tkutil.py
index d6dad3a7..a3429d87 100644
--- a/pysollib/tk/tkutil.py
+++ b/pysollib/tk/tkutil.py
@@ -56,8 +56,7 @@ __all__ = ['wm_withdraw',
            ]
 
 # imports
-import sys, os, re
-import traceback
+import re
 import Tkinter
 from tkFont import Font
 
diff --git a/pysollib/tk/tkwidget.py b/pysollib/tk/tkwidget.py
index 63e5b15f..fd066c02 100644
--- a/pysollib/tk/tkwidget.py
+++ b/pysollib/tk/tkwidget.py
@@ -44,7 +44,7 @@ __all__ = ['MfxDialog',
            ]
 
 # imports
-import os, sys, time, types
+import time
 import Tkinter
 import tkFont
 import traceback
@@ -54,8 +54,7 @@ from pysollib.mfxutil import destruct, kwdefault, KwStruct, openURL
 from pysollib.settings import WIN_SYSTEM
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
-from tkutil import after, after_idle, after_cancel
+from tkutil import after, after_cancel
 from tkutil import bind, unbind_destroy
 from tkutil import makeToplevel, setTransient
 from tkcanvas import MfxCanvas
diff --git a/pysollib/tk/tkwrap.py b/pysollib/tk/tkwrap.py
index 6f6b85b8..a71b462d 100644
--- a/pysollib/tk/tkwrap.py
+++ b/pysollib/tk/tkwrap.py
@@ -37,17 +37,11 @@ __all__ = ['TclError',
            'MfxRoot']
 
 # imports
-import os, sys, time, types
 import Tkinter
-from Tkinter import TclError
-from tkFont import Font
+TclError = Tkinter.TclError
 
 # PySol imports
-from pysollib.mfxutil import destruct, Struct
-from pysollib.settings import PACKAGE, VERSION, WIN_SYSTEM
-from pysollib.macosx.appSupport import setupApp
-from tkutil import after_idle
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
+from tkconst import EVENT_PROPAGATE
 
 
 # /***********************************************************************
diff --git a/pysollib/tk/toolbar.py b/pysollib/tk/toolbar.py
index ea85b6cf..bb3db84b 100644
--- a/pysollib/tk/toolbar.py
+++ b/pysollib/tk/toolbar.py
@@ -36,8 +36,8 @@
 __all__ = ['PysolToolbar']
 
 # imports
-import os, sys, types, Tkinter
-import traceback
+import os
+import Tkinter
 
 # PySol imports
 from pysollib.mfxutil import destruct
@@ -48,7 +48,7 @@ from pysollib.actions import PysolToolbarActions
 from pysollib.winsystems import TkSettings
 
 # Toolkit imports
-from tkconst import EVENT_HANDLED, EVENT_PROPAGATE
+from tkconst import EVENT_HANDLED
 from tkwidget import MfxTooltip
 from menubar import createToolbarMenu, MfxMenu
 
@@ -321,14 +321,12 @@ class PysolToolbar(PysolToolbarActions):
             'relief'       : button_relief,
             'padx'         : padx,
             'pady'         : pady,
+            'overrelief'   : 'raised',
             }
-        if Tkinter.TkVersion >= 8.4:
-            kw['overrelief'] = 'raised'
         if image:
             kw['image'] = image
         if check:
-            if Tkinter.TkVersion >= 8.4:
-                kw['offrelief'] = button_relief
+            kw['offrelief'] = button_relief
             kw['indicatoron'] = False
             kw['selectcolor'] = ''
             button = ToolbarCheckbutton(self.frame, **kw)
@@ -466,8 +464,6 @@ class PysolToolbar(PysolToolbarActions):
         return 1
 
     def setCompound(self, compound, force=False):
-        if Tkinter.TkVersion < 8.4:
-            return False
         if not force and self.compound == compound:
             return False
         for w in self._widgets:
diff --git a/pysollib/tk/wizarddialog.py b/pysollib/tk/wizarddialog.py
index 25823f1f..609c23a3 100644
--- a/pysollib/tk/wizarddialog.py
+++ b/pysollib/tk/wizarddialog.py
@@ -23,11 +23,11 @@ __all__ = ['WizardDialog']
 
 
 # imports
-from Tkinter import *
+import Tkinter
 from tabpage import TabPageSet
 
 # PySol imports
-from pysollib.mfxutil import destruct, kwdefault, KwStruct, Struct
+from pysollib.mfxutil import KwStruct
 from pysollib.wizardutil import WizardWidgets
 from pysollib.wizardpresets import presets
 
@@ -46,7 +46,7 @@ class WizardDialog(MfxDialog):
         top_frame, bottom_frame = self.createFrames(kw)
         self.createBitmaps(top_frame, kw)
 
-        frame = Frame(top_frame)
+        frame = Tkinter.Frame(top_frame)
         frame.pack(expand=True, fill='both', padx=10, pady=10)
         frame.columnconfigure(0, weight=1)
 
@@ -56,49 +56,50 @@ class WizardDialog(MfxDialog):
         for w in WizardWidgets:
             if isinstance(w, basestring):
                 p = notebook.AddPage(w)
-                frame = Frame(notebook.pages[w]['page'])
+                frame = Tkinter.Frame(notebook.pages[w]['page'])
                 frame.pack(expand=True, fill='both', padx=2, pady=4)
                 frame.columnconfigure(1, weight=1)
                 row = 0
                 continue
 
-            Label(frame, text=w.label).grid(row=row, column=0, padx=2)
+            Tkinter.Label(frame, text=w.label).grid(row=row, column=0, padx=2)
 
             if w.widget == 'preset':
                 if w.variable is None:
-                    w.variable = StringVar()
+                    w.variable = Tkinter.StringVar()
                 values = [_(v) for v in w.values]
                 default = _(w.default)
                 values.remove(default)
                 values.sort()
                 values.insert(0, default)
                 callback = lambda v, w=w: self.presetSelected(v, w)
-                om = OptionMenu(frame, w.variable,
-                                command=callback, *values)
+                om = Tkinter.OptionMenu(frame, w.variable,
+                                        command=callback, *values)
                 om.grid(row=row, column=1, sticky='ew', padx=2)
             elif w.widget == 'entry':
                 if w.variable is None:
-                    w.variable = StringVar()
-                en = Entry(frame, textvariable=w.variable)
+                    w.variable = Tkinter.StringVar()
+                en = Tkinter.Entry(frame, textvariable=w.variable)
                 en.grid(row=row, column=1, sticky='ew', padx=2)
             elif w.widget == 'menu':
                 if w.variable is None:
-                    w.variable = StringVar()
+                    w.variable = Tkinter.StringVar()
                 values = [_(v) for v in w.values]
-                om = OptionMenu(frame, w.variable, *values)
+                om = Tkinter.OptionMenu(frame, w.variable, *values)
                 om.grid(row=row, column=1, sticky='ew', padx=2)
             elif w.widget == 'spin':
                 if w.variable is None:
-                    w.variable = IntVar()
+                    w.variable = Tkinter.IntVar()
                 from_, to = w.values
-                s = Scale(frame, from_=from_, to=to, resolution=1,
-                          orient='horizontal', length=200, variable=w.variable)
+                s = Tkinter.Scale(frame, from_=from_, to=to, resolution=1,
+                                  orient='horizontal', length=200,
+                                  variable=w.variable)
                 s.grid(row=row, column=1, sticky='ew', padx=2)
             elif w.widget == 'check':
                 if w.variable is None:
-                    w.variable = BooleanVar()
-                ch = Checkbutton(frame, variable=w.variable,
-                                 takefocus=False, anchor='w')
+                    w.variable = Tkinter.BooleanVar()
+                ch = Tkinter.Checkbutton(frame, variable=w.variable,
+                                         takefocus=False, anchor='w')
                 ch.grid(row=row, column=1, sticky='ew', padx=2, pady=2)
 
             if w.current_value is None:
diff --git a/pysollib/winsystems/common.py b/pysollib/winsystems/common.py
index 4d79da91..2ea66363 100644
--- a/pysollib/winsystems/common.py
+++ b/pysollib/winsystems/common.py
@@ -34,14 +34,14 @@ def init_tile(app, top):
     # load available themes
     d = os.path.join(app.dataloader.dir, 'themes')
     if os.path.isdir(d):
-        top.tk.call('lappend', 'auto_path', d)
+        top.tk.eval('global auto_path; lappend auto_path {%s}' % d)
         for t in os.listdir(d):
             if os.path.exists(os.path.join(d, t, 'pkgIndex.tcl')):
                 try:
                     if Tile.TileVersion < '0.8':
-                        top.tk.call('package', 'require', 'tile::theme::'+t)
+                        top.tk.eval('package require tile::theme::'+t)
                     else:
-                        top.tk.call('package', 'require', 'ttk::theme::'+t)
+                        top.tk.eval('package require ttk::theme::'+t)
                     #print 'load theme:', t
                 except:
                     traceback.print_exc()
diff --git a/pysollib/winsystems/x11.py b/pysollib/winsystems/x11.py
index 9f7cb7a5..b6152341 100644
--- a/pysollib/winsystems/x11.py
+++ b/pysollib/winsystems/x11.py
@@ -50,7 +50,7 @@ def init_root_window(root, app):
         f = os.path.join(app.dataloader.dir, 'tcl', 'menu8.4.tcl')
         if os.path.exists(f):
             try:
-                root.tk.call('source', f)
+                root.tk.evalfile(f)
             except:
                 traceback.print_exc()
         f = 'clrpick8.4.tcl'
@@ -59,7 +59,7 @@ def init_root_window(root, app):
         f = os.path.join(app.dataloader.dir, 'tcl', f)
         if os.path.exists(f):
             try:
-                root.tk.call('source', f)
+                root.tk.evalfile(f)
             except:
                 traceback.print_exc()
         f = 'fsdialog8.4.tcl'
@@ -68,7 +68,7 @@ def init_root_window(root, app):
         f = os.path.join(app.dataloader.dir, 'tcl', f)
         if os.path.exists(f):
             try:
-                root.tk.call('source', f)
+                root.tk.evalfile(f)
             except:
                 traceback.print_exc()
             else: