mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-05 00:02:29 -04:00
Compare commits
4 commits
180d3d57df
...
5005ef6796
Author | SHA1 | Date | |
---|---|---|---|
|
5005ef6796 | ||
|
cafdafe047 | ||
|
911f83d249 | ||
|
abb9605dd4 |
21 changed files with 116 additions and 28 deletions
|
@ -3,7 +3,7 @@ msgstr ""
|
|||
"Project-Id-Version: PySol 0.0.1\n"
|
||||
"Report-Msgid-Bugs-To: \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-12-22 17:14-0500\n"
|
||||
"Last-Translator: H. Schaekel <Holger.Schaekel@web.de>\n"
|
||||
"Language-Team: German\n"
|
||||
"Language: de\n"
|
||||
|
@ -5353,7 +5353,7 @@ msgstr ""
|
|||
msgid "&Hamming"
|
||||
msgstr ""
|
||||
|
||||
msgid "Card la&yout"
|
||||
msgid "Game la&yout"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Spread stacks"
|
||||
|
@ -5498,6 +5498,9 @@ msgstr ""
|
|||
msgid "Save games &geometry"
|
||||
msgstr "Spielgeometrie speichern"
|
||||
|
||||
msgid "&Keep dialogs on top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Othe&r graphics"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: 1.02\n"
|
||||
"Report-Msgid-Bugs-To: \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-12-22 17:14-0500\n"
|
||||
"Last-Translator: Eric Rausch <neelix570@gmail.com>\n"
|
||||
"Language-Team: French\n"
|
||||
"Language: fr\n"
|
||||
|
@ -5399,7 +5399,7 @@ msgstr ""
|
|||
msgid "&Hamming"
|
||||
msgstr ""
|
||||
|
||||
msgid "Card la&yout"
|
||||
msgid "Game la&yout"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Spread stacks"
|
||||
|
@ -5544,6 +5544,9 @@ msgstr "Barre d'&aide"
|
|||
msgid "Save games &geometry"
|
||||
msgstr "Enregistrer la &géométrie du jeu"
|
||||
|
||||
msgid "&Keep dialogs on top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Othe&r graphics"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ msgstr ""
|
|||
"Project-Id-Version: it_pysol\n"
|
||||
"Report-Msgid-Bugs-To: \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-12-22 17:14-0500\n"
|
||||
"Last-Translator: Giuliano Colla <giuliano.colla@gmail.com>\n"
|
||||
"Language-Team: Italiano <it@li.org>\n"
|
||||
"Language: it\n"
|
||||
|
@ -5464,7 +5464,7 @@ msgstr ""
|
|||
msgid "&Hamming"
|
||||
msgstr ""
|
||||
|
||||
msgid "Card la&yout"
|
||||
msgid "Game la&yout"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Spread stacks"
|
||||
|
@ -5609,6 +5609,9 @@ msgstr "Mostra barra di a&iuto"
|
|||
msgid "Save games &geometry"
|
||||
msgstr "Salva gioco e &geometria"
|
||||
|
||||
msgid "&Keep dialogs on top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Othe&r graphics"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: PySolFC\n"
|
||||
"Report-Msgid-Bugs-To: \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-12-22 17:13-0500\n"
|
||||
"Last-Translator: Jerzy Trzeciak <artusek@wp.pl>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"Language: pl\n"
|
||||
|
@ -5415,7 +5415,7 @@ msgstr ""
|
|||
msgid "&Hamming"
|
||||
msgstr ""
|
||||
|
||||
msgid "Card la&yout"
|
||||
msgid "Game la&yout"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Spread stacks"
|
||||
|
@ -5560,6 +5560,9 @@ msgstr "Pokaż pasek pomocy"
|
|||
msgid "Save games &geometry"
|
||||
msgstr "Zapisz układ &gier"
|
||||
|
||||
msgid "&Keep dialogs on top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Othe&r graphics"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ msgstr ""
|
|||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \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-12-22 17:13-0500\n"
|
||||
"Last-Translator: Matheus Knack <mtknack555@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: pt_BR\n"
|
||||
|
@ -5421,7 +5421,7 @@ msgstr ""
|
|||
msgid "&Hamming"
|
||||
msgstr ""
|
||||
|
||||
msgid "Card la&yout"
|
||||
msgid "Game la&yout"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Spread stacks"
|
||||
|
@ -5566,6 +5566,9 @@ msgstr "Mostra &barra de ajuda"
|
|||
msgid "Save games &geometry"
|
||||
msgstr "Salvar jogos &geometria"
|
||||
|
||||
msgid "&Keep dialogs on top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Othe&r graphics"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -5147,7 +5147,7 @@ msgstr ""
|
|||
msgid "&Hamming"
|
||||
msgstr ""
|
||||
|
||||
msgid "Card la&yout"
|
||||
msgid "Game la&yout"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Spread stacks"
|
||||
|
@ -5292,6 +5292,9 @@ msgstr ""
|
|||
msgid "Save games &geometry"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Keep dialogs on top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Othe&r graphics"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ msgstr ""
|
|||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \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-12-22 17:13-0500\n"
|
||||
"Last-Translator: Skomoroh <skomoroh@gmail.com>\n"
|
||||
"Language-Team: Russian <ru@li.org>\n"
|
||||
"Language: ru\n"
|
||||
|
@ -5489,7 +5489,7 @@ msgstr ""
|
|||
msgid "&Hamming"
|
||||
msgstr ""
|
||||
|
||||
msgid "Card la&yout"
|
||||
msgid "Game la&yout"
|
||||
msgstr ""
|
||||
|
||||
msgid "&Spread stacks"
|
||||
|
@ -5634,6 +5634,9 @@ msgstr "Показывать панель помощи"
|
|||
msgid "Save games &geometry"
|
||||
msgstr "Сохранение &геометрии игры"
|
||||
|
||||
msgid "&Keep dialogs on top"
|
||||
msgstr ""
|
||||
|
||||
msgid "Othe&r graphics"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -47,6 +47,7 @@ from pysollib.pysoltk import create_full_picture_dialog
|
|||
from pysollib.pysoltk import create_solver_dialog
|
||||
from pysollib.pysoltk import raise_find_card_dialog
|
||||
from pysollib.pysoltk import raise_full_picture_dialog
|
||||
from pysollib.pysoltk import raise_solver_dialog
|
||||
from pysollib.settings import DEBUG
|
||||
from pysollib.settings import PACKAGE_URL, TITLE
|
||||
from pysollib.settings import TOP_SIZE
|
||||
|
@ -535,15 +536,16 @@ class PysolMenubar(PysolMenubarTk):
|
|||
if self.game.canFindCard():
|
||||
create_find_card_dialog(self.game.top, self.game,
|
||||
self.app.getFindCardImagesDir())
|
||||
raise_find_card_dialog()
|
||||
raise_find_card_dialog(self.game)
|
||||
|
||||
def mFullPicture(self, *args):
|
||||
if self.game.canShowFullPicture():
|
||||
create_full_picture_dialog(self.game.top, self.game)
|
||||
raise_full_picture_dialog()
|
||||
raise_full_picture_dialog(self.game)
|
||||
|
||||
def mSolver(self, *args):
|
||||
create_solver_dialog(self.game.top, self.app)
|
||||
raise_solver_dialog(self.game)
|
||||
|
||||
def mEditGameComment(self, *args):
|
||||
if self._cancelDrag(break_pause=False):
|
||||
|
|
|
@ -57,6 +57,7 @@ from pysollib.pysoltk import destroy_full_picture_dialog
|
|||
from pysollib.pysoltk import loadImage, wm_withdraw
|
||||
from pysollib.pysoltk import raise_find_card_dialog
|
||||
from pysollib.pysoltk import raise_full_picture_dialog
|
||||
from pysollib.pysoltk import raise_solver_dialog
|
||||
from pysollib.resource import CSI, CardsetManager
|
||||
from pysollib.resource import Music, MusicManager
|
||||
from pysollib.resource import Sample, SampleManager
|
||||
|
@ -515,10 +516,14 @@ class Application:
|
|||
self.opt.wm_fullscreen = not self.opt.wm_fullscreen
|
||||
self.top.attributes("-fullscreen", self.opt.wm_fullscreen)
|
||||
# Topmost dialogs need to be reset when toggling fullscreen.
|
||||
raise_find_card_dialog()
|
||||
raise_full_picture_dialog()
|
||||
self.raiseAll()
|
||||
self.top.attributes('-topmost', False)
|
||||
|
||||
def raiseAll(self):
|
||||
raise_find_card_dialog(self.game)
|
||||
raise_full_picture_dialog(self.game)
|
||||
raise_solver_dialog(self.game)
|
||||
|
||||
def loadImages1(self):
|
||||
# load dialog images
|
||||
dirname = os.path.join("images", "logos")
|
||||
|
|
|
@ -192,6 +192,22 @@ class AbstractHint(HintInterface):
|
|||
if self.level >= 2:
|
||||
if game.canDealCards():
|
||||
self.addHint(self.SCORE_DEAL, 0, game.s.talon, None)
|
||||
# A few games have multiple waste stacks. In these games,
|
||||
# reserves are used for the waste stacks. This logic will
|
||||
# handle for those games.
|
||||
if (not game.canDealCards() and game.s.waste is not None and
|
||||
len(game.s.waste.cards) > 0 and len(game.s.reserves) > 0):
|
||||
max_cards = 0
|
||||
reserve = None
|
||||
for r in game.s.reserves:
|
||||
if r.acceptsCards(game.s.waste, game.s.waste.cards):
|
||||
if len(r.cards) < max_cards or reserve is None:
|
||||
max_cards = len(r.cards)
|
||||
reserve = r
|
||||
|
||||
if reserve is not None:
|
||||
self.addHint(self.SCORE_DEAL, 1, game.s.waste, reserve)
|
||||
|
||||
return self._returnHints()
|
||||
|
||||
# subclass
|
||||
|
|
|
@ -69,7 +69,7 @@ def connect_game_find_card_dialog(game):
|
|||
'''
|
||||
|
||||
|
||||
def raise_find_card_dialog():
|
||||
def raise_find_card_dialog(game):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
@ -108,7 +108,7 @@ def connect_game_full_picture_dialog(game):
|
|||
'''
|
||||
|
||||
|
||||
def raise_full_picture_dialog():
|
||||
def raise_full_picture_dialog(game):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
@ -46,6 +46,10 @@ def connect_game_solver_dialog(game):
|
|||
pass
|
||||
|
||||
|
||||
def raise_solver_dialog(game):
|
||||
pass
|
||||
|
||||
|
||||
def destroy_solver_dialog():
|
||||
global solver_dialog
|
||||
solver_dialog = None
|
||||
|
|
|
@ -123,6 +123,7 @@ use_cardset_bottoms = boolean
|
|||
dragcursor = boolean
|
||||
save_games_geometry = boolean
|
||||
game_geometry = int_list(min=2, max=2)
|
||||
topmost_dialogs = boolean
|
||||
sound = boolean
|
||||
sound_mode = integer(0, 1)
|
||||
sound_sample_volume = integer(0, 128)
|
||||
|
@ -300,6 +301,7 @@ class Options:
|
|||
# ('save_cardsets', 'bool'),
|
||||
('dragcursor', 'bool'),
|
||||
('save_games_geometry', 'bool'),
|
||||
('topmost_dialogs', 'bool'),
|
||||
('sound', 'bool'),
|
||||
('sound_mode', 'int'),
|
||||
('sound_sample_volume', 'int'),
|
||||
|
@ -501,6 +503,7 @@ class Options:
|
|||
self.wm_maximized = 1
|
||||
self.wm_fullscreen = 0
|
||||
self.save_games_geometry = False
|
||||
self.topmost_dialogs = True
|
||||
# saved games geometry (gameid: (width, height))
|
||||
self.games_geometry = {}
|
||||
self.game_geometry = (0, 0) # game geometry before exit
|
||||
|
|
|
@ -50,7 +50,7 @@ def connect_game_find_card_dialog(game):
|
|||
pass
|
||||
|
||||
|
||||
def raise_find_card_dialog():
|
||||
def raise_find_card_dialog(game):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ def connect_game_full_picture_dialog(game):
|
|||
pass
|
||||
|
||||
|
||||
def raise_find_card_dialog():
|
||||
def raise_find_card_dialog(game):
|
||||
pass
|
||||
|
||||
|
||||
|
|
|
@ -30,6 +30,10 @@ def connect_game_solver_dialog(game):
|
|||
pass
|
||||
|
||||
|
||||
def raise_solver_dialog(game):
|
||||
pass
|
||||
|
||||
|
||||
def destroy_solver_dialog():
|
||||
pass
|
||||
# solver_dialog = None
|
||||
|
|
|
@ -84,3 +84,14 @@ def create_solver_dialog(parent, game):
|
|||
except Exception:
|
||||
# traceback.print_exc()
|
||||
solver_dialog = SolverDialog(parent, game)
|
||||
|
||||
|
||||
def raise_solver_dialog(game):
|
||||
try:
|
||||
if game.app.opt.topmost_dialogs:
|
||||
solver_dialog.top.tkraise()
|
||||
solver_dialog.top.attributes("-topmost", True)
|
||||
else:
|
||||
solver_dialog.top.attributes("-topmost", False)
|
||||
except Exception:
|
||||
pass
|
||||
|
|
|
@ -243,10 +243,13 @@ def connect_game_find_card_dialog(game):
|
|||
pass
|
||||
|
||||
|
||||
def raise_find_card_dialog():
|
||||
def raise_find_card_dialog(game):
|
||||
try:
|
||||
find_card_dialog.tkraise()
|
||||
find_card_dialog.attributes("-topmost", True)
|
||||
if game.app.opt.topmost_dialogs:
|
||||
find_card_dialog.tkraise()
|
||||
find_card_dialog.attributes("-topmost", True)
|
||||
else:
|
||||
find_card_dialog.attributes("-topmost", False)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
|
|
@ -135,10 +135,13 @@ def connect_game_full_picture_dialog(game):
|
|||
pass
|
||||
|
||||
|
||||
def raise_full_picture_dialog():
|
||||
def raise_full_picture_dialog(game):
|
||||
try:
|
||||
full_picture_dialog.tkraise()
|
||||
full_picture_dialog.attributes("-topmost", True)
|
||||
if game.app.opt.topmost_dialogs:
|
||||
full_picture_dialog.tkraise()
|
||||
full_picture_dialog.attributes("-topmost", True)
|
||||
else:
|
||||
full_picture_dialog.attributes("-topmost", False)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
|
|
@ -317,6 +317,7 @@ class PysolMenubarTkCommon:
|
|||
spread_stacks=tkinter.BooleanVar(),
|
||||
center_layout=tkinter.BooleanVar(),
|
||||
save_games_geometry=tkinter.BooleanVar(),
|
||||
topmost_dialogs=tkinter.BooleanVar(),
|
||||
cardback=tkinter.IntVar(),
|
||||
tabletile=tkinter.IntVar(),
|
||||
animations=tkinter.IntVar(),
|
||||
|
@ -392,6 +393,7 @@ class PysolMenubarTkCommon:
|
|||
tkopt.spread_stacks.set(opt.spread_stacks)
|
||||
tkopt.center_layout.set(opt.center_layout)
|
||||
tkopt.save_games_geometry.set(opt.save_games_geometry)
|
||||
tkopt.topmost_dialogs.set(opt.topmost_dialogs)
|
||||
tkopt.cardback.set(self.app.cardset.backindex)
|
||||
tkopt.tabletile.set(self.app.tabletile_index)
|
||||
tkopt.animations.set(opt.animations)
|
||||
|
@ -756,7 +758,7 @@ class PysolMenubarTkCommon:
|
|||
command=self.mOptPreserveAspectRatio)
|
||||
submenu.add_separator()
|
||||
createResamplingMenu(self, submenu)
|
||||
submenu = MfxMenu(menu, label=n_("Card la&yout"))
|
||||
submenu = MfxMenu(menu, label=n_("Game la&yout"))
|
||||
submenu.add_checkbutton(
|
||||
label=n_("&Spread stacks"), variable=self.tkopt.spread_stacks,
|
||||
command=self.mOptSpreadStacks)
|
||||
|
@ -767,6 +769,10 @@ class PysolMenubarTkCommon:
|
|||
label=n_("Save games &geometry"),
|
||||
variable=self.tkopt.save_games_geometry,
|
||||
command=self.mOptSaveGamesGeometry)
|
||||
submenu.add_checkbutton(
|
||||
label=n_("&Keep dialogs on top"),
|
||||
variable=self.tkopt.topmost_dialogs,
|
||||
command=self.mOptTopmostDialogs)
|
||||
# manager = self.app.cardset_manager
|
||||
# n = manager.len()
|
||||
menu.add_command(
|
||||
|
@ -877,6 +883,10 @@ class PysolMenubarTkCommon:
|
|||
label=n_("Save games &geometry"),
|
||||
variable=self.tkopt.save_games_geometry,
|
||||
command=self.mOptSaveGamesGeometry)
|
||||
submenu.add_checkbutton(
|
||||
label=n_("&Keep dialogs on top"),
|
||||
variable=self.tkopt.topmost_dialogs,
|
||||
command=self.mOptTopmostDialogs)
|
||||
|
||||
# menu.add_checkbutton(
|
||||
# label=n_("Startup splash sc&reen"),
|
||||
|
@ -1879,6 +1889,12 @@ Unsupported game for import.
|
|||
return
|
||||
self.app.opt.save_games_geometry = self.tkopt.save_games_geometry.get()
|
||||
|
||||
def mOptTopmostDialogs(self, *event):
|
||||
if self._cancelDrag(break_pause=False):
|
||||
return
|
||||
self.app.opt.topmost_dialogs = self.tkopt.topmost_dialogs.get()
|
||||
self.app.raiseAll()
|
||||
|
||||
def _mOptCardback(self, index):
|
||||
if self._cancelDrag(break_pause=False):
|
||||
return
|
||||
|
|
Loading…
Add table
Reference in a new issue