diff --git a/data/images/tree/classic/emptynode.gif b/data/images/tree/classic/emptynode.gif new file mode 100644 index 00000000..a0d26843 Binary files /dev/null and b/data/images/tree/classic/emptynode.gif differ diff --git a/data/images/tree/classic/emptynode.png b/data/images/tree/classic/emptynode.png new file mode 100644 index 00000000..284574ea Binary files /dev/null and b/data/images/tree/classic/emptynode.png differ diff --git a/data/images/tree/classic/folder.gif b/data/images/tree/classic/folder.gif new file mode 100644 index 00000000..27dd6afb Binary files /dev/null and b/data/images/tree/classic/folder.gif differ diff --git a/data/images/tree/classic/folder.png b/data/images/tree/classic/folder.png new file mode 100644 index 00000000..0f4b342d Binary files /dev/null and b/data/images/tree/classic/folder.png differ diff --git a/data/images/tree/classic/node.gif b/data/images/tree/classic/node.gif new file mode 100644 index 00000000..11a032cb Binary files /dev/null and b/data/images/tree/classic/node.gif differ diff --git a/data/images/tree/classic/node.png b/data/images/tree/classic/node.png new file mode 100644 index 00000000..c640e67c Binary files /dev/null and b/data/images/tree/classic/node.png differ diff --git a/data/images/tree/classic/openfolder.gif b/data/images/tree/classic/openfolder.gif new file mode 100644 index 00000000..e4f111e5 Binary files /dev/null and b/data/images/tree/classic/openfolder.gif differ diff --git a/data/images/tree/classic/openfolder.png b/data/images/tree/classic/openfolder.png new file mode 100644 index 00000000..7063cee9 Binary files /dev/null and b/data/images/tree/classic/openfolder.png differ diff --git a/data/images/tree/emptynode.gif b/data/images/tree/remix/emptynode.gif similarity index 100% rename from data/images/tree/emptynode.gif rename to data/images/tree/remix/emptynode.gif diff --git a/data/images/tree/emptynode.png b/data/images/tree/remix/emptynode.png similarity index 100% rename from data/images/tree/emptynode.png rename to data/images/tree/remix/emptynode.png diff --git a/data/images/tree/folder.gif b/data/images/tree/remix/folder.gif similarity index 100% rename from data/images/tree/folder.gif rename to data/images/tree/remix/folder.gif diff --git a/data/images/tree/folder.png b/data/images/tree/remix/folder.png similarity index 100% rename from data/images/tree/folder.png rename to data/images/tree/remix/folder.png diff --git a/data/images/tree/node.gif b/data/images/tree/remix/node.gif similarity index 100% rename from data/images/tree/node.gif rename to data/images/tree/remix/node.gif diff --git a/data/images/tree/node.png b/data/images/tree/remix/node.png similarity index 100% rename from data/images/tree/node.png rename to data/images/tree/remix/node.png diff --git a/data/images/tree/openfolder.gif b/data/images/tree/remix/openfolder.gif similarity index 100% rename from data/images/tree/openfolder.gif rename to data/images/tree/remix/openfolder.gif diff --git a/data/images/tree/openfolder.png b/data/images/tree/remix/openfolder.png similarity index 100% rename from data/images/tree/openfolder.png rename to data/images/tree/remix/openfolder.png diff --git a/po/de_pysol.po b/po/de_pysol.po index d5bef184..30be4c86 100644 --- a/po/de_pysol.po +++ b/po/de_pysol.po @@ -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: 2023-11-20 20:08-0500\n" +"PO-Revision-Date: 2023-11-24 12:21-0500\n" "Last-Translator: H. Schaekel \n" "Language-Team: German\n" "Language: de\n" @@ -2934,6 +2934,18 @@ msgstr "Links" msgid "Right" msgstr "Rechts" +msgid "Other graphics" +msgstr "" + +msgid "Demo logo" +msgstr "" + +msgid "Pause text" +msgstr "" + +msgid "Redeal icons" +msgstr "" + #: pysollib/kivy/menubar.py:1062 msgid "Startup splash screen" msgstr "Progammstart Anzeige" @@ -5379,13 +5391,13 @@ msgstr "&Demo logo" msgid "D&ialog icons" msgstr "" -msgid "&Show demo logo" -msgstr "" - msgid "&Pause text" msgstr "" -msgid "&Redeal iconso" +msgid "&Redeal icons" +msgstr "" + +msgid "&Tree icons" msgstr "" #: pysollib/ui/tktile/menubar.py:640 diff --git a/po/fr_pysol.po b/po/fr_pysol.po index 1ecacd66..bbe6657e 100644 --- a/po/fr_pysol.po +++ b/po/fr_pysol.po @@ -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: 2023-11-20 20:08-0500\n" +"PO-Revision-Date: 2023-11-24 12:21-0500\n" "Last-Translator: Eric Rausch \n" "Language-Team: French\n" "Language: fr\n" @@ -2974,6 +2974,18 @@ msgstr "Gauche" msgid "Right" msgstr "Droite" +msgid "Other graphics" +msgstr "" + +msgid "Demo logo" +msgstr "" + +msgid "Pause text" +msgstr "" + +msgid "Redeal icons" +msgstr "" + #: pysollib/kivy/menubar.py:1062 msgid "Startup splash screen" msgstr "Écran de démarrage" @@ -5424,13 +5436,13 @@ msgstr "Logo de &démo" msgid "D&ialog icons" msgstr "" -msgid "&Show demo logo" -msgstr "" - msgid "&Pause text" msgstr "" -msgid "&Redeal iconso" +msgid "&Redeal icons" +msgstr "" + +msgid "&Tree icons" msgstr "" #: pysollib/ui/tktile/menubar.py:640 diff --git a/po/it_pysol.po b/po/it_pysol.po index ba371a20..9fe22953 100644 --- a/po/it_pysol.po +++ b/po/it_pysol.po @@ -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: 2023-11-20 20:09-0500\n" +"PO-Revision-Date: 2023-11-24 12:21-0500\n" "Last-Translator: Giuliano Colla \n" "Language-Team: Italiano \n" "Language: it\n" @@ -3033,6 +3033,18 @@ msgstr "Sinistra" msgid "Right" msgstr "Destra" +msgid "Other graphics" +msgstr "" + +msgid "Demo logo" +msgstr "" + +msgid "Pause text" +msgstr "" + +msgid "Redeal icons" +msgstr "" + #: pysollib/kivy/menubar.py:1062 #, fuzzy msgid "Startup splash screen" @@ -5488,13 +5500,13 @@ msgstr "&Demo logo" msgid "D&ialog icons" msgstr "" -msgid "&Show demo logo" -msgstr "" - msgid "&Pause text" msgstr "" -msgid "&Redeal iconso" +msgid "&Redeal icons" +msgstr "" + +msgid "&Tree icons" msgstr "" #: pysollib/ui/tktile/menubar.py:640 diff --git a/po/pl_pysol.po b/po/pl_pysol.po index 9f0855a8..260db9f1 100644 --- a/po/pl_pysol.po +++ b/po/pl_pysol.po @@ -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: 2023-11-20 20:09-0500\n" +"PO-Revision-Date: 2023-11-24 12:21-0500\n" "Last-Translator: Jerzy Trzeciak \n" "Language-Team: Polish \n" "Language: pl\n" @@ -2987,6 +2987,18 @@ msgstr "Lewa strona" msgid "Right" msgstr "Prawa strona" +msgid "Other graphics" +msgstr "" + +msgid "Demo logo" +msgstr "" + +msgid "Pause text" +msgstr "" + +msgid "Redeal icons" +msgstr "" + #: pysollib/kivy/menubar.py:1062 msgid "Startup splash screen" msgstr "Ek&ran powitalny" @@ -5440,13 +5452,13 @@ msgstr "&Demo logo" msgid "D&ialog icons" msgstr "" -msgid "&Show demo logo" -msgstr "" - msgid "&Pause text" msgstr "" -msgid "&Redeal iconso" +msgid "&Redeal icons" +msgstr "" + +msgid "&Tree icons" msgstr "" #: pysollib/ui/tktile/menubar.py:640 diff --git a/po/pt_BR_pysol.po b/po/pt_BR_pysol.po index cd61185d..3f1e9af9 100644 --- a/po/pt_BR_pysol.po +++ b/po/pt_BR_pysol.po @@ -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: 2023-11-20 20:09-0500\n" +"PO-Revision-Date: 2023-11-24 12:20-0500\n" "Last-Translator: Matheus Knack \n" "Language-Team: \n" "Language: pt_BR\n" @@ -2995,6 +2995,18 @@ msgstr "Esquerda" msgid "Right" msgstr "Direita" +msgid "Other graphics" +msgstr "" + +msgid "Demo logo" +msgstr "" + +msgid "Pause text" +msgstr "" + +msgid "Redeal icons" +msgstr "" + #: pysollib/kivy/menubar.py:1062 msgid "Startup splash screen" msgstr "Iniciar tela de inicialização" @@ -5446,13 +5458,13 @@ msgstr "&Logo da demo" msgid "D&ialog icons" msgstr "" -msgid "&Show demo logo" -msgstr "" - msgid "&Pause text" msgstr "" -msgid "&Redeal iconso" +msgid "&Redeal icons" +msgstr "" + +msgid "&Tree icons" msgstr "" #: pysollib/ui/tktile/menubar.py:640 diff --git a/po/pysol.pot b/po/pysol.pot index ba9b2923..3c543d8c 100644 --- a/po/pysol.pot +++ b/po/pysol.pot @@ -2805,6 +2805,18 @@ msgstr "" msgid "Right" msgstr "" +msgid "Other graphics" +msgstr "" + +msgid "Demo logo" +msgstr "" + +msgid "Pause text" +msgstr "" + +msgid "Redeal icons" +msgstr "" + #: pysollib/kivy/menubar.py:1062 msgid "Startup splash screen" msgstr "" @@ -5173,13 +5185,13 @@ msgstr "" msgid "D&ialog icons" msgstr "" -msgid "&Show demo logo" -msgstr "" - msgid "&Pause text" msgstr "" -msgid "&Redeal iconso" +msgid "&Redeal icons" +msgstr "" + +msgid "&Tree icons" msgstr "" #: pysollib/ui/tktile/menubar.py:640 diff --git a/po/ru_pysol.po b/po/ru_pysol.po index 681f18a5..8339127c 100644 --- a/po/ru_pysol.po +++ b/po/ru_pysol.po @@ -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: 2023-11-20 20:10-0500\n" +"PO-Revision-Date: 2023-11-24 12:20-0500\n" "Last-Translator: Skomoroh \n" "Language-Team: Russian \n" "Language: ru\n" @@ -3044,6 +3044,18 @@ msgstr "Слева" msgid "Right" msgstr "Справа" +msgid "Other graphics" +msgstr "" + +msgid "Demo logo" +msgstr "" + +msgid "Pause text" +msgstr "" + +msgid "Redeal icons" +msgstr "" + #: pysollib/kivy/menubar.py:1062 #, fuzzy msgid "Startup splash screen" @@ -5514,13 +5526,13 @@ msgstr "Д&емо лого" msgid "D&ialog icons" msgstr "" -msgid "&Show demo logo" -msgstr "" - msgid "&Pause text" msgstr "" -msgid "&Redeal iconso" +msgid "&Redeal icons" +msgstr "" + +msgid "&Tree icons" msgstr "" #: pysollib/ui/tktile/menubar.py:640 diff --git a/pysollib/app.py b/pysollib/app.py index 5ce88348..67dbb2fe 100644 --- a/pysollib/app.py +++ b/pysollib/app.py @@ -564,7 +564,7 @@ class Application: def loadImages3(self): # load treeview images SelectDialogTreeData.img = [] - dirname = os.path.join('images', 'tree') + dirname = os.path.join('images', 'tree', self.opt.tree_icon_style) for f in ('folder', 'openfolder', 'node', 'emptynode'): fn = self.dataloader.findImage(f, dirname) im = loadImage(fn) diff --git a/pysollib/kivy/menubar.py b/pysollib/kivy/menubar.py index 80e38999..88703261 100644 --- a/pysollib/kivy/menubar.py +++ b/pysollib/kivy/menubar.py @@ -1136,7 +1136,7 @@ class OptionsMenuDialog(LMenuDialog): for w in TOOLBAR_BUTTONS: w0 = w[0].upper() ww = w[1:] - self.addCheckNode(tv, rg, + self.addCheckNode(tv, rg1, _(w0+ww), # noqa self.menubar.tkopt.toolbar_vars[w], self.make_vars_command(self.menubar.mOptToolbarConfig, w)) # noqa @@ -1159,6 +1159,55 @@ class OptionsMenuDialog(LMenuDialog): variable=self.tkopt.helpbar, command=self.mOptHelpbar) ''' + # ------------------------------------------- + # Other graphics settings + + rg = tv.add_node( + LTreeNode(text=_('Other graphics'))) + data_dir = os.path.join(self.app.dataloader.dir, 'images', 'demo') + dl = tv.add_node( + LTreeNode(text=_('Demo logo')), rg) + styledirs = os.listdir(data_dir) + styledirs.append("none") + styledirs.sort() + for f in styledirs: + d = os.path.join(data_dir, f) + if (os.path.isdir(d) and os.path.exists(os.path.join(d))) \ + or f == "none": + name = f.replace('_', ' ').capitalize() + self.addRadioNode(tv, dl, + _(name), + self.menubar.tkopt.demo_logo_style, f, + self.menubar.mOptDemoLogoStyle) + + data_dir = os.path.join(self.app.dataloader.dir, 'images', 'pause') + dl = tv.add_node( + LTreeNode(text=_('Pause text')), rg) + styledirs = os.listdir(data_dir) + styledirs.sort() + for f in styledirs: + d = os.path.join(data_dir, f) + if os.path.isdir(d) and os.path.exists(os.path.join(d)): + name = f.replace('_', ' ').capitalize() + self.addRadioNode(tv, dl, + _(name), + self.menubar.tkopt.pause_text_style, f, + self.menubar.mOptPauseTextStyle) + + data_dir = os.path.join(self.app.dataloader.dir, 'images', + 'redealicons') + dl = tv.add_node( + LTreeNode(text=_('Redeal icons')), rg) + styledirs = os.listdir(data_dir) + styledirs.sort() + for f in styledirs: + d = os.path.join(data_dir, f) + if os.path.isdir(d) and os.path.exists(os.path.join(d)): + name = f.replace('_', ' ').capitalize() + self.addRadioNode(tv, dl, + _(name), + self.menubar.tkopt.redeal_icon_style, f, + self.menubar.mOptRedealIconStyle) # ------------------------------------------- # general options @@ -1375,6 +1424,9 @@ class PysolMenubarTk: save_games_geometry=BooleanVar(), splashscreen=BooleanVar(), demo_logo=BooleanVar(), + demo_logo_style=StringVar(), + pause_text_style=StringVar(), + redeal_icon_style=StringVar(), mouse_type=StringVar(), mouse_undo=BooleanVar(), negative_bottom=BooleanVar(), @@ -1437,6 +1489,9 @@ class PysolMenubarTk: tkopt.statusbar.set(opt.statusbar) tkopt.save_games_geometry.set(opt.save_games_geometry) tkopt.demo_logo.set(opt.demo_logo) + tkopt.demo_logo_style.set(opt.demo_logo_style) + tkopt.pause_text_style.set(opt.pause_text_style) + tkopt.redeal_icon_style.set(opt.redeal_icon_style) tkopt.splashscreen.set(opt.splashscreen) tkopt.mouse_type.set(opt.mouse_type) tkopt.mouse_undo.set(opt.mouse_undo) @@ -2344,6 +2399,15 @@ the next time you restart the %(app)s""") % {'app': TITLE}) def mOptToolbarConfig(self, w): self.toolbarConfig(w, self.tkopt.toolbar_vars[w].get()) + def mOptDemoLogoStyle(self, *event): + self.setDemoLogoStyle(self.tkopt.demo_logo_style.get()) + + def mOptPauseTextStyle(self, *event): + self.setPauseTextStyle(self.tkopt.pause_text_style.get()) + + def mOptRedealIconStyle(self, *event): + self.setRedealIconStyle(self.tkopt.redeal_icon_style.get()) + def mOptStatusbar(self, *event): if self._cancelDrag(break_pause=False): return @@ -2463,6 +2527,55 @@ the next time you restart the %(app)s""") % {'app': TITLE}) self.app.opt.toolbar_vars[w] = v self.top.update_idletasks() + # + # other graphics + # + + def setDemoLogoStyle(self, style): + if self._cancelDrag(break_pause=False): + return + if style == "none": + self.app.opt.demo_logo = False + else: + self.app.opt.demo_logo = True + self.app.opt.demo_logo_style = style + self.tkopt.demo_logo_style.set(style) # update radiobutton + self.app.loadImages2() + self.app.loadImages4() + self.app.updateCardset() + self.game.endGame(bookmark=1) + self.game.quitGame(bookmark=1) + + def setDialogIconStyle(self, style): + if self._cancelDrag(break_pause=False): + return + self.app.opt.dialog_icon_style = style + self.tkopt.dialog_icon_style.set(style) # update radiobutton + self.app.loadImages1() + self.app.loadImages4() + + def setPauseTextStyle(self, style): + if self._cancelDrag(break_pause=False): + return + self.app.opt.pause_text_style = style + self.tkopt.pause_text_style.set(style) # update radiobutton + self.app.loadImages2() + self.app.loadImages4() + self.app.updateCardset() + self.game.endGame(bookmark=1) + self.game.quitGame(bookmark=1) + + def setRedealIconStyle(self, style): + if self._cancelDrag(break_pause=False): + return + self.app.opt.redeal_icon_style = style + self.tkopt.redeal_icon_style.set(style) # update radiobutton + self.app.loadImages2() + self.app.loadImages4() + self.app.updateCardset() + self.game.endGame(bookmark=1) + self.game.quitGame(bookmark=1) + # # stacks descriptions # diff --git a/pysollib/options.py b/pysollib/options.py index 3b8dc20e..b2aefc94 100644 --- a/pysollib/options.py +++ b/pysollib/options.py @@ -99,6 +99,7 @@ demo_logo_style = string pause_text_style = string redeal_icon_style = string dialog_icon_style = string +tree_icon_style = string tile_theme = string default_tile_theme = string toolbar = integer(0, 4) @@ -266,6 +267,7 @@ class Options: ('pause_text_style', 'str'), ('redeal_icon_style', 'str'), ('dialog_icon_style', 'str'), + ('tree_icon_style', 'str'), ('tile_theme', 'str'), ('default_tile_theme', 'str'), ('toolbar', 'int'), @@ -365,10 +367,11 @@ class Options: self.shrink_face_down = True self.shade_filled_stacks = True self.demo_logo = True - self.demo_logo_style = 'classic' - self.pause_text_style = 'classic' + self.demo_logo_style = 'komika' + self.pause_text_style = 'komika' self.redeal_icon_style = 'modern' self.dialog_icon_style = 'remix' + self.tree_icon_style = 'remix' self.tile_theme = 'default' self.default_tile_theme = 'default' self.toolbar = 1 # 0 == hide, 1,2,3,4 == top, bottom, lef, right diff --git a/pysollib/ui/tktile/menubar.py b/pysollib/ui/tktile/menubar.py index 471fe651..76e0a0ab 100644 --- a/pysollib/ui/tktile/menubar.py +++ b/pysollib/ui/tktile/menubar.py @@ -90,15 +90,13 @@ def createOtherGraphicsMenu(menubar, menu): tearoff = menu.cget('tearoff') data_dir = os.path.join(menubar.app.dataloader.dir, 'images', 'demo') submenu = MfxMenu(menu, label=n_('&Demo logo'), tearoff=tearoff) - submenu.add_checkbutton( - label=n_("&Show demo logo"), variable=menubar.tkopt.demo_logo, - command=menubar.mOptDemoLogo) - submenu.add_separator() styledirs = os.listdir(data_dir) + styledirs.append("none") styledirs.sort() for f in styledirs: d = os.path.join(data_dir, f) - if os.path.isdir(d) and os.path.exists(os.path.join(d)): + if (os.path.isdir(d) and os.path.exists(os.path.join(d))) \ + or f == "none": name = f.replace('_', ' ').capitalize() submenu.add_radiobutton( label=name, @@ -141,6 +139,18 @@ def createOtherGraphicsMenu(menubar, menu): label=name, variable=menubar.tkopt.redeal_icon_style, value=f, command=menubar.mOptRedealIconStyle) + data_dir = os.path.join(menubar.app.dataloader.dir, 'images', 'tree') + submenu = MfxMenu(menu, label=n_('&Tree icons'), tearoff=tearoff) + styledirs = os.listdir(data_dir) + styledirs.sort() + for f in styledirs: + d = os.path.join(data_dir, f) + if os.path.isdir(d) and os.path.exists(os.path.join(d)): + name = f.replace('_', ' ').capitalize() + submenu.add_radiobutton( + label=name, + variable=menubar.tkopt.tree_icon_style, + value=f, command=menubar.mOptTreeIconStyle) def createResamplingMenu(menubar, menu): @@ -321,6 +331,7 @@ class PysolMenubarTkCommon: pause_text_style=tkinter.StringVar(), redeal_icon_style=tkinter.StringVar(), dialog_icon_style=tkinter.StringVar(), + tree_icon_style=tkinter.StringVar(), mouse_type=tkinter.StringVar(), mouse_undo=tkinter.BooleanVar(), negative_bottom=tkinter.BooleanVar(), @@ -385,10 +396,14 @@ class PysolMenubarTkCommon: # tkopt.num_cards.set(opt.num_cards) # tkopt.helpbar.set(opt.helpbar) tkopt.demo_logo.set(opt.demo_logo) - tkopt.demo_logo_style.set(opt.demo_logo_style) + if opt.demo_logo: + tkopt.demo_logo_style.set(opt.demo_logo_style) + else: + tkopt.demo_logo_style.set("none") tkopt.pause_text_style.set(opt.pause_text_style) tkopt.redeal_icon_style.set(opt.redeal_icon_style) tkopt.dialog_icon_style.set(opt.dialog_icon_style) + tkopt.tree_icon_style.set(opt.tree_icon_style) tkopt.splashscreen.set(opt.splashscreen) tkopt.mouse_type.set(opt.mouse_type) tkopt.mouse_undo.set(opt.mouse_undo) @@ -1920,6 +1935,9 @@ Unsupported game for import. def mOptRedealIconStyle(self, *event): self.setRedealIconStyle(self.tkopt.redeal_icon_style.get()) + def mOptTreeIconStyle(self, *event): + self.setTreeIconStyle(self.tkopt.tree_icon_style.get()) + def mOptNumCards(self, *event): if self._cancelDrag(break_pause=False): return @@ -2010,13 +2028,17 @@ Unsupported game for import. def setDemoLogoStyle(self, style): if self._cancelDrag(break_pause=False): return - self.app.opt.demo_logo_style = style - self.tkopt.demo_logo_style.set(style) # update radiobutton - self.app.loadImages2() - self.app.loadImages4() - self.app.updateCardset() - self.game.endGame(bookmark=1) - self.game.quitGame(bookmark=1) + if style == "none": + self.app.opt.demo_logo = False + else: + self.app.opt.demo_logo = True + self.app.opt.demo_logo_style = style + self.tkopt.demo_logo_style.set(style) # update radiobutton + self.app.loadImages2() + self.app.loadImages4() + self.app.updateCardset() + self.game.endGame(bookmark=1) + self.game.quitGame(bookmark=1) def setDialogIconStyle(self, style): if self._cancelDrag(break_pause=False): @@ -2048,6 +2070,17 @@ Unsupported game for import. self.game.endGame(bookmark=1) self.game.quitGame(bookmark=1) + def setTreeIconStyle(self, style): + if self._cancelDrag(break_pause=False): + return + self.app.opt.tree_icon_style = style + self.tkopt.tree_icon_style.set(style) # update radiobutton + self.app.loadImages3() + self.app.loadImages4() + self.app.updateCardset() + self.game.endGame(bookmark=1) + self.game.quitGame(bookmark=1) + def wizardDialog(self, edit=False): from pysollib.wizardutil import write_game, reset_wizard WizardDialog = self._calcWizardDialog()