Home | History | Annotate | Download | only in idlelib
      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 idlelib.configHandler import idleConf
     13 from idlelib import macosxSupport
     14 
     15 menudefs = [
     16  # underscore prefixes character to underscore
     17  ('file', [
     18    ('_New Window', '<<open-new-window>>'),
     19    ('_Open...', '<<open-window-from-file>>'),
     20    ('Open _Module...', '<<open-module>>'),
     21    ('Class _Browser', '<<open-class-browser>>'),
     22    ('_Path Browser', '<<open-path-browser>>'),
     23    None,
     24    ('_Save', '<<save-window>>'),
     25    ('Save _As...', '<<save-window-as-file>>'),
     26    ('Save Cop_y As...', '<<save-copy-of-window-as-file>>'),
     27    None,
     28    ('Prin_t Window', '<<print-window>>'),
     29    None,
     30    ('_Close', '<<close-window>>'),
     31    ('E_xit', '<<close-all-windows>>'),
     32   ]),
     33  ('edit', [
     34    ('_Undo', '<<undo>>'),
     35    ('_Redo', '<<redo>>'),
     36    None,
     37    ('Cu_t', '<<cut>>'),
     38    ('_Copy', '<<copy>>'),
     39    ('_Paste', '<<paste>>'),
     40    ('Select _All', '<<select-all>>'),
     41    None,
     42    ('_Find...', '<<find>>'),
     43    ('Find A_gain', '<<find-again>>'),
     44    ('Find _Selection', '<<find-selection>>'),
     45    ('Find in Files...', '<<find-in-files>>'),
     46    ('R_eplace...', '<<replace>>'),
     47    ('Go to _Line', '<<goto-line>>'),
     48   ]),
     49 ('format', [
     50    ('_Indent Region', '<<indent-region>>'),
     51    ('_Dedent Region', '<<dedent-region>>'),
     52    ('Comment _Out Region', '<<comment-region>>'),
     53    ('U_ncomment Region', '<<uncomment-region>>'),
     54    ('Tabify Region', '<<tabify-region>>'),
     55    ('Untabify Region', '<<untabify-region>>'),
     56    ('Toggle Tabs', '<<toggle-tabs>>'),
     57    ('New Indent Width', '<<change-indentwidth>>'),
     58    ]),
     59  ('run', [
     60    ('Python Shell', '<<open-python-shell>>'),
     61    ]),
     62  ('shell', [
     63    ('_View Last Restart', '<<view-restart>>'),
     64    ('_Restart Shell', '<<restart-shell>>'),
     65    ]),
     66  ('debug', [
     67    ('_Go to File/Line', '<<goto-file-line>>'),
     68    ('!_Debugger', '<<toggle-debugger>>'),
     69    ('_Stack Viewer', '<<open-stack-viewer>>'),
     70    ('!_Auto-open Stack Viewer', '<<toggle-jit-stack-viewer>>'),
     71    ]),
     72  ('options', [
     73    ('_Configure IDLE...', '<<open-config-dialog>>'),
     74    None,
     75    ]),
     76  ('help', [
     77    ('_About IDLE', '<<about-idle>>'),
     78    None,
     79    ('_IDLE Help', '<<help>>'),
     80    ('Python _Docs', '<<python-docs>>'),
     81    ]),
     82 ]
     83 
     84 if macosxSupport.runningAsOSXApp():
     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 default_keydefs = idleConf.GetCurrentKeySet()
    102 
    103 del sys
    104