diff --git a/pysollib/game.py b/pysollib/game.py index c0317059..8e6a4a92 100644 --- a/pysollib/game.py +++ b/pysollib/game.py @@ -41,6 +41,7 @@ from cStringIO import StringIO # PySol imports from mfxutil import Pickler, Unpickler, UnpicklingError +from mfxutil import Image, ImageTk from mfxutil import destruct, Struct, SubclassResponsibility from mfxutil import uclock, usleep from mfxutil import format_time @@ -1035,9 +1036,7 @@ class Game: return False if not stack.cards: return False - try: - import ImageTk # use PIL - except ImportError: + if not Image: return False if self.moves.state == self.S_INIT: # don't use flip animation for initial dealing @@ -1095,8 +1094,6 @@ class Game: def doWinAnimation(self): # based on code from pygtk-demo - import Image, ImageTk - FRAME_DELAY = 40 CYCLE_LEN = 60 images = self.win_animation.images @@ -1173,13 +1170,13 @@ class Game: def winAnimation(self, perfect=0): ### if not self.app.opt.win_animation: ### return + if self.preview: + return if not self.app.opt.animations: return if TOOLKIT == 'gtk': return - try: - import Image - except ImportError: + if not Image: return self.canvas.hideAllItems() # select some random cards @@ -1199,6 +1196,8 @@ class Game: return def redealAnimation(self): + if self.preview: + return if not self.app.opt.animations or not self.app.opt.redeal_animation: return self.setCursor(cursor=CURSOR_WATCH) diff --git a/pysollib/init.py b/pysollib/init.py index f85c53bf..22da34db 100644 --- a/pysollib/init.py +++ b/pysollib/init.py @@ -50,7 +50,7 @@ def init(): locale_dir = d ##if locale_dir: locale_dir = os.path.normpath(locale_dir) gettext.install('pysol', locale_dir, unicode=True) - + # debug if 'PYSOL_CHECK_GAMES' in os.environ or \ 'PYSOL_DEBUG' in os.environ: settings.CHECK_GAMES = True @@ -97,4 +97,8 @@ def init(): # "can't invoke event <>: application has been destroyed" #root.destroy() Tkinter._default_root = None + # + if '--no-games-menu' in sys.argv: + sys.argv.remove('--no-games-menu') + settings.SELECT_GAME_MENU = False diff --git a/pysollib/mfxutil.py b/pysollib/mfxutil.py index 26b677d1..5c81e812 100644 --- a/pysollib/mfxutil.py +++ b/pysollib/mfxutil.py @@ -47,6 +47,24 @@ try: except: thread = None +from settings import TOOLKIT +Image = ImageTk = ImageOps = None +if TOOLKIT == 'tk': + try: # PIL + import Image + except ImportError: + pass + else: + import ImageTk + import ImageOps + # for py2exe + import GifImagePlugin + import PngImagePlugin + import JpegImagePlugin + import BmpImagePlugin + import PpmImagePlugin + Image._initialized=2 + if os.name == "mac": # macfs module is deprecated, consider using Carbon.File or Carbon.Folder import macfs, MACFS diff --git a/pysollib/settings.py b/pysollib/settings.py index 11e7cbfc..ab52d525 100644 --- a/pysollib/settings.py +++ b/pysollib/settings.py @@ -66,6 +66,9 @@ if os.name == 'mac': TOP_SIZE = 10 TOP_TITLE = n_('Top 10') +# use menu for select game +SELECT_GAME_MENU = True + # debug DEBUG = 0 # must be integer CHECK_GAMES = False # check duplicated names and classes diff --git a/pysollib/stack.py b/pysollib/stack.py index 01ac5a09..f98078ba 100644 --- a/pysollib/stack.py +++ b/pysollib/stack.py @@ -95,6 +95,7 @@ import types # PySol imports from mfxutil import Struct, kwdefault, SubclassResponsibility +from mfxutil import Image, ImageTk, ImageOps from util import ACE, KING from util import ANY_SUIT, ANY_COLOR, ANY_RANK, NO_RANK from pysoltk import EVENT_HANDLED, EVENT_PROPAGATE @@ -1289,13 +1290,6 @@ class Stack: xx0, yy0 = x0, y0 w, h = x1-x0, y1-y0 # - Image = None - if TOOLKIT == 'tk': - try: - import Image, ImageTk - except ImportError: - pass - ##Image = None if TOOLKIT == 'gtk' or not Image: color = self.game.app.opt.colors['cards_1'] r = MfxCanvasRectangle(self.canvas, xx0, yy0, xx0+w, yy0+h, diff --git a/pysollib/tile/menubar.py b/pysollib/tile/menubar.py index c70ba8e9..68f51020 100644 --- a/pysollib/tile/menubar.py +++ b/pysollib/tile/menubar.py @@ -46,6 +46,7 @@ from pysollib.mfxutil import destruct, Struct, kwdefault from pysollib.util import CARDSET from pysollib.settings import PACKAGE, WIN_SYSTEM from pysollib.settings import TOP_TITLE +from pysollib.settings import SELECT_GAME_MENU from pysollib.gamedb import GI from pysollib.actions import PysolMenubarActions @@ -630,6 +631,8 @@ class PysolMenubar(PysolMenubarActions): command=self.mSelectGameDialog) menu.add_command(label=n_("Playable pre&view..."), accelerator="V", command=self.mSelectGameDialogWithPreview) + if not SELECT_GAME_MENU: + return menu.add_separator() self._addSelectPopularGameSubMenu(games, menu, self.mSelectGame, self.tkopt.gameid) diff --git a/pysollib/tile/tkcanvas.py b/pysollib/tile/tkcanvas.py index 83026317..f0d8d4d7 100644 --- a/pysollib/tile/tkcanvas.py +++ b/pysollib/tile/tkcanvas.py @@ -44,16 +44,9 @@ __all__ = ['MfxCanvasGroup', import os, sys, types import Tile as Tkinter import Canvas -try: - # PIL (Python Image Library) - import Image -except ImportError: - Image = None -else: - import ImageTk - # for py2exe - import GifImagePlugin, PngImagePlugin, JpegImagePlugin, BmpImagePlugin, PpmImagePlugin - Image._initialized=2 + +# PySol imports +from pysollib.mfxutil import Image, ImageTk, ImageOps # Toolkit imports from tkutil import bind, unbind_destroy, loadImage diff --git a/pysollib/tile/tkutil.py b/pysollib/tile/tkutil.py index ab07a0f8..0754bed4 100644 --- a/pysollib/tile/tkutil.py +++ b/pysollib/tile/tkutil.py @@ -60,13 +60,9 @@ import sys, os, re import traceback import Tile as Tkinter from tkFont import Font -try: - # PIL - import Image - import ImageTk - import ImageOps -except ImportError: - Image = None + +# PySol imports +from pysollib.mfxutil import Image, ImageTk, ImageOps # Toolkit imports from tkconst import tkversion diff --git a/pysollib/tile/toolbar.py b/pysollib/tile/toolbar.py index 003f1cff..e8aba7fb 100644 --- a/pysollib/tile/toolbar.py +++ b/pysollib/tile/toolbar.py @@ -38,14 +38,10 @@ __all__ = ['PysolToolbar'] #, 'TOOLBAR_BUTTONS'] # imports import os import Tile as Tkinter -try: - # PIL - import Image, ImageTk -except ImportError: - Image = None # PySol imports from pysollib.mfxutil import destruct +from pysollib.mfxutil import Image, ImageTk, ImageOps from pysollib.util import IMAGE_EXTENSIONS from pysollib.settings import PACKAGE from pysollib.actions import PysolToolbarActions diff --git a/pysollib/tk/menubar.py b/pysollib/tk/menubar.py index 66216eda..7310bf29 100644 --- a/pysollib/tk/menubar.py +++ b/pysollib/tk/menubar.py @@ -38,13 +38,14 @@ __all__ = ['PysolMenubar'] # imports import math, os, sys, re -import Tkinter, tkColorChooser, tkFileDialog +import Tkinter, tkFileDialog # PySol imports from pysollib.mfxutil import destruct, Struct, kwdefault from pysollib.util import CARDSET from pysollib.settings import PACKAGE, WIN_SYSTEM from pysollib.settings import TOP_TITLE +from pysollib.settings import SELECT_GAME_MENU from pysollib.gamedb import GI from pysollib.actions import PysolMenubarActions @@ -626,6 +627,8 @@ class PysolMenubar(PysolMenubarActions): command=self.mSelectGameDialog) menu.add_command(label=n_("Playable pre&view..."), accelerator="V", command=self.mSelectGameDialogWithPreview) + if not SELECT_GAME_MENU: + return menu.add_separator() self._addSelectPopularGameSubMenu(games, menu, self.mSelectGame, self.tkopt.gameid) diff --git a/pysollib/tk/tkcanvas.py b/pysollib/tk/tkcanvas.py index 9cdff64e..8509ab11 100644 --- a/pysollib/tk/tkcanvas.py +++ b/pysollib/tk/tkcanvas.py @@ -43,16 +43,9 @@ __all__ = ['MfxCanvasGroup', # imports import os, sys, types import Tkinter, Canvas -try: - # PIL (Python Image Library) - import Image -except ImportError: - Image = None -else: - import ImageTk - # for py2exe - import GifImagePlugin, PngImagePlugin, JpegImagePlugin, BmpImagePlugin, PpmImagePlugin - Image._initialized=2 + +# PySol imports +from pysollib.mfxutil import Image, ImageTk # Toolkit imports from tkutil import bind, unbind_destroy, loadImage diff --git a/pysollib/tk/tkutil.py b/pysollib/tk/tkutil.py index b9cc4f4a..3df99a68 100644 --- a/pysollib/tk/tkutil.py +++ b/pysollib/tk/tkutil.py @@ -60,13 +60,9 @@ import sys, os, re import traceback import Tkinter from tkFont import Font -try: - # PIL - import Image - import ImageTk - import ImageOps -except ImportError: - Image = None + +# PySol imports +from pysollib.mfxutil import Image, ImageTk, ImageOps # Toolkit imports from tkconst import tkversion diff --git a/pysollib/tk/toolbar.py b/pysollib/tk/toolbar.py index 07063223..1d74927d 100644 --- a/pysollib/tk/toolbar.py +++ b/pysollib/tk/toolbar.py @@ -38,14 +38,10 @@ __all__ = ['PysolToolbar'] #, 'TOOLBAR_BUTTONS'] # imports import os, sys, types, Tkinter import traceback -try: - # PIL - import Image, ImageTk -except ImportError: - Image = None # PySol imports from pysollib.mfxutil import destruct +from pysollib.mfxutil import Image, ImageTk from pysollib.util import IMAGE_EXTENSIONS from pysollib.settings import PACKAGE from pysollib.actions import PysolToolbarActions diff --git a/pysollib/util.py b/pysollib/util.py index 4448dbe0..a5cacf12 100644 --- a/pysollib/util.py +++ b/pysollib/util.py @@ -62,8 +62,16 @@ __all__ = ['SUITS', # imports import sys, os, re, time + +try: + import Image, ImageTk, ImageOps +except ImportError: + Image = ImageTk = ImageOps = None + # PySol imports from settings import DATA_DIRS +from mfxutil import Image + # /*********************************************************************** # // constants @@ -102,11 +110,8 @@ IMAGE_EXTENSIONS = (".gif", ".ppm",) if 1 and os.name == "nt": IMAGE_EXTENSIONS = (".png", ".gif", ".ppm", ".jpg",) pass -try: - import Image -except ImportError: - pass -else: + +if Image: IMAGE_EXTENSIONS = (".png", ".gif", ".jpg", ".ppm", ".bmp")