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