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.
-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.
PySol is free Open Source 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: