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