diff --git a/pysollib/pysolgtk/menubar.py b/pysollib/pysolgtk/menubar.py index 1e0beb51..42c5447b 100644 --- a/pysollib/pysolgtk/menubar.py +++ b/pysollib/pysolgtk/menubar.py @@ -271,6 +271,7 @@ class PysolMenubar(PysolMenubarActions): ('Shrink face-down cards', '', 'shrink_face_down', True), ('Shade &filled stacks', '', 'shade_filled_stacks', True), ('Show &number of cards', '', 'num_cards', False), + ('Use mouse for undo/redo', '', 'mouse_undo', False), ('&Demo logo', '', 'demo_logo', False), ('Startup splash sc&reen', '', 'splashscreen', False), ('&Show removed tiles (in Mahjongg games)', '', 'mahjongg_show_removed', True), @@ -403,6 +404,8 @@ class PysolMenubar(PysolMenubarActions): + + @@ -489,6 +492,7 @@ class PysolMenubar(PysolMenubarActions): return submenu def _addGamesMenuItem(self, menu, gi, short_name=False): + if not gi: return if short_name: label = gi.short_name else: diff --git a/pysollib/pysolgtk/tkcanvas.py b/pysollib/pysolgtk/tkcanvas.py index 839370fe..cf780a72 100644 --- a/pysollib/pysolgtk/tkcanvas.py +++ b/pysollib/pysolgtk/tkcanvas.py @@ -51,11 +51,12 @@ # imports import os, sys, types -import gobject -import gtk, pango -from gtk import gdk -import gnome.canvas -TRUE, FALSE = True, False +import gobject, gtk +gdk = gtk.gdk +try: + import gnomecanvas +except ImportError: + import gnome.canvas as gnomecanvas # toolkit imports from tkutil import anchor_tk2gtk, loadImage, bind, create_pango_font_desc @@ -155,7 +156,7 @@ class _CanvasItem: class MfxCanvasGroup(_CanvasItem): def __init__(self, canvas): _CanvasItem.__init__(self, canvas) - self._item = canvas.root().add(gnome.canvas.CanvasGroup, x=0, y=0) + self._item = canvas.root().add(gnomecanvas.CanvasGroup, x=0, y=0) class MfxCanvasImage(_CanvasItem): @@ -169,7 +170,7 @@ class MfxCanvasImage(_CanvasItem): group = group._item else: group = canvas.root() - self._item = group.add(gnome.canvas.CanvasPixbuf, + self._item = group.add(gnomecanvas.CanvasPixbuf, x=x, y=y, pixbuf=image.pixbuf, width=image.width(), @@ -207,7 +208,7 @@ class MfxCanvasLine(_CanvasItem): group = kw['group']._item else: group = canvas.root() - self._item = group.add(gnome.canvas.CanvasLine, + self._item = group.add(gnomecanvas.CanvasLine, points=points, **kwargs) self._item.show() @@ -226,7 +227,7 @@ class MfxCanvasRectangle(_CanvasItem): group = group._item else: group = canvas.root() - self._item = group.add(gnome.canvas.CanvasRect, **kw) + self._item = group.add(gnomecanvas.CanvasRect, **kw) self._item.show() @@ -246,7 +247,7 @@ class MfxCanvasText(_CanvasItem): del kw['group'] else: group = canvas.root() - self._item = group.add(gnome.canvas.CanvasText, + self._item = group.add(gnomecanvas.CanvasText, x=x, y=y, anchor=anchor) if not kw.has_key('fill'): kw['fill'] = canvas._text_color @@ -284,7 +285,7 @@ class MfxCanvasText(_CanvasItem): # // canvas # ************************************************************************/ -class MfxCanvas(gnome.canvas.Canvas): +class MfxCanvas(gnomecanvas.Canvas): def __init__(self, top, bg=None, highlightthickness=0): self.preview = 0 # Tkinter compat @@ -301,7 +302,7 @@ class MfxCanvas(gnome.canvas.Canvas): # friend MfxCanvasText self._text_color = '#000000' # - gnome.canvas.Canvas.__init__(self) + gnomecanvas.Canvas.__init__(self) c = top.style.bg[gtk.STATE_NORMAL] c = '#%02x%02x%02x' % (c.red/256, c.green/256, c.blue/256) self.top_bg = c @@ -513,7 +514,7 @@ class MfxCanvas(gnome.canvas.Canvas): x += w y += h - w = self.root().add(gnome.canvas.CanvasPixbuf, + w = self.root().add(gnomecanvas.CanvasPixbuf, pixbuf=bg_pixbuf, x=0-dx, y=0-dy) w.lower_to_bottom() self.__tileimage = w @@ -534,7 +535,7 @@ class MfxCanvas(gnome.canvas.Canvas): x, y = (w-iw)/2, (h-ih)/2 dx, dy = self.world_to_window(0, 0) dx, dy = int(dx), int(dy) - self.__topimage = self.root().add(gnome.canvas.CanvasPixbuf, + self.__topimage = self.root().add(gnomecanvas.CanvasPixbuf, pixbuf=pixbuf, x=x-dx, y=y-dy) diff --git a/pysollib/pysolgtk/tkutil.py b/pysollib/pysolgtk/tkutil.py index c695c833..162c2f31 100644 --- a/pysollib/pysolgtk/tkutil.py +++ b/pysollib/pysolgtk/tkutil.py @@ -115,7 +115,6 @@ def color_gtk2tk(col): # ************************************************************************/ - class _PysolPixmap: def __init__(self, file=None, pixbuf=None, width=0, height=0, fill=None, outline=None): @@ -126,6 +125,16 @@ class _PysolPixmap: else: self.pixbuf = gdk.Pixbuf(gdk.COLORSPACE_RGB, True, 8, width, height) + if fill: + c = gdk.color_parse(fill) + c = '%02x%02x%02xffL' % (c.red, c.green, c.blue) + self.pixbuf.fill(int(c, 16)) + else: + self.pixbuf.fill(0) + if outline: + # FIXME + pass + def clone(self): pixbuf = self.pixbuf.copy() @@ -241,7 +250,7 @@ def _wrap_event(widget, event, l): def bind(widget, sequence, func, add=None): wrap = _wrap_handlers.get(sequence) if not wrap: - print "NOT BOUND:", sequence + ##print "NOT BOUND:", sequence return wrap, signal = wrap #