/opt/alt/python37/lib64/python3.7/idlelib
"""About Dialog for IDLE """ import os import sys from platform import python_version, architecture from tkinter import Toplevel, Frame, Label, Button, PhotoImage from tkinter import SUNKEN, TOP, BOTTOM, LEFT, X, BOTH, W, EW, NSEW, E from idlelib import textview def build_bits(): "Return bits for platform." if sys.platform == 'darwin': return '64' if sys.maxsize > 2**32 else '32' else: return architecture()[0][:2] class AboutDialog(Toplevel): """Modal about dialog for idle """ def __init__(self, parent, title=None, *, _htest=False, _utest=False): """Create popup, do not return until tk widget destroyed. parent - parent of this dialog title - string which is title of popup dialog _htest - bool, change box location when running htest _utest - bool, don't wait_window when running unittest """ Toplevel.__init__(self, parent) self.configure(borderwidth=5) # place dialog below parent if running htest self.geometry("+%d+%d" % ( parent.winfo_rootx()+30, parent.winfo_rooty()+(30 if not _htest else 100))) self.bg = "#bbbbbb" self.fg = "#000000" self.create_widgets() self.resizable(height=False, width=False) self.title(title or f'About IDLE {python_version()} ({build_bits()} bit)') self.transient(parent) self.grab_set() self.protocol("WM_DELETE_WINDOW", self.ok) self.parent = parent self.button_ok.focus_set() self.bind('<Return>', self.ok) # dismiss dialog self.bind('<Escape>', self.ok) # dismiss dialog self._current_textview = None self._utest = _utest if not _utest: self.deiconify() self.wait_window() def create_widgets(self): frame = Frame(self, borderwidth=2, relief=SUNKEN) frame_buttons = Frame(self) frame_buttons.pack(side=BOTTOM, fill=X) frame.pack(side=TOP, expand=True, fill=BOTH) self.button_ok = Button(frame_buttons, text='Close', command=self.ok) self.button_ok.pack(padx=5, pady=5) frame_background = Frame(frame, bg=self.bg) frame_background.pack(expand=True, fill=BOTH) header = Label(frame_background, text='IDLE', fg=self.fg, bg=self.bg, font=('courier', 24, 'bold')) header.grid(row=0, column=0, sticky=E, padx=10, pady=10) tk_patchlevel = self.tk.call('info', 'patchlevel') ext = '.png' if tk_patchlevel >= '8.6' else '.gif' icon = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'Icons', f'idle_48{ext}') self.icon_image = PhotoImage(master=self._root(), file=icon) logo = Label(frame_background, image=self.icon_image, bg=self.bg) logo.grid(row=0, column=0, sticky=W, rowspan=2, padx=10, pady=10) byline_text = "Python's Integrated Development\nand Learning Environment" + 5*'\n' byline = Label(frame_background, text=byline_text, justify=LEFT, fg=self.fg, bg=self.bg) byline.grid(row=2, column=0, sticky=W, columnspan=3, padx=10, pady=5) email = Label(frame_background, text='email: idle-dev@python.org', justify=LEFT, fg=self.fg, bg=self.bg) email.grid(row=6, column=0, columnspan=2, sticky=W, padx=10, pady=0) docs = Label(frame_background, text='https://docs.python.org/' + python_version()[:3] + '/library/idle.html', justify=LEFT, fg=self.fg, bg=self.bg) docs.grid(row=7, column=0, columnspan=2, sticky=W, padx=10, pady=0) Frame(frame_background, borderwidth=1, relief=SUNKEN, height=2, bg=self.bg).grid(row=8, column=0, sticky=EW, columnspan=3, padx=5, pady=5) pyver = Label(frame_background, text='Python version: ' + python_version(), fg=self.fg, bg=self.bg) pyver.grid(row=9, column=0, sticky=W, padx=10, pady=0) tkver = Label(frame_background, text='Tk version: ' + tk_patchlevel, fg=self.fg, bg=self.bg) tkver.grid(row=9, column=1, sticky=W, padx=2, pady=0) py_buttons = Frame(frame_background, bg=self.bg) py_buttons.grid(row=10, column=0, columnspan=2, sticky=NSEW) self.py_license = Button(py_buttons, text='License', width=8, highlightbackground=self.bg, command=self.show_py_license) self.py_license.pack(side=LEFT, padx=10, pady=10) self.py_copyright = Button(py_buttons, text='Copyright', width=8, highlightbackground=self.bg, command=self.show_py_copyright) self.py_copyright.pack(side=LEFT, padx=10, pady=10) self.py_credits = Button(py_buttons, text='Credits', width=8, highlightbackground=self.bg, command=self.show_py_credits) self.py_credits.pack(side=LEFT, padx=10, pady=10) Frame(frame_background, borderwidth=1, relief=SUNKEN, height=2, bg=self.bg).grid(row=11, column=0, sticky=EW, columnspan=3, padx=5, pady=5) idlever = Label(frame_background, text='IDLE version: ' + python_version(), fg=self.fg, bg=self.bg) idlever.grid(row=12, column=0, sticky=W, padx=10, pady=0) idle_buttons = Frame(frame_background, bg=self.bg) idle_buttons.grid(row=13, column=0, columnspan=3, sticky=NSEW) self.readme = Button(idle_buttons, text='README', width=8, highlightbackground=self.bg, command=self.show_readme) self.readme.pack(side=LEFT, padx=10, pady=10) self.idle_news = Button(idle_buttons, text='NEWS', width=8, highlightbackground=self.bg, command=self.show_idle_news) self.idle_news.pack(side=LEFT, padx=10, pady=10) self.idle_credits = Button(idle_buttons, text='Credits', width=8, highlightbackground=self.bg, command=self.show_idle_credits) self.idle_credits.pack(side=LEFT, padx=10, pady=10) # License, copyright, and credits are of type _sitebuiltins._Printer def show_py_license(self): "Handle License button event." self.display_printer_text('About - License', license) def show_py_copyright(self): "Handle Copyright button event." self.display_printer_text('About - Copyright', copyright) def show_py_credits(self): "Handle Python Credits button event." self.display_printer_text('About - Python Credits', credits) # Encode CREDITS.txt to utf-8 for proper version of Loewis. # Specify others as ascii until need utf-8, so catch errors. def show_idle_credits(self): "Handle Idle Credits button event." self.display_file_text('About - Credits', 'CREDITS.txt', 'utf-8') def show_readme(self): "Handle Readme button event." self.display_file_text('About - Readme', 'README.txt', 'ascii') def show_idle_news(self): "Handle News button event." self.display_file_text('About - NEWS', 'NEWS.txt', 'utf-8') def display_printer_text(self, title, printer): """Create textview for built-in constants. Built-in constants have type _sitebuiltins._Printer. The text is extracted from the built-in and then sent to a text viewer with self as the parent and title as the title of the popup. """ printer._Printer__setup() text = '\n'.join(printer._Printer__lines) self._current_textview = textview.view_text( self, title, text, _utest=self._utest) def display_file_text(self, title, filename, encoding=None): """Create textview for filename. The filename needs to be in the current directory. The path is sent to a text viewer with self as the parent, title as the title of the popup, and the file encoding. """ fn = os.path.join(os.path.abspath(os.path.dirname(__file__)), filename) self._current_textview = textview.view_file( self, title, fn, encoding, _utest=self._utest) def ok(self, event=None): "Dismiss help_about dialog." self.grab_release() self.destroy() if __name__ == '__main__': from unittest import main main('idlelib.idle_test.test_help_about', verbosity=2, exit=False) from idlelib.idle_test.htest import run run(AboutDialog)
.
Edit
..
Edit
CREDITS.txt
Edit
ChangeLog
Edit
HISTORY.txt
Edit
Icons
Edit
NEWS.txt
Edit
NEWS2x.txt
Edit
README.txt
Edit
TODO.txt
Edit
__init__.py
Edit
__main__.py
Edit
__pycache__
Edit
autocomplete.py
Edit
autocomplete_w.py
Edit
autoexpand.py
Edit
browser.py
Edit
calltip.py
Edit
calltip_w.py
Edit
codecontext.py
Edit
colorizer.py
Edit
config-extensions.def
Edit
config-highlight.def
Edit
config-keys.def
Edit
config-main.def
Edit
config.py
Edit
config_key.py
Edit
configdialog.py
Edit
debugger.py
Edit
debugger_r.py
Edit
debugobj.py
Edit
debugobj_r.py
Edit
delegator.py
Edit
dynoption.py
Edit
editor.py
Edit
extend.txt
Edit
filelist.py
Edit
format.py
Edit
grep.py
Edit
help.html
Edit
help.py
Edit
help_about.py
Edit
history.py
Edit
hyperparser.py
Edit
idle.py
Edit
idle.pyw
Edit
idle_test
Edit
iomenu.py
Edit
macosx.py
Edit
mainmenu.py
Edit
multicall.py
Edit
outwin.py
Edit
parenmatch.py
Edit
pathbrowser.py
Edit
percolator.py
Edit
pyparse.py
Edit
pyshell.py
Edit
query.py
Edit
redirector.py
Edit
replace.py
Edit
rpc.py
Edit
run.py
Edit
runscript.py
Edit
scrolledlist.py
Edit
search.py
Edit
searchbase.py
Edit
searchengine.py
Edit
sidebar.py
Edit
squeezer.py
Edit
stackviewer.py
Edit
statusbar.py
Edit
textview.py
Edit
tooltip.py
Edit
tree.py
Edit
undo.py
Edit
window.py
Edit
zoomheight.py
Edit
zzdummy.py
Edit