├── Today ├── en.lproj │ ├── InfoPlist.strings │ ├── Credits.rtf │ └── MainMenu.xib ├── thingsToday.scpt ├── Today-Prefix.pch ├── main.m ├── AppDelegate.h ├── Today-Info.plist └── AppDelegate.m ├── TodayTests ├── en.lproj │ └── InfoPlist.strings ├── THGNSTests.h ├── THGNSTests.m └── TodayTests-Info.plist ├── README.md └── Today.xcodeproj ├── project.xcworkspace ├── xcuserdata │ └── connor.xcuserdatad │ │ ├── UserInterfaceState.xcuserstate │ │ └── WorkspaceSettings.xcsettings ├── contents.xcworkspacedata └── xcshareddata │ ├── IDEWorkspaceChecks.plist │ ├── WorkspaceSettings.xcsettings │ └── THGNS.xccheckout ├── xcuserdata └── connor.xcuserdatad │ ├── xcschemes │ └── xcschememanagement.plist │ └── xcdebugger │ ├── Breakpoints_v2.xcbkptlist │ └── Breakpoints.xcbkptlist ├── xcshareddata └── xcschemes │ └── Today.xcscheme └── project.pbxproj /Today/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Today/thingsToday.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/connor/Today/HEAD/Today/thingsToday.scpt -------------------------------------------------------------------------------- /TodayTests/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Example 2 | 3 | ![](http://f.cl.ly/items/1Z2H0A410J001Y0G343b/Screen%20Shot%202013-07-13%20at%207.42.26%20PM.png) 4 | -------------------------------------------------------------------------------- /Today/Today-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'THGNS' target in the 'THGNS' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /Today.xcodeproj/project.xcworkspace/xcuserdata/connor.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/connor/Today/HEAD/Today.xcodeproj/project.xcworkspace/xcuserdata/connor.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Today.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /TodayTests/THGNSTests.h: -------------------------------------------------------------------------------- 1 | // 2 | // TodayTests.h 3 | // TodayTests 4 | // 5 | // Created by Connor Montgomery on 7/13/13. 6 | // Copyright (c) 2013 Connor Montgomery. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface TodayTests : SenTestCase 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Today.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Today/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // Today 4 | // 5 | // Created by Connor Montgomery on 7/13/13. 6 | // Copyright (c) 2013 Connor Montgomery. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, char *argv[]) 12 | { 13 | return NSApplicationMain(argc, (const char **)argv); 14 | } 15 | -------------------------------------------------------------------------------- /Today.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Original 7 | PreviewsEnabled 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Today/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // Today 4 | // 5 | // Created by Connor Montgomery on 7/13/13. 6 | // Copyright (c) 2013 Connor Montgomery. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | @property (nonatomic) NSStatusItem *statusItem; 14 | @property (nonatomic) NSMutableArray *things; 15 | @property (nonatomic) IBOutlet NSMenu *statusItemMenu; 16 | @property (weak, nonatomic) NSTimer *statusTitleTimer; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Today/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /TodayTests/THGNSTests.m: -------------------------------------------------------------------------------- 1 | // 2 | // TodayTests.m 3 | // TodayTests 4 | // 5 | // Created by Connor Montgomery on 7/13/13. 6 | // Copyright (c) 2013 Connor Montgomery. All rights reserved. 7 | // 8 | 9 | #import "TodayTests.h" 10 | 11 | @implementation TodayTests 12 | 13 | - (void)setUp 14 | { 15 | [super setUp]; 16 | 17 | // Set-up code here. 18 | } 19 | 20 | - (void)tearDown 21 | { 22 | // Tear-down code here. 23 | 24 | [super tearDown]; 25 | } 26 | 27 | - (void)testExample 28 | { 29 | STFail(@"Unit tests are not implemented yet in TodayTests"); 30 | } 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Today.xcodeproj/project.xcworkspace/xcuserdata/connor.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildLocationStyle 6 | UseAppPreferences 7 | CustomBuildLocationType 8 | RelativeToDerivedData 9 | DerivedDataLocationStyle 10 | Default 11 | IssueFilterStyle 12 | ShowActiveSchemeOnly 13 | LiveSourceIssuesEnabled 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Today.xcodeproj/xcuserdata/connor.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Today.xcscheme_^#shared#^_ 8 | 9 | orderHint 10 | 1 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | B311A18517922DE500B961E3 16 | 17 | primary 18 | 19 | 20 | B311A1A517922DE600B961E3 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /TodayTests/TodayTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | com.connormontgomery.${PRODUCT_NAME:rfc1034identifier} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Today.xcodeproj/xcuserdata/connor.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /Today/Today-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.connormontgomery.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | LSUIElement 28 | 29 | NSHumanReadableCopyright 30 | Copyright © 2013 Connor Montgomery. All rights reserved. 31 | NSMainNibFile 32 | MainMenu 33 | NSPrincipalClass 34 | NSApplication 35 | NSAppleEventsUsageDescription 36 | THNGS runs Applescript to communicate with Things.app. 37 | 38 | 39 | -------------------------------------------------------------------------------- /Today.xcodeproj/project.xcworkspace/xcshareddata/THGNS.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | CD77DE73-29E1-4094-97F1-E6695DDCB006 9 | IDESourceControlProjectName 10 | THGNS 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | BA9CF763-EB78-4A95-BBE2-0A53836E6616 14 | ssh://github.com/connor/THNGS.git 15 | 16 | IDESourceControlProjectPath 17 | THGNS.xcodeproj/project.xcworkspace 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | BA9CF763-EB78-4A95-BBE2-0A53836E6616 21 | ../.. 22 | 23 | IDESourceControlProjectURL 24 | ssh://github.com/connor/THNGS.git 25 | IDESourceControlProjectVersion 26 | 110 27 | IDESourceControlProjectWCCIdentifier 28 | BA9CF763-EB78-4A95-BBE2-0A53836E6616 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | BA9CF763-EB78-4A95-BBE2-0A53836E6616 36 | IDESourceControlWCCName 37 | THGNS 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /Today.xcodeproj/xcuserdata/connor.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 16 | 17 | 29 | 30 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /Today.xcodeproj/xcshareddata/xcschemes/Today.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 43 | 45 | 51 | 52 | 53 | 54 | 60 | 62 | 68 | 69 | 70 | 71 | 73 | 74 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /Today/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // Today 4 | // 5 | // Created by Connor Montgomery on 7/13/13. 6 | // Copyright (c) 2013 Connor Montgomery. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | static NSString * const TITLE_KEY = @"title"; 12 | static NSString * const STATUS_KEY = @"status"; 13 | static NSString * const COMPLETED_SIGNATURE = @"tdio"; 14 | 15 | @implementation AppDelegate 16 | 17 | @synthesize statusItemMenu; 18 | @synthesize things; 19 | @synthesize statusItem; 20 | 21 | 22 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification 23 | { 24 | things = [[NSMutableArray alloc] init]; 25 | self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 26 | statusItem.menu = self.statusItemMenu; 27 | statusItem.highlightMode = YES; 28 | [self fetchAndSetThings]; 29 | [self setRandomStatusTitle]; 30 | [self resetStatusTitleTimer]; 31 | [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(fetchAndSetThings) userInfo:nil repeats:YES]; 32 | } 33 | 34 | - (void)resetStatusTitleTimer { 35 | if (self.statusTitleTimer != nil) { 36 | [self.statusTitleTimer invalidate]; 37 | } 38 | self.statusTitleTimer = [NSTimer scheduledTimerWithTimeInterval:300.0 target:self selector:@selector(setRandomStatusTitle) userInfo:nil repeats:YES]; 39 | } 40 | 41 | - (void)setRandomStatusTitle{ 42 | NSUInteger randomIndex = arc4random() % [things count]; 43 | NSDictionary *thing = [things objectAtIndex:randomIndex]; 44 | BOOL isCompletedAlready = [self isComplete:thing]; 45 | NSString *title = [self reasonablySizedVersionOfString:[thing objectForKey:TITLE_KEY]]; 46 | 47 | if (isCompletedAlready) { 48 | if ([self hasRemainingThings]) { 49 | [self setRandomStatusTitle]; 50 | return; 51 | } else { 52 | title = [NSString stringWithFormat:@"✓ — %@", title]; 53 | } 54 | } 55 | 56 | [self setStatusItemTitle:title]; 57 | } 58 | 59 | - (BOOL)hasRemainingThings { 60 | BOOL hasRemainingThings = NO; 61 | for (int i = 0; i < [things count]; i++) { 62 | if (![self isComplete:[things objectAtIndex:i]]) { 63 | hasRemainingThings = YES; 64 | } 65 | } 66 | return hasRemainingThings; 67 | } 68 | 69 | - (BOOL)isComplete:(NSDictionary *)thing { 70 | NSString *status = [thing objectForKey:STATUS_KEY]; 71 | return (![status isEqual:COMPLETED_SIGNATURE]); 72 | } 73 | 74 | - (void)reset { 75 | [things removeAllObjects]; 76 | [self removeAllItemsFromMenu]; 77 | } 78 | 79 | - (void)removeAllItemsFromMenu { 80 | [statusItemMenu removeAllItems]; 81 | } 82 | 83 | - (void)fetchAndSetThings{ 84 | NSString* path = [[NSBundle mainBundle] pathForResource:@"thingsToday" ofType:@"scpt"]; 85 | NSURL* url = [NSURL fileURLWithPath:path];NSDictionary* errors = [NSDictionary dictionary]; 86 | NSAppleScript* appleScript = [[NSAppleScript alloc] initWithContentsOfURL:url error:&errors]; 87 | NSAppleEventDescriptor *returnDescriptor = [appleScript executeAndReturnError:nil]; 88 | 89 | NSInteger numberOfItems = [returnDescriptor numberOfItems]; 90 | 91 | [self reset]; 92 | 93 | for (NSInteger x = 1; x < numberOfItems + 1; x += 3) { 94 | NSString *title = [[returnDescriptor descriptorAtIndex:x] stringValue]; 95 | NSString *status = [[returnDescriptor descriptorAtIndex:x + 1] stringValue]; 96 | NSString *id = [[returnDescriptor descriptorAtIndex:x + 2] stringValue]; 97 | 98 | NSDictionary *localThing = @{TITLE_KEY: title, STATUS_KEY: status, @"id": id}; 99 | [things addObject:localThing]; 100 | 101 | } 102 | 103 | NSArray* reversedThings = [[things reverseObjectEnumerator] allObjects]; 104 | 105 | for (int i = 0; i < [reversedThings count]; i++) { 106 | [self addItemToMenu:[reversedThings objectAtIndex:i]]; 107 | } 108 | 109 | NSMenuItem *separatorItem = [NSMenuItem separatorItem]; 110 | [statusItemMenu insertItem:separatorItem atIndex:[things count]]; 111 | [statusItemMenu insertItemWithTitle:@"Quit" action:@selector(onQuitClick:) keyEquivalent:@"q" atIndex:[things count] + 1]; 112 | } 113 | 114 | - (void)onQuitClick:(id)sender{ 115 | [[NSApplication sharedApplication] terminate:self]; 116 | } 117 | 118 | - (void)addItemToMenu:(NSDictionary*) thing{ 119 | NSString *title = [thing objectForKey:TITLE_KEY]; 120 | NSString *status = [thing objectForKey:STATUS_KEY]; 121 | 122 | NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:[self reasonablySizedVersionOfString:title] action:@selector(onStatusMenuItemClick:) keyEquivalent:@""]; 123 | 124 | [statusItemMenu setAutoenablesItems:NO]; 125 | 126 | if (![status isEqual: COMPLETED_SIGNATURE]) { 127 | [menuItem setEnabled:NO]; 128 | [menuItem setState:1]; 129 | } 130 | 131 | [statusItemMenu insertItem:menuItem atIndex:0]; 132 | 133 | } 134 | 135 | - (NSString *)reasonablySizedVersionOfString:(NSString *)originalString { 136 | NSInteger stringLength = [originalString length]; 137 | NSInteger stringMaxLength = 30; 138 | if (stringLength > stringMaxLength) { 139 | return [NSString stringWithFormat:@"%@…%@", 140 | [originalString substringWithRange:NSMakeRange(0, stringMaxLength)], 141 | [originalString substringWithRange:NSMakeRange(stringLength - stringMaxLength, 0)]]; 142 | } 143 | return [NSString stringWithString:originalString]; 144 | 145 | } 146 | 147 | - (void)setStatusItemTitle:(NSString *)title{ 148 | self.statusItem.title = title; 149 | } 150 | 151 | - (void)onStatusMenuItemClick: sender{ 152 | NSString *title = [sender title]; 153 | [self setStatusItemTitle:title]; 154 | [self resetStatusTitleTimer]; 155 | } 156 | 157 | @end 158 | -------------------------------------------------------------------------------- /Today.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | B311A18A17922DE500B961E3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311A18917922DE500B961E3 /* Cocoa.framework */; }; 11 | B311A19417922DE500B961E3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B311A19217922DE500B961E3 /* InfoPlist.strings */; }; 12 | B311A19617922DE500B961E3 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B311A19517922DE500B961E3 /* main.m */; }; 13 | B311A19A17922DE500B961E3 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B311A19817922DE500B961E3 /* Credits.rtf */; }; 14 | B311A19D17922DE500B961E3 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B311A19C17922DE500B961E3 /* AppDelegate.m */; }; 15 | B311A1A017922DE600B961E3 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = B311A19E17922DE600B961E3 /* MainMenu.xib */; }; 16 | B311A1A817922DE600B961E3 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311A1A717922DE600B961E3 /* SenTestingKit.framework */; }; 17 | B311A1A917922DE600B961E3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B311A18917922DE500B961E3 /* Cocoa.framework */; }; 18 | B311A1B117922DE600B961E3 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B311A1AF17922DE600B961E3 /* InfoPlist.strings */; }; 19 | B311A1B417922DE600B961E3 /* THGNSTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B311A1B317922DE600B961E3 /* THGNSTests.m */; }; 20 | B311A1BE17923DC200B961E3 /* thingsToday.scpt in Resources */ = {isa = PBXBuildFile; fileRef = B311A1BD17923DC200B961E3 /* thingsToday.scpt */; }; 21 | B3B46B012396E2B100605AB4 /* thingsToday.scpt in Sources */ = {isa = PBXBuildFile; fileRef = B311A1BD17923DC200B961E3 /* thingsToday.scpt */; }; 22 | /* End PBXBuildFile section */ 23 | 24 | /* Begin PBXContainerItemProxy section */ 25 | B311A1AA17922DE600B961E3 /* PBXContainerItemProxy */ = { 26 | isa = PBXContainerItemProxy; 27 | containerPortal = B311A17E17922DE500B961E3 /* Project object */; 28 | proxyType = 1; 29 | remoteGlobalIDString = B311A18517922DE500B961E3; 30 | remoteInfo = THGNS; 31 | }; 32 | /* End PBXContainerItemProxy section */ 33 | 34 | /* Begin PBXFileReference section */ 35 | B311A18617922DE500B961E3 /* Today.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Today.app; sourceTree = BUILT_PRODUCTS_DIR; }; 36 | B311A18917922DE500B961E3 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; 37 | B311A18C17922DE500B961E3 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; 38 | B311A18D17922DE500B961E3 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; 39 | B311A18E17922DE500B961E3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 40 | B311A19117922DE500B961E3 /* Today-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Today-Info.plist"; sourceTree = ""; }; 41 | B311A19317922DE500B961E3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 42 | B311A19517922DE500B961E3 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 43 | B311A19717922DE500B961E3 /* THGNS-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "THGNS-Prefix.pch"; sourceTree = ""; }; 44 | B311A19917922DE500B961E3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; 45 | B311A19B17922DE500B961E3 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 46 | B311A19C17922DE500B961E3 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 47 | B311A19F17922DE600B961E3 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; 48 | B311A1A617922DE600B961E3 /* TodayTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = TodayTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; 49 | B311A1A717922DE600B961E3 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; 50 | B311A1AE17922DE600B961E3 /* TodayTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "TodayTests-Info.plist"; sourceTree = ""; }; 51 | B311A1B017922DE600B961E3 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 52 | B311A1B217922DE600B961E3 /* THGNSTests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = THGNSTests.h; sourceTree = ""; }; 53 | B311A1B317922DE600B961E3 /* THGNSTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = THGNSTests.m; sourceTree = ""; }; 54 | B311A1BD17923DC200B961E3 /* thingsToday.scpt */ = {isa = PBXFileReference; lastKnownFileType = file; path = thingsToday.scpt; sourceTree = ""; }; 55 | B3B46B022396E38E00605AB4 /* Today-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Today-Prefix.pch"; path = "Today/Today-Prefix.pch"; sourceTree = ""; }; 56 | /* End PBXFileReference section */ 57 | 58 | /* Begin PBXFrameworksBuildPhase section */ 59 | B311A18317922DE500B961E3 /* Frameworks */ = { 60 | isa = PBXFrameworksBuildPhase; 61 | buildActionMask = 2147483647; 62 | files = ( 63 | B311A18A17922DE500B961E3 /* Cocoa.framework in Frameworks */, 64 | ); 65 | runOnlyForDeploymentPostprocessing = 0; 66 | }; 67 | B311A1A217922DE600B961E3 /* Frameworks */ = { 68 | isa = PBXFrameworksBuildPhase; 69 | buildActionMask = 2147483647; 70 | files = ( 71 | B311A1A817922DE600B961E3 /* SenTestingKit.framework in Frameworks */, 72 | B311A1A917922DE600B961E3 /* Cocoa.framework in Frameworks */, 73 | ); 74 | runOnlyForDeploymentPostprocessing = 0; 75 | }; 76 | /* End PBXFrameworksBuildPhase section */ 77 | 78 | /* Begin PBXGroup section */ 79 | B311A17D17922DE500B961E3 = { 80 | isa = PBXGroup; 81 | children = ( 82 | B3B46B022396E38E00605AB4 /* Today-Prefix.pch */, 83 | B311A18F17922DE500B961E3 /* Today */, 84 | B311A1AC17922DE600B961E3 /* TodayTests */, 85 | B311A18817922DE500B961E3 /* Frameworks */, 86 | B311A18717922DE500B961E3 /* Products */, 87 | ); 88 | sourceTree = ""; 89 | }; 90 | B311A18717922DE500B961E3 /* Products */ = { 91 | isa = PBXGroup; 92 | children = ( 93 | B311A18617922DE500B961E3 /* Today.app */, 94 | B311A1A617922DE600B961E3 /* TodayTests.octest */, 95 | ); 96 | name = Products; 97 | sourceTree = ""; 98 | }; 99 | B311A18817922DE500B961E3 /* Frameworks */ = { 100 | isa = PBXGroup; 101 | children = ( 102 | B311A18917922DE500B961E3 /* Cocoa.framework */, 103 | B311A1A717922DE600B961E3 /* SenTestingKit.framework */, 104 | B311A18B17922DE500B961E3 /* Other Frameworks */, 105 | ); 106 | name = Frameworks; 107 | sourceTree = ""; 108 | }; 109 | B311A18B17922DE500B961E3 /* Other Frameworks */ = { 110 | isa = PBXGroup; 111 | children = ( 112 | B311A18C17922DE500B961E3 /* AppKit.framework */, 113 | B311A18D17922DE500B961E3 /* CoreData.framework */, 114 | B311A18E17922DE500B961E3 /* Foundation.framework */, 115 | ); 116 | name = "Other Frameworks"; 117 | sourceTree = ""; 118 | }; 119 | B311A18F17922DE500B961E3 /* Today */ = { 120 | isa = PBXGroup; 121 | children = ( 122 | B311A1BD17923DC200B961E3 /* thingsToday.scpt */, 123 | B311A19B17922DE500B961E3 /* AppDelegate.h */, 124 | B311A19C17922DE500B961E3 /* AppDelegate.m */, 125 | B311A19E17922DE600B961E3 /* MainMenu.xib */, 126 | B311A19017922DE500B961E3 /* Supporting Files */, 127 | ); 128 | path = Today; 129 | sourceTree = ""; 130 | }; 131 | B311A19017922DE500B961E3 /* Supporting Files */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | B311A19117922DE500B961E3 /* Today-Info.plist */, 135 | B311A19217922DE500B961E3 /* InfoPlist.strings */, 136 | B311A19517922DE500B961E3 /* main.m */, 137 | B311A19717922DE500B961E3 /* THGNS-Prefix.pch */, 138 | B311A19817922DE500B961E3 /* Credits.rtf */, 139 | ); 140 | name = "Supporting Files"; 141 | sourceTree = ""; 142 | }; 143 | B311A1AC17922DE600B961E3 /* TodayTests */ = { 144 | isa = PBXGroup; 145 | children = ( 146 | B311A1B217922DE600B961E3 /* THGNSTests.h */, 147 | B311A1B317922DE600B961E3 /* THGNSTests.m */, 148 | B311A1AD17922DE600B961E3 /* Supporting Files */, 149 | ); 150 | path = TodayTests; 151 | sourceTree = ""; 152 | }; 153 | B311A1AD17922DE600B961E3 /* Supporting Files */ = { 154 | isa = PBXGroup; 155 | children = ( 156 | B311A1AE17922DE600B961E3 /* TodayTests-Info.plist */, 157 | B311A1AF17922DE600B961E3 /* InfoPlist.strings */, 158 | ); 159 | name = "Supporting Files"; 160 | sourceTree = ""; 161 | }; 162 | /* End PBXGroup section */ 163 | 164 | /* Begin PBXNativeTarget section */ 165 | B311A18517922DE500B961E3 /* Today */ = { 166 | isa = PBXNativeTarget; 167 | buildConfigurationList = B311A1B717922DE600B961E3 /* Build configuration list for PBXNativeTarget "Today" */; 168 | buildPhases = ( 169 | B311A18217922DE500B961E3 /* Sources */, 170 | B311A18317922DE500B961E3 /* Frameworks */, 171 | B311A18417922DE500B961E3 /* Resources */, 172 | ); 173 | buildRules = ( 174 | ); 175 | dependencies = ( 176 | ); 177 | name = Today; 178 | productName = THGNS; 179 | productReference = B311A18617922DE500B961E3 /* Today.app */; 180 | productType = "com.apple.product-type.application"; 181 | }; 182 | B311A1A517922DE600B961E3 /* TodayTests */ = { 183 | isa = PBXNativeTarget; 184 | buildConfigurationList = B311A1BA17922DE600B961E3 /* Build configuration list for PBXNativeTarget "TodayTests" */; 185 | buildPhases = ( 186 | B311A1A117922DE600B961E3 /* Sources */, 187 | B311A1A217922DE600B961E3 /* Frameworks */, 188 | B311A1A317922DE600B961E3 /* Resources */, 189 | B311A1A417922DE600B961E3 /* ShellScript */, 190 | ); 191 | buildRules = ( 192 | ); 193 | dependencies = ( 194 | B311A1AB17922DE600B961E3 /* PBXTargetDependency */, 195 | ); 196 | name = TodayTests; 197 | productName = THGNSTests; 198 | productReference = B311A1A617922DE600B961E3 /* TodayTests.octest */; 199 | productType = "com.apple.product-type.bundle"; 200 | }; 201 | /* End PBXNativeTarget section */ 202 | 203 | /* Begin PBXProject section */ 204 | B311A17E17922DE500B961E3 /* Project object */ = { 205 | isa = PBXProject; 206 | attributes = { 207 | LastUpgradeCheck = 0460; 208 | ORGANIZATIONNAME = "Connor Montgomery"; 209 | }; 210 | buildConfigurationList = B311A18117922DE500B961E3 /* Build configuration list for PBXProject "Today" */; 211 | compatibilityVersion = "Xcode 3.2"; 212 | developmentRegion = English; 213 | hasScannedForEncodings = 0; 214 | knownRegions = ( 215 | English, 216 | en, 217 | ); 218 | mainGroup = B311A17D17922DE500B961E3; 219 | productRefGroup = B311A18717922DE500B961E3 /* Products */; 220 | projectDirPath = ""; 221 | projectRoot = ""; 222 | targets = ( 223 | B311A18517922DE500B961E3 /* Today */, 224 | B311A1A517922DE600B961E3 /* TodayTests */, 225 | ); 226 | }; 227 | /* End PBXProject section */ 228 | 229 | /* Begin PBXResourcesBuildPhase section */ 230 | B311A18417922DE500B961E3 /* Resources */ = { 231 | isa = PBXResourcesBuildPhase; 232 | buildActionMask = 2147483647; 233 | files = ( 234 | B311A19417922DE500B961E3 /* InfoPlist.strings in Resources */, 235 | B311A19A17922DE500B961E3 /* Credits.rtf in Resources */, 236 | B311A1A017922DE600B961E3 /* MainMenu.xib in Resources */, 237 | B311A1BE17923DC200B961E3 /* thingsToday.scpt in Resources */, 238 | ); 239 | runOnlyForDeploymentPostprocessing = 0; 240 | }; 241 | B311A1A317922DE600B961E3 /* Resources */ = { 242 | isa = PBXResourcesBuildPhase; 243 | buildActionMask = 2147483647; 244 | files = ( 245 | B311A1B117922DE600B961E3 /* InfoPlist.strings in Resources */, 246 | ); 247 | runOnlyForDeploymentPostprocessing = 0; 248 | }; 249 | /* End PBXResourcesBuildPhase section */ 250 | 251 | /* Begin PBXShellScriptBuildPhase section */ 252 | B311A1A417922DE600B961E3 /* ShellScript */ = { 253 | isa = PBXShellScriptBuildPhase; 254 | buildActionMask = 2147483647; 255 | files = ( 256 | ); 257 | inputPaths = ( 258 | ); 259 | outputPaths = ( 260 | ); 261 | runOnlyForDeploymentPostprocessing = 0; 262 | shellPath = /bin/sh; 263 | shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; 264 | }; 265 | /* End PBXShellScriptBuildPhase section */ 266 | 267 | /* Begin PBXSourcesBuildPhase section */ 268 | B311A18217922DE500B961E3 /* Sources */ = { 269 | isa = PBXSourcesBuildPhase; 270 | buildActionMask = 2147483647; 271 | files = ( 272 | B3B46B012396E2B100605AB4 /* thingsToday.scpt in Sources */, 273 | B311A19617922DE500B961E3 /* main.m in Sources */, 274 | B311A19D17922DE500B961E3 /* AppDelegate.m in Sources */, 275 | ); 276 | runOnlyForDeploymentPostprocessing = 0; 277 | }; 278 | B311A1A117922DE600B961E3 /* Sources */ = { 279 | isa = PBXSourcesBuildPhase; 280 | buildActionMask = 2147483647; 281 | files = ( 282 | B311A1B417922DE600B961E3 /* THGNSTests.m in Sources */, 283 | ); 284 | runOnlyForDeploymentPostprocessing = 0; 285 | }; 286 | /* End PBXSourcesBuildPhase section */ 287 | 288 | /* Begin PBXTargetDependency section */ 289 | B311A1AB17922DE600B961E3 /* PBXTargetDependency */ = { 290 | isa = PBXTargetDependency; 291 | target = B311A18517922DE500B961E3 /* Today */; 292 | targetProxy = B311A1AA17922DE600B961E3 /* PBXContainerItemProxy */; 293 | }; 294 | /* End PBXTargetDependency section */ 295 | 296 | /* Begin PBXVariantGroup section */ 297 | B311A19217922DE500B961E3 /* InfoPlist.strings */ = { 298 | isa = PBXVariantGroup; 299 | children = ( 300 | B311A19317922DE500B961E3 /* en */, 301 | ); 302 | name = InfoPlist.strings; 303 | sourceTree = ""; 304 | }; 305 | B311A19817922DE500B961E3 /* Credits.rtf */ = { 306 | isa = PBXVariantGroup; 307 | children = ( 308 | B311A19917922DE500B961E3 /* en */, 309 | ); 310 | name = Credits.rtf; 311 | sourceTree = ""; 312 | }; 313 | B311A19E17922DE600B961E3 /* MainMenu.xib */ = { 314 | isa = PBXVariantGroup; 315 | children = ( 316 | B311A19F17922DE600B961E3 /* en */, 317 | ); 318 | name = MainMenu.xib; 319 | sourceTree = ""; 320 | }; 321 | B311A1AF17922DE600B961E3 /* InfoPlist.strings */ = { 322 | isa = PBXVariantGroup; 323 | children = ( 324 | B311A1B017922DE600B961E3 /* en */, 325 | ); 326 | name = InfoPlist.strings; 327 | sourceTree = ""; 328 | }; 329 | /* End PBXVariantGroup section */ 330 | 331 | /* Begin XCBuildConfiguration section */ 332 | B311A1B517922DE600B961E3 /* Debug */ = { 333 | isa = XCBuildConfiguration; 334 | buildSettings = { 335 | ALWAYS_SEARCH_USER_PATHS = NO; 336 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 337 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 338 | CLANG_CXX_LIBRARY = "libc++"; 339 | CLANG_ENABLE_OBJC_ARC = YES; 340 | CLANG_WARN_CONSTANT_CONVERSION = YES; 341 | CLANG_WARN_EMPTY_BODY = YES; 342 | CLANG_WARN_ENUM_CONVERSION = YES; 343 | CLANG_WARN_INT_CONVERSION = YES; 344 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 345 | COPY_PHASE_STRIP = NO; 346 | GCC_C_LANGUAGE_STANDARD = gnu99; 347 | GCC_DYNAMIC_NO_PIC = NO; 348 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 349 | GCC_OPTIMIZATION_LEVEL = 0; 350 | GCC_PREPROCESSOR_DEFINITIONS = ( 351 | "DEBUG=1", 352 | "$(inherited)", 353 | ); 354 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 355 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 356 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 357 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 358 | GCC_WARN_UNUSED_VARIABLE = YES; 359 | MACOSX_DEPLOYMENT_TARGET = 10.8; 360 | ONLY_ACTIVE_ARCH = YES; 361 | SDKROOT = macosx; 362 | }; 363 | name = Debug; 364 | }; 365 | B311A1B617922DE600B961E3 /* Release */ = { 366 | isa = XCBuildConfiguration; 367 | buildSettings = { 368 | ALWAYS_SEARCH_USER_PATHS = NO; 369 | ARCHS = "$(ARCHS_STANDARD_64_BIT)"; 370 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 371 | CLANG_CXX_LIBRARY = "libc++"; 372 | CLANG_ENABLE_OBJC_ARC = YES; 373 | CLANG_WARN_CONSTANT_CONVERSION = YES; 374 | CLANG_WARN_EMPTY_BODY = YES; 375 | CLANG_WARN_ENUM_CONVERSION = YES; 376 | CLANG_WARN_INT_CONVERSION = YES; 377 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 378 | COPY_PHASE_STRIP = YES; 379 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 380 | GCC_C_LANGUAGE_STANDARD = gnu99; 381 | GCC_ENABLE_OBJC_EXCEPTIONS = YES; 382 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 383 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 384 | GCC_WARN_UNINITIALIZED_AUTOS = YES; 385 | GCC_WARN_UNUSED_VARIABLE = YES; 386 | MACOSX_DEPLOYMENT_TARGET = 10.8; 387 | SDKROOT = macosx; 388 | }; 389 | name = Release; 390 | }; 391 | B311A1B817922DE600B961E3 /* Debug */ = { 392 | isa = XCBuildConfiguration; 393 | buildSettings = { 394 | COMBINE_HIDPI_IMAGES = YES; 395 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 396 | GCC_PREFIX_HEADER = "Today/Today-Prefix.pch"; 397 | INFOPLIST_FILE = "$(SRCROOT)/Today/Today-Info.plist"; 398 | PRODUCT_NAME = "$(TARGET_NAME)"; 399 | WRAPPER_EXTENSION = app; 400 | }; 401 | name = Debug; 402 | }; 403 | B311A1B917922DE600B961E3 /* Release */ = { 404 | isa = XCBuildConfiguration; 405 | buildSettings = { 406 | COMBINE_HIDPI_IMAGES = YES; 407 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 408 | GCC_PREFIX_HEADER = "Today/Today-Prefix.pch"; 409 | INFOPLIST_FILE = "$(SRCROOT)/Today/Today-Info.plist"; 410 | PRODUCT_NAME = "$(TARGET_NAME)"; 411 | WRAPPER_EXTENSION = app; 412 | }; 413 | name = Release; 414 | }; 415 | B311A1BB17922DE600B961E3 /* Debug */ = { 416 | isa = XCBuildConfiguration; 417 | buildSettings = { 418 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/THGNS.app/Contents/MacOS/THGNS"; 419 | COMBINE_HIDPI_IMAGES = YES; 420 | FRAMEWORK_SEARCH_PATHS = "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\""; 421 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 422 | GCC_PREFIX_HEADER = "THGNS/THGNS-Prefix.pch"; 423 | INFOPLIST_FILE = "THGNSTests/TodayTests-Info.plist"; 424 | PRODUCT_NAME = "$(TARGET_NAME)"; 425 | TEST_HOST = "$(BUNDLE_LOADER)"; 426 | WRAPPER_EXTENSION = octest; 427 | }; 428 | name = Debug; 429 | }; 430 | B311A1BC17922DE600B961E3 /* Release */ = { 431 | isa = XCBuildConfiguration; 432 | buildSettings = { 433 | BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/THGNS.app/Contents/MacOS/THGNS"; 434 | COMBINE_HIDPI_IMAGES = YES; 435 | FRAMEWORK_SEARCH_PATHS = "\"$(DEVELOPER_LIBRARY_DIR)/Frameworks\""; 436 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 437 | GCC_PREFIX_HEADER = "THGNS/THGNS-Prefix.pch"; 438 | INFOPLIST_FILE = "THGNSTests/TodayTests-Info.plist"; 439 | PRODUCT_NAME = "$(TARGET_NAME)"; 440 | TEST_HOST = "$(BUNDLE_LOADER)"; 441 | WRAPPER_EXTENSION = octest; 442 | }; 443 | name = Release; 444 | }; 445 | /* End XCBuildConfiguration section */ 446 | 447 | /* Begin XCConfigurationList section */ 448 | B311A18117922DE500B961E3 /* Build configuration list for PBXProject "Today" */ = { 449 | isa = XCConfigurationList; 450 | buildConfigurations = ( 451 | B311A1B517922DE600B961E3 /* Debug */, 452 | B311A1B617922DE600B961E3 /* Release */, 453 | ); 454 | defaultConfigurationIsVisible = 0; 455 | defaultConfigurationName = Release; 456 | }; 457 | B311A1B717922DE600B961E3 /* Build configuration list for PBXNativeTarget "Today" */ = { 458 | isa = XCConfigurationList; 459 | buildConfigurations = ( 460 | B311A1B817922DE600B961E3 /* Debug */, 461 | B311A1B917922DE600B961E3 /* Release */, 462 | ); 463 | defaultConfigurationIsVisible = 0; 464 | defaultConfigurationName = Release; 465 | }; 466 | B311A1BA17922DE600B961E3 /* Build configuration list for PBXNativeTarget "TodayTests" */ = { 467 | isa = XCConfigurationList; 468 | buildConfigurations = ( 469 | B311A1BB17922DE600B961E3 /* Debug */, 470 | B311A1BC17922DE600B961E3 /* Release */, 471 | ); 472 | defaultConfigurationIsVisible = 0; 473 | defaultConfigurationName = Release; 474 | }; 475 | /* End XCConfigurationList section */ 476 | }; 477 | rootObject = B311A17E17922DE500B961E3 /* Project object */; 478 | } 479 | -------------------------------------------------------------------------------- /Today/en.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 382 | 383 | 384 | 385 | 386 | 387 | 388 | 389 | 390 | 391 | 392 | 393 | 394 | 395 | 396 | 397 | 398 | 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 418 | 419 | 420 | 421 | 422 | 423 | 424 | 425 | 426 | 427 | 428 | 429 | 430 | 431 | 432 | 433 | 434 | 435 | 436 | 437 | 438 | 439 | 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 | 457 | 458 | 459 | 460 | 461 | 462 | 463 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 496 | 497 | 498 | 499 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 509 | 510 | 511 | 512 | 513 | 514 | 515 | 516 | 517 | 518 | 519 | 520 | 521 | 522 | Default 523 | 524 | 525 | 526 | 527 | 528 | 529 | Left to Right 530 | 531 | 532 | 533 | 534 | 535 | 536 | Right to Left 537 | 538 | 539 | 540 | 541 | 542 | 543 | 544 | 545 | 546 | 547 | Default 548 | 549 | 550 | 551 | 552 | 553 | 554 | Left to Right 555 | 556 | 557 | 558 | 559 | 560 | 561 | Right to Left 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 599 | 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | 612 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 624 | 625 | 626 | 627 | 628 | 629 | 630 | 631 | 632 | 633 | 634 | 635 | 636 | 637 | 638 | 639 | 640 | 641 | 642 | 643 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | --------------------------------------------------------------------------------