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
28 #include <sys/types.h>
39 #include "../src/global.h"
42 #include "../src/cmd.h" /* save_setup_cmd() */
43 #include "../src/wtools.h" /* query_dialog() */
44 #include "../src/menu.h" /* menu_entry */
45 #include "../src/tty.h" /* KEY_F */
46 #include "../src/key.h" /* XCTRL */
47 #include "../src/main.h" /* drop_menus */
48 #include "../src/learn.h" /* learn_keys */
50 #include "edit-widget.h"
51 #include "editcmddef.h"
54 menu_cmd (int command
)
56 edit_execute_key_command (wedit
, command
, -1);
57 edit_update_screen (wedit
);
60 static void menu_key (int i
)
62 send_message ((Widget
*) wedit
, WIDGET_KEY
, i
);
68 query_dialog (_(" About "),
69 _("\n Cooledit v3.11.5\n\n"
70 " Copyright (C) 1996 the Free Software Foundation\n\n"
71 " A user friendly text editor written\n"
72 " for the Midnight Commander.\n"), D_NORMAL
,
101 menu_save_as_cmd (void)
103 menu_cmd (CK_Save_As
);
107 menu_insert_file_cmd (void)
109 menu_cmd (CK_Insert_File
);
125 menu_markcol_cmd (void)
127 menu_cmd (CK_Column_Mark
);
133 menu_cmd (CK_Toggle_Insert
);
149 menu_delete_cmd (void)
151 menu_cmd (CK_Remove
);
157 menu_cmd (CK_Save_Block
);
161 menu_search_cmd (void)
167 menu_search_again_cmd (void)
169 menu_cmd (CK_Find_Again
);
173 menu_replace_cmd (void)
175 menu_cmd (CK_Replace
);
179 menu_begin_record_cmd (void)
181 menu_cmd (CK_Begin_Record_Macro
);
185 menu_end_record_cmd (void)
187 menu_cmd (CK_End_Record_Macro
);
191 menu_exec_macro_cmd (void)
193 menu_key (XCTRL ('a'));
197 menu_exec_macro_delete_cmd (void)
199 menu_cmd (CK_Delete_Macro
);
203 menu_c_form_cmd (void)
205 menu_key (KEY_F (19));
209 menu_ispell_cmd (void)
211 menu_cmd (CK_Pipe_Block (1));
223 menu_cmd (CK_ExtCmd
);
239 menu_beginning_cmd (void)
241 menu_cmd (CK_Beginning_Of_Text
);
247 menu_cmd (CK_End_Of_Text
);
251 menu_refresh_cmd (void)
253 menu_cmd (CK_Refresh
);
257 menu_goto_line (void)
263 menu_goto_bracket (void)
265 menu_cmd (CK_Match_Bracket
);
271 menu_key (XCTRL ('q'));
275 menu_format_paragraph (void)
277 menu_cmd (CK_Paragraph_Format
);
283 edit_options_dialog ();
289 edit_syntax_dialog ();
293 menu_user_menu_cmd (void)
295 menu_key (KEY_F (11));
298 static menu_entry FileMenu
[] =
300 {' ', N_("&Open file..."), NULL_HOTKEY
, menu_load_cmd
},
301 {' ', N_("&New C-n"), NULL_HOTKEY
, menu_new_cmd
},
302 {' ', "", NULL_HOTKEY
, 0},
303 {' ', N_("&Save F2"), NULL_HOTKEY
, menu_save_cmd
},
304 {' ', N_("Save &as... F12"), NULL_HOTKEY
, menu_save_as_cmd
},
305 {' ', "", NULL_HOTKEY
, 0},
306 {' ', N_("&Insert file... F15"), NULL_HOTKEY
, menu_insert_file_cmd
},
307 {' ', N_("Copy to &file... C-f"), NULL_HOTKEY
, menu_cut_cmd
},
308 {' ', "", NULL_HOTKEY
, 0},
309 {' ', N_("&User menu... F11"), NULL_HOTKEY
, menu_user_menu_cmd
},
310 {' ', "", NULL_HOTKEY
, 0},
311 {' ', N_("A&bout... "), NULL_HOTKEY
, edit_about_cmd
},
312 {' ', "", NULL_HOTKEY
, 0},
313 {' ', N_("&Quit F10"), NULL_HOTKEY
, menu_quit_cmd
}
316 static menu_entry FileMenuEmacs
[] =
318 {' ', N_("&Open file..."), NULL_HOTKEY
, menu_load_cmd
},
319 {' ', N_("&New C-x k"), NULL_HOTKEY
, menu_new_cmd
},
320 {' ', "", NULL_HOTKEY
, 0},
321 {' ', N_("&Save F2"), NULL_HOTKEY
, menu_save_cmd
},
322 {' ', N_("Save &as... F12"), NULL_HOTKEY
, menu_save_as_cmd
},
323 {' ', "", NULL_HOTKEY
, 0},
324 {' ', N_("&Insert file... F15"), NULL_HOTKEY
, menu_insert_file_cmd
},
325 {' ', N_("Copy to &file... "), NULL_HOTKEY
, menu_cut_cmd
},
326 {' ', "", NULL_HOTKEY
, 0},
327 {' ', N_("&User menu... F11"), NULL_HOTKEY
, menu_user_menu_cmd
},
328 {' ', "", NULL_HOTKEY
, 0},
329 {' ', N_("A&bout... "), NULL_HOTKEY
, edit_about_cmd
},
330 {' ', "", NULL_HOTKEY
, 0},
331 {' ', N_("&Quit F10"), NULL_HOTKEY
, menu_quit_cmd
}
334 static menu_entry EditMenu
[] =
336 {' ', N_("&Toggle Mark F3"), NULL_HOTKEY
, menu_mark_cmd
},
337 {' ', N_("&Mark Columns S-F3"), NULL_HOTKEY
, menu_markcol_cmd
},
338 {' ', "", NULL_HOTKEY
, 0},
339 {' ', N_("Toggle &ins/overw Ins"), NULL_HOTKEY
, menu_ins_cmd
},
340 {' ', "", NULL_HOTKEY
, 0},
341 {' ', N_("&Copy F5"), NULL_HOTKEY
, menu_copy_cmd
},
342 {' ', N_("&Move F6"), NULL_HOTKEY
, menu_move_cmd
},
343 {' ', N_("&Delete F8"), NULL_HOTKEY
, menu_delete_cmd
},
344 {' ', "", NULL_HOTKEY
, 0},
345 {' ', N_("&Undo C-u"), NULL_HOTKEY
, menu_undo_cmd
},
346 {' ', "", NULL_HOTKEY
, 0},
347 {' ', N_("&Beginning C-PgUp"), NULL_HOTKEY
, menu_beginning_cmd
},
348 {' ', N_("&End C-PgDn"), NULL_HOTKEY
, menu_end_cmd
}
351 #define EditMenuEmacs EditMenu
353 static menu_entry SearReplMenu
[] =
355 {' ', N_("&Search... F7"), NULL_HOTKEY
, menu_search_cmd
},
356 {' ', N_("Search &again F17"), NULL_HOTKEY
, menu_search_again_cmd
},
357 {' ', N_("&Replace... F4"), NULL_HOTKEY
, menu_replace_cmd
}
360 #define SearReplMenuEmacs SearReplMenu
362 static menu_entry CmdMenu
[] =
364 {' ', N_("&Go to line... M-l"), NULL_HOTKEY
, menu_goto_line
},
365 {' ', N_("Go to matching &bracket M-b"), NULL_HOTKEY
, menu_goto_bracket
},
366 {' ', "", NULL_HOTKEY
, 0},
367 {' ', N_("Insert &literal... C-q"), NULL_HOTKEY
, menu_lit_cmd
},
368 {' ', "", NULL_HOTKEY
, 0},
369 {' ', N_("&Refresh screen C-l"), NULL_HOTKEY
, menu_refresh_cmd
},
370 {' ', "", NULL_HOTKEY
, 0},
371 {' ', N_("&Start record macro C-r"), NULL_HOTKEY
, menu_begin_record_cmd
},
372 {' ', N_("&Finish record macro... C-r"), NULL_HOTKEY
, menu_end_record_cmd
},
373 {' ', N_("&Execute macro... C-a, KEY"), NULL_HOTKEY
, menu_exec_macro_cmd
},
374 {' ', N_("Delete macr&o... "), NULL_HOTKEY
, menu_exec_macro_delete_cmd
},
375 {' ', "", NULL_HOTKEY
, 0},
376 {' ', N_("Insert &date/time "), NULL_HOTKEY
, menu_date_cmd
},
377 {' ', "", NULL_HOTKEY
, 0},
378 {' ', N_("Format p&aragraph M-p"), NULL_HOTKEY
, menu_format_paragraph
},
379 {' ', N_("'ispell' s&pell check C-p"), NULL_HOTKEY
, menu_ispell_cmd
},
380 {' ', N_("Sor&t... M-t"), NULL_HOTKEY
, menu_sort_cmd
},
381 {' ', N_("Paste o&utput of... M-u"), NULL_HOTKEY
, menu_ext_cmd
},
382 {' ', N_("E&xternal Formatter F19"), NULL_HOTKEY
, menu_c_form_cmd
},
383 {' ', N_("&Mail... "), NULL_HOTKEY
, menu_mail_cmd
}
386 static menu_entry CmdMenuEmacs
[] =
388 {' ', N_("&Go to line... M-l"), NULL_HOTKEY
, menu_goto_line
},
389 {' ', N_("Go to matching &bracket M-b"), NULL_HOTKEY
, menu_goto_bracket
},
390 {' ', "", NULL_HOTKEY
, 0},
391 {' ', N_("Insert &literal... C-q"), NULL_HOTKEY
, menu_lit_cmd
},
392 {' ', "", NULL_HOTKEY
, 0},
393 {' ', N_("&Refresh screen C-l"), NULL_HOTKEY
, menu_refresh_cmd
},
394 {' ', "", NULL_HOTKEY
, 0},
395 {' ', N_("&Start record macro C-r"), NULL_HOTKEY
, menu_begin_record_cmd
},
396 {' ', N_("&Finish record macro... C-r"), NULL_HOTKEY
, menu_end_record_cmd
},
397 {' ', N_("&Execute macro... C-x e, KEY"), NULL_HOTKEY
, menu_exec_macro_cmd
},
398 {' ', N_("Delete macr&o... "), NULL_HOTKEY
, menu_exec_macro_delete_cmd
},
399 {' ', "", NULL_HOTKEY
, 0},
400 {' ', N_("Insert &date/time "), NULL_HOTKEY
, menu_date_cmd
},
401 {' ', "", NULL_HOTKEY
, 0},
402 {' ', N_("Format p&aragraph M-p"), NULL_HOTKEY
, menu_format_paragraph
},
403 {' ', N_("'ispell' s&pell check M-$"), NULL_HOTKEY
, menu_ispell_cmd
},
404 {' ', N_("Sor&t... M-t"), NULL_HOTKEY
, menu_sort_cmd
},
405 {' ', N_("Paste o&utput of... M-u"), NULL_HOTKEY
, menu_ext_cmd
},
406 {' ', N_("E&xternal Formatter F19"), NULL_HOTKEY
, menu_c_form_cmd
},
407 {' ', N_("&Mail... "), NULL_HOTKEY
, menu_mail_cmd
}
410 static menu_entry OptMenu
[] =
412 {' ', N_("&General... "), NULL_HOTKEY
, menu_options
},
413 {' ', N_("&Save mode..."), NULL_HOTKEY
, menu_save_mode_cmd
},
414 {' ', N_("Learn &Keys..."), NULL_HOTKEY
, learn_keys
},
415 {' ', N_("Syntax &Highlighting..."), NULL_HOTKEY
, menu_syntax
},
416 {' ', "", NULL_HOTKEY
, 0},
417 {' ', N_("Save setu&p..."), NULL_HOTKEY
, save_setup_cmd
}
420 #define OptMenuEmacs OptMenu
422 #define menu_entries(x) sizeof(x)/sizeof(menu_entry)
426 static Menu
*EditMenuBar
[N_menus
];
429 edit_init_menu_normal (void)
431 EditMenuBar
[0] = create_menu (_(" File "), FileMenu
, menu_entries (FileMenu
),
432 "[Internal File Editor]");
433 EditMenuBar
[1] = create_menu (_(" Edit "), EditMenu
, menu_entries (EditMenu
),
434 "[Internal File Editor]");
435 EditMenuBar
[2] = create_menu (_(" Sear/Repl "), SearReplMenu
, menu_entries (SearReplMenu
),
436 "[Internal File Editor]");
437 EditMenuBar
[3] = create_menu (_(" Command "), CmdMenu
, menu_entries (CmdMenu
),
438 "[Internal File Editor]");
439 EditMenuBar
[4] = create_menu (_(" Options "), OptMenu
, menu_entries (OptMenu
),
440 "[Internal File Editor]");
444 edit_init_menu_emacs (void)
446 EditMenuBar
[0] = create_menu (_(" File "), FileMenuEmacs
, menu_entries (FileMenuEmacs
),
447 "[Internal File Editor]");
448 EditMenuBar
[1] = create_menu (_(" Edit "), EditMenuEmacs
, menu_entries (EditMenuEmacs
),
449 "[Internal File Editor]");
450 EditMenuBar
[2] = create_menu (_(" Sear/Repl "), SearReplMenuEmacs
, menu_entries (SearReplMenuEmacs
),
451 "[Internal File Editor]");
452 EditMenuBar
[3] = create_menu (_(" Command "), CmdMenuEmacs
, menu_entries (CmdMenuEmacs
),
453 "[Internal File Editor]");
454 EditMenuBar
[4] = create_menu (_(" Options "), OptMenuEmacs
, menu_entries (OptMenuEmacs
),
455 "[Internal File Editor]");
459 edit_init_menu (void)
461 switch (edit_key_emulation
) {
463 case EDIT_KEY_EMULATION_NORMAL
:
464 edit_init_menu_normal ();
466 case EDIT_KEY_EMULATION_EMACS
:
467 edit_init_menu_emacs ();
473 edit_create_menu (void)
476 return menubar_new (0, 0, COLS
, EditMenuBar
, N_menus
);
480 edit_done_menu (struct WMenu
*wmenu
)
483 for (i
= 0; i
< N_menus
; i
++)
484 destroy_menu (wmenu
->menu
[i
]);
489 edit_reload_menu (void)
491 edit_done_menu (edit_menubar
);
493 menubar_arrange (edit_menubar
);
498 edit_drop_menu_cmd (WEdit
*e
, int which
)
500 if (edit_menubar
->active
)
502 edit_menubar
->active
= 1;
503 edit_menubar
->dropped
= drop_menus
;
505 edit_menubar
->selected
= which
;
508 edit_menubar
->previous_widget
= e
->widget
.parent
->current
->dlg_id
;
509 dlg_select_widget (edit_menubar
);
513 void edit_menu_cmd (WEdit
* e
)
515 edit_drop_menu_cmd (e
, -1);
519 int edit_drop_hotkey_menu (WEdit
* e
, int key
)
524 if (edit_key_emulation
== EDIT_KEY_EMULATION_EMACS
)
544 edit_drop_menu_cmd (e
, m
);