diff --git a/pysollib/app.py b/pysollib/app.py index 78665c2b..390c9e10 100644 --- a/pysollib/app.py +++ b/pysollib/app.py @@ -966,6 +966,8 @@ class Application: # try Klondike if current game fails if id == 2: raise # internal error? + if DEBUG: + raise traceback.print_exc() self.nextgame.id = 2 self.freeGame() diff --git a/pysollib/customgame.py b/pysollib/customgame.py index 7b1a870a..9adc968d 100644 --- a/pysollib/customgame.py +++ b/pysollib/customgame.py @@ -142,7 +142,7 @@ class CustomGame(Game): else: layout_kw['reserve_class'] = StackWrapper(OpenStack, **kw) if s['talon'] is DealReserveRedealTalonStack or \ - s['reserves_max_accept'] > 1: + s['reserves_max_accept'] > 1 or s['deal_to_reserves'] > 1: layout_kw['reserve_texts'] = True # waste diff --git a/pysollib/game.py b/pysollib/game.py index 91130a7a..074dd7f4 100644 --- a/pysollib/game.py +++ b/pysollib/game.py @@ -1444,7 +1444,7 @@ class Game: return self.app.images.getFace(deck, suit, rank) def getCardBackImage(self, deck, suit, rank): - return self.app.images.getBack(deck, suit, rank) + return self.app.images.getBack() def getCardShadeImage(self): return self.app.images.getShade() @@ -2276,11 +2276,15 @@ for %d moves. status = 2 elif player_moves == 0: self.playSample("autopilotwon", priority=1000) - s = self.app.miscrandom.choice((_("&Great"), _("&Cool"), _("&Yeah"), _("&Wow"))) # ??? accelerators + s = self.app.miscrandom.choice((_("&Great"), _("&Cool"), + _("&Yeah"), _("&Wow"))) d = MfxMessageDialog(self.top, title=PACKAGE+_(" Autopilot"), - text=_("\nGame solved in %d moves.\n") % self.moves.index, - image=self.app.gimages.logos[4], strings=(s,), - separatorwidth=2, timeout=timeout) + text=_("\nGame solved in %d moves.\n") % + self.moves.index, + image=self.app.gimages.logos[4], + strings=(s,), + separator=True, + timeout=timeout) status = d.status else: ##s = self.app.miscrandom.choice((_("&OK"), _("&OK"))) diff --git a/pysollib/images.py b/pysollib/images.py index d97ab6ec..7dc1a202 100644 --- a/pysollib/images.py +++ b/pysollib/images.py @@ -90,6 +90,7 @@ class Images: self._xshadow = [] self._shade = [] self._shadow_cards = {} # key: (suit, rank) + self._shadow_back = None self._pil_shadow = {} # key: (width, height) self._pil_shadow_image = None @@ -252,7 +253,9 @@ class Images: ##print "getFace:", suit, rank, index return self._card[index % self.cs.ncards] - def getBack(self, deck, suit, rank): + def getBack(self, update=False): + if update: + self._shadow_back = None index = self.cs.backindex % len(self._back) return self._back[index].image @@ -372,6 +375,14 @@ class Images: return self.getShade() return shade + def getShadowBack(self): + if self._shadow_back: + return self._shadow_back + image = self.getBack() + shade = shadowImage(image) + self._shadow_back = shade + return shade + def getCardbacks(self): return self._back diff --git a/pysollib/pysolgtk/card.py b/pysollib/pysolgtk/card.py index 7d9f5e10..860a6460 100644 --- a/pysollib/pysolgtk/card.py +++ b/pysollib/pysolgtk/card.py @@ -68,7 +68,7 @@ class _OneImageCard(_HideableCard): _HideableCard.__init__(self, id, deck, suit, rank, game, x=x, y=y) images = game.app.images self.__face_image = images.getFace(deck, suit, rank) - self.__back_image = images.getBack(deck, suit, rank) + self.__back_image = images.getBack() self.__image = MfxCanvasImage(game.canvas, self.x, self.y, image=self.__back_image, anchor=gtk.ANCHOR_NW) @@ -106,8 +106,12 @@ class _TwoImageCard(_HideableCard): _HideableCard.__init__(self, id, deck, suit, rank, game, x=x, y=y) images = game.app.images self.item = MfxCanvasGroup(game.canvas) - self.__face = MfxCanvasImage(game.canvas, self.x, self.y, image=images.getFace(deck, suit, rank), anchor='nw') - self.__back = MfxCanvasImage(game.canvas, self.x, self.y, image=images.getBack(deck, suit, rank), anchor='nw') + self.__face = MfxCanvasImage(game.canvas, self.x, self.y, + image=images.getFace(deck, suit, rank), + anchor='nw') + self.__back = MfxCanvasImage(game.canvas, self.x, self.y, + image=images.getBack(), + anchor='nw') self.__face.addtag(self.item) self.__back.addtag(self.item) self.__face.hide() diff --git a/pysollib/resource.py b/pysollib/resource.py index 10f1942e..e01a0bac 100644 --- a/pysollib/resource.py +++ b/pysollib/resource.py @@ -375,7 +375,7 @@ class Cardset(Resource): def updateCardback(self, backname=None, backindex=None): # update default back - if isinstance(backname, str): + if isinstance(backname, basestring): if backname in self.backnames: backindex = self.backnames.index(backname) if isinstance(backindex, int): diff --git a/pysollib/stack.py b/pysollib/stack.py index 9b498638..d7456887 100644 --- a/pysollib/stack.py +++ b/pysollib/stack.py @@ -1352,7 +1352,10 @@ class Stack: drag.shade_stack = sstack if sstack.cards: card = sstack.cards[-1] - img = images.getShadowCard(card.deck, card.suit, card.rank) + if card.face_up: + img = images.getShadowCard(card.deck, card.suit, card.rank) + else: + img = images.getShadowBack() else: img = images.getShade() if not img: diff --git a/pysollib/tile/menubar.py b/pysollib/tile/menubar.py index c3e994c6..ebfc44c2 100644 --- a/pysollib/tile/menubar.py +++ b/pysollib/tile/menubar.py @@ -1172,8 +1172,8 @@ class PysolMenubar(PysolMenubarActions): if cs.backindex == old_index: return self.app.updateCardset(self.game.id) + image = self.app.images.getBack(update=True) for card in self.game.cards: - image = self.app.images.getBack(card.deck, card.suit, card.rank) card.updateCardBackground(image=image) self.app.canvas.update_idletasks() self.tkopt.cardback.set(cs.backindex) diff --git a/pysollib/tk/menubar.py b/pysollib/tk/menubar.py index 6378cfdd..ee74e595 100644 --- a/pysollib/tk/menubar.py +++ b/pysollib/tk/menubar.py @@ -1181,8 +1181,8 @@ class PysolMenubar(PysolMenubarActions): if cs.backindex == old_index: return self.app.updateCardset(self.game.id) + image = self.app.images.getBack(update=True) for card in self.game.cards: - image = self.app.images.getBack(card.deck, card.suit, card.rank) card.updateCardBackground(image=image) self.app.canvas.update_idletasks() self.tkopt.cardback.set(cs.backindex) diff --git a/pysollib/wizardutil.py b/pysollib/wizardutil.py index ed6b0840..f6e452c2 100644 --- a/pysollib/wizardutil.py +++ b/pysollib/wizardutil.py @@ -284,7 +284,7 @@ DealFaceUp = WizSetting( var_name = 'deal_face_up', ) DealToReseves = WizSetting( - values_map = (0, 20), + values_map = (0, 208), default = 0, widget = 'spin', label = _('# of cards dealt to the reserve:'),