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

📄 textsw_attr.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 3 页
字号:
		file = NULL;		display_views = 0;		break;	      case TEXTSW_CHECKPOINT_FREQUENCY:		textsw->checkpoint_frequency = (int)(attrs[1]);		break;	      case TEXTSW_FONT:	      case WIN_FONT:		if (attrs[1]) {		    Ev_handle	ev_next;		    if (textsw->state & TXTSW_INITIALIZED) {			if (textsw->state & TXTSW_OPENED_FONT) {		    	    PIXFONT	*old_font;			    old_font = (PIXFONT *)LINT_CAST(			    		ei_get(textsw->views->eih, EI_FONT) );			    pf_close(old_font);			    textsw->state &= ~TXTSW_OPENED_FONT;			}			(void) ei_set(textsw->views->eih,					EI_FONT, attrs[1], 0);		    }		/* Adjust the views to account for the font change */		    FORALLVIEWS(textsw->views, ev_next) {		    (void) ev_set(ev_next,			    EV_CLIP_RECT, &ev_next->rect,			    EV_RECT, &ev_next->rect, 0);		    }		}		break;	      case TEXTSW_HISTORY_LIMIT:		/* Internally we want one more again slot that client does.  */		temp = (int)(attrs[1]);		temp = (temp > 0) ? temp+1 : 0;		textsw_init_undo(textsw, temp);		break;	      case TEXTSW_IGNORE_LIMIT:		textsw->ignore_limit = (unsigned)(attrs[1]);		break;	      case TEXTSW_INSERT_FROM_FILE: {	      	pkg_private Textsw_status   textsw_get_from_file();	      		        *status_ptr = textsw_get_from_file(view, (char *)(attrs[1]),	        				   (status_ptr == &status_dummy));	        if (*status_ptr == TEXTSW_STATUS_OKAY)	            update_scrollbar = 2;		break;		};	      case TEXTSW_INSERT_MAKES_VISIBLE:		switch ((Textsw_enum)attrs[1]) {		  case TEXTSW_NEVER:		  case TEXTSW_ALWAYS:		  case TEXTSW_IF_AUTO_SCROLL:		    textsw->insert_makes_visible = (Textsw_enum)attrs[1];		    break;		  default:		    *status_ptr = TEXTSW_STATUS_BAD_ATTR_VALUE;		    break;		}		break;	      case TEXTSW_INSERTION_POINT:		(void) textsw_set_insert(textsw, (Es_index)(attrs[1]));		break;	      case TEXTSW_LEFT_MARGIN:		(void) ev_set(view->e_view,			      (all_views) ?				 EV_FOR_ALL_VIEWS : EV_END_ALL_VIEWS,			      EV_LEFT_MARGIN, (int)(attrs[1]),			      0);		display_views = (all_views) ? 2 : 1;		break;	      case TEXTSW_LINE_BREAK_ACTION: {		Ev_right_break	ev_break_action;		switch ((Textsw_enum)attrs[1]) {		  case TEXTSW_CLIP:		    ev_break_action = EV_CLIP;		    goto TLBA_Tail;		  case TEXTSW_WRAP_AT_CHAR:		    ev_break_action = EV_WRAP_AT_CHAR;		    goto TLBA_Tail;		  case TEXTSW_WRAP_AT_WORD:		    ev_break_action = EV_WRAP_AT_WORD;TLBA_Tail:		    (void) ev_set(view->e_view,				  (all_views) ?				    EV_FOR_ALL_VIEWS : EV_END_ALL_VIEWS,				  EV_RIGHT_BREAK, ev_break_action,				  0);		    display_views = (all_views) ? 2 : 1;		    break;		  default:		    *status_ptr = TEXTSW_STATUS_BAD_ATTR_VALUE;		    break;		}		break;	      }	      case TEXTSW_LOAD_DIR_IS_CD:		switch ((Textsw_enum)attrs[1]) {		  case TEXTSW_ALWAYS:		    textsw->state |= TXTSW_LOAD_CAN_CD;		    break;		  case TEXTSW_NEVER:		    textsw->state &= ~TXTSW_LOAD_CAN_CD;		    break;		  default:		    *status_ptr = TEXTSW_STATUS_BAD_ATTR_VALUE;		    break;		}		break;	      case TEXTSW_LOWER_CONTEXT:		(void) ev_set(view->e_view,			      EV_CHAIN_LOWER_CONTEXT, (int)(attrs[1]),			      0);		break;	      case TEXTSW_MEMORY_MAXIMUM:		textsw->es_mem_maximum = (unsigned)(attrs[1]);		if (textsw->es_mem_maximum == 0) {		    textsw->es_mem_maximum = TEXTSW_INFINITY;		} else if (textsw->es_mem_maximum < 1000)		    textsw->es_mem_maximum = 1000;		break;	      case WIN_MENU:	      case TEXTSW_MENU:		textsw->menu = attrs[1];		break;	      case TEXTSW_MULTI_CLICK_SPACE:		if ((int)(attrs[1]) != -1)		    textsw->multi_click_space = (int)(attrs[1]);		break;	      case TEXTSW_MULTI_CLICK_TIMEOUT:		if ((int)(attrs[1]) != -1)		    textsw->multi_click_timeout = (int)(attrs[1]);		break;			      case TEXTSW_NO_REPAINT_TIL_EVENT:	        ev_set(view->e_view, EV_NO_REPAINT_TIL_EVENT, (int)(attrs[1]), 	               0);		break;			      case TEXTSW_NO_RESET_TO_SCRATCH:		SET_BOOL_FLAG(textsw->state, attrs[1],			      TXTSW_NO_RESET_TO_SCRATCH);		break;	      case TEXTSW_NOTIFY_LEVEL:		textsw->notify_level = (int)(attrs[1]);		break;	      case TEXTSW_NOTIFY_PROC:		textsw->notify = (int (*)())LINT_CAST(attrs[1]);		if (textsw->notify_level == 0)		    textsw->notify_level = TEXTSW_NOTIFY_STANDARD;		break;	      case TEXTSW_READ_ONLY:		temp = TXTSW_IS_READ_ONLY(textsw);		SET_BOOL_FLAG(textsw->state, attrs[1], TXTSW_READ_ONLY_ESH);		set_read_only_esh = (textsw->state & TXTSW_READ_ONLY_ESH);		ceased_read_only = (temp && !TXTSW_IS_READ_ONLY(textsw));		break;	      case TEXTSW_RESET_MODE:		reset_mode = (int)(attrs[1]);		break;	      case TEXTSW_RESET_TO_CONTENTS:		(void)textsw_reset_2(VIEW_REP_TO_ABS(view), 0, 0, TRUE, FALSE);		break;	      case TEXTSW_RIGHT_MARGIN:		(void) ev_set(view->e_view,			      (all_views) ?				EV_FOR_ALL_VIEWS : EV_END_ALL_VIEWS,			      EV_RIGHT_MARGIN, (int)(attrs[1]),			      0);		display_views = (all_views) ? 2 : 1;		break;	      case TEXTSW_SCROLLBAR:	      case WIN_VERTICAL_SCROLLBAR:		textsw_add_scrollbar_to_view(view, (Scrollbar)(attrs[1]));		break;	      case TEXTSW_STATUS:		status_ptr = (Textsw_status *)LINT_CAST(attrs[1]);		*status_ptr = TEXTSW_STATUS_OKAY;		break;	      case TEXTSW_STORE_SELF_IS_SAVE:		SET_BOOL_FLAG(textsw->state, attrs[1],			      TXTSW_STORE_SELF_IS_SAVE);		break;	      case TEXTSW_TAB_WIDTH:		(void) ei_set(textsw->views->eih, EI_TAB_WIDTH, attrs[1], 0);		break;	      case TEXTSW_TEMP_FILENAME:	        textsw->temp_filename = strdup((char *)LINT_CAST(attrs[1]));	        break;	      case TEXTSW_TOOL:		textsw->tool = (attrs[1]);		break;	      case TEXTSW_UPDATE_SCROLLBAR:		update_scrollbar = (all_views) ? 2 : 1;		break;	      case TEXTSW_UPPER_CONTEXT:		(void) ev_set(view->e_view,			      EV_CHAIN_UPPER_CONTEXT, (int)(attrs[1]),			      0);		break;	      case TEXTSW_WRAPAROUND_SIZE:		es_set(textsw->views->esh,		       ES_PS_SCRATCH_MAX_LEN, attrs[1],		       0);		break;#ifdef DEBUG	      case TEXTSW_MALLOC_DEBUG_LEVEL:		malloc_debug((int)attrs[1]);		break;#endif	      case TEXTSW_HEIGHT:	      case TEXTSW_WIDTH:		/* BUG ALERT!  Explicitly ignore these for now. */		break;	      case TEXTSW_EDIT_COUNT:		(void) fprintf(stderr, "%s: %s is read-only attribute.\n",				"textsw_set",				attr_sprint(expand_attr, (u_int)attrs[0]));		break;	      case TEXTSW_CONSUME_ATTRS:		consume_attrs = (attrs[1] ? 1 : 0);		break;	      default:		if (ATTR_PKG_TEXTSW == ATTR_PKG(attrs[0])) {		    extern char *attr_sprint();		    (void) fprintf(stderr, "%s: %s not a valid attribute.\n",				   "textsw_set",				   attr_sprint(expand_attr, (u_int)attrs[0]));		}		break;	    }	    if (consume_attrs & 0xFFFF0000)		ATTR_CONSUME(*attrs);	}	if (file) {	    *status_ptr = set_first(view, error_msg, file, reset_mode,						    ES_CANNOT_SET, -1, all_views);	    /* 	     *  This is for resetting the TXTSW_READ_ONLY_ESH flag that got 	     *  cleared in textsw_replace_esh 	     */		    if (set_read_only_esh) {	    	SET_BOOL_FLAG(textsw->state, TRUE, TXTSW_READ_ONLY_ESH);	    };	    display_views = 0;	}	if (display_views && (textsw->state & TXTSW_DISPLAYED)) {	    FORALL_TEXT_VIEWS(textsw, next) {		if ((display_views == 1) && (next != view))		    continue;		textsw_display_view_margins(next, RECT_NULL);		ev_display_view(next->e_view);	    }	    update_scrollbar = display_views;	}	if (update_scrollbar) {	    textsw_update_scrollbars(textsw,			(update_scrollbar == 2) ? (Textsw_view)0 : view);	}	if (ceased_read_only) {	    textsw_add_timer(textsw, &textsw->timer);	}	return(status);}static Defaults_pairs insert_makes_visible_pairs[] = {	"If_auto_scroll",	(int)TEXTSW_IF_AUTO_SCROLL,	"Always",		(int)TEXTSW_ALWAYS,	NULL, 			(int)TEXTSW_IF_AUTO_SCROLL};static Defaults_pairs load_file_of_dir_pairs[] = {	"Is_error",		(int)TEXTSW_NEVER,	"Is_set_directory",	(int)TEXTSW_ALWAYS,	NULL, 			(int)TEXTSW_NEVER};static Defaults_pairs line_break_pairs[] = {	"Clip",		(int)TEXTSW_CLIP,	"Wrap_char",	(int)TEXTSW_WRAP_AT_CHAR,	"Wrap_word",	(int)TEXTSW_WRAP_AT_WORD,	NULL,		(int)TEXTSW_WRAP_AT_CHAR};static caddr_ttextsw_get_from_defaults(attribute)	register Textsw_attribute	 attribute;{	char		*def_str;   /* Points to strings owned by defaults. */	switch (attribute) {	  case TEXTSW_ADJUST_IS_PENDING_DELETE:	    return((caddr_t)		defaults_get_boolean("/Text/Adjust_is_pending_delete",				     False, NULL));	  case TEXTSW_AGAIN_LIMIT:	    return((caddr_t)		defaults_get_integer_check("/Text/Again_limit",					   1, 0, 500, NULL));	  case TEXTSW_AUTO_INDENT:	    return((caddr_t)		defaults_get_boolean("/Text/Auto_indent", False, NULL));	  case TEXTSW_AUTO_SCROLL_BY:	    return((caddr_t)		defaults_get_integer_check("/Text/Auto_scroll_by",					   1, 0, 100, NULL));	  case TEXTSW_BLINK_CARET:	    return((caddr_t)		defaults_get_boolean("/Text/Blink_caret", True, NULL));	  case TEXTSW_CHECKPOINT_FREQUENCY:	    /* Not generally settable via defaults */	    return((caddr_t) 0);	  case TEXTSW_CONFIRM_OVERWRITE:	    return((caddr_t)		defaults_get_boolean("/Text/Confirm_overwrite", True, NULL));	  case TEXTSW_CONTROL_CHARS_USE_FONT:	    return((caddr_t)		defaults_get_boolean("/Text/Control_chars_use_font",		    False, NULL));	  case TEXTSW_EDIT_BACK_CHAR:	    return((caddr_t)		defaults_get_character("/Text/Edit_back_char",					  DEL, (int *)0));	  case TEXTSW_EDIT_BACK_WORD:	    return((caddr_t)		defaults_get_character("/Text/Edit_back_word",					  CTRL(W), (int *)0));	  case TEXTSW_EDIT_BACK_LINE:	    return((caddr_t)		defaults_get_character("/Text/Edit_back_line",					  CTRL(U), (int *)0));	  case WIN_FONT:	  case TEXTSW_FONT: {	    PIXFONT	*pf_open();	    PIXFONT	*font;	    def_str = defaults_get_string("/Text/Font", (char *)0, (int *)0);	    if ((font = pf_open(def_str)) == NULL) {		font = pf_open((char *)0);	/* standard system font */	    }	    return((caddr_t)font);	  }	  case TEXTSW_HISTORY_LIMIT:	    return((caddr_t)		defaults_get_integer_check("/Text/History_limit",					   50, 0, 500, NULL));	  case TEXTSW_INSERT_MAKES_VISIBLE:	    def_str = defaults_get_string("/Text/Insert_makes_caret_visible",					  (char *)0, (int *)0);	    return((caddr_t)

⌨️ 快捷键说明

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