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

Stuck notification option.

This commit is contained in:
Joe R 2022-07-28 18:56:41 -04:00
parent 6fe410ac24
commit 02e62afb16
11 changed files with 141 additions and 5 deletions

View file

@ -3,7 +3,7 @@ msgstr ""
"Project-Id-Version: PySol 0.0.1\n" "Project-Id-Version: PySol 0.0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-07-17 09:21-0400\n" "PO-Revision-Date: 2022-07-28 18:52-0400\n"
"Last-Translator: H. Schaekel <Holger.Schaekel@web.de>\n" "Last-Translator: H. Schaekel <Holger.Schaekel@web.de>\n"
"Language-Team: German\n" "Language-Team: German\n"
"Language: de\n" "Language: de\n"
@ -1964,6 +1964,14 @@ msgid ""
"Game finished, but not without my help...\n" "Game finished, but not without my help...\n"
msgstr "" msgstr ""
msgid "You are Stuck"
msgstr ""
msgid ""
"\n"
"There are no moves left...\n"
msgstr ""
#: pysollib/game/__init__.py:2046 #: pysollib/game/__init__.py:2046
msgid "&Restart" msgid "&Restart"
msgstr "Neusta&rt" msgstr "Neusta&rt"
@ -2445,6 +2453,9 @@ msgstr "Gleichen Rang hervorheben"
msgid "Highlight no matching" msgid "Highlight no matching"
msgstr "Nicht passende hervorheben" msgstr "Nicht passende hervorheben"
msgid "Stuck notification"
msgstr ""
#: pysollib/kivy/menubar.py:583 #: pysollib/kivy/menubar.py:583
msgid "Show removed tiles (in Mahjongg games)" msgid "Show removed tiles (in Mahjongg games)"
msgstr "Zeige entfernte Steine (in Mahjongg)" msgstr "Zeige entfernte Steine (in Mahjongg)"
@ -4829,6 +4840,9 @@ msgstr "Gleichen Rang hervorheben:"
msgid "Highlight &no matching" msgid "Highlight &no matching"
msgstr "Keine passenden hervorheben:" msgstr "Keine passenden hervorheben:"
msgid "Stuc&k notification"
msgstr ""
#: pysollib/ui/tktile/menubar.py:508 #: pysollib/ui/tktile/menubar.py:508
msgid "&Show removed tiles (in Mahjongg games)" msgid "&Show removed tiles (in Mahjongg games)"
msgstr "" msgstr ""

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: 1.02\n" "Project-Id-Version: 1.02\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-07-17 09:19-0400\n" "PO-Revision-Date: 2022-07-28 18:52-0400\n"
"Last-Translator: Eric Rausch <neelix570@gmail.com>\n" "Last-Translator: Eric Rausch <neelix570@gmail.com>\n"
"Language-Team: French\n" "Language-Team: French\n"
"Language: fr\n" "Language: fr\n"
@ -1996,6 +1996,14 @@ msgstr ""
"\n" "\n"
"Jeu terminé, mais pas sans mon aide...\n" "Jeu terminé, mais pas sans mon aide...\n"
msgid "You are Stuck"
msgstr ""
msgid ""
"\n"
"There are no moves left...\n"
msgstr ""
#: pysollib/game/__init__.py:2046 #: pysollib/game/__init__.py:2046
msgid "&Restart" msgid "&Restart"
msgstr "&Redémarrer" msgstr "&Redémarrer"
@ -2487,6 +2495,9 @@ msgstr "Surbrillance des équivalents"
msgid "Highlight no matching" msgid "Highlight no matching"
msgstr "Surbrillance sans correspondance" msgstr "Surbrillance sans correspondance"
msgid "Stuck notification"
msgstr ""
#: pysollib/kivy/menubar.py:583 #: pysollib/kivy/menubar.py:583
msgid "Show removed tiles (in Mahjongg games)" msgid "Show removed tiles (in Mahjongg games)"
msgstr "Montrer tuiles retirées (Mahjongg)" msgstr "Montrer tuiles retirées (Mahjongg)"
@ -4874,6 +4885,9 @@ msgstr "Surbrillance des &équivalents"
msgid "Highlight &no matching" msgid "Highlight &no matching"
msgstr "Surbrilla&nce incorrectes" msgstr "Surbrilla&nce incorrectes"
msgid "Stuc&k notification"
msgstr ""
#: pysollib/ui/tktile/menubar.py:508 #: pysollib/ui/tktile/menubar.py:508
msgid "&Show removed tiles (in Mahjongg games)" msgid "&Show removed tiles (in Mahjongg games)"
msgstr "Montrer tuiles retirées (Mahjongg)" msgstr "Montrer tuiles retirées (Mahjongg)"

View file

@ -12,7 +12,7 @@ msgstr ""
"Project-Id-Version: it_pysol\n" "Project-Id-Version: it_pysol\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-07-17 09:19-0400\n" "PO-Revision-Date: 2022-07-28 18:52-0400\n"
"Last-Translator: Giuliano Colla <giuliano.colla@gmail.com>\n" "Last-Translator: Giuliano Colla <giuliano.colla@gmail.com>\n"
"Language-Team: Italiano <it@li.org>\n" "Language-Team: Italiano <it@li.org>\n"
"Language: it\n" "Language: it\n"
@ -2004,6 +2004,14 @@ msgstr ""
"\n" "\n"
"Gioco terminato, ma non senza il mio aiuto...\n" "Gioco terminato, ma non senza il mio aiuto...\n"
msgid "You are Stuck"
msgstr ""
msgid ""
"\n"
"There are no moves left...\n"
msgstr ""
#: pysollib/game/__init__.py:2046 #: pysollib/game/__init__.py:2046
msgid "&Restart" msgid "&Restart"
msgstr "&Ricomincia" msgstr "&Ricomincia"
@ -2504,6 +2512,9 @@ msgstr "Abilita evidenzia stesso valo&re"
msgid "Highlight no matching" msgid "Highlight no matching"
msgstr "Abilita non corrispondenti" msgstr "Abilita non corrispondenti"
msgid "Stuck notification"
msgstr ""
#: pysollib/kivy/menubar.py:583 #: pysollib/kivy/menubar.py:583
#, fuzzy #, fuzzy
msgid "Show removed tiles (in Mahjongg games)" msgid "Show removed tiles (in Mahjongg games)"
@ -4940,6 +4951,9 @@ msgstr "Abilita evidenzia stesso valo&re"
msgid "Highlight &no matching" msgid "Highlight &no matching"
msgstr "Abilita non corrispondenti" msgstr "Abilita non corrispondenti"
msgid "Stuc&k notification"
msgstr ""
#: pysollib/ui/tktile/menubar.py:508 #: pysollib/ui/tktile/menubar.py:508
msgid "&Show removed tiles (in Mahjongg games)" msgid "&Show removed tiles (in Mahjongg games)"
msgstr "Mo&stra tessere tolte (in Mahjongg)" msgstr "Mo&stra tessere tolte (in Mahjongg)"

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-07-17 09:19-0400\n" "PO-Revision-Date: 2022-07-28 18:53-0400\n"
"Last-Translator: Jerzy Trzeciak <artusek@wp.pl>\n" "Last-Translator: Jerzy Trzeciak <artusek@wp.pl>\n"
"Language-Team: Polish <pl@li.org>\n" "Language-Team: Polish <pl@li.org>\n"
"Language: pl\n" "Language: pl\n"
@ -2017,6 +2017,14 @@ msgstr ""
"\n" "\n"
"Gra zakończona, ale nie bez mojej pomocy...\n" "Gra zakończona, ale nie bez mojej pomocy...\n"
msgid "You are Stuck"
msgstr ""
msgid ""
"\n"
"There are no moves left...\n"
msgstr ""
#: pysollib/game/__init__.py:2046 #: pysollib/game/__init__.py:2046
msgid "&Restart" msgid "&Restart"
msgstr "U&ruchom ponownie" msgstr "U&ruchom ponownie"
@ -2541,6 +2549,9 @@ msgstr "Podświetlaj karty o jednakowej sile"
msgid "Highlight no matching" msgid "Highlight no matching"
msgstr "Podświetlaj brak dopasowa&nia" msgstr "Podświetlaj brak dopasowa&nia"
msgid "Stuck notification"
msgstr ""
#: pysollib/kivy/menubar.py:583 #: pysollib/kivy/menubar.py:583
#, fuzzy #, fuzzy
msgid "Show removed tiles (in Mahjongg games)" msgid "Show removed tiles (in Mahjongg games)"
@ -5000,6 +5011,9 @@ msgstr "Podświetlaj karty o jednakowej sile"
msgid "Highlight &no matching" msgid "Highlight &no matching"
msgstr "Podświetlaj brak dopasowa&nia" msgstr "Podświetlaj brak dopasowa&nia"
msgid "Stuc&k notification"
msgstr ""
#: pysollib/ui/tktile/menubar.py:508 #: pysollib/ui/tktile/menubar.py:508
msgid "&Show removed tiles (in Mahjongg games)" msgid "&Show removed tiles (in Mahjongg games)"
msgstr "Pokaż u&sunięte klocki (w grach Mahjongg)" msgstr "Pokaż u&sunięte klocki (w grach Mahjongg)"

View file

@ -1870,6 +1870,14 @@ msgid ""
"Game finished, but not without my help...\n" "Game finished, but not without my help...\n"
msgstr "" msgstr ""
msgid "You are Stuck"
msgstr ""
msgid ""
"\n"
"There are no moves left...\n"
msgstr ""
#: pysollib/game/__init__.py:2046 #: pysollib/game/__init__.py:2046
msgid "&Restart" msgid "&Restart"
msgstr "" msgstr ""
@ -2322,6 +2330,9 @@ msgstr ""
msgid "Highlight no matching" msgid "Highlight no matching"
msgstr "" msgstr ""
msgid "Stuck notification"
msgstr ""
#: pysollib/kivy/menubar.py:583 #: pysollib/kivy/menubar.py:583
msgid "Show removed tiles (in Mahjongg games)" msgid "Show removed tiles (in Mahjongg games)"
msgstr "" msgstr ""
@ -4629,6 +4640,9 @@ msgstr ""
msgid "Highlight &no matching" msgid "Highlight &no matching"
msgstr "" msgstr ""
msgid "Stuc&k notification"
msgstr ""
#: pysollib/ui/tktile/menubar.py:508 #: pysollib/ui/tktile/menubar.py:508
msgid "&Show removed tiles (in Mahjongg games)" msgid "&Show removed tiles (in Mahjongg games)"
msgstr "" msgstr ""

View file

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-12-10 10:19-0500\n" "POT-Creation-Date: 2021-12-10 10:19-0500\n"
"PO-Revision-Date: 2022-07-17 09:18-0400\n" "PO-Revision-Date: 2022-07-28 18:53-0400\n"
"Last-Translator: Skomoroh <skomoroh@gmail.com>\n" "Last-Translator: Skomoroh <skomoroh@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
"Language: ru\n" "Language: ru\n"
@ -2003,6 +2003,14 @@ msgstr ""
"\n" "\n"
"Игра закончена, но не без моей помощи...\n" "Игра закончена, но не без моей помощи...\n"
msgid "You are Stuck"
msgstr ""
msgid ""
"\n"
"There are no moves left...\n"
msgstr ""
#: pysollib/game/__init__.py:2046 #: pysollib/game/__init__.py:2046
msgid "&Restart" msgid "&Restart"
msgstr "&Начало" msgstr "&Начало"
@ -2517,6 +2525,9 @@ msgstr "Разрешить показывать карты &одного дос
msgid "Highlight no matching" msgid "Highlight no matching"
msgstr "Подсветка отсутствия &совпадения" msgstr "Подсветка отсутствия &совпадения"
msgid "Stuck notification"
msgstr ""
#: pysollib/kivy/menubar.py:583 #: pysollib/kivy/menubar.py:583
#, fuzzy #, fuzzy
msgid "Show removed tiles (in Mahjongg games)" msgid "Show removed tiles (in Mahjongg games)"
@ -4964,6 +4975,9 @@ msgstr "Разрешить показывать карты &одного дос
msgid "Highlight &no matching" msgid "Highlight &no matching"
msgstr "Подсветка отсутствия &совпадения" msgstr "Подсветка отсутствия &совпадения"
msgid "Stuc&k notification"
msgstr ""
#: pysollib/ui/tktile/menubar.py:508 #: pysollib/ui/tktile/menubar.py:508
msgid "&Show removed tiles (in Mahjongg games)" msgid "&Show removed tiles (in Mahjongg games)"
msgstr "Показывать удалённые (в Маджонг)" msgstr "Показывать удалённые (в Маджонг)"

View file

@ -517,6 +517,7 @@ class Game(object):
self.busy = 0 self.busy = 0
self.pause = False self.pause = False
self.finished = False self.finished = False
self.stuck = False
self.version = VERSION self.version = VERSION
self.version_tuple = VERSION_TUPLE self.version_tuple = VERSION_TUPLE
self.cards = [] self.cards = []
@ -780,6 +781,7 @@ class Game(object):
def newGame(self, random=None, restart=0, autoplay=1, shuffle=True, def newGame(self, random=None, restart=0, autoplay=1, shuffle=True,
dealer=None): dealer=None):
self.finished = False self.finished = False
self.stuck = False
old_busy, self.busy = self.busy, 1 old_busy, self.busy = self.busy, 1
self.setCursor(cursor=CURSOR_WATCH) self.setCursor(cursor=CURSOR_WATCH)
self.stopWinAnimation() self.stopWinAnimation()
@ -2855,8 +2857,29 @@ class Game(object):
return return
if self.getStuck(): if self.getStuck():
text = '' text = ''
self.stuck = False
else: else:
text = 'x' text = 'x'
if (not self.stuck and not self.demo and
self.app.opt.stuck_notification):
self.playSample("gamelost", priority=1000)
self.updateStatus(stuck='x')
d = MfxMessageDialog(
self.top, title=_("You are Stuck"), bitmap="info",
text=_("\nThere are no moves left...\n"),
strings=(_("&New game"), _("&Restart"), None,
_("&Cancel")))
if TOOLKIT != 'kivy':
if d.status == 0 and d.button == 0:
# new game
self.endGame()
self.newGame()
return
elif d.status == 0 and d.button == 1:
# restart game
self.restartGame()
return
self.stuck = True
# self.playSample("autopilotlost", priority=1000) # self.playSample("autopilotlost", priority=1000)
self.updateStatus(stuck=text) self.updateStatus(stuck=text)

View file

@ -114,6 +114,7 @@ class LightsOut_Talon(InitialDealTalonStack):
# ************************************************************************ # ************************************************************************
class LightsOut(Game): class LightsOut(Game):
Hint_Class = None
# #
# Game layout # Game layout

View file

@ -582,6 +582,11 @@ class OptionsMenuDialog(LMenuDialog):
self.menubar.tkopt.highlight_not_matching, self.menubar.tkopt.highlight_not_matching,
self.menubar.mOptEnableHighlightNotMatching) self.menubar.mOptEnableHighlightNotMatching)
self.addCheckNode(tv, rg,
_('Stuck notification'),
self.menubar.tkopt.stuck_notification,
self.menubar.mOptEnableStuckNotification)
# submenu.add_separator() # submenu.add_separator()
self.addCheckNode(tv, rg, self.addCheckNode(tv, rg,
@ -1261,6 +1266,7 @@ class PysolMenubarTk:
highlight_cards=BooleanVar(), highlight_cards=BooleanVar(),
highlight_samerank=BooleanVar(), highlight_samerank=BooleanVar(),
highlight_not_matching=BooleanVar(), highlight_not_matching=BooleanVar(),
stuck_notification=BooleanVar(),
mahjongg_show_removed=BooleanVar(), mahjongg_show_removed=BooleanVar(),
shisen_show_hint=BooleanVar(), shisen_show_hint=BooleanVar(),
accordion_deal_all=BooleanVar(), accordion_deal_all=BooleanVar(),
@ -1323,6 +1329,7 @@ class PysolMenubarTk:
tkopt.highlight_cards.set(opt.highlight_cards) tkopt.highlight_cards.set(opt.highlight_cards)
tkopt.highlight_samerank.set(opt.highlight_samerank) tkopt.highlight_samerank.set(opt.highlight_samerank)
tkopt.highlight_not_matching.set(opt.highlight_not_matching) tkopt.highlight_not_matching.set(opt.highlight_not_matching)
tkopt.stuck_notification.set(opt.stuck_notification)
tkopt.shrink_face_down.set(opt.shrink_face_down) tkopt.shrink_face_down.set(opt.shrink_face_down)
tkopt.shade_filled_stacks.set(opt.shade_filled_stacks) tkopt.shade_filled_stacks.set(opt.shade_filled_stacks)
tkopt.mahjongg_show_removed.set(opt.mahjongg_show_removed) tkopt.mahjongg_show_removed.set(opt.mahjongg_show_removed)
@ -2071,6 +2078,12 @@ the next time you restart the %(app)s""") % {'app': TITLE})
self.tkopt.highlight_not_matching.get() self.tkopt.highlight_not_matching.get()
# self.game.updateMenus() # self.game.updateMenus()
def mOptEnableStuckNotification(self, *args):
if self._cancelDrag(break_pause=False):
return
self.app.opt.stuck_notification = self.tkopt.stuck_notification.get()
# self.game.updateMenus()
def mOptAnimations(self, *args): def mOptAnimations(self, *args):
if self._cancelDrag(break_pause=False): if self._cancelDrag(break_pause=False):
return return

View file

@ -77,6 +77,7 @@ highlight_piles = boolean
highlight_cards = boolean highlight_cards = boolean
highlight_samerank = boolean highlight_samerank = boolean
highlight_not_matching = boolean highlight_not_matching = boolean
stuck_notification = boolean
mahjongg_show_removed = boolean mahjongg_show_removed = boolean
mahjongg_create_solvable = integer(0, 2) mahjongg_create_solvable = integer(0, 2)
shisen_show_hint = boolean shisen_show_hint = boolean
@ -227,6 +228,7 @@ class Options:
('highlight_cards', 'bool'), ('highlight_cards', 'bool'),
('highlight_samerank', 'bool'), ('highlight_samerank', 'bool'),
('highlight_not_matching', 'bool'), ('highlight_not_matching', 'bool'),
('stuck_notification', 'bool'),
('mahjongg_show_removed', 'bool'), ('mahjongg_show_removed', 'bool'),
('mahjongg_create_solvable', 'int'), ('mahjongg_create_solvable', 'int'),
('shisen_show_hint', 'bool'), ('shisen_show_hint', 'bool'),
@ -316,6 +318,7 @@ class Options:
self.highlight_cards = True self.highlight_cards = True
self.highlight_samerank = True self.highlight_samerank = True
self.highlight_not_matching = True self.highlight_not_matching = True
self.stuck_notification = False
self.mahjongg_show_removed = False self.mahjongg_show_removed = False
self.mahjongg_create_solvable = 2 # 0 - none, 1 - easy, 2 - hard self.mahjongg_create_solvable = 2 # 0 - none, 1 - easy, 2 - hard
self.accordion_deal_all = True self.accordion_deal_all = True

View file

@ -222,6 +222,7 @@ class PysolMenubarTkCommon:
highlight_cards=tkinter.BooleanVar(), highlight_cards=tkinter.BooleanVar(),
highlight_samerank=tkinter.BooleanVar(), highlight_samerank=tkinter.BooleanVar(),
highlight_not_matching=tkinter.BooleanVar(), highlight_not_matching=tkinter.BooleanVar(),
stuck_notification=tkinter.BooleanVar(),
mahjongg_show_removed=tkinter.BooleanVar(), mahjongg_show_removed=tkinter.BooleanVar(),
shisen_show_hint=tkinter.BooleanVar(), shisen_show_hint=tkinter.BooleanVar(),
accordion_deal_all=tkinter.BooleanVar(), accordion_deal_all=tkinter.BooleanVar(),
@ -282,6 +283,7 @@ class PysolMenubarTkCommon:
tkopt.highlight_cards.set(opt.highlight_cards) tkopt.highlight_cards.set(opt.highlight_cards)
tkopt.highlight_samerank.set(opt.highlight_samerank) tkopt.highlight_samerank.set(opt.highlight_samerank)
tkopt.highlight_not_matching.set(opt.highlight_not_matching) tkopt.highlight_not_matching.set(opt.highlight_not_matching)
tkopt.stuck_notification.set(opt.stuck_notification)
tkopt.shrink_face_down.set(opt.shrink_face_down) tkopt.shrink_face_down.set(opt.shrink_face_down)
tkopt.shade_filled_stacks.set(opt.shade_filled_stacks) tkopt.shade_filled_stacks.set(opt.shade_filled_stacks)
tkopt.randomize_place.set(opt.randomize_place) tkopt.randomize_place.set(opt.randomize_place)
@ -588,6 +590,10 @@ class PysolMenubarTkCommon:
label=n_("Highlight &no matching"), label=n_("Highlight &no matching"),
variable=self.tkopt.highlight_not_matching, variable=self.tkopt.highlight_not_matching,
command=self.mOptEnableHighlightNotMatching) command=self.mOptEnableHighlightNotMatching)
submenu.add_checkbutton(
label=n_("Stuc&k notification"),
variable=self.tkopt.stuck_notification,
command=self.mOptEnableStuckNotification)
submenu.add_separator() submenu.add_separator()
submenu.add_checkbutton( submenu.add_checkbutton(
label=n_("&Show removed tiles (in Mahjongg games)"), label=n_("&Show removed tiles (in Mahjongg games)"),
@ -1506,6 +1512,12 @@ Unsupported game for import.
self.tkopt.highlight_not_matching.get() self.tkopt.highlight_not_matching.get()
# self.game.updateMenus() # self.game.updateMenus()
def mOptEnableStuckNotification(self, *args):
if self._cancelDrag(break_pause=False):
return
self.app.opt.stuck_notification = self.tkopt.stuck_notification.get()
# self.game.updateMenus()
def mOptAnimations(self, *args): def mOptAnimations(self, *args):
if self._cancelDrag(break_pause=False): if self._cancelDrag(break_pause=False):
return return