Created
January 4, 2019 01:27
-
-
Save monomadic/6755abc2997955d8ade4e623598371c3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extern crate cocoa; | |
extern crate rtb_rs; | |
use cocoa::base::{selector, nil, NO}; | |
use cocoa::foundation::{NSRect, NSPoint, NSSize, NSAutoreleasePool, NSProcessInfo, | |
NSString}; | |
use cocoa::appkit::{NSApp, NSApplication, NSApplicationActivationPolicyRegular, NSWindow, | |
NSBackingStoreBuffered, NSMenu, NSMenuItem, NSWindowStyleMask, | |
NSRunningApplication, NSApplicationActivateIgnoringOtherApps}; | |
fn main() { | |
unsafe { | |
let _pool = NSAutoreleasePool::new(nil); | |
let app = NSApp(); | |
app.setActivationPolicy_(NSApplicationActivationPolicyRegular); | |
// create Menu Bar | |
let menubar = NSMenu::new(nil).autorelease(); | |
let app_menu_item = NSMenuItem::new(nil).autorelease(); | |
menubar.addItem_(app_menu_item); | |
app.setMainMenu_(menubar); | |
// create Application menu | |
let app_menu = NSMenu::new(nil).autorelease(); | |
let quit_prefix = NSString::alloc(nil).init_str("Quit "); | |
let quit_title = | |
quit_prefix.stringByAppendingString_(NSProcessInfo::processInfo(nil).processName()); | |
let quit_action = selector("terminate:"); | |
let quit_key = NSString::alloc(nil).init_str("q"); | |
let quit_item = NSMenuItem::alloc(nil) | |
.initWithTitle_action_keyEquivalent_(quit_title, quit_action, quit_key) | |
.autorelease(); | |
app_menu.addItem_(quit_item); | |
app_menu_item.setSubmenu_(app_menu); | |
// create Window | |
let window = NSWindow::alloc(nil) | |
.initWithContentRect_styleMask_backing_defer_(NSRect::new(NSPoint::new(0., 0.), | |
NSSize::new(200., 200.)), | |
NSWindowStyleMask::NSTitledWindowMask, | |
NSBackingStoreBuffered, | |
NO) | |
.autorelease(); | |
window.cascadeTopLeftFromPoint_(NSPoint::new(20., 20.)); | |
window.center(); | |
let title = NSString::alloc(nil).init_str("Hello World!"); | |
window.setTitle_(title); | |
window.makeKeyAndOrderFront_(nil); | |
let current_app = NSRunningApplication::currentApplication(nil); | |
current_app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps); | |
rtb_rs::Window::attach( | |
window as *mut std::ffi::c_void, | |
rtb_rs::Size{ width: 640, height: 480 }, "hi" | |
); | |
app.run(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment