|
1 """Define the menu contents, hotkeys, and event bindings. |
|
2 |
|
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 """ |
|
11 import sys |
|
12 from configHandler import idleConf |
|
13 |
|
14 menudefs = [ |
|
15 # underscore prefixes character to underscore |
|
16 ('file', [ |
|
17 ('_New Window', '<<open-new-window>>'), |
|
18 ('_Open...', '<<open-window-from-file>>'), |
|
19 ('Open _Module...', '<<open-module>>'), |
|
20 ('Class _Browser', '<<open-class-browser>>'), |
|
21 ('_Path Browser', '<<open-path-browser>>'), |
|
22 None, |
|
23 ('_Save', '<<save-window>>'), |
|
24 ('Save _As...', '<<save-window-as-file>>'), |
|
25 ('Save Cop_y As...', '<<save-copy-of-window-as-file>>'), |
|
26 None, |
|
27 ('Prin_t Window', '<<print-window>>'), |
|
28 None, |
|
29 ('_Close', '<<close-window>>'), |
|
30 ('E_xit', '<<close-all-windows>>'), |
|
31 ]), |
|
32 ('edit', [ |
|
33 ('_Undo', '<<undo>>'), |
|
34 ('_Redo', '<<redo>>'), |
|
35 None, |
|
36 ('Cu_t', '<<cut>>'), |
|
37 ('_Copy', '<<copy>>'), |
|
38 ('_Paste', '<<paste>>'), |
|
39 ('Select _All', '<<select-all>>'), |
|
40 None, |
|
41 ('_Find...', '<<find>>'), |
|
42 ('Find A_gain', '<<find-again>>'), |
|
43 ('Find _Selection', '<<find-selection>>'), |
|
44 ('Find in Files...', '<<find-in-files>>'), |
|
45 ('R_eplace...', '<<replace>>'), |
|
46 ('Go to _Line', '<<goto-line>>'), |
|
47 ]), |
|
48 ('format', [ |
|
49 ('_Indent Region', '<<indent-region>>'), |
|
50 ('_Dedent Region', '<<dedent-region>>'), |
|
51 ('Comment _Out Region', '<<comment-region>>'), |
|
52 ('U_ncomment Region', '<<uncomment-region>>'), |
|
53 ('Tabify Region', '<<tabify-region>>'), |
|
54 ('Untabify Region', '<<untabify-region>>'), |
|
55 ('Toggle Tabs', '<<toggle-tabs>>'), |
|
56 ('New Indent Width', '<<change-indentwidth>>'), |
|
57 ]), |
|
58 ('run', [ |
|
59 ('Python Shell', '<<open-python-shell>>'), |
|
60 ]), |
|
61 ('shell', [ |
|
62 ('_View Last Restart', '<<view-restart>>'), |
|
63 ('_Restart Shell', '<<restart-shell>>'), |
|
64 ]), |
|
65 ('debug', [ |
|
66 ('_Go to File/Line', '<<goto-file-line>>'), |
|
67 ('!_Debugger', '<<toggle-debugger>>'), |
|
68 ('_Stack Viewer', '<<open-stack-viewer>>'), |
|
69 ('!_Auto-open Stack Viewer', '<<toggle-jit-stack-viewer>>'), |
|
70 ]), |
|
71 ('options', [ |
|
72 ('_Configure IDLE...', '<<open-config-dialog>>'), |
|
73 None, |
|
74 ]), |
|
75 ('help', [ |
|
76 ('_About IDLE', '<<about-idle>>'), |
|
77 None, |
|
78 ('_IDLE Help', '<<help>>'), |
|
79 ('Python _Docs', '<<python-docs>>'), |
|
80 ]), |
|
81 ] |
|
82 |
|
83 import sys |
|
84 if sys.platform == 'darwin' and '.app' in sys.executable: |
|
85 # Running as a proper MacOS application bundle. This block restructures |
|
86 # the menus a little to make them conform better to the HIG. |
|
87 |
|
88 quitItem = menudefs[0][1][-1] |
|
89 closeItem = menudefs[0][1][-2] |
|
90 |
|
91 # Remove the last 3 items of the file menu: a separator, close window and |
|
92 # quit. Close window will be reinserted just above the save item, where |
|
93 # it should be according to the HIG. Quit is in the application menu. |
|
94 del menudefs[0][1][-3:] |
|
95 menudefs[0][1].insert(6, closeItem) |
|
96 |
|
97 # Remove the 'About' entry from the help menu, it is in the application |
|
98 # menu |
|
99 del menudefs[-1][1][0:2] |
|
100 |
|
101 menudefs.insert(0, |
|
102 ('application', [ |
|
103 ('About IDLE', '<<about-idle>>'), |
|
104 None, |
|
105 ('_Preferences....', '<<open-config-dialog>>'), |
|
106 ])) |
|
107 |
|
108 |
|
109 default_keydefs = idleConf.GetCurrentKeySet() |
|
110 |
|
111 del sys |