D言語からObjective-CとCocoaAPIを使いたい
小型、最小の Menu を表示します
サンプルコード
Powered by Prism
cocoa/menus.d
/**
* cocoa/menus.d version 0.0.2 小型のMenu群
*/
module cocoa.menus;
import core.attribute : optional, selector;
import cocoa.window;
NSMenu mainMenu(string aName) {
/* menubar main menu */
NSMenu mainMenu = NSMenu.alloc.init;
NSMenuItem appItem = NSMenuItem.alloc.init;
mainMenu.addItem(appItem);
/* application menu */
NSMenu appMenu = NSMenu.alloc.init;
appItem.submenu(appMenu);
appMenu.item = NSMenuItem.alloc.init("About " ~ aName, "aboutPanel", "");
appMenu.item = NSMenuItem.separatorItem;
/* Preferences */
appMenu.item = NSMenuItem.separatorItem;
// apMenu.item = NSMenuItem.alloc.init("Preferences…", "Preferences:", ",");
appMenu.item = NSMenuItem.alloc.init("Preferences…", "preferences", ",");
appMenu.item = NSMenuItem.separatorItem;
/* System Services */
NSMenu servicesMenu = NSMenu.alloc.init("Services");
NSApp.servicesMenu = NSMenu.alloc.init;
NSMenuItem servicesItem = NSMenuItem.alloc.init;
servicesItem.title = "Services".toNs;
servicesItem.submenu = NSApp.servicesMenu;
appMenu.item = servicesItem;
appMenu.item = NSMenuItem.separatorItem;
/* hide menu */
appMenu.item = NSMenuItem.alloc.init("Hide " ~ aName, "hide:", "h");
appMenu.item = NSMenuItem.alloc.init("Hide Others", "hideOtherApplications:", "H");
appMenu.item = NSMenuItem.alloc.init("Show All", "unhideAllApplications:", "");
appMenu.item = NSMenuItem.separatorItem;
appMenu.item = NSMenuItem.alloc.init("Quit " ~ aName , "terminate:", "q");
/* edit menu */
NSMenu editMenu = NSMenu.alloc.init("Edit");
NSMenuItem editItem = mainMenu.addItem("Edit", null, "");
mainMenu.submenu(editMenu, editItem);
editMenu.item = NSMenuItem.alloc.init("Cut", "cut:", "x");
editMenu.item = NSMenuItem.alloc.init("Copy", "copy:", "c");
editMenu.item = NSMenuItem.alloc.init("Paste", "paste:", "v");
editMenu.item = NSMenuItem.alloc.init("Delete", "delete:", "\b");
/* format menu */
NSMenu formatMenu = NSMenu.alloc.init("Format");
NSMenuItem formatItem = mainMenu.addItem("Format", null, ""); // <--
mainMenu.setSubmenu(formatMenu, formatItem);
NSMenu fontMenu = formatMenu.alloc.init("Font");
NSMenuItem fontItem = formatMenu.addItem("Font", null, ""); // <--
fontMenu.setSubmenu(fontMenu, fontItem);
fontMenu.item = NSMenuItem.alloc.init("Show Fonts", "orderFrontFontPanel:", "t");
fontMenu.item = NSMenuItem.alloc.init("Bold", "addFontTrait:", "b");
fontMenu.item = NSMenuItem.alloc.init("Italic", "addFontTrait:", "i");
fontMenu.item = NSMenuItem.alloc.init("Underline", "underline:", "u");
fontMenu.item = NSMenuItem.separatorItem;
fontMenu.item = NSMenuItem.alloc.init("Bigger", "modifyFont:", "+");
fontMenu.item = NSMenuItem.alloc.init("Smaller", "modifyFont:", "-");
/* view menu */
NSMenu viewMenu = NSMenu.alloc.init("View");
NSMenuItem viewItem = mainMenu.addItem("View", null, ""); // <--
mainMenu.setSubmenu(viewMenu, viewItem);
// viewMenu.item = NSMenuItem.alloc.init("Show Toolbar", "toggleToolbarShown:", "t");
// NSMenuItem showItem = NSMenuItem.alloc.init("Show Toolbar", "toggleToolbarShown:", "t");
// showItem.keyMask(NSEventModifierFlag.Option | NSEventModifierFlag.Command); //
// showItem.key = "t".toNs; //
// viewMenu.item(showItem);
viewMenu.item = NSMenuItem.alloc.init("Customize Toolbar…", "runToolbarCustomizationPallette:", "");
viewMenu.item = NSMenuItem.separatorItem;
viewMenu.item = NSMenuItem.alloc.init("Show Sidebar", "toggleSidebar:", "s");
viewMenu.item = NSMenuItem.alloc.init("Enter Full Screen", "toggleFullScreen:", "f");
/* window menu */
NSMenu winMenu = NSMenu.alloc.init("Window");
NSMenuItem winItem = mainMenu.addItem("Window", null, ""); // <--
mainMenu.setSubmenu(winMenu, winItem);
winMenu.item = NSMenuItem.alloc.init("Minimize", "performMiniaturize:", "m");
winMenu.item = NSMenuItem.alloc.init("Zoom", "performZoom:", "");
winMenu.item = NSMenuItem.alloc.init("Tile Window to Left of Screen", "", "");
winMenu.item = NSMenuItem.alloc.init("Tile Window to Right of Screen", "", "");
winMenu.item = NSMenuItem.alloc.init("Replace Tiled Window", "", "");
winMenu.item = NSMenuItem.separatorItem;
winMenu.item = NSMenuItem.alloc.init("Show Previous Tab", "", "");
winMenu.item = NSMenuItem.alloc.init("Show Next Tab", "", "");
winMenu.item = NSMenuItem.alloc.init("Move Tab to New Window", "", "");
winMenu.item = NSMenuItem.alloc.init("Merge All Windows", "", "");
winMenu.item = NSMenuItem.separatorItem;
winMenu.item = NSMenuItem.alloc.init("Bring All to Front", "arrangeInFront:", "");
winMenu.item = NSMenuItem.separatorItem;
/* help menu */
NSMenu helpMenu = NSMenu.alloc.init("Help");
NSMenuItem helpItem = mainMenu.addItem("Help", null, "");
mainMenu.submenu(helpMenu, helpItem);
helpMenu.item = NSMenuItem.alloc.init(aName ~ " Help", "showHelp", "");
return mainMenu;
}
NSMenu smallMenu(string aName) {
NSMenu mainMenu = NSMenu.alloc.init;
NSMenuItem appItem = NSMenuItem.alloc.init;
mainMenu.item = appItem;
/* application menu */
NSMenu appMenu = NSMenu.alloc.init;
appItem.submenu = appMenu;
appMenu.item = NSMenuItem.alloc.init("About " ~ aName ~ " ", "aboutPanel", "");
appMenu.item = NSMenuItem.separatorItem;
appMenu.item = NSMenuItem.alloc.init("Perferences…", "perferences", ",");
appMenu.item = NSMenuItem.separatorItem;
/* services menu */
NSMenu servicesMenu = NSMenu.alloc.init("Services");
NSApp.servicesMenu = NSMenu.alloc.init;
NSMenuItem servicesItem = NSMenuItem.alloc.init;
servicesItem.title = "Services".toNs;
servicesItem.submenu = NSApp.servicesMenu;
appMenu.item = servicesItem;
appMenu.item = NSMenuItem.separatorItem;
/* hide menu */
appMenu.item = NSMenuItem.alloc.init("Hide " ~ aName, "hide:", "h");
appMenu.item = NSMenuItem.alloc.init("Hide Others", "hideOtherApplications:", "H");
appMenu.item = NSMenuItem.alloc.init("Show All", "unhideAllApplications:", "");
appMenu.item = NSMenuItem.separatorItem;
appMenu.item = NSMenuItem.alloc.init("Quit " ~ aName , "terminate:", "q");
mainMenu.submenu(appMenu, appItem);
/* view menu */
NSMenu viewMenu = NSMenu.alloc.init("View");
NSMenuItem viewItem = mainMenu.addItem("View", null, ""); // <--
mainMenu.setSubmenu(viewMenu, viewItem);
// viewMenu.item = NSMenuItem.alloc.init("Show Toolbar", "toggleToolbarShown:", "t");
// NSMenuItem showItem = NSMenuItem.alloc.init("Show Toolbar", "toggleToolbarShown:", "t");
// showItem.keyMask(NSEventModifierFlag.Option | NSEventModifierFlag.Command); //
// showItem.key = "t".toNs; //
// viewMenu.item(showItem);
viewMenu.item = NSMenuItem.alloc.init("Customize Toolbar…", "runToolbarCustomizationPallette:", "");
viewMenu.item = NSMenuItem.separatorItem;
viewMenu.item = NSMenuItem.alloc.init("Show Sidebar", "toggleSidebar:", "s");
viewMenu.item = NSMenuItem.alloc.init("Enter Full Screen", "toggleFullScreen:", "f");
/* window menu */
NSMenu winMenu = NSMenu.alloc.init("Window");
NSMenuItem winItem = mainMenu.addItem("Window", null, ""); // <--
mainMenu.setSubmenu(winMenu, winItem);
winMenu.item = NSMenuItem.alloc.init("Minimize", "performMiniaturize:", "m");
winMenu.item = NSMenuItem.alloc.init("Zoom", "performZoom:", "");
winMenu.item = NSMenuItem.alloc.init("Tile Window to Left of Screen", "", "");
winMenu.item = NSMenuItem.alloc.init("Tile Window to Right of Screen", "", "");
winMenu.item = NSMenuItem.alloc.init("Replace Tiled Window", "", "");
winMenu.item = NSMenuItem.separatorItem;
winMenu.item = NSMenuItem.alloc.init("Show Previous Tab", "", "");
winMenu.item = NSMenuItem.alloc.init("Show Next Tab", "", "");
winMenu.item = NSMenuItem.alloc.init("Move Tab to New Window", "", "");
winMenu.item = NSMenuItem.alloc.init("Merge All Windows", "", "");
winMenu.item = NSMenuItem.separatorItem;
winMenu.item = NSMenuItem.alloc.init("Bring All to Front", "arrangeInFront:", "");
winMenu.item = NSMenuItem.separatorItem;
/* help menu */
NSMenu helpMenu = NSMenu.alloc.init("Help");
NSMenuItem helpItem = mainMenu.addItem("Help", null, "");
mainMenu.submenu(helpMenu, helpItem);
helpMenu.item = NSMenuItem.alloc.init("Help", "showHelp", "");
return mainMenu;
}
NSMenu miniMenu(string aName) {
NSMenu mainMenu = NSMenu.alloc.init;
NSMenuItem appItem = NSMenuItem.alloc.init;
mainMenu.item = appItem;
/* application menu */
NSMenu appMenu = NSMenu.alloc.init;
appItem.submenu = appMenu;
appMenu.item = NSMenuItem.alloc.init("About " ~ aName ~ " ", "aboutPanel", "");
appMenu.item = NSMenuItem.separatorItem;
appMenu.item = NSMenuItem.alloc.init("Perferences…", "perferences", ",");
appMenu.item = NSMenuItem.separatorItem;
/* services menu */
NSMenu servicesMenu = NSMenu.alloc.init("Services");
NSApp.servicesMenu = NSMenu.alloc.init;
NSMenuItem servicesItem = NSMenuItem.alloc.init;
servicesItem.title = "Services".toNs;
servicesItem.submenu = NSApp.servicesMenu;
appMenu.item = servicesItem;
appMenu.item = NSMenuItem.separatorItem;
/* hide menu */
appMenu.item = NSMenuItem.alloc.init("Hide " ~ aName, "hide:", "h");
appMenu.item = NSMenuItem.alloc.init("Hide Others", "hideOtherApplications:", "H");
appMenu.item = NSMenuItem.alloc.init("Show All", "unhideAllApplications:", "");
appMenu.item = NSMenuItem.separatorItem;
/* quit menu */
appMenu.item = NSMenuItem.alloc.init("Quit " ~ aName , "terminate:", "q");
mainMenu.submenu(appMenu, appItem);
/* help menu */
NSMenu helpMenu = NSMenu.alloc.init("Help");
NSMenuItem helpItem = mainMenu.addItem("Help", null, "");
mainMenu.submenu(helpMenu, helpItem);
helpMenu.item = NSMenuItem.alloc.init("Help", "showHelp", "");
return mainMenu;
}
NSMenu quitMenu(string aName) {
NSMenu mainMenu = NSMenu.alloc.init;
NSMenuItem appItem = NSMenuItem.alloc.init;
mainMenu.addItem = appItem;
/* application menu */
NSMenu appMenu = NSMenu.alloc.init;
appItem.setSubmenu = appMenu;
/* services menu */
NSMenu servicesMenu = NSMenu.alloc.init("Services");
NSApp.servicesMenu = NSMenu.alloc.init;
NSMenuItem servicesItem = NSMenuItem.alloc.init;
servicesItem.title = "Services".toNs;
servicesItem.submenu = NSApp.servicesMenu;
appMenu.item = servicesItem;
appMenu.item = NSMenuItem.separatorItem;
/* quit menu */
appMenu.addItem = NSMenuItem.alloc.init("Quit " ~ aName , "terminate:", "q");
return mainMenu;
}
extern (Objective-C)
string dialog(string msgText, string infoText) {
NSAlert alert = NSAlert.alloc.init;
// alert.icon = NSImage.name("AppIcon.icns".toNs);
alert.addButton= "OK".toNs;
alert.messageText = msgText.toNs;
alert.information = infoText.toNs;
alert.style = alertStyle.warning;
switch (alert.run) {
case response.OK: return("OK");
default: return("Other");
}
}
cocoa/window.d
cocoa/control.d
- Log
- 2025-03-31 追加・修正しました。
- 2025-03-05 upload