1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-05 00:02:29 -04:00
This commit is contained in:
Shlomi Fish 2017-04-17 13:38:51 +03:00
parent c65a948357
commit 899dfe677f
4 changed files with 89 additions and 96 deletions

View file

@ -24,9 +24,9 @@
__all__ = ['TimeoutsDialog'] __all__ = ['TimeoutsDialog']
# imports # imports
## import os, sys # import os, sys
from pysollib.mygettext import _, n_ from pysollib.mygettext import _
import gtk, gobject, pango import gtk
import gtk.glade import gtk.glade
@ -57,6 +57,7 @@ class TimeoutsDialog:
sc = self.widgets_tree.get_widget(n+'_scale') sc = self.widgets_tree.get_widget(n+'_scale')
sp.set_value(sc.get_value()) sp.set_value(sc.get_value())
dic[n+'_scale_value_changed'] = callback dic[n+'_scale_value_changed'] = callback
def callback(w, n=n): def callback(w, n=n):
sp = self.widgets_tree.get_widget(n+'_spinbutton') sp = self.widgets_tree.get_widget(n+'_spinbutton')
sc = self.widgets_tree.get_widget(n+'_scale') sc = self.widgets_tree.get_widget(n+'_scale')
@ -97,7 +98,6 @@ class TimeoutsDialog:
'label28', 'label28',
'label29', 'label29',
'label30', 'label30',
): ):
w = self.widgets_tree.get_widget(n) w = self.widgets_tree.get_widget(n)
w.set_text(_(w.get_text())) w.set_text(_(w.get_text()))

View file

@ -41,18 +41,18 @@
# imports # imports
import os, sys, types
import gobject, gtk import gobject
gdk = gtk.gdk import gtk
try: try:
import gnomecanvas import gnomecanvas
except ImportError: except ImportError:
import gnome.canvas as gnomecanvas import gnome.canvas as gnomecanvas
# toolkit imports # toolkit imports
from tkutil import anchor_tk2gtk, loadImage, bind, create_pango_font_desc from tkutil import anchor_tk2gtk, bind, create_pango_font_desc
gdk = gtk.gdk
# ************************************************************************ # ************************************************************************
# * canvas items # * canvas items
@ -64,6 +64,7 @@ from tkutil import anchor_tk2gtk, loadImage, bind, create_pango_font_desc
# * classes for then ? # * classes for then ?
# ************************************************************************ # ************************************************************************
class _CanvasItem: class _CanvasItem:
def __init__(self, canvas): def __init__(self, canvas):
@ -74,24 +75,24 @@ class _CanvasItem:
self._group = None self._group = None
def addtag(self, group): def addtag(self, group):
##print self, 'addtag' # print self, 'addtag'
##~ assert isinstance(group._item, CanvasGroup) # ~ assert isinstance(group._item, CanvasGroup)
self._item.reparent(group._item) self._item.reparent(group._item)
if self._group == group: if self._group == group:
print 'addtag: new_group == old_group' print('addtag: new_group == old_group')
self._group = group self._group = group
def dtag(self, group): def dtag(self, group):
##print self, 'dtag' # print self, 'dtag'
##~ assert isinstance(group._item, CanvasGroup) # ~ assert isinstance(group._item, CanvasGroup)
##self._item.reparent(self.canvas.root()) # self._item.reparent(self.canvas.root())
pass pass
def bind(self, sequence, func, add=None): def bind(self, sequence, func, add=None):
bind(self._item, sequence, func, add) bind(self._item, sequence, func, add)
def bbox(self): def bbox(self):
## FIXME # FIXME
return (0, 0, 0, 0) return (0, 0, 0, 0)
def delete(self): def delete(self):
@ -100,25 +101,25 @@ class _CanvasItem:
self._item = None self._item = None
def lower(self, positions=None): def lower(self, positions=None):
print 'lower', self, positions print('lower', self, positions)
return # don't need? return # don't need?
## if positions is None: # if positions is None:
## pass # pass
## ##self._item.lower_to_bottom() # ##self._item.lower_to_bottom()
## ##self._item.get_property('parent').lower_to_bottom() # ##self._item.get_property('parent').lower_to_bottom()
## else: # else:
## print self, positions # print self, positions
## self._item.lower(positions) # self._item.lower(positions)
def tkraise(self, positions=None): def tkraise(self, positions=None):
##print 'tkraise', positions # print 'tkraise', positions
if positions is None: if positions is None:
self._item.raise_to_top() self._item.raise_to_top()
self._item.get_property('parent').raise_to_top() self._item.get_property('parent').raise_to_top()
else: else:
#print self, 'tkraise', positions # print self, 'tkraise', positions
#self._item.raise_to_top() # self._item.raise_to_top()
self._item.raise_to_top() #positions) self._item.raise_to_top() # positions)
def move(self, x, y): def move(self, x, y):
self._item.move(x, y) self._item.move(x, y)
@ -132,17 +133,17 @@ class _CanvasItem:
if self._item: if self._item:
self._item.show() self._item.show()
self._is_hidden = False self._is_hidden = False
def hide(self): def hide(self):
if self._item: if self._item:
self._item.hide() self._item.hide()
self._is_hidden = True self._is_hidden = True
def connect(self, signal, func, args): def connect(self, signal, func, args):
#print '_CanvasItem.connect:', self, signal # print '_CanvasItem.connect:', self, signal
self._item.connect('event', func, args) self._item.connect('event', func, args)
class MfxCanvasGroup(_CanvasItem): class MfxCanvasGroup(_CanvasItem):
def __init__(self, canvas): def __init__(self, canvas):
_CanvasItem.__init__(self, canvas) _CanvasItem.__init__(self, canvas)
@ -169,7 +170,7 @@ class MfxCanvasImage(_CanvasItem):
self._item.show() self._item.show()
def config(self, image): def config(self, image):
##~ assert isinstance(image.im, GdkImlib.Image) # ~ assert isinstance(image.im, GdkImlib.Image)
self._item.set(pixbuf=image.pixbuf) self._item.set(pixbuf=image.pixbuf)
@ -209,9 +210,12 @@ class MfxCanvasRectangle(_CanvasItem):
_CanvasItem.__init__(self, canvas) _CanvasItem.__init__(self, canvas)
self._x, self._y = x1, y1 self._x, self._y = x1, y1
kw = {'x1': x1, 'x2': x2, 'y1': y1, 'y2': y2} kw = {'x1': x1, 'x2': x2, 'y1': y1, 'y2': y2}
if width: kw['width_pixels'] = width if width:
if fill: kw['fill_color'] = fill kw['width_pixels'] = width
if outline: kw['outline_color'] = outline if fill:
kw['fill_color'] = fill
if outline:
kw['outline_color'] = outline
if group: if group:
self._group = group self._group = group
group = group._item group = group._item
@ -243,7 +247,7 @@ class MfxCanvasText(_CanvasItem):
kw['fill'] = canvas._text_color kw['fill'] = canvas._text_color
for k, v in kw.items(): for k, v in kw.items():
self[k] = v self[k] = v
##~ self.text_format = None # ~ self.text_format = None
canvas._text_items.append(self) canvas._text_items.append(self)
self._item.show() self._item.show()
@ -251,13 +255,13 @@ class MfxCanvasText(_CanvasItem):
if key == 'fill': if key == 'fill':
self._item.set(fill_color=value) self._item.set(fill_color=value)
elif key == 'font': elif key == 'font':
##print 'set font:', value # print 'set font:', value
font_desc = create_pango_font_desc(value) font_desc = create_pango_font_desc(value)
self._item.set(font_desc=font_desc) self._item.set(font_desc=font_desc)
elif key == 'text': elif key == 'text':
self._item.set(text=value) self._item.set(text=value)
else: else:
raise AttributeError, key raise AttributeError(key)
def config(self, **kw): def config(self, **kw):
for k, v in kw.items(): for k, v in kw.items():
@ -267,7 +271,7 @@ class MfxCanvasText(_CanvasItem):
if key == 'text': if key == 'text':
return self._item.get_property('text') return self._item.get_property('text')
else: else:
raise AttributeError, key raise AttributeError(key)
cget = __getitem__ cget = __getitem__
@ -304,43 +308,43 @@ class MfxCanvas(gnomecanvas.Canvas):
self.xmargin, self.ymargin = 0, 0 self.xmargin, self.ymargin = 0, 0
self.connect('size-allocate', self._sizeAllocate) self.connect('size-allocate', self._sizeAllocate)
##self.connect('destroy', self.destroyEvent) # self.connect('destroy', self.destroyEvent)
def __setattr__(self, name, value): def __setattr__(self, name, value):
self.__dict__[name] = value self.__dict__[name] = value
def _sizeAllocate(self, w, rect): def _sizeAllocate(self, w, rect):
##print '_sizeAllocate', rect.x, rect.y, rect.width, rect.height # print '_sizeAllocate', rect.x, rect.y, rect.width, rect.height
if self._width > 0: if self._width > 0:
w = self._width w = self._width
h = min(self._height, rect.height) h = min(self._height, rect.height)
self.set_scroll_region(0,0,w,h) self.set_scroll_region(0, 0, w, h)
if self._tile and self._tile.filename: if self._tile and self._tile.filename:
self._setTile() self._setTile()
def bind(self, sequence=None, func=None, add=None): def bind(self, sequence=None, func=None, add=None):
assert add is None assert add is None
# FIXME # FIXME
print 'TkCanvas bind:', sequence print('TkCanvas bind:', sequence)
return return
def cget(self, attr): def cget(self, attr):
if attr == 'cursor': if attr == 'cursor':
# FIXME # FIXME
return gdk.LEFT_PTR return gdk.LEFT_PTR
return self.get_window().get_cursor(v) # return self.get_window().get_cursor(v)
elif attr == 'width': elif attr == 'width':
return self.get_size()[0] return self.get_size()[0]
elif attr == 'height': elif attr == 'height':
return self.get_size()[1] return self.get_size()[1]
print 'TkCanvas cget:', attr print('TkCanvas cget:', attr)
raise AttributeError, attr raise AttributeError(attr)
def xview(self): def xview(self):
w, h = self.get_size() w, h = self.get_size()
dx, dy = self.world_to_window(0, 0) dx, dy = self.world_to_window(0, 0)
return -float(dx)/w, 1.0 return -float(dx)/w, 1.0
def yview(self): def yview(self):
w, h = self.get_size() w, h = self.get_size()
dx, dy = self.world_to_window(0, 0) dx, dy = self.world_to_window(0, 0)
@ -348,6 +352,7 @@ class MfxCanvas(gnomecanvas.Canvas):
def winfo_width(self): def winfo_width(self):
return self.get_size()[0] return self.get_size()[0]
def winfo_height(self): def winfo_height(self):
return self.get_size()[1] return self.get_size()[1]
@ -367,8 +372,8 @@ class MfxCanvas(gnomecanvas.Canvas):
elif k == 'width': elif k == 'width':
width = v width = v
else: else:
print 'TkCanvas', k, v print('TkCanvas', k, v)
raise AttributeError, k raise AttributeError(k)
if height > 0 and width > 0: if height > 0 and width > 0:
self.set_size_request(width, height) self.set_size_request(width, height)
@ -380,7 +385,7 @@ class MfxCanvas(gnomecanvas.Canvas):
for i in self._all_items: for i in self._all_items:
if i._item: if i._item:
i._item.destroy() i._item.destroy()
##i._item = None # i._item = None
self._all_items = [] self._all_items = []
def hideAllItems(self): def hideAllItems(self):
@ -398,8 +403,8 @@ class MfxCanvas(gnomecanvas.Canvas):
# PySol extension # PySol extension
def findCard(self, stack, event): def findCard(self, stack, event):
# FIXME # FIXME
##w = self.get_item_at(event.x, event.y) # w = self.get_item_at(event.x, event.y)
##print w # print w
return stack._findCardXY(event.x, event.y) return stack._findCardXY(event.x, event.y)
def pack(self, **kw): def pack(self, **kw):
@ -414,7 +419,7 @@ class MfxCanvas(gnomecanvas.Canvas):
# PySol extension - set a tiled background image # PySol extension - set a tiled background image
def setTile(self, app, i, force=False): def setTile(self, app, i, force=False):
##print 'setTile:', i # print 'setTile:', i
tile = app.tabletile_manager.get(i) tile = app.tabletile_manager.get(i)
if tile is None or tile.error: if tile is None or tile.error:
return False return False
@ -427,7 +432,7 @@ class MfxCanvas(gnomecanvas.Canvas):
assert tile.basename assert tile.basename
if not force: if not force:
if (i == app.tabletile_index and if (i == app.tabletile_index and
tile.color == app.opt.colors['table']): tile.color == app.opt.colors['table']):
return False return False
if self._tile is tile: if self._tile is tile:
return False return False
@ -436,7 +441,7 @@ class MfxCanvas(gnomecanvas.Canvas):
if i == 0: if i == 0:
self.setBackgroundImage(None) self.setBackgroundImage(None)
self.configure(bg=tile.color) self.configure(bg=tile.color)
##app.top.config(bg=tile.color) # app.top.config(bg=tile.color)
else: else:
self._setTile() self._setTile()
self.configure(bg=self.top_bg) self.configure(bg=self.top_bg)
@ -445,27 +450,26 @@ class MfxCanvas(gnomecanvas.Canvas):
return True return True
# FIXME: should use style.bg_pixmap ????
### FIXME: should use style.bg_pixmap ????
def _setTile(self): def _setTile(self):
if not self._tile: if not self._tile:
return return
##print '_setTile:', self.get_size(), self._tile.filename # print '_setTile:', self.get_size(), self._tile.filename
# #
filename = self._tile.filename filename = self._tile.filename
stretch = self._tile.stretch stretch = self._tile.stretch
if not filename: if not filename:
return False return False
if not self.window: # not realized yet if not self.window:
# not realized yet
self.realize() self.realize()
##return False # return False
gobject.idle_add(self.setBackgroundImage, filename, stretch) gobject.idle_add(self.setBackgroundImage, filename, stretch)
def setBackgroundImage(self, filename, stretch=False): def setBackgroundImage(self, filename, stretch=False):
##print 'setBackgroundImage', filename # print 'setBackgroundImage', filename
if filename is None: if filename is None:
if self.__tileimage: if self.__tileimage:
self.__tileimage.destroy() self.__tileimage.destroy()
@ -504,7 +508,6 @@ class MfxCanvas(gnomecanvas.Canvas):
w.lower_to_bottom() w.lower_to_bottom()
self.__tileimage = w self.__tileimage = w
def setTopImage(self, image, cw=0, ch=0): def setTopImage(self, image, cw=0, ch=0):
if self.__topimage: if self.__topimage:
self.__topimage.destroy() self.__topimage.destroy()
@ -523,60 +526,54 @@ class MfxCanvas(gnomecanvas.Canvas):
self.__topimage = self.root().add(gnomecanvas.CanvasPixbuf, self.__topimage = self.root().add(gnomecanvas.CanvasPixbuf,
pixbuf=pixbuf, x=x-dx, y=y-dy) pixbuf=pixbuf, x=x-dx, y=y-dy)
def update_idletasks(self): def update_idletasks(self):
##print 'MfxCanvas.update_idletasks' # print 'MfxCanvas.update_idletasks'
#gdk.window_process_all_updates() # gdk.window_process_all_updates()
#self.show_now() # self.show_now()
# FIXME # FIXME
##if self.__topimage: # if self.__topimage:
## self.__topimage.raise_to_top() # self.__topimage.raise_to_top()
self.update_now() self.update_now()
pass pass
def updateAll(self): def updateAll(self):
print 'Canvas - updateAll', print('Canvas - updateAll')
for i in self._all_items: for i in self._all_items:
i._item.hide() i._item.hide()
self.update_now() self.update_now()
n = 0 n = 0
for i in self._all_items: for i in self._all_items:
i._item.show() i._item.show()
print n, i print(n, i)
n += 1 n += 1
self.update_now() self.update_now()
#self.window.invalidate_rect((0, 0, 400, 400), True) # self.window.invalidate_rect((0, 0, 400, 400), True)
def grid(self, *args, **kw): def grid(self, *args, **kw):
self.top.table.attach(self, self.top.table.attach(
self,
1, 2, 2, 3, 1, 2, 2, 3,
gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL | gtk.SHRINK, gtk.EXPAND | gtk.FILL, gtk.EXPAND | gtk.FILL | gtk.SHRINK,
0, 0) 0, 0)
self.show() self.show()
def setInitialSize(self, width, height): def setInitialSize(self, width, height):
##print 'setInitialSize:', width, height # print 'setInitialSize:', width, height
self._width, self._height = width, height self._width, self._height = width, height
self.set_size_request(width, height) self.set_size_request(width, height)
#self.set_size(width, height) # self.set_size(width, height)
#self.queue_resize() # self.queue_resize()
def destroyEvent(self, w): def destroyEvent(self, w):
#print 'MfxCanvas.destroyEvent' # print 'MfxCanvas.destroyEvent'
self.hide() self.hide()
## self.deleteAllItems() # self.deleteAllItems()
## if self.__topimage: # if self.__topimage:
## self.__topimage.destroy() # self.__topimage.destroy()
## self.__topimage = None # self.__topimage = None
class MfxScrolledCanvas(MfxCanvas): class MfxScrolledCanvas(MfxCanvas):
def __init__(self, parent, hbar=2, vbar=2, **kw): def __init__(self, parent, hbar=2, vbar=2, **kw):
MfxCanvas.__init__(self, parent) MfxCanvas.__init__(self, parent)
self.canvas = self self.canvas = self

View file

@ -23,22 +23,19 @@
# imports # imports
##import sys # import sys
from gtk import gdk from gtk import gdk
from gtk import ANCHOR_NW, ANCHOR_SW, ANCHOR_NE, ANCHOR_SE
# ************************************************************************ # ************************************************************************
# * constants # * constants
# ************************************************************************ # ************************************************************************
EVENT_HANDLED = 1 EVENT_HANDLED = 1
EVENT_PROPAGATE = 0 EVENT_PROPAGATE = 0
CURSOR_DRAG = gdk.HAND1 CURSOR_DRAG = gdk.HAND1
CURSOR_WATCH = gdk.WATCH CURSOR_WATCH = gdk.WATCH
CURSOR_DOWN_ARROW = gdk.SB_DOWN_ARROW CURSOR_DOWN_ARROW = gdk.SB_DOWN_ARROW
TOOLBAR_BUTTONS = ( TOOLBAR_BUTTONS = (
@ -56,4 +53,3 @@ TOOLBAR_BUTTONS = (
"quit", "quit",
"player", "player",
) )

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/[cm]*/*.py ./pysollib/pysolgtk/[a-s]*.py') ); grep { not($_ eq './pysollib/pysoltk.py') } glob('./pysollib/*.py ./pysollib/[cm]*/*.py ./pysollib/pysolgtk/{[a-s]*,t[a-i]*,tkc*}.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." );