├── .gitignore ├── BFPageControl.podspec ├── BFPageControl ├── BFPageControl.h └── BFPageControl.m ├── Example ├── Example.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcuserdata │ │ │ └── bfolder.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcuserdata │ │ └── bfolder.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints.xcbkptlist │ │ └── xcschemes │ │ ├── Example.xcscheme │ │ └── xcschememanagement.plist └── Example │ ├── AppDelegate.h │ ├── AppDelegate.m │ ├── Example-Info.plist │ ├── Example-Prefix.pch │ ├── en.lproj │ ├── Credits.rtf │ ├── InfoPlist.strings │ └── MainMenu.xib │ └── main.m ├── LICENSE ├── README.md └── screenshot.png /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac OS X 2 | *.DS_Store 3 | 4 | # Xcode 5 | *.pbxuser 6 | *.mode1v3 7 | *.mode2v3 8 | *.perspectivev3 9 | *.xcuserstate 10 | project.xcworkspace/ 11 | xcuserdata/ 12 | 13 | # Generated files 14 | *.o 15 | *.pyc 16 | 17 | 18 | #Python modules 19 | MANIFEST 20 | dist/ 21 | build/ 22 | 23 | # Backup files 24 | *~.nib 25 | *.swp 26 | -------------------------------------------------------------------------------- /BFPageControl.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |s| 2 | s.name = 'BFPageControl' 3 | s.version = '1.0.1' 4 | s.license = 'MIT' 5 | s.summary = 'BFPageControl is a page control for Mac OS X. Most of the methods are derived from the UIPageControl class in iOS.' 6 | s.homepage = 'https://github.com/bfolder/BFPageControl' 7 | s.authors = { 'Heiko Dreyer' => 'mail@boxedfolder.com'} 8 | s.source = { :git => 'https://github.com/bfolder/BFPageControl.git', :tag => '1.0.1' } 9 | s.source_files = 'BFPageControl/**/*.{h,m}' 10 | s.requires_arc = true 11 | s.osx.deployment_target = '10.7' 12 | end -------------------------------------------------------------------------------- /BFPageControl/BFPageControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // BFPageControl.h 3 | // 4 | // Created by Heiko Dreyer on 07/27/12. 5 | // Copyright (c) 2012 boxedfolder.com. All rights reserved. 6 | // 7 | 8 | #import 9 | 10 | @class BFPageControl; 11 | 12 | @protocol BFPageControlDelegate 13 | @optional 14 | -(void)pageControl: (BFPageControl *)pageControl didSelectPageAtIndex: (NSInteger)index; 15 | @end 16 | 17 | @interface BFPageControlCell : NSButtonCell 18 | @property (nonatomic)BOOL useHandCursor; 19 | @property (copy)void (^drawingBlock)(NSRect, NSView *, BOOL, BOOL); 20 | @end 21 | 22 | @interface BFPageControl : NSView 23 | 24 | ///--------------------------------------------------------------------------------------- 25 | /// @name Managing the Page Navigation 26 | ///--------------------------------------------------------------------------------------- 27 | 28 | /** 29 | * The current page, shown by the receiver as a white dot. 30 | */ 31 | @property(nonatomic)NSInteger currentPage; 32 | 33 | /** 34 | * The number of pages the receiver shows (as dots). 35 | */ 36 | @property(nonatomic)NSInteger numberOfPages; 37 | 38 | /** 39 | * A Boolean value that controls whether the page indicator is hidden when there is only one page. 40 | */ 41 | @property(nonatomic)BOOL hidesForSinglePage; 42 | 43 | ///--------------------------------------------------------------------------------------- 44 | /// @name Updating the Page Display 45 | ///--------------------------------------------------------------------------------------- 46 | 47 | /** 48 | * Updates the page indicator to the current page. 49 | */ 50 | -(void)updateCurrentPageDisplay; 51 | 52 | /** 53 | * Returns the size the receiver’s bounds should be to accommodate the given number of pages. 54 | */ 55 | -(NSSize)sizeForNumberOfPages: (NSInteger)pageCount; 56 | 57 | ///--------------------------------------------------------------------------------------- 58 | /// @name Visual Properties 59 | ///--------------------------------------------------------------------------------------- 60 | 61 | /** 62 | * Color for selected dot. 63 | */ 64 | @property (nonatomic)NSColor *selectedColor; 65 | 66 | /** 67 | * Color for highlight dot. 68 | */ 69 | @property (nonatomic)NSColor *highlightColor; 70 | 71 | /** 72 | * Color for unselected dot. 73 | */ 74 | @property (nonatomic)NSColor *unselectedColor; 75 | 76 | /** 77 | * Diameter size (Points). 78 | */ 79 | @property (nonatomic)CGFloat indicatorDiameterSize; 80 | 81 | /** 82 | * Margin between dots. 83 | */ 84 | @property (nonatomic)CGFloat indicatorMargin; 85 | 86 | /** 87 | * Use Hand-Cusor on dots. 88 | */ 89 | @property (nonatomic)BOOL useHandCursor; 90 | 91 | /** 92 | * Optional drawing block (custom dot drawing). 93 | */ 94 | -(void)setDrawingBlock: (void (^)(NSRect frame, NSView *inView, BOOL isSelected, BOOL isHiglighted))drawingBlock; 95 | 96 | ///--------------------------------------------------------------------------------------- 97 | /// @name Misc Properties 98 | ///--------------------------------------------------------------------------------------- 99 | 100 | @property (nonatomic, assign) IBOutlet id delegate; 101 | 102 | @end 103 | -------------------------------------------------------------------------------- /BFPageControl/BFPageControl.m: -------------------------------------------------------------------------------- 1 | // 2 | // BFPageControl.m 3 | // 4 | // Created by Heiko Dreyer on 07/27/12. 5 | // Copyright (c) 2012 boxedfolder.com. All rights reserved. 6 | // 7 | 8 | #import "BFPageControl.h" 9 | 10 | @interface BFPageControl () 11 | -(void)_clickedItem: (id)sender; 12 | @end 13 | 14 | /////////////////////////////////////////////////////////////////////////////////////////////////// 15 | /////////////////////////////////////////////////////////////////////////////////////////////////// 16 | 17 | @implementation BFPageControlCell 18 | 19 | @synthesize useHandCursor = _useHandCursor; 20 | @synthesize drawingBlock = _drawingBlock; 21 | 22 | /////////////////////////////////////////////////////////////////////////////////////////////////// 23 | /////////////////////////////////////////////////////////////////////////////////////////////////// 24 | 25 | #pragma mark - Drawing 26 | 27 | -(void)drawWithFrame: (NSRect)frame inView: (NSView *)view 28 | { 29 | if(!_drawingBlock) 30 | return; 31 | 32 | [NSGraphicsContext saveGraphicsState]; 33 | _drawingBlock(frame, view, [self state] == NSOnState, self.isHighlighted); 34 | [NSGraphicsContext restoreGraphicsState]; 35 | } 36 | 37 | /////////////////////////////////////////////////////////////////////////////////////////////////// 38 | 39 | -(void)resetCursorRect: (NSRect)cellFrame inView: (NSView *)controlView 40 | { 41 | if(!_useHandCursor) 42 | { 43 | [super resetCursorRect: cellFrame inView: controlView]; 44 | return; 45 | } 46 | 47 | NSCursor *cursor = [NSCursor pointingHandCursor]; 48 | [controlView addCursorRect: cellFrame cursor: cursor]; 49 | [cursor setOnMouseEntered: YES]; 50 | } 51 | 52 | @end 53 | 54 | /////////////////////////////////////////////////////////////////////////////////////////////////// 55 | /////////////////////////////////////////////////////////////////////////////////////////////////// 56 | 57 | @implementation BFPageControl 58 | { 59 | void (^_drawingBlock)(NSRect, NSView *, BOOL, BOOL); 60 | NSMatrix *_matrix; 61 | } 62 | 63 | @synthesize currentPage = _currentPage; 64 | @synthesize numberOfPages = _numberOfPages; 65 | @synthesize hidesForSinglePage = _hidesForSinglePage; 66 | 67 | @synthesize selectedColor = _selectedColor; 68 | @synthesize highlightColor = _highlightColor; 69 | @synthesize unselectedColor = _unselectedColor; 70 | @synthesize indicatorDiameterSize = _indicatorDiameterSize; 71 | @synthesize indicatorMargin = _indicatorMargin; 72 | @synthesize useHandCursor = _useHandCursor; 73 | 74 | @synthesize delegate = _delegate; 75 | 76 | /////////////////////////////////////////////////////////////////////////////////////////////////// 77 | /////////////////////////////////////////////////////////////////////////////////////////////////// 78 | 79 | #pragma mark - Init 80 | 81 | -(id)initWithFrame: (NSRect)frameRect 82 | { 83 | if(self = [super initWithFrame: frameRect]) 84 | { 85 | _numberOfPages = 0; 86 | _indicatorDiameterSize = 10.0; 87 | _indicatorMargin = 5.0; 88 | _matrix = nil; 89 | _useHandCursor = NO; 90 | _drawingBlock = nil; 91 | _hidesForSinglePage = NO; 92 | } 93 | 94 | return self; 95 | } 96 | 97 | /////////////////////////////////////////////////////////////////////////////////////////////////// 98 | /////////////////////////////////////////////////////////////////////////////////////////////////// 99 | 100 | #pragma mark - Display Related Methods 101 | 102 | -(void)updateCurrentPageDisplay 103 | { 104 | if(_matrix) 105 | [_matrix removeFromSuperview], _matrix = nil; 106 | 107 | NSUInteger numberOfPages = self.numberOfPages; 108 | if(_hidesForSinglePage && numberOfPages < 2) 109 | return; 110 | 111 | NSSize size = [self sizeForNumberOfPages: _numberOfPages]; 112 | 113 | CGRect bounds = self.bounds; 114 | CGFloat W = bounds.size.width; 115 | CGFloat H = bounds.size.height; 116 | 117 | CGFloat x = floorf((W-size.width)/2); 118 | CGFloat y = floorf((H-size.height)/2); 119 | 120 | NSRect frame = NSMakeRect(x, y, size.width, size.height); 121 | 122 | _matrix = [[NSMatrix alloc] initWithFrame: frame mode: NSRadioModeMatrix cellClass: [BFPageControlCell class] numberOfRows: 1 numberOfColumns: _numberOfPages]; 123 | _matrix.drawsBackground = YES; 124 | _matrix.backgroundColor = [NSColor clearColor]; 125 | _matrix.cellSize = NSMakeSize(_indicatorDiameterSize, _indicatorDiameterSize); 126 | _matrix.intercellSpacing = NSMakeSize(_indicatorMargin, _indicatorMargin); 127 | _matrix.allowsEmptySelection = NO; 128 | [_matrix setTarget: self]; 129 | [_matrix setAction: @selector(_clickedItem:)]; 130 | [self addSubview: _matrix]; 131 | 132 | __weak id wSelf = self; 133 | void(^block)(NSRect, NSView *, BOOL, BOOL) = ^(NSRect frame, NSView *theView, BOOL isSelected, BOOL isHighlighted){ 134 | BFPageControl *aSelf = wSelf; 135 | NSBezierPath *path = [NSBezierPath bezierPathWithOvalInRect: frame]; 136 | NSColor *color = isSelected ? aSelf.selectedColor : aSelf.unselectedColor; 137 | 138 | if(isHighlighted) 139 | color = aSelf.highlightColor; 140 | 141 | [color set]; 142 | [path fill]; 143 | }; 144 | 145 | [_matrix.cells enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop){ 146 | BFPageControlCell *cell = (BFPageControlCell *)obj; 147 | [cell setDrawingBlock: _drawingBlock ?: block]; 148 | [cell setUseHandCursor: _useHandCursor]; 149 | }]; 150 | 151 | [_matrix selectCellAtRow: 0 column: _currentPage]; 152 | 153 | [self setNeedsDisplay: YES]; 154 | } 155 | 156 | /////////////////////////////////////////////////////////////////////////////////////////////////// 157 | 158 | -(NSSize)sizeForNumberOfPages: (NSInteger)pageCount 159 | { 160 | return NSMakeSize(pageCount * _indicatorDiameterSize + (pageCount - 1) * _indicatorMargin, _indicatorDiameterSize); 161 | } 162 | 163 | /////////////////////////////////////////////////////////////////////////////////////////////////// 164 | /////////////////////////////////////////////////////////////////////////////////////////////////// 165 | 166 | #pragma mark - Misc 167 | 168 | -(void)_clickedItem: (id)sender 169 | { 170 | NSUInteger page = [_matrix.cells indexOfObject: _matrix.selectedCell]; 171 | _currentPage = page; 172 | 173 | // Call delegate 174 | if(_delegate && [_delegate respondsToSelector: @selector(pageControl:didSelectPageAtIndex:)]) 175 | [_delegate pageControl: self didSelectPageAtIndex: page]; 176 | } 177 | 178 | /////////////////////////////////////////////////////////////////////////////////////////////////// 179 | /////////////////////////////////////////////////////////////////////////////////////////////////// 180 | 181 | #pragma mark - Accessor 182 | 183 | -(void)setCurrentPage:(NSInteger)currentPage 184 | { 185 | _currentPage = currentPage; 186 | 187 | [self updateCurrentPageDisplay]; 188 | } 189 | 190 | /////////////////////////////////////////////////////////////////////////////////////////////////// 191 | 192 | -(void)setFrame: (NSRect)frameRect 193 | { 194 | [super setFrame: frameRect]; 195 | [self updateCurrentPageDisplay]; 196 | } 197 | 198 | /////////////////////////////////////////////////////////////////////////////////////////////////// 199 | 200 | -(void)setBounds: (NSRect)aRect 201 | { 202 | [super setBounds: aRect]; 203 | [self updateCurrentPageDisplay]; 204 | } 205 | 206 | /////////////////////////////////////////////////////////////////////////////////////////////////// 207 | 208 | -(NSColor *)selectedColor 209 | { 210 | if(!_selectedColor) 211 | _selectedColor = [NSColor darkGrayColor]; 212 | 213 | return _selectedColor; 214 | } 215 | 216 | /////////////////////////////////////////////////////////////////////////////////////////////////// 217 | 218 | -(void)setSelectedColor: (NSColor *)selectedColor 219 | { 220 | _selectedColor = selectedColor; 221 | 222 | [self updateCurrentPageDisplay]; 223 | } 224 | 225 | /////////////////////////////////////////////////////////////////////////////////////////////////// 226 | 227 | -(NSColor *)highlightColor 228 | { 229 | if(!_highlightColor) 230 | _highlightColor = [NSColor grayColor]; 231 | 232 | return _highlightColor; 233 | } 234 | 235 | /////////////////////////////////////////////////////////////////////////////////////////////////// 236 | 237 | -(void)setHighlightColor: (NSColor *)highlightColor 238 | { 239 | _highlightColor = highlightColor; 240 | 241 | [self updateCurrentPageDisplay]; 242 | } 243 | 244 | 245 | /////////////////////////////////////////////////////////////////////////////////////////////////// 246 | 247 | -(NSColor *)unselectedColor 248 | { 249 | if(!_unselectedColor) 250 | _unselectedColor = [NSColor lightGrayColor]; 251 | 252 | return _unselectedColor; 253 | } 254 | 255 | /////////////////////////////////////////////////////////////////////////////////////////////////// 256 | 257 | -(void)setUnselectedColor: (NSColor *)unselectedColor 258 | { 259 | _unselectedColor = unselectedColor; 260 | 261 | [self updateCurrentPageDisplay]; 262 | } 263 | 264 | /////////////////////////////////////////////////////////////////////////////////////////////////// 265 | 266 | -(void)setNumberOfPages: (NSInteger)numberOfPages 267 | { 268 | _numberOfPages = numberOfPages; 269 | 270 | [self updateCurrentPageDisplay]; 271 | [self invalidateIntrinsicContentSize]; 272 | } 273 | 274 | /////////////////////////////////////////////////////////////////////////////////////////////////// 275 | 276 | -(void)setUseHandCursor: (BOOL)useHandCursor 277 | { 278 | _useHandCursor = useHandCursor; 279 | [self updateCurrentPageDisplay]; 280 | } 281 | 282 | /////////////////////////////////////////////////////////////////////////////////////////////////// 283 | 284 | -(void)setDrawingBlock: (void (^)(NSRect frame, NSView *inView, BOOL isSelected, BOOL isHiglighted))drawingBlock; 285 | { 286 | _drawingBlock = [drawingBlock copy]; 287 | [self updateCurrentPageDisplay]; 288 | } 289 | 290 | /////////////////////////////////////////////////////////////////////////////////////////////////// 291 | 292 | -(NSSize)intrinsicContentSize 293 | { 294 | //! size to fit the current setting 295 | return [self sizeForNumberOfPages: [self numberOfPages]]; 296 | } 297 | 298 | /////////////////////////////////////////////////////////////////////////////////////////////////// 299 | 300 | -(NSSize)fittingSize 301 | { 302 | return [self intrinsicContentSize]; 303 | } 304 | 305 | @end 306 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 602E21A915C239C900DE228D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 602E21A815C239C900DE228D /* Cocoa.framework */; }; 11 | 602E21B315C239C900DE228D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 602E21B115C239C900DE228D /* InfoPlist.strings */; }; 12 | 602E21B515C239C900DE228D /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 602E21B415C239C900DE228D /* main.m */; }; 13 | 602E21B915C239C900DE228D /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 602E21B715C239C900DE228D /* Credits.rtf */; }; 14 | 602E21BC15C239C900DE228D /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 602E21BB15C239C900DE228D /* AppDelegate.m */; }; 15 | 602E21BF15C239C900DE228D /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 602E21BD15C239C900DE228D /* MainMenu.xib */; }; 16 | 602E21CB15C23A5400DE228D /* BFPageControl.m in Sources */ = {isa = PBXBuildFile; fileRef = 602E21CA15C23A5400DE228D /* BFPageControl.m */; }; 17 | /* End PBXBuildFile section */ 18 | 19 | /* Begin PBXFileReference section */ 20 | 602E21A415C239C900DE228D /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 21 | 602E21A815C239C900DE228D /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 22 | 602E21AB15C239C900DE228D /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 23 | 602E21AC15C239C900DE228D /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 24 | 602E21AD15C239C900DE228D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 25 | 602E21B015C239C900DE228D /* Example-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Example-Info.plist"; sourceTree = ""; }; 26 | 602E21B215C239C900DE228D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 27 | 602E21B415C239C900DE228D /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 28 | 602E21B615C239C900DE228D /* Example-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Example-Prefix.pch"; sourceTree = ""; }; 29 | 602E21B815C239C900DE228D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; 30 | 602E21BA15C239C900DE228D /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 31 | 602E21BB15C239C900DE228D /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 32 | 602E21BE15C239C900DE228D /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; 33 | 602E21C915C23A5400DE228D /* BFPageControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BFPageControl.h; path = ../../BFPageControl.h; sourceTree = ""; }; 34 | 602E21CA15C23A5400DE228D /* BFPageControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BFPageControl.m; path = ../../BFPageControl.m; sourceTree = ""; }; 35 | /* End PBXFileReference section */ 36 | 37 | /* Begin PBXFrameworksBuildPhase section */ 38 | 602E21A115C239C900DE228D /* Frameworks */ = { 39 | isa = PBXFrameworksBuildPhase; 40 | buildActionMask = 2147483647; 41 | files = ( 42 | 602E21A915C239C900DE228D /* Cocoa.framework in Frameworks */, 43 | ); 44 | runOnlyForDeploymentPostprocessing = 0; 45 | }; 46 | /* End PBXFrameworksBuildPhase section */ 47 | 48 | /* Begin PBXGroup section */ 49 | 602E219915C239C900DE228D = { 50 | isa = PBXGroup; 51 | children = ( 52 | 602E21AE15C239C900DE228D /* Example */, 53 | 602E21A715C239C900DE228D /* Frameworks */, 54 | 602E21A515C239C900DE228D /* Products */, 55 | ); 56 | sourceTree = ""; 57 | }; 58 | 602E21A515C239C900DE228D /* Products */ = { 59 | isa = PBXGroup; 60 | children = ( 61 | 602E21A415C239C900DE228D /* Example.app */, 62 | ); 63 | name = Products; 64 | sourceTree = ""; 65 | }; 66 | 602E21A715C239C900DE228D /* Frameworks */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | 602E21A815C239C900DE228D /* Cocoa.framework */, 70 | 602E21AA15C239C900DE228D /* Other Frameworks */, 71 | ); 72 | name = Frameworks; 73 | sourceTree = ""; 74 | }; 75 | 602E21AA15C239C900DE228D /* Other Frameworks */ = { 76 | isa = PBXGroup; 77 | children = ( 78 | 602E21AB15C239C900DE228D /* AppKit.framework */, 79 | 602E21AC15C239C900DE228D /* CoreData.framework */, 80 | 602E21AD15C239C900DE228D /* Foundation.framework */, 81 | ); 82 | name = "Other Frameworks"; 83 | sourceTree = ""; 84 | }; 85 | 602E21AE15C239C900DE228D /* Example */ = { 86 | isa = PBXGroup; 87 | children = ( 88 | 602E21C915C23A5400DE228D /* BFPageControl.h */, 89 | 602E21CA15C23A5400DE228D /* BFPageControl.m */, 90 | 602E21BA15C239C900DE228D /* AppDelegate.h */, 91 | 602E21BB15C239C900DE228D /* AppDelegate.m */, 92 | 602E21BD15C239C900DE228D /* MainMenu.xib */, 93 | 602E21AF15C239C900DE228D /* Supporting Files */, 94 | ); 95 | path = Example; 96 | sourceTree = ""; 97 | }; 98 | 602E21AF15C239C900DE228D /* Supporting Files */ = { 99 | isa = PBXGroup; 100 | children = ( 101 | 602E21B015C239C900DE228D /* Example-Info.plist */, 102 | 602E21B115C239C900DE228D /* InfoPlist.strings */, 103 | 602E21B415C239C900DE228D /* main.m */, 104 | 602E21B615C239C900DE228D /* Example-Prefix.pch */, 105 | 602E21B715C239C900DE228D /* Credits.rtf */, 106 | ); 107 | name = "Supporting Files"; 108 | sourceTree = ""; 109 | }; 110 | /* End PBXGroup section */ 111 | 112 | /* Begin PBXNativeTarget section */ 113 | 602E21A315C239C900DE228D /* Example */ = { 114 | isa = PBXNativeTarget; 115 | buildConfigurationList = 602E21C215C239C900DE228D /* Build configuration list for PBXNativeTarget "Example" */; 116 | buildPhases = ( 117 | 602E21A015C239C900DE228D /* Sources */, 118 | 602E21A115C239C900DE228D /* Frameworks */, 119 | 602E21A215C239C900DE228D /* Resources */, 120 | ); 121 | buildRules = ( 122 | ); 123 | dependencies = ( 124 | ); 125 | name = Example; 126 | productName = Example; 127 | productReference = 602E21A415C239C900DE228D /* Example.app */; 128 | productType = "com.apple.product-type.application"; 129 | }; 130 | /* End PBXNativeTarget section */ 131 | 132 | /* Begin PBXProject section */ 133 | 602E219B15C239C900DE228D /* Project object */ = { 134 | isa = PBXProject; 135 | attributes = { 136 | LastUpgradeCheck = 0450; 137 | ORGANIZATIONNAME = boxedfolder.com; 138 | }; 139 | buildConfigurationList = 602E219E15C239C900DE228D /* Build configuration list for PBXProject "Example" */; 140 | compatibilityVersion = "Xcode 3.2"; 141 | developmentRegion = English; 142 | hasScannedForEncodings = 0; 143 | knownRegions = ( 144 | en, 145 | ); 146 | mainGroup = 602E219915C239C900DE228D; 147 | productRefGroup = 602E21A515C239C900DE228D /* Products */; 148 | projectDirPath = ""; 149 | projectRoot = ""; 150 | targets = ( 151 | 602E21A315C239C900DE228D /* Example */, 152 | ); 153 | }; 154 | /* End PBXProject section */ 155 | 156 | /* Begin PBXResourcesBuildPhase section */ 157 | 602E21A215C239C900DE228D /* Resources */ = { 158 | isa = PBXResourcesBuildPhase; 159 | buildActionMask = 2147483647; 160 | files = ( 161 | 602E21B315C239C900DE228D /* InfoPlist.strings in Resources */, 162 | 602E21B915C239C900DE228D /* Credits.rtf in Resources */, 163 | 602E21BF15C239C900DE228D /* MainMenu.xib in Resources */, 164 | ); 165 | runOnlyForDeploymentPostprocessing = 0; 166 | }; 167 | /* End PBXResourcesBuildPhase section */ 168 | 169 | /* Begin PBXSourcesBuildPhase section */ 170 | 602E21A015C239C900DE228D /* Sources */ = { 171 | isa = PBXSourcesBuildPhase; 172 | buildActionMask = 2147483647; 173 | files = ( 174 | 602E21B515C239C900DE228D /* main.m in Sources */, 175 | 602E21BC15C239C900DE228D /* AppDelegate.m in Sources */, 176 | 602E21CB15C23A5400DE228D /* BFPageControl.m in Sources */, 177 | ); 178 | runOnlyForDeploymentPostprocessing = 0; 179 | }; 180 | /* End PBXSourcesBuildPhase section */ 181 | 182 | /* Begin PBXVariantGroup section */ 183 | 602E21B115C239C900DE228D /* InfoPlist.strings */ = { 184 | isa = PBXVariantGroup; 185 | children = ( 186 | 602E21B215C239C900DE228D /* en */, 187 | ); 188 | name = InfoPlist.strings; 189 | sourceTree = ""; 190 | }; 191 | 602E21B715C239C900DE228D /* Credits.rtf */ = { 192 | isa = PBXVariantGroup; 193 | children = ( 194 | 602E21B815C239C900DE228D /* en */, 195 | ); 196 | name = Credits.rtf; 197 | sourceTree = ""; 198 | }; 199 | 602E21BD15C239C900DE228D /* MainMenu.xib */ = { 200 | isa = PBXVariantGroup; 201 | children = ( 202 | 602E21BE15C239C900DE228D /* en */, 203 | ); 204 | name = MainMenu.xib; 205 | sourceTree = ""; 206 | }; 207 | /* End PBXVariantGroup section */ 208 | 209 | /* Begin XCBuildConfiguration section */ 210 | 602E21C015C239C900DE228D /* Debug */ = { 211 | isa = XCBuildConfiguration; 212 | buildSettings = { 213 | ALWAYS_SEARCH_USER_PATHS = NO; 214 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 215 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 216 | CLANG_ENABLE_OBJC_ARC = YES; 217 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 218 | COPY_PHASE_STRIP = NO; 219 | GCC_C_LANGUAGE_STANDARD = gnu99; 220 | GCC_DYNAMIC_NO_PIC = NO; 221 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 222 | GCC_OPTIMIZATION_LEVEL = 0; 223 | GCC_PREPROCESSOR_DEFINITIONS = ( 224 | "DEBUG=1", 225 | "$(inherited)", 226 | ); 227 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 228 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 229 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 230 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 231 | GCC_WARN_UNUSED_VARIABLE = YES; 232 | MACOSX_DEPLOYMENT_TARGET = 10.8; 233 | ONLY_ACTIVE_ARCH = YES; 234 | SDKROOT = macosx; 235 | }; 236 | name = Debug; 237 | }; 238 | 602E21C115C239C900DE228D /* Release */ = { 239 | isa = XCBuildConfiguration; 240 | buildSettings = { 241 | ALWAYS_SEARCH_USER_PATHS = NO; 242 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 243 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 244 | CLANG_ENABLE_OBJC_ARC = YES; 245 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 246 | COPY_PHASE_STRIP = YES; 247 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 248 | GCC_C_LANGUAGE_STANDARD = gnu99; 249 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 250 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 251 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 252 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 253 | GCC_WARN_UNUSED_VARIABLE = YES; 254 | MACOSX_DEPLOYMENT_TARGET = 10.8; 255 | SDKROOT = macosx; 256 | }; 257 | name = Release; 258 | }; 259 | 602E21C315C239C900DE228D /* Debug */ = { 260 | isa = XCBuildConfiguration; 261 | buildSettings = { 262 | COMBINE_HIDPI_IMAGES = YES; 263 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 264 | GCC_PREFIX_HEADER = "Example/Example-Prefix.pch"; 265 | INFOPLIST_FILE = "Example/Example-Info.plist"; 266 | PRODUCT_NAME = "$(TARGET_NAME)"; 267 | WRAPPER_EXTENSION = app; 268 | }; 269 | name = Debug; 270 | }; 271 | 602E21C415C239C900DE228D /* Release */ = { 272 | isa = XCBuildConfiguration; 273 | buildSettings = { 274 | COMBINE_HIDPI_IMAGES = YES; 275 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 276 | GCC_PREFIX_HEADER = "Example/Example-Prefix.pch"; 277 | INFOPLIST_FILE = "Example/Example-Info.plist"; 278 | PRODUCT_NAME = "$(TARGET_NAME)"; 279 | WRAPPER_EXTENSION = app; 280 | }; 281 | name = Release; 282 | }; 283 | /* End XCBuildConfiguration section */ 284 | 285 | /* Begin XCConfigurationList section */ 286 | 602E219E15C239C900DE228D /* Build configuration list for PBXProject "Example" */ = { 287 | isa = XCConfigurationList; 288 | buildConfigurations = ( 289 | 602E21C015C239C900DE228D /* Debug */, 290 | 602E21C115C239C900DE228D /* Release */, 291 | ); 292 | defaultConfigurationIsVisible = 0; 293 | defaultConfigurationName = Release; 294 | }; 295 | 602E21C215C239C900DE228D /* Build configuration list for PBXNativeTarget "Example" */ = { 296 | isa = XCConfigurationList; 297 | buildConfigurations = ( 298 | 602E21C315C239C900DE228D /* Debug */, 299 | 602E21C415C239C900DE228D /* Release */, 300 | ); 301 | defaultConfigurationIsVisible = 0; 302 | defaultConfigurationName = Release; 303 | }; 304 | /* End XCConfigurationList section */ 305 | }; 306 | rootObject = 602E219B15C239C900DE228D /* Project object */; 307 | } 308 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/project.xcworkspace/xcuserdata/bfolder.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfolder/BFPageControl/39ba23b3b613a68c2b83b35d56ef02facf843132/Example/Example.xcodeproj/project.xcworkspace/xcuserdata/bfolder.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Example/Example.xcodeproj/xcuserdata/bfolder.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/xcuserdata/bfolder.xcuserdatad/xcschemes/Example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /Example/Example.xcodeproj/xcuserdata/bfolder.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Example.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 602E21A315C239C900DE228D 16 | 17 | primary 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/Example/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Example 4 | // 5 | // Created by Heiko Dreyer on 27.07.12. 6 | // Copyright (c) 2012 boxedfolder.com. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "BFPageControl.h" 11 | 12 | @interface AppDelegate : NSObject 13 | 14 | @property (assign) IBOutlet NSWindow *window; 15 | 16 | @property (nonatomic, assign)IBOutlet NSTextField *label; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Example/Example/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // Example 4 | // 5 | // Created by Heiko Dreyer on 27.07.12. 6 | // Copyright (c) 2012 boxedfolder.com. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @implementation AppDelegate 12 | 13 | @synthesize label = _label; 14 | 15 | /////////////////////////////////////////////////////////////////////////////////////////////////// 16 | /////////////////////////////////////////////////////////////////////////////////////////////////// 17 | 18 | -(void)applicationDidFinishLaunching:(NSNotification *)aNotification 19 | { 20 | [_label setStringValue: @"Index 5 selected"]; 21 | 22 | // Setup page control 23 | NSRect frame = self.window.frame; 24 | BFPageControl *control = [[BFPageControl alloc] init]; 25 | [control setDelegate: self]; 26 | [control setNumberOfPages: 11]; 27 | [control setIndicatorDiameterSize: 15]; 28 | [control setIndicatorMargin: 5]; 29 | [control setCurrentPage: 5]; 30 | [control setDrawingBlock: ^(NSRect frame, NSView *aView, BOOL isSelected, BOOL isHighlighted){ 31 | 32 | frame = CGRectInset(frame, 2.0, 2.0); 33 | NSBezierPath *path = [NSBezierPath bezierPathWithOvalInRect: CGRectMake(frame.origin.x, frame.origin.y + 1.5, frame.size.width, frame.size.height)]; 34 | [[NSColor whiteColor] set]; 35 | [path fill]; 36 | 37 | path = [NSBezierPath bezierPathWithOvalInRect: frame]; 38 | NSColor *color = isSelected ? [NSColor colorWithCalibratedRed: (115.0 / 255.0) green: (115.0 / 255.0) blue: (115.0 / 255.0) alpha: 1.0] : 39 | [NSColor colorWithCalibratedRed: (217.0 / 255.0) green: (217.0 / 255.0) blue: (217.0 / 255.0) alpha: 1.0]; 40 | 41 | if(isHighlighted) 42 | color = [NSColor colorWithCalibratedRed: (150.0 / 255.0) green: (150.0 / 255.0) blue: (150.0 / 255.0) alpha: 1.0]; 43 | 44 | [color set]; 45 | [path fill]; 46 | 47 | frame = CGRectInset(frame, 0.5, 0.5); 48 | [[NSColor colorWithCalibratedRed: (25.0 / 255.0) green: (25.0 / 255.0) blue: (25.0 / 255.0) alpha: 0.15] set]; 49 | [NSBezierPath setDefaultLineWidth: 1.0]; 50 | [[NSBezierPath bezierPathWithOvalInRect: frame] stroke]; 51 | }]; 52 | [self.window.contentView addSubview: control]; 53 | CGSize size = [control intrinsicContentSize]; 54 | [control setFrame: CGRectMake((frame.size.width - size.width)/2, 50, size.width, size.height)]; 55 | } 56 | 57 | /////////////////////////////////////////////////////////////////////////////////////////////////// 58 | /////////////////////////////////////////////////////////////////////////////////////////////////// 59 | 60 | #pragma mark - Delegate 61 | 62 | -(void)pageControl: (BFPageControl *)pageControl didSelectPageAtIndex: (NSInteger)index 63 | { 64 | NSLog(@"%@: Selected page at index: %li", pageControl, index); 65 | [_label setStringValue: [NSString stringWithFormat: @"Index %li selected", index]]; 66 | } 67 | 68 | @end 69 | -------------------------------------------------------------------------------- /Example/Example/Example-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.boxedfolder.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSHumanReadableCopyright 28 | Copyright © 2012 boxedfolder.com. All rights reserved. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | 34 | 35 | -------------------------------------------------------------------------------- /Example/Example/Example-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Example' target in the 'Example' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /Example/Example/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Example/Example/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Example/Example/en.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1080 5 | 12A269 6 | 2549 7 | 1187 8 | 624.00 9 | 10 | com.apple.InterfaceBuilder.CocoaPlugin 11 | 2549 12 | 13 | 14 | NSCustomObject 15 | NSMenu 16 | NSMenuItem 17 | NSTextField 18 | NSTextFieldCell 19 | NSView 20 | NSWindowTemplate 21 | 22 | 23 | com.apple.InterfaceBuilder.CocoaPlugin 24 | 25 | 26 | PluginDependencyRecalculationVersion 27 | 28 | 29 | 30 | 31 | NSApplication 32 | 33 | 34 | FirstResponder 35 | 36 | 37 | NSApplication 38 | 39 | 40 | AMainMenu 41 | 42 | 43 | 44 | Example 45 | 46 | 1048576 47 | 2147483647 48 | 49 | NSImage 50 | NSMenuCheckmark 51 | 52 | 53 | NSImage 54 | NSMenuMixedState 55 | 56 | submenuAction: 57 | 58 | Example 59 | 60 | 61 | 62 | About Example 63 | 64 | 2147483647 65 | 66 | 67 | 68 | 69 | 70 | YES 71 | YES 72 | 73 | 74 | 1048576 75 | 2147483647 76 | 77 | 78 | 79 | 80 | 81 | Preferences… 82 | , 83 | 1048576 84 | 2147483647 85 | 86 | 87 | 88 | 89 | 90 | YES 91 | YES 92 | 93 | 94 | 1048576 95 | 2147483647 96 | 97 | 98 | 99 | 100 | 101 | Services 102 | 103 | 1048576 104 | 2147483647 105 | 106 | 107 | submenuAction: 108 | 109 | Services 110 | 111 | _NSServicesMenu 112 | 113 | 114 | 115 | 116 | YES 117 | YES 118 | 119 | 120 | 1048576 121 | 2147483647 122 | 123 | 124 | 125 | 126 | 127 | Hide Example 128 | h 129 | 1048576 130 | 2147483647 131 | 132 | 133 | 134 | 135 | 136 | Hide Others 137 | h 138 | 1572864 139 | 2147483647 140 | 141 | 142 | 143 | 144 | 145 | Show All 146 | 147 | 1048576 148 | 2147483647 149 | 150 | 151 | 152 | 153 | 154 | YES 155 | YES 156 | 157 | 158 | 1048576 159 | 2147483647 160 | 161 | 162 | 163 | 164 | 165 | Quit Example 166 | q 167 | 1048576 168 | 2147483647 169 | 170 | 171 | 172 | 173 | _NSAppleMenu 174 | 175 | 176 | 177 | 178 | File 179 | 180 | 1048576 181 | 2147483647 182 | 183 | 184 | submenuAction: 185 | 186 | File 187 | 188 | 189 | 190 | New 191 | n 192 | 1048576 193 | 2147483647 194 | 195 | 196 | 197 | 198 | 199 | Open… 200 | o 201 | 1048576 202 | 2147483647 203 | 204 | 205 | 206 | 207 | 208 | Open Recent 209 | 210 | 1048576 211 | 2147483647 212 | 213 | 214 | submenuAction: 215 | 216 | Open Recent 217 | 218 | 219 | 220 | Clear Menu 221 | 222 | 1048576 223 | 2147483647 224 | 225 | 226 | 227 | 228 | _NSRecentDocumentsMenu 229 | 230 | 231 | 232 | 233 | YES 234 | YES 235 | 236 | 237 | 1048576 238 | 2147483647 239 | 240 | 241 | 242 | 243 | 244 | Close 245 | w 246 | 1048576 247 | 2147483647 248 | 249 | 250 | 251 | 252 | 253 | Save… 254 | s 255 | 1048576 256 | 2147483647 257 | 258 | 259 | 260 | 261 | 262 | Revert to Saved 263 | 264 | 2147483647 265 | 266 | 267 | 268 | 269 | 270 | YES 271 | YES 272 | 273 | 274 | 1048576 275 | 2147483647 276 | 277 | 278 | 279 | 280 | 281 | Page Setup... 282 | P 283 | 1179648 284 | 2147483647 285 | 286 | 287 | 288 | 289 | 290 | 291 | Print… 292 | p 293 | 1048576 294 | 2147483647 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | Edit 304 | 305 | 1048576 306 | 2147483647 307 | 308 | 309 | submenuAction: 310 | 311 | Edit 312 | 313 | 314 | 315 | Undo 316 | z 317 | 1048576 318 | 2147483647 319 | 320 | 321 | 322 | 323 | 324 | Redo 325 | Z 326 | 1179648 327 | 2147483647 328 | 329 | 330 | 331 | 332 | 333 | YES 334 | YES 335 | 336 | 337 | 1048576 338 | 2147483647 339 | 340 | 341 | 342 | 343 | 344 | Cut 345 | x 346 | 1048576 347 | 2147483647 348 | 349 | 350 | 351 | 352 | 353 | Copy 354 | c 355 | 1048576 356 | 2147483647 357 | 358 | 359 | 360 | 361 | 362 | Paste 363 | v 364 | 1048576 365 | 2147483647 366 | 367 | 368 | 369 | 370 | 371 | Paste and Match Style 372 | V 373 | 1572864 374 | 2147483647 375 | 376 | 377 | 378 | 379 | 380 | Delete 381 | 382 | 1048576 383 | 2147483647 384 | 385 | 386 | 387 | 388 | 389 | Select All 390 | a 391 | 1048576 392 | 2147483647 393 | 394 | 395 | 396 | 397 | 398 | YES 399 | YES 400 | 401 | 402 | 1048576 403 | 2147483647 404 | 405 | 406 | 407 | 408 | 409 | Find 410 | 411 | 1048576 412 | 2147483647 413 | 414 | 415 | submenuAction: 416 | 417 | Find 418 | 419 | 420 | 421 | Find… 422 | f 423 | 1048576 424 | 2147483647 425 | 426 | 427 | 1 428 | 429 | 430 | 431 | Find and Replace… 432 | f 433 | 1572864 434 | 2147483647 435 | 436 | 437 | 12 438 | 439 | 440 | 441 | Find Next 442 | g 443 | 1048576 444 | 2147483647 445 | 446 | 447 | 2 448 | 449 | 450 | 451 | Find Previous 452 | G 453 | 1179648 454 | 2147483647 455 | 456 | 457 | 3 458 | 459 | 460 | 461 | Use Selection for Find 462 | e 463 | 1048576 464 | 2147483647 465 | 466 | 467 | 7 468 | 469 | 470 | 471 | Jump to Selection 472 | j 473 | 1048576 474 | 2147483647 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | Spelling and Grammar 484 | 485 | 1048576 486 | 2147483647 487 | 488 | 489 | submenuAction: 490 | 491 | Spelling and Grammar 492 | 493 | 494 | 495 | Show Spelling and Grammar 496 | : 497 | 1048576 498 | 2147483647 499 | 500 | 501 | 502 | 503 | 504 | Check Document Now 505 | ; 506 | 1048576 507 | 2147483647 508 | 509 | 510 | 511 | 512 | 513 | YES 514 | YES 515 | 516 | 517 | 2147483647 518 | 519 | 520 | 521 | 522 | 523 | Check Spelling While Typing 524 | 525 | 1048576 526 | 2147483647 527 | 528 | 529 | 530 | 531 | 532 | Check Grammar With Spelling 533 | 534 | 1048576 535 | 2147483647 536 | 537 | 538 | 539 | 540 | 541 | Correct Spelling Automatically 542 | 543 | 2147483647 544 | 545 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | Substitutions 553 | 554 | 1048576 555 | 2147483647 556 | 557 | 558 | submenuAction: 559 | 560 | Substitutions 561 | 562 | 563 | 564 | Show Substitutions 565 | 566 | 2147483647 567 | 568 | 569 | 570 | 571 | 572 | YES 573 | YES 574 | 575 | 576 | 2147483647 577 | 578 | 579 | 580 | 581 | 582 | Smart Copy/Paste 583 | f 584 | 1048576 585 | 2147483647 586 | 587 | 588 | 1 589 | 590 | 591 | 592 | Smart Quotes 593 | g 594 | 1048576 595 | 2147483647 596 | 597 | 598 | 2 599 | 600 | 601 | 602 | Smart Dashes 603 | 604 | 2147483647 605 | 606 | 607 | 608 | 609 | 610 | Smart Links 611 | G 612 | 1179648 613 | 2147483647 614 | 615 | 616 | 3 617 | 618 | 619 | 620 | Text Replacement 621 | 622 | 2147483647 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | Transformations 632 | 633 | 2147483647 634 | 635 | 636 | submenuAction: 637 | 638 | Transformations 639 | 640 | 641 | 642 | Make Upper Case 643 | 644 | 2147483647 645 | 646 | 647 | 648 | 649 | 650 | Make Lower Case 651 | 652 | 2147483647 653 | 654 | 655 | 656 | 657 | 658 | Capitalize 659 | 660 | 2147483647 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | Speech 670 | 671 | 1048576 672 | 2147483647 673 | 674 | 675 | submenuAction: 676 | 677 | Speech 678 | 679 | 680 | 681 | Start Speaking 682 | 683 | 1048576 684 | 2147483647 685 | 686 | 687 | 688 | 689 | 690 | Stop Speaking 691 | 692 | 1048576 693 | 2147483647 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | Format 706 | 707 | 2147483647 708 | 709 | 710 | submenuAction: 711 | 712 | Format 713 | 714 | 715 | 716 | Font 717 | 718 | 2147483647 719 | 720 | 721 | submenuAction: 722 | 723 | Font 724 | 725 | 726 | 727 | Show Fonts 728 | t 729 | 1048576 730 | 2147483647 731 | 732 | 733 | 734 | 735 | 736 | Bold 737 | b 738 | 1048576 739 | 2147483647 740 | 741 | 742 | 2 743 | 744 | 745 | 746 | Italic 747 | i 748 | 1048576 749 | 2147483647 750 | 751 | 752 | 1 753 | 754 | 755 | 756 | Underline 757 | u 758 | 1048576 759 | 2147483647 760 | 761 | 762 | 763 | 764 | 765 | YES 766 | YES 767 | 768 | 769 | 2147483647 770 | 771 | 772 | 773 | 774 | 775 | Bigger 776 | + 777 | 1048576 778 | 2147483647 779 | 780 | 781 | 3 782 | 783 | 784 | 785 | Smaller 786 | - 787 | 1048576 788 | 2147483647 789 | 790 | 791 | 4 792 | 793 | 794 | 795 | YES 796 | YES 797 | 798 | 799 | 2147483647 800 | 801 | 802 | 803 | 804 | 805 | Kern 806 | 807 | 2147483647 808 | 809 | 810 | submenuAction: 811 | 812 | Kern 813 | 814 | 815 | 816 | Use Default 817 | 818 | 2147483647 819 | 820 | 821 | 822 | 823 | 824 | Use None 825 | 826 | 2147483647 827 | 828 | 829 | 830 | 831 | 832 | Tighten 833 | 834 | 2147483647 835 | 836 | 837 | 838 | 839 | 840 | Loosen 841 | 842 | 2147483647 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | Ligatures 852 | 853 | 2147483647 854 | 855 | 856 | submenuAction: 857 | 858 | Ligatures 859 | 860 | 861 | 862 | Use Default 863 | 864 | 2147483647 865 | 866 | 867 | 868 | 869 | 870 | Use None 871 | 872 | 2147483647 873 | 874 | 875 | 876 | 877 | 878 | Use All 879 | 880 | 2147483647 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | Baseline 890 | 891 | 2147483647 892 | 893 | 894 | submenuAction: 895 | 896 | Baseline 897 | 898 | 899 | 900 | Use Default 901 | 902 | 2147483647 903 | 904 | 905 | 906 | 907 | 908 | Superscript 909 | 910 | 2147483647 911 | 912 | 913 | 914 | 915 | 916 | Subscript 917 | 918 | 2147483647 919 | 920 | 921 | 922 | 923 | 924 | Raise 925 | 926 | 2147483647 927 | 928 | 929 | 930 | 931 | 932 | Lower 933 | 934 | 2147483647 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | YES 944 | YES 945 | 946 | 947 | 2147483647 948 | 949 | 950 | 951 | 952 | 953 | Show Colors 954 | C 955 | 1048576 956 | 2147483647 957 | 958 | 959 | 960 | 961 | 962 | YES 963 | YES 964 | 965 | 966 | 2147483647 967 | 968 | 969 | 970 | 971 | 972 | Copy Style 973 | c 974 | 1572864 975 | 2147483647 976 | 977 | 978 | 979 | 980 | 981 | Paste Style 982 | v 983 | 1572864 984 | 2147483647 985 | 986 | 987 | 988 | 989 | _NSFontMenu 990 | 991 | 992 | 993 | 994 | Text 995 | 996 | 2147483647 997 | 998 | 999 | submenuAction: 1000 | 1001 | Text 1002 | 1003 | 1004 | 1005 | Align Left 1006 | { 1007 | 1048576 1008 | 2147483647 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | Center 1015 | | 1016 | 1048576 1017 | 2147483647 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | Justify 1024 | 1025 | 2147483647 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | Align Right 1032 | } 1033 | 1048576 1034 | 2147483647 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | YES 1041 | YES 1042 | 1043 | 1044 | 2147483647 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | Writing Direction 1051 | 1052 | 2147483647 1053 | 1054 | 1055 | submenuAction: 1056 | 1057 | Writing Direction 1058 | 1059 | 1060 | 1061 | YES 1062 | Paragraph 1063 | 1064 | 2147483647 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | CURlZmF1bHQ 1071 | 1072 | 2147483647 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | CUxlZnQgdG8gUmlnaHQ 1079 | 1080 | 2147483647 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | CVJpZ2h0IHRvIExlZnQ 1087 | 1088 | 2147483647 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | YES 1095 | YES 1096 | 1097 | 1098 | 2147483647 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | YES 1105 | Selection 1106 | 1107 | 2147483647 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | CURlZmF1bHQ 1114 | 1115 | 2147483647 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | CUxlZnQgdG8gUmlnaHQ 1122 | 1123 | 2147483647 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | CVJpZ2h0IHRvIExlZnQ 1130 | 1131 | 2147483647 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | YES 1141 | YES 1142 | 1143 | 1144 | 2147483647 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | Show Ruler 1151 | 1152 | 2147483647 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | Copy Ruler 1159 | c 1160 | 1310720 1161 | 2147483647 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | Paste Ruler 1168 | v 1169 | 1310720 1170 | 2147483647 1171 | 1172 | 1173 | 1174 | 1175 | 1176 | 1177 | 1178 | 1179 | 1180 | 1181 | 1182 | View 1183 | 1184 | 1048576 1185 | 2147483647 1186 | 1187 | 1188 | submenuAction: 1189 | 1190 | View 1191 | 1192 | 1193 | 1194 | Show Toolbar 1195 | t 1196 | 1572864 1197 | 2147483647 1198 | 1199 | 1200 | 1201 | 1202 | 1203 | Customize Toolbar… 1204 | 1205 | 1048576 1206 | 2147483647 1207 | 1208 | 1209 | 1210 | 1211 | 1212 | 1213 | 1214 | 1215 | Window 1216 | 1217 | 1048576 1218 | 2147483647 1219 | 1220 | 1221 | submenuAction: 1222 | 1223 | Window 1224 | 1225 | 1226 | 1227 | Minimize 1228 | m 1229 | 1048576 1230 | 2147483647 1231 | 1232 | 1233 | 1234 | 1235 | 1236 | Zoom 1237 | 1238 | 1048576 1239 | 2147483647 1240 | 1241 | 1242 | 1243 | 1244 | 1245 | YES 1246 | YES 1247 | 1248 | 1249 | 1048576 1250 | 2147483647 1251 | 1252 | 1253 | 1254 | 1255 | 1256 | Bring All to Front 1257 | 1258 | 1048576 1259 | 2147483647 1260 | 1261 | 1262 | 1263 | 1264 | _NSWindowsMenu 1265 | 1266 | 1267 | 1268 | 1269 | Help 1270 | 1271 | 2147483647 1272 | 1273 | 1274 | submenuAction: 1275 | 1276 | Help 1277 | 1278 | 1279 | 1280 | Example Help 1281 | ? 1282 | 1048576 1283 | 2147483647 1284 | 1285 | 1286 | 1287 | 1288 | _NSHelpMenu 1289 | 1290 | 1291 | 1292 | _NSMainMenu 1293 | 1294 | 1295 | 7 1296 | 2 1297 | {{335, 390}, {480, 360}} 1298 | 1954021376 1299 | Example 1300 | NSWindow 1301 | 1302 | 1303 | 1304 | 1305 | 256 1306 | 1307 | 1308 | 1309 | 268 1310 | {{17, 186}, {446, 26}} 1311 | 1312 | 1313 | 1314 | _NS:1535 1315 | YES 1316 | 1317 | 68157504 1318 | 138413056 1319 | Label 1320 | 1321 | LucidaGrande 1322 | 15 1323 | 16 1324 | 1325 | _NS:1535 1326 | 1327 | 1328 | 6 1329 | System 1330 | controlColor 1331 | 1332 | 3 1333 | MC42NjY2NjY2NjY3AA 1334 | 1335 | 1336 | 1337 | 6 1338 | System 1339 | gridColor 1340 | 1341 | 3 1342 | MC41AA 1343 | 1344 | 1345 | 1346 | NO 1347 | 1348 | 1349 | {480, 360} 1350 | 1351 | 1352 | 1353 | 1354 | {{0, 0}, {2560, 1418}} 1355 | {10000000000000, 10000000000000} 1356 | YES 1357 | 1358 | 1359 | AppDelegate 1360 | 1361 | 1362 | NSFontManager 1363 | 1364 | 1365 | 1366 | 1367 | 1368 | 1369 | terminate: 1370 | 1371 | 1372 | 1373 | 449 1374 | 1375 | 1376 | 1377 | orderFrontStandardAboutPanel: 1378 | 1379 | 1380 | 1381 | 142 1382 | 1383 | 1384 | 1385 | delegate 1386 | 1387 | 1388 | 1389 | 495 1390 | 1391 | 1392 | 1393 | performMiniaturize: 1394 | 1395 | 1396 | 1397 | 37 1398 | 1399 | 1400 | 1401 | arrangeInFront: 1402 | 1403 | 1404 | 1405 | 39 1406 | 1407 | 1408 | 1409 | print: 1410 | 1411 | 1412 | 1413 | 86 1414 | 1415 | 1416 | 1417 | runPageLayout: 1418 | 1419 | 1420 | 1421 | 87 1422 | 1423 | 1424 | 1425 | clearRecentDocuments: 1426 | 1427 | 1428 | 1429 | 127 1430 | 1431 | 1432 | 1433 | performClose: 1434 | 1435 | 1436 | 1437 | 193 1438 | 1439 | 1440 | 1441 | toggleContinuousSpellChecking: 1442 | 1443 | 1444 | 1445 | 222 1446 | 1447 | 1448 | 1449 | undo: 1450 | 1451 | 1452 | 1453 | 223 1454 | 1455 | 1456 | 1457 | copy: 1458 | 1459 | 1460 | 1461 | 224 1462 | 1463 | 1464 | 1465 | checkSpelling: 1466 | 1467 | 1468 | 1469 | 225 1470 | 1471 | 1472 | 1473 | paste: 1474 | 1475 | 1476 | 1477 | 226 1478 | 1479 | 1480 | 1481 | stopSpeaking: 1482 | 1483 | 1484 | 1485 | 227 1486 | 1487 | 1488 | 1489 | cut: 1490 | 1491 | 1492 | 1493 | 228 1494 | 1495 | 1496 | 1497 | showGuessPanel: 1498 | 1499 | 1500 | 1501 | 230 1502 | 1503 | 1504 | 1505 | redo: 1506 | 1507 | 1508 | 1509 | 231 1510 | 1511 | 1512 | 1513 | selectAll: 1514 | 1515 | 1516 | 1517 | 232 1518 | 1519 | 1520 | 1521 | startSpeaking: 1522 | 1523 | 1524 | 1525 | 233 1526 | 1527 | 1528 | 1529 | delete: 1530 | 1531 | 1532 | 1533 | 235 1534 | 1535 | 1536 | 1537 | performZoom: 1538 | 1539 | 1540 | 1541 | 240 1542 | 1543 | 1544 | 1545 | performFindPanelAction: 1546 | 1547 | 1548 | 1549 | 241 1550 | 1551 | 1552 | 1553 | centerSelectionInVisibleArea: 1554 | 1555 | 1556 | 1557 | 245 1558 | 1559 | 1560 | 1561 | toggleGrammarChecking: 1562 | 1563 | 1564 | 1565 | 347 1566 | 1567 | 1568 | 1569 | toggleSmartInsertDelete: 1570 | 1571 | 1572 | 1573 | 355 1574 | 1575 | 1576 | 1577 | toggleAutomaticQuoteSubstitution: 1578 | 1579 | 1580 | 1581 | 356 1582 | 1583 | 1584 | 1585 | toggleAutomaticLinkDetection: 1586 | 1587 | 1588 | 1589 | 357 1590 | 1591 | 1592 | 1593 | saveDocument: 1594 | 1595 | 1596 | 1597 | 362 1598 | 1599 | 1600 | 1601 | revertDocumentToSaved: 1602 | 1603 | 1604 | 1605 | 364 1606 | 1607 | 1608 | 1609 | runToolbarCustomizationPalette: 1610 | 1611 | 1612 | 1613 | 365 1614 | 1615 | 1616 | 1617 | toggleToolbarShown: 1618 | 1619 | 1620 | 1621 | 366 1622 | 1623 | 1624 | 1625 | hide: 1626 | 1627 | 1628 | 1629 | 367 1630 | 1631 | 1632 | 1633 | hideOtherApplications: 1634 | 1635 | 1636 | 1637 | 368 1638 | 1639 | 1640 | 1641 | unhideAllApplications: 1642 | 1643 | 1644 | 1645 | 370 1646 | 1647 | 1648 | 1649 | newDocument: 1650 | 1651 | 1652 | 1653 | 373 1654 | 1655 | 1656 | 1657 | openDocument: 1658 | 1659 | 1660 | 1661 | 374 1662 | 1663 | 1664 | 1665 | raiseBaseline: 1666 | 1667 | 1668 | 1669 | 426 1670 | 1671 | 1672 | 1673 | lowerBaseline: 1674 | 1675 | 1676 | 1677 | 427 1678 | 1679 | 1680 | 1681 | copyFont: 1682 | 1683 | 1684 | 1685 | 428 1686 | 1687 | 1688 | 1689 | subscript: 1690 | 1691 | 1692 | 1693 | 429 1694 | 1695 | 1696 | 1697 | superscript: 1698 | 1699 | 1700 | 1701 | 430 1702 | 1703 | 1704 | 1705 | tightenKerning: 1706 | 1707 | 1708 | 1709 | 431 1710 | 1711 | 1712 | 1713 | underline: 1714 | 1715 | 1716 | 1717 | 432 1718 | 1719 | 1720 | 1721 | orderFrontColorPanel: 1722 | 1723 | 1724 | 1725 | 433 1726 | 1727 | 1728 | 1729 | useAllLigatures: 1730 | 1731 | 1732 | 1733 | 434 1734 | 1735 | 1736 | 1737 | loosenKerning: 1738 | 1739 | 1740 | 1741 | 435 1742 | 1743 | 1744 | 1745 | pasteFont: 1746 | 1747 | 1748 | 1749 | 436 1750 | 1751 | 1752 | 1753 | unscript: 1754 | 1755 | 1756 | 1757 | 437 1758 | 1759 | 1760 | 1761 | useStandardKerning: 1762 | 1763 | 1764 | 1765 | 438 1766 | 1767 | 1768 | 1769 | useStandardLigatures: 1770 | 1771 | 1772 | 1773 | 439 1774 | 1775 | 1776 | 1777 | turnOffLigatures: 1778 | 1779 | 1780 | 1781 | 440 1782 | 1783 | 1784 | 1785 | turnOffKerning: 1786 | 1787 | 1788 | 1789 | 441 1790 | 1791 | 1792 | 1793 | toggleAutomaticSpellingCorrection: 1794 | 1795 | 1796 | 1797 | 456 1798 | 1799 | 1800 | 1801 | orderFrontSubstitutionsPanel: 1802 | 1803 | 1804 | 1805 | 458 1806 | 1807 | 1808 | 1809 | toggleAutomaticDashSubstitution: 1810 | 1811 | 1812 | 1813 | 461 1814 | 1815 | 1816 | 1817 | toggleAutomaticTextReplacement: 1818 | 1819 | 1820 | 1821 | 463 1822 | 1823 | 1824 | 1825 | uppercaseWord: 1826 | 1827 | 1828 | 1829 | 464 1830 | 1831 | 1832 | 1833 | capitalizeWord: 1834 | 1835 | 1836 | 1837 | 467 1838 | 1839 | 1840 | 1841 | lowercaseWord: 1842 | 1843 | 1844 | 1845 | 468 1846 | 1847 | 1848 | 1849 | pasteAsPlainText: 1850 | 1851 | 1852 | 1853 | 486 1854 | 1855 | 1856 | 1857 | performFindPanelAction: 1858 | 1859 | 1860 | 1861 | 487 1862 | 1863 | 1864 | 1865 | performFindPanelAction: 1866 | 1867 | 1868 | 1869 | 488 1870 | 1871 | 1872 | 1873 | performFindPanelAction: 1874 | 1875 | 1876 | 1877 | 489 1878 | 1879 | 1880 | 1881 | showHelp: 1882 | 1883 | 1884 | 1885 | 493 1886 | 1887 | 1888 | 1889 | alignCenter: 1890 | 1891 | 1892 | 1893 | 518 1894 | 1895 | 1896 | 1897 | pasteRuler: 1898 | 1899 | 1900 | 1901 | 519 1902 | 1903 | 1904 | 1905 | toggleRuler: 1906 | 1907 | 1908 | 1909 | 520 1910 | 1911 | 1912 | 1913 | alignRight: 1914 | 1915 | 1916 | 1917 | 521 1918 | 1919 | 1920 | 1921 | copyRuler: 1922 | 1923 | 1924 | 1925 | 522 1926 | 1927 | 1928 | 1929 | alignJustified: 1930 | 1931 | 1932 | 1933 | 523 1934 | 1935 | 1936 | 1937 | alignLeft: 1938 | 1939 | 1940 | 1941 | 524 1942 | 1943 | 1944 | 1945 | makeBaseWritingDirectionNatural: 1946 | 1947 | 1948 | 1949 | 525 1950 | 1951 | 1952 | 1953 | makeBaseWritingDirectionLeftToRight: 1954 | 1955 | 1956 | 1957 | 526 1958 | 1959 | 1960 | 1961 | makeBaseWritingDirectionRightToLeft: 1962 | 1963 | 1964 | 1965 | 527 1966 | 1967 | 1968 | 1969 | makeTextWritingDirectionNatural: 1970 | 1971 | 1972 | 1973 | 528 1974 | 1975 | 1976 | 1977 | makeTextWritingDirectionLeftToRight: 1978 | 1979 | 1980 | 1981 | 529 1982 | 1983 | 1984 | 1985 | makeTextWritingDirectionRightToLeft: 1986 | 1987 | 1988 | 1989 | 530 1990 | 1991 | 1992 | 1993 | performFindPanelAction: 1994 | 1995 | 1996 | 1997 | 535 1998 | 1999 | 2000 | 2001 | addFontTrait: 2002 | 2003 | 2004 | 2005 | 421 2006 | 2007 | 2008 | 2009 | addFontTrait: 2010 | 2011 | 2012 | 2013 | 422 2014 | 2015 | 2016 | 2017 | modifyFont: 2018 | 2019 | 2020 | 2021 | 423 2022 | 2023 | 2024 | 2025 | orderFrontFontPanel: 2026 | 2027 | 2028 | 2029 | 424 2030 | 2031 | 2032 | 2033 | modifyFont: 2034 | 2035 | 2036 | 2037 | 425 2038 | 2039 | 2040 | 2041 | window 2042 | 2043 | 2044 | 2045 | 532 2046 | 2047 | 2048 | 2049 | label 2050 | 2051 | 2052 | 2053 | 553 2054 | 2055 | 2056 | 2057 | 2058 | 2059 | 0 2060 | 2061 | 2062 | 2063 | 2064 | 2065 | -2 2066 | 2067 | 2068 | File's Owner 2069 | 2070 | 2071 | -1 2072 | 2073 | 2074 | First Responder 2075 | 2076 | 2077 | -3 2078 | 2079 | 2080 | Application 2081 | 2082 | 2083 | 29 2084 | 2085 | 2086 | 2087 | 2088 | 2089 | 2090 | 2091 | 2092 | 2093 | 2094 | 2095 | 2096 | 2097 | 19 2098 | 2099 | 2100 | 2101 | 2102 | 2103 | 2104 | 2105 | 56 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 2112 | 2113 | 217 2114 | 2115 | 2116 | 2117 | 2118 | 2119 | 2120 | 2121 | 83 2122 | 2123 | 2124 | 2125 | 2126 | 2127 | 2128 | 2129 | 81 2130 | 2131 | 2132 | 2133 | 2134 | 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 2144 | 2145 | 2146 | 75 2147 | 2148 | 2149 | 2150 | 2151 | 78 2152 | 2153 | 2154 | 2155 | 2156 | 72 2157 | 2158 | 2159 | 2160 | 2161 | 82 2162 | 2163 | 2164 | 2165 | 2166 | 124 2167 | 2168 | 2169 | 2170 | 2171 | 2172 | 2173 | 2174 | 77 2175 | 2176 | 2177 | 2178 | 2179 | 73 2180 | 2181 | 2182 | 2183 | 2184 | 79 2185 | 2186 | 2187 | 2188 | 2189 | 112 2190 | 2191 | 2192 | 2193 | 2194 | 74 2195 | 2196 | 2197 | 2198 | 2199 | 125 2200 | 2201 | 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 126 2208 | 2209 | 2210 | 2211 | 2212 | 205 2213 | 2214 | 2215 | 2216 | 2217 | 2218 | 2219 | 2220 | 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 2227 | 2228 | 2229 | 2230 | 2231 | 2232 | 2233 | 2234 | 202 2235 | 2236 | 2237 | 2238 | 2239 | 198 2240 | 2241 | 2242 | 2243 | 2244 | 207 2245 | 2246 | 2247 | 2248 | 2249 | 214 2250 | 2251 | 2252 | 2253 | 2254 | 199 2255 | 2256 | 2257 | 2258 | 2259 | 203 2260 | 2261 | 2262 | 2263 | 2264 | 197 2265 | 2266 | 2267 | 2268 | 2269 | 206 2270 | 2271 | 2272 | 2273 | 2274 | 215 2275 | 2276 | 2277 | 2278 | 2279 | 218 2280 | 2281 | 2282 | 2283 | 2284 | 2285 | 2286 | 2287 | 216 2288 | 2289 | 2290 | 2291 | 2292 | 2293 | 2294 | 2295 | 200 2296 | 2297 | 2298 | 2299 | 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 219 2309 | 2310 | 2311 | 2312 | 2313 | 201 2314 | 2315 | 2316 | 2317 | 2318 | 204 2319 | 2320 | 2321 | 2322 | 2323 | 220 2324 | 2325 | 2326 | 2327 | 2328 | 2329 | 2330 | 2331 | 2332 | 2333 | 2334 | 2335 | 2336 | 213 2337 | 2338 | 2339 | 2340 | 2341 | 210 2342 | 2343 | 2344 | 2345 | 2346 | 221 2347 | 2348 | 2349 | 2350 | 2351 | 208 2352 | 2353 | 2354 | 2355 | 2356 | 209 2357 | 2358 | 2359 | 2360 | 2361 | 57 2362 | 2363 | 2364 | 2365 | 2366 | 2367 | 2368 | 2369 | 2370 | 2371 | 2372 | 2373 | 2374 | 2375 | 2376 | 2377 | 2378 | 2379 | 58 2380 | 2381 | 2382 | 2383 | 2384 | 134 2385 | 2386 | 2387 | 2388 | 2389 | 150 2390 | 2391 | 2392 | 2393 | 2394 | 136 2395 | 2396 | 2397 | 2398 | 2399 | 144 2400 | 2401 | 2402 | 2403 | 2404 | 129 2405 | 2406 | 2407 | 2408 | 2409 | 143 2410 | 2411 | 2412 | 2413 | 2414 | 236 2415 | 2416 | 2417 | 2418 | 2419 | 131 2420 | 2421 | 2422 | 2423 | 2424 | 2425 | 2426 | 2427 | 149 2428 | 2429 | 2430 | 2431 | 2432 | 145 2433 | 2434 | 2435 | 2436 | 2437 | 130 2438 | 2439 | 2440 | 2441 | 2442 | 24 2443 | 2444 | 2445 | 2446 | 2447 | 2448 | 2449 | 2450 | 2451 | 2452 | 2453 | 92 2454 | 2455 | 2456 | 2457 | 2458 | 5 2459 | 2460 | 2461 | 2462 | 2463 | 239 2464 | 2465 | 2466 | 2467 | 2468 | 23 2469 | 2470 | 2471 | 2472 | 2473 | 295 2474 | 2475 | 2476 | 2477 | 2478 | 2479 | 2480 | 2481 | 296 2482 | 2483 | 2484 | 2485 | 2486 | 2487 | 2488 | 2489 | 2490 | 297 2491 | 2492 | 2493 | 2494 | 2495 | 298 2496 | 2497 | 2498 | 2499 | 2500 | 211 2501 | 2502 | 2503 | 2504 | 2505 | 2506 | 2507 | 2508 | 212 2509 | 2510 | 2511 | 2512 | 2513 | 2514 | 2515 | 2516 | 2517 | 195 2518 | 2519 | 2520 | 2521 | 2522 | 196 2523 | 2524 | 2525 | 2526 | 2527 | 346 2528 | 2529 | 2530 | 2531 | 2532 | 348 2533 | 2534 | 2535 | 2536 | 2537 | 2538 | 2539 | 2540 | 349 2541 | 2542 | 2543 | 2544 | 2545 | 2546 | 2547 | 2548 | 2549 | 2550 | 2551 | 2552 | 2553 | 2554 | 350 2555 | 2556 | 2557 | 2558 | 2559 | 351 2560 | 2561 | 2562 | 2563 | 2564 | 354 2565 | 2566 | 2567 | 2568 | 2569 | 371 2570 | 2571 | 2572 | 2573 | 2574 | 2575 | 2576 | 2577 | 372 2578 | 2579 | 2580 | 2581 | 2582 | 2583 | 2584 | 2585 | 375 2586 | 2587 | 2588 | 2589 | 2590 | 2591 | 2592 | 2593 | 376 2594 | 2595 | 2596 | 2597 | 2598 | 2599 | 2600 | 2601 | 2602 | 377 2603 | 2604 | 2605 | 2606 | 2607 | 2608 | 2609 | 2610 | 388 2611 | 2612 | 2613 | 2614 | 2615 | 2616 | 2617 | 2618 | 2619 | 2620 | 2621 | 2622 | 2623 | 2624 | 2625 | 2626 | 2627 | 2628 | 2629 | 2630 | 2631 | 2632 | 2633 | 389 2634 | 2635 | 2636 | 2637 | 2638 | 390 2639 | 2640 | 2641 | 2642 | 2643 | 391 2644 | 2645 | 2646 | 2647 | 2648 | 392 2649 | 2650 | 2651 | 2652 | 2653 | 393 2654 | 2655 | 2656 | 2657 | 2658 | 394 2659 | 2660 | 2661 | 2662 | 2663 | 395 2664 | 2665 | 2666 | 2667 | 2668 | 396 2669 | 2670 | 2671 | 2672 | 2673 | 397 2674 | 2675 | 2676 | 2677 | 2678 | 2679 | 2680 | 2681 | 398 2682 | 2683 | 2684 | 2685 | 2686 | 2687 | 2688 | 2689 | 399 2690 | 2691 | 2692 | 2693 | 2694 | 2695 | 2696 | 2697 | 400 2698 | 2699 | 2700 | 2701 | 2702 | 401 2703 | 2704 | 2705 | 2706 | 2707 | 402 2708 | 2709 | 2710 | 2711 | 2712 | 403 2713 | 2714 | 2715 | 2716 | 2717 | 404 2718 | 2719 | 2720 | 2721 | 2722 | 405 2723 | 2724 | 2725 | 2726 | 2727 | 2728 | 2729 | 2730 | 2731 | 2732 | 2733 | 2734 | 406 2735 | 2736 | 2737 | 2738 | 2739 | 407 2740 | 2741 | 2742 | 2743 | 2744 | 408 2745 | 2746 | 2747 | 2748 | 2749 | 409 2750 | 2751 | 2752 | 2753 | 2754 | 410 2755 | 2756 | 2757 | 2758 | 2759 | 411 2760 | 2761 | 2762 | 2763 | 2764 | 2765 | 2766 | 2767 | 2768 | 2769 | 412 2770 | 2771 | 2772 | 2773 | 2774 | 413 2775 | 2776 | 2777 | 2778 | 2779 | 414 2780 | 2781 | 2782 | 2783 | 2784 | 415 2785 | 2786 | 2787 | 2788 | 2789 | 2790 | 2791 | 2792 | 2793 | 2794 | 2795 | 416 2796 | 2797 | 2798 | 2799 | 2800 | 417 2801 | 2802 | 2803 | 2804 | 2805 | 418 2806 | 2807 | 2808 | 2809 | 2810 | 419 2811 | 2812 | 2813 | 2814 | 2815 | 420 2816 | 2817 | 2818 | 2819 | 2820 | 450 2821 | 2822 | 2823 | 2824 | 2825 | 2826 | 2827 | 2828 | 451 2829 | 2830 | 2831 | 2832 | 2833 | 2834 | 2835 | 2836 | 2837 | 2838 | 452 2839 | 2840 | 2841 | 2842 | 2843 | 453 2844 | 2845 | 2846 | 2847 | 2848 | 454 2849 | 2850 | 2851 | 2852 | 2853 | 457 2854 | 2855 | 2856 | 2857 | 2858 | 459 2859 | 2860 | 2861 | 2862 | 2863 | 460 2864 | 2865 | 2866 | 2867 | 2868 | 462 2869 | 2870 | 2871 | 2872 | 2873 | 465 2874 | 2875 | 2876 | 2877 | 2878 | 466 2879 | 2880 | 2881 | 2882 | 2883 | 485 2884 | 2885 | 2886 | 2887 | 2888 | 490 2889 | 2890 | 2891 | 2892 | 2893 | 2894 | 2895 | 2896 | 491 2897 | 2898 | 2899 | 2900 | 2901 | 2902 | 2903 | 2904 | 492 2905 | 2906 | 2907 | 2908 | 2909 | 494 2910 | 2911 | 2912 | 2913 | 2914 | 496 2915 | 2916 | 2917 | 2918 | 2919 | 2920 | 2921 | 2922 | 497 2923 | 2924 | 2925 | 2926 | 2927 | 2928 | 2929 | 2930 | 2931 | 2932 | 2933 | 2934 | 2935 | 2936 | 2937 | 2938 | 2939 | 498 2940 | 2941 | 2942 | 2943 | 2944 | 499 2945 | 2946 | 2947 | 2948 | 2949 | 500 2950 | 2951 | 2952 | 2953 | 2954 | 501 2955 | 2956 | 2957 | 2958 | 2959 | 502 2960 | 2961 | 2962 | 2963 | 2964 | 503 2965 | 2966 | 2967 | 2968 | 2969 | 2970 | 2971 | 2972 | 504 2973 | 2974 | 2975 | 2976 | 2977 | 505 2978 | 2979 | 2980 | 2981 | 2982 | 506 2983 | 2984 | 2985 | 2986 | 2987 | 507 2988 | 2989 | 2990 | 2991 | 2992 | 508 2993 | 2994 | 2995 | 2996 | 2997 | 2998 | 2999 | 3000 | 3001 | 3002 | 3003 | 3004 | 3005 | 3006 | 3007 | 3008 | 509 3009 | 3010 | 3011 | 3012 | 3013 | 510 3014 | 3015 | 3016 | 3017 | 3018 | 511 3019 | 3020 | 3021 | 3022 | 3023 | 512 3024 | 3025 | 3026 | 3027 | 3028 | 513 3029 | 3030 | 3031 | 3032 | 3033 | 514 3034 | 3035 | 3036 | 3037 | 3038 | 515 3039 | 3040 | 3041 | 3042 | 3043 | 516 3044 | 3045 | 3046 | 3047 | 3048 | 517 3049 | 3050 | 3051 | 3052 | 3053 | 534 3054 | 3055 | 3056 | 3057 | 3058 | 550 3059 | 3060 | 3061 | 3062 | 3063 | 3064 | 3065 | 3066 | 551 3067 | 3068 | 3069 | 3070 | 3071 | 3072 | 3073 | com.apple.InterfaceBuilder.CocoaPlugin 3074 | com.apple.InterfaceBuilder.CocoaPlugin 3075 | com.apple.InterfaceBuilder.CocoaPlugin 3076 | com.apple.InterfaceBuilder.CocoaPlugin 3077 | com.apple.InterfaceBuilder.CocoaPlugin 3078 | com.apple.InterfaceBuilder.CocoaPlugin 3079 | com.apple.InterfaceBuilder.CocoaPlugin 3080 | com.apple.InterfaceBuilder.CocoaPlugin 3081 | com.apple.InterfaceBuilder.CocoaPlugin 3082 | com.apple.InterfaceBuilder.CocoaPlugin 3083 | com.apple.InterfaceBuilder.CocoaPlugin 3084 | com.apple.InterfaceBuilder.CocoaPlugin 3085 | com.apple.InterfaceBuilder.CocoaPlugin 3086 | com.apple.InterfaceBuilder.CocoaPlugin 3087 | com.apple.InterfaceBuilder.CocoaPlugin 3088 | com.apple.InterfaceBuilder.CocoaPlugin 3089 | com.apple.InterfaceBuilder.CocoaPlugin 3090 | com.apple.InterfaceBuilder.CocoaPlugin 3091 | com.apple.InterfaceBuilder.CocoaPlugin 3092 | com.apple.InterfaceBuilder.CocoaPlugin 3093 | com.apple.InterfaceBuilder.CocoaPlugin 3094 | com.apple.InterfaceBuilder.CocoaPlugin 3095 | com.apple.InterfaceBuilder.CocoaPlugin 3096 | com.apple.InterfaceBuilder.CocoaPlugin 3097 | com.apple.InterfaceBuilder.CocoaPlugin 3098 | com.apple.InterfaceBuilder.CocoaPlugin 3099 | com.apple.InterfaceBuilder.CocoaPlugin 3100 | com.apple.InterfaceBuilder.CocoaPlugin 3101 | com.apple.InterfaceBuilder.CocoaPlugin 3102 | com.apple.InterfaceBuilder.CocoaPlugin 3103 | com.apple.InterfaceBuilder.CocoaPlugin 3104 | com.apple.InterfaceBuilder.CocoaPlugin 3105 | com.apple.InterfaceBuilder.CocoaPlugin 3106 | com.apple.InterfaceBuilder.CocoaPlugin 3107 | com.apple.InterfaceBuilder.CocoaPlugin 3108 | com.apple.InterfaceBuilder.CocoaPlugin 3109 | com.apple.InterfaceBuilder.CocoaPlugin 3110 | com.apple.InterfaceBuilder.CocoaPlugin 3111 | com.apple.InterfaceBuilder.CocoaPlugin 3112 | com.apple.InterfaceBuilder.CocoaPlugin 3113 | com.apple.InterfaceBuilder.CocoaPlugin 3114 | com.apple.InterfaceBuilder.CocoaPlugin 3115 | com.apple.InterfaceBuilder.CocoaPlugin 3116 | com.apple.InterfaceBuilder.CocoaPlugin 3117 | com.apple.InterfaceBuilder.CocoaPlugin 3118 | com.apple.InterfaceBuilder.CocoaPlugin 3119 | com.apple.InterfaceBuilder.CocoaPlugin 3120 | com.apple.InterfaceBuilder.CocoaPlugin 3121 | com.apple.InterfaceBuilder.CocoaPlugin 3122 | com.apple.InterfaceBuilder.CocoaPlugin 3123 | com.apple.InterfaceBuilder.CocoaPlugin 3124 | com.apple.InterfaceBuilder.CocoaPlugin 3125 | com.apple.InterfaceBuilder.CocoaPlugin 3126 | com.apple.InterfaceBuilder.CocoaPlugin 3127 | com.apple.InterfaceBuilder.CocoaPlugin 3128 | com.apple.InterfaceBuilder.CocoaPlugin 3129 | com.apple.InterfaceBuilder.CocoaPlugin 3130 | com.apple.InterfaceBuilder.CocoaPlugin 3131 | com.apple.InterfaceBuilder.CocoaPlugin 3132 | com.apple.InterfaceBuilder.CocoaPlugin 3133 | com.apple.InterfaceBuilder.CocoaPlugin 3134 | {{380, 496}, {480, 360}} 3135 | 3136 | com.apple.InterfaceBuilder.CocoaPlugin 3137 | com.apple.InterfaceBuilder.CocoaPlugin 3138 | com.apple.InterfaceBuilder.CocoaPlugin 3139 | com.apple.InterfaceBuilder.CocoaPlugin 3140 | com.apple.InterfaceBuilder.CocoaPlugin 3141 | com.apple.InterfaceBuilder.CocoaPlugin 3142 | com.apple.InterfaceBuilder.CocoaPlugin 3143 | com.apple.InterfaceBuilder.CocoaPlugin 3144 | com.apple.InterfaceBuilder.CocoaPlugin 3145 | com.apple.InterfaceBuilder.CocoaPlugin 3146 | com.apple.InterfaceBuilder.CocoaPlugin 3147 | com.apple.InterfaceBuilder.CocoaPlugin 3148 | com.apple.InterfaceBuilder.CocoaPlugin 3149 | com.apple.InterfaceBuilder.CocoaPlugin 3150 | com.apple.InterfaceBuilder.CocoaPlugin 3151 | com.apple.InterfaceBuilder.CocoaPlugin 3152 | com.apple.InterfaceBuilder.CocoaPlugin 3153 | com.apple.InterfaceBuilder.CocoaPlugin 3154 | com.apple.InterfaceBuilder.CocoaPlugin 3155 | com.apple.InterfaceBuilder.CocoaPlugin 3156 | com.apple.InterfaceBuilder.CocoaPlugin 3157 | com.apple.InterfaceBuilder.CocoaPlugin 3158 | com.apple.InterfaceBuilder.CocoaPlugin 3159 | com.apple.InterfaceBuilder.CocoaPlugin 3160 | com.apple.InterfaceBuilder.CocoaPlugin 3161 | com.apple.InterfaceBuilder.CocoaPlugin 3162 | com.apple.InterfaceBuilder.CocoaPlugin 3163 | com.apple.InterfaceBuilder.CocoaPlugin 3164 | com.apple.InterfaceBuilder.CocoaPlugin 3165 | com.apple.InterfaceBuilder.CocoaPlugin 3166 | com.apple.InterfaceBuilder.CocoaPlugin 3167 | com.apple.InterfaceBuilder.CocoaPlugin 3168 | com.apple.InterfaceBuilder.CocoaPlugin 3169 | com.apple.InterfaceBuilder.CocoaPlugin 3170 | com.apple.InterfaceBuilder.CocoaPlugin 3171 | com.apple.InterfaceBuilder.CocoaPlugin 3172 | com.apple.InterfaceBuilder.CocoaPlugin 3173 | com.apple.InterfaceBuilder.CocoaPlugin 3174 | com.apple.InterfaceBuilder.CocoaPlugin 3175 | com.apple.InterfaceBuilder.CocoaPlugin 3176 | com.apple.InterfaceBuilder.CocoaPlugin 3177 | com.apple.InterfaceBuilder.CocoaPlugin 3178 | com.apple.InterfaceBuilder.CocoaPlugin 3179 | com.apple.InterfaceBuilder.CocoaPlugin 3180 | com.apple.InterfaceBuilder.CocoaPlugin 3181 | com.apple.InterfaceBuilder.CocoaPlugin 3182 | com.apple.InterfaceBuilder.CocoaPlugin 3183 | com.apple.InterfaceBuilder.CocoaPlugin 3184 | com.apple.InterfaceBuilder.CocoaPlugin 3185 | com.apple.InterfaceBuilder.CocoaPlugin 3186 | com.apple.InterfaceBuilder.CocoaPlugin 3187 | com.apple.InterfaceBuilder.CocoaPlugin 3188 | com.apple.InterfaceBuilder.CocoaPlugin 3189 | com.apple.InterfaceBuilder.CocoaPlugin 3190 | com.apple.InterfaceBuilder.CocoaPlugin 3191 | com.apple.InterfaceBuilder.CocoaPlugin 3192 | com.apple.InterfaceBuilder.CocoaPlugin 3193 | com.apple.InterfaceBuilder.CocoaPlugin 3194 | com.apple.InterfaceBuilder.CocoaPlugin 3195 | com.apple.InterfaceBuilder.CocoaPlugin 3196 | com.apple.InterfaceBuilder.CocoaPlugin 3197 | com.apple.InterfaceBuilder.CocoaPlugin 3198 | com.apple.InterfaceBuilder.CocoaPlugin 3199 | com.apple.InterfaceBuilder.CocoaPlugin 3200 | com.apple.InterfaceBuilder.CocoaPlugin 3201 | com.apple.InterfaceBuilder.CocoaPlugin 3202 | com.apple.InterfaceBuilder.CocoaPlugin 3203 | com.apple.InterfaceBuilder.CocoaPlugin 3204 | com.apple.InterfaceBuilder.CocoaPlugin 3205 | com.apple.InterfaceBuilder.CocoaPlugin 3206 | com.apple.InterfaceBuilder.CocoaPlugin 3207 | com.apple.InterfaceBuilder.CocoaPlugin 3208 | com.apple.InterfaceBuilder.CocoaPlugin 3209 | com.apple.InterfaceBuilder.CocoaPlugin 3210 | com.apple.InterfaceBuilder.CocoaPlugin 3211 | com.apple.InterfaceBuilder.CocoaPlugin 3212 | com.apple.InterfaceBuilder.CocoaPlugin 3213 | com.apple.InterfaceBuilder.CocoaPlugin 3214 | com.apple.InterfaceBuilder.CocoaPlugin 3215 | com.apple.InterfaceBuilder.CocoaPlugin 3216 | com.apple.InterfaceBuilder.CocoaPlugin 3217 | com.apple.InterfaceBuilder.CocoaPlugin 3218 | com.apple.InterfaceBuilder.CocoaPlugin 3219 | com.apple.InterfaceBuilder.CocoaPlugin 3220 | com.apple.InterfaceBuilder.CocoaPlugin 3221 | com.apple.InterfaceBuilder.CocoaPlugin 3222 | com.apple.InterfaceBuilder.CocoaPlugin 3223 | com.apple.InterfaceBuilder.CocoaPlugin 3224 | com.apple.InterfaceBuilder.CocoaPlugin 3225 | com.apple.InterfaceBuilder.CocoaPlugin 3226 | com.apple.InterfaceBuilder.CocoaPlugin 3227 | com.apple.InterfaceBuilder.CocoaPlugin 3228 | com.apple.InterfaceBuilder.CocoaPlugin 3229 | 3230 | 3231 | 3232 | 3233 | 3234 | 554 3235 | 3236 | 3237 | 3238 | 3239 | AppDelegate 3240 | NSObject 3241 | 3242 | NSTextField 3243 | TestView 3244 | NSWindow 3245 | 3246 | 3247 | 3248 | label 3249 | NSTextField 3250 | 3251 | 3252 | testView 3253 | TestView 3254 | 3255 | 3256 | window 3257 | NSWindow 3258 | 3259 | 3260 | 3261 | IBProjectSource 3262 | ./Classes/AppDelegate.h 3263 | 3264 | 3265 | 3266 | NSDocument 3267 | 3268 | id 3269 | id 3270 | id 3271 | id 3272 | id 3273 | id 3274 | 3275 | 3276 | 3277 | printDocument: 3278 | id 3279 | 3280 | 3281 | revertDocumentToSaved: 3282 | id 3283 | 3284 | 3285 | runPageLayout: 3286 | id 3287 | 3288 | 3289 | saveDocument: 3290 | id 3291 | 3292 | 3293 | saveDocumentAs: 3294 | id 3295 | 3296 | 3297 | saveDocumentTo: 3298 | id 3299 | 3300 | 3301 | 3302 | IBProjectSource 3303 | ./Classes/NSDocument.h 3304 | 3305 | 3306 | 3307 | TestView 3308 | NSView 3309 | 3310 | IBProjectSource 3311 | ./Classes/TestView.h 3312 | 3313 | 3314 | 3315 | 3316 | 0 3317 | IBCocoaFramework 3318 | YES 3319 | 3 3320 | 3321 | {11, 11} 3322 | {10, 3} 3323 | 3324 | 3325 | 3326 | -------------------------------------------------------------------------------- /Example/Example/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Example 4 | // 5 | // Created by Heiko Dreyer on 27.07.12. 6 | // Copyright (c) 2012 boxedfolder.com. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | return NSApplicationMain(argc, (const char **)argv); 14 | } 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BFPageControl is licensed under MIT License. 2 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 3 | 4 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 5 | 6 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Readme 2 | 3 | This is a page control for Mac OS X. Most of the methods are derived from the UIPageControl class in iOS. 4 | 5 | --- 6 | 7 | ### Screenshot 8 | 9 | ![BFPageControl](https://github.com/bfolder/BFPageControl/raw/master/screenshot.png) 10 | 11 | ### Installation 12 | 13 | Include all files manually or add the following to your podfile: 14 | 15 | ```Ruby 16 | pod 'BFPageControl' 17 | ``` 18 | 19 | ### How it works 20 | 21 | BFPageControl is an NSView subclass. Just add it somewhere to your view hierarchy. Look at the example for a quick setup. 22 | 23 | --- 24 | ### Licensing 25 | 26 | BFPageControl is licensed under MIT License. 27 | Permission is hereby granted, free of charge, to any person obtaining a copy 28 | of this software and associated documentation files (the "Software"), to deal 29 | in the Software without restriction, including without limitation the rights 30 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 31 | copies of the Software, and to permit persons to whom the Software is 32 | furnished to do so, subject to the following conditions: 33 | 34 | The above copyright notice and this permission notice shall be included in 35 | all copies or substantial portions of the Software. 36 | 37 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 38 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 39 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 40 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 41 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 42 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 43 | THE SOFTWARE. -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bfolder/BFPageControl/39ba23b3b613a68c2b83b35d56ef02facf843132/screenshot.png --------------------------------------------------------------------------------