⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 textsw_menu.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
		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 + -