1#![allow(deprecated)] use cocoa::base::{id, nil, selector, NO};
3
4use cocoa::appkit::{
5 NSApp, NSApplication, NSApplicationActivateIgnoringOtherApps,
6 NSApplicationActivationPolicyRegular, NSBackingStoreType, NSMenu, NSMenuItem,
7 NSRunningApplication, NSTabView, NSTabViewItem, NSWindow, NSWindowStyleMask,
8};
9use cocoa::foundation::{NSAutoreleasePool, NSPoint, NSProcessInfo, NSRect, NSSize, NSString};
10
11fn main() {
12 unsafe {
13 let tab_view = NSTabView::new(nil)
15 .initWithFrame_(NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.)));
16
17 let tab_view_item =
19 NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView1"));
20
21 tab_view_item.setLabel_(NSString::alloc(nil).init_str("Tab view item 1"));
22 tab_view.addTabViewItem_(tab_view_item);
23
24 let tab_view_item2 =
26 NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView2"));
27
28 tab_view_item2.setLabel_(NSString::alloc(nil).init_str("Tab view item 2"));
29 tab_view.addTabViewItem_(tab_view_item2);
30
31 let app = create_app(NSString::alloc(nil).init_str("Tab View"), tab_view);
33 app.run();
34 }
35}
36
37unsafe fn create_app(title: id, content: id) -> id {
38 let _pool = NSAutoreleasePool::new(nil);
39
40 let app = NSApp();
41 app.setActivationPolicy_(NSApplicationActivationPolicyRegular);
42
43 let menubar = NSMenu::new(nil).autorelease();
45 let app_menu_item = NSMenuItem::new(nil).autorelease();
46 menubar.addItem_(app_menu_item);
47 app.setMainMenu_(menubar);
48
49 let app_menu = NSMenu::new(nil).autorelease();
51 let quit_prefix = NSString::alloc(nil).init_str("Quit ");
52 let quit_title =
53 quit_prefix.stringByAppendingString_(NSProcessInfo::processInfo(nil).processName());
54 let quit_action = selector("terminate:");
55 let quit_key = NSString::alloc(nil).init_str("q");
56 let quit_item = NSMenuItem::alloc(nil)
57 .initWithTitle_action_keyEquivalent_(quit_title, quit_action, quit_key)
58 .autorelease();
59 app_menu.addItem_(quit_item);
60 app_menu_item.setSubmenu_(app_menu);
61
62 let window = NSWindow::alloc(nil)
64 .initWithContentRect_styleMask_backing_defer_(
65 NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.)),
66 NSWindowStyleMask::NSTitledWindowMask
67 | NSWindowStyleMask::NSClosableWindowMask
68 | NSWindowStyleMask::NSResizableWindowMask
69 | NSWindowStyleMask::NSMiniaturizableWindowMask
70 | NSWindowStyleMask::NSUnifiedTitleAndToolbarWindowMask,
71 NSBackingStoreType::NSBackingStoreBuffered,
72 NO,
73 )
74 .autorelease();
75 window.cascadeTopLeftFromPoint_(NSPoint::new(20., 20.));
76 window.center();
77
78 window.setTitle_(title);
79 window.makeKeyAndOrderFront_(nil);
80
81 window.setContentView_(content);
82 let current_app = NSRunningApplication::currentApplication(nil);
83 current_app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps);
84
85 app
86}