diff --git a/MANIFEST.in b/MANIFEST.in index e842ed20..a156c3a0 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -5,7 +5,7 @@ ## include pysol.py setup.py setup.cfg MANIFEST.in Makefile COPYING README #recursive-include pysollib *.py -include pysollib/*.py pysollib/macosx/*.py pysollib/tksettings/*.py +include pysollib/*.py pysollib/macosx/*.py pysollib/winsystems/*.py include pysollib/tk/*.py pysollib/tile/*.py pysollib/pysolgtk/*.py include pysollib/games/*.py pysollib/games/special/*.py include pysollib/games/ultra/*.py pysollib/games/mahjongg/*.py diff --git a/pysollib/actions.py b/pysollib/actions.py index 56335f13..5529e400 100644 --- a/pysollib/actions.py +++ b/pysollib/actions.py @@ -35,7 +35,7 @@ # imports -import os, re, sys, string, time, types, locale +import os, sys, types, locale # PySol imports from mfxutil import EnvError, SubclassResponsibility @@ -44,7 +44,6 @@ from pysolrandom import constructRandom from settings import PACKAGE, PACKAGE_URL from settings import TOP_TITLE from settings import DEBUG -from gamedb import GI # stats imports from stats import FileStatsFormatter @@ -61,7 +60,6 @@ from pysoltk import TimeoutsDialog from pysoltk import ColorsDialog from pysoltk import FontsDialog from pysoltk import EditTextDialog -from pysoltk import TOOLBAR_BUTTONS from pysoltk import create_find_card_dialog from help import help_about, help_html diff --git a/pysollib/app.py b/pysollib/app.py index 44321c96..5952f25c 100644 --- a/pysollib/app.py +++ b/pysollib/app.py @@ -35,33 +35,32 @@ # imports -import sys, os, re, time, types +import sys, os, re, types import traceback # PySol imports from mfxutil import destruct, Struct -from mfxutil import pickle, unpickle, Unpickler, UnpicklingError +from mfxutil import pickle, unpickle, UnpicklingError from mfxutil import getusername, gethomedir, getprefdir, EnvError from mfxutil import latin1_to_ascii from util import Timer from util import CARDSET, IMAGE_EXTENSIONS -from settings import PACKAGE, PACKAGE_URL, VERSION, VERSION_TUPLE, WIN_SYSTEM +from settings import PACKAGE, VERSION, VERSION_TUPLE, WIN_SYSTEM from resource import CSI, CardsetConfig, Cardset, CardsetManager from resource import Tile, TileManager from resource import Sample, SampleManager from resource import Music, MusicManager from images import Images, SubsampledImages from pysolrandom import PysolRandom -from game import Game from gamedb import GI, GAME_DB, loadGame from settings import TOP_SIZE, TOP_TITLE, TOOLKIT from settings import DEBUG -from tksettings import TkSettings +from winsystems import TkSettings # Toolkit imports from pysoltk import wm_withdraw, loadImage from pysoltk import MfxDialog, MfxMessageDialog, MfxExceptionDialog -from pysoltk import TclError, MfxRoot, MfxCanvas, MfxScrolledCanvas +from pysoltk import TclError, MfxScrolledCanvas from pysoltk import PysolMenubar from pysoltk import PysolProgressBar from pysoltk import PysolToolbar diff --git a/pysollib/game.py b/pysollib/game.py index 92e0cec1..75930e86 100644 --- a/pysollib/game.py +++ b/pysollib/game.py @@ -41,17 +41,15 @@ from cStringIO import StringIO # PySol imports from mfxutil import Pickler, Unpickler, UnpicklingError from mfxutil import destruct, Struct, SubclassResponsibility -from mfxutil import UnpicklingError, uclock, usleep +from mfxutil import uclock, usleep from mfxutil import format_time from util import get_version_tuple, Timer -from util import ACE, QUEEN, KING from settings import PACKAGE, TOOLKIT, TOP_TITLE, VERSION, VERSION_TUPLE from settings import DEBUG from gamedb import GI -from resource import CSI from pysolrandom import PysolRandom, LCRandom31 from pysoltk import EVENT_HANDLED, EVENT_PROPAGATE -from pysoltk import CURSOR_WATCH, ANCHOR_SW, ANCHOR_SE +from pysoltk import CURSOR_WATCH from pysoltk import bind, wm_map from pysoltk import after, after_idle, after_cancel from pysoltk import MfxMessageDialog, MfxExceptionDialog @@ -1073,9 +1071,6 @@ class Game: # def getCardFaceImage(self, deck, suit, rank): -## if self.app.cardset.type == CSI.TYPE_TAROCK: -## if rank >= 10: -## rank = rank + 1 return self.app.images.getFace(deck, suit, rank) def getCardBackImage(self, deck, suit, rank): diff --git a/pysollib/gamedb.py b/pysollib/gamedb.py index f0d91e48..c89ba36e 100644 --- a/pysollib/gamedb.py +++ b/pysollib/gamedb.py @@ -38,7 +38,7 @@ import sys, imp, os, types # PySol imports -from mfxutil import Struct, latin1_to_ascii +from mfxutil import Struct from resource import CSI from settings import CHECK_GAMES @@ -399,8 +399,6 @@ class GameInfo(Struct): ncards = decks * (len(suits) * len(ranks) + len(trumps)) game_flags = game_type & ~1023 game_type = game_type & 1023 - #if os.name == "mac": - # name = latin1_to_ascii(name) name = to_unicode(name) if not short_name: short_name = name @@ -560,15 +558,12 @@ class GameManager: if self.__games_by_name is None: l1, l2, l3 = [], [], [] for id, gi in self.__games.items(): - #name = latin1_to_ascii(gi.name).lower() name = gettext(gi.name).lower() l1.append((name, id)) if gi.name != gi.short_name: - #name = latin1_to_ascii(gi.short_name).lower() name = gettext(gi.short_name).lower() l2.append((name, id)) for n in gi.altnames: - #name = latin1_to_ascii(n).lower() name = gettext(n).lower() l3.append((name, id, n)) l1.sort() diff --git a/pysollib/help.py b/pysollib/help.py index 05197d26..236301c6 100644 --- a/pysollib/help.py +++ b/pysollib/help.py @@ -37,7 +37,6 @@ # imports import sys, os import traceback -import Tkinter # PySol imports from mfxutil import EnvError @@ -45,7 +44,7 @@ from settings import PACKAGE, PACKAGE_URL, TOOLKIT, VERSION, FC_VERSION from pysoltk import make_help_toplevel, wm_map from pysoltk import MfxMessageDialog from pysoltk import HTMLViewer -from gamedb import GAME_DB + # /*********************************************************************** # // diff --git a/pysollib/main.py b/pysollib/main.py index d6f26d2c..ac915a54 100644 --- a/pysollib/main.py +++ b/pysollib/main.py @@ -45,11 +45,10 @@ from util import DataLoader from resource import Tile from gamedb import GI from app import Application -from pysolaudio import thread, pysolsoundserver from pysolaudio import AbstractAudioClient, PysolSoundServerModuleClient from pysolaudio import Win32AudioClient, OSSAudioClient, PyGameAudioClient from settings import PACKAGE, SOUND_MOD -from tksettings import initRootWindow +from winsystems import initRootWindow # Toolkit imports from pysoltk import wm_withdraw, loadImage diff --git a/pysollib/pysolrandom.py b/pysollib/pysolrandom.py index e2a1d7c8..c988e4e6 100644 --- a/pysollib/pysolrandom.py +++ b/pysollib/pysolrandom.py @@ -37,6 +37,7 @@ # imports import sys, os, re, time, types import random +from mfxutil import SubclassResponsibility # /*********************************************************************** diff --git a/pysollib/stack.py b/pysollib/stack.py index b8bfede8..2db5f2df 100644 --- a/pysollib/stack.py +++ b/pysollib/stack.py @@ -105,7 +105,6 @@ from pysoltk import ANCHOR_NW, ANCHOR_SE from pysoltk import bind, unbind_destroy from pysoltk import after, after_idle, after_cancel from pysoltk import MfxCanvasGroup, MfxCanvasImage, MfxCanvasRectangle, MfxCanvasText, MfxCanvasLine -from pysoltk import Card from pysoltk import get_text_width from pysoltk import markImage from settings import TOOLKIT diff --git a/pysollib/tile/selectgame.py b/pysollib/tile/selectgame.py index 8e4edf24..40a23cc1 100644 --- a/pysollib/tile/selectgame.py +++ b/pysollib/tile/selectgame.py @@ -324,10 +324,11 @@ class SelectGameDialogWithPreview(SelectGameDialog): w2 = max(200, min(w2, 10 + 12*(app.subsampled_images.CARDW+10))) ##print sw, w1, w2 ##padx, pady = kw.padx, kw.pady - padx, pady = kw.padx/2, kw.pady/2 + #padx, pady = kw.padx/2, kw.pady/2 + padx, pady = 4, 4 # PanedWindow paned_window = Tkinter.PanedWindow(top_frame) - paned_window.pack(expand=1, fill='both') + paned_window.pack(expand=1, fill='both', padx=8, pady=8) left_frame = Tkinter.Frame(paned_window) right_frame = Tkinter.Frame(paned_window) paned_window.add(left_frame) diff --git a/pysollib/tile/tkstats.py b/pysollib/tile/tkstats.py index c473ab1b..6ef18746 100644 --- a/pysollib/tile/tkstats.py +++ b/pysollib/tile/tkstats.py @@ -118,12 +118,12 @@ class SingleGame_StatsDialog(MfxDialog): t2 = 45 ##t3 = font.measure('100%')+10 t3 = 45 - tx = (t0, t0+t1+t2, t0+t1+t2+t3) + tx = (t0, t0+t1+t2, t0+t1+t2+t3, t0+t1+t2+t3+20) # ls = self.font_metrics['linespace'] ls += 5 - ls = max(ls, 20) - ty = (ls, 2*ls, 3*ls+15, 3*ls+25) + #ls = max(ls, 20) + ty = (5, 5+ls, 5+2*ls+15, max(85, 5+3*ls+15)) # self.tab_x, self.tab_y = tx, ty @@ -143,7 +143,7 @@ class SingleGame_StatsDialog(MfxDialog): bg = style.lookup('.', 'background') or None self.fg = fg # - w, h = self.tab_x[-1]+20, self.tab_y[-1]+20 + w, h = self.tab_x[-1], self.tab_y[-1] c = Tkinter.Canvas(frame, width=w, height=h, bg=bg, highlightthickness=0) c.pack(fill='both', expand=True) @@ -184,21 +184,24 @@ class SingleGame_StatsDialog(MfxDialog): #ty = (21, 41, 75) # tx, ty = self.tab_x, self.tab_y + x0, y0 = 20, 10 # base coords + w, h = 90, 50 # size + d = 9 # delta if won + lost > 0: ##s, ewon, elost = 90.0, -360.0 * pwon, -360.0 * plost s, ewon, elost = 0.0, 360.0 * pwon, 360.0 * plost - c.create_arc(20, 25+9, 110, 75+9, fill="#007f00", start=s, extent=ewon) - c.create_arc(20, 25+9, 110, 75+9, fill="#7f0000", start=s+ewon, extent=elost) - c.create_arc(20, 25, 110, 75, fill="#00ff00", start=s, extent=ewon) - c.create_arc(20, 25, 110, 75, fill="#ff0000", start=s+ewon, extent=elost) + c.create_arc(x0, y0+d, x0+w, y0+h+d, fill="#007f00", start=s, extent=ewon) + c.create_arc(x0, y0+d, x0+w, y0+h+d, fill="#7f0000", start=s+ewon, extent=elost) + c.create_arc(x0, y0, x0+w, y0+h, fill="#00ff00", start=s, extent=ewon) + c.create_arc(x0, y0, x0+w, y0+h, fill="#ff0000", start=s+ewon, extent=elost) x, y = tx[0] - 25, ty[0] c.create_rectangle(x, y, x+10, y+10, fill="#00ff00") y = ty[1] c.create_rectangle(x, y, x+10, y+10, fill="#ff0000") else: - c.create_oval(20, 25+10, 110, 75+10, fill="#7f7f7f") - c.create_oval(20, 25, 110, 75, fill="#f0f0f0") - c.create_text(65, 50, text=_("No games"), anchor="center", font=tfont, fill="#bfbfbf") + c.create_oval(x0, y0+d, x0+w, y0+h+d, fill="#7f7f7f") + c.create_oval(x0, y0, x0+w, y0+h, fill="#f0f0f0") + c.create_text(x0+w/2, y0+h/2, text=_("No games"), anchor="center", font=tfont, fill="#bfbfbf") # self._createChartTexts(tx, ty, won, lost) diff --git a/pysollib/tile/tkutil.py b/pysollib/tile/tkutil.py index fcaa821d..c67a0d69 100644 --- a/pysollib/tile/tkutil.py +++ b/pysollib/tile/tkutil.py @@ -146,7 +146,7 @@ def makeToplevel(parent, title=None): def make_help_toplevel(app, title=None): # Create an independent Toplevel window. - from pysollib.tksettings import initRootWindow + from pysollib.winsystems import initRootWindow window = Tkinter.Tk(className=PACKAGE) initRootWindow(window, app) return window diff --git a/pysollib/tile/tkwidget.py b/pysollib/tile/tkwidget.py index 8d42989d..2a7686c8 100644 --- a/pysollib/tile/tkwidget.py +++ b/pysollib/tile/tkwidget.py @@ -75,8 +75,9 @@ class MfxDialog: # ex. _ToplevelDialog self.buttons = [] self.accel_keys = {} self.top = makeToplevel(parent, title=title) - self._frame = Tkinter.Frame(self.top) - self._frame.pack(expand=True, fill='both') + #self._frame = Tkinter.Frame(self.top) + #self._frame.pack(expand=True, fill='both') + self._frame = self.top self.top.wm_resizable(resizable, resizable) ##w, h = self.top.winfo_screenwidth(), self.top.winfo_screenheight() ##self.top.wm_maxsize(w-4, h-32) @@ -161,11 +162,11 @@ class MfxDialog: # ex. _ToplevelDialog return kw def createFrames(self, kw): - bottom_frame = Tkinter.Frame(self._frame) - bottom_frame.pack(side='bottom', fill='both', expand=0, ipadx=3, ipady=3, padx=5) + bottom_frame = Tkinter.Frame(self._frame, relief='flat', borderwidth=4) + bottom_frame.pack(side='bottom', fill='both', expand=0) if kw.separatorwidth > 0: separator = Tkinter.Separator(self._frame) - separator.pack(side='bottom', fill='x', pady=kw.separatorwidth/2) + separator.pack(side='bottom', fill='x') top_frame = Tkinter.Frame(self._frame) top_frame.pack(side='top', fill='both', expand=1) return top_frame, bottom_frame @@ -181,7 +182,7 @@ class MfxDialog: # ex. _ToplevelDialog def createButtons(self, frame, kw): xbutton = column = -1 - padx, pady = kw.get("buttonpadx", 5), kw.get("buttonpady", 5) + padx, pady = 4, 4 focus = None max_len = 0 if 'sep' in kw.strings: diff --git a/pysollib/tile/toolbar.py b/pysollib/tile/toolbar.py index 3dfe026b..0e76317d 100644 --- a/pysollib/tile/toolbar.py +++ b/pysollib/tile/toolbar.py @@ -51,7 +51,7 @@ from pysollib.mfxutil import destruct from pysollib.util import IMAGE_EXTENSIONS from pysollib.settings import PACKAGE from pysollib.actions import PysolToolbarActions -from pysollib.tksettings import TkSettings +from pysollib.winsystems import TkSettings # Toolkit imports from tkconst import EVENT_HANDLED, EVENT_PROPAGATE diff --git a/pysollib/tk/tkutil.py b/pysollib/tk/tkutil.py index f2c4d14e..c34fd5c7 100644 --- a/pysollib/tk/tkutil.py +++ b/pysollib/tk/tkutil.py @@ -146,7 +146,7 @@ def makeToplevel(parent, title=None): def make_help_toplevel(app, title=None): # Create an independent Toplevel window. - from pysollib.tksettings import initRootWindow + from pysollib.winsystems import initRootWindow window = Tkinter.Tk(className=PACKAGE) initRootWindow(window, app) return window diff --git a/pysollib/tk/toolbar.py b/pysollib/tk/toolbar.py index 394e709b..07063223 100644 --- a/pysollib/tk/toolbar.py +++ b/pysollib/tk/toolbar.py @@ -49,7 +49,7 @@ from pysollib.mfxutil import destruct from pysollib.util import IMAGE_EXTENSIONS from pysollib.settings import PACKAGE from pysollib.actions import PysolToolbarActions -from pysollib.tksettings import TkSettings +from pysollib.winsystems import TkSettings # Toolkit imports from tkconst import EVENT_HANDLED, EVENT_PROPAGATE diff --git a/setup.py b/setup.py index ccbdf1c2..1625e726 100644 --- a/setup.py +++ b/setup.py @@ -66,7 +66,7 @@ kw = { 'scripts' : ['pysol.py'], 'packages' : ['pysollib', 'pysollib.macosx', - 'pysollib.tksettings', + 'pysollib.winsystems', 'pysollib.tk', 'pysollib.tile', 'pysollib.pysolgtk',