| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 1 | """Define the menu contents, hotkeys, and event bindings. | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 2 |  | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 3 | There is additional configuration information in the EditorWindow class (and | 
 | 4 | subclasses): the menus are created there based on the menu_specs (class) | 
 | 5 | variable, and menus not created are silently skipped in the code here.  This | 
 | 6 | makes it possible, for example, to define a Debug menu which is only present in | 
 | 7 | the PythonShell window, and a Format menu which is only present in the Editor | 
 | 8 | windows. | 
 | 9 |  | 
 | 10 | """ | 
| Terry Jan Reedy | 7e55db2 | 2014-07-28 22:23:59 -0400 | [diff] [blame] | 11 | from importlib.util import find_spec | 
 | 12 |  | 
| Terry Jan Reedy | 6fa5bdc | 2016-05-28 13:22:31 -0400 | [diff] [blame] | 13 | from idlelib.config import idleConf | 
| Ned Deily | b760167 | 2014-03-27 20:49:14 -0700 | [diff] [blame] | 14 |  | 
| Terry Jan Reedy | 6fa5bdc | 2016-05-28 13:22:31 -0400 | [diff] [blame] | 15 | #   Warning: menudefs is altered in macosx.overrideRootMenu() | 
| Ned Deily | b760167 | 2014-03-27 20:49:14 -0700 | [diff] [blame] | 16 | #   after it is determined that an OS X Aqua Tk is in use, | 
 | 17 | #   which cannot be done until after Tk() is first called. | 
 | 18 | #   Do not alter the 'file', 'options', or 'help' cascades here | 
 | 19 | #   without altering overrideRootMenu() as well. | 
 | 20 | #       TODO: Make this more robust | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 21 |  | 
 | 22 | menudefs = [ | 
 | 23 |  # underscore prefixes character to underscore | 
 | 24 |  ('file', [ | 
| Terry Jan Reedy | 8a0b775 | 2013-07-01 00:42:52 -0400 | [diff] [blame] | 25 |    ('_New File', '<<open-new-window>>'), | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 26 |    ('_Open...', '<<open-window-from-file>>'), | 
| Kurt B. Kaiser | d375abe | 2002-12-24 00:51:05 +0000 | [diff] [blame] | 27 |    ('Open _Module...', '<<open-module>>'), | 
| Cheryl Sabella | cd99e79 | 2017-09-23 16:46:01 -0400 | [diff] [blame] | 28 |    ('Module _Browser', '<<open-class-browser>>'), | 
| Kurt B. Kaiser | d375abe | 2002-12-24 00:51:05 +0000 | [diff] [blame] | 29 |    ('_Path Browser', '<<open-path-browser>>'), | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 30 |    None, | 
 | 31 |    ('_Save', '<<save-window>>'), | 
 | 32 |    ('Save _As...', '<<save-window-as-file>>'), | 
| Thomas Wouters | 00ee7ba | 2006-08-21 19:07:27 +0000 | [diff] [blame] | 33 |    ('Save Cop_y As...', '<<save-copy-of-window-as-file>>'), | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 34 |    None, | 
| Thomas Wouters | 00ee7ba | 2006-08-21 19:07:27 +0000 | [diff] [blame] | 35 |    ('Prin_t Window', '<<print-window>>'), | 
| Steven M. Gava | 7981ce5 | 2002-06-11 04:45:34 +0000 | [diff] [blame] | 36 |    None, | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 37 |    ('_Close', '<<close-window>>'), | 
 | 38 |    ('E_xit', '<<close-all-windows>>'), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 39 |    ]), | 
 | 40 |  | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 41 |  ('edit', [ | 
 | 42 |    ('_Undo', '<<undo>>'), | 
 | 43 |    ('_Redo', '<<redo>>'), | 
 | 44 |    None, | 
| Steven M. Gava | 82c6682 | 2002-02-18 01:45:43 +0000 | [diff] [blame] | 45 |    ('Cu_t', '<<cut>>'), | 
 | 46 |    ('_Copy', '<<copy>>'), | 
 | 47 |    ('_Paste', '<<paste>>'), | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 48 |    ('Select _All', '<<select-all>>'), | 
| Steven M. Gava | c597640 | 2002-01-04 03:06:08 +0000 | [diff] [blame] | 49 |    None, | 
 | 50 |    ('_Find...', '<<find>>'), | 
| Kurt B. Kaiser | d375abe | 2002-12-24 00:51:05 +0000 | [diff] [blame] | 51 |    ('Find A_gain', '<<find-again>>'), | 
 | 52 |    ('Find _Selection', '<<find-selection>>'), | 
| Steven M. Gava | c597640 | 2002-01-04 03:06:08 +0000 | [diff] [blame] | 53 |    ('Find in Files...', '<<find-in-files>>'), | 
 | 54 |    ('R_eplace...', '<<replace>>'), | 
| Kurt B. Kaiser | d375abe | 2002-12-24 00:51:05 +0000 | [diff] [blame] | 55 |    ('Go to _Line', '<<goto-line>>'), | 
| wohlganger | 58fc71c | 2017-09-10 16:19:47 -0500 | [diff] [blame] | 56 |    ('S_how Completions', '<<force-open-completions>>'), | 
 | 57 |    ('E_xpand Word', '<<expand-word>>'), | 
 | 58 |    ('Show C_all Tip', '<<force-open-calltip>>'), | 
 | 59 |    ('Show Surrounding P_arens', '<<flash-paren>>'), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 60 |    ]), | 
| wohlganger | 58fc71c | 2017-09-10 16:19:47 -0500 | [diff] [blame] | 61 |  | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 62 |  ('format', [ | 
| Miss Islington (bot) | 1fc43a3 | 2019-07-17 07:45:20 -0700 | [diff] [blame] | 63 |    ('F_ormat Paragraph', '<<format-paragraph>>'), | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 64 |    ('_Indent Region', '<<indent-region>>'), | 
 | 65 |    ('_Dedent Region', '<<dedent-region>>'), | 
 | 66 |    ('Comment _Out Region', '<<comment-region>>'), | 
 | 67 |    ('U_ncomment Region', '<<uncomment-region>>'), | 
 | 68 |    ('Tabify Region', '<<tabify-region>>'), | 
 | 69 |    ('Untabify Region', '<<untabify-region>>'), | 
 | 70 |    ('Toggle Tabs', '<<toggle-tabs>>'), | 
 | 71 |    ('New Indent Width', '<<change-indentwidth>>'), | 
| wohlganger | 58fc71c | 2017-09-10 16:19:47 -0500 | [diff] [blame] | 72 |    ('S_trip Trailing Whitespace', '<<do-rstrip>>'), | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 73 |    ]), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 74 |  | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 75 |  ('run', [ | 
| wohlganger | 58fc71c | 2017-09-10 16:19:47 -0500 | [diff] [blame] | 76 |    ('R_un Module', '<<run-module>>'), | 
| Miss Islington (bot) | ae526ee | 2019-06-17 19:47:55 -0700 | [diff] [blame] | 77 |    ('Run... _Customized', '<<run-custom>>'), | 
| Miss Islington (bot) | 9c95fc7 | 2019-08-04 14:04:49 -0700 | [diff] [blame] | 78 |    ('C_heck Module', '<<check-module>>'), | 
 | 79 |    ('Python Shell', '<<open-python-shell>>'), | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 80 |    ]), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 81 |  | 
| Kurt B. Kaiser | 1061e72 | 2003-01-04 01:43:53 +0000 | [diff] [blame] | 82 |  ('shell', [ | 
 | 83 |    ('_View Last Restart', '<<view-restart>>'), | 
 | 84 |    ('_Restart Shell', '<<restart-shell>>'), | 
| Terry Jan Reedy | 4b73676 | 2016-09-12 01:50:03 -0400 | [diff] [blame] | 85 |    None, | 
| Cheryl Sabella | c0381aa | 2018-12-28 15:11:30 -0500 | [diff] [blame] | 86 |    ('_Previous History', '<<history-previous>>'), | 
 | 87 |    ('_Next History', '<<history-next>>'), | 
 | 88 |    None, | 
| Terry Jan Reedy | 4b73676 | 2016-09-12 01:50:03 -0400 | [diff] [blame] | 89 |    ('_Interrupt Execution', '<<interrupt-execution>>'), | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 90 |    ]), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 91 |  | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 92 |  ('debug', [ | 
| Kurt B. Kaiser | d375abe | 2002-12-24 00:51:05 +0000 | [diff] [blame] | 93 |    ('_Go to File/Line', '<<goto-file-line>>'), | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 94 |    ('!_Debugger', '<<toggle-debugger>>'), | 
| Kurt B. Kaiser | 1061e72 | 2003-01-04 01:43:53 +0000 | [diff] [blame] | 95 |    ('_Stack Viewer', '<<open-stack-viewer>>'), | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 96 |    ('!_Auto-open Stack Viewer', '<<toggle-jit-stack-viewer>>'), | 
 | 97 |    ]), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 98 |  | 
| Kurt B. Kaiser | 1061e72 | 2003-01-04 01:43:53 +0000 | [diff] [blame] | 99 |  ('options', [ | 
| Terry Jan Reedy | a9421fb | 2014-10-22 20:15:18 -0400 | [diff] [blame] | 100 |    ('Configure _IDLE', '<<open-config-dialog>>'), | 
| Cheryl Sabella | c1b4b0f | 2018-12-22 01:25:45 -0500 | [diff] [blame] | 101 |    None, | 
 | 102 |    ('Show _Code Context', '<<toggle-code-context>>'), | 
| Miss Islington (bot) | 1da6a31 | 2019-07-23 06:04:13 -0700 | [diff] [blame] | 103 |    ('Show _Line Numbers', '<<toggle-line-numbers>>'), | 
 | 104 |    ('_Zoom Height', '<<zoom-height>>'), | 
| wohlganger | 58fc71c | 2017-09-10 16:19:47 -0500 | [diff] [blame] | 105 |    ]), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 106 |  | 
| Terry Jan Reedy | 33c7420 | 2018-06-20 22:49:55 -0400 | [diff] [blame] | 107 |  ('window', [ | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 108 |    ]), | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 109 |  | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 110 |  ('help', [ | 
| Kurt B. Kaiser | 8e92bf7 | 2003-01-14 22:03:31 +0000 | [diff] [blame] | 111 |    ('_About IDLE', '<<about-idle>>'), | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 112 |    None, | 
| Kurt B. Kaiser | 8e92bf7 | 2003-01-14 22:03:31 +0000 | [diff] [blame] | 113 |    ('_IDLE Help', '<<help>>'), | 
 | 114 |    ('Python _Docs', '<<python-docs>>'), | 
| Kurt B. Kaiser | 4cc5ef5 | 2003-01-22 00:23:23 +0000 | [diff] [blame] | 115 |    ]), | 
| David Scherer | 7aced17 | 2000-08-15 01:13:23 +0000 | [diff] [blame] | 116 | ] | 
 | 117 |  | 
| Terry Jan Reedy | 7e55db2 | 2014-07-28 22:23:59 -0400 | [diff] [blame] | 118 | if find_spec('turtledemo'): | 
 | 119 |     menudefs[-1][1].append(('Turtle Demo', '<<open-turtle-demo>>')) | 
 | 120 |  | 
| Steven M. Gava | 72c3bf0 | 2002-01-19 10:41:51 +0000 | [diff] [blame] | 121 | default_keydefs = idleConf.GetCurrentKeySet() | 
| Terry Jan Reedy | ea3dc80 | 2018-06-18 04:47:59 -0400 | [diff] [blame] | 122 |  | 
 | 123 | if __name__ == '__main__': | 
 | 124 |     from unittest import main | 
 | 125 |     main('idlelib.idle_test.test_mainmenu', verbosity=2) |