1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-15 02:54:09 -04:00

* renamed module tksettings to winsystems

* improved Tile/SingleGame_StatsDialog
* improved Tile/MfxDialog
* improved Tile/SelectGameDialogWithPreview
* cleanup code



git-svn-id: file:///home/shlomif/Backup/svn-dumps/PySolFC/svnsync-repos/pysolfc/PySolFC/trunk@126 efabe8c0-fbe8-4139-b769-b5e6d273206e
This commit is contained in:
skomoroh 2006-12-20 00:40:20 +00:00
parent cd8419e0b9
commit 3e649f70eb
17 changed files with 42 additions and 52 deletions

View file

@ -5,7 +5,7 @@
## ##
include pysol.py setup.py setup.cfg MANIFEST.in Makefile COPYING README include pysol.py setup.py setup.cfg MANIFEST.in Makefile COPYING README
#recursive-include pysollib *.py #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/tk/*.py pysollib/tile/*.py pysollib/pysolgtk/*.py
include pysollib/games/*.py pysollib/games/special/*.py include pysollib/games/*.py pysollib/games/special/*.py
include pysollib/games/ultra/*.py pysollib/games/mahjongg/*.py include pysollib/games/ultra/*.py pysollib/games/mahjongg/*.py

View file

@ -35,7 +35,7 @@
# imports # imports
import os, re, sys, string, time, types, locale import os, sys, types, locale
# PySol imports # PySol imports
from mfxutil import EnvError, SubclassResponsibility from mfxutil import EnvError, SubclassResponsibility
@ -44,7 +44,6 @@ from pysolrandom import constructRandom
from settings import PACKAGE, PACKAGE_URL from settings import PACKAGE, PACKAGE_URL
from settings import TOP_TITLE from settings import TOP_TITLE
from settings import DEBUG from settings import DEBUG
from gamedb import GI
# stats imports # stats imports
from stats import FileStatsFormatter from stats import FileStatsFormatter
@ -61,7 +60,6 @@ from pysoltk import TimeoutsDialog
from pysoltk import ColorsDialog from pysoltk import ColorsDialog
from pysoltk import FontsDialog from pysoltk import FontsDialog
from pysoltk import EditTextDialog from pysoltk import EditTextDialog
from pysoltk import TOOLBAR_BUTTONS
from pysoltk import create_find_card_dialog from pysoltk import create_find_card_dialog
from help import help_about, help_html from help import help_about, help_html

View file

@ -35,33 +35,32 @@
# imports # imports
import sys, os, re, time, types import sys, os, re, types
import traceback import traceback
# PySol imports # PySol imports
from mfxutil import destruct, Struct 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 getusername, gethomedir, getprefdir, EnvError
from mfxutil import latin1_to_ascii from mfxutil import latin1_to_ascii
from util import Timer from util import Timer
from util import CARDSET, IMAGE_EXTENSIONS 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 CSI, CardsetConfig, Cardset, CardsetManager
from resource import Tile, TileManager from resource import Tile, TileManager
from resource import Sample, SampleManager from resource import Sample, SampleManager
from resource import Music, MusicManager from resource import Music, MusicManager
from images import Images, SubsampledImages from images import Images, SubsampledImages
from pysolrandom import PysolRandom from pysolrandom import PysolRandom
from game import Game
from gamedb import GI, GAME_DB, loadGame from gamedb import GI, GAME_DB, loadGame
from settings import TOP_SIZE, TOP_TITLE, TOOLKIT from settings import TOP_SIZE, TOP_TITLE, TOOLKIT
from settings import DEBUG from settings import DEBUG
from tksettings import TkSettings from winsystems import TkSettings
# Toolkit imports # Toolkit imports
from pysoltk import wm_withdraw, loadImage from pysoltk import wm_withdraw, loadImage
from pysoltk import MfxDialog, MfxMessageDialog, MfxExceptionDialog 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 PysolMenubar
from pysoltk import PysolProgressBar from pysoltk import PysolProgressBar
from pysoltk import PysolToolbar from pysoltk import PysolToolbar

View file

@ -41,17 +41,15 @@ from cStringIO import StringIO
# PySol imports # PySol imports
from mfxutil import Pickler, Unpickler, UnpicklingError from mfxutil import Pickler, Unpickler, UnpicklingError
from mfxutil import destruct, Struct, SubclassResponsibility from mfxutil import destruct, Struct, SubclassResponsibility
from mfxutil import UnpicklingError, uclock, usleep from mfxutil import uclock, usleep
from mfxutil import format_time from mfxutil import format_time
from util import get_version_tuple, Timer 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 PACKAGE, TOOLKIT, TOP_TITLE, VERSION, VERSION_TUPLE
from settings import DEBUG from settings import DEBUG
from gamedb import GI from gamedb import GI
from resource import CSI
from pysolrandom import PysolRandom, LCRandom31 from pysolrandom import PysolRandom, LCRandom31
from pysoltk import EVENT_HANDLED, EVENT_PROPAGATE 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 bind, wm_map
from pysoltk import after, after_idle, after_cancel from pysoltk import after, after_idle, after_cancel
from pysoltk import MfxMessageDialog, MfxExceptionDialog from pysoltk import MfxMessageDialog, MfxExceptionDialog
@ -1073,9 +1071,6 @@ class Game:
# #
def getCardFaceImage(self, deck, suit, rank): 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) return self.app.images.getFace(deck, suit, rank)
def getCardBackImage(self, deck, suit, rank): def getCardBackImage(self, deck, suit, rank):

View file

@ -38,7 +38,7 @@
import sys, imp, os, types import sys, imp, os, types
# PySol imports # PySol imports
from mfxutil import Struct, latin1_to_ascii from mfxutil import Struct
from resource import CSI from resource import CSI
from settings import CHECK_GAMES from settings import CHECK_GAMES
@ -399,8 +399,6 @@ class GameInfo(Struct):
ncards = decks * (len(suits) * len(ranks) + len(trumps)) ncards = decks * (len(suits) * len(ranks) + len(trumps))
game_flags = game_type & ~1023 game_flags = game_type & ~1023
game_type = game_type & 1023 game_type = game_type & 1023
#if os.name == "mac":
# name = latin1_to_ascii(name)
name = to_unicode(name) name = to_unicode(name)
if not short_name: if not short_name:
short_name = name short_name = name
@ -560,15 +558,12 @@ class GameManager:
if self.__games_by_name is None: if self.__games_by_name is None:
l1, l2, l3 = [], [], [] l1, l2, l3 = [], [], []
for id, gi in self.__games.items(): for id, gi in self.__games.items():
#name = latin1_to_ascii(gi.name).lower()
name = gettext(gi.name).lower() name = gettext(gi.name).lower()
l1.append((name, id)) l1.append((name, id))
if gi.name != gi.short_name: if gi.name != gi.short_name:
#name = latin1_to_ascii(gi.short_name).lower()
name = gettext(gi.short_name).lower() name = gettext(gi.short_name).lower()
l2.append((name, id)) l2.append((name, id))
for n in gi.altnames: for n in gi.altnames:
#name = latin1_to_ascii(n).lower()
name = gettext(n).lower() name = gettext(n).lower()
l3.append((name, id, n)) l3.append((name, id, n))
l1.sort() l1.sort()

View file

@ -37,7 +37,6 @@
# imports # imports
import sys, os import sys, os
import traceback import traceback
import Tkinter
# PySol imports # PySol imports
from mfxutil import EnvError 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 make_help_toplevel, wm_map
from pysoltk import MfxMessageDialog from pysoltk import MfxMessageDialog
from pysoltk import HTMLViewer from pysoltk import HTMLViewer
from gamedb import GAME_DB
# /*********************************************************************** # /***********************************************************************
# // # //

View file

@ -45,11 +45,10 @@ from util import DataLoader
from resource import Tile from resource import Tile
from gamedb import GI from gamedb import GI
from app import Application from app import Application
from pysolaudio import thread, pysolsoundserver
from pysolaudio import AbstractAudioClient, PysolSoundServerModuleClient from pysolaudio import AbstractAudioClient, PysolSoundServerModuleClient
from pysolaudio import Win32AudioClient, OSSAudioClient, PyGameAudioClient from pysolaudio import Win32AudioClient, OSSAudioClient, PyGameAudioClient
from settings import PACKAGE, SOUND_MOD from settings import PACKAGE, SOUND_MOD
from tksettings import initRootWindow from winsystems import initRootWindow
# Toolkit imports # Toolkit imports
from pysoltk import wm_withdraw, loadImage from pysoltk import wm_withdraw, loadImage

View file

@ -37,6 +37,7 @@
# imports # imports
import sys, os, re, time, types import sys, os, re, time, types
import random import random
from mfxutil import SubclassResponsibility
# /*********************************************************************** # /***********************************************************************

View file

@ -105,7 +105,6 @@ from pysoltk import ANCHOR_NW, ANCHOR_SE
from pysoltk import bind, unbind_destroy from pysoltk import bind, unbind_destroy
from pysoltk import after, after_idle, after_cancel from pysoltk import after, after_idle, after_cancel
from pysoltk import MfxCanvasGroup, MfxCanvasImage, MfxCanvasRectangle, MfxCanvasText, MfxCanvasLine from pysoltk import MfxCanvasGroup, MfxCanvasImage, MfxCanvasRectangle, MfxCanvasText, MfxCanvasLine
from pysoltk import Card
from pysoltk import get_text_width from pysoltk import get_text_width
from pysoltk import markImage from pysoltk import markImage
from settings import TOOLKIT from settings import TOOLKIT

View file

@ -324,10 +324,11 @@ class SelectGameDialogWithPreview(SelectGameDialog):
w2 = max(200, min(w2, 10 + 12*(app.subsampled_images.CARDW+10))) w2 = max(200, min(w2, 10 + 12*(app.subsampled_images.CARDW+10)))
##print sw, w1, w2 ##print sw, w1, w2
##padx, pady = kw.padx, kw.pady ##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 # PanedWindow
paned_window = Tkinter.PanedWindow(top_frame) 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) left_frame = Tkinter.Frame(paned_window)
right_frame = Tkinter.Frame(paned_window) right_frame = Tkinter.Frame(paned_window)
paned_window.add(left_frame) paned_window.add(left_frame)

View file

@ -118,12 +118,12 @@ class SingleGame_StatsDialog(MfxDialog):
t2 = 45 t2 = 45
##t3 = font.measure('100%')+10 ##t3 = font.measure('100%')+10
t3 = 45 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 = self.font_metrics['linespace']
ls += 5 ls += 5
ls = max(ls, 20) #ls = max(ls, 20)
ty = (ls, 2*ls, 3*ls+15, 3*ls+25) ty = (5, 5+ls, 5+2*ls+15, max(85, 5+3*ls+15))
# #
self.tab_x, self.tab_y = tx, ty self.tab_x, self.tab_y = tx, ty
@ -143,7 +143,7 @@ class SingleGame_StatsDialog(MfxDialog):
bg = style.lookup('.', 'background') or None bg = style.lookup('.', 'background') or None
self.fg = fg 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, c = Tkinter.Canvas(frame, width=w, height=h,
bg=bg, highlightthickness=0) bg=bg, highlightthickness=0)
c.pack(fill='both', expand=True) c.pack(fill='both', expand=True)
@ -184,21 +184,24 @@ class SingleGame_StatsDialog(MfxDialog):
#ty = (21, 41, 75) #ty = (21, 41, 75)
# #
tx, ty = self.tab_x, self.tab_y 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: if won + lost > 0:
##s, ewon, elost = 90.0, -360.0 * pwon, -360.0 * plost ##s, ewon, elost = 90.0, -360.0 * pwon, -360.0 * plost
s, ewon, elost = 0.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(x0, y0+d, x0+w, y0+h+d, 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(x0, y0+d, x0+w, y0+h+d, fill="#7f0000", start=s+ewon, extent=elost)
c.create_arc(20, 25, 110, 75, fill="#00ff00", start=s, extent=ewon) c.create_arc(x0, y0, x0+w, y0+h, 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, x0+w, y0+h, fill="#ff0000", start=s+ewon, extent=elost)
x, y = tx[0] - 25, ty[0] x, y = tx[0] - 25, ty[0]
c.create_rectangle(x, y, x+10, y+10, fill="#00ff00") c.create_rectangle(x, y, x+10, y+10, fill="#00ff00")
y = ty[1] y = ty[1]
c.create_rectangle(x, y, x+10, y+10, fill="#ff0000") c.create_rectangle(x, y, x+10, y+10, fill="#ff0000")
else: else:
c.create_oval(20, 25+10, 110, 75+10, fill="#7f7f7f") c.create_oval(x0, y0+d, x0+w, y0+h+d, fill="#7f7f7f")
c.create_oval(20, 25, 110, 75, fill="#f0f0f0") c.create_oval(x0, y0, x0+w, y0+h, fill="#f0f0f0")
c.create_text(65, 50, text=_("No games"), anchor="center", font=tfont, fill="#bfbfbf") c.create_text(x0+w/2, y0+h/2, text=_("No games"), anchor="center", font=tfont, fill="#bfbfbf")
# #
self._createChartTexts(tx, ty, won, lost) self._createChartTexts(tx, ty, won, lost)

View file

@ -146,7 +146,7 @@ def makeToplevel(parent, title=None):
def make_help_toplevel(app, title=None): def make_help_toplevel(app, title=None):
# Create an independent Toplevel window. # Create an independent Toplevel window.
from pysollib.tksettings import initRootWindow from pysollib.winsystems import initRootWindow
window = Tkinter.Tk(className=PACKAGE) window = Tkinter.Tk(className=PACKAGE)
initRootWindow(window, app) initRootWindow(window, app)
return window return window

View file

@ -75,8 +75,9 @@ class MfxDialog: # ex. _ToplevelDialog
self.buttons = [] self.buttons = []
self.accel_keys = {} self.accel_keys = {}
self.top = makeToplevel(parent, title=title) self.top = makeToplevel(parent, title=title)
self._frame = Tkinter.Frame(self.top) #self._frame = Tkinter.Frame(self.top)
self._frame.pack(expand=True, fill='both') #self._frame.pack(expand=True, fill='both')
self._frame = self.top
self.top.wm_resizable(resizable, resizable) self.top.wm_resizable(resizable, resizable)
##w, h = self.top.winfo_screenwidth(), self.top.winfo_screenheight() ##w, h = self.top.winfo_screenwidth(), self.top.winfo_screenheight()
##self.top.wm_maxsize(w-4, h-32) ##self.top.wm_maxsize(w-4, h-32)
@ -161,11 +162,11 @@ class MfxDialog: # ex. _ToplevelDialog
return kw return kw
def createFrames(self, kw): def createFrames(self, kw):
bottom_frame = Tkinter.Frame(self._frame) bottom_frame = Tkinter.Frame(self._frame, relief='flat', borderwidth=4)
bottom_frame.pack(side='bottom', fill='both', expand=0, ipadx=3, ipady=3, padx=5) bottom_frame.pack(side='bottom', fill='both', expand=0)
if kw.separatorwidth > 0: if kw.separatorwidth > 0:
separator = Tkinter.Separator(self._frame) 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 = Tkinter.Frame(self._frame)
top_frame.pack(side='top', fill='both', expand=1) top_frame.pack(side='top', fill='both', expand=1)
return top_frame, bottom_frame return top_frame, bottom_frame
@ -181,7 +182,7 @@ class MfxDialog: # ex. _ToplevelDialog
def createButtons(self, frame, kw): def createButtons(self, frame, kw):
xbutton = column = -1 xbutton = column = -1
padx, pady = kw.get("buttonpadx", 5), kw.get("buttonpady", 5) padx, pady = 4, 4
focus = None focus = None
max_len = 0 max_len = 0
if 'sep' in kw.strings: if 'sep' in kw.strings:

View file

@ -51,7 +51,7 @@ from pysollib.mfxutil import destruct
from pysollib.util import IMAGE_EXTENSIONS from pysollib.util import IMAGE_EXTENSIONS
from pysollib.settings import PACKAGE from pysollib.settings import PACKAGE
from pysollib.actions import PysolToolbarActions from pysollib.actions import PysolToolbarActions
from pysollib.tksettings import TkSettings from pysollib.winsystems import TkSettings
# Toolkit imports # Toolkit imports
from tkconst import EVENT_HANDLED, EVENT_PROPAGATE from tkconst import EVENT_HANDLED, EVENT_PROPAGATE

View file

@ -146,7 +146,7 @@ def makeToplevel(parent, title=None):
def make_help_toplevel(app, title=None): def make_help_toplevel(app, title=None):
# Create an independent Toplevel window. # Create an independent Toplevel window.
from pysollib.tksettings import initRootWindow from pysollib.winsystems import initRootWindow
window = Tkinter.Tk(className=PACKAGE) window = Tkinter.Tk(className=PACKAGE)
initRootWindow(window, app) initRootWindow(window, app)
return window return window

View file

@ -49,7 +49,7 @@ from pysollib.mfxutil import destruct
from pysollib.util import IMAGE_EXTENSIONS from pysollib.util import IMAGE_EXTENSIONS
from pysollib.settings import PACKAGE from pysollib.settings import PACKAGE
from pysollib.actions import PysolToolbarActions from pysollib.actions import PysolToolbarActions
from pysollib.tksettings import TkSettings from pysollib.winsystems import TkSettings
# Toolkit imports # Toolkit imports
from tkconst import EVENT_HANDLED, EVENT_PROPAGATE from tkconst import EVENT_HANDLED, EVENT_PROPAGATE

View file

@ -66,7 +66,7 @@ kw = {
'scripts' : ['pysol.py'], 'scripts' : ['pysol.py'],
'packages' : ['pysollib', 'packages' : ['pysollib',
'pysollib.macosx', 'pysollib.macosx',
'pysollib.tksettings', 'pysollib.winsystems',
'pysollib.tk', 'pysollib.tk',
'pysollib.tile', 'pysollib.tile',
'pysollib.pysolgtk', 'pysollib.pysolgtk',