mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-05 00:02:29 -04:00
Compare commits
No commits in common. "d7d9bb3ea6e425132e3e827aa5983b6dae72bc91" and "0135e386c264e0c6b50cb328d38547d16799cb77" have entirely different histories.
d7d9bb3ea6
...
0135e386c2
16 changed files with 18 additions and 76 deletions
Binary file not shown.
Before Width: | Height: | Size: 829 B |
Binary file not shown.
Before Width: | Height: | Size: 398 B |
|
@ -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: 2024-11-16 11:21-0500\n"
|
"PO-Revision-Date: 2024-11-10 18:26-0500\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"
|
||||||
|
@ -111,9 +111,6 @@ msgstr "&Nächste Nummer"
|
||||||
msgid "&Cancel"
|
msgid "&Cancel"
|
||||||
msgstr "&Abbruch"
|
msgstr "&Abbruch"
|
||||||
|
|
||||||
msgid "C&lear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pysollib/actions.py:311
|
#: pysollib/actions.py:311
|
||||||
msgid "Select random game"
|
msgid "Select random game"
|
||||||
msgstr "Zufallsspiel auswählen"
|
msgstr "Zufallsspiel auswählen"
|
||||||
|
|
|
@ -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: 2024-11-16 11:21-0500\n"
|
"PO-Revision-Date: 2024-11-10 18:25-0500\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"
|
||||||
|
@ -116,9 +116,6 @@ msgstr "&Numéro suivant"
|
||||||
msgid "&Cancel"
|
msgid "&Cancel"
|
||||||
msgstr "&Annuler"
|
msgstr "&Annuler"
|
||||||
|
|
||||||
msgid "C&lear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pysollib/actions.py:311
|
#: pysollib/actions.py:311
|
||||||
msgid "Select random game"
|
msgid "Select random game"
|
||||||
msgstr "Jeu au hasard"
|
msgstr "Jeu au hasard"
|
||||||
|
|
|
@ -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: 2024-11-16 11:21-0500\n"
|
"PO-Revision-Date: 2024-11-10 18:25-0500\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"
|
||||||
|
@ -121,9 +121,6 @@ msgstr "&Numero successivo"
|
||||||
msgid "&Cancel"
|
msgid "&Cancel"
|
||||||
msgstr "&Cancella"
|
msgstr "&Cancella"
|
||||||
|
|
||||||
msgid "C&lear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pysollib/actions.py:311
|
#: pysollib/actions.py:311
|
||||||
msgid "Select random game"
|
msgid "Select random game"
|
||||||
msgstr "Un gioco a caso"
|
msgstr "Un gioco a caso"
|
||||||
|
|
|
@ -8,7 +8,7 @@ msgstr ""
|
||||||
"Project-Id-Version: PySolFC\n"
|
"Project-Id-Version: PySolFC\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: 2024-11-16 11:22-0500\n"
|
"PO-Revision-Date: 2024-11-10 18:25-0500\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"
|
||||||
|
@ -117,9 +117,6 @@ msgstr "&Następny numer"
|
||||||
msgid "&Cancel"
|
msgid "&Cancel"
|
||||||
msgstr "Anuluj"
|
msgstr "Anuluj"
|
||||||
|
|
||||||
msgid "C&lear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pysollib/actions.py:311
|
#: pysollib/actions.py:311
|
||||||
msgid "Select random game"
|
msgid "Select random game"
|
||||||
msgstr "Wybierz grę losowo"
|
msgstr "Wybierz grę losowo"
|
||||||
|
|
|
@ -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: 2024-11-16 11:23-0500\n"
|
"PO-Revision-Date: 2024-11-10 18:26-0500\n"
|
||||||
"Last-Translator: Matheus Knack <mtknack555@gmail.com>\n"
|
"Last-Translator: Matheus Knack <mtknack555@gmail.com>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
|
@ -116,9 +116,6 @@ msgstr "&próximo número"
|
||||||
msgid "&Cancel"
|
msgid "&Cancel"
|
||||||
msgstr "&Cancelar"
|
msgstr "&Cancelar"
|
||||||
|
|
||||||
msgid "C&lear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pysollib/actions.py:311
|
#: pysollib/actions.py:311
|
||||||
msgid "Select random game"
|
msgid "Select random game"
|
||||||
msgstr "Selecionar jogo aleatório"
|
msgstr "Selecionar jogo aleatório"
|
||||||
|
|
|
@ -113,9 +113,6 @@ msgstr ""
|
||||||
msgid "&Cancel"
|
msgid "&Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "C&lear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pysollib/actions.py:311
|
#: pysollib/actions.py:311
|
||||||
msgid "Select random game"
|
msgid "Select random game"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
@ -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: 2024-11-16 11:23-0500\n"
|
"PO-Revision-Date: 2024-11-10 18:24-0500\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"
|
||||||
|
@ -117,9 +117,6 @@ msgstr "&Следующий номер"
|
||||||
msgid "&Cancel"
|
msgid "&Cancel"
|
||||||
msgstr "От&мена"
|
msgstr "От&мена"
|
||||||
|
|
||||||
msgid "C&lear"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: pysollib/actions.py:311
|
#: pysollib/actions.py:311
|
||||||
msgid "Select random game"
|
msgid "Select random game"
|
||||||
msgstr "Выбор случайной игры"
|
msgstr "Выбор случайной игры"
|
||||||
|
|
|
@ -567,7 +567,6 @@ class Application:
|
||||||
(_('&Next number'), 'next'),
|
(_('&Next number'), 'next'),
|
||||||
(_('&Play'), 'next'),
|
(_('&Play'), 'next'),
|
||||||
(_('&Play this game'), 'next'),
|
(_('&Play this game'), 'next'),
|
||||||
(_('C&lear'), 'clear'),
|
|
||||||
(_('&Solid color...'), 'color'),
|
(_('&Solid color...'), 'color'),
|
||||||
(_('&Save to file'), 'save'),
|
(_('&Save to file'), 'save'),
|
||||||
(_('&Statistics...'), 'statistics'),
|
(_('&Statistics...'), 'statistics'),
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
|
|
||||||
from pysollib.game import Game
|
from pysollib.game import Game
|
||||||
from pysollib.gamedb import GI, GameInfo, registerGame
|
from pysollib.gamedb import GI, GameInfo, registerGame
|
||||||
from pysollib.hint import AbstractHint
|
|
||||||
from pysollib.layout import Layout
|
from pysollib.layout import Layout
|
||||||
from pysollib.stack import \
|
from pysollib.stack import \
|
||||||
OpenTalonStack, \
|
OpenTalonStack, \
|
||||||
|
@ -37,20 +36,6 @@ from pysollib.stack import \
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
|
|
||||||
class Crossword_Hint(AbstractHint):
|
|
||||||
|
|
||||||
def computeHints(self):
|
|
||||||
game = self.game
|
|
||||||
rows = game.s.rows
|
|
||||||
for i in range(len(rows)):
|
|
||||||
r = rows[i]
|
|
||||||
if r.cards:
|
|
||||||
continue
|
|
||||||
if game.isValidPlay(r.id, game.s.talon.getCard().rank + 1):
|
|
||||||
# TODO: Check a few moves ahead to get better hints.
|
|
||||||
self.addHint(5000, 1, game.s.talon, r)
|
|
||||||
|
|
||||||
|
|
||||||
class Crossword_RowStack(ReserveStack):
|
class Crossword_RowStack(ReserveStack):
|
||||||
def clickHandler(self, event):
|
def clickHandler(self, event):
|
||||||
if (not self.cards and self.game.s.talon.cards and
|
if (not self.cards and self.game.s.talon.cards and
|
||||||
|
@ -100,7 +85,7 @@ class Crossword(Game):
|
||||||
Talon_Class = OpenTalonStack
|
Talon_Class = OpenTalonStack
|
||||||
RowStack_Class = StackWrapper(Crossword_RowStack, max_move=0)
|
RowStack_Class = StackWrapper(Crossword_RowStack, max_move=0)
|
||||||
FinalCards_Class = StackWrapper(Crossword_FinalCard, max_move=0)
|
FinalCards_Class = StackWrapper(Crossword_FinalCard, max_move=0)
|
||||||
Hint_Class = Crossword_Hint
|
Hint_Class = None
|
||||||
|
|
||||||
#
|
#
|
||||||
# game layout
|
# game layout
|
||||||
|
|
|
@ -548,10 +548,6 @@ class SelectCardsetDialogWithPreview(MfxDialog):
|
||||||
d = SelectCardsetAdvancedSearch(self.top, _("Advanced search"),
|
d = SelectCardsetAdvancedSearch(self.top, _("Advanced search"),
|
||||||
self.criteria, self.manager)
|
self.criteria, self.manager)
|
||||||
if d.status == 0 and d.button == 0:
|
if d.status == 0 and d.button == 0:
|
||||||
self.criteria = SearchCriteria(self.manager)
|
|
||||||
self.performSearch()
|
|
||||||
|
|
||||||
if d.status == 0 and d.button == 1:
|
|
||||||
self.criteria.name = d.name.get()
|
self.criteria.name = d.name.get()
|
||||||
|
|
||||||
self.list_searchtext.delete(0, "end")
|
self.list_searchtext.delete(0, "end")
|
||||||
|
@ -907,14 +903,11 @@ class SelectCardsetAdvancedSearch(MfxDialog):
|
||||||
top_frame, variable=self.compatible,
|
top_frame, variable=self.compatible,
|
||||||
text=_("Compatible with current game"), anchor="w"
|
text=_("Compatible with current game"), anchor="w"
|
||||||
)
|
)
|
||||||
compatCheck.grid(row=row, column=0, columnspan=5, sticky='ew',
|
compatCheck.grid(row=row, column=0, columnspan=2, sticky='ew',
|
||||||
padx=1, pady=1)
|
padx=1, pady=1)
|
||||||
|
|
||||||
top_frame.columnconfigure(4, weight=1)
|
|
||||||
|
|
||||||
focus = self.createButtons(bottom_frame, kw)
|
focus = self.createButtons(bottom_frame, kw)
|
||||||
# focus = text_w
|
# focus = text_w
|
||||||
|
|
||||||
self.mainloop(focus, kw.timeout)
|
self.mainloop(focus, kw.timeout)
|
||||||
|
|
||||||
def updateSubtypes(self, *args):
|
def updateSubtypes(self, *args):
|
||||||
|
@ -936,7 +929,7 @@ class SelectCardsetAdvancedSearch(MfxDialog):
|
||||||
|
|
||||||
def initKw(self, kw):
|
def initKw(self, kw):
|
||||||
kw = KwStruct(kw,
|
kw = KwStruct(kw,
|
||||||
strings=(_("C&lear"), 'sep', _("&OK"), _("&Cancel")),
|
strings=(_("&OK"), _("&Cancel")), default=0,
|
||||||
default=1, padx=10, pady=10,
|
padx=10, pady=10,
|
||||||
)
|
)
|
||||||
return MfxDialog.initKw(self, kw)
|
return MfxDialog.initKw(self, kw)
|
||||||
|
|
|
@ -676,10 +676,6 @@ class SelectGameDialogWithPreview(SelectGameDialog):
|
||||||
d = SelectGameAdvancedSearch(self.top, _("Advanced search"),
|
d = SelectGameAdvancedSearch(self.top, _("Advanced search"),
|
||||||
self.criteria)
|
self.criteria)
|
||||||
if d.status == 0 and d.button == 0:
|
if d.status == 0 and d.button == 0:
|
||||||
self.criteria = SearchCriteria()
|
|
||||||
self.performSearch()
|
|
||||||
|
|
||||||
if d.status == 0 and d.button == 1:
|
|
||||||
self.criteria.name = d.name.get()
|
self.criteria.name = d.name.get()
|
||||||
|
|
||||||
self.list_searchtext.delete(0, "end")
|
self.list_searchtext.delete(0, "end")
|
||||||
|
@ -1231,9 +1227,6 @@ class SelectGameAdvancedSearch(MfxDialog):
|
||||||
padx=1, pady=1)
|
padx=1, pady=1)
|
||||||
|
|
||||||
focus = self.createButtons(bottom_frame, kw)
|
focus = self.createButtons(bottom_frame, kw)
|
||||||
|
|
||||||
top_frame.config(width=bottom_frame.winfo_width())
|
|
||||||
|
|
||||||
# focus = text_w
|
# focus = text_w
|
||||||
self.mainloop(focus, kw.timeout)
|
self.mainloop(focus, kw.timeout)
|
||||||
|
|
||||||
|
@ -1256,7 +1249,7 @@ class SelectGameAdvancedSearch(MfxDialog):
|
||||||
|
|
||||||
def initKw(self, kw):
|
def initKw(self, kw):
|
||||||
kw = KwStruct(kw,
|
kw = KwStruct(kw,
|
||||||
strings=(_("C&lear"), 'sep', _("&OK"), _("&Cancel")),
|
strings=(_("&OK"), _("&Cancel")), default=0,
|
||||||
default=1, padx=10, pady=10,
|
padx=10, pady=10,
|
||||||
)
|
)
|
||||||
return MfxDialog.initKw(self, kw)
|
return MfxDialog.initKw(self, kw)
|
||||||
|
|
|
@ -344,10 +344,6 @@ class SelectTileDialogWithPreview(MfxDialog):
|
||||||
d = SelectTileAdvancedSearch(self.top, _("Advanced search"),
|
d = SelectTileAdvancedSearch(self.top, _("Advanced search"),
|
||||||
self.criteria)
|
self.criteria)
|
||||||
if d.status == 0 and d.button == 0:
|
if d.status == 0 and d.button == 0:
|
||||||
self.criteria = SearchCriteria()
|
|
||||||
self.performSearch()
|
|
||||||
|
|
||||||
if d.status == 0 and d.button == 1:
|
|
||||||
self.criteria.name = d.name.get()
|
self.criteria.name = d.name.get()
|
||||||
|
|
||||||
self.list_searchtext.delete(0, "end")
|
self.list_searchtext.delete(0, "end")
|
||||||
|
@ -465,15 +461,13 @@ class SelectTileAdvancedSearch(MfxDialog):
|
||||||
padx=1, pady=1)
|
padx=1, pady=1)
|
||||||
row += 1
|
row += 1
|
||||||
|
|
||||||
top_frame.columnconfigure(4, weight=1)
|
|
||||||
|
|
||||||
focus = self.createButtons(bottom_frame, kw)
|
focus = self.createButtons(bottom_frame, kw)
|
||||||
# focus = text_w
|
# focus = text_w
|
||||||
self.mainloop(focus, kw.timeout)
|
self.mainloop(focus, kw.timeout)
|
||||||
|
|
||||||
def initKw(self, kw):
|
def initKw(self, kw):
|
||||||
kw = KwStruct(kw,
|
kw = KwStruct(kw,
|
||||||
strings=(_("C&lear"), 'sep', _("&OK"), _("&Cancel")),
|
strings=(_("&OK"), _("&Cancel")), default=0,
|
||||||
default=1, padx=10, pady=10,
|
padx=10, pady=10,
|
||||||
)
|
)
|
||||||
return MfxDialog.initKw(self, kw)
|
return MfxDialog.initKw(self, kw)
|
||||||
|
|
|
@ -154,7 +154,7 @@ class MfxDialog: # ex. _ToplevelDialog
|
||||||
separator = ttk.Separator(self._frame)
|
separator = ttk.Separator(self._frame)
|
||||||
separator.pack(side='bottom', fill='x')
|
separator.pack(side='bottom', fill='x')
|
||||||
top_frame = ttk.Frame(self._frame)
|
top_frame = ttk.Frame(self._frame)
|
||||||
top_frame.pack(side='top', fill='both', expand=True)
|
top_frame.pack(side='top', fill='both', expand=1)
|
||||||
return top_frame, bottom_frame
|
return top_frame, bottom_frame
|
||||||
|
|
||||||
def createBitmaps(self, frame, kw):
|
def createBitmaps(self, frame, kw):
|
||||||
|
|
|
@ -1119,8 +1119,8 @@ class PysolMenubarTkCommon:
|
||||||
if not mahjongg_games[n:n + d]:
|
if not mahjongg_games[n:n + d]:
|
||||||
break
|
break
|
||||||
m = min(n + d - 1, len(mahjongg_games) - 1)
|
m = min(n + d - 1, len(mahjongg_games) - 1)
|
||||||
label = mahjongg_games[n].short_name[:3].strip() + ' - ' + \
|
label = mahjongg_games[n].short_name[:3] + ' - ' + \
|
||||||
mahjongg_games[m].short_name[:3].strip()
|
mahjongg_games[m].short_name[:3]
|
||||||
submenu = MfxMenu(menu, label=label, name=None)
|
submenu = MfxMenu(menu, label=label, name=None)
|
||||||
self._addSelectGameSubSubMenu(mahjongg_games[n:n + d], submenu,
|
self._addSelectGameSubSubMenu(mahjongg_games[n:n + d], submenu,
|
||||||
command, variable, short_name=True)
|
command, variable, short_name=True)
|
||||||
|
@ -1182,8 +1182,7 @@ class PysolMenubarTkCommon:
|
||||||
if not games[n:n+d]:
|
if not games[n:n+d]:
|
||||||
break
|
break
|
||||||
m = min(n+d-1, len(games)-1)
|
m = min(n+d-1, len(games)-1)
|
||||||
label = games[n].name[:3].strip() + ' - ' + \
|
label = games[n].name[:3] + ' - ' + games[m].name[:3]
|
||||||
games[m].name[:3].strip()
|
|
||||||
submenu = MfxMenu(menu, label=label, name=None)
|
submenu = MfxMenu(menu, label=label, name=None)
|
||||||
self._addSelectGameSubSubMenu(games[n:n+d], submenu,
|
self._addSelectGameSubSubMenu(games[n:n+d], submenu,
|
||||||
command, variable)
|
command, variable)
|
||||||
|
|
Loading…
Add table
Reference in a new issue