1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-15 02:54:09 -04:00
This commit is contained in:
Shlomi Fish 2017-04-17 15:55:06 +03:00
parent 6eebf8729d
commit 589fd65f0a
4 changed files with 63 additions and 51 deletions

View file

@ -28,7 +28,7 @@ import Tkinter
import ttk import ttk
# PySol imports # PySol imports
from pysollib.mygettext import _, n_ from pysollib.mygettext import _
from pysollib.mfxutil import KwStruct from pysollib.mfxutil import KwStruct
# Toolkit imports # Toolkit imports
@ -61,7 +61,8 @@ class TimeoutsDialog(MfxDialog):
self.highlight_cards_sleep_var = Tkinter.DoubleVar() self.highlight_cards_sleep_var = Tkinter.DoubleVar()
self.highlight_cards_sleep_var.set(app.opt.timeouts['highlight_cards']) self.highlight_cards_sleep_var.set(app.opt.timeouts['highlight_cards'])
self.highlight_samerank_sleep_var = Tkinter.DoubleVar() self.highlight_samerank_sleep_var = Tkinter.DoubleVar()
self.highlight_samerank_sleep_var.set(app.opt.timeouts['highlight_samerank']) self.highlight_samerank_sleep_var.set(
app.opt.timeouts['highlight_samerank'])
# #
lframe = ttk.LabelFrame(frame, text=_('Set delays in seconds'), lframe = ttk.LabelFrame(frame, text=_('Set delays in seconds'),
padding=(10, 5)) padding=(10, 5))
@ -75,8 +76,9 @@ class TimeoutsDialog(MfxDialog):
(_('Highlight cards:'), self.highlight_cards_sleep_var), (_('Highlight cards:'), self.highlight_cards_sleep_var),
(_('Highlight same rank:'), self.highlight_samerank_sleep_var), (_('Highlight same rank:'), self.highlight_samerank_sleep_var),
): ):
ttk.Label(lframe, text=title, anchor='w' ttk.Label(
).grid(row=row, column=0, sticky='we') lframe, text=title, anchor='w').grid(
row=row, column=0, sticky='we')
widget = PysolScale(lframe, from_=0.2, to=9.9, value=var.get(), widget = PysolScale(lframe, from_=0.2, to=9.9, value=var.get(),
resolution=0.1, orient='horizontal', resolution=0.1, orient='horizontal',
length="3i", variable=var, takefocus=0) length="3i", variable=var, takefocus=0)
@ -91,7 +93,8 @@ class TimeoutsDialog(MfxDialog):
self.raise_card_timeout = self.raise_card_sleep_var.get() self.raise_card_timeout = self.raise_card_sleep_var.get()
self.highlight_piles_timeout = self.highlight_piles_sleep_var.get() self.highlight_piles_timeout = self.highlight_piles_sleep_var.get()
self.highlight_cards_timeout = self.highlight_cards_sleep_var.get() self.highlight_cards_timeout = self.highlight_cards_sleep_var.get()
self.highlight_samerank_timeout = self.highlight_samerank_sleep_var.get() self.highlight_samerank_timeout = \
self.highlight_samerank_sleep_var.get()
def initKw(self, kw): def initKw(self, kw):
kw = KwStruct(kw, kw = KwStruct(kw,
@ -99,7 +102,3 @@ class TimeoutsDialog(MfxDialog):
padx=10, pady=10, padx=10, pady=10,
) )
return MfxDialog.initKw(self, kw) return MfxDialog.initKw(self, kw)

View file

@ -30,10 +30,9 @@ import ttk
# PySol imports # PySol imports
from pysollib.mygettext import _, n_ from pysollib.mygettext import _, n_
from pysollib.mfxutil import destruct
from pysollib.mfxutil import Image, ImageTk, ImageOps from pysollib.mfxutil import Image, ImageTk, ImageOps
from pysollib.util import IMAGE_EXTENSIONS from pysollib.util import IMAGE_EXTENSIONS
from pysollib.settings import TITLE, WIN_SYSTEM from pysollib.settings import TITLE
from pysollib.winsystems import TkSettings from pysollib.winsystems import TkSettings
# Toolkit imports # Toolkit imports
@ -72,7 +71,8 @@ class AbstractToolbarButton:
sticky='nsew') sticky='nsew')
def hide(self): def hide(self):
if not self.visible: return if not self.visible:
return
self.visible = False self.visible = False
self.grid_forget() self.grid_forget()
@ -92,6 +92,7 @@ class ToolbarButton(AbstractToolbarButton, ttk.Button):
AbstractToolbarButton.__init__(self, parent, toolbar, AbstractToolbarButton.__init__(self, parent, toolbar,
toolbar_name, position) toolbar_name, position)
class ToolbarSeparator(ttk.Separator): class ToolbarSeparator(ttk.Separator):
def __init__(self, parent, toolbar, position, **kwargs): def __init__(self, parent, toolbar, position, **kwargs):
kwargs['orient'] = 'vertical' kwargs['orient'] = 'vertical'
@ -99,6 +100,7 @@ class ToolbarSeparator(ttk.Separator):
self.toolbar = toolbar self.toolbar = toolbar
self.position = position self.position = position
self.visible = False self.visible = False
def show(self, orient, force=False): def show(self, orient, force=False):
if self.visible and not force: if self.visible and not force:
return return
@ -117,11 +119,14 @@ class ToolbarSeparator(ttk.Separator):
column=0, column=0,
padx=pady, pady=padx, padx=pady, pady=padx,
sticky='nsew') sticky='nsew')
def hide(self): def hide(self):
if not self.visible: return if not self.visible:
return
self.visible = False self.visible = False
self.grid_forget() self.grid_forget()
class ToolbarLabel(Tkinter.Message): class ToolbarLabel(Tkinter.Message):
def __init__(self, parent, toolbar, toolbar_name, position, **kwargs): def __init__(self, parent, toolbar, toolbar_name, position, **kwargs):
Tkinter.Message.__init__(self, parent, **kwargs) Tkinter.Message.__init__(self, parent, **kwargs)
@ -129,6 +134,7 @@ class ToolbarLabel(Tkinter.Message):
self.toolbar_name = toolbar_name self.toolbar_name = toolbar_name
self.position = position self.position = position
self.visible = False self.visible = False
def show(self, orient, force=False): def show(self, orient, force=False):
if self.visible and not force: if self.visible and not force:
return return
@ -144,8 +150,10 @@ class ToolbarLabel(Tkinter.Message):
column=0, column=0,
padx=padx, pady=pady, padx=padx, pady=pady,
sticky='nsew') sticky='nsew')
def hide(self): def hide(self):
if not self.visible: return if not self.visible:
return
self.visible = False self.visible = False
self.grid_forget() self.grid_forget()
@ -224,7 +232,6 @@ class PysolToolbarTk:
else: else:
# button # button
widget = getattr(self, w+'_button') widget = getattr(self, w+'_button')
position = widget.position
if v: if v:
widget.show(orient=self.orient) widget.show(orient=self.orient)
else: else:
@ -234,7 +241,8 @@ class PysolToolbarTk:
last_visible = None last_visible = None
for w in self._widgets: for w in self._widgets:
if isinstance(w, ToolbarSeparator): if isinstance(w, ToolbarSeparator):
if prev_visible is None or isinstance(prev_visible, ToolbarSeparator): if prev_visible is None or isinstance(prev_visible,
ToolbarSeparator):
w.hide() w.hide()
else: else:
w.show(orient=self.orient) w.show(orient=self.orient)
@ -272,8 +280,8 @@ class PysolToolbarTk:
return None return None
im = tkim._pil_image im = tkim._pil_image
dis_im = ImageOps.grayscale(im) dis_im = ImageOps.grayscale(im)
##color = '#ffffff' # color = '#ffffff'
##factor = 0.6 # factor = 0.6
color = '#dedede' color = '#dedede'
factor = 0.7 factor = 0.7
sh = Image.new(dis_im.mode, dis_im.size, color) sh = Image.new(dis_im.mode, dis_im.size, color)
@ -345,7 +353,6 @@ class PysolToolbarTk:
self.game.interruptSleep() self.game.interruptSleep()
return self.game.busy return self.game.busy
# #
# public methods # public methods
# #
@ -389,10 +396,12 @@ class PysolToolbarTk:
def destroy(self): def destroy(self):
for w in self._tooltips: for w in self._tooltips:
if w: w.destroy() if w:
w.destroy()
self._tooltips = [] self._tooltips = []
for w in self._widgets: for w in self._widgets:
if w: w.destroy() if w:
w.destroy()
self._widgets = [] self._widgets = []
def setCursor(self, cursor): def setCursor(self, cursor):
@ -449,9 +458,11 @@ class PysolToolbarTk:
# #
def rightclickHandler(self, event): def rightclickHandler(self, event):
if self._busy(): return EVENT_HANDLED if self._busy():
return EVENT_HANDLED
if self.popup: if self.popup:
##print event.x, event.y, event.x_root, event.y_root, event.__dict__ # print event.x, event.y, \
# event.x_root, event.y_root, event.__dict__
self.popup.tk_popup(event.x_root, event.y_root) self.popup.tk_popup(event.x_root, event.y_root)
return EVENT_HANDLED return EVENT_HANDLED
@ -461,4 +472,3 @@ class PysolToolbarTk:
size = self.size size = self.size
comp = int(self.compound in ('top', 'bottom')) comp = int(self.compound in ('top', 'bottom'))
return int((size+comp) != 0) return int((size+comp) != 0)

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python #!/usr/bin/env python
# -*- mode: python; coding: utf-8; -*- # -*- mode: python; coding: utf-8; -*-
# ---------------------------------------------------------------------------## # ---------------------------------------------------------------------------
# #
# Copyright (C) 1998-2003 Markus Franz Xaver Johannes Oberhumer # Copyright (C) 1998-2003 Markus Franz Xaver Johannes Oberhumer
# Copyright (C) 2003 Mt. Hood Playing Card Co. # Copyright (C) 2003 Mt. Hood Playing Card Co.
@ -19,17 +19,19 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
# ---------------------------------------------------------------------------## # ---------------------------------------------------------------------------
__all__ = ['WizardDialog'] __all__ = ['WizardDialog']
# imports # imports
import sys
import Tkinter import Tkinter
import ttk import ttk
# PySol imports # PySol imports
from pysollib.mygettext import _, n_ from pysollib.mygettext import _
from pysollib.mfxutil import KwStruct from pysollib.mfxutil import KwStruct
from pysollib.wizardutil import WizardWidgets from pysollib.wizardutil import WizardWidgets
from pysollib.wizardpresets import presets from pysollib.wizardpresets import presets
@ -38,11 +40,14 @@ from pysollib.wizardpresets import presets
from tkwidget import MfxDialog from tkwidget import MfxDialog
from tkwidget import PysolScale, PysolCombo from tkwidget import PysolScale, PysolCombo
if sys.version_info > (3,):
basestring = str
# ************************************************************************ # ************************************************************************
# * # *
# ************************************************************************ # ************************************************************************
class WizardDialog(MfxDialog): class WizardDialog(MfxDialog):
def __init__(self, parent, title, app, **kw): def __init__(self, parent, title, app, **kw):
kw = self.initKw(kw) kw = self.initKw(kw)
@ -75,7 +80,9 @@ class WizardDialog(MfxDialog):
values.remove(default) values.remove(default)
values.sort() values.sort()
values.insert(0, default) values.insert(0, default)
callback = lambda e, w=w: self.presetSelected(e, w)
def callback(e, w=w):
self.presetSelected(e, w)
cb = PysolCombo(frame, values=tuple(values), cb = PysolCombo(frame, values=tuple(values),
textvariable=w.variable, textvariable=w.variable,
exportselection=False, exportselection=False,
@ -104,7 +111,8 @@ class WizardDialog(MfxDialog):
for mod, cbname in w.variable.trace_vinfo(): for mod, cbname in w.variable.trace_vinfo():
w.variable.trace_vdelete(mod, cbname) w.variable.trace_vdelete(mod, cbname)
from_, to = w.values from_, to = w.values
##s = Spinbox(frame, textvariable=w.variable, from_=from_, to=to) # s = Spinbox(
# frame, textvariable=w.variable, from_=from_, to=to)
s = PysolScale(frame, from_=from_, to=to, resolution=1, s = PysolScale(frame, from_=from_, to=to, resolution=1,
orient='horizontal', orient='horizontal',
variable=w.variable) variable=w.variable)
@ -129,7 +137,6 @@ class WizardDialog(MfxDialog):
focus = self.createButtons(bottom_frame, kw) focus = self.createButtons(bottom_frame, kw)
self.mainloop(focus, kw.timeout) self.mainloop(focus, kw.timeout)
def presetSelected(self, e, w): def presetSelected(self, e, w):
n = e.widget.get() n = e.widget.get()
n = w.translation_map[n] n = w.translation_map[n]
@ -145,7 +152,6 @@ class WizardDialog(MfxDialog):
v = _(v) v = _(v)
w.variable.set(v) w.variable.set(v)
def initKw(self, kw): def initKw(self, kw):
kw = KwStruct(kw, kw = KwStruct(kw,
strings=(_('&OK'), _('&Cancel')), strings=(_('&OK'), _('&Cancel')),
@ -153,6 +159,3 @@ class WizardDialog(MfxDialog):
separator=False, separator=False,
) )
return MfxDialog.initKw(self, kw) return MfxDialog.initKw(self, kw)

View file

@ -10,7 +10,7 @@ use String::ShellQuote qw/ shell_quote /;
# my $cmd = shell_quote( 'flake8', '.' ); # my $cmd = shell_quote( 'flake8', '.' );
my $cmd = shell_quote( 'flake8', my $cmd = shell_quote( 'flake8',
grep { not($_ eq './pysollib/pysoltk.py') } glob('./pysollib/*.py ./pysollib/[cmp]*/*.py ./pysollib/tile/[a-s]*.py') ); grep { not($_ eq './pysollib/pysoltk.py') } glob('./pysollib/*.py ./pysollib/[cmp]*/*.py ./pysollib/tile/{[a-s],ti,to,w}*.py') );
# TEST # TEST
eq_or_diff( scalar(`$cmd`), '', "flake8 is happy with the code." ); eq_or_diff( scalar(`$cmd`), '', "flake8 is happy with the code." );