hello_world/
hello_world.rs

1#![allow(deprecated)] // the cocoa crate is deprecated
2use cocoa::appkit::{
3    NSApp, NSApplication, NSApplicationActivateIgnoringOtherApps,
4    NSApplicationActivationPolicyRegular, NSBackingStoreBuffered, NSMenu, NSMenuItem,
5    NSRunningApplication, NSWindow, NSWindowStyleMask,
6};
7use cocoa::base::{nil, selector, NO};
8use cocoa::foundation::{NSAutoreleasePool, NSPoint, NSProcessInfo, NSRect, NSSize, NSString};
9
10fn main() {
11    unsafe {
12        let _pool = NSAutoreleasePool::new(nil);
13
14        let app = NSApp();
15        app.setActivationPolicy_(NSApplicationActivationPolicyRegular);
16
17        // create Menu Bar
18        let menubar = NSMenu::new(nil).autorelease();
19        let app_menu_item = NSMenuItem::new(nil).autorelease();
20        menubar.addItem_(app_menu_item);
21        app.setMainMenu_(menubar);
22
23        // create Application menu
24        let app_menu = NSMenu::new(nil).autorelease();
25        let quit_prefix = NSString::alloc(nil).init_str("Quit ");
26        let quit_title =
27            quit_prefix.stringByAppendingString_(NSProcessInfo::processInfo(nil).processName());
28        let quit_action = selector("terminate:");
29        let quit_key = NSString::alloc(nil).init_str("q");
30        let quit_item = NSMenuItem::alloc(nil)
31            .initWithTitle_action_keyEquivalent_(quit_title, quit_action, quit_key)
32            .autorelease();
33        app_menu.addItem_(quit_item);
34        app_menu_item.setSubmenu_(app_menu);
35
36        // create Window
37        let window = NSWindow::alloc(nil)
38            .initWithContentRect_styleMask_backing_defer_(
39                NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.)),
40                NSWindowStyleMask::NSTitledWindowMask,
41                NSBackingStoreBuffered,
42                NO,
43            )
44            .autorelease();
45        window.cascadeTopLeftFromPoint_(NSPoint::new(20., 20.));
46        window.center();
47        let title = NSString::alloc(nil).init_str("Hello World!");
48        window.setTitle_(title);
49        window.makeKeyAndOrderFront_(nil);
50        let current_app = NSRunningApplication::currentApplication(nil);
51        current_app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps);
52        app.run();
53    }
54}