Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

merging upstrream

  • Loading branch information...
commit cef8e1bf081ac0ee8656451238d9a5d6f00a8c40 2 parents 41f4d8d + 57a6f05
@mralexgray authored
Showing with 8,178 additions and 2,652 deletions.
  1. +22 −0 CONTRIBUTING.md
  2. 0  ExampleProject/Example/Example-Info.plist
  3. 0  ExampleProject/Example/Example-Prefix.pch
  4. 0  ExampleProject/Example/ExampleAppDelegate.h
  5. 0  ExampleProject/Example/ExampleAppDelegate.m
  6. +2 −2 ExampleProject/Example/ExampleScrollView.h
  7. +2 −2 ExampleProject/Example/ExampleScrollView.m
  8. 0  ExampleProject/Example/ExampleSectionHeaderView.h
  9. +8 −0 ExampleProject/Example/ExampleSectionHeaderView.m
  10. +6 −9 ExampleProject/Example/ExampleTabBar.h
  11. +154 −46 ExampleProject/Example/ExampleTabBar.m
  12. +16 −0 ExampleProject/Example/ExampleTableViewController.h
  13. +228 −0 ExampleProject/Example/ExampleTableViewController.m
  14. 0  ExampleProject/Example/clock.png
  15. 0  ExampleProject/Example/clock@2x.png
  16. 0  ExampleProject/Example/en.lproj/Credits.rtf
  17. 0  ExampleProject/Example/en.lproj/InfoPlist.strings
  18. +23 −71 ExampleProject/Example/en.lproj/MainMenu.xib
  19. 0  ExampleProject/Example/large-image.jpeg
  20. +0 −8 ExampleProject/Example/main.m
  21. +62 −0 LICENSE.md
  22. +0 −27 LICENSE.txt
  23. +7 −8 README.md
  24. +31 −0 TwUI-cop.podspec
  25. +168 −81 TwUI.xcodeproj/project.pbxproj
  26. 0  TwUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata
  27. 0  TwUI.xcodeproj/xcshareddata/xcschemes/Dynamic Library.xcscheme
  28. 0  TwUI.xcodeproj/xcshareddata/xcschemes/Static Library.xcscheme
  29. 0  TwUI.xcodeproj/xcshareddata/xcschemes/TwUI.xcscheme
  30. +2 −2 lib/Support/ABActiveRange.h
  31. +1 −1  lib/Support/ABActiveRange.m
  32. +4 −6 lib/Support/CoreText+Additions.h
  33. +38 −5 lib/Support/CoreText+Additions.m
  34. +11 −1 lib/UIKit/{TUIKit.m → NSAffineTransform+TUIExtensions.h}
  35. +50 −0 lib/UIKit/NSAffineTransform+TUIExtensions.m
  36. +44 −0 lib/UIKit/NSBezierPath+TUIExtensions.h
  37. +230 −0 lib/UIKit/NSBezierPath+TUIExtensions.m
  38. +13 −1 lib/UIKit/NSColor+TUIExtensions.m
  39. +5 −2 lib/UIKit/{TUIView+NSTextInputClient.m → NSShadow+TUIExtensions.h}
  40. +11 −2 lib/UIKit/{TUIView+NSTextInputClient.h → NSShadow+TUIExtensions.m}
  41. +34 −9 lib/UIKit/TUIActivityIndicatorView.h
  42. +121 −51 lib/UIKit/TUIActivityIndicatorView.m
  43. +9 −14 lib/UIKit/TUIAttributedString.h
  44. +0 −13 lib/UIKit/TUIAttributedString.m
  45. +0 −172 lib/UIKit/TUIButton+Content.m
  46. +187 −48 lib/UIKit/TUIButton.h
  47. +547 −181 lib/UIKit/TUIButton.m
  48. +12 −13 lib/UIKit/TUICGAdditions.h
  49. +12 −11 lib/UIKit/TUICGAdditions.m
  50. +51 −0 lib/UIKit/TUICarouselNavigationController.h
  51. +389 −0 lib/UIKit/TUICarouselNavigationController.m
  52. +0 −16 lib/UIKit/TUIControl+Private.h
  53. +0 −23 lib/UIKit/TUIControl+Private.m
  54. +0 −149 lib/UIKit/TUIControl+TargetAction.m
  55. +259 −46 lib/UIKit/TUIControl.h
  56. +330 −106 lib/UIKit/TUIControl.m
  57. +29 −17 lib/UIKit/TUIGeometry.h
  58. +31 −1 lib/UIKit/TUIGeometry.m
  59. +9 −4 lib/UIKit/TUIKit.h
  60. +1 −0  lib/UIKit/TUILabel.m
  61. +1 −1  lib/UIKit/TUILayoutConstraint.h
  62. +1 −0  lib/UIKit/TUILayoutManager.h
  63. +10 −0 lib/UIKit/TUILayoutManager.m
  64. +10 −15 lib/UIKit/TUINSView+Private.h
  65. +1 −4 lib/UIKit/TUINSView.h
  66. +204 −155 lib/UIKit/TUINSView.m
  67. +50 −0 lib/UIKit/TUINavigationController.h
  68. +451 −0 lib/UIKit/TUINavigationController.m
  69. +5 −8 lib/UIKit/TUIPopover.h
  70. +91 −102 lib/UIKit/TUIPopover.m
  71. +3 −6 lib/UIKit/TUIProgressBar.h
  72. +1 −1  lib/UIKit/TUIProgressBar.m
  73. +0 −248 lib/UIKit/TUIScrollKnob.m
  74. +28 −0 lib/UIKit/TUIScrollView+Private.h
  75. +53 −46 lib/UIKit/TUIScrollView.h
  76. +571 −388 lib/UIKit/TUIScrollView.m
  77. +8 −20 lib/UIKit/{TUIScrollKnob.h → TUIScroller.h}
  78. +490 −0 lib/UIKit/TUIScroller.m
  79. +79 −0 lib/UIKit/TUISlider.h
  80. +221 −0 lib/UIKit/TUISlider.m
  81. +1 −1  lib/UIKit/TUIStretchableImage.m
  82. +0 −17 lib/UIKit/TUIStyledView.h
  83. +0 −40 lib/UIKit/TUIStyledView.m
  84. +31 −0 lib/UIKit/TUITableOutlineView.h
  85. +565 −0 lib/UIKit/TUITableOutlineView.m
  86. +2 −0  lib/UIKit/TUITableView+Additions.h
  87. +10 −0 lib/UIKit/TUITableView+Additions.m
  88. +8 −0 lib/UIKit/TUITableView+Cell.m
  89. +24 −9 lib/UIKit/TUITableView.h
  90. +510 −193 lib/UIKit/TUITableView.m
  91. +7 −0 lib/UIKit/TUITableViewCell+Private.h
  92. +161 −20 lib/UIKit/TUITableViewCell.h
  93. +324 −92 lib/UIKit/TUITableViewCell.m
  94. +59 −0 lib/UIKit/TUITableViewController.h
  95. +82 −0 lib/UIKit/TUITableViewController.m
  96. +34 −0 lib/UIKit/TUITableViewMultiselection+Cell.h
  97. +393 −0 lib/UIKit/TUITableViewMultiselection+Cell.m
  98. +6 −0 lib/UIKit/TUITextEditor.h
  99. +47 −3 lib/UIKit/TUITextEditor.m
  100. +1 −1  lib/UIKit/TUITextField.m
  101. +52 −12 lib/UIKit/TUITextRenderer+Event.m
  102. +190 −11 lib/UIKit/TUITextRenderer+KeyBindings.m
  103. +17 −0 lib/UIKit/TUITextRenderer+Private.h
  104. +21 −4 lib/UIKit/TUITextRenderer.h
  105. +29 −16 lib/UIKit/TUITextRenderer.m
  106. +2 −0  lib/UIKit/TUITextView.h
  107. +50 −12 lib/UIKit/TUITextView.m
  108. +12 −0 lib/UIKit/TUIView+Event.h
  109. +71 −40 lib/UIKit/TUIView+Event.m
  110. +1 −0  lib/UIKit/TUIView+Layout.h
  111. +4 −0 lib/UIKit/TUIView+Layout.m
  112. +4 −0 lib/UIKit/TUIView+Private.h
  113. +9 −7 lib/UIKit/TUIView.h
  114. +11 −9 lib/UIKit/TUIView.m
  115. +3 −4 lib/UIKit/TUIViewController.h
  116. +0 −19 lib/UIKit/TUIViewController.m
View
22 CONTRIBUTING.md
@@ -0,0 +1,22 @@
+We love that you're interested in contributing to this project!
+
+**This fork of TwUI is feature-frozen.** Only _critical bug fixes_ will be
+accepted, and most significant changes in behavior will be rejected. We'd prefer
+to focus feature work on
+[Rebel](https://github.com/blog/1300-rebel-a-framework-for-improving-appkit).
+
+## Prefer Pull Requests
+
+If you know exactly how to fix the bug being reported, please open a pull
+request instead of an issue. Pull requests are easier than patches or inline
+code blocks for discussing and merging the changes.
+
+If you can't make the change yourself, please open an issue after making sure
+that one isn't already logged.
+
+## Contributing Code
+
+All code contributions should match our [coding
+conventions](https://github.com/github/objective-c-conventions).
+
+Thanks for contributing! :boom::camel:
View
0  ExampleProject/Example/Example-Info.plist 100644 → 100755
File mode changed
View
0  ExampleProject/Example/Example-Prefix.pch 100644 → 100755
File mode changed
View
0  ExampleProject/Example/ExampleAppDelegate.h 100644 → 100755
File mode changed
View
0  ExampleProject/Example/ExampleAppDelegate.m 100644 → 100755
File mode changed
View
4 ExampleProject/Example/ExampleScrollView.h 100644 → 100755
@@ -19,7 +19,7 @@
@interface ExampleScrollView : TUIView
{
- TUIScrollView * _scrollView;
+ TUIScrollView * _scrollView;
}
-@end
+@end
View
4 ExampleProject/Example/ExampleScrollView.m 100644 → 100755
@@ -25,7 +25,7 @@ - (id)initWithFrame:(CGRect)frame
_scrollView = [[TUIScrollView alloc] initWithFrame:self.bounds];
_scrollView.autoresizingMask = TUIViewAutoresizingFlexibleSize;
- _scrollView.scrollIndicatorStyle = TUIScrollViewIndicatorStyleDark;
+ _scrollView.scrollIndicatorStyle = TUIScrollViewIndicatorStyleDefault;
[self addSubview:_scrollView];
TUIImageView *imageView = [[TUIImageView alloc] initWithImage:[NSImage imageNamed:@"large-image.jpeg"]];
@@ -37,4 +37,4 @@ - (id)initWithFrame:(CGRect)frame
}
-@end
+@end
View
0  ExampleProject/Example/ExampleSectionHeaderView.h 100644 → 100755
File mode changed
View
8 ExampleProject/Example/ExampleSectionHeaderView.m 100644 → 100755
@@ -68,4 +68,12 @@ -(void)drawRect:(CGRect)rect {
}
+//- (void)setFrame:(CGRect)frame;
+//{
+// if ([[[self.labelRenderer attributedString] string] hasSuffix:@"5"]) {
+// NSLog(@"cll %@ fr: %@", [self.labelRenderer.attributedString string], NSStringFromRect(frame));
+// }
+// [super setFrame:frame];
+//}
+
@end
View
15 ExampleProject/Example/ExampleTabBar.h 100644 → 100755
@@ -19,23 +19,20 @@
@class ExampleTabBar;
@protocol ExampleTabBarDelegate <NSObject>
+
@required
- (void)tabBar:(ExampleTabBar *)tabBar didSelectTab:(NSInteger)index;
-@end
-/*
- An example of how to build a custom UI control, in this case a simple tab bar
- */
+@end
+// An example of how to build a custom UI control, in this case a simple tab bar.
@interface ExampleTabBar : TUIView
-{
- id<ExampleTabBarDelegate> __unsafe_unretained delegate;
- NSArray *tabViews;
-}
-- (id)initWithNumberOfTabs:(NSInteger)nTabs;
+- (id)initWithNumberOfTabs:(NSUInteger)count;
@property (nonatomic, unsafe_unretained) id<ExampleTabBarDelegate> delegate;
@property (nonatomic, readonly) NSArray *tabViews;
+- (BOOL)isHighlightingTab:(TUIView *)tab;
+
@end
View
200 ExampleProject/Example/ExampleTabBar.m 100644 → 100755
@@ -16,82 +16,190 @@
#import "ExampleTabBar.h"
-@interface ExampleTab : TUIView
+@interface ExampleTab : TUIControl
+
+@property (nonatomic, assign) CGFloat originalPosition;
+@property (nonatomic, strong) NSTimer *flashTimer;
+
@end
+
@implementation ExampleTab
-- (ExampleTabBar *)tabBar
-{
+// Convinience to call delegate methods, since by default, our
+// superview SHOULD be a tab bar, and nothing else. This will
+// horribly crash if you add an ExampleTab to anything but a tab bar.
+- (ExampleTabBar *)tabBar {
return (ExampleTabBar *)self.superview;
}
-- (void)mouseDown:(NSEvent *)event
-{
- [super mouseDown:event]; // always call super when overriding mouseXXX: methods - lots of plumbing happens in TUIView
+// If a tracking event occurs within a tab, we want to move the
+// tab around, so return YES.
+- (BOOL)beginTrackingWithEvent:(NSEvent *)event {
[self setNeedsDisplay];
+
+ // So the tab doesn't move over just on mouse pressed.
+ self.originalPosition = [self convertPoint:[event locationInWindow] fromView:nil].x;
+
+ return YES;
+}
+
+// Find the tab that was being dragged- although this isn't the
+// most efficient way, this will suffice for now.
+- (BOOL)continueTrackingWithEvent:(NSEvent *)event {
+
+ // Offset the tab's x origin by whatever we dragged by.
+ CGFloat currentPosition = [self convertPoint:event.locationInWindow fromView:nil].x;
+
+ CGRect draggedRect = self.frame;
+ draggedRect.origin.x += roundf(currentPosition - self.originalPosition);
+ self.frame = draggedRect;
+
+ return YES;
}
-- (void)mouseUp:(NSEvent *)event
-{
- [super mouseUp:event];
+// Restore tabs to their original condition.
+- (void)endTrackingWithEvent:(NSEvent *)event {
- // rather than a simple -setNeedsDisplay, let's fade it back out
- [TUIView animateWithDuration:0.5 animations:^{
- [self redraw]; // -redraw forces a .contents update immediately based on drawRect, and it happens inside an animation block, so CoreAnimation gives us a cross-fade for free
+ // By nature, the event *must* be inside the tab's bounds, otherwise the
+ // tracking process will not be invoked. If we were dragged, we were NOT
+ // pressed, so don't call the delegate.
+ CGFloat currentPosition = [self convertPoint:event.locationInWindow fromView:nil].x;
+ if(self.originalPosition == currentPosition)
+ [self.tabBar.delegate tabBar:self.tabBar didSelectTab:self.tag];
+
+ // Since tracking is done, move the tab back. This whole ordeal lets us
+ // "stretch" our tabs around.
+ CGFloat originalPoint = self.tag * (self.tabBar.bounds.size.width / self.tabBar.tabViews.count);
+ [TUIView animateWithDuration:0.25f animations:^{
+ CGRect draggedRect = self.frame;
+ draggedRect.origin.x = roundf(originalPoint);
+ self.frame = draggedRect;
}];
- if([self eventInside:event]) { // only perform the action if the mouse up happened inside our bounds - ignores mouse down, drag-out, mouse up
- [[self tabBar].delegate tabBar:[self tabBar] didSelectTab:self.tag];
- }
+ // Rather than a simple -setNeedsDisplay, let's fade it back out.
+ [TUIView animateWithDuration:0.25f animations:^{
+
+ // -redraw forces a .contents update immediately based on drawRect,
+ // and it happens inside an animation block, so CoreAnimation gives
+ // us a cross-fade for free.
+ [self redraw];
+ }];
+}
+
+// End control tracking when cancelled for any reason.
+- (void)cancelTrackingWithEvent:(NSEvent *)event {
+ [self endTrackingWithEvent:event];
+}
+
+// When the tab is tapped with two fingers, let it pulse, otherwise
+// do nothing. To let it pulse, use the selected property and toggle it.
+- (void)touchesBeganWithEvent:(NSEvent *)event {
+ if([self touchesMatchingPhase:NSTouchPhaseTouching forEvent:event].count != 2)
+ return;
+
+ // Using -redraw within an animation block lets us crossfade
+ // the tab selection. When we finish this animation, queue
+ // the pulsing with a timer set repeat the -flash method.
+ [TUIView animateWithDuration:0.25f animations:^{
+ self.selected = YES;
+ [self redraw];
+ } completion:^(BOOL finished) {
+ if(finished) {
+ self.flashTimer = [NSTimer scheduledTimerWithTimeInterval:0.25f
+ target:self selector:@selector(flash)
+ userInfo:nil repeats:YES];
+ }
+ }];
+}
+
+// If the touches have ended, invalidate the timer and animate
+// back to the standard state, setting .selected as NO.
+- (void)touchesEndedWithEvent:(NSEvent *)event {
+ [self.flashTimer invalidate];
+ self.flashTimer = nil;
+
+ [TUIView animateWithDuration:0.25f animations:^{
+ self.selected = NO;
+ [self redraw];
+ }];
+}
+
+// End touch tracking when cancelled for any reason.
+- (void)touchesCancelledWithEvent:(NSEvent *)event {
+ [self touchesEndedWithEvent:event];
+}
+
+// This method, called from a timer, should pulse the tab by
+// flipping the .selected property value, and animating the change.
+- (void)flash {
+ [TUIView animateWithDuration:0.25f animations:^{
+ self.selected = !self.selected;
+ [self redraw];
+ }];
}
@end
-@implementation ExampleTabBar
+@interface ExampleTabBar ()
+
+@property (nonatomic, assign) ExampleTab *draggingTab;
-@synthesize delegate;
-@synthesize tabViews;
+@end
+
+@implementation ExampleTabBar
-- (id)initWithNumberOfTabs:(NSInteger)nTabs
-{
+- (id)initWithNumberOfTabs:(NSUInteger)count {
if((self = [super initWithFrame:CGRectZero])) {
- NSMutableArray *_tabViews = [NSMutableArray arrayWithCapacity:nTabs];
- for(int i = 0; i < nTabs; ++i) {
- ExampleTab *t = [[ExampleTab alloc] initWithFrame:CGRectZero];
- t.tag = i;
- t.layout = ^(TUIView *v) { // the layout of an individual tab is a function of the superview bounds, the number of tabs, and the current tab index
- CGRect b = v.superview.bounds; // reference the passed-in 'v' rather than 't' to avoid a retain cycle
- float width = b.size.width / nTabs;
- float x = i * width;
- return CGRectMake(roundf(x), 0, roundf(width), b.size.height);
+ NSMutableArray *tabs = [NSMutableArray arrayWithCapacity:count];
+
+ for(int i = 0; i < count; ++i) {
+ ExampleTab *tab = [[ExampleTab alloc] initWithFrame:CGRectZero];
+ tab.acceptsTouchEvents = YES;
+ tab.wantsRestingTouches = YES;
+ tab.tag = i;
+
+ // The layout of an individual tab is a function of the superview bounds,
+ // the number of tabs, and the current tab index.
+ // Reference the passed-in 'view' rather than 'tab' to avoid a retain cycle.
+ tab.layout = ^(TUIView *view) {
+ CGRect rect = view.superview.bounds;
+ CGFloat width = (rect.size.width / count);
+ return CGRectMake(roundf(i * width), 0, roundf(width), CGRectGetHeight(rect));
};
- [self addSubview:t];
- [_tabViews addObject:t];
+
+ [self addSubview:tab];
+ [tabs addObject:tab];
}
- tabViews = [[NSArray alloc] initWithArray:_tabViews];
+ _tabViews = [[NSArray alloc] initWithArray:tabs];
}
return self;
}
-- (void)drawRect:(CGRect)rect
-{
- // draw tab bar background
-
- CGRect b = self.bounds;
+- (void)drawRect:(CGRect)rect {
CGContextRef ctx = TUIGraphicsGetCurrentContext();
- // gray gradient
- CGFloat colorA[] = { 0.85, 0.85, 0.85, 1.0 };
- CGFloat colorB[] = { 0.71, 0.71, 0.71, 1.0 };
- CGContextDrawLinearGradientBetweenPoints(ctx, CGPointMake(0, b.size.height), colorA, CGPointMake(0, 0), colorB);
+ // Drawing the bar gradient using CGContextRef functions.
+ CGFloat colorA[] = { 0.85f, 0.85f, 0.85f, 1.0f };
+ CGFloat colorB[] = { 0.71f, 0.71f, 0.71f, 1.0f };
+ CGContextDrawLinearGradientBetweenPoints(ctx, CGPointMake(0, CGRectGetHeight(self.bounds)),
+ colorA, CGPointMake(0, 0), colorB);
+
+ // Drawing the separator etch using Cocoa Graphics objects.
+ [[NSColor colorWithCalibratedWhite:1.0f alpha:0.5f] set];
+ [[NSBezierPath bezierPathWithRect:CGRectMake(0, CGRectGetHeight(self.bounds) - 2, CGRectGetWidth(self.bounds), 1)] fill];
+ [[NSColor colorWithCalibratedWhite:0.0f alpha:0.25f] set];
+ [[NSBezierPath bezierPathWithRect:CGRectMake(0, CGRectGetHeight(self.bounds) - 1, CGRectGetWidth(self.bounds), 1)] fill];
+}
+
+- (BOOL)isHighlightingTab:(TUIView *)tab {
+ if(![self.tabViews containsObject:tab])
+ return NO;
- // top emboss
- CGContextSetRGBFillColor(ctx, 1, 1, 1, 0.5);
- CGContextFillRect(ctx, CGRectMake(0, b.size.height-2, b.size.width, 1));
- CGContextSetRGBFillColor(ctx, 0, 0, 0, 0.3);
- CGContextFillRect(ctx, CGRectMake(0, b.size.height-1, b.size.width, 1));
+ if([(ExampleTab *)tab state] & (TUIControlStateHighlighted | TUIControlStateSelected))
+ return YES;
+ else return NO;
}
@end
View
16 ExampleProject/Example/ExampleTableViewController.h
@@ -0,0 +1,16 @@
+//
+// ExampleTableViewController.h
+// Example
+//
+// Created by Max Goedjen on 11/13/12.
+//
+//
+
+#import "TUIKit.h"
+#import "TUITableOutlineView.h"
+
+@interface ExampleTableViewController : TUIViewController <TUITableViewDelegate, TUITableViewDataSource>
+
+@property (nonatomic, strong) TUITableOutlineView *tableView;
+
+@end
View
228 ExampleProject/Example/ExampleTableViewController.m
@@ -0,0 +1,228 @@
+//
+// ExampleTableViewController.m
+// Example
+//
+// Created by Max Goedjen on 11/13/12.
+//
+//
+
+#import "ExampleTableViewController.h"
+#import "ExampleSectionHeaderView.h"
+#import "ExampleTableViewCell.h"
+#import "TUICGAdditions.h"
+
+@implementation ExampleTableViewController
+
+- (void)loadView {
+ self.view = [[TUIView alloc] initWithFrame:CGRectMake(0, 0, 300, 300)];
+}
+
+- (void)viewDidLoad {
+ self.tableView = [[TUITableOutlineView alloc] initWithFrame:self.view.frame];
+ self.tableView.alwaysBounceVertical = YES;
+ self.tableView.dataSource = self;
+ self.tableView.delegate = self;
+ self.tableView.allowsMultipleSelection = YES;
+ self.tableView.backgroundColor = [NSColor grayColor];
+ [self.tableView reloadData];
+ self.tableView.maintainContentOffsetAfterReload = YES;
+ self.tableView.autoresizingMask = TUIViewAutoresizingFlexibleSize;
+
+ TUILabel *footerLabel = [[TUILabel alloc] initWithFrame:CGRectMake(0, 0, _tableView.frame.size.width, 44)];
+ footerLabel.alignment = TUITextAlignmentCenter;
+ footerLabel.backgroundColor = [NSColor clearColor];
+ footerLabel.font = [NSFont fontWithName:@"HelveticaNeue-Bold" size:15];
+ footerLabel.text = @"Example Footer View";
+ self.tableView.footerView = footerLabel;
+ self.tableView.footerView.backgroundColor = [NSColor redColor];
+
+ TUIButton *reloadButton = [TUIButton buttonWithType:TUIButtonTypeStandard];
+ [reloadButton addActionForControlEvents:TUIControlEventMouseUpInside block:^{
+ [self.tableView reloadData];
+ }];
+ [reloadButton setImage:[NSImage imageNamed:NSImageNameRefreshTemplate] forState:TUIControlStateNormal];
+ reloadButton.frame = CGRectMake(10, 10, 24, 24);
+
+ [self.tableView.footerView addSubview:reloadButton];
+
+ [self.view addSubview:self.tableView];
+}
+
+- (NSInteger)numberOfSectionsInTableView:(TUITableView *)tableView {
+ return 8;
+}
+
+- (NSInteger)tableView:(TUITableView *)table numberOfRowsInSection:(NSInteger)section {
+// return 5;
+// NSLog(@"RQ NUMS");
+ if ([(TUITableOutlineView *)table sectionIsOpened:section] ) {
+ switch (section) {
+ case 0: return 10;
+ case 1: return 4;
+ case 3: return 20;
+ default: return 5;
+ }
+ }
+ return 1;
+}
+
+- (CGFloat)tableView:(TUITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+ return 50.0;
+}
+
+- (TUIView *)tableView:(TUITableView *)tableView headerViewForSection:(NSInteger)section {
+ return nil;
+ ExampleSectionHeaderView *header = [[ExampleSectionHeaderView alloc] initWithFrame:CGRectMake(0, 0, 100, 32)];
+ TUIAttributedString *title = [TUIAttributedString stringWithString:[NSString stringWithFormat:@"Example Section %d", (int)section]];
+ title.color = [NSColor blackColor];
+ title.font = [NSFont fontWithName:@"HelveticaNeue-Bold" size:15];
+ header.labelRenderer.attributedString = title;
+
+ // Dragging a title can drag the window too.
+ [header setMoveWindowByDragging:YES];
+
+ // Add an activity indicator to the header view with a 24x24 size.
+ // Since we know the height of the header won't change we can pre-
+ // pad it to 4. However, since the table view's width can change,
+ // we'll create a layout constraint to keep the activity indicator
+ // anchored 16px left of the right side of the header view.
+ TUIActivityIndicatorView *indicator = [[TUIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 4, 24, 24)
+ activityIndicatorStyle:TUIActivityIndicatorViewStyleGray];
+ [indicator addLayoutConstraint:[TUILayoutConstraint constraintWithAttribute:TUILayoutConstraintAttributeMaxX
+ relativeTo:@"superview"
+ attribute:TUILayoutConstraintAttributeMaxX
+ offset:-16.0f]];
+
+ // Add a simple embossing shadow to the white activity indicator.
+ // This way, we can see it better on a bright background. Using
+ // the standard layer property keeps the shadow stable through
+ // animations.
+ indicator.layer.shadowColor = [NSColor whiteColor].tui_CGColor;
+ indicator.layer.shadowOffset = CGSizeMake(0, -1);
+ indicator.layer.shadowOpacity = 1.0f;
+ indicator.layer.shadowRadius = 1.0f;
+ indicator.layoutName = @"indicator";
+
+ // We then add it as a subview and tell it to start animating.
+ [header addSubview:indicator];
+// [indicator startAnimating];
+
+ TUIButton *displayButton = [TUIButton buttonWithType:TUIButtonTypeTextured];
+ displayButton.imageEdgeInsets = TUIEdgeInsetsMake(0, 0, 0, 1);
+ [displayButton setImage:[NSImage imageNamed:NSImageNameQuickLookTemplate] forState:TUIControlStateNormal];
+ displayButton.frame = CGRectMake(0, 4, 24, 24);
+ [displayButton addLayoutConstraint:[TUILayoutConstraint constraintWithAttribute:TUILayoutConstraintAttributeMaxX relativeTo:@"indicator"
+ attribute:TUILayoutConstraintAttributeMinX offset:-8]];
+
+ [displayButton addActionForControlEvents:TUIControlEventMouseUpInside block:^{
+ [[self tableView] toggleSection:section];
+ return;
+
+ [TUIView beginAnimations:nil context:nil];
+ [[self tableView] scrollToSection:section];
+ [TUIView commitAnimations];
+ return;
+
+ }];
+
+ [header addSubview:displayButton];
+
+ return header;
+}
+
+- (TUITableViewCell *)tableView:(TUITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
+ ExampleTableViewCell *cell = reusableTableCellOfClass(tableView, ExampleTableViewCell);
+
+ TUIAttributedString *s = [TUIAttributedString stringWithString:[NSString stringWithFormat:@"example cell %d/%d", (int)indexPath.section, (int)indexPath.row]];
+ s.color = [NSColor grayColor];
+ s.font = [NSFont fontWithName:@"HelveticaNeue" size:15];;
+ [s setFont:[NSFont fontWithName:@"HelveticaNeue-Bold" size:15] inRange:NSMakeRange(8, 4)]; // make the word "cell" bold
+
+ cell.attributedString = s;
+
+ return cell;
+}
+- (void)tableView:(TUITableOutlineView *)tableView willDisplayCell:(ExampleTableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
+{
+ if (indexPath.row == 0) {
+ cell.backgroundColor = [NSColor controlColor];
+ } else {
+ cell.backgroundColor = [NSColor clearColor];
+ }
+ if ([tableView sectionIsOpened:indexPath.section]) {
+ cell.backgroundView = tableView.openedSectionBackgroundView;
+ cell.drawBackground = ^(TUIView *v, CGRect r)
+ {
+ [TUIGraphicsGetImageForView(tableView.openedSectionBackgroundView) drawInRect:r
+ fromRect:[tableView convertRect:v.frame toView:tableView.openedSectionBackgroundView]
+ operation:NSCompositeSourceOver
+ fraction:1.0];
+
+ };
+
+ return;
+ }
+
+ cell.backgroundView = nil;;
+ cell.drawBackground = nil;
+}
+
+- (void)tableView:(TUITableView *)tableView didClickRowAtIndexPath:(NSIndexPath *)indexPath withEvent:(NSEvent *)event {
+ if (indexPath.row == 0) {
+ [(TUITableOutlineView *)tableView toggleSection:indexPath.section];
+ } else
+ if([event clickCount] == 1) {
+ // do something cool
+// if ([self.navigationController.viewControllers count] > 1) {
+// [self.navigationController popToRootViewControllerAnimated:YES];
+// } else {
+// ExampleTableViewController *pushed = [[ExampleTableViewController alloc] initWithNibName:nil bundle:nil];
+// [self.navigationController pushViewController:pushed animated:YES];
+// }
+ }
+
+ if(event.type == NSRightMouseUp){
+ // show context menu
+ }
+}
+
+-(BOOL)tableView:(TUITableView *)tableView performKeyActionWithEvent:(NSEvent *)event {
+ NSLog(@"Key down event %@", event);
+ return YES;
+}
+
+- (BOOL)tableView:(TUITableView *)tableView shouldSelectRowAtIndexPath:(NSIndexPath *)indexPath forEvent:(NSEvent *)event{
+ switch (event.type) {
+ case NSRightMouseDown:
+ return NO;
+ }
+
+ return YES;
+}
+
+-(BOOL)tableView:(TUITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
+ // return YES to enable row reordering by dragging; don't implement this method or return
+ // NO to disable
+ return YES;
+}
+
+-(void)tableView:(TUITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
+ // update the model to reflect the changed index paths; since this example isn't backed by
+ // a "real" model, after dropping a cell the table will revert to it's previous state
+ NSLog(@"Move dragged row: %@ => %@", fromIndexPath, toIndexPath);
+}
+
+- (void)tableView:(TUITableView *)tableView moveRows:(NSArray *)arrayOfIdexes toIndexPath:(NSIndexPath *)toIndexPath
+{
+ NSLog(@"MULTI : Move dragged row: %@ => %@", arrayOfIdexes, toIndexPath);
+
+}
+
+-(NSIndexPath *)tableView:(TUITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)fromPath toProposedIndexPath:(NSIndexPath *)proposedPath {
+ // optionally revise the drag-to-reorder drop target index path by returning a different index path
+ // than proposedPath. if proposedPath is suitable, return that. if this method is not implemented,
+ // proposedPath is used by default.
+ return proposedPath;
+}
+
+@end
View
0  ExampleProject/Example/clock.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  ExampleProject/Example/clock@2x.png 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
0  ExampleProject/Example/en.lproj/Credits.rtf 100644 → 100755
File mode changed
View
0  ExampleProject/Example/en.lproj/InfoPlist.strings 100644 → 100755
File mode changed
View
94 ExampleProject/Example/en.lproj/MainMenu.xib 100644 → 100755
@@ -1,20 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
- <int key="IBDocument.SystemTarget">1070</int>
- <string key="IBDocument.SystemVersion">11B26</string>
- <string key="IBDocument.InterfaceBuilderVersion">1934</string>
- <string key="IBDocument.AppKitVersion">1138</string>
- <string key="IBDocument.HIToolboxVersion">566.00</string>
+ <int key="IBDocument.SystemTarget">1080</int>
+ <string key="IBDocument.SystemVersion">12C60</string>
+ <string key="IBDocument.InterfaceBuilderVersion">2844</string>
+ <string key="IBDocument.AppKitVersion">1187.34</string>
+ <string key="IBDocument.HIToolboxVersion">625.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">1934</string>
+ <string key="NS.object.0">2844</string>
</object>
<object class="NSArray" key="IBDocument.IntegratedClassDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSCustomObject</string>
<string>NSMenu</string>
<string>NSMenuItem</string>
- <string>NSCustomObject</string>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -3244,7 +3244,7 @@
<string>83.IBPluginDependency</string>
<string>92.IBPluginDependency</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3413,7 +3413,7 @@
<reference key="dict.values" ref="0"/>
</object>
<nil key="sourceID"/>
- <int key="maxID">537</int>
+ <int key="maxID">573</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -3428,7 +3428,7 @@
<string>showScrollViewExampleWindow:</string>
<string>showTableViewExampleWindow:</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>id</string>
<string>id</string>
@@ -3441,7 +3441,7 @@
<string>showScrollViewExampleWindow:</string>
<string>showTableViewExampleWindow:</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
<string key="name">showScrollViewExampleWindow:</string>
@@ -3459,70 +3459,22 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSDocument</string>
+ <string key="className">TUIPopover</string>
+ <string key="superclassName">NSResponder</string>
<object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>printDocument:</string>
- <string>revertDocumentToSaved:</string>
- <string>runPageLayout:</string>
- <string>saveDocument:</string>
- <string>saveDocumentAs:</string>
- <string>saveDocumentTo:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
+ <string key="NS.key.0">performClose:</string>
+ <string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>printDocument:</string>
- <string>revertDocumentToSaved:</string>
- <string>runPageLayout:</string>
- <string>saveDocument:</string>
- <string>saveDocumentAs:</string>
- <string>saveDocumentTo:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBActionInfo">
- <string key="name">printDocument:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">revertDocumentToSaved:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">runPageLayout:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">saveDocument:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">saveDocumentAs:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">saveDocumentTo:</string>
- <string key="candidateClassName">id</string>
- </object>
+ <string key="NS.key.0">performClose:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">performClose:</string>
+ <string key="candidateClassName">id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/NSDocument.h</string>
+ <string key="minorKey">./Classes/TUIPopover.h</string>
</object>
</object>
</object>
@@ -3542,10 +3494,10 @@
<string>NSMenuCheckmark</string>
<string>NSMenuMixedState</string>
</object>
- <object class="NSMutableArray" key="dict.values">
+ <object class="NSArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>{9, 8}</string>
- <string>{7, 2}</string>
+ <string>{11, 11}</string>
+ <string>{10, 3}</string>
</object>
</object>
</data>
View
0  ExampleProject/Example/large-image.jpeg 100644 → 100755
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
8 ExampleProject/Example/main.m 100644 → 100755
@@ -24,13 +24,5 @@
int main(int argc, char *argv[])
{
- SInt32 major = 0;
- SInt32 minor = 0;
- Gestalt(gestaltSystemVersionMajor, &major);
- Gestalt(gestaltSystemVersionMinor, &minor);
- if((major == 10 && minor >= 7) || major >= 11) {
- AtLeastLion = YES;
- }
-
return NSApplicationMain(argc, (const char **)argv);
}
View
62 LICENSE.md
@@ -0,0 +1,62 @@
+Copyright 2011 Twitter, Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+----------
+
+Code from the Google Toolbox for Mac is used in TwUI. Google Toolbox for Mac is copyright (c) 2007 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+----------
+
+Code from the Velvet framework is used in TwUI. Velvet is copyright (c) 2012, Bitswift, Inc.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+ * Neither the name of the Bitswift, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------
+
+Code from Matt Gemmell is used in portions of TwUI. License Agreement for Source Code provided by Matt Gemmell:
+
+This software is supplied to you by Matt Gemmell in consideration of your agreement to the following terms, and your use, installation, modification or redistribution of this software constitutes acceptance of these terms. If you do not agree with these terms, please do not use, install, modify or redistribute this software.
+
+In consideration of your agreement to abide by the following terms, and subject to these terms, Matt Gemmell grants you a personal, non-exclusive license, to use, reproduce, modify and redistribute the software, with or without modifications, in source and/or binary forms; provided that if you redistribute the software in its entirety and without modifications, you must retain this notice and the following text and disclaimers in all such redistributions of the software, and that in all cases attribution of Matt Gemmell as the original author of the source code shall be included in all such resulting software products or distributions. Neither the name, trademarks, service marks or logos of Matt Gemmell may be used to endorse or promote products derived from the software without specific prior written permission from Matt Gemmell. Except as expressly stated in this notice, no other rights or licenses, express or implied, are granted by Matt Gemmell herein, including but not limited to any patent rights that may be infringed by your derivative works or by other works in which the software may be incorporated.
+
+The software is provided by Matt Gemmell on an "AS IS" basis. MATT GEMMELL MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+
+IN NO EVENT SHALL MATT GEMMELL BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF MATT GEMMELL HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------
+
+Sample code from Apple Documentation is used in portions of TwUI. Portions Copyright (c) 1999-2012 Apple Inc. All Rights Reserved.
+
+This file contains Original Code and/or Modifications of Original Code as defined in and that are subject to the Apple Public Source License Version 2.0 (the 'License'). You may not use this file except in compliance with the License. Please obtain a copy of the License at http://www.opensource.apple.com/apsl/ and read it before using this file.
+
+The Original Code and all software distributed under the License are distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the specific language governing rights and limitations under the License.
View
27 LICENSE.txt
@@ -1,27 +0,0 @@
-Copyright 2011 Twitter, Inc.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
------------------
-
-Code from the Velvet framework is used in TwUI.
-Velvet is copyright (c) 2012, Bitswift, Inc.
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
- * Neither the name of the Bitswift, Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
View
15 README.md
@@ -1,3 +1,10 @@
+**This fork of TwUI is feature-frozen.** Our feature work is focusing on
+[Rebel](https://github.com/blog/1300-rebel-a-framework-for-improving-appkit)
+instead.
+
+You might be able to find a more active fork of TwUI by checking out the
+[network graph](https://github.com/twitter/twui/network).
+
# TwUI
TwUI is a hardware accelerated UI framework for Mac, inspired by UIKit. It enables:
@@ -34,14 +41,6 @@ This project follows the [SemVer](http://semver.org/) standard. The API may chan
The goal of TwUI is to build a high-quality UI framework designed specifically for the Mac. Much inspiration comes from UIKit, but diverging to try new things (i.e. block-based layout and drawRect), and optimizing for Mac-specific interactions is encouraged.
-# Contributing
-
-We will happily accept pull requests that meet one of the following criteria:
-
- 1. It fixes some functionality that is already in TwUI. This might be a bug, or something not working as expected.
- 2. It's something so basic or important that TwUI really should have it.
- 3. It has to integrate with TwUI internals, and so can't easily be done outside of the framework. This one is the most ambiguous, because interesting things may match this criterion, but still be way out of scope. In some cases, a fork might be more appropriate. Use your best judgment.
-
# Community
TwUI has a mailing list, subscribe by sending an email to <twui@librelist.com>.
View
31 TwUI-cop.podspec
@@ -0,0 +1,31 @@
+Pod::Spec.new do |s|
+ s.name = "TwUI-cop"
+ s.version = "0.5.2"
+ s.summary = "Fork of TwUI - a UI framework for Mac based on Core Animation."
+ s.description = "TwUI is a hardware accelerated UI framework for Mac, inspired by UIKit. It enables:\n"\
+ "- GPU accelerated rendering backed by CoreAnimation.\n"\
+ "- Simple model/view/controller development familiar to iOS developers."
+ s.homepage = "https://github.com/Coppertino/twui"
+ s.author = { "Twitter, Inc." => "opensource@twitter.com",
+ "GitHub, Inc." => "support@github.com" }
+ s.license = { :type => 'Apache License, Version 2.0' }
+ s.source = { :git => "https://github.com/Coppertino/twui.git", :branch => "master" }
+
+ s.platform = :osx, '10.6'
+ s.requires_arc = true
+ s.frameworks = 'ApplicationServices', 'QuartzCore', 'Cocoa'
+
+ s.subspec 'Support' do |ss|
+ ss.source_files = 'lib/Support'
+ end
+
+ s.subspec 'UIKit' do |ss|
+ ss.source_files = FileList['lib/UIKit/*.{h,m}'].exclude(/NSColor\+TUIExtensions/, /TUIAccessibilityElement/)
+ ss.dependency 'TwUI-cop/Support'
+
+ ss.subspec 'NSColorExtensions' do |sss|
+ sss.source_files = 'lib/UIKit/NSColor+TUIExtensions.{h,m}'
+ sss.requires_arc = false
+ end
+ end
+end
View
249 TwUI.xcodeproj/project.pbxproj 100644 → 100755
@@ -7,28 +7,72 @@
objects = {
/* Begin PBXBuildFile section */
+ 07342D9316D7737C00A72F52 /* TUITableOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 07342D9116D7737B00A72F52 /* TUITableOutlineView.h */; };
+ 07342D9416D7737C00A72F52 /* TUITableOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 07342D9116D7737B00A72F52 /* TUITableOutlineView.h */; };
+ 07342D9516D7737C00A72F52 /* TUITableOutlineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 07342D9116D7737B00A72F52 /* TUITableOutlineView.h */; };
+ 07933D9416F2128C0041A13F /* TUITableViewMultiselection+Cell.h in Headers */ = {isa = PBXBuildFile; fileRef = 07933D9216F2128C0041A13F /* TUITableViewMultiselection+Cell.h */; };
+ 07933D9516F2128C0041A13F /* TUITableViewMultiselection+Cell.h in Headers */ = {isa = PBXBuildFile; fileRef = 07933D9216F2128C0041A13F /* TUITableViewMultiselection+Cell.h */; };
+ 07933D9616F2128C0041A13F /* TUITableViewMultiselection+Cell.h in Headers */ = {isa = PBXBuildFile; fileRef = 07933D9216F2128C0041A13F /* TUITableViewMultiselection+Cell.h */; };
+ 07933D9716F2128C0041A13F /* TUITableViewMultiselection+Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 07933D9316F2128C0041A13F /* TUITableViewMultiselection+Cell.m */; };
+ 07933D9816F2128C0041A13F /* TUITableViewMultiselection+Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 07933D9316F2128C0041A13F /* TUITableViewMultiselection+Cell.m */; };
+ 07933D9916F2128C0041A13F /* TUITableViewMultiselection+Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 07933D9316F2128C0041A13F /* TUITableViewMultiselection+Cell.m */; };
30D399C9156D8ADD006ECDAE /* TUIProgressBar.m in Sources */ = {isa = PBXBuildFile; fileRef = 30D399C7156D8ADD006ECDAE /* TUIProgressBar.m */; };
30D39A0D156D8F71006ECDAE /* TUIProgressBar.h in Headers */ = {isa = PBXBuildFile; fileRef = 30D399C6156D8ADD006ECDAE /* TUIProgressBar.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 482011071659749900CFDC11 /* NSFont+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 887C227915C1C7BB006EC31D /* NSFont+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 482011081659749A00CFDC11 /* NSFont+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 887C227915C1C7BB006EC31D /* NSFont+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48201109165974A300CFDC11 /* NSFont+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 887C227A15C1C7BB006EC31D /* NSFont+TUIExtensions.m */; };
+ 4820110A165974A400CFDC11 /* NSFont+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 887C227A15C1C7BB006EC31D /* NSFont+TUIExtensions.m */; };
+ 48373DF5160EAE9400322CA7 /* TUITextRenderer+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 48373DF4160EAE9400322CA7 /* TUITextRenderer+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 48373DF6160EAE9400322CA7 /* TUITextRenderer+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 48373DF4160EAE9400322CA7 /* TUITextRenderer+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 48373DF7160EAE9400322CA7 /* TUITextRenderer+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 48373DF4160EAE9400322CA7 /* TUITextRenderer+Private.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 48694D751658318000BE65BF /* NSAffineTransform+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D6F1658318000BE65BF /* NSAffineTransform+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D761658318000BE65BF /* NSAffineTransform+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D6F1658318000BE65BF /* NSAffineTransform+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D771658318000BE65BF /* NSAffineTransform+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D6F1658318000BE65BF /* NSAffineTransform+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D781658318000BE65BF /* NSAffineTransform+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D701658318000BE65BF /* NSAffineTransform+TUIExtensions.m */; };
+ 48694D791658318000BE65BF /* NSAffineTransform+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D701658318000BE65BF /* NSAffineTransform+TUIExtensions.m */; };
+ 48694D7A1658318000BE65BF /* NSAffineTransform+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D701658318000BE65BF /* NSAffineTransform+TUIExtensions.m */; };
+ 48694D7B1658318000BE65BF /* NSShadow+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D711658318000BE65BF /* NSShadow+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D7C1658318000BE65BF /* NSShadow+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D711658318000BE65BF /* NSShadow+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D7D1658318000BE65BF /* NSShadow+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D711658318000BE65BF /* NSShadow+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D7E1658318000BE65BF /* NSShadow+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D721658318000BE65BF /* NSShadow+TUIExtensions.m */; };
+ 48694D7F1658318000BE65BF /* NSShadow+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D721658318000BE65BF /* NSShadow+TUIExtensions.m */; };
+ 48694D801658318000BE65BF /* NSShadow+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D721658318000BE65BF /* NSShadow+TUIExtensions.m */; };
+ 48694D8D165832B800BE65BF /* NSBezierPath+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D8B165832B800BE65BF /* NSBezierPath+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D8E165832B800BE65BF /* NSBezierPath+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D8B165832B800BE65BF /* NSBezierPath+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D8F165832B800BE65BF /* NSBezierPath+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 48694D8B165832B800BE65BF /* NSBezierPath+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 48694D90165832B800BE65BF /* NSBezierPath+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D8C165832B800BE65BF /* NSBezierPath+TUIExtensions.m */; };
+ 48694D91165832B800BE65BF /* NSBezierPath+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D8C165832B800BE65BF /* NSBezierPath+TUIExtensions.m */; };
+ 48694D92165832B800BE65BF /* NSBezierPath+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 48694D8C165832B800BE65BF /* NSBezierPath+TUIExtensions.m */; };
+ 48886B361682AA550026426D /* TUISlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 48886B341682AA550026426D /* TUISlider.h */; };
+ 48886B371682AA550026426D /* TUISlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 48886B341682AA550026426D /* TUISlider.h */; };
+ 48886B381682AA550026426D /* TUISlider.h in Headers */ = {isa = PBXBuildFile; fileRef = 48886B341682AA550026426D /* TUISlider.h */; };
+ 48886B391682AA550026426D /* TUISlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 48886B351682AA550026426D /* TUISlider.m */; };
+ 48886B3A1682AA550026426D /* TUISlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 48886B351682AA550026426D /* TUISlider.m */; };
+ 48886B3B1682AA550026426D /* TUISlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 48886B351682AA550026426D /* TUISlider.m */; };
+ 488A5833162FBE9B006CBF8B /* TUITableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 488A5831162FBE9B006CBF8B /* TUITableViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 488A5834162FBE9B006CBF8B /* TUITableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 488A5831162FBE9B006CBF8B /* TUITableViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 488A5835162FBE9B006CBF8B /* TUITableViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 488A5831162FBE9B006CBF8B /* TUITableViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 488A5836162FBE9B006CBF8B /* TUITableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 488A5832162FBE9B006CBF8B /* TUITableViewController.m */; };
+ 488A5837162FBE9B006CBF8B /* TUITableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 488A5832162FBE9B006CBF8B /* TUITableViewController.m */; };
+ 488A5838162FBE9B006CBF8B /* TUITableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 488A5832162FBE9B006CBF8B /* TUITableViewController.m */; };
48A10E8115B7769A007F9EE3 /* TUILayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 48A10E7D15B7769A007F9EE3 /* TUILayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; };
48A10E8215B7769A007F9EE3 /* TUILayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 48A10E7E15B7769A007F9EE3 /* TUILayoutConstraint.m */; };
48A10E8315B7769A007F9EE3 /* TUILayoutManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 48A10E7F15B7769A007F9EE3 /* TUILayoutManager.h */; settings = {ATTRIBUTES = (Public, ); }; };
48A10E8415B7769A007F9EE3 /* TUILayoutManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 48A10E8015B7769A007F9EE3 /* TUILayoutManager.m */; };
48A10E8915B778E8007F9EE3 /* TUIView+Layout.m in Sources */ = {isa = PBXBuildFile; fileRef = 48A10E8715B778E8007F9EE3 /* TUIView+Layout.m */; };
48A10E8B15B77A46007F9EE3 /* TUIView+Layout.h in Headers */ = {isa = PBXBuildFile; fileRef = 48A10E8A15B77A46007F9EE3 /* TUIView+Layout.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ 5000874016524B1C0067ED42 /* TUINavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 5000873F16524B1C0067ED42 /* TUINavigationController.h */; settings = {ATTRIBUTES = (Public, ); }; };
5E6ECEB313BE791600109598 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EE9839C13BE7650005F430D /* ApplicationServices.framework */; };
5E6ECEB413BE791600109598 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5E31B613BE6F49004B7899 /* QuartzCore.framework */; };
5E6ECEB613BE791C00109598 /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EE9839C13BE7650005F430D /* ApplicationServices.framework */; };
5E6ECEB713BE792100109598 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5B264F13BE6DA200579B1E /* Cocoa.framework */; };
5EE9839D13BE7650005F430D /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EE9839C13BE7650005F430D /* ApplicationServices.framework */; };
5EE983B813BE7809005F430D /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CB5B264F13BE6DA200579B1E /* Cocoa.framework */; };
- 5EE983BF13BE7834005F430D /* TUIKit.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5B13BE6E1900C85CB5 /* TUIKit.m */; };
5EE983C013BE7834005F430D /* TUIAccessibility.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C3F13BE6E1900C85CB5 /* TUIAccessibility.m */; };
5EE983C113BE7834005F430D /* TUIActivityIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4113BE6E1900C85CB5 /* TUIActivityIndicatorView.m */; };
5EE983C213BE7834005F430D /* TUIAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4313BE6E1900C85CB5 /* TUIAttributedString.m */; };
- 5EE983C313BE7834005F430D /* TUIButton+Content.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4413BE6E1900C85CB5 /* TUIButton+Content.m */; };
5EE983C413BE7834005F430D /* TUIButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4613BE6E1900C85CB5 /* TUIButton.m */; };
5EE983C513BE7834005F430D /* TUICGAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4813BE6E1900C85CB5 /* TUICGAdditions.m */; };
- 5EE983C713BE7834005F430D /* TUIControl+TargetAction.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4B13BE6E1900C85CB5 /* TUIControl+TargetAction.m */; };
5EE983C813BE7834005F430D /* TUIControl.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4D13BE6E1900C85CB5 /* TUIControl.m */; };
5EE983CB13BE7834005F430D /* TUIGeometry.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5313BE6E1900C85CB5 /* TUIGeometry.m */; };
5EE983CE13BE7834005F430D /* TUIImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5913BE6E1900C85CB5 /* TUIImageView.m */; };
@@ -37,7 +81,7 @@
5EE983D213BE7834005F430D /* TUINSView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6213BE6E1900C85CB5 /* TUINSView.m */; };
5EE983D313BE7834005F430D /* TUINSWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6413BE6E1900C85CB5 /* TUINSWindow.m */; };
5EE983D413BE7834005F430D /* TUIResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6613BE6E1900C85CB5 /* TUIResponder.m */; };
- 5EE983D513BE7834005F430D /* TUIScrollKnob.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6813BE6E1900C85CB5 /* TUIScrollKnob.m */; };
+ 5EE983D513BE7834005F430D /* TUIScroller.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6813BE6E1900C85CB5 /* TUIScroller.m */; };
5EE983D613BE7834005F430D /* TUIScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6A13BE6E1900C85CB5 /* TUIScrollView.m */; };
5EE983D713BE7834005F430D /* TUIStringDrawing.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6C13BE6E1900C85CB5 /* TUIStringDrawing.m */; };
5EE983D813BE7834005F430D /* TUITableView+Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6E13BE6E1900C85CB5 /* TUITableView+Additions.m */; };
@@ -53,7 +97,6 @@
5EE983E213BE7834005F430D /* TUITooltipWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8113BE6E1900C85CB5 /* TUITooltipWindow.m */; };
5EE983E313BE7834005F430D /* TUIView+Animation.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8213BE6E1900C85CB5 /* TUIView+Animation.m */; };
5EE983E413BE7834005F430D /* TUIView+Event.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8413BE6E1900C85CB5 /* TUIView+Event.m */; };
- 5EE983E513BE7834005F430D /* TUIView+NSTextInputClient.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8613BE6E1900C85CB5 /* TUIView+NSTextInputClient.m */; };
5EE983E613BE7834005F430D /* TUIView+PasteboardDragging.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8813BE6E1900C85CB5 /* TUIView+PasteboardDragging.m */; };
5EE983E813BE7834005F430D /* TUIView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8C13BE6E1900C85CB5 /* TUIView.m */; };
5EE983E913BE7834005F430D /* TUIViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8E13BE6E1900C85CB5 /* TUIViewController.m */; };
@@ -84,13 +127,6 @@
884E8F5E1538809C000F7A8D /* CAAnimation+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E8F5A1538809C000F7A8D /* CAAnimation+TUIExtensions.m */; };
884E8F5F1538809C000F7A8D /* CAAnimation+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E8F5A1538809C000F7A8D /* CAAnimation+TUIExtensions.m */; };
884E8F601538809C000F7A8D /* CAAnimation+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 884E8F5A1538809C000F7A8D /* CAAnimation+TUIExtensions.m */; };
- 886EBA7F13D64393006DE018 /* TUIControl+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 886EBA7D13D64393006DE018 /* TUIControl+Private.h */; };
- 886EBA8013D64393006DE018 /* TUIControl+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 886EBA7D13D64393006DE018 /* TUIControl+Private.h */; };
- 886EBA8113D64393006DE018 /* TUIControl+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 886EBA7D13D64393006DE018 /* TUIControl+Private.h */; };
- 886EBA8213D64393006DE018 /* TUIControl+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 886EBA7E13D64393006DE018 /* TUIControl+Private.m */; };
- 886EBA8313D64393006DE018 /* TUIControl+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 886EBA7E13D64393006DE018 /* TUIControl+Private.m */; };
- 886EBA8413D64393006DE018 /* TUIControl+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 886EBA7E13D64393006DE018 /* TUIControl+Private.m */; };
- 886EBA8513D64393006DE018 /* TUIControl+Private.m in Sources */ = {isa = PBXBuildFile; fileRef = 886EBA7E13D64393006DE018 /* TUIControl+Private.m */; };
887C227B15C1C7BB006EC31D /* NSFont+TUIExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 887C227915C1C7BB006EC31D /* NSFont+TUIExtensions.h */; settings = {ATTRIBUTES = (Public, ); }; };
887C227C15C1C7BB006EC31D /* NSFont+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 887C227A15C1C7BB006EC31D /* NSFont+TUIExtensions.m */; };
887F272C13F9969800D75DE6 /* TUITableViewSectionHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 887F272A13F9969800D75DE6 /* TUITableViewSectionHeader.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -119,8 +155,6 @@
88D25F5813F5D96500CFAAA9 /* TUITableView+Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D25F5413F5D96500CFAAA9 /* TUITableView+Cell.m */; };
88D25F5913F5D96500CFAAA9 /* TUITableView+Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D25F5413F5D96500CFAAA9 /* TUITableView+Cell.m */; };
88D25F5A13F5D96500CFAAA9 /* TUITableView+Cell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D25F5413F5D96500CFAAA9 /* TUITableView+Cell.m */; };
- 88D81CFF1577EF0D009D453B /* TUIStyledView.h in Headers */ = {isa = PBXBuildFile; fileRef = 88D81CFD1577EF0D009D453B /* TUIStyledView.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 88D81D001577EF0D009D453B /* TUIStyledView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D81CFE1577EF0D009D453B /* TUIStyledView.m */; };
88EFFB5113F417E200CF91A9 /* TUITextViewEditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EFFB4F13F417E200CF91A9 /* TUITextViewEditor.h */; };
88EFFB5213F417E200CF91A9 /* TUITextViewEditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EFFB4F13F417E200CF91A9 /* TUITextViewEditor.h */; };
88EFFB5313F417E200CF91A9 /* TUITextViewEditor.h in Headers */ = {isa = PBXBuildFile; fileRef = 88EFFB4F13F417E200CF91A9 /* TUITextViewEditor.h */; };
@@ -137,20 +171,17 @@
CB5E321D13BE70CA004B7899 /* TUIAccessibility.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C3F13BE6E1900C85CB5 /* TUIAccessibility.m */; };
CB5E321F13BE70CA004B7899 /* TUIActivityIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4113BE6E1900C85CB5 /* TUIActivityIndicatorView.m */; };
CB5E322113BE70CA004B7899 /* TUIAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4313BE6E1900C85CB5 /* TUIAttributedString.m */; };
- CB5E322213BE70CA004B7899 /* TUIButton+Content.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4413BE6E1900C85CB5 /* TUIButton+Content.m */; };
CB5E322413BE70CA004B7899 /* TUIButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4613BE6E1900C85CB5 /* TUIButton.m */; };
CB5E322613BE70CA004B7899 /* TUICGAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4813BE6E1900C85CB5 /* TUICGAdditions.m */; };
- CB5E322913BE70CA004B7899 /* TUIControl+TargetAction.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4B13BE6E1900C85CB5 /* TUIControl+TargetAction.m */; };
CB5E322B13BE70CA004B7899 /* TUIControl.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4D13BE6E1900C85CB5 /* TUIControl.m */; };
CB5E323113BE70CA004B7899 /* TUIGeometry.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5313BE6E1900C85CB5 /* TUIGeometry.m */; };
CB5E323713BE70CA004B7899 /* TUIImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5913BE6E1900C85CB5 /* TUIImageView.m */; };
- CB5E323913BE70CA004B7899 /* TUIKit.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5B13BE6E1900C85CB5 /* TUIKit.m */; };
CB5E323B13BE70CA004B7899 /* TUILabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5D13BE6E1900C85CB5 /* TUILabel.m */; };
CB5E323D13BE70CA004B7899 /* TUINSView+Hyperfocus.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5F13BE6E1900C85CB5 /* TUINSView+Hyperfocus.m */; };
CB5E324013BE70CA004B7899 /* TUINSView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6213BE6E1900C85CB5 /* TUINSView.m */; };
CB5E324213BE70CA004B7899 /* TUINSWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6413BE6E1900C85CB5 /* TUINSWindow.m */; };
CB5E324413BE70CA004B7899 /* TUIResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6613BE6E1900C85CB5 /* TUIResponder.m */; };
- CB5E324613BE70CA004B7899 /* TUIScrollKnob.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6813BE6E1900C85CB5 /* TUIScrollKnob.m */; };
+ CB5E324613BE70CA004B7899 /* TUIScroller.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6813BE6E1900C85CB5 /* TUIScroller.m */; };
CB5E324813BE70CA004B7899 /* TUIScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6A13BE6E1900C85CB5 /* TUIScrollView.m */; };
CB5E324A13BE70CA004B7899 /* TUIStringDrawing.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6C13BE6E1900C85CB5 /* TUIStringDrawing.m */; };
CB5E324C13BE70CA004B7899 /* TUITableView+Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6E13BE6E1900C85CB5 /* TUITableView+Additions.m */; };
@@ -166,7 +197,6 @@
CB5E325F13BE70CA004B7899 /* TUITooltipWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8113BE6E1900C85CB5 /* TUITooltipWindow.m */; };
CB5E326013BE70CA004B7899 /* TUIView+Animation.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8213BE6E1900C85CB5 /* TUIView+Animation.m */; };
CB5E326213BE70CA004B7899 /* TUIView+Event.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8413BE6E1900C85CB5 /* TUIView+Event.m */; };
- CB5E326413BE70CA004B7899 /* TUIView+NSTextInputClient.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8613BE6E1900C85CB5 /* TUIView+NSTextInputClient.m */; };
CB5E326613BE70CA004B7899 /* TUIView+PasteboardDragging.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8813BE6E1900C85CB5 /* TUIView+PasteboardDragging.m */; };
CB5E326A13BE70CA004B7899 /* TUIView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8C13BE6E1900C85CB5 /* TUIView.m */; };
CB5E326C13BE70CA004B7899 /* TUIViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8E13BE6E1900C85CB5 /* TUIViewController.m */; };
@@ -185,12 +215,10 @@
CBB74C9813BE6E1900C85CB5 /* TUIActivityIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4113BE6E1900C85CB5 /* TUIActivityIndicatorView.m */; };
CBB74C9913BE6E1900C85CB5 /* TUIAttributedString.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C4213BE6E1900C85CB5 /* TUIAttributedString.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74C9A13BE6E1900C85CB5 /* TUIAttributedString.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4313BE6E1900C85CB5 /* TUIAttributedString.m */; };
- CBB74C9B13BE6E1900C85CB5 /* TUIButton+Content.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4413BE6E1900C85CB5 /* TUIButton+Content.m */; };
CBB74C9C13BE6E1900C85CB5 /* TUIButton.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C4513BE6E1900C85CB5 /* TUIButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74C9D13BE6E1900C85CB5 /* TUIButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4613BE6E1900C85CB5 /* TUIButton.m */; };
CBB74C9E13BE6E1900C85CB5 /* TUICGAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C4713BE6E1900C85CB5 /* TUICGAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74C9F13BE6E1900C85CB5 /* TUICGAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4813BE6E1900C85CB5 /* TUICGAdditions.m */; };
- CBB74CA213BE6E1900C85CB5 /* TUIControl+TargetAction.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4B13BE6E1900C85CB5 /* TUIControl+TargetAction.m */; };
CBB74CA313BE6E1900C85CB5 /* TUIControl.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C4C13BE6E1900C85CB5 /* TUIControl.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74CA413BE6E1900C85CB5 /* TUIControl.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C4D13BE6E1900C85CB5 /* TUIControl.m */; };
CBB74CA913BE6E1900C85CB5 /* TUIGeometry.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C5213BE6E1900C85CB5 /* TUIGeometry.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -198,7 +226,6 @@
CBB74CAF13BE6E1900C85CB5 /* TUIImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C5813BE6E1900C85CB5 /* TUIImageView.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74CB013BE6E1900C85CB5 /* TUIImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5913BE6E1900C85CB5 /* TUIImageView.m */; };
CBB74CB113BE6E1900C85CB5 /* TUIKit.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C5A13BE6E1900C85CB5 /* TUIKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CBB74CB213BE6E1900C85CB5 /* TUIKit.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5B13BE6E1900C85CB5 /* TUIKit.m */; };
CBB74CB313BE6E1900C85CB5 /* TUILabel.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C5C13BE6E1900C85CB5 /* TUILabel.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74CB413BE6E1900C85CB5 /* TUILabel.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C5D13BE6E1900C85CB5 /* TUILabel.m */; };
CBB74CB513BE6E1900C85CB5 /* TUINSView+Hyperfocus.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C5E13BE6E1900C85CB5 /* TUINSView+Hyperfocus.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -209,8 +236,8 @@
CBB74CBB13BE6E1900C85CB5 /* TUINSWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6413BE6E1900C85CB5 /* TUINSWindow.m */; };
CBB74CBC13BE6E1900C85CB5 /* TUIResponder.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C6513BE6E1900C85CB5 /* TUIResponder.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74CBD13BE6E1900C85CB5 /* TUIResponder.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6613BE6E1900C85CB5 /* TUIResponder.m */; };
- CBB74CBE13BE6E1900C85CB5 /* TUIScrollKnob.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C6713BE6E1900C85CB5 /* TUIScrollKnob.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CBB74CBF13BE6E1900C85CB5 /* TUIScrollKnob.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6813BE6E1900C85CB5 /* TUIScrollKnob.m */; };
+ CBB74CBE13BE6E1900C85CB5 /* TUIScroller.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C6713BE6E1900C85CB5 /* TUIScroller.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ CBB74CBF13BE6E1900C85CB5 /* TUIScroller.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6813BE6E1900C85CB5 /* TUIScroller.m */; };
CBB74CC013BE6E1900C85CB5 /* TUIScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C6913BE6E1900C85CB5 /* TUIScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74CC113BE6E1900C85CB5 /* TUIScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C6A13BE6E1900C85CB5 /* TUIScrollView.m */; };
CBB74CC213BE6E1900C85CB5 /* TUIStringDrawing.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C6B13BE6E1900C85CB5 /* TUIStringDrawing.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -239,8 +266,6 @@
CBB74CD913BE6E1900C85CB5 /* TUIView+Animation.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8213BE6E1900C85CB5 /* TUIView+Animation.m */; };
CBB74CDA13BE6E1900C85CB5 /* TUIView+Event.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C8313BE6E1900C85CB5 /* TUIView+Event.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74CDB13BE6E1900C85CB5 /* TUIView+Event.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8413BE6E1900C85CB5 /* TUIView+Event.m */; };
- CBB74CDC13BE6E1900C85CB5 /* TUIView+NSTextInputClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C8513BE6E1900C85CB5 /* TUIView+NSTextInputClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
- CBB74CDD13BE6E1900C85CB5 /* TUIView+NSTextInputClient.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8613BE6E1900C85CB5 /* TUIView+NSTextInputClient.m */; };
CBB74CDE13BE6E1900C85CB5 /* TUIView+PasteboardDragging.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C8713BE6E1900C85CB5 /* TUIView+PasteboardDragging.h */; settings = {ATTRIBUTES = (Public, ); }; };
CBB74CDF13BE6E1900C85CB5 /* TUIView+PasteboardDragging.m in Sources */ = {isa = PBXBuildFile; fileRef = CBB74C8813BE6E1900C85CB5 /* TUIView+PasteboardDragging.m */; };
CBB74CE013BE6E1900C85CB5 /* TUIView+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB74C8913BE6E1900C85CB5 /* TUIView+Private.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -341,6 +366,8 @@
D0EA12F415C34FEA00FAA603 /* NSColor+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = D0EA12F015C34FEA00FAA603 /* NSColor+TUIExtensions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
D0EA12F515C34FEA00FAA603 /* NSColor+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = D0EA12F015C34FEA00FAA603 /* NSColor+TUIExtensions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
D0EA12F615C34FEA00FAA603 /* NSColor+TUIExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = D0EA12F015C34FEA00FAA603 /* NSColor+TUIExtensions.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
+ D491662116FE76AD001A8CFD /* TUICarouselNavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = D491661F16FE76AD001A8CFD /* TUICarouselNavigationController.h */; };
+ D491662216FE76AD001A8CFD /* TUICarouselNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = D491662016FE76AD001A8CFD /* TUICarouselNavigationController.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -424,14 +451,33 @@
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
+ 07342D9116D7737B00A72F52 /* TUITableOutlineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUITableOutlineView.h; sourceTree = "<group>"; };
+ 07342D9216D7737B00A72F52 /* TUITableOutlineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUITableOutlineView.m; sourceTree = "<group>"; };
+ 07933D9216F2128C0041A13F /* TUITableViewMultiselection+Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUITableViewMultiselection+Cell.h"; sourceTree = "<group>"; };
+ 07933D9316F2128C0041A13F /* TUITableViewMultiselection+Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUITableViewMultiselection+Cell.m"; sourceTree = "<group>"; };
30D399C6156D8ADD006ECDAE /* TUIProgressBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIProgressBar.h; sourceTree = "<group>"; };
30D399C7156D8ADD006ECDAE /* TUIProgressBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIProgressBar.m; sourceTree = "<group>"; };
+ 48373DF4160EAE9400322CA7 /* TUITextRenderer+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUITextRenderer+Private.h"; sourceTree = "<group>"; };
+ 48694D6F1658318000BE65BF /* NSAffineTransform+TUIExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAffineTransform+TUIExtensions.h"; sourceTree = "<group>"; };
+ 48694D701658318000BE65BF /* NSAffineTransform+TUIExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSAffineTransform+TUIExtensions.m"; sourceTree = "<group>"; };
+ 48694D711658318000BE65BF /* NSShadow+TUIExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSShadow+TUIExtensions.h"; sourceTree = "<group>"; };
+ 48694D721658318000BE65BF /* NSShadow+TUIExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSShadow+TUIExtensions.m"; sourceTree = "<group>"; };
+ 48694D8B165832B800BE65BF /* NSBezierPath+TUIExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSBezierPath+TUIExtensions.h"; sourceTree = "<group>"; };
+ 48694D8C165832B800BE65BF /* NSBezierPath+TUIExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSBezierPath+TUIExtensions.m"; sourceTree = "<group>"; };
+ 487068981628CBCF005D7096 /* TUITableViewCell+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TUITableViewCell+Private.h"; sourceTree = "<group>"; };
+ 48886B341682AA550026426D /* TUISlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUISlider.h; sourceTree = "<group>"; };
+ 48886B351682AA550026426D /* TUISlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUISlider.m; sourceTree = "<group>"; };
+ 488A5831162FBE9B006CBF8B /* TUITableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUITableViewController.h; sourceTree = "<group>"; };
+ 488A5832162FBE9B006CBF8B /* TUITableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUITableViewController.m; sourceTree = "<group>"; };
48A10E7D15B7769A007F9EE3 /* TUILayoutConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUILayoutConstraint.h; sourceTree = "<group>"; };
48A10E7E15B7769A007F9EE3 /* TUILayoutConstraint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUILayoutConstraint.m; sourceTree = "<group>"; };
48A10E7F15B7769A007F9EE3 /* TUILayoutManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUILayoutManager.h; sourceTree = "<group>"; };
48A10E8015B7769A007F9EE3 /* TUILayoutManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUILayoutManager.m; sourceTree = "<group>"; };
48A10E8715B778E8007F9EE3 /* TUIView+Layout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIView+Layout.m"; sourceTree = "<group>"; };
48A10E8A15B77A46007F9EE3 /* TUIView+Layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUIView+Layout.h"; sourceTree = "<group>"; };
+ 48A6234F162C63E900DFA443 /* TUIScrollView+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "TUIScrollView+Private.h"; sourceTree = "<group>"; };
+ 5000873F16524B1C0067ED42 /* TUINavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUINavigationController.h; sourceTree = "<group>"; };
+ 5000874816524B1F0067ED42 /* TUINavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUINavigationController.m; sourceTree = "<group>"; };
5EE9839C13BE7650005F430D /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = System/Library/Frameworks/ApplicationServices.framework; sourceTree = SDKROOT; };
5EE983B713BE7809005F430D /* libtwui.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libtwui.a; sourceTree = BUILT_PRODUCTS_DIR; };
8819794213E26E0200AA39EB /* TUIView+Accessibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUIView+Accessibility.h"; sourceTree = "<group>"; };
@@ -442,10 +488,8 @@
884E8F5115387E11000F7A8D /* TUIPopover.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIPopover.m; sourceTree = "<group>"; };
884E8F591538809C000F7A8D /* CAAnimation+TUIExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CAAnimation+TUIExtensions.h"; sourceTree = "<group>"; };
884E8F5A1538809C000F7A8D /* CAAnimation+TUIExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CAAnimation+TUIExtensions.m"; sourceTree = "<group>"; };
- 886EBA7D13D64393006DE018 /* TUIControl+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUIControl+Private.h"; sourceTree = "<group>"; };
- 886EBA7E13D64393006DE018 /* TUIControl+Private.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIControl+Private.m"; sourceTree = "<group>"; };
- 887C227915C1C7BB006EC31D /* NSFont+TUIExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSFont+TUIExtensions.h"; sourceTree = "<group>"; };
- 887C227A15C1C7BB006EC31D /* NSFont+TUIExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSFont+TUIExtensions.m"; sourceTree = "<group>"; };
+ 887C227915C1C7BB006EC31D /* NSFont+TUIExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "NSFont+TUIExtensions.h"; path = "../Support/NSFont+TUIExtensions.h"; sourceTree = "<group>"; };
+ 887C227A15C1C7BB006EC31D /* NSFont+TUIExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "NSFont+TUIExtensions.m"; path = "../Support/NSFont+TUIExtensions.m"; sourceTree = "<group>"; };
887F272A13F9969800D75DE6 /* TUITableViewSectionHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUITableViewSectionHeader.h; sourceTree = "<group>"; };
887F272B13F9969800D75DE6 /* TUITableViewSectionHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUITableViewSectionHeader.m; sourceTree = "<group>"; };
88A4AFDC145A16C90071CF22 /* TUITextRenderer+Accessibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUITextRenderer+Accessibility.h"; sourceTree = "<group>"; };
@@ -456,8 +500,6 @@
88CC1F3613E3684600827793 /* TUIButton+Accessibility.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIButton+Accessibility.m"; sourceTree = "<group>"; };
88D25F5313F5D96500CFAAA9 /* TUITableView+Cell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUITableView+Cell.h"; sourceTree = "<group>"; };
88D25F5413F5D96500CFAAA9 /* TUITableView+Cell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUITableView+Cell.m"; sourceTree = "<group>"; };
- 88D81CFD1577EF0D009D453B /* TUIStyledView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIStyledView.h; sourceTree = "<group>"; };
- 88D81CFE1577EF0D009D453B /* TUIStyledView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIStyledView.m; sourceTree = "<group>"; };
88EFFB4F13F417E200CF91A9 /* TUITextViewEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUITextViewEditor.h; sourceTree = "<group>"; };
88EFFB5013F417E200CF91A9 /* TUITextViewEditor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUITextViewEditor.m; sourceTree = "<group>"; };
CB5B264C13BE6DA200579B1E /* TwUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TwUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -485,12 +527,10 @@
CBB74C4113BE6E1900C85CB5 /* TUIActivityIndicatorView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIActivityIndicatorView.m; sourceTree = "<group>"; };
CBB74C4213BE6E1900C85CB5 /* TUIAttributedString.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIAttributedString.h; sourceTree = "<group>"; };
CBB74C4313BE6E1900C85CB5 /* TUIAttributedString.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIAttributedString.m; sourceTree = "<group>"; };
- CBB74C4413BE6E1900C85CB5 /* TUIButton+Content.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIButton+Content.m"; sourceTree = "<group>"; };
CBB74C4513BE6E1900C85CB5 /* TUIButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIButton.h; sourceTree = "<group>"; };
CBB74C4613BE6E1900C85CB5 /* TUIButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIButton.m; sourceTree = "<group>"; };
CBB74C4713BE6E1900C85CB5 /* TUICGAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUICGAdditions.h; sourceTree = "<group>"; };
CBB74C4813BE6E1900C85CB5 /* TUICGAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUICGAdditions.m; sourceTree = "<group>"; };
- CBB74C4B13BE6E1900C85CB5 /* TUIControl+TargetAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIControl+TargetAction.m"; sourceTree = "<group>"; };
CBB74C4C13BE6E1900C85CB5 /* TUIControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIControl.h; sourceTree = "<group>"; };
CBB74C4D13BE6E1900C85CB5 /* TUIControl.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIControl.m; sourceTree = "<group>"; };
CBB74C5213BE6E1900C85CB5 /* TUIGeometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIGeometry.h; sourceTree = "<group>"; };
@@ -498,7 +538,6 @@
CBB74C5813BE6E1900C85CB5 /* TUIImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIImageView.h; sourceTree = "<group>"; };
CBB74C5913BE6E1900C85CB5 /* TUIImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIImageView.m; sourceTree = "<group>"; };
CBB74C5A13BE6E1900C85CB5 /* TUIKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TUIKit.h; path = lib/UIKit/TUIKit.h; sourceTree = "<group>"; };
- CBB74C5B13BE6E1900C85CB5 /* TUIKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIKit.m; sourceTree = "<group>"; };
CBB74C5C13BE6E1900C85CB5 /* TUILabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUILabel.h; sourceTree = "<group>"; };
CBB74C5D13BE6E1900C85CB5 /* TUILabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUILabel.m; sourceTree = "<group>"; };
CBB74C5E13BE6E1900C85CB5 /* TUINSView+Hyperfocus.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUINSView+Hyperfocus.h"; sourceTree = "<group>"; };
@@ -510,8 +549,8 @@
CBB74C6413BE6E1900C85CB5 /* TUINSWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUINSWindow.m; sourceTree = "<group>"; };
CBB74C6513BE6E1900C85CB5 /* TUIResponder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIResponder.h; sourceTree = "<group>"; };
CBB74C6613BE6E1900C85CB5 /* TUIResponder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIResponder.m; sourceTree = "<group>"; };
- CBB74C6713BE6E1900C85CB5 /* TUIScrollKnob.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIScrollKnob.h; sourceTree = "<group>"; };
- CBB74C6813BE6E1900C85CB5 /* TUIScrollKnob.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIScrollKnob.m; sourceTree = "<group>"; };
+ CBB74C6713BE6E1900C85CB5 /* TUIScroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIScroller.h; sourceTree = "<group>"; };
+ CBB74C6813BE6E1900C85CB5 /* TUIScroller.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIScroller.m; sourceTree = "<group>"; };
CBB74C6913BE6E1900C85CB5 /* TUIScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIScrollView.h; sourceTree = "<group>"; };
CBB74C6A13BE6E1900C85CB5 /* TUIScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUIScrollView.m; sourceTree = "<group>"; };
CBB74C6B13BE6E1900C85CB5 /* TUIStringDrawing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUIStringDrawing.h; sourceTree = "<group>"; };
@@ -540,8 +579,6 @@
CBB74C8213BE6E1900C85CB5 /* TUIView+Animation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIView+Animation.m"; sourceTree = "<group>"; };
CBB74C8313BE6E1900C85CB5 /* TUIView+Event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUIView+Event.h"; sourceTree = "<group>"; };
CBB74C8413BE6E1900C85CB5 /* TUIView+Event.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIView+Event.m"; sourceTree = "<group>"; };
- CBB74C8513BE6E1900C85CB5 /* TUIView+NSTextInputClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUIView+NSTextInputClient.h"; sourceTree = "<group>"; };
- CBB74C8613BE6E1900C85CB5 /* TUIView+NSTextInputClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIView+NSTextInputClient.m"; sourceTree = "<group>"; };
CBB74C8713BE6E1900C85CB5 /* TUIView+PasteboardDragging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUIView+PasteboardDragging.h"; sourceTree = "<group>"; };
CBB74C8813BE6E1900C85CB5 /* TUIView+PasteboardDragging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "TUIView+PasteboardDragging.m"; sourceTree = "<group>"; };
CBB74C8913BE6E1900C85CB5 /* TUIView+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "TUIView+Private.h"; sourceTree = "<group>"; };
@@ -584,6 +621,8 @@
D0C7657015B6341800E7AC2C /* TUICAAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUICAAction.m; sourceTree = "<group>"; };
D0EA12EF15C34FEA00FAA603 /* NSColor+TUIExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSColor+TUIExtensions.h"; sourceTree = "<group>"; };
D0EA12F015C34FEA00FAA603 /* NSColor+TUIExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSColor+TUIExtensions.m"; sourceTree = "<group>"; };
+ D491661F16FE76AD001A8CFD /* TUICarouselNavigationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUICarouselNavigationController.h; sourceTree = "<group>"; };
+ D491662016FE76AD001A8CFD /* TUICarouselNavigationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUICarouselNavigationController.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -738,8 +777,6 @@
D0C7652315B6232100E7AC2C /* CATransaction+TUIExtensions.m */,
CBB74C3B13BE6E1900C85CB5 /* CoreText+Additions.h */,
CBB74C3C13BE6E1900C85CB5 /* CoreText+Additions.m */,
- 887C227915C1C7BB006EC31D /* NSFont+TUIExtensions.h */,
- 887C227A15C1C7BB006EC31D /* NSFont+TUIExtensions.m */,
D040611115B6A7CC00F753ED /* NSTextView+TUIExtensions.h */,
D040611215B6A7CC00F753ED /* NSTextView+TUIExtensions.m */,
D0C7656F15B6341800E7AC2C /* TUICAAction.h */,
@@ -752,14 +789,22 @@
CBB74C3D13BE6E1900C85CB5 /* UIKit */ = {
isa = PBXGroup;
children = (
+ 48694D6F1658318000BE65BF /* NSAffineTransform+TUIExtensions.h */,
+ 48694D701658318000BE65BF /* NSAffineTransform+TUIExtensions.m */,
+ 48694D8B165832B800BE65BF /* NSBezierPath+TUIExtensions.h */,
+ 48694D8C165832B800BE65BF /* NSBezierPath+TUIExtensions.m */,
D0C7655915B6297200E7AC2C /* NSClipView+TUIExtensions.h */,
D0C7655A15B6297200E7AC2C /* NSClipView+TUIExtensions.m */,
D0EA12EF15C34FEA00FAA603 /* NSColor+TUIExtensions.h */,
D0EA12F015C34FEA00FAA603 /* NSColor+TUIExtensions.m */,
+ 887C227915C1C7BB006EC31D /* NSFont+TUIExtensions.h */,
+ 887C227A15C1C7BB006EC31D /* NSFont+TUIExtensions.m */,
D05D239E15BF7239000ED14F /* NSImage+TUIExtensions.h */,
D05D239F15BF7239000ED14F /* NSImage+TUIExtensions.m */,
D0C7655B15B6297300E7AC2C /* NSScrollView+TUIExtensions.h */,
D0C7655C15B6297300E7AC2C /* NSScrollView+TUIExtensions.m */,
+ 48694D711658318000BE65BF /* NSShadow+TUIExtensions.h */,
+ 48694D721658318000BE65BF /* NSShadow+TUIExtensions.m */,
D0C7653115B624D800E7AC2C /* NSView+TUIExtensions.h */,
D0C7653215B624D800E7AC2C /* NSView+TUIExtensions.m */,
CBB74C3E13BE6E1900C85CB5 /* TUIAccessibility.h */,
@@ -772,16 +817,12 @@
D0C764EA15B611C200E7AC2C /* TUIBridgedView.h */,
88CC1F3513E3684400827793 /* TUIButton+Accessibility.h */,
88CC1F3613E3684600827793 /* TUIButton+Accessibility.m */,
- CBB74C4413BE6E1900C85CB5 /* TUIButton+Content.m */,
CBB74C4513BE6E1900C85CB5 /* TUIButton.h */,
CBB74C4613BE6E1900C85CB5 /* TUIButton.m */,
CBB74C4713BE6E1900C85CB5 /* TUICGAdditions.h */,
CBB74C4813BE6E1900C85CB5 /* TUICGAdditions.m */,
88CC1F2D13E365B500827793 /* TUIControl+Accessibility.h */,
88CC1F2E13E365B500827793 /* TUIControl+Accessibility.m */,
- 886EBA7D13D64393006DE018 /* TUIControl+Private.h */,
- 886EBA7E13D64393006DE018 /* TUIControl+Private.m */,
- CBB74C4B13BE6E1900C85CB5 /* TUIControl+TargetAction.m */,
CBB74C4C13BE6E1900C85CB5 /* TUIControl.h */,
CBB74C4D13BE6E1900C85CB5 /* TUIControl.m */,
CBB74C5213BE6E1900C85CB5 /* TUIGeometry.h */,
@@ -789,13 +830,16 @@
D0C7650415B6156A00E7AC2C /* TUIHostView.h */,
CBB74C5813BE6E1900C85CB5 /* TUIImageView.h */,
CBB74C5913BE6E1900C85CB5 /* TUIImageView.m */,
- CBB74C5B13BE6E1900C85CB5 /* TUIKit.m */,
CBB74C5C13BE6E1900C85CB5 /* TUILabel.h */,
CBB74C5D13BE6E1900C85CB5 /* TUILabel.m */,
48A10E7D15B7769A007F9EE3 /* TUILayoutConstraint.h */,
48A10E7E15B7769A007F9EE3 /* TUILayoutConstraint.m */,
48A10E7F15B7769A007F9EE3 /* TUILayoutManager.h */,
48A10E8015B7769A007F9EE3 /* TUILayoutManager.m */,
+ 5000873F16524B1C0067ED42 /* TUINavigationController.h */,
+ 5000874816524B1F0067ED42 /* TUINavigationController.m */,
+ D491661F16FE76AD001A8CFD /* TUICarouselNavigationController.h */,
+ D491662016FE76AD001A8CFD /* TUICarouselNavigationController.m */,
8819794A13E26E5800AA39EB /* TUINSView+Accessibility.h */,
8819794B13E26E5800AA39EB /* TUINSView+Accessibility.m */,
CBB74C5E13BE6E1900C85CB5 /* TUINSView+Hyperfocus.h */,
@@ -813,30 +857,38 @@
30D399C7156D8ADD006ECDAE /* TUIProgressBar.m */,
CBB74C6513BE6E1900C85CB5 /* TUIResponder.h */,
CBB74C6613BE6E1900C85CB5 /* TUIResponder.m */,
- CBB74C6713BE6E1900C85CB5 /* TUIScrollKnob.h */,
- CBB74C6813BE6E1900C85CB5 /* TUIScrollKnob.m */,
+ CBB74C6713BE6E1900C85CB5 /* TUIScroller.h */,
+ CBB74C6813BE6E1900C85CB5 /* TUIScroller.m */,
D0C7655015B6294400E7AC2C /* TUIScrollView+TUIBridgedScrollView.h */,
D0C7655115B6294400E7AC2C /* TUIScrollView+TUIBridgedScrollView.m */,
CBB74C6913BE6E1900C85CB5 /* TUIScrollView.h */,
+ 48A6234F162C63E900DFA443 /* TUIScrollView+Private.h */,
CBB74C6A13BE6E1900C85CB5 /* TUIScrollView.m */,
+ 48886B341682AA550026426D /* TUISlider.h */,
+ 48886B351682AA550026426D /* TUISlider.m */,
D05DEE8A15BF645D005D8769 /* TUIStretchableImage.h */,
D05DEE8B15BF645D005D8769 /* TUIStretchableImage.m */,
CBB74C6B13BE6E1900C85CB5 /* TUIStringDrawing.h */,
CBB74C6C13BE6E1900C85CB5 /* TUIStringDrawing.m */,
- 88D81CFD1577EF0D009D453B /* TUIStyledView.h */,
- 88D81CFE1577EF0D009D453B /* TUIStyledView.m */,
CBB74C6D13BE6E1900C85CB5 /* TUITableView+Additions.h */,
CBB74C6E13BE6E1900C85CB5 /* TUITableView+Additions.m */,
88D25F5313F5D96500CFAAA9 /* TUITableView+Cell.h */,
88D25F5413F5D96500CFAAA9 /* TUITableView+Cell.m */,
+ 07933D9216F2128C0041A13F /* TUITableViewMultiselection+Cell.h */,
+ 07933D9316F2128C0041A13F /* TUITableViewMultiselection+Cell.m */,
CBB74C6F13BE6E1900C85CB5 /* TUITableView+Derepeater.h */,
CBB74C7013BE6E1900C85CB5 /* TUITableView+Derepeater.m */,
CBB74C7113BE6E1900C85CB5 /* TUITableView.h */,
CBB74C7213BE6E1900C85CB5 /* TUITableView.m */,
+ 487068981628CBCF005D7096 /* TUITableViewCell+Private.h */,
CBB74C7313BE6E1900C85CB5 /* TUITableViewCell.h */,
CBB74C7413BE6E1900C85CB5 /* TUITableViewCell.m */,
+ 488A5831162FBE9B006CBF8B /* TUITableViewController.h */,
+ 488A5832162FBE9B006CBF8B /* TUITableViewController.m */,
887F272A13F9969800D75DE6 /* TUITableViewSectionHeader.h */,
887F272B13F9969800D75DE6 /* TUITableViewSectionHeader.m */,
+ 07342D9116D7737B00A72F52 /* TUITableOutlineView.h */,
+ 07342D9216D7737B00A72F52 /* TUITableOutlineView.m */,
CBB74C7513BE6E1900C85CB5 /* TUITextEditor.h */,
CBB74C7613BE6E1900C85CB5 /* TUITextEditor.m */,
CBB74C7713BE6E1900C85CB5 /* TUITextField.h */,
@@ -846,6 +898,7 @@
CBB74C7913BE6E1900C85CB5 /* TUITextRenderer+Event.h */,
CBB74C7A13BE6E1900C85CB5 /* TUITextRenderer+Event.m */,
CBB74C7B13BE6E1900C85CB5 /* TUITextRenderer+KeyBindings.m */,
+ 48373DF4160EAE9400322CA7 /* TUITextRenderer+Private.h */,
CBB74C7C13BE6E1900C85CB5 /* TUITextRenderer.h */,
CBB74C7D13BE6E1900C85CB5 /* TUITextRenderer.m */,
CBB74C7E13BE6E1900C85CB5 /* TUITextView.h */,
@@ -861,8 +914,6 @@
CBB74C8413BE6E1900C85CB5 /* TUIView+Event.m */,
48A10E8A15B77A46007F9EE3 /* TUIView+Layout.h */,
48A10E8715B778E8007F9EE3 /* TUIView+Layout.m */,
- CBB74C8513BE6E1900C85CB5 /* TUIView+NSTextInputClient.h */,
- CBB74C8613BE6E1900C85CB5 /* TUIView+NSTextInputClient.m */,
CBB74C8713BE6E1900C85CB5 /* TUIView+PasteboardDragging.h */,
CBB74C8813BE6E1900C85CB5 /* TUIView+PasteboardDragging.m */,
CBB74C8913BE6E1900C85CB5 /* TUIView+Private.h */,
@@ -909,7 +960,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
- 886EBA8113D64393006DE018 /* TUIControl+Private.h in Headers */,
8819794613E26E0200AA39EB /* TUIView+Accessibility.h in Headers */,
8819794E13E26E5800AA39EB /* TUINSView+Accessibility.h in Headers */,
88CC1F3113E365B600827793 /* TUIControl+Accessibility.h in Headers */,
@@ -935,6 +985,15 @@
D05DEE8E15BF645D005D8769 /* TUIStretchableImage.h in Headers */,
D05D23A215BF7239000ED14F /* NSImage+TUIExtensions.h in Headers */,
D0EA12F315C34FEA00FAA603 /* NSColor+TUIExtensions.h in Headers */,
+ 48373DF7160EAE9400322CA7 /* TUITextRenderer+Private.h in Headers */,
+ 488A5835162FBE9B006CBF8B /* TUITableViewController.h in Headers */,
+ 48694D771658318000BE65BF /* NSAffineTransform+TUIExtensions.h in Headers */,
+ 48694D7D1658318000BE65BF /* NSShadow+TUIExtensions.h in Headers */,
+ 48694D8F165832B800BE65BF /* NSBezierPath+TUIExtensions.h in Headers */,
+ 482011081659749A00CFDC11 /* NSFont+TUIExtensions.h in Headers */,
+ 48886B381682AA550026426D /* TUISlider.h in Headers */,
+ 07342D9516D7737C00A72F52 /* TUITableOutlineView.h in Headers */,
+ 07933D9616F2128C0041A13F /* TUITableViewMultiselection+Cell.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -952,7 +1011,6 @@
30D39A0D156D8F71006ECDAE /* TUIProgressBar.h in Headers */,
CBB74CA313BE6E1900C85CB5 /* TUIControl.h in Headers */,
CBB74CA913BE6E1900C85CB5 /* TUIGeometry.h in Headers */,
- 88D81CFF1577EF0D009D453B /* TUIStyledView.h in Headers */,
887C227B15C1C7BB006EC31D /* NSFont+TUIExtensions.h in Headers */,
CBB74CAF13BE6E1900C85CB5 /* TUIImageView.h in Headers */,
CBB74CB113BE6E1900C85CB5 /* TUIKit.h in Headers */,
@@ -961,7 +1019,7 @@
CBB74CB813BE6E1900C85CB5 /* TUINSView.h in Headers */,
CBB74CBA13BE6E1900C85CB5 /* TUINSWindow.h in Headers */,
CBB74CBC13BE6E1900C85CB5 /* TUIResponder.h in Headers */,
- CBB74CBE13BE6E1900C85CB5 /* TUIScrollKnob.h in Headers */,
+ CBB74CBE13BE6E1900C85CB5 /* TUIScroller.h in Headers */,
CBB74CC013BE6E1900C85CB5 /* TUIScrollView.h in Headers */,
CBB74CC213BE6E1900C85CB5 /* TUIStringDrawing.h in Headers */,
CBB74CC413BE6E1900C85CB5 /* TUITableView+Additions.h in Headers */,
@@ -976,7 +1034,6 @@
CBB74CD713BE6E1900C85CB5 /* TUITooltipWindow.h in Headers */,
884E8F5B1538809C000F7A8D /* CAAnimation+TUIExtensions.h in Headers */,
CBB74CDA13BE6E1900C85CB5 /* TUIView+Event.h in Headers */,
- CBB74CDC13BE6E1900C85CB5 /* TUIView+NSTextInputClient.h in Headers */,
CBB74CDE13BE6E1900C85CB5 /* TUIView+PasteboardDragging.h in Headers */,
CBB74CE013BE6E1900C85CB5 /* TUIView+Private.h in Headers */,
CBB74CE213BE6E1900C85CB5 /* TUIView.h in Headers */,
@@ -984,7 +1041,6 @@
CBB74CE613BE6E1900C85CB5 /* TUIViewNSViewContainer.h in Headers */,
887F272C13F9969800D75DE6 /* TUITableViewSectionHeader.h in Headers */,
884E8F5215387E11000F7A8D /* TUIPopover.h in Headers */,
- 886EBA7F13D64393006DE018 /* TUIControl+Private.h in Headers */,
8819794413E26E0200AA39EB /* TUIView+Accessibility.h in Headers */,
8819794C13E26E5800AA39EB /* TUINSView+Accessibility.h in Headers */,
88CC1F2F13E365B600827793 /* TUIControl+Accessibility.h in Headers */,
@@ -997,6 +1053,7 @@
D0C7651615B61E5A00E7AC2C /* TUIBridgedScrollView.h in Headers */,
D0C7653315B624D900E7AC2C /* NSView+TUIExtensions.h in Headers */,
D0C7654615B626E200E7AC2C /* TUIView+TUIBridgedView.h in Headers */,
+ 5000874016524B1C0067ED42 /* TUINavigationController.h in Headers */,
D0C7655215B6294400E7AC2C /* TUIScrollView+TUIBridgedScrollView.h in Headers */,
D0C7655D15B6297300E7AC2C /* NSClipView+TUIExtensions.h in Headers */,
D0C7656315B6297300E7AC2C /* NSScrollView+TUIExtensions.h in Headers */,
@@ -1007,6 +1064,15 @@
D05DEE8C15BF645D005D8769 /* TUIStretchableImage.h in Headers */,
D05D23A015BF7239000ED14F /* NSImage+TUIExtensions.h in Headers */,
D0EA12F115C34FEA00FAA603 /* NSColor+TUIExtensions.h in Headers */,
+ 48373DF5160EAE9400322CA7 /* TUITextRenderer+Private.h in Headers */,
+ 488A5833162FBE9B006CBF8B /* TUITableViewController.h in Headers */,
+ 48694D751658318000BE65BF /* NSAffineTransform+TUIExtensions.h in Headers */,
+ 48694D7B1658318000BE65BF /* NSShadow+TUIExtensions.h in Headers */,
+ 48694D8D165832B800BE65BF /* NSBezierPath+TUIExtensions.h in Headers */,
+ 48886B361682AA550026426D /* TUISlider.h in Headers */,
+ 07342D9316D7737C00A72F52 /* TUITableOutlineView.h in Headers */,
+ 07933D9416F2128C0041A13F /* TUITableViewMultiselection+Cell.h in Headers */,
+ D491662116FE76AD001A8CFD /* TUICarouselNavigationController.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1014,7 +1080,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
- 886EBA8013D64393006DE018 /* TUIControl+Private.h in Headers */,
8819794513E26E0200AA39EB /* TUIView+Accessibility.h in Headers */,
8819794D13E26E5800AA39EB /* TUINSView+Accessibility.h in Headers */,
88CC1F3013E365B600827793 /* TUIControl+Accessibility.h in Headers */,
@@ -1040,6 +1105,15 @@
D05DEE8D15BF645D005D8769 /* TUIStretchableImage.h in Headers */,
D05D23A115BF7239000ED14F /* NSImage+TUIExtensions.h in Headers */,
D0EA12F215C34FEA00FAA603 /* NSColor+TUIExtensions.h in Headers */,
+ 48373DF6160EAE9400322CA7 /* TUITextRenderer+Private.h in Headers */,
+ 488A5834162FBE9B006CBF8B /* TUITableViewController.h in Headers */,
+ 48694D761658318000BE65BF /* NSAffineTransform+TUIExtensions.h in Headers */,
+ 48694D7C1658318000BE65BF /* NSShadow+TUIExtensions.h in Headers */,
+ 48694D8E165832B800BE65BF /* NSBezierPath+TUIExtensions.h in Headers */,
+ 482011071659749900CFDC11 /* NSFont+TUIExtensions.h in Headers */,
+ 48886B371682AA550026426D /* TUISlider.h in Headers */,
+ 07342D9416D7737C00A72F52 /* TUITableOutlineView.h in Headers */,
+ 07933D9516F2128C0041A13F /* TUITableViewMultiselection+Cell.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1258,14 +1332,11 @@
files = (
5EE983EB13BE783A005F430D /* ABActiveRange.m in Sources */,
5EE983EC13BE783A005F430D /* CoreText+Additions.m in Sources */,
- 5EE983BF13BE7834005F430D /* TUIKit.m in Sources */,
5EE983C013BE7834005F430D /* TUIAccessibility.m in Sources */,
5EE983C113BE7834005F430D /* TUIActivityIndicatorView.m in Sources */,
5EE983C213BE7834005F430D /* TUIAttributedString.m in Sources */,
- 5EE983C313BE7834005F430D /* TUIButton+Content.m in Sources */,
5EE983C413BE7834005F430D /* TUIButton.m in Sources */,
5EE983C513BE7834005F430D /* TUICGAdditions.m in Sources */,
- 5EE983C713BE7834005F430D /* TUIControl+TargetAction.m in Sources */,
5EE983C813BE7834005F430D /* TUIControl.m in Sources */,
5EE983CB13BE7834005F430D /* TUIGeometry.m in Sources */,
5EE983CE13BE7834005F430D /* TUIImageView.m in Sources */,
@@ -1274,7 +1345,7 @@
5EE983D213BE7834005F430D /* TUINSView.m in Sources */,
5EE983D313BE7834005F430D /* TUINSWindow.m in Sources */,
5EE983D413BE7834005F430D /* TUIResponder.m in Sources */,
- 5EE983D513BE7834005F430D /* TUIScrollKnob.m in Sources */,
+ 5EE983D513BE7834005F430D /* TUIScroller.m in Sources */,
5EE983D613BE7834005F430D /* TUIScrollView.m in Sources */,
5EE983D713BE7834005F430D /* TUIStringDrawing.m in Sources */,
5EE983D813BE7834005F430D /* TUITableView+Additions.m in Sources */,
@@ -1290,12 +1361,10 @@
5EE983E213BE7834005F430D /* TUITooltipWindow.m in Sources */,
5EE983E313BE7834005F430D /* TUIView+Animation.m in Sources */,
5EE983E413BE7834005F430D /* TUIView+Event.m in Sources */,
- 5EE983E513BE7834005F430D /* TUIView+NSTextInputClient.m in Sources */,
5EE983E613BE7834005F430D /* TUIView+PasteboardDragging.m in Sources */,
5EE983E813BE7834005F430D /* TUIView.m in Sources */,
5EE983E913BE7834005F430D /* TUIViewController.m in Sources */,
5EE983EA13BE7834005F430D /* TUIViewNSViewContainer.m in Sources */,
- 886EBA8413D64393006DE018 /* TUIControl+Private.m in Sources */,
8819794913E26E0200AA39EB /* TUIView+Accessibility.m in Sources */,
8819795113E26E5800AA39EB /* TUINSView+Accessibility.m in Sources */,
88CC1F3413E365B600827793 /* TUIControl+Accessibility.m in Sources */,
@@ -1321,6 +1390,13 @@
D05DEE9115BF645D005D8769 /* TUIStretchableImage.m in Sources */,
D05D23A515BF7239000ED14F /* NSImage+TUIExtensions.m in Sources */,
D0EA12F615C34FEA00FAA603 /* NSColor+TUIExtensions.m in Sources */,
+ 488A5838162FBE9B006CBF8B /* TUITableViewController.m in Sources */,
+ 48694D7A1658318000BE65BF /* NSAffineTransform+TUIExtensions.m in Sources */,
+ 48694D801658318000BE65BF /* NSShadow+TUIExtensions.m in Sources */,
+ 48694D92165832B800BE65BF /* NSBezierPath+TUIExtensions.m in Sources */,
+ 4820110A165974A400CFDC11 /* NSFont+TUIExtensions.m in Sources */,
+ 48886B3B1682AA550026426D /* TUISlider.m in Sources */,
+ 07933D9916F2128C0041A13F /* TUITableViewMultiselection+Cell.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1333,20 +1409,17 @@
CBB74C9613BE6E1900C85CB5 /* TUIAccessibility.m in Sources */,
CBB74C9813BE6E1900C85CB5 /* TUIActivityIndicatorView.m in Sources */,
CBB74C9A13BE6E1900C85CB5 /* TUIAttributedString.m in Sources */,
- CBB74C9B13BE6E1900C85CB5 /* TUIButton+Content.m in Sources */,
CBB74C9D13BE6E1900C85CB5 /* TUIButton.m in Sources */,
CBB74C9F13BE6E1900C85CB5 /* TUICGAdditions.m in Sources */,
- CBB74CA213BE6E1900C85CB5 /* TUIControl+TargetAction.m in Sources */,
CBB74CA413BE6E1900C85CB5 /* TUIControl.m in Sources */,
CBB74CAA13BE6E1900C85CB5 /* TUIGeometry.m in Sources */,
CBB74CB013BE6E1900C85CB5 /* TUIImageView.m in Sources */,
- CBB74CB213BE6E1900C85CB5 /* TUIKit.m in Sources */,
CBB74CB413BE6E1900C85CB5 /* TUILabel.m in Sources */,
CBB74CB613BE6E1900C85CB5 /* TUINSView+Hyperfocus.m in Sources */,
CBB74CB913BE6E1900C85CB5 /* TUINSView.m in Sources */,
CBB74CBB13BE6E1900C85CB5 /* TUINSWindow.m in Sources */,
CBB74CBD13BE6E1900C85CB5 /* TUIResponder.m in Sources */,
- CBB74CBF13BE6E1900C85CB5 /* TUIScrollKnob.m in Sources */,
+ CBB74CBF13BE6E1900C85CB5 /* TUIScroller.m in Sources */,
CBB74CC113BE6E1900C85CB5 /* TUIScrollView.m in Sources */,
CBB74CC313BE6E1900C85CB5 /* TUIStringDrawing.m in Sources */,
CBB74CC513BE6E1900C85CB5 /* TUITableView+Additions.m in Sources */,
@@ -1362,12 +1435,10 @@
CBB74CD813BE6E1900C85CB5 /* TUITooltipWindow.m in Sources */,
CBB74CD913BE6E1900C85CB5 /* TUIView+Animation.m in Sources */,
CBB74CDB13BE6E1900C85CB5 /* TUIView+Event.m in Sources */,
- CBB74CDD13BE6E1900C85CB5 /* TUIView+NSTextInputClient.m in Sources */,
CBB74CDF13BE6E1900C85CB5 /* TUIView+PasteboardDragging.m in Sources */,
CBB74CE313BE6E1900C85CB5 /* TUIView.m in Sources */,
CBB74CE513BE6E1900C85CB5 /* TUIViewController.m in Sources */,
CBB74CE713BE6E1900C85CB5 /* TUIViewNSViewContainer.m in Sources */,
- 886EBA8213D64393006DE018 /* TUIControl+Private.m in Sources */,
8819794713E26E0200AA39EB /* TUIView+Accessibility.m in Sources */,
8819794F13E26E5800AA39EB /* TUINSView+Accessibility.m in Sources */,
88CC1F3213E365B600827793 /* TUIControl+Accessibility.m in Sources */,
@@ -1379,7 +1450,6 @@
884E8F5515387E11000F7A8D /* TUIPopover.m in Sources */,
884E8F5E1538809C000F7A8D /* CAAnimation+TUIExtensions.m in Sources */,
30D399C9156D8ADD006ECDAE /* TUIProgressBar.m in Sources */,
- 88D81D001577EF0D009D453B /* TUIStyledView.m in Sources */,
D0C7652715B6232100E7AC2C /* CALayer+TUIExtensions.m in Sources */,
D0C7652D15B6232100E7AC2C /* CATransaction+TUIExtensions.m in Sources */,
D0C7653615B624D900E7AC2C /* NSView+TUIExtensions.m in Sources */,
@@ -1397,6 +1467,13 @@
D05D23A315BF7239000ED14F /* NSImage+TUIExtensions.m in Sources */,
887C227C15C1C7BB006EC31D /* NSFont+TUIExtensions.m in Sources */,
D0EA12F415C34FEA00FAA603 /* NSColor+TUIExtensions.m in Sources */,
+ 488A5836162FBE9B006CBF8B /* TUITableViewController.m in Sources */,
+ 48694D781658318000BE65BF /* NSAffineTransform+TUIExtensions.m in Sources */,
+ 48694D7E1658318000BE65BF /* NSShadow+TUIExtensions.m in Sources */,
+ 48694D90165832B800BE65BF /* NSBezierPath+TUIExtensions.m in Sources */,
+ 48886B391682AA550026426D /* TUISlider.m in Sources */,
+ 07933D9716F2128C0041A13F /* TUITableViewMultiselection+Cell.m in Sources */,
+ D491662216FE76AD001A8CFD /* TUICarouselNavigationController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1405,7 +1482,6 @@
buildActionMask = 2147483647;
files = (
CB5B267113BE6DA300579B1E /* TwUITests.m in Sources */,
- 886EBA8513D64393006DE018 /* TUIControl+Private.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1418,20 +1494,17 @@
CB5E321D13BE70CA004B7899 /* TUIAccessibility.m in Sources */,
CB5E321F13BE70CA004B7899 /* TUIActivityIndicatorView.m in Sources */,
CB5E322113BE70CA004B7899 /* TUIAttributedString.m in Sources */,
- CB5E322213BE70CA004B7899 /* TUIButton+Content.m in Sources */,
CB5E322413BE70CA004B7899 /* TUIButton.m in Sources */,
CB5E322613BE70CA004B7899 /* TUICGAdditions.m in Sources */,
- CB5E322913BE70CA004B7899 /* TUIControl+TargetAction.m in Sources */,
CB5E322B13BE70CA004B7899 /* TUIControl.m in Sources */,
CB5E323113BE70CA004B7899 /* TUIGeometry.m in Sources */,
CB5E323713BE70CA004B7899 /* TUIImageView.m in Sources */,
- CB5E323913BE70CA004B7899 /* TUIKit.m in Sources */,
CB5E323B13BE70CA004B7899 /* TUILabel.m in Sources */,
CB5E323D13BE70CA004B7899 /* TUINSView+Hyperfocus.m in Sources */,
CB5E324013BE70CA004B7899 /* TUINSView.m in Sources */,
CB5E324213BE70CA004B7899 /* TUINSWindow.m in Sources */,
CB5E324413BE70CA004B7899 /* TUIResponder.m in Sources */,
- CB5E324613BE70CA004B7899 /* TUIScrollKnob.m in Sources */,
+ CB5E324613BE70CA004B7899 /* TUIScroller.m in Sources */,
CB5E324813BE70CA004B7899 /* TUIScrollView.m in Sources */,
CB5E324A13BE70CA004B7899 /* TUIStringDrawing.m in Sources */,
CB5E324C13BE70CA004B7899 /* TUITableView+Additions.m in Sources */,
@@ -1447,12 +1520,10 @@
CB5E325F13BE70CA004B7899 /* TUITooltipWindow.m in Sources */,
CB5E326013BE70CA004B7899 /* TUIView+Animation.m in Sources */,
CB5E326213BE70CA004B7899 /* TUIView+Event.m in Sources */,
- CB5E326413BE70CA004B7899 /* TUIView+NSTextInputClient.m in Sources */,
CB5E326613BE70CA004B7899 /* TUIView+PasteboardDragging.m in Sources */,
CB5E326A13BE70CA004B7899 /* TUIView.m in Sources */,
CB5E326C13BE70CA004B7899 /* TUIViewController.m in Sources */,
CB5E326E13BE70CA004B7899 /* TUIViewNSViewContainer.m in Sources */,
- 886EBA8313D64393006DE018 /* TUIControl+Private.m in Sources */,
8819794813E26E0200AA39EB /* TUIView+Accessibility.m in Sources */,
8819795013E26E5800AA39EB /* TUINSView+Accessibility.m in Sources */,
88CC1F3313E365B600827793 /* TUIControl+Accessibility.m in Sources */,
@@ -1478,6 +1549,13 @@
D05DEE9015BF645D005D8769 /* TUIStretchableImage.m in Sources */,
D05D23A415BF7239000ED14F /* NSImage+TUIExtensions.m in Sources */,
D0EA12F515C34FEA00FAA603 /* NSColor+TUIExtensions.m in Sources */,
+ 488A5837162FBE9B006CBF8B /* TUITableViewController.m in Sources */,
+ 48694D791658318000BE65BF /* NSAffineTransform+TUIExtensions.m in Sources */,
+ 48694D7F1658318000BE65BF /* NSShadow+TUIExtensions.m in Sources */,
+ 48694D91165832B800BE65BF /* NSBezierPath+TUIExtensions.m in Sources */,
+ 48201109165974A300CFDC11 /* NSFont+TUIExtensions.m in Sources */,
+ 48886B3A1682AA550026426D /* TUISlider.m in Sources */,
+ 07933D9816F2128C0041A13F /* TUITableViewMultiselection+Cell.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1524,6 +1602,7 @@
5EE983BD13BE7809005F430D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "Resources/TwUI-Prefix.pch";
PRODUCT_NAME = twui;
};
@@ -1532,6 +1611,7 @@
5EE983BE13BE7809005F430D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "Resources/TwUI-Prefix.pch";
PRODUCT_NAME = twui;
};
@@ -1543,7 +1623,6 @@
ALWAYS_SEARCH_USER_PATHS = YES;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
- COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
@@ -1575,7 +1654,6 @@
ALWAYS_SEARCH_USER_PATHS = YES;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
- COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1602,6 +1680,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_VERSION = A;
GCC_PREFIX_HEADER = "Resources/TwUI-Prefix.pch";
INFOPLIST_FILE = "Resources/TwUI-Info.plist";
@@ -1617,6 +1696,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_VERSION = A;
GCC_PREFIX_HEADER = "Resources/TwUI-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = NS_BLOCK_ASSERTIONS;
@@ -1633,6 +1713,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
+ COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
GCC_PREFIX_HEADER = "TwUITests/TwUITests-Prefix.pch";
HEADER_SEARCH_PATHS = (
@@ -1650,6 +1731,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
+ COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
GCC_PREFIX_HEADER = "TwUITests/TwUITests-Prefix.pch";
HEADER_SEARCH_PATHS = (
@@ -1667,6 +1749,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ COMBINE_HIDPI_IMAGES = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
GCC_DYNAMIC_NO_PIC = NO;
@@ -1689,6 +1772,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
@@ -1712,7 +1796,6 @@
ALWAYS_SEARCH_USER_PATHS = YES;
ARCHS = "$(ARCHS_STANDARD_64_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
- COMBINE_HIDPI_IMAGES = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_COMPATIBILITY_VERSION = 1;
@@ -1739,6 +1822,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_VERSION = A;
GCC_PREFIX_HEADER = "Resources/TwUI-Prefix.pch";
GCC_PREPROCESSOR_DEFINITIONS = NS_BLOCK_ASSERTIONS;
@@ -1755,6 +1839,7 @@
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
+ COMBINE_HIDPI_IMAGES = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
@@ -1775,6 +1860,7 @@
D03FC4BE1602EA0100BCFA73 /* Profile */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ COMBINE_HIDPI_IMAGES = YES;
GCC_PREFIX_HEADER = "Resources/TwUI-Prefix.pch";
PRODUCT_NAME = twui;
};
@@ -1784,6 +1870,7 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_OBJC_ARC = YES;
+ COMBINE_HIDPI_IMAGES = YES;
FRAMEWORK_SEARCH_PATHS = "$(DEVELOPER_LIBRARY_DIR)/Frameworks";
GCC_PREFIX_HEADER = "TwUITests/TwUITests-Prefix.pch";
HEADER_SEARCH_PATHS = (
View
0  TwUI.xcodeproj/project.xcworkspace/contents.xcworkspacedata 100644 → 100755
File mode changed
View
0  TwUI.xcodeproj/xcshareddata/xcschemes/Dynamic Library.xcscheme 100644 → 100755
File mode changed
View
0  TwUI.xcodeproj/xcshareddata/xcschemes/Static Library.xcscheme 100644 → 100755
File mode changed
View
0  TwUI.xcodeproj/xcshareddata/xcschemes/TwUI.xcscheme 100644 → 100755
File mode changed
View
4 lib/Support/ABActiveRange.h
@@ -16,8 +16,8 @@
#import <Foundation/Foundation.h>
-typedef enum {
- ABActiveTextRangeFlavorUnknown = 0,
+typedef enum ABActiveTextRangeFlavor : NSUInteger {
+ ABActiveTextRangeFlavorUnknown,
ABActiveTextRangeFlavorURL,
ABActiveTextRangeFlavorEmail,
ABActiveTextRangeFlavorTwitterUsername,
View
2  lib/Support/ABActiveRange.m
@@ -35,7 +35,7 @@ - (id)copyWithZone:(NSZone *)zone
- (NSString *)description
{
- return [NSString stringWithFormat:@"<ABFlavoredRange %d %@ (%@)>", rangeFlavor, NSStringFromRange(rangeValue), displayString];
+ return [NSString stringWithFormat:@"<ABFlavoredRange %lu %@ (%@)>", (unsigned long)rangeFlavor, NSStringFromRange(rangeValue), displayString];
}
- (ABActiveTextRangeFlavor)rangeFlavor
View
10 lib/Support/CoreText+Additions.h
@@ -14,14 +14,10 @@
limitations under the License.
*/
-#if TARGET_OS_MAC
#import <ApplicationServices/ApplicationServices.h>
-#elif TARGET_OS_IPHONE
-#import <CoreText/CoreText.h>
-#endif
-typedef enum {
- AB_CTLineRectAggregationTypeInline = 0,
+typedef enum AB_CTLineRectAggregationType : NSUInteger {
+ AB_CTLineRectAggregationTypeInline,
AB_CTLineRectAggregationTypeBlock,
} AB_CTLineRectAggregationType;
@@ -30,6 +26,8 @@ extern CGSize AB_CTFrameGetSize(CTFrameRef frame);
extern CGFloat AB_CTFrameGetHeight(CTFrameRef frame);
extern CFIndex AB_CTFrameGetStringIndexForPosition(CTFrameRef frame, CGPoint p);
+extern void AB_CTFrameGetIndexForPositionInLine(NSString *string, CTFrameRef frame, CFIndex lineIndex, float xPosition, CFIndex *index);
+extern void AB_CTFrameGetLinePositionOfIndex(NSString *string, CTFrameRef frame, CFIndex index, CFIndex *lineIndex, float *xPosition);
extern void AB_CTFrameGetRectsForRange(CTFrameRef frame, CFRange range, CGRect rects[], CFIndex *rectCount);
extern void AB_CTFrameGetRectsForRangeWithAggregationType(CTFrameRef frame, CFRange range, AB_CTLineRectAggregationType aggregationType, CGRect rects[], CFIndex *rectCount);
extern void AB_CTLinesGetRectsForRangeWithAggregationType(NSArray *lines, CGPoint *lineOrigins, CGRect bounds, CFRange range, AB_CTLineRectAggregationType aggregationType, CGRect rects[], CFIndex *rectCount);
View
43 lib/Support/CoreText+Additions.m
@@ -88,10 +88,6 @@ CGFloat AB_CTFrameGetHeight(CTFrameRef f)
CFIndex AB_CTFrameGetStringIndexForPosition(CTFrameRef frame, CGPoint p)
{
-// p = (CGPoint){0, 0};
-// NSLog(@"checking p = %@", NSStringFromCGPoint(p));
-// CGRect f = [self frame];
-// NSLog(@"frame = %@", f);
NSArray *lines = (__bridge NSArray *)CTFrameGetLines(frame);
CFIndex linesCount = [lines count];
@@ -104,7 +100,6 @@ CFIndex AB_CTFrameGetStringIndexForPosition(CTFrameRef frame, CGPoint p)
for(CFIndex i = 0; i < linesCount; ++i) {
line = (__bridge CTLineRef)[lines objectAtIndex:i];
lineOrigin = lineOrigins[i];
-// NSLog(@"%d origin = %@", i, NSStringFromCGPoint(lineOrigin));
CGFloat descent, ascent;
CTLineGetTypographicBounds(line, &ascent, &descent, NULL);
if(p.y > (floor(lineOrigin.y) - floor(descent))) { // above bottom of line
@@ -145,6 +140,44 @@ static inline BOOL RangeContainsIndex(CFRange range, CFIndex index)
return (a && b);
}
+void AB_CTFrameGetIndexForPositionInLine(NSString *string, CTFrameRef frame, CFIndex lineIndex, float xPosition, CFIndex *index)
+{
+ NSArray *lines = (__bridge NSArray *)CTFrameGetLines(frame);
+ CFIndex linesCount = [lines count];
+
+ if(lineIndex < linesCount) {
+ CTLineRef line = (__bridge CTLineRef)[lines objectAtIndex:lineIndex];
+ *index = CTLineGetStringIndexForPosition(line, CGPointMake(xPosition, 0));
+ } else {
+ *index = 0;
+ }
+}
+
+void AB_CTFrameGetLinePositionOfIndex(NSString *string, CTFrameRef frame, CFIndex index, CFIndex *lineIndex, float *xPosition)
+{
+ NSArray *lines = (__bridge NSArray *)CTFrameGetLines(frame);
+ CFIndex linesCount = [lines count];
+ CFIndex charCount = 0;
+ CFIndex count = 0;
+
+ for(CFIndex i = 0; i < linesCount; ++i) {
+ CTLineRef line = (__bridge CTLineRef)[lines objectAtIndex:i];
+ count = CTLineGetGlyphCount(line);
+
+ if((index >= charCount && index < charCount + count) || i == linesCount - 1) {
+ CGFloat offset = CTLineGetOffsetForStringIndex(line, index, NULL);
+ *lineIndex = i;
+ *xPosition = offset;
+ return;
+ }
+
+ charCount += count;
+ }
+
+ *lineIndex = -1;
+ *xPosition = 0;
+}
+
void AB_CTFrameGetRectsForRange(CTFrameRef frame, CFRange range, CGRect rects[], CFIndex *rectCount)
{
AB_CTFrameGetRectsForRangeWithAggregationType(frame, range, AB_CTLineRectAggregationTypeInline, rects, rectCount);
View
12 lib/UIKit/TUIKit.m → lib/UIKit/NSAffineTransform+TUIExtensions.h
@@ -14,4 +14,14 @@
limitations under the License.
*/
-BOOL AtLeastLion = NO;
+#import <Foundation/Foundation.h>
+
+@interface NSAffineTransform (TUIExtensions)
+
+// Creates an NSAffineTransform object with the passed CGAffineTransform.
++ (NSAffineTransform *)tui_transformWithCGAffineTransform:(CGAffineTransform)transform;
+
+// Creates an CGAffineTransform struct with the transform of the reciever.
+- (CGAffineTransform)tui_CGAffineTransform;
+
+@end
View
50 lib/UIKit/NSAffineTransform+TUIExtensions.m
@@ -0,0 +1,50 @@
+/*
+ Copyright 2011 Twitter, Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this work except in compliance with the License.
+ You may obtain a copy of the License in the LICENSE file, or at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "NSAffineTransform+TUIExtensions.h"
+
+@implementation NSAffineTransform (TUIExtensions)
+
++ (NSAffineTransform *)tui_transformWithCGAffineTransform:(CGAffineTransform)transform {
+ NSAffineTransform *affineTransform = [NSAffineTransform transform];
+ affineTransform.transformStruct = (NSAffineTransformStruct) {
+ .m11 = transform.a,
+ .m12 = transform.b,
+ .m21 = transform.c,
+ .m22 = transform.d,
+ .tX = transform.tx,
+ .tY = transform.ty
+ };
+
+ return affineTransform;
+}
+
+- (CGAffineTransform)tui_CGAffineTransform {
+ NSAffineTransformStruct transform = self.transformStruct;
+
+ return (CGAffineTransform) {
+ .a = transform.m11,
+ .b = transform.m12,
+ .c = transform.m21,
+ .d = transform.m22,
+ .tx = transform.tX,
+ .ty = transform.tY
+ };
+}
+
+@end
+
+
View
44 lib/UIKit/NSBezierPath+TUIExtensions.h
@@ -0,0 +1,44 @@
+/*
+ Copyright 2011 Twitter, Inc.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this work except in compliance with the License.
+ You may obtain a copy of the License in the LICENSE file, or at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "TUICGAdditions.h"
+#import "NSShadow+TUIExtensions.h"
+
+@interface NSBezierPath (TUIExtensions)
+
+// Converts a CGPathRef into an NSBezierPath object and back.
++ (NSBezierPath *)tui_bezierPathWithCGPath:(CGPathRef)pathRef;
+- (CGPathRef)tui_CGPath CF_RETURNS_RETAINED;
+
+// Fills the given shadow inside the bezier path.
+- (void)tui_fillWithInnerShadow:(NSShadow *)shadow;
+
+// Draws a blurred "shadow" inside the bezier path with a color and radius.
+- (void)tui_drawBlurWithColor:(NSColor *)color radius:(CGFloat)radius;
+
+// Returns a bezier path with a rounded rectangle in the given
+// rect with the selected corners rounded at the given corner radii.
++ (NSBezierPath *)tui_bezierPathWithRoundedRect:(CGRect)rect
+ byRoundingCorners:(TUIRectCorner)corners
+ cornerRadii:(CGSize)cornerRadii;
+
+// Strokes the bezier path on the inside, instead of the standard outside stroke.
+- (void)tui_strokeInside;
+
+// Strokes the bezier path inside a clipped rectangle within the path's bounds.
+- (void)tui_strokeInsideWithinRect:(NSRect)clipRect;
+
+@end
View