123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- /* editor menu definitions and initialisation
- Copyright (C) 1996, 1998, 2001, 2002, 2003, 2005, 2007
- Free Software Foundation, Inc.
- Authors: 1996, 1997 Paul Sheer
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301, USA.
- */
- #include <config.h>
- #include <stdio.h>
- #include <stdarg.h>
- #include <sys/types.h>
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
- #include <string.h>
- #include <ctype.h>
- #include <errno.h>
- #include <sys/stat.h>
- #include <stdlib.h>
- #include "../src/global.h"
- #include "edit.h"
- #include "../src/cmd.h" /* save_setup_cmd() */
- #include "../src/wtools.h" /* query_dialog() */
- #include "../src/menu.h" /* menu_entry */
- #include "../src/tty.h" /* KEY_F */
- #include "../src/key.h" /* XCTRL */
- #include "../src/main.h" /* drop_menus */
- #include "../src/learn.h" /* learn_keys */
- #include "edit-widget.h"
- #include "editcmddef.h"
- static void
- menu_cmd (int command)
- {
- edit_execute_key_command (wedit, command, -1);
- edit_update_screen (wedit);
- }
- static void menu_key (int i)
- {
- send_message ((Widget *) wedit, WIDGET_KEY, i);
- }
- static void
- edit_about_cmd (void)
- {
- query_dialog (_(" About "),
- _("\n Cooledit v3.11.5\n\n"
- " Copyright (C) 1996 the Free Software Foundation\n\n"
- " A user friendly text editor written\n"
- " for the Midnight Commander.\n"), D_NORMAL,
- 1, _("&OK"));
- }
- static void
- menu_mail_cmd (void)
- {
- menu_cmd (CK_Mail);
- }
- static void
- menu_load_cmd (void)
- {
- menu_cmd (CK_Load);
- }
- static void
- menu_new_cmd (void)
- {
- menu_cmd (CK_New);
- }
- static void
- menu_save_cmd (void)
- {
- menu_cmd (CK_Save);
- }
- static void
- menu_save_as_cmd (void)
- {
- menu_cmd (CK_Save_As);
- }
- static void
- menu_insert_file_cmd (void)
- {
- menu_cmd (CK_Insert_File);
- }
- static void
- menu_quit_cmd (void)
- {
- menu_cmd (CK_Exit);
- }
- static void
- menu_mark_cmd (void)
- {
- menu_cmd (CK_Mark);
- }
- static void
- menu_markcol_cmd (void)
- {
- menu_cmd (CK_Column_Mark);
- }
- static void
- menu_ins_cmd (void)
- {
- menu_cmd (CK_Toggle_Insert);
- }
- static void
- menu_copy_cmd (void)
- {
- menu_cmd (CK_Copy);
- }
- static void
- menu_move_cmd (void)
- {
- menu_cmd (CK_Move);
- }
- static void
- menu_delete_cmd (void)
- {
- menu_cmd (CK_Remove);
- }
- static void
- menu_cut_cmd (void)
- {
- menu_cmd (CK_Save_Block);
- }
- static void
- menu_search_cmd (void)
- {
- menu_cmd (CK_Find);
- }
- static void
- menu_search_again_cmd (void)
- {
- menu_cmd (CK_Find_Again);
- }
- static void
- menu_replace_cmd (void)
- {
- menu_cmd (CK_Replace);
- }
- static void
- menu_begin_record_cmd (void)
- {
- menu_cmd (CK_Begin_Record_Macro);
- }
- static void
- menu_end_record_cmd (void)
- {
- menu_cmd (CK_End_Record_Macro);
- }
- static void
- menu_exec_macro_cmd (void)
- {
- menu_key (XCTRL ('a'));
- }
- static void
- menu_exec_macro_delete_cmd (void)
- {
- menu_cmd (CK_Delete_Macro);
- }
- static void
- menu_c_form_cmd (void)
- {
- menu_key (KEY_F (19));
- }
- static void
- menu_ispell_cmd (void)
- {
- menu_cmd (CK_Pipe_Block (1));
- }
- static void
- menu_sort_cmd (void)
- {
- menu_cmd (CK_Sort);
- }
- static void
- menu_ext_cmd (void)
- {
- menu_cmd (CK_ExtCmd);
- }
- static void
- menu_date_cmd (void)
- {
- menu_cmd (CK_Date);
- }
- static void
- menu_undo_cmd (void)
- {
- menu_cmd (CK_Undo);
- }
- static void
- menu_beginning_cmd (void)
- {
- menu_cmd (CK_Beginning_Of_Text);
- }
- static void
- menu_end_cmd (void)
- {
- menu_cmd (CK_End_Of_Text);
- }
- static void
- menu_refresh_cmd (void)
- {
- menu_cmd (CK_Refresh);
- }
- static void
- menu_goto_line (void)
- {
- menu_cmd (CK_Goto);
- }
- static void
- menu_goto_bracket (void)
- {
- menu_cmd (CK_Match_Bracket);
- }
- static void
- menu_lit_cmd (void)
- {
- menu_key (XCTRL ('q'));
- }
- static void
- menu_format_paragraph (void)
- {
- menu_cmd (CK_Paragraph_Format);
- }
- static void
- menu_options (void)
- {
- edit_options_dialog ();
- }
- static void
- menu_syntax (void)
- {
- edit_syntax_dialog ();
- }
- static void
- menu_user_menu_cmd (void)
- {
- menu_key (KEY_F (11));
- }
- static menu_entry FileMenu[] =
- {
- {' ', N_("&Open file..."), NULL_HOTKEY, menu_load_cmd},
- {' ', N_("&New C-n"), NULL_HOTKEY, menu_new_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Save F2"), NULL_HOTKEY, menu_save_cmd},
- {' ', N_("Save &as... F12"), NULL_HOTKEY, menu_save_as_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Insert file... F15"), NULL_HOTKEY, menu_insert_file_cmd},
- {' ', N_("Copy to &file... C-f"), NULL_HOTKEY, menu_cut_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&User menu... F11"), NULL_HOTKEY, menu_user_menu_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("A&bout... "), NULL_HOTKEY, edit_about_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Quit F10"), NULL_HOTKEY, menu_quit_cmd}
- };
- static menu_entry FileMenuEmacs[] =
- {
- {' ', N_("&Open file..."), NULL_HOTKEY, menu_load_cmd},
- {' ', N_("&New C-x k"), NULL_HOTKEY, menu_new_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Save F2"), NULL_HOTKEY, menu_save_cmd},
- {' ', N_("Save &as... F12"), NULL_HOTKEY, menu_save_as_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Insert file... F15"), NULL_HOTKEY, menu_insert_file_cmd},
- {' ', N_("Copy to &file... "), NULL_HOTKEY, menu_cut_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&User menu... F11"), NULL_HOTKEY, menu_user_menu_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("A&bout... "), NULL_HOTKEY, edit_about_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Quit F10"), NULL_HOTKEY, menu_quit_cmd}
- };
- static menu_entry EditMenu[] =
- {
- {' ', N_("&Toggle Mark F3"), NULL_HOTKEY, menu_mark_cmd},
- {' ', N_("&Mark Columns S-F3"), NULL_HOTKEY, menu_markcol_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Toggle &ins/overw Ins"), NULL_HOTKEY, menu_ins_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Copy F5"), NULL_HOTKEY, menu_copy_cmd},
- {' ', N_("&Move F6"), NULL_HOTKEY, menu_move_cmd},
- {' ', N_("&Delete F8"), NULL_HOTKEY, menu_delete_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Undo C-u"), NULL_HOTKEY, menu_undo_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Beginning C-PgUp"), NULL_HOTKEY, menu_beginning_cmd},
- {' ', N_("&End C-PgDn"), NULL_HOTKEY, menu_end_cmd}
- };
- #define EditMenuEmacs EditMenu
- static menu_entry SearReplMenu[] =
- {
- {' ', N_("&Search... F7"), NULL_HOTKEY, menu_search_cmd},
- {' ', N_("Search &again F17"), NULL_HOTKEY, menu_search_again_cmd},
- {' ', N_("&Replace... F4"), NULL_HOTKEY, menu_replace_cmd}
- };
- #define SearReplMenuEmacs SearReplMenu
- static menu_entry CmdMenu[] =
- {
- {' ', N_("&Go to line... M-l"), NULL_HOTKEY, menu_goto_line},
- {' ', N_("Go to matching &bracket M-b"), NULL_HOTKEY, menu_goto_bracket},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Insert &literal... C-q"), NULL_HOTKEY, menu_lit_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Refresh screen C-l"), NULL_HOTKEY, menu_refresh_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Start record macro C-r"), NULL_HOTKEY, menu_begin_record_cmd},
- {' ', N_("&Finish record macro... C-r"), NULL_HOTKEY, menu_end_record_cmd},
- {' ', N_("&Execute macro... C-a, KEY"), NULL_HOTKEY, menu_exec_macro_cmd},
- {' ', N_("Delete macr&o... "), NULL_HOTKEY, menu_exec_macro_delete_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Insert &date/time "), NULL_HOTKEY, menu_date_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Format p&aragraph M-p"), NULL_HOTKEY, menu_format_paragraph},
- {' ', N_("'ispell' s&pell check C-p"), NULL_HOTKEY, menu_ispell_cmd},
- {' ', N_("Sor&t... M-t"), NULL_HOTKEY, menu_sort_cmd},
- {' ', N_("Paste o&utput of... M-u"), NULL_HOTKEY, menu_ext_cmd},
- {' ', N_("E&xternal Formatter F19"), NULL_HOTKEY, menu_c_form_cmd},
- {' ', N_("&Mail... "), NULL_HOTKEY, menu_mail_cmd}
- };
- static menu_entry CmdMenuEmacs[] =
- {
- {' ', N_("&Go to line... M-l"), NULL_HOTKEY, menu_goto_line},
- {' ', N_("Go to matching &bracket M-b"), NULL_HOTKEY, menu_goto_bracket},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Insert &literal... C-q"), NULL_HOTKEY, menu_lit_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Refresh screen C-l"), NULL_HOTKEY, menu_refresh_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("&Start record macro C-r"), NULL_HOTKEY, menu_begin_record_cmd},
- {' ', N_("&Finish record macro... C-r"), NULL_HOTKEY, menu_end_record_cmd},
- {' ', N_("&Execute macro... C-x e, KEY"), NULL_HOTKEY, menu_exec_macro_cmd},
- {' ', N_("Delete macr&o... "), NULL_HOTKEY, menu_exec_macro_delete_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Insert &date/time "), NULL_HOTKEY, menu_date_cmd},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Format p&aragraph M-p"), NULL_HOTKEY, menu_format_paragraph},
- {' ', N_("'ispell' s&pell check M-$"), NULL_HOTKEY, menu_ispell_cmd},
- {' ', N_("Sor&t... M-t"), NULL_HOTKEY, menu_sort_cmd},
- {' ', N_("Paste o&utput of... M-u"), NULL_HOTKEY, menu_ext_cmd},
- {' ', N_("E&xternal Formatter F19"), NULL_HOTKEY, menu_c_form_cmd},
- {' ', N_("&Mail... "), NULL_HOTKEY, menu_mail_cmd}
- };
- static menu_entry OptMenu[] =
- {
- {' ', N_("&General... "), NULL_HOTKEY, menu_options},
- {' ', N_("&Save mode..."), NULL_HOTKEY, menu_save_mode_cmd},
- {' ', N_("Learn &Keys..."), NULL_HOTKEY, learn_keys},
- {' ', N_("Syntax &Highlighting..."), NULL_HOTKEY, menu_syntax},
- {' ', "", NULL_HOTKEY, 0},
- {' ', N_("Save setu&p..."), NULL_HOTKEY, save_setup_cmd}
- };
- #define OptMenuEmacs OptMenu
- #define menu_entries(x) sizeof(x)/sizeof(menu_entry)
- #define N_menus 5
- static Menu *EditMenuBar [N_menus];
- static void
- edit_init_menu_normal (void)
- {
- EditMenuBar[0] = create_menu (_(" File "), FileMenu, menu_entries (FileMenu),
- "[Internal File Editor]");
- EditMenuBar[1] = create_menu (_(" Edit "), EditMenu, menu_entries (EditMenu),
- "[Internal File Editor]");
- EditMenuBar[2] = create_menu (_(" Sear/Repl "), SearReplMenu, menu_entries (SearReplMenu),
- "[Internal File Editor]");
- EditMenuBar[3] = create_menu (_(" Command "), CmdMenu, menu_entries (CmdMenu),
- "[Internal File Editor]");
- EditMenuBar[4] = create_menu (_(" Options "), OptMenu, menu_entries (OptMenu),
- "[Internal File Editor]");
- }
- static void
- edit_init_menu_emacs (void)
- {
- EditMenuBar[0] = create_menu (_(" File "), FileMenuEmacs, menu_entries (FileMenuEmacs),
- "[Internal File Editor]");
- EditMenuBar[1] = create_menu (_(" Edit "), EditMenuEmacs, menu_entries (EditMenuEmacs),
- "[Internal File Editor]");
- EditMenuBar[2] = create_menu (_(" Sear/Repl "), SearReplMenuEmacs, menu_entries (SearReplMenuEmacs),
- "[Internal File Editor]");
- EditMenuBar[3] = create_menu (_(" Command "), CmdMenuEmacs, menu_entries (CmdMenuEmacs),
- "[Internal File Editor]");
- EditMenuBar[4] = create_menu (_(" Options "), OptMenuEmacs, menu_entries (OptMenuEmacs),
- "[Internal File Editor]");
- }
- static void
- edit_init_menu (void)
- {
- switch (edit_key_emulation) {
- default:
- case EDIT_KEY_EMULATION_NORMAL:
- edit_init_menu_normal ();
- break;
- case EDIT_KEY_EMULATION_EMACS:
- edit_init_menu_emacs ();
- break;
- }
- }
- struct WMenu *
- edit_create_menu (void)
- {
- edit_init_menu ();
- return menubar_new (0, 0, COLS, EditMenuBar, N_menus);
- }
- void
- edit_done_menu (struct WMenu *wmenu)
- {
- int i;
- for (i = 0; i < N_menus; i++)
- destroy_menu (wmenu->menu[i]);
- }
- void
- edit_reload_menu (void)
- {
- edit_done_menu (edit_menubar);
- edit_init_menu ();
- menubar_arrange (edit_menubar);
- }
- static void
- edit_drop_menu_cmd (WEdit *e, int which)
- {
- if (edit_menubar->active)
- return;
- edit_menubar->active = 1;
- edit_menubar->dropped = drop_menus;
- if (which >= 0) {
- edit_menubar->selected = which;
- }
- edit_menubar->previous_widget = e->widget.parent->current->dlg_id;
- dlg_select_widget (edit_menubar);
- }
- void edit_menu_cmd (WEdit * e)
- {
- edit_drop_menu_cmd (e, -1);
- }
- int edit_drop_hotkey_menu (WEdit * e, int key)
- {
- int m = 0;
- switch (key) {
- case ALT ('f'):
- if (edit_key_emulation == EDIT_KEY_EMULATION_EMACS)
- return 0;
- m = 0;
- break;
- case ALT ('e'):
- m = 1;
- break;
- case ALT ('s'):
- m = 2;
- break;
- case ALT ('c'):
- m = 3;
- break;
- case ALT ('o'):
- m = 4;
- break;
- default:
- return 0;
- }
- edit_drop_menu_cmd (e, m);
- return 1;
- }
|