1 /* editor menu definitions and initialisation
3 Copyright (C) 1996, 1998, 2001, 2002, 2003, 2005, 2007
4 Free Software Foundation, Inc.
6 Authors: 1996, 1997 Paul Sheer
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 * \brief Source: editor menu definitions and initialisation
34 #include <sys/types.h>
42 #include "../src/global.h"
44 #include "edit-impl.h"
45 #include "edit-widget.h"
46 #include "editcmddef.h"
48 #include "../src/tty/tty.h" /* KEY_F */
49 #include "../src/tty/key.h" /* XCTRL */
51 #include "../src/cmd.h" /* save_setup_cmd() */
52 #include "../src/wtools.h" /* query_dialog() */
53 #include "../src/menu.h" /* menu_entry */
54 #include "../src/main.h" /* drop_menus */
55 #include "../src/learn.h" /* learn_keys */
57 #include "edit-widget.h"
58 #include "../src/cmddef.h"
61 menu_cmd (int command
)
63 edit_execute_key_command (wedit
, command
, -1);
64 edit_update_screen (wedit
);
67 static void menu_key (int i
)
69 send_message ((Widget
*) wedit
, WIDGET_KEY
, i
);
75 query_dialog (_(" About "),
76 _("\n Cooledit v3.11.5\n\n"
77 " Copyright (C) 1996 the Free Software Foundation\n\n"
78 " A user friendly text editor written\n"
79 " for the Midnight Commander.\n"), D_NORMAL
,
108 menu_save_as_cmd (void)
110 menu_cmd (CK_Save_As
);
114 menu_insert_file_cmd (void)
116 menu_cmd (CK_Insert_File
);
132 menu_markcol_cmd (void)
134 menu_cmd (CK_Column_Mark
);
140 menu_cmd (CK_Toggle_Insert
);
156 menu_delete_cmd (void)
158 menu_cmd (CK_Remove
);
162 menu_xstore_cmd (void)
164 menu_cmd (CK_XStore
);
174 menu_xpaste_cmd (void)
176 menu_cmd (CK_XPaste
);
180 menu_toggle_bookmark_cmd (void)
182 menu_cmd (CK_Toggle_Bookmark
);
186 menu_flush_bookmark_cmd (void)
188 menu_cmd (CK_Flush_Bookmarks
);
192 menu_next_bookmark_cmd (void)
194 menu_cmd (CK_Next_Bookmark
);
198 menu_prev_bookmark_cmd (void)
200 menu_cmd (CK_Prev_Bookmark
);
206 menu_cmd (CK_Save_Block
);
210 menu_search_cmd (void)
216 menu_search_again_cmd (void)
218 menu_cmd (CK_Find_Again
);
222 menu_replace_cmd (void)
224 menu_cmd (CK_Replace
);
228 menu_select_codepage_cmd (void)
230 menu_cmd (CK_SelectCodepage
);
234 menu_begin_record_cmd (void)
236 menu_cmd (CK_Begin_Record_Macro
);
240 menu_end_record_cmd (void)
242 menu_cmd (CK_End_Record_Macro
);
246 menu_exec_macro_cmd (void)
248 menu_key (XCTRL ('a'));
252 menu_exec_macro_delete_cmd (void)
254 menu_cmd (CK_Delete_Macro
);
258 menu_c_form_cmd (void)
260 menu_key (KEY_F (19));
264 menu_ispell_cmd (void)
266 menu_cmd (CK_Pipe_Block (1));
278 menu_cmd (CK_ExtCmd
);
294 menu_beginning_cmd (void)
296 menu_cmd (CK_Beginning_Of_Text
);
302 menu_cmd (CK_End_Of_Text
);
306 menu_refresh_cmd (void)
308 menu_cmd (CK_Refresh
);
312 menu_goto_line (void)
318 menu_toggle_line_state (void)
320 menu_cmd (CK_Toggle_Line_State
);
324 menu_goto_bracket (void)
326 menu_cmd (CK_Match_Bracket
);
332 menu_key (XCTRL ('q'));
336 menu_format_paragraph (void)
338 menu_cmd (CK_Paragraph_Format
);
342 menu_edit_syntax_file_cmd (void)
344 menu_cmd (CK_Load_Syntax_File
);
348 menu_edit_menu_file_cmd (void)
350 menu_cmd (CK_Load_Menu_File
);
354 menu_user_menu_cmd (void)
356 menu_key (KEY_F (11));
360 menu_find_declare (void)
362 menu_cmd (CK_Find_Definition
);
366 menu_declare_back (void)
368 menu_cmd (CK_Load_Prev_File
);
372 menu_declare_forward (void)
374 menu_cmd (CK_Load_Next_File
);
377 static menu_entry FileMenu
[] =
379 {' ', N_("&Open file..."), NULL_HOTKEY
, menu_load_cmd
},
380 {' ', N_("&New C-n"), NULL_HOTKEY
, menu_new_cmd
},
381 {' ', "", NULL_HOTKEY
, 0},
382 {' ', N_("&Save F2"), NULL_HOTKEY
, menu_save_cmd
},
383 {' ', N_("Save &as... F12"), NULL_HOTKEY
, menu_save_as_cmd
},
384 {' ', "", NULL_HOTKEY
, 0},
385 {' ', N_("&Insert file... F15"), NULL_HOTKEY
, menu_insert_file_cmd
},
386 {' ', N_("Copy to &file... C-f"), NULL_HOTKEY
, menu_cut_cmd
},
387 {' ', "", NULL_HOTKEY
, 0},
388 {' ', N_("&User menu... F11"), NULL_HOTKEY
, menu_user_menu_cmd
},
389 {' ', "", NULL_HOTKEY
, 0},
390 {' ', N_("A&bout... "), NULL_HOTKEY
, edit_about_cmd
},
391 {' ', "", NULL_HOTKEY
, 0},
392 {' ', N_("&Quit F10"), NULL_HOTKEY
, menu_quit_cmd
}
395 static menu_entry FileMenuEmacs
[] =
397 {' ', N_("&Open file..."), NULL_HOTKEY
, menu_load_cmd
},
398 {' ', N_("&New C-x k"), NULL_HOTKEY
, menu_new_cmd
},
399 {' ', "", NULL_HOTKEY
, 0},
400 {' ', N_("&Save F2"), NULL_HOTKEY
, menu_save_cmd
},
401 {' ', N_("Save &as... F12"), NULL_HOTKEY
, menu_save_as_cmd
},
402 {' ', "", NULL_HOTKEY
, 0},
403 {' ', N_("&Insert file... F15"), NULL_HOTKEY
, menu_insert_file_cmd
},
404 {' ', N_("Copy to &file... "), NULL_HOTKEY
, menu_cut_cmd
},
405 {' ', "", NULL_HOTKEY
, 0},
406 {' ', N_("&User menu... F11"), NULL_HOTKEY
, menu_user_menu_cmd
},
407 {' ', "", NULL_HOTKEY
, 0},
408 {' ', N_("A&bout... "), NULL_HOTKEY
, edit_about_cmd
},
409 {' ', "", NULL_HOTKEY
, 0},
410 {' ', N_("&Quit F10"), NULL_HOTKEY
, menu_quit_cmd
}
413 static menu_entry EditMenu
[] =
415 {' ', N_("&Toggle mark F3"), NULL_HOTKEY
, menu_mark_cmd
},
416 {' ', N_("Mar&k columns S-F3"), NULL_HOTKEY
, menu_markcol_cmd
},
417 {' ', "", NULL_HOTKEY
, 0},
418 {' ', N_("Toggle &ins/overw Ins"), NULL_HOTKEY
, menu_ins_cmd
},
419 {' ', "", NULL_HOTKEY
, 0},
420 {' ', N_("&Copy F5"), NULL_HOTKEY
, menu_copy_cmd
},
421 {' ', N_("&Move F6"), NULL_HOTKEY
, menu_move_cmd
},
422 {' ', N_("&Delete F8"), NULL_HOTKEY
, menu_delete_cmd
},
423 {' ', "", NULL_HOTKEY
, 0},
424 {' ', N_("C&opy to clipfile C-Ins"), NULL_HOTKEY
, menu_xstore_cmd
},
425 {' ', N_("C&ut to clipfile S-Del"), NULL_HOTKEY
, menu_xcut_cmd
},
426 {' ', N_("&Paste from clipfile S-Ins"), NULL_HOTKEY
, menu_xpaste_cmd
},
427 {' ', "", NULL_HOTKEY
, 0},
428 {' ', N_("Toggle bookmar&k M-k"), NULL_HOTKEY
, menu_toggle_bookmark_cmd
},
429 {' ', N_("&Next bookmark M-j"), NULL_HOTKEY
, menu_next_bookmark_cmd
},
430 {' ', N_("Pre&v bookmark M-i"), NULL_HOTKEY
, menu_prev_bookmark_cmd
},
431 {' ', N_("&Flush bookmark M-o"), NULL_HOTKEY
, menu_flush_bookmark_cmd
},
432 {' ', "", NULL_HOTKEY
, 0},
433 {' ', N_("&Undo C-u"), NULL_HOTKEY
, menu_undo_cmd
},
434 {' ', "", NULL_HOTKEY
, 0},
435 {' ', N_("&Beginning C-PgUp"), NULL_HOTKEY
, menu_beginning_cmd
},
436 {' ', N_("&End C-PgDn"), NULL_HOTKEY
, menu_end_cmd
}
439 static menu_entry EditMenuEmacs
[] =
441 {' ', N_("&Toggle mark F3"), NULL_HOTKEY
, menu_mark_cmd
},
442 {' ', N_("Mar&k columns S-F3"), NULL_HOTKEY
, menu_markcol_cmd
},
443 {' ', "", NULL_HOTKEY
, 0},
444 {' ', N_("Toggle &ins/overw Ins"), NULL_HOTKEY
, menu_ins_cmd
},
445 {' ', "", NULL_HOTKEY
, 0},
446 {' ', N_("&Copy F5"), NULL_HOTKEY
, menu_copy_cmd
},
447 {' ', N_("&Move F6"), NULL_HOTKEY
, menu_move_cmd
},
448 {' ', N_("&Delete F8"), NULL_HOTKEY
, menu_delete_cmd
},
449 {' ', "", NULL_HOTKEY
, 0},
450 {' ', N_("C&opy to clipfile M-w"), NULL_HOTKEY
, menu_xstore_cmd
},
451 {' ', N_("C&ut to clipfile C-w"), NULL_HOTKEY
, menu_xcut_cmd
},
452 {' ', N_("&Paste from clipfile C-y"), NULL_HOTKEY
, menu_xpaste_cmd
},
453 {' ', "", NULL_HOTKEY
, 0},
454 {' ', N_("Toggle bookmar&k "), NULL_HOTKEY
, menu_toggle_bookmark_cmd
},
455 {' ', N_("&Next bookmark "), NULL_HOTKEY
, menu_next_bookmark_cmd
},
456 {' ', N_("Pre&v bookmark "), NULL_HOTKEY
, menu_prev_bookmark_cmd
},
457 {' ', N_("&Flush bookmark "), NULL_HOTKEY
, menu_flush_bookmark_cmd
},
458 {' ', "", NULL_HOTKEY
, 0},
459 {' ', N_("&Undo C-u"), NULL_HOTKEY
, menu_undo_cmd
},
460 {' ', "", NULL_HOTKEY
, 0},
461 {' ', N_("&Beginning C-PgUp"), NULL_HOTKEY
, menu_beginning_cmd
},
462 {' ', N_("&End C-PgDn"), NULL_HOTKEY
, menu_end_cmd
}
465 static menu_entry SearReplMenu
[] =
467 {' ', N_("&Search... F7"), NULL_HOTKEY
, menu_search_cmd
},
468 {' ', N_("Search &again F17"), NULL_HOTKEY
, menu_search_again_cmd
},
469 {' ', N_("&Replace... F4"), NULL_HOTKEY
, menu_replace_cmd
}
472 #define SearReplMenuEmacs SearReplMenu
474 static menu_entry CmdMenu
[] =
476 {' ', N_("&Go to line... M-l"), NULL_HOTKEY
, menu_goto_line
},
477 {' ', N_("Toggle li&ne state M-n"), NULL_HOTKEY
, menu_toggle_line_state
},
478 {' ', N_("Go to matching &bracket M-b"), NULL_HOTKEY
, menu_goto_bracket
},
479 {' ', "", NULL_HOTKEY
, 0},
480 {' ', N_("Find declaration A-Enter"), NULL_HOTKEY
, menu_find_declare
},
481 {' ', N_("Back from declaration M--"), NULL_HOTKEY
, menu_declare_back
},
482 {' ', N_("Forward to declaration M-+"), NULL_HOTKEY
, menu_declare_forward
},
484 {' ', "", NULL_HOTKEY
, 0},
485 {' ', N_("Encod&ing... C-t"), NULL_HOTKEY
, menu_select_codepage_cmd
},
487 {' ', "", NULL_HOTKEY
, 0},
488 {' ', N_("Insert &literal... C-q"), NULL_HOTKEY
, menu_lit_cmd
},
489 {' ', "", NULL_HOTKEY
, 0},
490 {' ', N_("&Refresh screen C-l"), NULL_HOTKEY
, menu_refresh_cmd
},
491 {' ', "", NULL_HOTKEY
, 0},
492 {' ', N_("&Start record macro C-r"), NULL_HOTKEY
, menu_begin_record_cmd
},
493 {' ', N_("&Finish record macro... C-r"), NULL_HOTKEY
, menu_end_record_cmd
},
494 {' ', N_("&Execute macro... C-a, KEY"), NULL_HOTKEY
, menu_exec_macro_cmd
},
495 {' ', N_("Delete macr&o... "), NULL_HOTKEY
, menu_exec_macro_delete_cmd
},
496 {' ', "", NULL_HOTKEY
, 0},
497 {' ', N_("Insert &date/time "), NULL_HOTKEY
, menu_date_cmd
},
498 {' ', "", NULL_HOTKEY
, 0},
499 {' ', N_("Format p&aragraph M-p"), NULL_HOTKEY
, menu_format_paragraph
},
500 {' ', N_("'ispell' s&pell check C-p"), NULL_HOTKEY
, menu_ispell_cmd
},
501 {' ', N_("Sor&t... M-t"), NULL_HOTKEY
, menu_sort_cmd
},
502 {' ', N_("Paste o&utput of... M-u"), NULL_HOTKEY
, menu_ext_cmd
},
503 {' ', N_("E&xternal Formatter F19"), NULL_HOTKEY
, menu_c_form_cmd
},
504 {' ', N_("&Mail... "), NULL_HOTKEY
, menu_mail_cmd
}
507 static menu_entry CmdMenuEmacs
[] =
509 {' ', N_("&Go to line... M-l"), NULL_HOTKEY
, menu_goto_line
},
510 {' ', N_("Toggle li&ne state M-n"), NULL_HOTKEY
, menu_toggle_line_state
},
511 {' ', N_("Go to matching &bracket M-b"), NULL_HOTKEY
, menu_goto_bracket
},
512 {' ', "", NULL_HOTKEY
, 0},
513 {' ', N_("Insert &literal... C-q"), NULL_HOTKEY
, menu_lit_cmd
},
514 {' ', "", NULL_HOTKEY
, 0},
515 {' ', N_("&Refresh screen C-l"), NULL_HOTKEY
, menu_refresh_cmd
},
516 {' ', "", NULL_HOTKEY
, 0},
517 {' ', N_("&Start record macro C-r"), NULL_HOTKEY
, menu_begin_record_cmd
},
518 {' ', N_("&Finish record macro... C-r"), NULL_HOTKEY
, menu_end_record_cmd
},
519 {' ', N_("&Execute macro... C-x e, KEY"), NULL_HOTKEY
, menu_exec_macro_cmd
},
520 {' ', N_("Delete macr&o... "), NULL_HOTKEY
, menu_exec_macro_delete_cmd
},
521 {' ', "", NULL_HOTKEY
, 0},
522 {' ', N_("Insert &date/time "), NULL_HOTKEY
, menu_date_cmd
},
523 {' ', "", NULL_HOTKEY
, 0},
524 {' ', N_("Format p&aragraph M-p"), NULL_HOTKEY
, menu_format_paragraph
},
525 {' ', N_("'ispell' s&pell check M-$"), NULL_HOTKEY
, menu_ispell_cmd
},
526 {' ', N_("Sor&t... M-t"), NULL_HOTKEY
, menu_sort_cmd
},
527 {' ', N_("Paste o&utput of... M-u"), NULL_HOTKEY
, menu_ext_cmd
},
528 {' ', N_("E&xternal Formatter F19"), NULL_HOTKEY
, menu_c_form_cmd
},
529 {' ', N_("&Mail... "), NULL_HOTKEY
, menu_mail_cmd
}
532 static menu_entry OptMenu
[] =
534 {' ', N_("&General... "), NULL_HOTKEY
, edit_options_dialog
},
535 {' ', N_("&Save mode..."), NULL_HOTKEY
, menu_save_mode_cmd
},
536 {' ', N_("Learn &Keys..."), NULL_HOTKEY
, learn_keys
},
537 {' ', N_("Syntax &Highlighting..."), NULL_HOTKEY
, edit_syntax_dialog
},
538 {' ', "", NULL_HOTKEY
, 0},
539 {' ', N_("S&yntax file"), NULL_HOTKEY
, menu_edit_syntax_file_cmd
},
540 {' ', N_("&Menu file"), NULL_HOTKEY
, menu_edit_menu_file_cmd
},
541 {' ', "", NULL_HOTKEY
, 0},
542 {' ', N_("Save setu&p"), NULL_HOTKEY
, save_setup_cmd
}
545 #define OptMenuEmacs OptMenu
547 #define menu_entries(x) sizeof(x)/sizeof(menu_entry)
551 static Menu
*EditMenuBar
[N_menus
];
554 edit_init_menu_normal (void)
556 EditMenuBar
[0] = create_menu (_(" File "), FileMenu
, menu_entries (FileMenu
),
557 "[Internal File Editor]");
558 EditMenuBar
[1] = create_menu (_(" Edit "), EditMenu
, menu_entries (EditMenu
),
559 "[Internal File Editor]");
560 EditMenuBar
[2] = create_menu (_(" Sear/Repl "), SearReplMenu
, menu_entries (SearReplMenu
),
561 "[Internal File Editor]");
562 EditMenuBar
[3] = create_menu (_(" Command "), CmdMenu
, menu_entries (CmdMenu
),
563 "[Internal File Editor]");
564 EditMenuBar
[4] = create_menu (_(" Options "), OptMenu
, menu_entries (OptMenu
),
565 "[Internal File Editor]");
569 edit_init_menu_emacs (void)
571 EditMenuBar
[0] = create_menu (_(" File "), FileMenuEmacs
, menu_entries (FileMenuEmacs
),
572 "[Internal File Editor]");
573 EditMenuBar
[1] = create_menu (_(" Edit "), EditMenuEmacs
, menu_entries (EditMenuEmacs
),
574 "[Internal File Editor]");
575 EditMenuBar
[2] = create_menu (_(" Sear/Repl "), SearReplMenuEmacs
, menu_entries (SearReplMenuEmacs
),
576 "[Internal File Editor]");
577 EditMenuBar
[3] = create_menu (_(" Command "), CmdMenuEmacs
, menu_entries (CmdMenuEmacs
),
578 "[Internal File Editor]");
579 EditMenuBar
[4] = create_menu (_(" Options "), OptMenuEmacs
, menu_entries (OptMenuEmacs
),
580 "[Internal File Editor]");
584 edit_init_menu (void)
586 switch (edit_key_emulation
) {
588 case EDIT_KEY_EMULATION_NORMAL
:
589 edit_init_menu_normal ();
591 case EDIT_KEY_EMULATION_EMACS
:
592 edit_init_menu_emacs ();
598 edit_create_menu (void)
601 return menubar_new (0, 0, COLS
, EditMenuBar
, N_menus
);
605 edit_done_menu (struct WMenu
*wmenu
)
608 for (i
= 0; i
< N_menus
; i
++)
609 destroy_menu (wmenu
->menu
[i
]);
614 edit_reload_menu (void)
616 edit_done_menu (edit_menubar
);
618 menubar_arrange (edit_menubar
);
623 edit_drop_menu_cmd (WEdit
*e
, int which
)
625 if (edit_menubar
->active
)
627 edit_menubar
->active
= 1;
628 edit_menubar
->dropped
= drop_menus
;
630 edit_menubar
->selected
= which
;
633 edit_menubar
->previous_widget
= e
->widget
.parent
->current
->dlg_id
;
634 dlg_select_widget (edit_menubar
);
638 void edit_menu_cmd (WEdit
* e
)
640 edit_drop_menu_cmd (e
, -1);
644 int edit_drop_hotkey_menu (WEdit
* e
, int key
)
649 if (edit_key_emulation
== EDIT_KEY_EMULATION_EMACS
)
669 edit_drop_menu_cmd (e
, m
);