mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-15 02:54:09 -04:00
Extract some common code into a base class.
This commit is contained in:
parent
9f7cc65a5f
commit
3f962b7134
3 changed files with 80 additions and 155 deletions
|
@ -54,90 +54,14 @@ from solverdialog import connect_game_solver_dialog
|
||||||
|
|
||||||
from pysollib.ui.tktile.tkconst import TOOLBAR_BUTTONS
|
from pysollib.ui.tktile.tkconst import TOOLBAR_BUTTONS
|
||||||
|
|
||||||
from pysollib.ui.tktile.menubar import createToolbarMenu, MfxMenubar, MfxMenu
|
from pysollib.ui.tktile.menubar import createToolbarMenu, MfxMenubar, MfxMenu, PysolMenubarTkCommon
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
# * - create menubar
|
# * - create menubar
|
||||||
# * - update menubar
|
# * - update menubar
|
||||||
# * - menu actions
|
# * - menu actions
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
class PysolMenubarTk:
|
class PysolMenubarTk(PysolMenubarTkCommon):
|
||||||
def __init__(self, app, top, progress=None):
|
|
||||||
self._createTkOpt()
|
|
||||||
self._setOptions()
|
|
||||||
# init columnbreak
|
|
||||||
self.__cb_max = int(self.top.winfo_screenheight()/23)
|
|
||||||
## sh = self.top.winfo_screenheight()
|
|
||||||
## self.__cb_max = 22
|
|
||||||
## if sh >= 600: self.__cb_max = 27
|
|
||||||
## if sh >= 768: self.__cb_max = 32
|
|
||||||
## if sh >= 1024: self.__cb_max = 40
|
|
||||||
self.progress = progress
|
|
||||||
# create menus
|
|
||||||
self.__menubar = None
|
|
||||||
self.__menupath = {}
|
|
||||||
self.__keybindings = {}
|
|
||||||
self._createMenubar()
|
|
||||||
self.top = top
|
|
||||||
|
|
||||||
if self.progress: self.progress.update(step=1)
|
|
||||||
|
|
||||||
# set the menubar
|
|
||||||
self.updateBackgroundImagesMenu()
|
|
||||||
self.top.config(menu=self.__menubar)
|
|
||||||
|
|
||||||
def _createTkOpt(self):
|
|
||||||
# structure to convert menu-options to Toolkit variables
|
|
||||||
self.tkopt = Struct(
|
|
||||||
gameid = Tkinter.IntVar(),
|
|
||||||
gameid_popular = Tkinter.IntVar(),
|
|
||||||
comment = Tkinter.BooleanVar(),
|
|
||||||
autofaceup = Tkinter.BooleanVar(),
|
|
||||||
autodrop = Tkinter.BooleanVar(),
|
|
||||||
autodeal = Tkinter.BooleanVar(),
|
|
||||||
quickplay = Tkinter.BooleanVar(),
|
|
||||||
undo = Tkinter.BooleanVar(),
|
|
||||||
bookmarks = Tkinter.BooleanVar(),
|
|
||||||
hint = Tkinter.BooleanVar(),
|
|
||||||
shuffle = Tkinter.BooleanVar(),
|
|
||||||
highlight_piles = Tkinter.BooleanVar(),
|
|
||||||
highlight_cards = Tkinter.BooleanVar(),
|
|
||||||
highlight_samerank = Tkinter.BooleanVar(),
|
|
||||||
highlight_not_matching = Tkinter.BooleanVar(),
|
|
||||||
mahjongg_show_removed = Tkinter.BooleanVar(),
|
|
||||||
shisen_show_hint = Tkinter.BooleanVar(),
|
|
||||||
sound = Tkinter.BooleanVar(),
|
|
||||||
auto_scale = Tkinter.BooleanVar(),
|
|
||||||
cardback = Tkinter.IntVar(),
|
|
||||||
tabletile = Tkinter.IntVar(),
|
|
||||||
animations = Tkinter.IntVar(),
|
|
||||||
redeal_animation = Tkinter.BooleanVar(),
|
|
||||||
win_animation = Tkinter.BooleanVar(),
|
|
||||||
shadow = Tkinter.BooleanVar(),
|
|
||||||
shade = Tkinter.BooleanVar(),
|
|
||||||
shade_filled_stacks = Tkinter.BooleanVar(),
|
|
||||||
shrink_face_down = Tkinter.BooleanVar(),
|
|
||||||
toolbar = Tkinter.IntVar(),
|
|
||||||
toolbar_style = Tkinter.StringVar(),
|
|
||||||
toolbar_relief = Tkinter.StringVar(),
|
|
||||||
toolbar_compound = Tkinter.StringVar(),
|
|
||||||
toolbar_size = Tkinter.IntVar(),
|
|
||||||
statusbar = Tkinter.BooleanVar(),
|
|
||||||
num_cards = Tkinter.BooleanVar(),
|
|
||||||
helpbar = Tkinter.BooleanVar(),
|
|
||||||
save_games_geometry = Tkinter.BooleanVar(),
|
|
||||||
splashscreen = Tkinter.BooleanVar(),
|
|
||||||
demo_logo = Tkinter.BooleanVar(),
|
|
||||||
mouse_type = Tkinter.StringVar(),
|
|
||||||
mouse_undo = Tkinter.BooleanVar(),
|
|
||||||
negative_bottom = Tkinter.BooleanVar(),
|
|
||||||
pause = Tkinter.BooleanVar(),
|
|
||||||
theme = Tkinter.StringVar(),
|
|
||||||
toolbar_vars = {},
|
|
||||||
)
|
|
||||||
for w in TOOLBAR_BUTTONS:
|
|
||||||
self.tkopt.toolbar_vars[w] = Tkinter.BooleanVar()
|
|
||||||
|
|
||||||
def _setOptions(self):
|
def _setOptions(self):
|
||||||
tkopt, opt = self.tkopt, self.app.opt
|
tkopt, opt = self.tkopt, self.app.opt
|
||||||
# set state of the menu items
|
# set state of the menu items
|
||||||
|
|
|
@ -54,89 +54,14 @@ from solverdialog import connect_game_solver_dialog
|
||||||
|
|
||||||
from pysollib.ui.tktile.tkconst import TOOLBAR_BUTTONS
|
from pysollib.ui.tktile.tkconst import TOOLBAR_BUTTONS
|
||||||
|
|
||||||
from pysollib.ui.tktile.menubar import createToolbarMenu, MfxMenubar, MfxMenu
|
from pysollib.ui.tktile.menubar import createToolbarMenu, MfxMenubar, MfxMenu, PysolMenubarTkCommon
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
# * - create menubar
|
# * - create menubar
|
||||||
# * - update menubar
|
# * - update menubar
|
||||||
# * - menu actions
|
# * - menu actions
|
||||||
# ************************************************************************
|
# ************************************************************************
|
||||||
|
|
||||||
class PysolMenubarTk:
|
class PysolMenubarTk(PysolMenubarTkCommon):
|
||||||
def __init__(self, app, top, progress=None):
|
|
||||||
self._createTkOpt()
|
|
||||||
self._setOptions()
|
|
||||||
# init columnbreak
|
|
||||||
self.__cb_max = int(self.top.winfo_screenheight()/23)
|
|
||||||
## sh = self.top.winfo_screenheight()
|
|
||||||
## self.__cb_max = 22
|
|
||||||
## if sh >= 600: self.__cb_max = 27
|
|
||||||
## if sh >= 768: self.__cb_max = 32
|
|
||||||
## if sh >= 1024: self.__cb_max = 40
|
|
||||||
self.progress = progress
|
|
||||||
# create menus
|
|
||||||
self.__menubar = None
|
|
||||||
self.__menupath = {}
|
|
||||||
self.__keybindings = {}
|
|
||||||
self._createMenubar()
|
|
||||||
self.top = top
|
|
||||||
|
|
||||||
if self.progress: self.progress.update(step=1)
|
|
||||||
|
|
||||||
# set the menubar
|
|
||||||
self.updateBackgroundImagesMenu()
|
|
||||||
self.top.config(menu=self.__menubar)
|
|
||||||
|
|
||||||
def _createTkOpt(self):
|
|
||||||
# structure to convert menu-options to Toolkit variables
|
|
||||||
self.tkopt = Struct(
|
|
||||||
gameid = Tkinter.IntVar(),
|
|
||||||
gameid_popular = Tkinter.IntVar(),
|
|
||||||
comment = Tkinter.BooleanVar(),
|
|
||||||
autofaceup = Tkinter.BooleanVar(),
|
|
||||||
autodrop = Tkinter.BooleanVar(),
|
|
||||||
autodeal = Tkinter.BooleanVar(),
|
|
||||||
quickplay = Tkinter.BooleanVar(),
|
|
||||||
undo = Tkinter.BooleanVar(),
|
|
||||||
bookmarks = Tkinter.BooleanVar(),
|
|
||||||
hint = Tkinter.BooleanVar(),
|
|
||||||
shuffle = Tkinter.BooleanVar(),
|
|
||||||
highlight_piles = Tkinter.BooleanVar(),
|
|
||||||
highlight_cards = Tkinter.BooleanVar(),
|
|
||||||
highlight_samerank = Tkinter.BooleanVar(),
|
|
||||||
highlight_not_matching = Tkinter.BooleanVar(),
|
|
||||||
mahjongg_show_removed = Tkinter.BooleanVar(),
|
|
||||||
shisen_show_hint = Tkinter.BooleanVar(),
|
|
||||||
sound = Tkinter.BooleanVar(),
|
|
||||||
auto_scale = Tkinter.BooleanVar(),
|
|
||||||
cardback = Tkinter.IntVar(),
|
|
||||||
tabletile = Tkinter.IntVar(),
|
|
||||||
animations = Tkinter.IntVar(),
|
|
||||||
redeal_animation = Tkinter.BooleanVar(),
|
|
||||||
win_animation = Tkinter.BooleanVar(),
|
|
||||||
shadow = Tkinter.BooleanVar(),
|
|
||||||
shade = Tkinter.BooleanVar(),
|
|
||||||
shade_filled_stacks = Tkinter.BooleanVar(),
|
|
||||||
shrink_face_down = Tkinter.BooleanVar(),
|
|
||||||
toolbar = Tkinter.IntVar(),
|
|
||||||
toolbar_style = Tkinter.StringVar(),
|
|
||||||
toolbar_relief = Tkinter.StringVar(),
|
|
||||||
toolbar_compound = Tkinter.StringVar(),
|
|
||||||
toolbar_size = Tkinter.IntVar(),
|
|
||||||
statusbar = Tkinter.BooleanVar(),
|
|
||||||
num_cards = Tkinter.BooleanVar(),
|
|
||||||
helpbar = Tkinter.BooleanVar(),
|
|
||||||
save_games_geometry = Tkinter.BooleanVar(),
|
|
||||||
splashscreen = Tkinter.BooleanVar(),
|
|
||||||
demo_logo = Tkinter.BooleanVar(),
|
|
||||||
mouse_type = Tkinter.StringVar(),
|
|
||||||
mouse_undo = Tkinter.BooleanVar(),
|
|
||||||
negative_bottom = Tkinter.BooleanVar(),
|
|
||||||
pause = Tkinter.BooleanVar(),
|
|
||||||
toolbar_vars = {},
|
|
||||||
)
|
|
||||||
for w in TOOLBAR_BUTTONS:
|
|
||||||
self.tkopt.toolbar_vars[w] = Tkinter.BooleanVar()
|
|
||||||
|
|
||||||
def _setOptions(self):
|
def _setOptions(self):
|
||||||
tkopt, opt = self.tkopt, self.app.opt
|
tkopt, opt = self.tkopt, self.app.opt
|
||||||
# set state of the menu items
|
# set state of the menu items
|
||||||
|
|
|
@ -107,3 +107,79 @@ class MfxMenu(MfxMenubar):
|
||||||
master.add_cascade(menu=self, name=name, label=label, underline=underline)
|
master.add_cascade(menu=self, name=name, label=label, underline=underline)
|
||||||
|
|
||||||
|
|
||||||
|
class PysolMenubarTkCommon:
|
||||||
|
def __init__(self, app, top, progress=None):
|
||||||
|
self._createTkOpt()
|
||||||
|
self._setOptions()
|
||||||
|
# init columnbreak
|
||||||
|
self.__cb_max = int(self.top.winfo_screenheight()/23)
|
||||||
|
## sh = self.top.winfo_screenheight()
|
||||||
|
## self.__cb_max = 22
|
||||||
|
## if sh >= 600: self.__cb_max = 27
|
||||||
|
## if sh >= 768: self.__cb_max = 32
|
||||||
|
## if sh >= 1024: self.__cb_max = 40
|
||||||
|
self.progress = progress
|
||||||
|
# create menus
|
||||||
|
self.__menubar = None
|
||||||
|
self.__menupath = {}
|
||||||
|
self.__keybindings = {}
|
||||||
|
self._createMenubar()
|
||||||
|
self.top = top
|
||||||
|
|
||||||
|
if self.progress: self.progress.update(step=1)
|
||||||
|
|
||||||
|
# set the menubar
|
||||||
|
self.updateBackgroundImagesMenu()
|
||||||
|
self.top.config(menu=self.__menubar)
|
||||||
|
|
||||||
|
def _createTkOpt(self):
|
||||||
|
# structure to convert menu-options to Toolkit variables
|
||||||
|
self.tkopt = Struct(
|
||||||
|
gameid = Tkinter.IntVar(),
|
||||||
|
gameid_popular = Tkinter.IntVar(),
|
||||||
|
comment = Tkinter.BooleanVar(),
|
||||||
|
autofaceup = Tkinter.BooleanVar(),
|
||||||
|
autodrop = Tkinter.BooleanVar(),
|
||||||
|
autodeal = Tkinter.BooleanVar(),
|
||||||
|
quickplay = Tkinter.BooleanVar(),
|
||||||
|
undo = Tkinter.BooleanVar(),
|
||||||
|
bookmarks = Tkinter.BooleanVar(),
|
||||||
|
hint = Tkinter.BooleanVar(),
|
||||||
|
shuffle = Tkinter.BooleanVar(),
|
||||||
|
highlight_piles = Tkinter.BooleanVar(),
|
||||||
|
highlight_cards = Tkinter.BooleanVar(),
|
||||||
|
highlight_samerank = Tkinter.BooleanVar(),
|
||||||
|
highlight_not_matching = Tkinter.BooleanVar(),
|
||||||
|
mahjongg_show_removed = Tkinter.BooleanVar(),
|
||||||
|
shisen_show_hint = Tkinter.BooleanVar(),
|
||||||
|
sound = Tkinter.BooleanVar(),
|
||||||
|
auto_scale = Tkinter.BooleanVar(),
|
||||||
|
cardback = Tkinter.IntVar(),
|
||||||
|
tabletile = Tkinter.IntVar(),
|
||||||
|
animations = Tkinter.IntVar(),
|
||||||
|
redeal_animation = Tkinter.BooleanVar(),
|
||||||
|
win_animation = Tkinter.BooleanVar(),
|
||||||
|
shadow = Tkinter.BooleanVar(),
|
||||||
|
shade = Tkinter.BooleanVar(),
|
||||||
|
shade_filled_stacks = Tkinter.BooleanVar(),
|
||||||
|
shrink_face_down = Tkinter.BooleanVar(),
|
||||||
|
toolbar = Tkinter.IntVar(),
|
||||||
|
toolbar_style = Tkinter.StringVar(),
|
||||||
|
toolbar_relief = Tkinter.StringVar(),
|
||||||
|
toolbar_compound = Tkinter.StringVar(),
|
||||||
|
toolbar_size = Tkinter.IntVar(),
|
||||||
|
statusbar = Tkinter.BooleanVar(),
|
||||||
|
num_cards = Tkinter.BooleanVar(),
|
||||||
|
helpbar = Tkinter.BooleanVar(),
|
||||||
|
save_games_geometry = Tkinter.BooleanVar(),
|
||||||
|
splashscreen = Tkinter.BooleanVar(),
|
||||||
|
demo_logo = Tkinter.BooleanVar(),
|
||||||
|
mouse_type = Tkinter.StringVar(),
|
||||||
|
mouse_undo = Tkinter.BooleanVar(),
|
||||||
|
negative_bottom = Tkinter.BooleanVar(),
|
||||||
|
pause = Tkinter.BooleanVar(),
|
||||||
|
theme = Tkinter.StringVar(),
|
||||||
|
toolbar_vars = {},
|
||||||
|
)
|
||||||
|
for w in TOOLBAR_BUTTONS:
|
||||||
|
self.tkopt.toolbar_vars[w] = Tkinter.BooleanVar()
|
||||||
|
|
Loading…
Add table
Reference in a new issue