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

📄 textsw_attr.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		defaults_lookup(def_str, insert_makes_visible_pairs));	  case TEXTSW_LINE_BREAK_ACTION:	    def_str = defaults_get_string("/Text/Long_line_break_mode",					  (char *)0, (int *)0);	    return((caddr_t)		defaults_lookup(def_str, line_break_pairs));	  case TEXTSW_LOAD_DIR_IS_CD:	    def_str = defaults_get_string("/Text/Load_file_of_directory",					  (char *)0, (int *)0);	    return((caddr_t)		defaults_lookup(def_str, load_file_of_dir_pairs));	  case TEXTSW_LOWER_CONTEXT:	    return((caddr_t)		defaults_get_integer_check("/Text/Lower_context",					   0, EV_NO_CONTEXT, 50, NULL));	  case TEXTSW_MULTI_CLICK_SPACE:	    return((caddr_t)		defaults_get_integer_check("/Text/Multi_click_space",					   3, 0, 500, NULL));	  case TEXTSW_MULTI_CLICK_TIMEOUT:	    return((caddr_t)		defaults_get_integer_check("/Text/Multi_click_timeout",					   390, 0, 2000, NULL));	  case TEXTSW_STORE_CHANGES_FILE:	    return((caddr_t)		defaults_get_boolean("/Text/Store_changes_file", True, NULL));	  case TEXTSW_STORE_SELF_IS_SAVE:	    return((caddr_t)		defaults_get_boolean("/Text/Store_self_is_save", True, NULL));	  case TEXTSW_UPPER_CONTEXT:	    return((caddr_t)		defaults_get_integer_check("/Text/Upper_context",					   2, EV_NO_CONTEXT, 50, NULL));	  case TEXTSW_LEFT_MARGIN:	    return((caddr_t)		defaults_get_integer_check("/Text/Left_margin",					   4, 0, 2000, NULL));	  case TEXTSW_RIGHT_MARGIN:	    return((caddr_t)		defaults_get_integer_check("/Text/Right_margin",					   0, 0, 2000, NULL));	  case TEXTSW_TAB_WIDTH:	    return((caddr_t)		defaults_get_integer_check("/Text/Tab_width",					   8, 0, 50, NULL));	  default:	    return((caddr_t)0);	}}#ifndef lintstatic intcount_args(arg1, va_alist)	caddr_t	arg1;	va_dcl{	register int	count;	va_list		args;	va_start(args);	for (count = 2; va_arg(args, caddr_t); count++) {}	va_end(args);	return(count);}#endif/* VARARGS1 */extern caddr_ttextsw_get(abstract, va_alist)	Textsw			 abstract;	va_dcl{	Textsw_view		 view;	register Textsw_folio	 textsw;	Es_index		 pos;	  /* pos, buf and buf_len are */	char			*buf;	  /* temporaries for TEXTSW_CONTENTS */	int			 buf_len;	Textsw_attribute	 attribute;	va_list			 args;	if ((caddr_t (*)())LINT_CAST(abstract) == textsw_window_object) {	    /* Client called textsw_get(TEXTSW, TEXTSW_XXX); */	    int		i;#ifndef lint	    if (TEXTSW_count == 0)		TEXTSW_count = count_args(TEXTSW, 0) - 1;#endif	    va_start(args);	    for (i = 0; i < TEXTSW_count-1; i++) {va_arg(args, caddr_t);}	    attribute = va_arg(args, Textsw_attribute);	    va_end(args);	    return(textsw_get_from_defaults(attribute));	}	if (abstract == 0)	    return((caddr_t)0);	view = VIEW_ABS_TO_REP(abstract);	textsw = FOLIO_FOR_VIEW(view);	va_start(args);	attribute = va_arg(args, Textsw_attribute);	switch (attribute) {	  case TEXTSW_INSERTION_POINT:	  case TEXTSW_LENGTH:	    textsw_flush_caches(view, TFC_STD);	    break;	  case TEXTSW_CONTENTS:	    pos = va_arg(args, Es_index);	    buf = va_arg(args, caddr_t);	    buf_len = va_arg(args, int);	    break;	}	va_end(args);	/* Note that ev_get(chain, EV_CHAIN_xxx) casts chain to be view in	 * order to keep lint happy.	 */	switch (attribute) {	  case TEXTSW_ADJUST_IS_PENDING_DELETE:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_ADJUST_IS_PD));	  case TEXTSW_AGAIN_LIMIT:	    return((caddr_t)		   ((textsw->again_count) ? (textsw->again_count-1) : 0));	  case TEXTSW_AGAIN_RECORDING:	    return((caddr_t)		   !BOOL_FLAG_VALUE(textsw->state, TXTSW_NO_AGAIN_RECORDING));	  case TEXTSW_AUTO_INDENT:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_AUTO_INDENT));	  case TEXTSW_AUTO_SCROLL_BY:	    return(ev_get((Ev_handle)(textsw->views),			  EV_CHAIN_AUTO_SCROLL_BY));	  case TEXTSW_BLINK_CARET:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->caret_state, TXTSW_CARET_FLASHING));	  case TEXTSW_BROWSING:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_READ_ONLY_SW));	  case TEXTSW_CLIENT_DATA:	    return(textsw->client_data);	  case HELP_DATA:	    return(textsw->help_data);	  case TEXTSW_COALESCE_WITH:	    return((caddr_t)textsw->coalesce_with);	  case TEXTSW_CONFIRM_OVERWRITE:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_CONFIRM_OVERWRITE));	  case TEXTSW_CONTENTS:	    return((caddr_t)		   textsw_get_contents(textsw, pos, buf, buf_len) ); 	  case TEXTSW_CONTROL_CHARS_USE_FONT:	    return((caddr_t)		   ei_get(textsw->views->eih, EI_CONTROL_CHARS_USE_FONT) );	  case TEXTSW_DESTROY_ALL_VIEWS:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_DESTROY_ALL_VIEWS));	  case TEXTSW_DISABLE_CD:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_NO_CD));	  case TEXTSW_DISABLE_LOAD:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_NO_LOAD));	  case TEXTSW_EDIT_BACK_CHAR:	    return((caddr_t)textsw->edit_bk_char);	  case TEXTSW_EDIT_BACK_WORD:	    return((caddr_t)textsw->edit_bk_word);	  case TEXTSW_EDIT_BACK_LINE:	    return((caddr_t)textsw->edit_bk_line);	  case TEXTSW_EDIT_COUNT:	    return(ev_get((Ev_handle)(textsw->views),			  EV_CHAIN_EDIT_NUMBER));	  case TEXTSW_WRAPAROUND_SIZE:	    return(es_get(textsw->views->esh, ES_PS_SCRATCH_MAX_LEN));	  case TEXTSW_ES_CREATE_PROC:	    return((caddr_t)LINT_CAST(textsw->es_create));	  case TEXTSW_FILE: {	    char	*name;	    if (textsw_file_name(textsw, &name))		return((caddr_t)0);	    else		return((caddr_t)name);	  }	  case TEXTSW_FIRST:	    return((caddr_t)	      ft_position_for_index(view->e_view->line_table, 0));	  case TEXTSW_FIRST_LINE: {	    int	top, bottom;	    ev_line_info(view->e_view, &top, &bottom);	    return((caddr_t)top-1);	  }	  case TEXTSW_FONT:	  case WIN_FONT:	    return(ei_get(textsw->views->eih, EI_FONT));	  case TEXTSW_HEIGHT:	  case WIN_HEIGHT:	    return((caddr_t)textsw->first_view->rect.r_height);	  case TEXTSW_HISTORY_LIMIT:	    return((caddr_t)		   ((textsw->undo_count) ? (textsw->undo_count-1) : 0));	  case TEXTSW_IGNORE_LIMIT:	    return((caddr_t)textsw->ignore_limit);	  case TEXTSW_INSERT_MAKES_VISIBLE:	    return((caddr_t)textsw->insert_makes_visible);	  case TEXTSW_INSERTION_POINT:	    return((caddr_t)ev_get_insert(textsw->views));	  case TEXTSW_LENGTH:	    return((caddr_t)es_get_length(textsw->views->esh));	  case TEXTSW_LOAD_DIR_IS_CD:	    return((caddr_t)((textsw->state & TXTSW_LOAD_CAN_CD)			     ? TEXTSW_ALWAYS : TEXTSW_NEVER) );	  case TEXTSW_LOWER_CONTEXT:	    return(ev_get((Ev_handle)(textsw->views), EV_CHAIN_LOWER_CONTEXT));	  case TEXTSW_MODIFIED:	    return((caddr_t)textsw_has_been_modified(abstract));	  case TEXTSW_MEMORY_MAXIMUM:	    return((caddr_t)textsw->es_mem_maximum);	  case WIN_MENU:	  case TEXTSW_MENU: {	    extern Menu textsw_get_unique_menu();	    return((caddr_t)textsw_get_unique_menu(textsw));	    }	  case TEXTSW_MULTI_CLICK_SPACE:	    return((caddr_t)textsw->multi_click_space);	  case TEXTSW_MULTI_CLICK_TIMEOUT:	    return((caddr_t)textsw->multi_click_timeout);	  case TEXTSW_NO_RESET_TO_SCRATCH:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_NO_RESET_TO_SCRATCH));	  case TEXTSW_NOTIFY_LEVEL:	    return((caddr_t)textsw->notify_level);	  case TEXTSW_NOTIFY_PROC:	    return((caddr_t)LINT_CAST(textsw->notify));	  case TEXTSW_PIXWIN:	    return((caddr_t)PIXWIN_FOR_VIEW(view));	  case TEXTSW_READ_ONLY:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_READ_ONLY_ESH));	  case TEXTSW_STORE_SELF_IS_SAVE:	    return((caddr_t)		   BOOL_FLAG_VALUE(textsw->state, TXTSW_STORE_SELF_IS_SAVE));	  case TEXTSW_TAB_WIDTH:	    return(ei_get(textsw->views->eih, EI_TAB_WIDTH));	  case TEXTSW_TEMP_FILENAME:	    return(textsw->temp_filename);	  case TEXTSW_TOOL:	    return((caddr_t)textsw->tool);	  case TEXTSW_UPPER_CONTEXT:	    return(ev_get((Ev_handle)(textsw->views), EV_CHAIN_UPPER_CONTEXT));	  case TEXTSW_LEFT_MARGIN:	    return(ev_get(view->e_view, EV_LEFT_MARGIN));	  case TEXTSW_RIGHT_MARGIN:	    return(ev_get(view->e_view, EV_RIGHT_MARGIN));	  case TEXTSW_SCROLLBAR:	  case WIN_VERTICAL_SCROLLBAR:	    return((caddr_t)SCROLLBAR_FOR_VIEW(view));	  case TEXTSW_WIDTH:	  case WIN_WIDTH:	    return((caddr_t)textsw->first_view->rect.r_width);	  case TEXTSW_LINE_BREAK_ACTION:/* Bug: should be able to get this. */	  case TEXTSW_MENU_STYLE:	    return((caddr_t)textsw_get_menu_style_internal());	  default:	    return((caddr_t)0);	}}/* VARARGS1 */extern Textsw_statustextsw_set(abstract, va_alist)	Textsw		abstract;	va_dcl{	caddr_t		attr_argv[ATTR_STANDARD_SIZE];	va_list		args;	va_start(args);	(void) attr_make(attr_argv, ATTR_STANDARD_SIZE, args);	va_end(args);	return(textsw_set_internal(VIEW_ABS_TO_REP(abstract), attr_argv));}/* VARARGS1 */pkg_private voidtextsw_notify(view, va_alist)	Textsw_view		view;	va_dcl{	register Textsw_folio	folio;	int			doing_event;	caddr_t			attr_argv[ATTR_STANDARD_SIZE];	va_list			args;	va_start(args);	view = VIEW_FROM_FOLIO_OR_VIEW(view);	(void) attr_make(attr_argv, ATTR_STANDARD_SIZE, args);	va_end(args);	folio = FOLIO_FOR_VIEW(view);	doing_event = (folio->state & TXTSW_DOING_EVENT);	folio->state &= ~TXTSW_DOING_EVENT;	folio->notify(VIEW_REP_TO_ABS(view), attr_argv);	if (doing_event)	    folio->state |= TXTSW_DOING_EVENT;}pkg_private voidtextsw_notify_replaced(folio_or_view, insert_before, length_before,		       replaced_from, replaced_to, count_inserted)	Textsw_opaque		folio_or_view;	Es_index		insert_before;	Es_index		length_before;	Es_index		replaced_from;	Es_index		replaced_to;	Es_index		count_inserted;{	Textsw_view		view = VIEW_FROM_FOLIO_OR_VIEW(folio_or_view);	register Textsw_folio	folio = FOLIO_FOR_VIEW(view);	int			in_notify_proc =					folio->state & TXTSW_IN_NOTIFY_PROC;	folio->state |= TXTSW_IN_NOTIFY_PROC;	textsw_notify(view, TEXTSW_ACTION_REPLACED,		      insert_before, length_before,		      replaced_from, replaced_to, count_inserted, 0);	if (!in_notify_proc)	    folio->state &= ~TXTSW_IN_NOTIFY_PROC;}pkg_private Es_indextextsw_get_contents(textsw, position, buffer, buffer_length)	register Textsw_folio	 textsw;	Es_index		 position;	char			*buffer;	register int		 buffer_length;{	Es_index	 next_read_at;	int		 read;	es_set_position(textsw->views->esh, position);	next_read_at = es_read(textsw->views->esh, buffer_length, buffer,			       &read);	if AN_ERROR(read != buffer_length) {	    bzero(buffer+read, buffer_length-read);	}	return(next_read_at);}

⌨️ 快捷键说明

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