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

📄 editmenu.c

📁 ReactOS是一些高手根据Windows XP的内核编写出的类XP。内核实现机理和API函数调用几乎相同。甚至可以兼容XP的程序。喜欢研究系统内核的人可以看一看。
💻 C
📖 第 1 页 / 共 2 页
字号:
    {' ', "", ' ', 0},
    {' ', N_("format p&Aragraph        M-p"), 'a', menu_format_paragraph},
    {' ', N_("'ispell' s&Pell check    M-$"), 'P', menu_ispell_cmd},
    {' ', N_("sor&T...                 M-t"), 'T', menu_sort_cmd},
    {' ', N_("'indent' &C Formatter    F19"), 'C', menu_c_form_cmd}
};

extern void menu_save_mode_cmd (void);

static menu_entry OptMenu[] =
{
    {' ', N_("&General...  "), 'G', menu_options},
    {' ', N_("&Save mode..."), 'S', menu_save_mode_cmd}
#if 0
    {' ', N_("&Layout..."),    'L', menu_layout_cmd}
#endif
};

static menu_entry OptMenuEmacs[] =
{
    {' ', N_("&General...  "), 'G', menu_options},
    {' ', N_("&Save mode..."), 'S', menu_save_mode_cmd}
#if 0
    {' ', N_("&Layout..."),    'L', menu_layout_cmd}
#endif
};

#define menu_entries(x) sizeof(x)/sizeof(menu_entry)

Menu EditMenuBar[N_menus];

void edit_init_menu_normal (void)
{
    EditMenuBar[0] = create_menu (_(" File "), FileMenu, menu_entries (FileMenu));
    EditMenuBar[1] = create_menu (_(" Edit "), EditMenu, menu_entries (EditMenu));
    EditMenuBar[2] = create_menu (_(" Sear/Repl "), SearReplMenu, menu_entries (SearReplMenu));
    EditMenuBar[3] = create_menu (_(" Command "), CmdMenu, menu_entries (CmdMenu));
    EditMenuBar[4] = create_menu (_(" Options "), OptMenu, menu_entries (OptMenu));
}

void edit_init_menu_emacs (void)
{
    EditMenuBar[0] = create_menu (_(" File "), FileMenuEmacs, menu_entries (FileMenuEmacs));
    EditMenuBar[1] = create_menu (_(" Edit "), EditMenuEmacs, menu_entries (EditMenuEmacs));
    EditMenuBar[2] = create_menu (_(" Sear/Repl "), SearReplMenuEmacs, menu_entries (SearReplMenuEmacs));
    EditMenuBar[3] = create_menu (_(" Command "), CmdMenuEmacs, menu_entries (CmdMenuEmacs));
    EditMenuBar[4] = create_menu (_(" Options "), OptMenuEmacs, menu_entries (OptMenuEmacs));
}

void edit_done_menu (void)
{
    int i;
    for (i = 0; i < N_menus; i++)
	destroy_menu (EditMenuBar[i]);
}


void edit_drop_menu_cmd (WEdit * e, int which)
{
    if (edit_menubar->active)
	return;
    edit_menubar->active = 1;
    edit_menubar->dropped = drop_menus;
    edit_menubar->previous_selection = which >= 0 ? which : dlg_item_number (edit_dlg);
    if (which >= 0)
	edit_menubar->selected = which;
    dlg_select_widget (edit_dlg, edit_menubar);
}


void edit_menu_cmd (WEdit * e)
{
    edit_drop_menu_cmd (e, -1);
}


int edit_drop_hotkey_menu (WEdit * e, int key)
{
    int m = 0;
    switch (key) {
    case ALT ('f'):
	if (edit_key_emulation == EDIT_KEY_EMULATION_EMACS)
	    return 0;
	m = 0;
	break;
    case ALT ('e'):
	m = 1;
	break;
    case ALT ('s'):
	m = 2;
	break;
    case ALT ('c'):
	m = 3;
	break;
    case ALT ('o'):
	m = 4;
	break;
    default:
	return 0;
    }

    edit_drop_menu_cmd (e, m);
    return 1;
}


#else				/* !MIDNIGHT */


extern CWidget *wedit;

void CSetEditMenu (const char *ident)
{
    wedit = CIdent (ident);
}

CWidget *CGetEditMenu (void)
{
    return wedit;
}

static void menu_cmd (unsigned long i)
{
    XEvent e;
    if (wedit) {
	memset (&e, 0, sizeof (XEvent));
	e.type = EditorCommand;
	e.xkey.keycode = i;
	e.xkey.window = wedit->winid;
	CFocus (wedit);
	CSendEvent (&e);
    }
}

void CEditMenuCommand (int i)
{
    menu_cmd ((unsigned long) i);
}

static void menu_key (KeySym i, int state)
{
    int cmd, ch;
    if (edit_translate_key (0, i, state, &cmd, &ch)) {
	if (cmd > 0)
	    menu_cmd (cmd);
    }
}

static void menu_ctrl_key (unsigned long i)
{
    menu_key ((KeySym) i, ControlMask);
}

void CDrawEditMenuButtons (const char *ident, Window parent, Window focus_return, int x, int y)
{
    int d;

    CDrawMenuButton (catstrs (ident, ".filemenu", 0), parent, focus_return, x, y, AUTO_WIDTH, AUTO_HEIGHT, 8,
/* The following are menu options. Do not change the key bindings (eg. C-o) and preserve '\t' */
		     _(" File "),
		     _("Open...\tC-o"), '~', menu_cmd, CK_Load,
		     _("New\tC-n"), '~', menu_cmd, CK_New,
		     "", ' ', 0, 0,
		     _("Save\tF2"), '~', menu_cmd, CK_Save,
		     _("Save as...\tF12"), '~', menu_cmd, CK_Save_As,
		     "", ' ', 0, 0,
		     _("Insert file...\tF15"), '~', menu_cmd, CK_Insert_File,
		     _("Copy to file...\tC-f"), '~', menu_cmd, CK_Save_Block
	);
/* Tool hint */
    CSetToolHint (catstrs (ident, ".filemenu", 0), _("Disk operations"));

    CGetHintPos (&x, &d);

    CDrawMenuButton (catstrs (ident, ".editmenu", 0), parent, focus_return, x, y, AUTO_WIDTH, AUTO_HEIGHT, 14,
		     _(" Edit "),
		     _("Toggle mark\tF3"), '~', menu_cmd, CK_Mark,
		     "", ' ', 0, 0,
		     _("Toggle insert/overwrite\tIns"), '~', menu_cmd, CK_Toggle_Insert,
		     "", ' ', 0, 0,
		     _("Copy block to cursor\tF5"), '~', menu_cmd, CK_Copy,
		     _("Move block to cursor\tF6"), '~', menu_cmd, CK_Move,
		     _("Delete block\tF8/C-Del"), '~', menu_cmd, CK_Remove,
		     "", ' ', 0, 0,
		     _("Copy block to clipbrd\tC-Ins"), '~', menu_cmd, CK_XStore,
		     _("Cut block to clipbrd\tS-Del"), '~', menu_cmd, CK_XCut,
		     _("Paste block from clipbrd\tS-Ins"), '~', menu_cmd, CK_XPaste,
		     _("Selection history\tM-Ins"), '~', menu_cmd, CK_Selection_History,
		     "", ' ', 0, 0,
		     _("Undo\tC-BackSpace"), '~', menu_cmd, CK_Undo
	);
/* Tool hint */
    CSetToolHint (catstrs (ident, ".editmenu", 0), _("Manipulating blocks of text"));

    CGetHintPos (&x, &d);

    CDrawMenuButton (catstrs (ident, ".searchmenu", 0), parent, focus_return, x, y, AUTO_WIDTH, AUTO_HEIGHT, 4,
		     _(" Srch/Replce "),
		     _("Search...\tF7"), '~', menu_cmd, CK_Find,
		     _("Search again\tF17"), '~', menu_cmd, CK_Find_Again,
		     _("Replace...\tF4"), '~', menu_cmd, CK_Replace,
		     _("Replace again\tF14"), '~', menu_cmd, CK_Replace_Again
	);
/* Tool hint */
    CSetToolHint (catstrs (ident, ".searchmenu", 0), _("Search for and replace text"));

    CGetHintPos (&x, &d);

    CDrawMenuButton (catstrs (ident, ".commandmenu", 0), parent, focus_return, x, y, AUTO_WIDTH, AUTO_HEIGHT, 9,
		     _(" Command "),
		     _("Goto line...\tM-l"), '~', menu_cmd, CK_Goto,
		     "", ' ', 0, 0,
		     _("Start record macro\tC-r"), '~', menu_cmd, CK_Begin_Record_Macro,
		     _("Finish record macro...\tC-r"), '~', menu_cmd, CK_End_Record_Macro,
		     _("Execute macro...\tC-a, KEY"), '~', menu_ctrl_key, XK_a,
		     _("Delete macro...\t"), '~', menu_cmd, CK_Delete_Macro,
		     "", ' ', 0, 0,
		     _("Insert date/time\tC-d"), '~', menu_cmd, CK_Date,
		     _("Format paragraph\tM-p"), '~', menu_cmd, CK_Paragraph_Format
	);
/* Tool hint */
    CSetToolHint (catstrs (ident, ".commandmenu", 0), _("Macros and internal commands"));
}


#endif				/* !MIDNIGHT */

⌨️ 快捷键说明

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