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

📄 textsw_menu.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
#ifndef lint#ifdef sccsstatic  char sccsid[] = "@(#)textsw_menu.c 1.1 92/07/30";#endif#endif/* * Copyright (c) 1986 by Sun Microsystems, Inc. *//* *  Text subwindow menu creation and support. */#include <suntool/primal.h>#include <suntool/textsw_impl.h>#include <errno.h>#include <pixrect/pr_util.h>#include <pixrect/memvar.h>#include <pixrect/pixfont.h>#include <sunwindow/defaults.h>#include <sunwindow/win_cursor.h>#include <sunwindow/win_input.h>#include <sunwindow/win_struct.h>#include "sunwindow/sv_malloc.h"#include <suntool/alert.h>#include <suntool/frame.h>#include <suntool/fullscreen.h>#include <suntool/tool_struct.h>#include <suntool/walkmenu.h>#include <suntool/window.h>#define HELP_INFO(s) HELP_DATA,s,extern Ev_handle	ev_resolve_xy_to_view();extern Ev_handle	ev_nearest_view();extern Es_index		ev_index_for_line();static void		stuff_clipboard();static Seln_result	read_proc();static FILE		*output;static Menu_item 	show_clipboard();static char		*put_then_get = "Copy then Paste";static char		*put_then     = "Copy then";#define			MAX_SIZE_MENU_STRING	30static struct pixrect	*textsw_get_only_pr;static int		textsw_menu_refcount;	/* refcount for textsw_menu */static Menu		textsw_menu;		/* Let default to NULL */static Textsw_enum 	textsw_menu_style;	/* default to organized */static int		textsw_menu_style_already_set; /* default = 0 */static Menu_item	*textsw_menu_items;	/* [TEXTSW_MENU_LAST_CMD] */pkg_private void	textsw_alert_for_old_interface();extern int		textsw_has_been_modified();extern void		tool_expand_neighbors();pkg_private void	textsw_get_extend_to_edge();pkg_private void	textsw_set_extend_to_edge();extern Textsw		textsw_split_view();pkg_private int		await_neg_event();extern Textsw_enum	textsw_get_menu_style_internal();extern void		textsw_set_menu_style_internal();pkg_private int		textsw_menu_prompt();extern void		textsw_destroy_split();extern Menu_item *	textsw_new_menu_table();extern Menu		textsw_menu_init();extern void		textsw_do_menu();extern Menu		textsw_get_unique_menu();extern Menu		textsw_build_extras_menu();extern Menu_item	textsw_toggle_extras_item();/* VARARGS0 */static Menutextsw_new_menu(folio)	Textsw_folio	folio;{    Menu edit_cmd, top_menu, save_file, break_mode, old_break_mode,	find_pattern,	file_cmds, display_cmds, find_cmds, fast_exits_cmds,	select_field_cmds, find_sel_cmds, build_clipboard,	find_clipboard_cmds, undo_cmds, paste_cmds, save_cmds, old_edit_cmd;	    char *string_for_menu_item = sv_malloc(MAX_SIZE_MENU_STRING + 1);    old_break_mode = menu_create(	MENU_LEFT_MARGIN, 6,	MENU_ITEM,	    MENU_STRING,	"Clip Lines",	    MENU_VALUE,		TEXTSW_MENU_CLIP_LINES,	    HELP_INFO("textsw:mcliplines")	    0,	MENU_ITEM,	    MENU_STRING,	"Wrap at Character",	    MENU_VALUE,		TEXTSW_MENU_WRAP_LINES_AT_CHAR,	    HELP_INFO("textsw:mwrapchars")	    0,	HELP_INFO("textsw:moldbreakmode")	0);    break_mode = menu_create(	MENU_LEFT_MARGIN, 6,	MENU_ITEM,	    MENU_STRING,	"Wrap at Character",	    MENU_VALUE,		TEXTSW_MENU_WRAP_LINES_AT_CHAR,	    HELP_INFO("textsw:mwrapchars")	    0,	MENU_ITEM,	    MENU_STRING,	"Wrap at Word",	    MENU_VALUE,		TEXTSW_MENU_WRAP_LINES_AT_WORD,	    HELP_INFO("textsw:mwrapwords")	    0,	MENU_ITEM,	    MENU_STRING,	"Clip Lines",	    MENU_VALUE,		TEXTSW_MENU_CLIP_LINES,	    HELP_INFO("textsw:mcliplines")	    0,	HELP_INFO("textsw:mbreakmode")	0);	    undo_cmds = menu_create(	MENU_LEFT_MARGIN, 6,	MENU_ITEM,	    MENU_STRING,	"Undo Last Edit",	    MENU_VALUE,		TEXTSW_MENU_UNDO,	    HELP_INFO("textsw:mundolast")	    0,	MENU_ITEM,	    MENU_STRING,	"Undo All Edits",	    MENU_VALUE,		TEXTSW_MENU_UNDO_ALL,	    HELP_INFO("textsw:mundoall")	    0,	HELP_INFO("textsw:mundocmds")	0);    if (textsw_menu_style == TEXTSW_STYLE_ORGANIZED) {	fast_exits_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,	        MENU_STRING,	"Close, then Save Current File",		MENU_VALUE,	TEXTSW_MENU_SAVE_CLOSE,		HELP_INFO("textsw:msaveclose")		0,	    MENU_ITEM,		MENU_STRING,	"Save Current File, then Quit",		MENU_VALUE,	TEXTSW_MENU_SAVE_QUIT,		HELP_INFO("textsw:msavequit")		0,	    MENU_ITEM,		MENU_STRING, 	"Save, then Empty document",		MENU_VALUE,	TEXTSW_MENU_SAVE_RESET,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:msavereset")		0,	    MENU_ITEM,		MENU_STRING,	"Close, then Store as New File",		MENU_VALUE,	TEXTSW_MENU_STORE_CLOSE,		HELP_INFO("textsw:mstoreclose")		0,	    MENU_ITEM,		MENU_STRING,	"Store as New File, then Quit",		MENU_VALUE,	TEXTSW_MENU_STORE_QUIT,		HELP_INFO("textsw:mstorequit")		0,	    HELP_INFO("textsw:mfastexitcmds")	    0);	select_field_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_STRING,	"Expand",		MENU_VALUE,	TEXTSW_MENU_SEL_ENCLOSE_FIELD,		HELP_INFO("textsw:mselexpand")		0,	    MENU_ITEM,		MENU_STRING,	"Next",		MENU_VALUE,	TEXTSW_MENU_SEL_NEXT_FIELD,		HELP_INFO("textsw:mselnext")		0,	    MENU_ITEM,		MENU_STRING,	"Previous",		MENU_VALUE,	TEXTSW_MENU_SEL_PREV_FIELD,		HELP_INFO("textsw:mselprevious")		0,	    HELP_INFO("textsw:mselfieldcmds")	    0);	find_sel_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_STRING,	"Forward",		MENU_VALUE,	TEXTSW_MENU_FIND,		HELP_INFO("textsw:mfindforward")		0,	    MENU_ITEM,		MENU_STRING,	"Backward",		MENU_VALUE,	TEXTSW_MENU_FIND_BACKWARD,		HELP_INFO("textsw:mfindbackward")		0,	    HELP_INFO("textsw:mfindselcmds")	    0);	find_clipboard_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_STRING,	"Forward",		MENU_VALUE,			TEXTSW_MENU_FIND_SHELF,		HELP_INFO("textsw:mfindcbforward")		0,	    MENU_ITEM,		MENU_STRING,	"Backward",		MENU_VALUE,			TEXTSW_MENU_FIND_SHELF_BACKWARD,		HELP_INFO("textsw:mfindcbbackward")		0,	    HELP_INFO("textsw:mfindcbcmds")	    0);/*	paste_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_STRING_ITEM, "Paste",			TEXTSW_MENU_PASTE,	    MENU_STRING_ITEM, "Paste from File",	TEXTSW_MENU_FILE_STUFF,	    0);	save_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_STRING_ITEM,    "Save File",		TEXTSW_MENU_SAVE,	    MENU_STRING_ITEM,    "Store to Named file",	TEXTSW_MENU_STORE,	    MENU_PULLRIGHT_ITEM, "Fast Exits",		fast_exits_cmds,	    0);*/	file_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_STRING,    "Save Current File",		MENU_VALUE,	TEXTSW_MENU_SAVE,		HELP_INFO("textsw:msavefile")		0,	    MENU_ITEM, 		MENU_STRING,    "Store as New File", 		MENU_VALUE,	TEXTSW_MENU_STORE,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:mstorefile")		0,	    MENU_ITEM,		MENU_STRING,    "Load File",			MENU_VALUE,	TEXTSW_MENU_LOAD,		HELP_INFO("textsw:mloadfile")		0,	    MENU_ITEM,		MENU_STRING,	"Include File",       		MENU_VALUE,	TEXTSW_MENU_FILE_STUFF,		HELP_INFO("textsw:mincludefile")		0,	    MENU_ITEM,		MENU_STRING,    "Set Directory",		MENU_VALUE,	TEXTSW_MENU_CD,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:msetdir")		0,	    MENU_ITEM,		MENU_STRING,    "Empty Document",		MENU_VALUE,	TEXTSW_MENU_RESET,		HELP_INFO("textsw:memptydoc")		0,	    MENU_ITEM,		MENU_STRING,	"Finishing Up",		MENU_PULLRIGHT,	fast_exits_cmds,		HELP_INFO("textsw:mfastexit")		0,	    HELP_INFO("textsw:mfilecmds")	    0);	build_clipboard = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_GEN_PROC,	show_clipboard,		MENU_STRING,	string_for_menu_item,		MENU_VALUE,	TEXTSW_MENU_SHOW_CLIPBOARD,		HELP_INFO("textsw:mclipboard")		0,	    HELP_INFO("textsw:mclipboard")	    0);	edit_cmd = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_STRING,    "Again",		MENU_VALUE,	TEXTSW_MENU_AGAIN,		HELP_INFO("textsw:meditagain")		0,	    MENU_ITEM,		MENU_STRING,	"Undo",		MENU_PULLRIGHT,  undo_cmds,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:meditundo") 		0,	    MENU_ITEM,		MENU_STRING,    "Copy",		MENU_VALUE,	TEXTSW_MENU_COPY, 		HELP_INFO("textsw:meditcopy")		0,	    MENU_ITEM,		MENU_STRING,	"Paste",		MENU_VALUE,	TEXTSW_MENU_PASTE,		HELP_INFO("textsw:meditpaste")		0,	    MENU_ITEM,		MENU_STRING,	"Cut",		MENU_VALUE,	TEXTSW_MENU_CUT,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:meditcut")		0,	    MENU_ITEM,		MENU_STRING,	"Show Clipboard",		MENU_VALUE,	TEXTSW_MENU_SHOW_CLIPBOARD_FROM_EDIT,		MENU_PULLRIGHT,  build_clipboard,		HELP_INFO("textsw:mclipboard")		0,	    MENU_ITEM,		MENU_STRING,    "Copy, then Paste",		MENU_VALUE,	TEXTSW_MENU_PUT_THEN_GET,		HELP_INFO("textsw:meditcopypaste")		0,	    HELP_INFO("textsw:meditcmds")	    0);	display_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_STRING,	"Select Line at Number",		MENU_VALUE,	TEXTSW_MENU_NORMALIZE_LINE,		HELP_INFO("textsw:mselectline")		0,	    MENU_ITEM,		MENU_STRING,	"What Line Number?",		MENU_VALUE,	TEXTSW_MENU_COUNT_TO_LINE,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:mwhatline")		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,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:mdestroyview")		0,	    MENU_ITEM,		MENU_STRING,	"Show Caret at Top",		MENU_VALUE,	TEXTSW_MENU_NORMALIZE_INSERTION,		HELP_INFO("textsw:mshowcaret")		0,	    MENU_ITEM,		MENU_STRING,	"Move Caret to Start",		MENU_VALUE,	TEXTSW_MENU_NORMALIZE_TOP,		HELP_INFO("textsw:mcaretstart")		0,	    MENU_ITEM,		MENU_STRING,	"Move Caret to End",		MENU_VALUE,	TEXTSW_MENU_NORMALIZE_BOTTOM, 		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:mcaretend")		0,	    MENU_ITEM,	        MENU_STRING,	"Change Line Wrap",		MENU_PULLRIGHT,	break_mode,		HELP_INFO("textsw:mchangelinewrap")		0,	    HELP_INFO("textsw:mdisplaycmds")	    0);	find_cmds = menu_create(	    MENU_LEFT_MARGIN, 6,	    MENU_ITEM,		MENU_STRING,	"Find and Replace",		MENU_VALUE,	TEXTSW_MENU_FIND_AND_REPLACE,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:mfindreplace")		0,	    MENU_ITEM,		MENU_STRING,	"Find Selection",		MENU_PULLRIGHT,	find_sel_cmds,		HELP_INFO("textsw:mfindselcmds")		0,	    MENU_ITEM,		MENU_STRING,	"Find Clipboard",		MENU_PULLRIGHT,	find_clipboard_cmds,		HELP_INFO("textsw:findcbcmds")		0,	    MENU_ITEM,		MENU_STRING,     "Show Clipboard",		MENU_VALUE,      TEXTSW_MENU_SHOW_CLIPBOARD_FROM_FIND,		MENU_PULLRIGHT,  build_clipboard,		MENU_LINE_AFTER_ITEM,	MENU_HORIZONTAL_LINE,		HELP_INFO("textsw:mclipboard")		0,	    MENU_ITEM,		MENU_STRING,    "Find Marked Text",		MENU_VALUE,	TEXTSW_MENU_SEL_MARK_TEXT,		HELP_INFO("textsw:mfindtext")		0,	    MENU_ITEM,		MENU_STRING,    "Match Delimiter",		MENU_VALUE,	TEXTSW_MENU_MATCH_FIELD,		HELP_INFO("textsw:mmatchdelim")		0,	    MENU_ITEM,		MENU_STRING,	"Replace |>field<| ",

⌨️ 快捷键说明

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