📄 textsw_menu.c
字号:
MENU_PULLRIGHT, select_field_cmds, HELP_INFO("textsw:mselfieldcmds") 0, HELP_INFO("textsw:mfindcmds") 0); top_menu = menu_create( MENU_LEFT_MARGIN, 6, MENU_ITEM, MENU_STRING, "File", MENU_PULLRIGHT, file_cmds, HELP_INFO("textsw:mfilecmds") 0, MENU_ITEM, MENU_STRING, "Edit", MENU_PULLRIGHT, edit_cmd, HELP_INFO("textsw:meditcmds") 0, MENU_ITEM, MENU_STRING, "Display", MENU_PULLRIGHT, display_cmds, HELP_INFO("textsw:mdisplaycmds") 0, MENU_ITEM, MENU_STRING, "Find", MENU_PULLRIGHT, find_cmds, HELP_INFO("textsw:mfindcmds") 0, MENU_ITEM, MENU_GEN_PROC, textsw_toggle_extras_item, MENU_STRING, "Extras", MENU_INACTIVE, TRUE, MENU_GEN_PULLRIGHT, textsw_build_extras_menu, MENU_CLIENT_DATA, VIEW_FROM_FOLIO_OR_VIEW(folio), HELP_INFO("textsw:mextras") 0, HELP_INFO("textsw:mtopmenu") 0); } else { save_file = menu_create( MENU_LEFT_MARGIN, 6, MENU_ITEM, MENU_STRING, "Save file", MENU_VALUE, TEXTSW_MENU_SAVE, HELP_INFO("textsw:msavefile") 0, MENU_ITEM, MENU_STRING, "Save then Quit", MENU_VALUE, TEXTSW_MENU_SAVE_QUIT, HELP_INFO("textsw:msavequit") 0, MENU_ITEM, MENU_STRING, "Save then Reset", MENU_VALUE, TEXTSW_MENU_SAVE_RESET, HELP_INFO("textsw:msavereset") 0, MENU_ITEM, MENU_STRING, "Close then Save", MENU_VALUE, TEXTSW_MENU_SAVE_CLOSE, HELP_INFO("textsw:msaveclose") 0, MENU_ITEM, MENU_STRING, "Store to named file", MENU_VALUE, TEXTSW_MENU_STORE, HELP_INFO("textsw:mstorefile") 0, MENU_ITEM, MENU_STRING, "Store then Quit", MENU_VALUE, TEXTSW_MENU_STORE_QUIT, HELP_INFO("textsw:mstorequit") 0, MENU_ITEM, MENU_STRING, "Close then Store", MENU_VALUE, TEXTSW_MENU_STORE_CLOSE, HELP_INFO("textsw:mstoreclose") 0, HELP_INFO("textsw:msave") 0); find_pattern = menu_create( MENU_LEFT_MARGIN, 6, MENU_ITEM, MENU_STRING, "Find, forward", MENU_VALUE, TEXTSW_MENU_FIND, HELP_INFO("textsw:mfindforward") 0, MENU_ITEM, MENU_STRING, "Find, backward", MENU_VALUE, TEXTSW_MENU_FIND_BACKWARD, HELP_INFO("testsw:mfindbackward") 0, MENU_ITEM, MENU_STRING, "Find Shelf, forward", MENU_VALUE, TEXTSW_MENU_FIND_SHELF, HELP_INFO("textsw:mfindcbforward") 0, MENU_ITEM, MENU_STRING, "Find Shelf, backward", MENU_VALUE, TEXTSW_MENU_FIND_SHELF_BACKWARD, HELP_INFO("textsw:findcbbackward") 0,#ifdef _TEXTSW_FIND_RE MENU_ITEM, MENU_STRING, "Find RE, forward", MENU_VALUE, TEXTSW_MENU_FIND_RE, HELP_INFO("textsw:mfindreforward") 0, MENU_ITEM, MENU_STRING, "Find RE, backward", MENU_VALUE, TEXTSW_MENU_FIND_RE_BACKWARD, HELP_INFO("textsw:mfindrebackward") 0, MENU_ITEM, MENU_STRING, "Find tag, forward", MENU_VALUE, TEXTSW_MENU_FIND_TAG, HELP_INFO("textsw:mfindtagforward") 0, MENU_ITEM, MENU_STRING, "Find tag, backward", MENU_VALUE, TEXTSW_MENU_FIND_TAG_BACKWARD, HELP_INFO("textsw:mfindtagbackward") 0,#endif HELP_INFO("textsw:mfindpattern") 0);/* old_edit_cmd = menu_create( MENU_LEFT_MARGIN, 6, MENU_STRING_ITEM, "Again", TEXTSW_MENU_AGAIN, MENU_PULLRIGHT_ITEM, "Undo", undo_cmds, MENU_STRING_ITEM, "Copy", TEXTSW_MENU_COPY, MENU_PULLRIGHT_ITEM, "Paste", paste_cmds, MENU_STRING_ITEM, "Cut", TEXTSW_MENU_CUT, MENU_STRING_ITEM, "Copy then Paste", TEXTSW_MENU_PUT_THEN_GET, 0);*/ top_menu = menu_create( MENU_LEFT_MARGIN, 6, MENU_ITEM, MENU_STRING, "Save", MENU_PULLRIGHT, save_file, HELP_INFO("textsw:msavefile") 0, MENU_ITEM, MENU_STRING, "Load file", MENU_VALUE, TEXTSW_MENU_LOAD, HELP_INFO("textsw:mloadfile") 0, MENU_ITEM, MENU_STRING, "Select line #", MENU_VALUE, TEXTSW_MENU_NORMALIZE_LINE, HELP_INFO("textsw:mselectline") 0, MENU_ITEM, MENU_STRING, "Split view", MENU_VALUE, TEXTSW_MENU_CREATE_VIEW, HELP_INFO("textsw:msplitview") 0, MENU_ITEM, MENU_STRING, "Destroy view", MENU_VALUE, TEXTSW_MENU_DESTROY_VIEW, HELP_INFO("textsw:mdestroyview") 0, MENU_ITEM, MENU_STRING, "Reset", MENU_VALUE, TEXTSW_MENU_RESET, HELP_INFO("textsw:memptydoc") 0, MENU_ITEM, MENU_STRING, "What line #?", MENU_VALUE, TEXTSW_MENU_COUNT_TO_LINE, HELP_INFO("textsw:mwhatline") 0, MENU_ITEM, MENU_STRING, "Get from file", MENU_VALUE, TEXTSW_MENU_FILE_STUFF, HELP_INFO("textsw:mincludefile") 0, MENU_ITEM, MENU_STRING, "Caret to top", MENU_VALUE, TEXTSW_MENU_NORMALIZE_INSERTION, HELP_INFO("textsw:mshowcaret") 0,#ifdef notdef MENU_STRING_ITEM, "Selection to top", TEXTSW_MENU_NORMALIZE_SELECTION,#endif MENU_ITEM, MENU_STRING, "Line break", MENU_PULLRIGHT, old_break_mode, HELP_INFO("textsw:moldbreakmode") 0, MENU_ITEM, MENU_STRING, "Set directory", MENU_VALUE, TEXTSW_MENU_CD, HELP_INFO("textsw:msetdir") 0, MENU_ITEM, MENU_STRING, "Find", MENU_PULLRIGHT, find_pattern, HELP_INFO("textsw:mfindpattern") 0, MENU_ITEM, MENU_STRING, put_then_get, MENU_VALUE, TEXTSW_MENU_PUT_THEN_GET, HELP_INFO("textsw:meditcopypaste") 0,/* since these are the OLD menus, we won't even give them these two cmds MENU_STRING_ITEM, "Match", TEXTSW_MENU_MATCH_FIELD, MENU_PULLRIGHT_ITEM, "Edit", old_edit_cmd,*/ HELP_INFO("textsw:mtopmenu") 0); } (void)menu_set(top_menu, MENU_CLIENT_DATA, textsw_menu_style, 0); return top_menu;}static voidstuff_clipboard(){ Seln_holder holder; Seln_rank rank = SELN_SHELF; char context = 0; /* initially =0(first time), change to 1 afterwards */ char *destination = "/dev/console"; if ((output = fopen(destination, "w")) == NULL) return; holder = seln_inquire(rank); if (holder.state == SELN_NONE) { fputs("\nThe clipboard is currently empty.", output); return; } seln_query(&holder, read_proc, &context, SELN_REQ_CONTENTS_ASCII, 0, 0); fclose(output);}static Menu_itemshow_clipboard(item, operation) Menu_item item; Menu_generate operation;{ Seln_holder holder; Seln_request *buffer; Seln_rank rank = SELN_SHELF; char *string_for_menu_item; int i; switch (operation) { case MENU_DISPLAY: /* build string menu here */ string_for_menu_item = menu_get(item, MENU_STRING, 0); for (i=0; i <= MAX_SIZE_MENU_STRING; i++) { string_for_menu_item[i] = NULL; } menu_set(item, MENU_STRING, string_for_menu_item, 0); /* default */ holder = seln_inquire(rank); if (holder.state == SELN_NONE) { break; /* return item */ } buffer = seln_ask(&holder, SELN_REQ_CONTENTS_ASCII, 0, 0); if (buffer == (Seln_request *) NULL || *((Seln_attribute *) (LINT_CAST(buffer->data))) != SELN_REQ_CONTENTS_ASCII) { break; /* all done, nothing to look at, later post message saying "Selection holder error--..." noting failure */ } strncpy( /* and possibly truncate buffer to max size allowed */ string_for_menu_item, /* destination */ buffer->data + sizeof (Seln_attribute), /* source */ MAX_SIZE_MENU_STRING); /* num chars */ menu_set(item, MENU_STRING, string_for_menu_item, 0); menu_set(item, MENU_INACTIVE, FALSE, 0); /*not greyed out */ menu_set(item, MENU_FEEDBACK, FALSE, 0); /* no invert,no select */ break; case MENU_DISPLAY_DONE: break; case MENU_NOTIFY: case MENU_NOTIFY_DONE: break; default: break; } return item; }static Seln_resultread_proc(buffer) Seln_request *buffer;{ char *destination = "/dev/console"; char *intro_message = "\nCurrent clipboard: "; char *error = "Selection holder error -- unrecognized request\n"; char *reply; if (*buffer->requester.context == 0) { if (buffer == (Seln_request *) NULL || *((Seln_attribute *) (LINT_CAST(buffer->data))) != SELN_REQ_CONTENTS_ASCII) { fputs(error, output); fclose(output); return(SELN_UNRECOGNIZED); } fputs(intro_message, output); reply = buffer->data + sizeof (Seln_attribute); *buffer->requester.context = 1; } else { reply = buffer->data; } fputs(reply, output); (void)fflush(output); return SELN_SUCCESS;}extern Menu_item *textsw_new_menu_table(textsw) Textsw_folio textsw;{ int textsw_do_menu_action(); int item; Menu_item menu_item, *menu_items; Menu top_menu = textsw->menu, save_file, edit_cmd, break_mode, find_pattern, filing_cmd, display_cmd, exits_cmd, undo_cmd, paste_cmd, show_clip_cmd, find_sel_cmd, find_clip_cmd, save_cmd, search_field_cmd; menu_items = (Menu_item *)LINT_CAST(sv_calloc((unsigned)TEXTSW_MENU_LAST_CMD, sizeof(Menu_item))); if (textsw_menu_style == TEXTSW_STYLE_ORGANIZED) { menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 1); filing_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 2); edit_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 3); display_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 4); find_pattern = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(edit_cmd, MENU_NTH_ITEM, 2); undo_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(filing_cmd, MENU_NTH_ITEM, 7); exits_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(edit_cmd, MENU_NTH_ITEM, 6); show_clip_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(display_cmd, MENU_NTH_ITEM, 8); break_mode = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(find_pattern, MENU_NTH_ITEM, 2); find_sel_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(find_pattern, MENU_NTH_ITEM, 3); find_clip_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_item = (Menu_item)menu_get(find_pattern, MENU_NTH_ITEM, 7); search_field_cmd = (Menu)menu_get(menu_item, MENU_VALUE); menu_items[(int)TEXTSW_MENU_SAVE_CLOSE] = menu_get(exits_cmd, MENU_NTH_ITEM, 1); menu_items[(int)TEXTSW_MENU_SAVE_QUIT] = menu_get(exits_cmd, MENU_NTH_ITEM, 2); menu_items[(int)TEXTSW_MENU_SAVE_RESET] = menu_get(exits_cmd, MENU_NTH_ITEM, 3); menu_items[(int)TEXTSW_MENU_STORE_CLOSE] = menu_get(exits_cmd, MENU_NTH_ITEM, 4); menu_items[(int)TEXTSW_MENU_STORE_QUIT] = menu_get(exits_cmd, MENU_NTH_ITEM, 5); menu_items[(int)TEXTSW_MENU_SAVE] = menu_get(filing_cmd, MENU_NTH_ITEM, 1); menu_items[(int)TEXTSW_MENU_STORE] = menu_get(filing_cmd, MENU_NTH_ITEM, 2); menu_items[(int)TEXTSW_MENU_LOAD] = menu_get(filing_cmd, MENU_NTH_ITEM, 3); menu_items[(int)TEXTSW_MENU_FILE_STUFF] = menu_get(filing_cmd, MENU_NTH_ITEM, 4); menu_items[(int)TEXTSW_MENU_CD] = menu_get(filing_cmd, MENU_NTH_ITEM, 5); menu_items[(int)TEXTSW_MENU_RESET] = menu_get(filing_cmd, MENU_NTH_ITEM, 6); menu_items[(int)TEXTSW_MENU_UNDO] = menu_get(undo_cmd, MENU_NTH_ITEM, 1); menu_items[(int)TEXTSW_MENU_UNDO_ALL] = menu_get(undo_cmd, MENU_NTH_ITEM, 2); menu_items[(int)TEXTSW_MENU_AGAIN] = menu_get(edit_cmd, MENU_NTH_ITEM, 1); menu_items[(int)TEXTSW_MENU_COPY] = menu_get(edit_cmd, MENU_NTH_ITEM, 3); menu_items[(int)TEXTSW_MENU_PASTE] = menu_get(edit_cmd, MENU_NTH_ITEM, 4); menu_items[(int)TEXTSW_MENU_CUT] = menu_get(edit_cmd, MENU_NTH_ITEM, 5); menu_items[(int)TEXTSW_MENU_SHOW_CLIPBOARD_FROM_EDIT] = menu_get(edit_cmd, MENU_NTH_ITEM, 6); menu_items[(int)TEXTSW_MENU_PUT_THEN_GET] = menu_get(edit_cmd, MENU_NTH_ITEM, 7); menu_items[(int)TEXTSW_MENU_SHOW_CLIPBOARD] = menu_get(show_clip_cmd, MENU_NTH_ITEM, 1); menu_items[(int)TEXTSW_MENU_NORMALIZE_LINE] = menu_get(display_cmd, MENU_NTH_ITEM, 1); menu_items[(int)TEXTSW_MENU_COUNT_TO_LINE] = menu_get(display_cmd, MENU_NTH_ITEM, 2); menu_items[(int)TEXTSW_MENU_CREATE_VIEW] = menu_get(display_cmd, MENU_NTH_ITEM, 3); menu_items[(int)TEXTSW_MENU_DESTROY_VIEW] = menu_get(display_cmd, MENU_NTH_ITEM, 4); menu_items[(int)TEXTSW_MENU_NORMALIZE_INSERTION] = menu_get(display_cmd, MENU_NTH_ITEM, 5); menu_items[(int)TEXTSW_MENU_NORMALIZE_TOP] =
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -