From d298baced60c0972a0ec56924c2bb4848413eeb9 Mon Sep 17 00:00:00 2001 From: Rafael Barbosa Date: Sun, 1 Feb 2015 19:04:35 +0000 Subject: [PATCH 1/7] first method bindings for NSTabView and NSTabViewItem --- examples/tab_view.rs | 85 ++++++++++++++++++++++++++++++++++++++++++++ src/appkit.rs | 53 +++++++++++++++++++++++++++ 2 files changed, 138 insertions(+) create mode 100644 examples/tab_view.rs diff --git a/examples/tab_view.rs b/examples/tab_view.rs new file mode 100644 index 0000000..6bad430 --- /dev/null +++ b/examples/tab_view.rs @@ -0,0 +1,85 @@ +extern crate cocoa; + +use cocoa::base::{NSUInteger, selector, nil, YES, NO}; +use cocoa::appkit::{NSApp, NSRect, NSPoint, NSSize, + NSAutoreleasePool, NSProcessInfo, + NSApplication, NSApplicationActivationPolicyRegular, + NSWindow, NSTitledWindowMask, NSBackingStoreBuffered, + NSClosableWindowMask,NSResizableWindowMask,NSMiniaturizableWindowMask,NSUnifiedTitleAndToolbarWindowMask, + NSString, + NSMenu, NSMenuItem, + NSTabView, NSTabViewItem}; + + +fn main() { + unsafe { + + // create a tab View + let tab_view = NSTabView::new(nil).initWithFrame_(NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.))); + + // create a tab view item + let tab_view_item = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView1\0")); + + tab_view_item.setLabel_(NSString::alloc(nil).init_str("Tab view item 1 \0")); + tab_view.addTabViewItem_(tab_view_item); + + //create a second tab view item + let tab_view_item2 = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView2\0")); + + tab_view_item2.setLabel_(NSString::alloc(nil).init_str("Tab view item 2 \0")); + tab_view.addTabViewItem_(tab_view_item2); + + //Create the app and set the content. + let app = create_app(NSString::alloc(nil).init_str("Tab View\0"),tab_view); + app.run(); + } +} + +unsafe fn create_app(title:i64,content:i64) -> i64{ + 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 \0"); + let quit_title = quit_prefix.stringByAppendingString_( + NSProcessInfo::processInfo(nil).processName() + ); + let quit_action = selector("terminate:"); + let quit_key = NSString::alloc(nil).init_str("q\0"); + 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.)), + NSTitledWindowMask as NSUInteger | NSClosableWindowMask as NSUInteger | NSResizableWindowMask as NSUInteger | NSMiniaturizableWindowMask as NSUInteger | NSUnifiedTitleAndToolbarWindowMask as NSUInteger, + NSBackingStoreBuffered, + NO + ).autorelease(); + window.cascadeTopLeftFromPoint_(NSPoint::new(20., 20.)); + window.center(); + + window.setTitle_(title); + window.makeKeyAndOrderFront_(nil); + + window.setContentView_(content); + + app.activateIgnoringOtherApps_(YES); + return app; +} + + diff --git a/src/appkit.rs b/src/appkit.rs index 22c4192..2471c9f 100644 --- a/src/appkit.rs +++ b/src/appkit.rs @@ -2211,3 +2211,56 @@ impl NSScreen for id { msg_send_stret()(self, selector("convertRectToBacking:"), aRect) } } + +pub trait NSTabView { + unsafe fn new(_: Self) -> id { + msg_send()(class("NSTabView"), selector("new")) + } + unsafe fn initWithFrame_(self, frameRect: NSRect) -> id; + unsafe fn addTabViewItem_(self, tab_view_item: id); + unsafe fn insertTabViewItem_atIndex_(self,tab_view_item:id, index:NSInteger); + unsafe fn removeTabViewItem_(self,tab_view_item:id); +} + +impl NSTabView for id { + + unsafe fn initWithFrame_(self, frameRect: NSRect) -> id { + msg_send()(self, selector("initWithFrame:"), frameRect) + } + + unsafe fn addTabViewItem_(self, tab_view_item: id) { + msg_send()(self, selector("addTabViewItem:"), tab_view_item) + } + unsafe fn insertTabViewItem_atIndex_(self, tab_view_item: id,index:NSInteger) { + msg_send()(self, selector("addTabViewItem:atIndex:"), tab_view_item,index) + } + unsafe fn removeTabViewItem_(self,tab_view_item:id){ + msg_send()(self, selector("removeTabViewItem:"), tab_view_item) + } + +} + +pub trait NSTabViewItem { + unsafe fn alloc(_: Self) -> id { + msg_send()(class("NSTabViewItem"), selector("alloc")) + } + + unsafe fn new(_: Self) -> id { + msg_send()(class("NSTabViewItem"), selector("new")) + } + + + unsafe fn initWithIdentifier_(self, identifier:id) -> id; + unsafe fn setLabel_(self,label:id); +} + +impl NSTabViewItem for id { + + unsafe fn initWithIdentifier_(self, identifier: id) -> id { + msg_send()(self, selector("initWithIdentifier:"), identifier) + } + + unsafe fn setLabel_(self,label : id){ + msg_send()(self, selector("setLabel:"), label) + } +} \ No newline at end of file From 7f9b8db9ae6946799645dfa772b7f19fa3f2ea3a Mon Sep 17 00:00:00 2001 From: Rafael Barbosa Date: Sun, 1 Feb 2015 23:23:27 +0000 Subject: [PATCH 2/7] added a few more methods to NSTabView and all the methods to NSTabViewItem --- examples/tab_view.rs | 4 +- src/appkit.rs | 201 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 204 insertions(+), 1 deletion(-) diff --git a/examples/tab_view.rs b/examples/tab_view.rs index 6bad430..726a1fd 100644 --- a/examples/tab_view.rs +++ b/examples/tab_view.rs @@ -8,7 +8,7 @@ use cocoa::appkit::{NSApp, NSRect, NSPoint, NSSize, NSClosableWindowMask,NSResizableWindowMask,NSMiniaturizableWindowMask,NSUnifiedTitleAndToolbarWindowMask, NSString, NSMenu, NSMenuItem, - NSTabView, NSTabViewItem}; + NSTabView, NSTabViewItem,NSTabViewType}; fn main() { @@ -17,6 +17,8 @@ fn main() { // create a tab View let tab_view = NSTabView::new(nil).initWithFrame_(NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.))); + tab_view.setTabViewType_(NSTabViewType::NSBottomTabsBezelBorder); + // create a tab view item let tab_view_item = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView1\0")); diff --git a/src/appkit.rs b/src/appkit.rs index 2471c9f..ea6f6f6 100644 --- a/src/appkit.rs +++ b/src/appkit.rs @@ -2212,6 +2212,17 @@ impl NSScreen for id { } } +#[repr(u64)] +pub enum NSTabViewType { + NSTopTabsBezelBorder = 0, + NSLeftTabsBezelBorder = 1, + NSBottomTabsBezelBorder = 2, + NSRightTabsBezelBorder = 3, + NSNoTabsBezelBorder = 4, + NSNoTabsLineBorder = 5, + NSNoTabsNoBorder = 6 +} + pub trait NSTabView { unsafe fn new(_: Self) -> id { msg_send()(class("NSTabView"), selector("new")) @@ -2220,6 +2231,42 @@ pub trait NSTabView { unsafe fn addTabViewItem_(self, tab_view_item: id); unsafe fn insertTabViewItem_atIndex_(self,tab_view_item:id, index:NSInteger); unsafe fn removeTabViewItem_(self,tab_view_item:id); + + unsafe fn indexOfTabViewItem_(self, tab_view_item:id) -> id; + unsafe fn indexOfTabViewItemWithIdentifier_(self,identifier:id) -> id; + unsafe fn numberOfTabViewItems(self) -> id; + unsafe fn tabViewItemAtIndex_(self,index:id)->id; + + unsafe fn tabViewItems(self)->id; + + unsafe fn selectFirstTabViewItem_(self,sender:id); + unsafe fn selectLastTabViewItem_(self,sender:id); + unsafe fn selectNextTabViewItem_(self, sender:id); + unsafe fn selectPreviousTabViewItem_(self,sender:id); + unsafe fn selectTabViewItem_(self,tab_view_item:id); + unsafe fn selectTabViewItemAtIndex_(self,index:id); + unsafe fn selectTabViewItemWithIdentifier_(self,identifier:id); + unsafe fn selectedTabViewItem(self) -> id; + unsafe fn takeSelectedTabViewItemFromSender_(self,sender:id); + + unsafe fn font(self)->id; + unsafe fn setFont_(self, font:id); + + unsafe fn tabViewType(self)->NSTabViewType; + unsafe fn setTabViewType_(self,tabViewType: NSTabViewType); + + /*unsafe fn controlTint(self)->id; + unsafe fn setControlTint_(self,controlTint:id); + + unsafe fn drawsBackground(self)->BOOL; + unsafe fn setDrawsBackground_(self,drawsBackground:BOOL); + + unsafe fn minimumSize(self) -> id; + unsafe fn contentRect(self) -> id; + unsafe fn controlSize(self) -> id; + unsafe fn setControlSize_(self,controlSize:id); + */ + } impl NSTabView for id { @@ -2238,6 +2285,78 @@ impl NSTabView for id { msg_send()(self, selector("removeTabViewItem:"), tab_view_item) } + unsafe fn indexOfTabViewItem_(self, tab_view_item:id) -> id{ + msg_send()(self,selector("indexOfTabViewItem:"),tab_view_item) + } + + unsafe fn indexOfTabViewItemWithIdentifier_(self,identifier:id) -> id{ + msg_send()(self,selector("indexOfTabViewItemWithIdentifier:"),identifier) + } + unsafe fn numberOfTabViewItems(self) -> id{ + msg_send()(self,selector("numberOfTabViewItems")) + } + + unsafe fn tabViewItemAtIndex_(self,index:id)->id{ + msg_send()(self,selector("tabViewItemAtIndex:"),index) + } + + unsafe fn tabViewItems(self)->id{ + msg_send()(self,selector("tabViewItems")) + } + + unsafe fn selectFirstTabViewItem_(self,sender:id){ + msg_send()(self,selector("selectFirstTabViewItem:"),sender) + } + + unsafe fn selectLastTabViewItem_(self,sender:id){ + msg_send()(self,selector("selectLastTabViewItem:"),sender) + } + unsafe fn selectNextTabViewItem_(self, sender:id){ + msg_send()(self,selector("selectNextTabViewItem:"),sender) + } + unsafe fn selectPreviousTabViewItem_(self,sender:id){ + msg_send()(self,selector("selectPreviousTabViewItem:"),sender) + } + + unsafe fn selectTabViewItem_(self,tab_view_item:id){ + msg_send()(self,selector("selectTabViewItem:"),tab_view_item) + } + + unsafe fn selectTabViewItemAtIndex_(self,index:id){ + msg_send()(self,selector("selectTabViewItemAtIndex:"),index) + } + unsafe fn selectTabViewItemWithIdentifier_(self,identifier:id){ + msg_send()(self,selector("selectTabViewItemWithIdentifier:"),identifier) + } + unsafe fn selectedTabViewItem(self) -> id{ + msg_send()(self,selector("selectedTabViewItem")) + } + unsafe fn takeSelectedTabViewItemFromSender_(self,sender:id){ + msg_send()(self,selector("takeSelectedTabViewItemFromSender:"),sender) + } + + unsafe fn font(self)->id{ + msg_send()(self,selector("font")) + } + + unsafe fn setFont_(self, font:id){ + msg_send()(self,selector("setFont:"),font) + } + + unsafe fn tabViewType(self)->NSTabViewType{ + msg_send()(self,selector("tabViewType")) + } + unsafe fn setTabViewType_(self,tabViewType: NSTabViewType){ + msg_send()(self,selector("setTabViewType:"),tabViewType) + } + +} + +#[repr(u64)] +pub enum NSTabState { + NSSelectedTab = 0, + NSBackgroundTab = 1, + NSPressedTab = 2 } pub trait NSTabViewItem { @@ -2251,7 +2370,30 @@ pub trait NSTabViewItem { unsafe fn initWithIdentifier_(self, identifier:id) -> id; + + unsafe fn drawLabel_inRect_(self,shouldTruncateLabel:BOOL,labelRect:NSRect); + unsafe fn label(self) -> id; unsafe fn setLabel_(self,label:id); + unsafe fn sizeOfLabel_(self, computeMin:BOOL); + + unsafe fn tabState(self) -> NSTabState; + + unsafe fn identifier(self)-> id; + unsafe fn setIdentifier_(self,identifier:id); + + unsafe fn color(self)-> id; + unsafe fn setColor_(self,color:id); + + unsafe fn view(self) -> id; + unsafe fn setView_(self, view:id); + + unsafe fn initialFirstResponder(self)->id; + unsafe fn setInitialFirstResponder_(self,initialFirstResponder:id); + + unsafe fn tabView(self) -> id; + + unsafe fn tooltip(self) -> id; + unsafe fn setTooltip_(self,toolTip:id); } impl NSTabViewItem for id { @@ -2260,7 +2402,66 @@ impl NSTabViewItem for id { msg_send()(self, selector("initWithIdentifier:"), identifier) } + unsafe fn drawLabel_inRect_(self, shouldTruncateLabel:BOOL,labelRect:NSRect){ + msg_send()(self,selector("drawLabel:inRect:"),shouldTruncateLabel as libc::c_int,labelRect) + } + + unsafe fn label(self)->id{ + msg_send()(self, selector("label")) + } unsafe fn setLabel_(self,label : id){ msg_send()(self, selector("setLabel:"), label) } + + unsafe fn sizeOfLabel_(self,computeMin:BOOL){ + msg_send()(self,selector("sizeOfLabel:"),computeMin as libc::c_int) + } + + unsafe fn tabState(self) -> NSTabState{ + msg_send()(self,selector("tabState")) + } + + unsafe fn identifier(self)-> id { + msg_send()(self,selector("identifier")) + } + + unsafe fn setIdentifier_(self,identifier:id){ + msg_send()(self,selector("identifier:"),identifier) + } + + unsafe fn color(self)-> id{ + msg_send()(self,selector("color")) + } + + unsafe fn setColor_(self,color:id){ + msg_send()(self,selector("color:"),color) + } + + unsafe fn view(self) -> id { + msg_send()(self,selector("view")) + } + + unsafe fn setView_(self, view:id){ + msg_send()(self,selector("setView:"),view) + } + + unsafe fn initialFirstResponder(self)->id{ + msg_send()(self,selector("initialFirstResponder")) + } + + unsafe fn setInitialFirstResponder_(self,initialFirstResponder:id){ + msg_send()(self,selector("setInitialFirstResponder:"),initialFirstResponder) + } + + unsafe fn tabView(self) -> id{ + msg_send()(self,selector("tabView")) + } + + unsafe fn tooltip(self) -> id{ + msg_send()(self,selector("tooltip")) + } + + unsafe fn setTooltip_(self,toolTip:id){ + msg_send()(self,selector("setTooltip:"),toolTip) + } } \ No newline at end of file From 1f7d210a01f7e1aa2590f70b0b469f3b6b58bb0e Mon Sep 17 00:00:00 2001 From: Rafael Barbosa Date: Sat, 7 Feb 2015 22:36:57 +0000 Subject: [PATCH 3/7] Modified the tab_view example --- examples/tab_view.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/examples/tab_view.rs b/examples/tab_view.rs index 726a1fd..6bad430 100644 --- a/examples/tab_view.rs +++ b/examples/tab_view.rs @@ -8,7 +8,7 @@ use cocoa::appkit::{NSApp, NSRect, NSPoint, NSSize, NSClosableWindowMask,NSResizableWindowMask,NSMiniaturizableWindowMask,NSUnifiedTitleAndToolbarWindowMask, NSString, NSMenu, NSMenuItem, - NSTabView, NSTabViewItem,NSTabViewType}; + NSTabView, NSTabViewItem}; fn main() { @@ -17,8 +17,6 @@ fn main() { // create a tab View let tab_view = NSTabView::new(nil).initWithFrame_(NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.))); - tab_view.setTabViewType_(NSTabViewType::NSBottomTabsBezelBorder); - // create a tab view item let tab_view_item = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView1\0")); From 750666e1c92ee297d6b2b25e4c2e5979fa3cb400 Mon Sep 17 00:00:00 2001 From: Rafael Barbosa Date: Sat, 7 Feb 2015 22:42:07 +0000 Subject: [PATCH 4/7] corrected naming style --- src/appkit.rs | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/appkit.rs b/src/appkit.rs index 6c2d7fe..3e7e898 100644 --- a/src/appkit.rs +++ b/src/appkit.rs @@ -2228,11 +2228,11 @@ pub trait NSTabView { msg_send()(class("NSTabView"), selector("new")) } unsafe fn initWithFrame_(self, frameRect: NSRect) -> id; - unsafe fn addTabViewItem_(self, tab_view_item: id); - unsafe fn insertTabViewItem_atIndex_(self,tab_view_item:id, index:NSInteger); - unsafe fn removeTabViewItem_(self,tab_view_item:id); + unsafe fn addTabViewItem_(self, tabViewItem: id); + unsafe fn insertTabViewItem_atIndex_(self,tabViewItem:id, index:NSInteger); + unsafe fn removeTabViewItem_(self,tabViewItem:id); - unsafe fn indexOfTabViewItem_(self, tab_view_item:id) -> id; + unsafe fn indexOfTabViewItem_(self, tabViewItem:id) -> id; unsafe fn indexOfTabViewItemWithIdentifier_(self,identifier:id) -> id; unsafe fn numberOfTabViewItems(self) -> id; unsafe fn tabViewItemAtIndex_(self,index:id)->id; @@ -2243,7 +2243,7 @@ pub trait NSTabView { unsafe fn selectLastTabViewItem_(self,sender:id); unsafe fn selectNextTabViewItem_(self, sender:id); unsafe fn selectPreviousTabViewItem_(self,sender:id); - unsafe fn selectTabViewItem_(self,tab_view_item:id); + unsafe fn selectTabViewItem_(self,tabViewItem:id); unsafe fn selectTabViewItemAtIndex_(self,index:id); unsafe fn selectTabViewItemWithIdentifier_(self,identifier:id); unsafe fn selectedTabViewItem(self) -> id; @@ -2275,18 +2275,18 @@ impl NSTabView for id { msg_send()(self, selector("initWithFrame:"), frameRect) } - unsafe fn addTabViewItem_(self, tab_view_item: id) { - msg_send()(self, selector("addTabViewItem:"), tab_view_item) + unsafe fn addTabViewItem_(self, tabViewItem: id) { + msg_send()(self, selector("addTabViewItem:"), tabViewItem) } - unsafe fn insertTabViewItem_atIndex_(self, tab_view_item: id,index:NSInteger) { - msg_send()(self, selector("addTabViewItem:atIndex:"), tab_view_item,index) + unsafe fn insertTabViewItem_atIndex_(self, tabViewItem: id,index:NSInteger) { + msg_send()(self, selector("addTabViewItem:atIndex:"), tabViewItem,index) } - unsafe fn removeTabViewItem_(self,tab_view_item:id){ - msg_send()(self, selector("removeTabViewItem:"), tab_view_item) + unsafe fn removeTabViewItem_(self,tabViewItem:id){ + msg_send()(self, selector("removeTabViewItem:"), tabViewItem) } - unsafe fn indexOfTabViewItem_(self, tab_view_item:id) -> id{ - msg_send()(self,selector("indexOfTabViewItem:"),tab_view_item) + unsafe fn indexOfTabViewItem_(self, tabViewItem:id) -> id{ + msg_send()(self,selector("indexOfTabViewItem:"),tabViewItem) } unsafe fn indexOfTabViewItemWithIdentifier_(self,identifier:id) -> id{ @@ -2318,8 +2318,8 @@ impl NSTabView for id { msg_send()(self,selector("selectPreviousTabViewItem:"),sender) } - unsafe fn selectTabViewItem_(self,tab_view_item:id){ - msg_send()(self,selector("selectTabViewItem:"),tab_view_item) + unsafe fn selectTabViewItem_(self,tabViewItem:id){ + msg_send()(self,selector("selectTabViewItem:"),tabViewItem) } unsafe fn selectTabViewItemAtIndex_(self,index:id){ From 18e93cbc5f263a448c9ef6cb7fe485a650779579 Mon Sep 17 00:00:00 2001 From: Rafael Barbosa Date: Sat, 7 Feb 2015 23:15:56 +0000 Subject: [PATCH 5/7] implemented the rest of the NSTabView methods --- src/appkit.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 7 deletions(-) diff --git a/src/appkit.rs b/src/appkit.rs index 3e7e898..ccb8417 100644 --- a/src/appkit.rs +++ b/src/appkit.rs @@ -2235,9 +2235,9 @@ pub trait NSTabView { unsafe fn indexOfTabViewItem_(self, tabViewItem:id) -> id; unsafe fn indexOfTabViewItemWithIdentifier_(self,identifier:id) -> id; unsafe fn numberOfTabViewItems(self) -> id; - unsafe fn tabViewItemAtIndex_(self,index:id)->id; + unsafe fn tabViewItemAtIndex_(self,index:id) -> id; - unsafe fn tabViewItems(self)->id; + unsafe fn tabViewItems(self) -> id; unsafe fn selectFirstTabViewItem_(self,sender:id); unsafe fn selectLastTabViewItem_(self,sender:id); @@ -2249,23 +2249,31 @@ pub trait NSTabView { unsafe fn selectedTabViewItem(self) -> id; unsafe fn takeSelectedTabViewItemFromSender_(self,sender:id); - unsafe fn font(self)->id; + unsafe fn font(self) -> id; unsafe fn setFont_(self, font:id); - unsafe fn tabViewType(self)->NSTabViewType; + unsafe fn tabViewType(self) -> NSTabViewType; unsafe fn setTabViewType_(self,tabViewType: NSTabViewType); - /*unsafe fn controlTint(self)->id; + unsafe fn controlTint(self) -> id; unsafe fn setControlTint_(self,controlTint:id); - unsafe fn drawsBackground(self)->BOOL; + unsafe fn drawsBackground(self) -> BOOL; unsafe fn setDrawsBackground_(self,drawsBackground:BOOL); unsafe fn minimumSize(self) -> id; unsafe fn contentRect(self) -> id; unsafe fn controlSize(self) -> id; unsafe fn setControlSize_(self,controlSize:id); - */ + + unsafe fn allowsTruncatedLabels(self) -> BOOL; + unsafe fn setAllowsTruncatedLabels_(self, allowTruncatedLabels:BOOL); + + unsafe fn setDelegate_(self, delegate:id); + unsafe fn delegate(self) -> id ; + + unsafe fn tabViewAtPoint_(self, point:id) -> id; + } @@ -2350,6 +2358,51 @@ impl NSTabView for id { msg_send()(self,selector("setTabViewType:"),tabViewType) } + unsafe fn controlTint(self) -> id{ + msg_send()(self,selector("controlTint")) + } + unsafe fn setControlTint_(self,controlTint:id){ + msg_send()(self,selector("setControlTint:"),controlTint) + } + + unsafe fn drawsBackground(self) -> BOOL{ + msg_send()(self,selector("drawsBackground")) + } + unsafe fn setDrawsBackground_(self,drawsBackground:BOOL){ + msg_send()(self,selector("setDrawsBackground:"),drawsBackground) + } + + unsafe fn minimumSize(self) -> id{ + msg_send()(self,selector("minimumSize")) + } + unsafe fn contentRect(self) -> id{ + msg_send()(self,selector("contentRect")) + } + unsafe fn controlSize(self) -> id{ + msg_send()(self,selector("controlSize")) + } + unsafe fn setControlSize_(self,controlSize:id){ + msg_send()(self,selector("setControlSize:"),controlSize) + } + + unsafe fn allowsTruncatedLabels(self) -> BOOL{ + msg_send()(self,selector("allowsTruncatedLabels")) + } + unsafe fn setAllowsTruncatedLabels_(self, allowTruncatedLabels:BOOL){ + msg_send()(self,selector("setAllowsTruncatedLabels:"),allowTruncatedLabels) + } + + unsafe fn setDelegate_(self, delegate:id){ + msg_send()(self,selector("setDelegate:"),delegate) + } + unsafe fn delegate(self) -> id { + msg_send()(self,selector("delegate")) + } + + unsafe fn tabViewAtPoint_(self, point:id) -> id{ + msg_send()(self,selector("tabViewAtPoint:"),point) + } + } #[repr(u64)] From a346846fd8042913590a43c74fff108015d3f4b6 Mon Sep 17 00:00:00 2001 From: Rafael Barbosa Date: Sat, 7 Feb 2015 23:20:43 +0000 Subject: [PATCH 6/7] Forgot the as libc::c_int in the BOOL parameters --- src/appkit.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/appkit.rs b/src/appkit.rs index ccb8417..f4dd76e 100644 --- a/src/appkit.rs +++ b/src/appkit.rs @@ -2369,7 +2369,7 @@ impl NSTabView for id { msg_send()(self,selector("drawsBackground")) } unsafe fn setDrawsBackground_(self,drawsBackground:BOOL){ - msg_send()(self,selector("setDrawsBackground:"),drawsBackground) + msg_send()(self,selector("setDrawsBackground:"),drawsBackground as libc::c_int) } unsafe fn minimumSize(self) -> id{ @@ -2389,7 +2389,7 @@ impl NSTabView for id { msg_send()(self,selector("allowsTruncatedLabels")) } unsafe fn setAllowsTruncatedLabels_(self, allowTruncatedLabels:BOOL){ - msg_send()(self,selector("setAllowsTruncatedLabels:"),allowTruncatedLabels) + msg_send()(self,selector("setAllowsTruncatedLabels:"),allowTruncatedLabels as libc::c_int) } unsafe fn setDelegate_(self, delegate:id){ From edcf333e8a395d20916b3c8f67f43b2d23b437c0 Mon Sep 17 00:00:00 2001 From: Rafael Barbosa Date: Tue, 26 Jul 2016 23:53:07 +0100 Subject: [PATCH 7/7] Updated the NSTabView and NSTabViewItem bindings to match the current codebase. Updated the tab_view example --- examples/tab_view.rs | 35 ++++++----- src/appkit.rs | 139 ++++++++++++++++++------------------------- 2 files changed, 77 insertions(+), 97 deletions(-) diff --git a/examples/tab_view.rs b/examples/tab_view.rs index 6bad430..28ca957 100644 --- a/examples/tab_view.rs +++ b/examples/tab_view.rs @@ -1,14 +1,18 @@ extern crate cocoa; -use cocoa::base::{NSUInteger, selector, nil, YES, NO}; -use cocoa::appkit::{NSApp, NSRect, NSPoint, NSSize, - NSAutoreleasePool, NSProcessInfo, +use cocoa::base::{selector,id, nil, NO}; + + +use cocoa::foundation::{NSUInteger,NSRect,NSPoint, NSSize, + NSAutoreleasePool,NSProcessInfo,NSString}; +use cocoa::appkit::{NSApp, NSApplication, NSApplicationActivationPolicyRegular, NSWindow, NSTitledWindowMask, NSBackingStoreBuffered, NSClosableWindowMask,NSResizableWindowMask,NSMiniaturizableWindowMask,NSUnifiedTitleAndToolbarWindowMask, - NSString, NSMenu, NSMenuItem, - NSTabView, NSTabViewItem}; + NSTabView, NSTabViewItem, + NSRunningApplication, + NSApplicationActivateIgnoringOtherApps}; fn main() { @@ -18,30 +22,30 @@ fn main() { let tab_view = NSTabView::new(nil).initWithFrame_(NSRect::new(NSPoint::new(0., 0.), NSSize::new(200., 200.))); // create a tab view item - let tab_view_item = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView1\0")); + let tab_view_item = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView1")); - tab_view_item.setLabel_(NSString::alloc(nil).init_str("Tab view item 1 \0")); + tab_view_item.setLabel_(NSString::alloc(nil).init_str("Tab view item 1")); tab_view.addTabViewItem_(tab_view_item); //create a second tab view item - let tab_view_item2 = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView2\0")); + let tab_view_item2 = NSTabViewItem::new(nil).initWithIdentifier_(NSString::alloc(nil).init_str("TabView2")); - tab_view_item2.setLabel_(NSString::alloc(nil).init_str("Tab view item 2 \0")); + tab_view_item2.setLabel_(NSString::alloc(nil).init_str("Tab view item 2")); tab_view.addTabViewItem_(tab_view_item2); //Create the app and set the content. - let app = create_app(NSString::alloc(nil).init_str("Tab View\0"),tab_view); + let app = create_app(NSString::alloc(nil).init_str("Tab View"),tab_view); app.run(); } } -unsafe fn create_app(title:i64,content:i64) -> i64{ +unsafe fn create_app(title:id,content:id) -> id{ let _pool = NSAutoreleasePool::new(nil); let app = NSApp(); app.setActivationPolicy_(NSApplicationActivationPolicyRegular); - // create Menu Bar + // create Menu Bar let menubar = NSMenu::new(nil).autorelease(); let app_menu_item = NSMenuItem::new(nil).autorelease(); menubar.addItem_(app_menu_item); @@ -49,12 +53,12 @@ unsafe fn create_app(title:i64,content:i64) -> i64{ // create Application menu let app_menu = NSMenu::new(nil).autorelease(); - let quit_prefix = NSString::alloc(nil).init_str("Quit \0"); + 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\0"); + let quit_key = NSString::alloc(nil).init_str("q"); let quit_item = NSMenuItem::alloc(nil).initWithTitle_action_keyEquivalent_( quit_title, quit_action, @@ -77,8 +81,9 @@ unsafe fn create_app(title:i64,content:i64) -> i64{ window.makeKeyAndOrderFront_(nil); window.setContentView_(content); + let current_app = NSRunningApplication::currentApplication(nil); + current_app.activateWithOptions_(NSApplicationActivateIgnoringOtherApps); - app.activateIgnoringOtherApps_(YES); return app; } diff --git a/src/appkit.rs b/src/appkit.rs index fa7958e..5a6014b 100644 --- a/src/appkit.rs +++ b/src/appkit.rs @@ -3352,21 +3352,19 @@ pub enum NSTabViewType { } pub trait NSTabView { - unsafe fn new(_: Self) -> id { - msg_send()(class("NSTabView"), selector("new")) + unsafe fn new(_: Self) -> id { + msg_send![class("NSTabView"), new] } + unsafe fn initWithFrame_(self, frameRect: NSRect) -> id; unsafe fn addTabViewItem_(self, tabViewItem: id); unsafe fn insertTabViewItem_atIndex_(self,tabViewItem:id, index:NSInteger); unsafe fn removeTabViewItem_(self,tabViewItem:id); - unsafe fn indexOfTabViewItem_(self, tabViewItem:id) -> id; unsafe fn indexOfTabViewItemWithIdentifier_(self,identifier:id) -> id; unsafe fn numberOfTabViewItems(self) -> id; unsafe fn tabViewItemAtIndex_(self,index:id) -> id; - unsafe fn tabViewItems(self) -> id; - unsafe fn selectFirstTabViewItem_(self,sender:id); unsafe fn selectLastTabViewItem_(self,sender:id); unsafe fn selectNextTabViewItem_(self, sender:id); @@ -3376,161 +3374,149 @@ pub trait NSTabView { unsafe fn selectTabViewItemWithIdentifier_(self,identifier:id); unsafe fn selectedTabViewItem(self) -> id; unsafe fn takeSelectedTabViewItemFromSender_(self,sender:id); - unsafe fn font(self) -> id; unsafe fn setFont_(self, font:id); - unsafe fn tabViewType(self) -> NSTabViewType; unsafe fn setTabViewType_(self,tabViewType: NSTabViewType); - unsafe fn controlTint(self) -> id; unsafe fn setControlTint_(self,controlTint:id); - unsafe fn drawsBackground(self) -> BOOL; unsafe fn setDrawsBackground_(self,drawsBackground:BOOL); - unsafe fn minimumSize(self) -> id; unsafe fn contentRect(self) -> id; unsafe fn controlSize(self) -> id; unsafe fn setControlSize_(self,controlSize:id); - unsafe fn allowsTruncatedLabels(self) -> BOOL; unsafe fn setAllowsTruncatedLabels_(self, allowTruncatedLabels:BOOL); - unsafe fn setDelegate_(self, delegate:id); unsafe fn delegate(self) -> id ; - unsafe fn tabViewAtPoint_(self, point:id) -> id; - - } impl NSTabView for id { - unsafe fn initWithFrame_(self, frameRect: NSRect) -> id { - msg_send()(self, selector("initWithFrame:"), frameRect) + msg_send![self, initWithFrame:frameRect] } unsafe fn addTabViewItem_(self, tabViewItem: id) { - msg_send()(self, selector("addTabViewItem:"), tabViewItem) + msg_send![self, addTabViewItem:tabViewItem] } unsafe fn insertTabViewItem_atIndex_(self, tabViewItem: id,index:NSInteger) { - msg_send()(self, selector("addTabViewItem:atIndex:"), tabViewItem,index) + msg_send![self, addTabViewItem:tabViewItem atIndex:index] } unsafe fn removeTabViewItem_(self,tabViewItem:id){ - msg_send()(self, selector("removeTabViewItem:"), tabViewItem) + msg_send![self, removeTabViewItem:tabViewItem] } unsafe fn indexOfTabViewItem_(self, tabViewItem:id) -> id{ - msg_send()(self,selector("indexOfTabViewItem:"),tabViewItem) + msg_send![self, indexOfTabViewItem:tabViewItem] } unsafe fn indexOfTabViewItemWithIdentifier_(self,identifier:id) -> id{ - msg_send()(self,selector("indexOfTabViewItemWithIdentifier:"),identifier) + msg_send![self, indexOfTabViewItemWithIdentifier:identifier] } unsafe fn numberOfTabViewItems(self) -> id{ - msg_send()(self,selector("numberOfTabViewItems")) + msg_send![self, numberOfTabViewItems] } unsafe fn tabViewItemAtIndex_(self,index:id)->id{ - msg_send()(self,selector("tabViewItemAtIndex:"),index) + msg_send![self, tabViewItemAtIndex:index] } unsafe fn tabViewItems(self)->id{ - msg_send()(self,selector("tabViewItems")) + msg_send![self, tabViewItems] } unsafe fn selectFirstTabViewItem_(self,sender:id){ - msg_send()(self,selector("selectFirstTabViewItem:"),sender) + msg_send![self, selectFirstTabViewItem:sender] } unsafe fn selectLastTabViewItem_(self,sender:id){ - msg_send()(self,selector("selectLastTabViewItem:"),sender) + msg_send![self, selectLastTabViewItem:sender] } unsafe fn selectNextTabViewItem_(self, sender:id){ - msg_send()(self,selector("selectNextTabViewItem:"),sender) + msg_send![self, selectNextTabViewItem:sender] } unsafe fn selectPreviousTabViewItem_(self,sender:id){ - msg_send()(self,selector("selectPreviousTabViewItem:"),sender) + msg_send![self, selectPreviousTabViewItem:sender] } unsafe fn selectTabViewItem_(self,tabViewItem:id){ - msg_send()(self,selector("selectTabViewItem:"),tabViewItem) + msg_send![self, selectTabViewItem:tabViewItem] } unsafe fn selectTabViewItemAtIndex_(self,index:id){ - msg_send()(self,selector("selectTabViewItemAtIndex:"),index) + msg_send![self, selectTabViewItemAtIndex:index] } unsafe fn selectTabViewItemWithIdentifier_(self,identifier:id){ - msg_send()(self,selector("selectTabViewItemWithIdentifier:"),identifier) + msg_send![self, selectTabViewItemWithIdentifier:identifier] } unsafe fn selectedTabViewItem(self) -> id{ - msg_send()(self,selector("selectedTabViewItem")) + msg_send![self, selectedTabViewItem] } unsafe fn takeSelectedTabViewItemFromSender_(self,sender:id){ - msg_send()(self,selector("takeSelectedTabViewItemFromSender:"),sender) + msg_send![self, takeSelectedTabViewItemFromSender:sender] } unsafe fn font(self)->id{ - msg_send()(self,selector("font")) + msg_send![self, font] } unsafe fn setFont_(self, font:id){ - msg_send()(self,selector("setFont:"),font) + msg_send![self, setFont:font] } unsafe fn tabViewType(self)->NSTabViewType{ - msg_send()(self,selector("tabViewType")) + msg_send![self, tabViewType] } unsafe fn setTabViewType_(self,tabViewType: NSTabViewType){ - msg_send()(self,selector("setTabViewType:"),tabViewType) + msg_send![self, setTabViewType:tabViewType] } unsafe fn controlTint(self) -> id{ - msg_send()(self,selector("controlTint")) + msg_send![self, controlTint] } unsafe fn setControlTint_(self,controlTint:id){ - msg_send()(self,selector("setControlTint:"),controlTint) + msg_send![self, setControlTint:controlTint] } unsafe fn drawsBackground(self) -> BOOL{ - msg_send()(self,selector("drawsBackground")) + msg_send![self, drawsBackground] } unsafe fn setDrawsBackground_(self,drawsBackground:BOOL){ - msg_send()(self,selector("setDrawsBackground:"),drawsBackground as libc::c_int) + msg_send![self, setDrawsBackground:drawsBackground as libc::c_int] } unsafe fn minimumSize(self) -> id{ - msg_send()(self,selector("minimumSize")) + msg_send![self, minimumSize] } unsafe fn contentRect(self) -> id{ - msg_send()(self,selector("contentRect")) + msg_send![self, contentRect] } unsafe fn controlSize(self) -> id{ - msg_send()(self,selector("controlSize")) + msg_send![self, controlSize] } unsafe fn setControlSize_(self,controlSize:id){ - msg_send()(self,selector("setControlSize:"),controlSize) + msg_send![self, setControlSize:controlSize] } unsafe fn allowsTruncatedLabels(self) -> BOOL{ - msg_send()(self,selector("allowsTruncatedLabels")) + msg_send![self, allowsTruncatedLabels] } unsafe fn setAllowsTruncatedLabels_(self, allowTruncatedLabels:BOOL){ - msg_send()(self,selector("setAllowsTruncatedLabels:"),allowTruncatedLabels as libc::c_int) + msg_send![self, setAllowsTruncatedLabels:allowTruncatedLabels as libc::c_int] } unsafe fn setDelegate_(self, delegate:id){ - msg_send()(self,selector("setDelegate:"),delegate) + msg_send![self, setDelegate:delegate] } unsafe fn delegate(self) -> id { - msg_send()(self,selector("delegate")) + msg_send![self, delegate] } unsafe fn tabViewAtPoint_(self, point:id) -> id{ - msg_send()(self,selector("tabViewAtPoint:"),point) + msg_send![self, tabViewAtPoint:point] } - } #[repr(u64)] @@ -3542,107 +3528,96 @@ pub enum NSTabState { pub trait NSTabViewItem { unsafe fn alloc(_: Self) -> id { - msg_send()(class("NSTabViewItem"), selector("alloc")) + msg_send![class("NSTabViewItem"), alloc] } - unsafe fn new(_: Self) -> id { - msg_send()(class("NSTabViewItem"), selector("new")) + msg_send![class("NSTabViewItem"), new] } - unsafe fn initWithIdentifier_(self, identifier:id) -> id; - unsafe fn drawLabel_inRect_(self,shouldTruncateLabel:BOOL,labelRect:NSRect); unsafe fn label(self) -> id; unsafe fn setLabel_(self,label:id); unsafe fn sizeOfLabel_(self, computeMin:BOOL); - unsafe fn tabState(self) -> NSTabState; - unsafe fn identifier(self)-> id; unsafe fn setIdentifier_(self,identifier:id); - unsafe fn color(self)-> id; unsafe fn setColor_(self,color:id); - unsafe fn view(self) -> id; unsafe fn setView_(self, view:id); - unsafe fn initialFirstResponder(self)->id; unsafe fn setInitialFirstResponder_(self,initialFirstResponder:id); - unsafe fn tabView(self) -> id; - unsafe fn tooltip(self) -> id; unsafe fn setTooltip_(self,toolTip:id); } impl NSTabViewItem for id { - unsafe fn initWithIdentifier_(self, identifier: id) -> id { - msg_send()(self, selector("initWithIdentifier:"), identifier) + msg_send![self, initWithIdentifier:identifier] } unsafe fn drawLabel_inRect_(self, shouldTruncateLabel:BOOL,labelRect:NSRect){ - msg_send()(self,selector("drawLabel:inRect:"),shouldTruncateLabel as libc::c_int,labelRect) + msg_send![self, drawLabel:shouldTruncateLabel as libc::c_int inRect:labelRect] } unsafe fn label(self)->id{ - msg_send()(self, selector("label")) + msg_send![self, label] } unsafe fn setLabel_(self,label : id){ - msg_send()(self, selector("setLabel:"), label) + msg_send![self, setLabel:label] } unsafe fn sizeOfLabel_(self,computeMin:BOOL){ - msg_send()(self,selector("sizeOfLabel:"),computeMin as libc::c_int) + msg_send![self, sizeOfLabel:computeMin as libc::c_int] } unsafe fn tabState(self) -> NSTabState{ - msg_send()(self,selector("tabState")) + msg_send![self, tabState] } unsafe fn identifier(self)-> id { - msg_send()(self,selector("identifier")) + msg_send![self, identifier] } unsafe fn setIdentifier_(self,identifier:id){ - msg_send()(self,selector("identifier:"),identifier) + msg_send![self, identifier:identifier] } unsafe fn color(self)-> id{ - msg_send()(self,selector("color")) + msg_send![self, color] } unsafe fn setColor_(self,color:id){ - msg_send()(self,selector("color:"),color) + msg_send![self, color:color] } unsafe fn view(self) -> id { - msg_send()(self,selector("view")) + msg_send![self, view] } unsafe fn setView_(self, view:id){ - msg_send()(self,selector("setView:"),view) + msg_send![self, setView:view] } unsafe fn initialFirstResponder(self)->id{ - msg_send()(self,selector("initialFirstResponder")) + msg_send![self, initialFirstResponder] } unsafe fn setInitialFirstResponder_(self,initialFirstResponder:id){ - msg_send()(self,selector("setInitialFirstResponder:"),initialFirstResponder) + msg_send![self, setInitialFirstResponder:initialFirstResponder] } unsafe fn tabView(self) -> id{ - msg_send()(self,selector("tabView")) + msg_send![self, tabView] } unsafe fn tooltip(self) -> id{ - msg_send()(self,selector("tooltip")) + msg_send![self, tooltip] } unsafe fn setTooltip_(self,toolTip:id){ - msg_send()(self,selector("setTooltip:"),toolTip) + msg_send![self, setTooltip:toolTip] } }