diff options
Diffstat (limited to 'Tools/pynche')
-rw-r--r-- | Tools/pynche/PyncheWidget.py | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Tools/pynche/PyncheWidget.py b/Tools/pynche/PyncheWidget.py index 843efd7..1e651a3 100644 --- a/Tools/pynche/PyncheWidget.py +++ b/Tools/pynche/PyncheWidget.py @@ -4,6 +4,9 @@ This window provides the basic decorations, primarily including the menubar. It is used to bring up other windows. """ +import sys +import os +import string from Tkinter import * import tkMessageBox @@ -19,6 +22,7 @@ class PyncheWidget: self.__textwin = None self.__listwin = None self.__detailswin = None + self.__helpwin = None modal = self.__modal = not not master # If a master was given, we are running as a modal dialog servant to # some other application. We rearrange our UI in this case (there's @@ -73,6 +77,9 @@ class PyncheWidget: helpmenu.add_command(label='About Pynche...', command=self.__popup_about, underline=0) + helpmenu.add_command(label='Help...', + command=self.__popup_usage, + underline=0) # # Tie them all together # @@ -153,6 +160,11 @@ For information contact author: Barry A. Warsaw email : bwarsaw@python.org''' % __version__) + def __popup_usage(self, event=None): + if not self.__helpwin: + self.__helpwin = Helpwin(self.__root, self.__quit) + self.__helpwin.deiconify() + def __popup_text(self, event=None): if not self.__textwin: from TextViewer import TextViewer @@ -179,3 +191,51 @@ email : bwarsaw@python.org''' % __version__) def deiconify(self): self.__root.deiconify() + + + +class Helpwin: + def __init__(self, master, quitfunc): + from Main import __version__, docstring + self.__root = root = Toplevel(master, class_='Pynche') + root.protocol('WM_DELETE_WINDOW', self.__withdraw) + root.title('Pynche Help Window') + root.iconname('Pynche Help Window') + root.bind('<Alt-q>', quitfunc) + root.bind('<Alt-Q>', quitfunc) + root.bind('<Alt-w>', self.__withdraw) + root.bind('<Alt-W>', self.__withdraw) + + # more elaborate help is available in the README file + readmefile = os.path.join(sys.path[0], 'README') + try: + fp = None + try: + fp = open(readmefile) + contents = fp.read() + # wax the last page, it contains Emacs cruft + i = string.rfind(contents, '\f') + if i > 0: + contents = string.rstrip(contents[:i]) + finally: + if fp: + fp.close() + except IOError: + sys.stderr.write("Couldn't open Pynche's README, " + 'using docstring instead.\n') + contents = docstring() + + self.__text = text = Text(root, relief=SUNKEN, + width=80, height=24) + text.insert(0.0, contents) + scrollbar = Scrollbar(root) + scrollbar.pack(fill=Y, side=RIGHT) + text.pack(fill=BOTH, expand=YES) + text.configure(yscrollcommand=(scrollbar, 'set')) + scrollbar.configure(command=(text, 'yview')) + + def __withdraw(self, event=None): + self.__root.withdraw() + + def deiconify(self): + self.__root.deiconify() |