Cocoa: extract EditMenu common code

This commit is contained in:
rich2014 2024-10-12 19:00:35 +08:00
parent 1259df9b51
commit e77c73fbf8
2 changed files with 33 additions and 22 deletions

View File

@ -85,6 +85,7 @@ function ToggleAppMenu(ALogicalEnabled: Boolean): Boolean;
procedure Do_SetCheck(const ANSMenuItem: NSMenuItem; const Checked: boolean);
function FindEditMenu(const menu:NSMenu; const title:NSString): NSMenuItem;
procedure AttachEditMenu(const menu:NSMenu; const index:Integer; const title:NSString );
procedure NSMenuAddItemsFromLCLMenu(menu: NSMenu; lclMenu: TMenuItem);
implementation
@ -301,6 +302,37 @@ begin
Result:= FindEditMenuByKeyEquivalent(menu, NSSTR('c')); // Command+C
end;
procedure AttachEditMenu(const menu: NSMenu; const index: Integer;
const title: NSString);
var
editMenu: NSMenuItem;
editSubmenu: NSMenu;
begin
editMenu:= NSMenuItem.alloc.init;
editMenu.setTitle( title );
menu.insertItem_atIndex(editMenu, index);
editMenu.release;
editSubmenu:= NSMenu.alloc.initWithTitle(title);
editMenu.setSubmenu(editSubmenu);
editSubmenu.release;
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_UNDO, objcselector('undo:'), NSSTR('z'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_REDO, objcselector('redo:'), NSSTR('Z'));
editSubmenu.addItem(NSMenuItem.separatorItem);
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_CUT, objcselector('cut:'), NSSTR('x'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_COPY, objcselector('copy:'), NSSTR('c'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_PASTE, objcselector('paste:'), NSSTR('v'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_SELECTALL, objcselector('selectAll:'), NSSTR('a'));
end;
procedure NSMenuAddItemsFromLCLMenu(menu: NSMenu; lclMenu: TMenuItem);
var
index: Integer;

View File

@ -441,28 +441,7 @@ var
editMenuTitle:= CocoaConst.NSSTR_EDIT_MENU;
end;
editMenu:= NSMenuItem.alloc.init;
mainMenu.insertItem_atIndex(editMenu, editMenuIndex);
editMenu.release;
editSubmenu:= NSMenu.alloc.initWithTitle(editMenuTitle);
editMenu.setSubmenu(editSubmenu);
editSubmenu.release;
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_UNDO, objcselector('undo:'), NSSTR('z'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_REDO, objcselector('redo:'), NSSTR('Z'));
editSubmenu.addItem(NSMenuItem.separatorItem);
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_CUT, objcselector('cut:'), NSSTR('x'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_COPY, objcselector('copy:'), NSSTR('c'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_PASTE, objcselector('paste:'), NSSTR('v'));
editSubmenu.addItemWithTitle_action_keyEquivalent(
CocoaConst.NSSTR_EDIT_MENU_SELECTALL, objcselector('selectAll:'), NSSTR('a'));
AttachEditMenu( mainMenu, editMenuIndex, editMenuTitle );
end;
class procedure RestoreEditMenu();