mirror of
https://github.com/shlomif/PySolFC.git
synced 2025-04-05 00:02:29 -04:00
Unify the codebases of menubar.pys.
TODO : move to the base class.
This commit is contained in:
parent
98fcd0a357
commit
2e557fde5d
2 changed files with 47 additions and 17 deletions
|
@ -83,7 +83,6 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
#
|
||||
|
||||
def _createMenubar(self):
|
||||
print "FluutterBat"
|
||||
MfxMenubar.addPath = self._addPath
|
||||
kw = { "name": "menubar" }
|
||||
self.menubar = MfxMenubar(self.top, **kw)
|
||||
|
@ -298,7 +297,7 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
self._bindKey(ctrl, "g", self.mRestart)
|
||||
self._bindKey("", "space", self.mDeal) # undocumented
|
||||
self._bindKey(ctrl, "y", lambda e: self.mPlayerStats(mode=100))
|
||||
self._bindKey(ctrl, "t", self.mPlayerStats)
|
||||
self._bindKey(ctrl, "t", lambda e: self.mPlayerStats(mode=105))
|
||||
self._bindKey("", "h", self.mHint)
|
||||
self._bindKey(ctrl, "h", self.mHint1) # undocumented
|
||||
##self._bindKey("", "Shift_L", self.mHighlightPiles)
|
||||
|
@ -554,9 +553,6 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
label = gi.short_name
|
||||
else:
|
||||
label = gi.name
|
||||
## menu.add_radiobutton(command=command, variable=variable,
|
||||
## columnbreak=columnbreak,
|
||||
## value=gi.id, label=label, name=None)
|
||||
# optimized by inlining
|
||||
menu.tk.call((menu._w, 'add', 'radiobutton') +
|
||||
menu._options({'command': command,
|
||||
|
|
|
@ -78,6 +78,9 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
# create the menubar
|
||||
#
|
||||
|
||||
def createThemesMenu(self, menu):
|
||||
return
|
||||
|
||||
def _createMenubar(self):
|
||||
MfxMenubar.addPath = self._addPath
|
||||
kw = { "name": "menubar" }
|
||||
|
@ -111,6 +114,7 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
menu.add_command(label=n_("&Open..."), command=self.mOpen, accelerator=m+"O")
|
||||
menu.add_command(label=n_("&Save"), command=self.mSave, accelerator=m+"S")
|
||||
menu.add_command(label=n_("Save &as..."), command=self.mSaveAs)
|
||||
menu.add_command(label=n_("E&xport current layout..."), command=self.mExportCurrentLayout)
|
||||
menu.add_separator()
|
||||
menu.add_command(label=n_("&Hold and quit"), command=self.mHoldAndQuit, accelerator=m+"X")
|
||||
if WIN_SYSTEM != "aqua":
|
||||
|
@ -157,18 +161,10 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
menu.add_command(label=n_("S&tatus..."), command=lambda : self.mPlayerStats(mode=100), accelerator=m+"Y")
|
||||
menu.add_checkbutton(label=n_("&Comments..."), variable=self.tkopt.comment, command=self.mEditGameComment)
|
||||
menu.add_separator()
|
||||
submenu = MfxMenu(menu, label=n_("&Statistics"))
|
||||
submenu.add_command(label=n_("Current game..."), command=lambda : self.mPlayerStats(mode=101))
|
||||
submenu.add_command(label=n_("All games..."), command=lambda : self.mPlayerStats(mode=102))
|
||||
submenu.add_separator()
|
||||
submenu.add_command(label=n_("Session log..."), command=lambda : self.mPlayerStats(mode=104))
|
||||
submenu.add_command(label=n_("Full log..."), command=lambda : self.mPlayerStats(mode=103))
|
||||
submenu.add_separator()
|
||||
submenu.add_command(label=TOP_TITLE+"...", command=lambda : self.mPlayerStats(mode=105), accelerator=m+"T")
|
||||
submenu.add_command(label=n_("Progression..."), command=lambda : self.mPlayerStats(mode=107))
|
||||
submenu = MfxMenu(menu, label=n_("D&emo statistics"))
|
||||
submenu.add_command(label=n_("Current game..."), command=lambda : self.mPlayerStats(mode=1101))
|
||||
submenu.add_command(label=n_("All games..."), command=lambda : self.mPlayerStats(mode=1102))
|
||||
menu.add_command(label=n_("&Statistics..."), command=self.mPlayerStats, accelerator=m+"T")
|
||||
menu.add_command(label=n_("Log..."), command=lambda : self.mPlayerStats(mode=103))
|
||||
menu.add_separator()
|
||||
menu.add_command(label=n_("D&emo statistics"), command=lambda : self.mPlayerStats(mode=1101))
|
||||
|
||||
menu = MfxMenu(self.menubar, label=n_("&Assist"))
|
||||
menu.add_command(label=n_("&Hint"), command=self.mHint, accelerator="H")
|
||||
|
@ -252,6 +248,7 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
menu.add_command(label=n_("&Colors..."), command=self.mOptColors)
|
||||
menu.add_command(label=n_("Time&outs..."), command=self.mOptTimeouts)
|
||||
menu.add_separator()
|
||||
self.createThemesMenu(menu)
|
||||
submenu = MfxMenu(menu, label=n_("&Toolbar"))
|
||||
createToolbarMenu(self, submenu)
|
||||
submenu = MfxMenu(menu, label=n_("Stat&usbar"))
|
||||
|
@ -759,6 +756,43 @@ class PysolMenubarTk(PysolMenubarTkCommon):
|
|||
if os.path.isfile(filename):
|
||||
self.game.loadGame(filename)
|
||||
|
||||
def mExportCurrentLayout(self, *event):
|
||||
if self._cancelDrag(break_pause=False): return
|
||||
game = self.game
|
||||
if not self.menustate.save_as:
|
||||
return
|
||||
if not game.Solver_Class:
|
||||
d = MfxMessageDialog(self.top, title=_('Export game error'),
|
||||
text=_('''
|
||||
Unsupported game for export.
|
||||
'''),
|
||||
bitmap='error')
|
||||
return
|
||||
|
||||
filename = game.filename
|
||||
if not filename:
|
||||
filename = self.app.getGameSaveName(self.game.id)
|
||||
if os.name == "posix" or os.path.supports_unicode_filenames:
|
||||
filename += "-" + self.game.getGameNumber(format=0)
|
||||
else:
|
||||
filename += "-01"
|
||||
filename += ".board"
|
||||
idir, ifile = os.path.split(os.path.normpath(filename))
|
||||
if not idir:
|
||||
idir = self.app.dn.savegames
|
||||
##print self.game.filename, ifile
|
||||
d = tkFileDialog.SaveAs()
|
||||
filename = d.show(filetypes=self.FILETYPES,
|
||||
defaultextension=self.DEFAULTEXTENSION,
|
||||
initialdir=idir, initialfile=ifile)
|
||||
if filename:
|
||||
filename = os.path.normpath(filename)
|
||||
##filename = os.path.normcase(filename)
|
||||
with open(filename, 'w') as fh:
|
||||
game = self.game
|
||||
fh.write(game.Solver_Class(game, self).calcBoardString())
|
||||
self.updateMenus()
|
||||
|
||||
def mSaveAs(self, *event):
|
||||
if self._cancelDrag(break_pause=False): return
|
||||
if not self.menustate.save_as:
|
||||
|
|
Loading…
Add table
Reference in a new issue