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

📄 textsw_menu.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
	    menu_get(display_cmd, MENU_NTH_ITEM, 6);	menu_items[(int)TEXTSW_MENU_NORMALIZE_BOTTOM] =	    menu_get(display_cmd, MENU_NTH_ITEM, 7);	menu_items[(int)TEXTSW_MENU_WRAP_LINES_AT_CHAR] =	    menu_get(break_mode, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_WRAP_LINES_AT_WORD] =	    menu_get(break_mode, MENU_NTH_ITEM, 2);	menu_items[(int)TEXTSW_MENU_CLIP_LINES] =	    menu_get(break_mode, MENU_NTH_ITEM, 3);	    	menu_items[(int)TEXTSW_MENU_FIND_AND_REPLACE] =	    menu_get(find_pattern, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_SHOW_CLIPBOARD_FROM_FIND] =	    menu_get(find_pattern, MENU_NTH_ITEM, 4);	 menu_items[(int)TEXTSW_MENU_SEL_MARK_TEXT] =	    menu_get(find_pattern, MENU_NTH_ITEM, 5);   	menu_items[(int)TEXTSW_MENU_MATCH_FIELD] =	    menu_get(find_pattern, MENU_NTH_ITEM, 6);	menu_items[(int)TEXTSW_MENU_FIND] =	    menu_get(find_sel_cmd, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_FIND_BACKWARD] =	    menu_get(find_sel_cmd, MENU_NTH_ITEM, 2);	menu_items[(int)TEXTSW_MENU_FIND_SHELF] =	    menu_get(find_clip_cmd, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_FIND_SHELF_BACKWARD] =	    menu_get(find_clip_cmd, MENU_NTH_ITEM, 2);	    	menu_items[(int)TEXTSW_MENU_SEL_ENCLOSE_FIELD] =	    menu_get(search_field_cmd, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_SEL_NEXT_FIELD] =	    menu_get(search_field_cmd, MENU_NTH_ITEM, 2); 	menu_items[(int)TEXTSW_MENU_SEL_PREV_FIELD] =	    menu_get(search_field_cmd, MENU_NTH_ITEM, 3);           } else {	menu_items[(int)TEXTSW_MENU_LOAD] =	    menu_get(top_menu, MENU_NTH_ITEM, 2);	menu_items[(int)TEXTSW_MENU_NORMALIZE_LINE] =	    menu_get(top_menu, MENU_NTH_ITEM, 3);	menu_items[(int)TEXTSW_MENU_CREATE_VIEW] =	    menu_get(top_menu, MENU_NTH_ITEM, 4);	menu_items[(int)TEXTSW_MENU_DESTROY_VIEW] =	    menu_get(top_menu, MENU_NTH_ITEM, 5);	menu_items[(int)TEXTSW_MENU_RESET] =	    menu_get(top_menu, MENU_NTH_ITEM, 6);	menu_items[(int)TEXTSW_MENU_COUNT_TO_LINE] =	    menu_get(top_menu, MENU_NTH_ITEM, 7);	menu_items[(int)TEXTSW_MENU_FILE_STUFF] =	    menu_get(top_menu, MENU_NTH_ITEM, 8);	menu_items[(int)TEXTSW_MENU_NORMALIZE_INSERTION] =	    menu_get(top_menu, MENU_NTH_ITEM, 9);	menu_items[(int)TEXTSW_MENU_CD] =	    menu_get(top_menu, MENU_NTH_ITEM, 11);	menu_items[(int)TEXTSW_MENU_PUT_THEN_GET] =	    menu_get(top_menu, MENU_NTH_ITEM, 13);/*	menu_items[(int)TEXTSW_MENU_MATCH_FIELD] =	    menu_get(top_menu, MENU_NTH_ITEM, 14);*/	menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 1);	save_file = (Menu)menu_get(menu_item, MENU_VALUE);	menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 10);	break_mode = (Menu)menu_get(menu_item, MENU_VALUE);	menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 12);	find_pattern = (Menu)menu_get(menu_item, MENU_VALUE);/*	menu_item = (Menu_item)menu_get(top_menu, MENU_NTH_ITEM, 15);	edit_cmd = (Menu)menu_get(menu_item, MENU_VALUE);	menu_items[(int)TEXTSW_MENU_AGAIN] =	    menu_get(edit_cmd, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_UNDO] =	    menu_get(edit_cmd, MENU_NTH_ITEM, 2);	menu_items[(int)TEXTSW_MENU_CUT] =	    menu_get(edit_cmd, MENU_NTH_ITEM, 3);	menu_items[(int)TEXTSW_MENU_COPY] =	    menu_get(edit_cmd, MENU_NTH_ITEM, 4); 	menu_items[(int)TEXTSW_MENU_PASTE] =	    menu_get(edit_cmd, MENU_NTH_ITEM, 5);*/         	menu_items[(int)TEXTSW_MENU_SAVE] =	    menu_get(save_file, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_SAVE_QUIT] =	    menu_get(save_file, MENU_NTH_ITEM, 2);	menu_items[(int)TEXTSW_MENU_SAVE_RESET] =	    menu_get(save_file, MENU_NTH_ITEM, 3);	menu_items[(int)TEXTSW_MENU_SAVE_CLOSE] =	    menu_get(save_file, MENU_NTH_ITEM, 4); 	menu_items[(int)TEXTSW_MENU_STORE] =	    menu_get(save_file, MENU_NTH_ITEM, 5);	menu_items[(int)TEXTSW_MENU_STORE_QUIT] =	    menu_get(save_file, MENU_NTH_ITEM, 6);	menu_items[(int)TEXTSW_MENU_STORE_CLOSE] =	    menu_get(save_file, MENU_NTH_ITEM, 7); 	menu_items[(int)TEXTSW_MENU_CLIP_LINES] =	    menu_get(break_mode, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_WRAP_LINES_AT_CHAR] =	    menu_get(break_mode, MENU_NTH_ITEM, 2);	menu_items[(int)TEXTSW_MENU_FIND] =	    menu_get(find_pattern, MENU_NTH_ITEM, 1);	menu_items[(int)TEXTSW_MENU_FIND_BACKWARD] =	    menu_get(find_pattern, MENU_NTH_ITEM, 2);	menu_items[(int)TEXTSW_MENU_FIND_SHELF] =	    menu_get(find_pattern, MENU_NTH_ITEM, 3);	menu_items[(int)TEXTSW_MENU_FIND_SHELF_BACKWARD] =	    menu_get(find_pattern, MENU_NTH_ITEM, 4); #ifdef _TEXTSW_FIND_RE	menu_items[(int)TEXTSW_MENU_FIND_RE] =	    menu_get(find_pattern, MENU_NTH_ITEM, 5);	menu_items[(int)TEXTSW_MENU_FIND_RE_BACKWARD] =	    menu_get(find_pattern, MENU_NTH_ITEM, 6);	menu_items[(int)TEXTSW_MENU_FIND_TAG] =	    menu_get(find_pattern, MENU_NTH_ITEM, 7);	menu_items[(int)TEXTSW_MENU_FIND_TAG_BACKWARD] =	    menu_get(find_pattern, MENU_NTH_ITEM, 8); #endif    } /* end of "if textsw_menu_style != organized" */    for(item = (int)TEXTSW_MENU_NO_CMD;	item < (int)TEXTSW_MENU_LAST_CMD;	item++) {        menu_set(menu_items[item],        		MENU_ACTION, textsw_do_menu_action, 0);    }    return menu_items;}static struct pixrect *textsw_init_get_only_pr(menu)    Menu	menu;{    struct pixrect		*pr;    struct pixfont		*menu_font;    struct pr_subregion		 get_only_bound;    struct pr_prpos		 get_only_prpos;    int				 menu_left_margin;    /* compute the size of the pixrect and allocate it */    menu_font = (struct pixfont *)LINT_CAST(menu_get(menu, MENU_FONT));    pf_textbound(&get_only_bound,	strlen(put_then_get), menu_font, put_then_get);    menu_left_margin = (int)menu_get(menu, MENU_LEFT_MARGIN);    pr = (struct pixrect *)mem_create(	get_only_bound.size.x + menu_left_margin +	(int)menu_get(menu, MENU_RIGHT_MARGIN),	get_only_bound.size.y, 1);    /* write the text into the pixrect */    get_only_prpos.pr = pr;    get_only_prpos.pos.x = menu_left_margin	- menu_font->pf_char[put_then_get[0]].pc_home.x;    get_only_prpos.pos.y =	- menu_font->pf_char[put_then_get[0]].pc_home.y;    pf_text(get_only_prpos, PIX_SRC, menu_font, put_then_get);    /* gray out "Copy then" */    pf_textbound(&get_only_bound,	strlen(put_then), menu_font, put_then);    pr_replrop(pr, menu_left_margin, 0,	       get_only_bound.size.x, get_only_bound.size.y, 	       PIX_SRC & PIX_DST, &menu_gray50_pr, 0, 0);    return pr;}extern Menutextsw_menu_init(textsw)    Textsw_folio textsw;{    Textsw_enum style;    if (textsw_menu != 0) {        textsw->menu = (caddr_t)textsw_menu;    } else {	if (!textsw_menu_style_already_set) {	    Textsw_enum style = textsw_get_menu_style_internal();	}	(Menu)textsw->menu = textsw_menu = textsw_new_menu(textsw);	if (textsw_get_only_pr == 0) {	    textsw_get_only_pr = textsw_init_get_only_pr(textsw_menu);	}	textsw_menu_items = textsw_new_menu_table(textsw);	textsw_menu_refcount = 0;    }    textsw->menu_table = (caddr_t)textsw_menu_items;    textsw_menu_refcount++;    return (textsw->menu);}extern Menutextsw_get_unique_menu(textsw)    Textsw_folio textsw;{    if (textsw->menu == textsw_menu) {        /* refcount == 1 ==> textsw is the only referencer */        if (textsw_menu_refcount == 1) {            textsw_menu = 0;            textsw_menu_items = 0;            textsw_menu_refcount = 0;        } else {	    textsw->menu = (caddr_t)textsw_new_menu(textsw);	    textsw->menu_table = (caddr_t)textsw_new_menu_table(textsw);	    textsw_menu_refcount--;        }    }    return (textsw->menu);}extern voidtextsw_set_menu_style_internal(style)	Textsw_enum	style;{	if (textsw_menu == 0) textsw_menu_style = style;	textsw_menu_style_already_set = 1; /* set first time */}extern Textsw_enumtextsw_get_menu_style_internal(){    if (!textsw_menu_style_already_set) { /* not set yet */	if (defaults_get_boolean(		"/Compatibility/New_Text_Menu", (Bool)TRUE, (int *)NULL)) {	    textsw_menu_style = TEXTSW_STYLE_ORGANIZED;	} else textsw_menu_style = TEXTSW_STYLE_UNORGANIZED;	textsw_menu_style_already_set = 1;     }    return (textsw_menu_style);}#define MENU_ACTIVE	MENU_INACTIVE, FALSEextern voidtextsw_do_menu(view, ie)    Textsw_view		 view;    Event		*ie;{    Ev_handle		 current_view;    int			 i;    register Textsw_folio textsw = FOLIO_FOR_VIEW(view);    Textsw		 abstract = VIEW_REP_TO_ABS(view);    register Menu_item	*menu_items;    int			 primary_selection_exists, shelf_isnt_empty;    if (textsw->menu == 0) return;    primary_selection_exists = textsw_is_seln_nonzero(textsw, EV_SEL_PRIMARY);    shelf_isnt_empty = textsw_is_seln_nonzero(textsw, EV_SEL_SHELF);    menu_items = (Menu_item *)LINT_CAST(textsw->menu_table);    for (i = 0; i < (int)TEXTSW_MENU_LAST_CMD; i++)	menu_set(menu_items[i],	MENU_INACTIVE,		TRUE,				MENU_CLIENT_DATA,	abstract,				0);    /* Construct a menu appropriate to the the view it is invoked over.  */    if (((textsw->state & TXTSW_NO_LOAD) == 0) && primary_selection_exists)	menu_set(menu_items[(int)TEXTSW_MENU_LOAD], MENU_ACTIVE, 0);    menu_set(menu_items[(int)TEXTSW_MENU_SAVE], MENU_ACTIVE, 0);    menu_set(menu_items[(int)TEXTSW_MENU_STORE], MENU_ACTIVE, 0);    if (textsw->views->first_view != EV_NULL) {	Es_handle		 original;	original = (Es_handle)LINT_CAST(		   es_get(textsw->views->esh, ES_PS_ORIGINAL) );	if ((!TXTSW_IS_READ_ONLY(textsw)) &&	    (original != ES_NULL) &&	    (Es_enum)LINT_CAST(es_get(original, ES_TYPE)) == ES_TYPE_FILE) {	    menu_set(menu_items[(int)TEXTSW_MENU_SAVE_QUIT],		     MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_SAVE_RESET],		     MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_SAVE_CLOSE],		     MENU_ACTIVE, 0);	}	if ((textsw->state & TXTSW_READ_ONLY_SW) == 0) {   	    menu_set(menu_items[(int)TEXTSW_MENU_RESET], MENU_ACTIVE, 0);	    if (primary_selection_exists) {/* commented out since this item is set to active always *	        menu_set(menu_items[(int)TEXTSW_MENU_STORE],			MENU_ACTIVE, 0);*/	        menu_set(menu_items[(int)TEXTSW_MENU_STORE_QUIT],			MENU_ACTIVE, 0);	        menu_set(menu_items[(int)TEXTSW_MENU_STORE_CLOSE],			MENU_ACTIVE, 0);	        }	}	if (textsw->tool)	    menu_set(menu_items[(int)TEXTSW_MENU_CREATE_VIEW],		     MENU_ACTIVE, 0);	if (((textsw->state & TXTSW_NO_CD) == 0)		&& (primary_selection_exists))	    menu_set(menu_items[(int)TEXTSW_MENU_CD], MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_NORMALIZE_INSERTION],		 MENU_ACTIVE, 0);/*	menu_set(menu_items[(int)TEXTSW_MENU_NORMALIZE_SELECTION],		 MENU_ACTIVE, 0);*/	menu_set(menu_items[(int)TEXTSW_MENU_NORMALIZE_TOP],		     MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_NORMALIZE_BOTTOM],		     MENU_ACTIVE, 0);	if (!TXTSW_IS_READ_ONLY(textsw)) {	    if (primary_selection_exists)		menu_set(menu_items[(int)TEXTSW_MENU_FILE_STUFF],		     MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_AGAIN],		     MENU_ACTIVE, 0);	    if (textsw_has_been_modified(abstract)) {	        menu_set(menu_items[(int)TEXTSW_MENU_UNDO],		     MENU_ACTIVE, 0);	        menu_set(menu_items[(int)TEXTSW_MENU_UNDO_ALL],		     MENU_ACTIVE, 0);	    }	    if (primary_selection_exists)	    /* if there is a non-zero primary selection,	     * set string to be put_then_get, and make active;	     * else if there is a non-zero shelf,	     * set string to be get_only, and make active;	     * else set string to be put_then_get, and make inactive.	     */	    if (primary_selection_exists) {	        menu_set(menu_items[(int)TEXTSW_MENU_PUT_THEN_GET],	        	 MENU_ACTIVE,	        	 MENU_IMAGE,  0,	        	 MENU_STRING, put_then_get,	        	 0);	        menu_set(menu_items[(int)TEXTSW_MENU_CUT], MENU_ACTIVE, 0);	        menu_set(menu_items[(int)TEXTSW_MENU_COPY], MENU_ACTIVE, 0);	    } else if (shelf_isnt_empty) {	        menu_set(menu_items[(int)TEXTSW_MENU_PUT_THEN_GET],	        	 MENU_ACTIVE,	        	 MENU_STRING, 0,	        	 MENU_IMAGE,  textsw_get_only_pr,	        	 0);	    } else {		/* Leave MENU_INACTIVE */	        menu_set(menu_items[(int)TEXTSW_MENU_PUT_THEN_GET],	        	 MENU_IMAGE,  0,	        	 MENU_STRING, put_then_get,	        	 0);	    }	    	    if (shelf_isnt_empty) {	        menu_set(menu_items[(int)TEXTSW_MENU_PASTE],		     MENU_ACTIVE, 0);	    }	    	}	if (textsw->views->first_view->next != EV_NULL)	    menu_set(menu_items[(int)TEXTSW_MENU_DESTROY_VIEW],		     MENU_ACTIVE, 0);	current_view = view->e_view;	if (current_view != EV_NULL) {	    if ((Ev_right_break)ev_get(current_view, EV_RIGHT_BREAK) ==		 EV_CLIP) {		menu_set(menu_items[(int)TEXTSW_MENU_WRAP_LINES_AT_CHAR],			 MENU_ACTIVE, 0);		menu_set(menu_items[(int)TEXTSW_MENU_WRAP_LINES_AT_WORD],			 MENU_ACTIVE, 0);	    } else if ((Ev_right_break)ev_get(current_view, EV_RIGHT_BREAK) ==		 EV_WRAP_AT_CHAR) {		menu_set(menu_items[(int)TEXTSW_MENU_CLIP_LINES],			 MENU_ACTIVE, 0);		menu_set(menu_items[(int)TEXTSW_MENU_WRAP_LINES_AT_WORD],			 MENU_ACTIVE, 0);	    } else {		menu_set(menu_items[(int)TEXTSW_MENU_CLIP_LINES],			 MENU_ACTIVE, 0);		menu_set(menu_items[(int)TEXTSW_MENU_WRAP_LINES_AT_CHAR],			 MENU_ACTIVE, 0);	    }	if (primary_selection_exists) {	    menu_set(menu_items[(int)TEXTSW_MENU_FIND],		MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_FIND_BACKWARD],		MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_MATCH_FIELD],		MENU_ACTIVE, 0); 	    menu_set(menu_items[(int)TEXTSW_MENU_NORMALIZE_LINE],		MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_COUNT_TO_LINE],		MENU_ACTIVE, 0);	}	if (shelf_isnt_empty) {	    menu_set(menu_items[(int)TEXTSW_MENU_SHOW_CLIPBOARD],		MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_FIND_SHELF],		MENU_ACTIVE, 0);	    menu_set(menu_items[(int)TEXTSW_MENU_FIND_SHELF_BACKWARD],		MENU_ACTIVE, 0);	}	/* should check if there is selection */	menu_set(menu_items[(int)TEXTSW_MENU_FIND_AND_REPLACE], 	    MENU_ACTIVE, 0);		menu_set(menu_items[(int)TEXTSW_MENU_SEL_ENCLOSE_FIELD],	    MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_SEL_NEXT_FIELD], MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_SEL_PREV_FIELD], MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_SEL_MARK_TEXT], MENU_ACTIVE, 0);		menu_set(menu_items[(int)TEXTSW_MENU_SHOW_CLIPBOARD_FROM_EDIT],	    MENU_ACTIVE, 0); 	menu_set(menu_items[(int)TEXTSW_MENU_SHOW_CLIPBOARD_FROM_FIND],	    MENU_ACTIVE, 0);#ifdef _TEXTSW_FIND_RE	menu_set(menu_items[(int)TEXTSW_MENU_FIND_RE], MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_FIND_RE_BACKWARD], MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_FIND_TAG], MENU_ACTIVE, 0);	menu_set(menu_items[(int)TEXTSW_MENU_FIND_TAG_BACKWARD], MENU_ACTIVE,		 0);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -