17db96d56Sopenharmony_ci"""Define the menu contents, hotkeys, and event bindings.
27db96d56Sopenharmony_ci
37db96d56Sopenharmony_ciThere is additional configuration information in the EditorWindow class (and
47db96d56Sopenharmony_cisubclasses): the menus are created there based on the menu_specs (class)
57db96d56Sopenharmony_civariable, and menus not created are silently skipped in the code here.  This
67db96d56Sopenharmony_cimakes it possible, for example, to define a Debug menu which is only present in
77db96d56Sopenharmony_cithe PythonShell window, and a Format menu which is only present in the Editor
87db96d56Sopenharmony_ciwindows.
97db96d56Sopenharmony_ci
107db96d56Sopenharmony_ci"""
117db96d56Sopenharmony_cifrom importlib.util import find_spec
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_cifrom idlelib.config import idleConf
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci#   Warning: menudefs is altered in macosx.overrideRootMenu()
167db96d56Sopenharmony_ci#   after it is determined that an OS X Aqua Tk is in use,
177db96d56Sopenharmony_ci#   which cannot be done until after Tk() is first called.
187db96d56Sopenharmony_ci#   Do not alter the 'file', 'options', or 'help' cascades here
197db96d56Sopenharmony_ci#   without altering overrideRootMenu() as well.
207db96d56Sopenharmony_ci#       TODO: Make this more robust
217db96d56Sopenharmony_ci
227db96d56Sopenharmony_cimenudefs = [
237db96d56Sopenharmony_ci # underscore prefixes character to underscore
247db96d56Sopenharmony_ci ('file', [
257db96d56Sopenharmony_ci   ('_New File', '<<open-new-window>>'),
267db96d56Sopenharmony_ci   ('_Open...', '<<open-window-from-file>>'),
277db96d56Sopenharmony_ci   ('Open _Module...', '<<open-module>>'),
287db96d56Sopenharmony_ci   ('Module _Browser', '<<open-class-browser>>'),
297db96d56Sopenharmony_ci   ('_Path Browser', '<<open-path-browser>>'),
307db96d56Sopenharmony_ci   None,
317db96d56Sopenharmony_ci   ('_Save', '<<save-window>>'),
327db96d56Sopenharmony_ci   ('Save _As...', '<<save-window-as-file>>'),
337db96d56Sopenharmony_ci   ('Save Cop_y As...', '<<save-copy-of-window-as-file>>'),
347db96d56Sopenharmony_ci   None,
357db96d56Sopenharmony_ci   ('Prin_t Window', '<<print-window>>'),
367db96d56Sopenharmony_ci   None,
377db96d56Sopenharmony_ci   ('_Close Window', '<<close-window>>'),
387db96d56Sopenharmony_ci   ('E_xit IDLE', '<<close-all-windows>>'),
397db96d56Sopenharmony_ci   ]),
407db96d56Sopenharmony_ci
417db96d56Sopenharmony_ci ('edit', [
427db96d56Sopenharmony_ci   ('_Undo', '<<undo>>'),
437db96d56Sopenharmony_ci   ('_Redo', '<<redo>>'),
447db96d56Sopenharmony_ci   None,
457db96d56Sopenharmony_ci   ('Select _All', '<<select-all>>'),
467db96d56Sopenharmony_ci   ('Cu_t', '<<cut>>'),
477db96d56Sopenharmony_ci   ('_Copy', '<<copy>>'),
487db96d56Sopenharmony_ci   ('_Paste', '<<paste>>'),
497db96d56Sopenharmony_ci   None,
507db96d56Sopenharmony_ci   ('_Find...', '<<find>>'),
517db96d56Sopenharmony_ci   ('Find A_gain', '<<find-again>>'),
527db96d56Sopenharmony_ci   ('Find _Selection', '<<find-selection>>'),
537db96d56Sopenharmony_ci   ('Find in Files...', '<<find-in-files>>'),
547db96d56Sopenharmony_ci   ('R_eplace...', '<<replace>>'),
557db96d56Sopenharmony_ci   None,
567db96d56Sopenharmony_ci   ('Go to _Line', '<<goto-line>>'),
577db96d56Sopenharmony_ci   ('S_how Completions', '<<force-open-completions>>'),
587db96d56Sopenharmony_ci   ('E_xpand Word', '<<expand-word>>'),
597db96d56Sopenharmony_ci   ('Show C_all Tip', '<<force-open-calltip>>'),
607db96d56Sopenharmony_ci   ('Show Surrounding P_arens', '<<flash-paren>>'),
617db96d56Sopenharmony_ci   ]),
627db96d56Sopenharmony_ci
637db96d56Sopenharmony_ci ('format', [
647db96d56Sopenharmony_ci   ('F_ormat Paragraph', '<<format-paragraph>>'),
657db96d56Sopenharmony_ci   ('_Indent Region', '<<indent-region>>'),
667db96d56Sopenharmony_ci   ('_Dedent Region', '<<dedent-region>>'),
677db96d56Sopenharmony_ci   ('Comment _Out Region', '<<comment-region>>'),
687db96d56Sopenharmony_ci   ('U_ncomment Region', '<<uncomment-region>>'),
697db96d56Sopenharmony_ci   ('Tabify Region', '<<tabify-region>>'),
707db96d56Sopenharmony_ci   ('Untabify Region', '<<untabify-region>>'),
717db96d56Sopenharmony_ci   ('Toggle Tabs', '<<toggle-tabs>>'),
727db96d56Sopenharmony_ci   ('New Indent Width', '<<change-indentwidth>>'),
737db96d56Sopenharmony_ci   ('S_trip Trailing Whitespace', '<<do-rstrip>>'),
747db96d56Sopenharmony_ci   ]),
757db96d56Sopenharmony_ci
767db96d56Sopenharmony_ci ('run', [
777db96d56Sopenharmony_ci   ('R_un Module', '<<run-module>>'),
787db96d56Sopenharmony_ci   ('Run... _Customized', '<<run-custom>>'),
797db96d56Sopenharmony_ci   ('C_heck Module', '<<check-module>>'),
807db96d56Sopenharmony_ci   ('Python Shell', '<<open-python-shell>>'),
817db96d56Sopenharmony_ci   ]),
827db96d56Sopenharmony_ci
837db96d56Sopenharmony_ci ('shell', [
847db96d56Sopenharmony_ci   ('_View Last Restart', '<<view-restart>>'),
857db96d56Sopenharmony_ci   ('_Restart Shell', '<<restart-shell>>'),
867db96d56Sopenharmony_ci   None,
877db96d56Sopenharmony_ci   ('_Previous History', '<<history-previous>>'),
887db96d56Sopenharmony_ci   ('_Next History', '<<history-next>>'),
897db96d56Sopenharmony_ci   None,
907db96d56Sopenharmony_ci   ('_Interrupt Execution', '<<interrupt-execution>>'),
917db96d56Sopenharmony_ci   ]),
927db96d56Sopenharmony_ci
937db96d56Sopenharmony_ci ('debug', [
947db96d56Sopenharmony_ci   ('_Go to File/Line', '<<goto-file-line>>'),
957db96d56Sopenharmony_ci   ('!_Debugger', '<<toggle-debugger>>'),
967db96d56Sopenharmony_ci   ('_Stack Viewer', '<<open-stack-viewer>>'),
977db96d56Sopenharmony_ci   ('!_Auto-open Stack Viewer', '<<toggle-jit-stack-viewer>>'),
987db96d56Sopenharmony_ci   ]),
997db96d56Sopenharmony_ci
1007db96d56Sopenharmony_ci ('options', [
1017db96d56Sopenharmony_ci   ('Configure _IDLE', '<<open-config-dialog>>'),
1027db96d56Sopenharmony_ci   None,
1037db96d56Sopenharmony_ci   ('Show _Code Context', '<<toggle-code-context>>'),
1047db96d56Sopenharmony_ci   ('Show _Line Numbers', '<<toggle-line-numbers>>'),
1057db96d56Sopenharmony_ci   ('_Zoom Height', '<<zoom-height>>'),
1067db96d56Sopenharmony_ci   ]),
1077db96d56Sopenharmony_ci
1087db96d56Sopenharmony_ci ('window', [
1097db96d56Sopenharmony_ci   ]),
1107db96d56Sopenharmony_ci
1117db96d56Sopenharmony_ci ('help', [
1127db96d56Sopenharmony_ci   ('_About IDLE', '<<about-idle>>'),
1137db96d56Sopenharmony_ci   None,
1147db96d56Sopenharmony_ci   ('_IDLE Doc', '<<help>>'),
1157db96d56Sopenharmony_ci   ('Python _Docs', '<<python-docs>>'),
1167db96d56Sopenharmony_ci   ]),
1177db96d56Sopenharmony_ci]
1187db96d56Sopenharmony_ci
1197db96d56Sopenharmony_ciif find_spec('turtledemo'):
1207db96d56Sopenharmony_ci    menudefs[-1][1].append(('Turtle Demo', '<<open-turtle-demo>>'))
1217db96d56Sopenharmony_ci
1227db96d56Sopenharmony_cidefault_keydefs = idleConf.GetCurrentKeySet()
1237db96d56Sopenharmony_ci
1247db96d56Sopenharmony_ciif __name__ == '__main__':
1257db96d56Sopenharmony_ci    from unittest import main
1267db96d56Sopenharmony_ci    main('idlelib.idle_test.test_mainmenu', verbosity=2)
127