1///////////////////////////////////////////////////////////////////////////// 2// Name: src/cocoa/NSTabView.mm 3// Purpose: wxCocoaNSTabView 4// Author: David Elliott 5// Modified by: 6// Created: 2004/04/08 7// Copyright: (c) 2004 David Elliott 8// Licence: wxWindows licence 9///////////////////////////////////////////////////////////////////////////// 10 11#include "wx/wxprec.h" 12#ifndef WX_PRECOMP 13#endif // WX_PRECOMP 14 15#include "wx/cocoa/NSTabView.h" 16 17#include "wx/cocoa/objc/objc_uniquifying.h" 18 19#include <AppKit/NSTabView.h> 20 21// ============================================================================ 22// @class wxNSTabViewDelegate 23// ============================================================================ 24@interface wxNSTabViewDelegate : NSObject 25{ 26} 27 28- (void)tabView:(NSTabView*)tabView didSelectTabViewItem:(NSTabViewItem*)tabViewItem; 29- (BOOL)tabView:(NSTabView*)tabView shouldSelectTabViewItem:(NSTabViewItem*)tabViewItem; 30@end // interface wxNSTabViewDelegate : NSObject 31WX_DECLARE_GET_OBJC_CLASS(wxNSTabViewDelegate,NSObject) 32 33@implementation wxNSTabViewDelegate : NSObject 34- (void)tabView:(NSTabView*)tabView didSelectTabViewItem:(NSTabViewItem*)tabViewItem 35{ 36 wxCocoaNSTabView *notebook = wxCocoaNSTabView::GetFromCocoa(tabView); 37 wxCHECK_RET(notebook, wxT("This delegate is for use only with wxCocoa NSTabViews")); 38 notebook->CocoaDelegate_tabView_didSelectTabViewItem(tabViewItem); 39 40} 41 42- (BOOL)tabView:(NSTabView*)tabView shouldSelectTabViewItem:(NSTabViewItem*)tabViewItem 43{ 44 wxCocoaNSTabView *notebook = wxCocoaNSTabView::GetFromCocoa(tabView); 45 wxCHECK_MSG(notebook, true, wxT("This delegate is for use only with wxCocoa NSTabViews")); 46 return notebook->CocoaDelegate_tabView_shouldSelectTabViewItem(tabViewItem); 47} 48 49@end // implementation wxNSTabViewDelegate : NSObject 50WX_IMPLEMENT_GET_OBJC_CLASS(wxNSTabViewDelegate,NSObject) 51 52// ============================================================================ 53// class wxCocoaNSTabView 54// ============================================================================ 55WX_IMPLEMENT_OBJC_INTERFACE_HASHMAP(NSTabView) 56 57wxObjcAutoRefFromAlloc<struct objc_object*> wxCocoaNSTabView::sm_cocoaDelegate = [[WX_GET_OBJC_CLASS(wxNSTabViewDelegate) alloc] init]; 58 59void wxCocoaNSTabView::AssociateNSTabView(WX_NSTabView cocoaNSTabView) 60{ 61 if(cocoaNSTabView) 62 { 63 sm_cocoaHash.insert(wxCocoaNSTabViewHash::value_type(cocoaNSTabView,this)); 64 [cocoaNSTabView setDelegate: sm_cocoaDelegate]; 65 } 66} 67 68void wxCocoaNSTabView::DisassociateNSTabView(WX_NSTabView cocoaNSTabView) 69{ 70 if(cocoaNSTabView) 71 { 72 [cocoaNSTabView setDelegate: nil]; 73 sm_cocoaHash.erase(cocoaNSTabView); 74 } 75} 76 77