├── .gitignore ├── .gitmodules ├── Assets ├── Screenshot.png └── Zootool Icons.sketch │ ├── Data │ ├── Images │ ├── 2.png │ ├── 3.png │ └── 4.png │ ├── QuickLook │ ├── Preview.png │ └── Thumbnail.png │ ├── fonts │ └── version ├── Feeds.xcodeproj ├── project.pbxproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── Feeds ├── Account.h ├── Account.m ├── AccountCell.h ├── AccountCell.m ├── AppDelegate.h ├── AppDelegate.m ├── BasecampAccount.h ├── BasecampAccount.m ├── BasecampNextAccount.h ├── BasecampNextAccount.m ├── BeanstalkAccount.h ├── BeanstalkAccount.m ├── BitbucketAccount.h ├── BitbucketAccount.m ├── CG+Geometry.h ├── CG+Geometry.m ├── CreateAccountController.h ├── CreateAccountController.m ├── CreateAccountController.xib ├── DribbbleAccount.h ├── DribbbleAccount.m ├── DropmarkAccount.h ├── DropmarkAccount.m ├── ErrorReport.txt ├── Feed.h ├── Feed.m ├── Feeds-Info.plist ├── Feeds-Prefix.pch ├── FreshdeskAccount.h ├── FreshdeskAccount.m ├── GithubAccount.h ├── GithubAccount.m ├── Graphics │ ├── Accounts.icns │ ├── AlertCautionIcon.icns │ ├── ApplicationIcon.icns │ ├── Basecamp.png │ ├── Basecamp@2x.png │ ├── BasecampAccount.png │ ├── BasecampAccount@2x.png │ ├── BasecampNotify.png │ ├── BasecampNotify@2x.png │ ├── Beanstalk.png │ ├── Beanstalk@2x.png │ ├── BeanstalkAccount.png │ ├── BeanstalkAccount@2x.png │ ├── BeanstalkNotify.png │ ├── BeanstalkNotify@2x.png │ ├── Bitbucket.png │ ├── Bitbucket@2x.png │ ├── BitbucketAccount.png │ ├── BitbucketAccount@2x.png │ ├── BitbucketNotify.png │ ├── BitbucketNotify@2x.png │ ├── Default.png │ ├── Dribbble.png │ ├── Dribbble@2x.png │ ├── DribbbleAccount.png │ ├── DribbbleAccount@2x.png │ ├── DribbbleNotify.png │ ├── DribbbleNotify@2x.png │ ├── Dropmark.png │ ├── Dropmark@2x.png │ ├── DropmarkAccount.png │ ├── DropmarkAccount@2x.png │ ├── DropmarkNotify.png │ ├── DropmarkNotify@2x.png │ ├── Freshdesk.png │ ├── Freshdesk@2x.png │ ├── FreshdeskAccount.png │ ├── FreshdeskAccount@2x.png │ ├── FreshdeskNotify.png │ ├── FreshdeskNotify@2x.png │ ├── General.icns │ ├── Github.png │ ├── Github@2x.png │ ├── GithubAccount.png │ ├── GithubAccount@2x.png │ ├── GithubNotify.png │ ├── GithubNotify@2x.png │ ├── Highrise.png │ ├── Highrise@2x.png │ ├── HighriseAccount.png │ ├── HighriseAccount@2x.png │ ├── HighriseNotify.png │ ├── HighriseNotify@2x.png │ ├── PivotalTracker.png │ ├── PivotalTracker@2x.png │ ├── PivotalTrackerAccount.png │ ├── PivotalTrackerAccount@2x.png │ ├── PivotalTrackerNotify.png │ ├── PivotalTrackerNotify@2x.png │ ├── RSSAtom.png │ ├── RSSAtom@2x.png │ ├── RSSAtomAccount.png │ ├── RSSAtomAccount@2x.png │ ├── RSSAtomNotify.png │ ├── RSSAtomNotify@2x.png │ ├── Scholica.png │ ├── Scholica@2x.png │ ├── ScholicaAccount.png │ ├── ScholicaAccount@2x.png │ ├── ScholicaNotify.png │ ├── ScholicaNotify@2x.png │ ├── StatusItem.png │ ├── StatusItem@2x.png │ ├── StatusItemInactive.png │ ├── StatusItemInactive@2x.png │ ├── StatusItemSelected.png │ ├── StatusItemSelected@2x.png │ ├── StatusItemUnread.png │ ├── StatusItemUnread@2x.png │ ├── Trello.png │ ├── Trello@2x.png │ ├── TrelloAccount.png │ ├── TrelloAccount@2x.png │ ├── TrelloNotify.png │ ├── TrelloNotify@2x.png │ ├── Unread.png │ ├── Unread@2x.png │ ├── UserVoice.png │ ├── UserVoice@2x.png │ ├── UserVoiceAccount.png │ ├── UserVoiceAccount@2x.png │ ├── UserVoiceNotify.png │ ├── UserVoiceNotify@2x.png │ ├── Zendesk.png │ ├── Zendesk@2x.png │ ├── ZendeskAccount.png │ ├── ZendeskAccount@2x.png │ ├── ZendeskNotify.png │ └── ZendeskNotify@2x.png ├── Growl Registration Ticket.growlRegDict ├── HighriseAccount.h ├── HighriseAccount.m ├── ISO8601DateFormatter.h ├── ISO8601DateFormatter.m ├── LoginItems.h ├── LoginItems.m ├── MyClass.h ├── MyClass.m ├── NSAlert+Foreground.h ├── NSAlert+Foreground.m ├── NSArray+Linqish.h ├── NSArray+Linqish.m ├── NSData+ObjectFromJSONData.h ├── NSData+ObjectFromJSONData.m ├── NSDate+InternetDateTime.h ├── NSDate+InternetDateTime.m ├── NSDate+TimeAgo.h ├── NSDate+TimeAgo.m ├── NSDictionary+JSONString.h ├── NSDictionary+JSONString.m ├── NSString+Base64.h ├── NSString+Base64.m ├── NSString+EmailValidation.h ├── NSString+EmailValidation.m ├── NSString+English.h ├── NSString+English.m ├── NSString+EntityDecoding.h ├── NSString+EntityDecoding.m ├── NSString+ObjectFromJSONString.h ├── NSString+ObjectFromJSONString.m ├── NSString+Truncated.h ├── NSString+Truncated.m ├── NSString+URLArgument.h ├── NSString+URLArgument.m ├── NSURLRequest+Authorization.h ├── NSURLRequest+Authorization.m ├── NSView+PrintHierarchy.h ├── NSView+PrintHierarchy.m ├── OAuth2Token.h ├── OAuth2Token.m ├── PivotalTrackerAccount.h ├── PivotalTrackerAccount.m ├── Popover │ ├── Popover.css │ └── Popover.html ├── PreferencesController.h ├── PreferencesController.m ├── Prefs.h ├── RSSAtomAccount.h ├── RSSAtomAccount.m ├── Reachability.h ├── Reachability.m ├── RegexKitLite.h ├── RegexKitLite.m ├── ScholicaAccount.h ├── ScholicaAccount.m ├── StatusItemView.h ├── StatusItemView.m ├── TrelloAccount.h ├── TrelloAccount.m ├── UserVoiceAccount.h ├── UserVoiceAccount.m ├── ZendeskAccount.h ├── ZendeskAccount.m ├── en.lproj │ ├── App.xib │ ├── Credits.rtf │ ├── InfoPlist.strings │ ├── PreferencesController.xib │ └── PreferencesControllerBackup.xib └── main.m ├── Frameworks ├── Growl.framework │ ├── Growl │ ├── Headers │ ├── Resources │ └── Versions │ │ ├── A │ │ ├── Growl │ │ ├── Headers │ │ │ ├── Growl.h │ │ │ ├── GrowlApplicationBridge.h │ │ │ └── GrowlDefines.h │ │ ├── Resources │ │ │ └── Info.plist │ │ └── _CodeSignature │ │ │ └── CodeResources │ │ └── Current ├── ShortcutRecorder.framework │ ├── Headers │ ├── Resources │ ├── ShortcutRecorder │ └── Versions │ │ ├── A │ │ ├── Headers │ │ │ ├── SRCommon.h │ │ │ ├── SRKeyCodeTransformer.h │ │ │ ├── SRRecorderCell.h │ │ │ ├── SRRecorderControl.h │ │ │ ├── SRValidator.h │ │ │ ├── SR_LeopardView.h │ │ │ └── ShortcutRecorder.h │ │ ├── Resources │ │ │ └── Info.plist │ │ ├── ShortcutRecorder │ │ └── _CodeSignature │ │ │ └── CodeResources │ │ └── Current └── Sparkle.framework │ ├── Headers │ ├── Resources │ ├── Sparkle │ └── Versions │ ├── A │ ├── Headers │ │ ├── SUAppcast.h │ │ ├── SUAppcastItem.h │ │ ├── SUUpdater.h │ │ ├── SUVersionComparisonProtocol.h │ │ └── Sparkle.h │ ├── Resources │ │ ├── Info.plist │ │ ├── License.txt │ │ ├── SUModelTranslation.plist │ │ ├── SUStatus.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ ├── de.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── en.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── es.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── fr.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── Sparkle.strings │ │ │ └── fr.lproj │ │ ├── fr_CA.lproj │ │ ├── it.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── nl.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ ├── relaunch │ │ ├── ru.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ ├── classes.nib │ │ │ │ ├── info.nib │ │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ │ └── sv.lproj │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdateAlert.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ ├── classes.nib │ │ │ ├── info.nib │ │ │ └── keyedobjects.nib │ │ │ └── Sparkle.strings │ └── Sparkle │ └── Current ├── LICENSE ├── Libraries ├── DDHotKey │ ├── DDHotKey-Info.plist │ ├── DDHotKey.xcodeproj │ │ └── project.pbxproj │ ├── DDHotKeyAppDelegate.h │ ├── DDHotKeyAppDelegate.m │ ├── DDHotKeyCenter.h │ ├── DDHotKeyCenter.m │ ├── DDHotKey_Prefix.pch │ ├── English.lproj │ │ ├── InfoPlist.strings │ │ └── MainMenu.xib │ ├── README.markdown │ └── main.m ├── Hpple │ ├── TFHpple.h │ ├── TFHpple.m │ ├── TFHppleElement.h │ ├── TFHppleElement.m │ ├── XPathQuery.h │ └── XPathQuery.m ├── JSONKit │ ├── CHANGELOG.md │ └── README.md ├── Lumberjack │ ├── DDASLLogger.h │ ├── DDASLLogger.m │ ├── DDFileLogger.h │ ├── DDFileLogger.m │ ├── DDLog.h │ ├── DDLog.m │ ├── DDTTYLogger.h │ └── DDTTYLogger.m ├── SMWebRequest │ ├── README.md │ ├── SMWebRequest.h │ └── SMWebRequest.m ├── SMXMLDocument │ ├── README.md │ ├── SMXMLDocument.h │ └── SMXMLDocument.m └── ShortcutRecorder │ ├── README.md │ └── Shortcutrecorder Modified.zip ├── README.md ├── Website ├── app.yaml ├── appcast.py ├── css │ ├── bootstrap.less │ ├── normalize.css │ ├── style.css │ └── style.less ├── img │ ├── app-icon.png │ ├── app-menu-selection.png │ ├── app-menu.png │ ├── app-popover-image.jpg │ ├── app-popover-image.png │ ├── app-popover.png │ ├── arrow-1.png │ ├── arrow-2.png │ ├── arrow-down.png │ ├── bg-tile.jpg │ ├── bg-tile_gradient.jpg │ ├── buy-coming_soon.png │ ├── buy-sale.png │ ├── buy.png │ ├── checkmark.png │ ├── desktop-bg.jpg │ ├── desktop-menu_bar.png │ ├── download.png │ ├── feed.png │ ├── footer-life_buoy.png │ ├── footer-twitter.png │ ├── header-bg-tile.png │ ├── icon-256.png │ ├── icon-284.png │ ├── line-1px.png │ ├── line-gradient_horiz.png │ ├── line-gradient_vert_down.png │ ├── line-gradient_vert_up.png │ ├── rss.png │ ├── screenshot-1.jpg │ ├── screenshot-1_sm.png │ ├── screenshot-2.jpg │ ├── screenshot-2_sm.png │ ├── screenshot-3.jpg │ ├── screenshot-3_sm.png │ ├── service-basecamp.png │ ├── service-beanstalk.png │ ├── service-dribbble.png │ ├── service-dropmark.png │ ├── service-github.png │ ├── service-highrise.png │ ├── service-pivotaltracker.png │ ├── service-trello.png │ ├── service-uservoice.png │ ├── service-zendesk.png │ ├── star.png │ ├── wallpaper-macbook_air.png │ ├── wallpaper-option-1.jpg │ ├── wallpaper-option-2.jpg │ └── zoom │ │ ├── closebox.png │ │ ├── spacer.gif │ │ ├── zoom-caption-fill.png │ │ ├── zoom-caption-l.png │ │ ├── zoom-caption-r.png │ │ ├── zoom-shadow1.png │ │ ├── zoom-shadow2.png │ │ ├── zoom-shadow3.png │ │ ├── zoom-shadow4.png │ │ ├── zoom-shadow5.png │ │ ├── zoom-shadow6.png │ │ ├── zoom-shadow7.png │ │ ├── zoom-shadow8.png │ │ ├── zoom-spin-1.png │ │ ├── zoom-spin-10.png │ │ ├── zoom-spin-11.png │ │ ├── zoom-spin-12.png │ │ ├── zoom-spin-2.png │ │ ├── zoom-spin-3.png │ │ ├── zoom-spin-4.png │ │ ├── zoom-spin-5.png │ │ ├── zoom-spin-6.png │ │ ├── zoom-spin-7.png │ │ ├── zoom-spin-8.png │ │ └── zoom-spin-9.png ├── index.html ├── index.yaml └── js │ ├── FancyZoom.js │ ├── FancyZoomHTML.js │ ├── jquery.activity-indicator-1.0.0.js │ ├── jquery.activity-indicator-1.0.1.js │ ├── jquery.animate-enhanced.min.js │ └── less-1.1.5.min.js ├── appcast.xml └── deploy /.gitignore: -------------------------------------------------------------------------------- 1 | # Mac 2 | .DS_Store 3 | 4 | # Xcode 5 | build/ 6 | *.mode* 7 | *.pbxuser 8 | *~.nib 9 | xcuserdata 10 | *.xccheckout 11 | 12 | # Python 13 | *.pyc -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "XMLDocument"] 2 | path = XMLDocument 3 | url = git@github.com:nfarina/xmldocument.git 4 | [submodule "WebRequest"] 5 | path = WebRequest 6 | url = git@github.com:nfarina/webrequest.git 7 | -------------------------------------------------------------------------------- /Assets/Screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Screenshot.png -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/Data: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Zootool Icons.sketch/Data -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/Images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Zootool Icons.sketch/Images/2.png -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/Images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Zootool Icons.sketch/Images/3.png -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/Images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Zootool Icons.sketch/Images/4.png -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/QuickLook/Preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Zootool Icons.sketch/QuickLook/Preview.png -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/QuickLook/Thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Zootool Icons.sketch/QuickLook/Thumbnail.png -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/fonts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Assets/Zootool Icons.sketch/fonts -------------------------------------------------------------------------------- /Assets/Zootool Icons.sketch/version: -------------------------------------------------------------------------------- 1 | 10 -------------------------------------------------------------------------------- /Feeds.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Feeds/AccountCell.h: -------------------------------------------------------------------------------- 1 | 2 | @interface AccountCell : NSTextFieldCell 3 | @end 4 | -------------------------------------------------------------------------------- /Feeds/AppDelegate.h: -------------------------------------------------------------------------------- 1 | 2 | @interface AppDelegate : NSObject 3 | @end 4 | -------------------------------------------------------------------------------- /Feeds/BasecampAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface BasecampAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/BasecampAccount.m: -------------------------------------------------------------------------------- 1 | #import "BasecampAccount.h" 2 | 3 | @implementation BasecampAccount 4 | 5 | + (void)load { [Account registerClass:self]; } 6 | + (BOOL)requiresDomain { return YES; } 7 | + (BOOL)requiresUsername { return YES; } 8 | + (BOOL)requiresPassword { return YES; } 9 | + (NSString *)friendlyAccountName { return @"Basecamp Classic"; } 10 | + (NSString *)shortAccountName { return @"Basecamp"; } 11 | + (NSString *)domainSuffix { return @".basecamphq.com"; } 12 | 13 | - (void)validateWithPassword:(NSString *)password { 14 | 15 | NSString *URL = [NSString stringWithFormat:@"https://%@.basecamphq.com/me.xml", self.domain]; 16 | 17 | self.request = [SMWebRequest requestWithURLRequest:[NSURLRequest requestWithURLString:URL username:self.username password:password] delegate:nil context:NULL]; 18 | [self.request addTarget:self action:@selector(meRequestComplete:) forRequestEvents:SMWebRequestEventComplete]; 19 | [self.request addTarget:self action:@selector(meRequestError:) forRequestEvents:SMWebRequestEventError]; 20 | [self.request start]; 21 | } 22 | 23 | - (void)meRequestComplete:(NSData *)data { 24 | 25 | SMXMLDocument *document = [SMXMLDocument documentWithData:data error:NULL]; 26 | 27 | NSString *firstName = [document.root valueWithPath:@"first-name"]; 28 | NSString *lastName = [document.root valueWithPath:@"last-name"]; 29 | NSString *token = [document.root valueWithPath:@"token"]; 30 | 31 | NSString *mainFeedString = [NSString stringWithFormat:@"https://%@:%@@%@.basecamphq.com/feed/recent_items_rss", token, token, self.domain]; 32 | Feed *mainFeed = [Feed feedWithURLString:mainFeedString title:@"Latest Activity" account:self]; 33 | 34 | if ([firstName length] > 0 && [lastName length] > 0) 35 | mainFeed.author = [NSString stringWithFormat:@"%@ %@.", firstName, [lastName substringToIndex:1]]; 36 | 37 | self.feeds = @[mainFeed]; 38 | 39 | [self.delegate account:self validationDidCompleteWithNewPassword:nil]; 40 | } 41 | 42 | - (void)meRequestError:(NSError *)error { 43 | if (error.code == 404) 44 | [self.delegate account:self validationDidFailWithMessage:@"Could not log in to the given Basecamp account. Please check your domain, username, and password." field:0]; 45 | else 46 | [self.delegate account:self validationDidFailWithMessage:error.localizedDescription field:AccountFailingFieldUnknown]; 47 | } 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Feeds/BasecampNextAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface BasecampNextAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/BeanstalkAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface BeanstalkAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/BitbucketAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface BitbucketAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/CG+Geometry.h: -------------------------------------------------------------------------------- 1 | 2 | enum { 3 | // Alignment of the image within the bounding rect (default is centered in both directions) 4 | DrawInsideAlignLeft = 1 << 0, 5 | DrawInsideAlignRight = 1 << 1, 6 | DrawInsideAlignTop = 1 << 2, 7 | DrawInsideAlignBottom = 1 << 3, 8 | // Set this flag to allow stretching the image to larger than its natural size (may induce ugly artifacts) 9 | DrawInsideAllowStretch = 1 << 4, 10 | // Set this flag to allow cropping the image in either direction. This will cause the image to be sized based on 11 | // its smaller side; for instance, you could set this flag to draw Flickr-style "square thumbnails" for non-square images. 12 | DrawInsideUniformFill = 1 << 5, 13 | // Set this flag to prevent automatically snapping the resulting image rect to whole pixels. 14 | DrawInsideNoPixelSnap = 1 << 6 15 | }; 16 | typedef NSUInteger DrawInsideOptions; 17 | 18 | // Resizes the given CGSize such that one of its sides equals the corresponding side in containingSize. If 19 | // uniformFill is true, then the resulting size is guaranteed to be equal to or larger the targetSize, otherwise 20 | // the resulting size is guaranteed to be smaller. 21 | extern CGSize CGSizeResize(CGSize size, CGSize targetSize, bool uniformFill); 22 | 23 | // Returns a rect with the given content size, positioned in the center of the given rect (which could be smaller) 24 | extern CGRect CGRectCenteredInside(CGRect rect, CGSize contentSize); 25 | 26 | // Positions the box of the given size inside the given rect with additional options. 27 | extern CGRect CGRectPositionedInside(CGRect rect, CGSize contentSize, DrawInsideOptions options); 28 | 29 | // Returns a rect at 0,0 with the given CGSize. 30 | CG_INLINE CGRect 31 | CGRectMakeWithSize(CGSize size) { 32 | CGRect rect; 33 | rect.origin.x = 0; rect.origin.y = 0; 34 | rect.size = size; 35 | return rect; 36 | } 37 | 38 | // Returns a point with its values rounded to the nearest integer. 39 | extern CGPoint CGPointRounded(CGPoint point); 40 | 41 | // Returns a size with its values rounded to the nearest integer. 42 | extern CGSize CGSizeRounded(CGSize size); 43 | 44 | // Returns a rect with its values rounded to the nearest integer. 45 | extern CGRect CGRectRounded(CGRect rect); 46 | 47 | extern bool CGSizeSmallerThanSize(CGSize size1, CGSize size2); 48 | extern bool CGSizeLargerThanSize(CGSize size1, CGSize size2); -------------------------------------------------------------------------------- /Feeds/CreateAccountController.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @protocol CreateAccountControllerDelegate; 4 | 5 | @interface CreateAccountController : NSWindowController 6 | 7 | - (id)initWithDelegate:(id)delegate; 8 | 9 | @end 10 | 11 | 12 | @protocol CreateAccountControllerDelegate 13 | 14 | - (void)createAccountControllerDidCancel:(CreateAccountController *)controller; 15 | - (void)createAccountController:(CreateAccountController *)controller didCompleteWithAccount:(Account *)account; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Feeds/DribbbleAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface DribbbleAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/DribbbleAccount.m: -------------------------------------------------------------------------------- 1 | #import "DribbbleAccount.h" 2 | 3 | @implementation DribbbleAccount 4 | 5 | + (void)load { [Account registerClass:self]; } 6 | + (BOOL)requiresUsername { return YES; } 7 | + (NSTimeInterval)defaultRefreshInterval { return 15*60; } // 15 minutes to respect dribbble's request. 8 | 9 | - (void)validateWithPassword:(NSString *)password { 10 | 11 | NSString *URL = [NSString stringWithFormat:@"http://dribbble.com/%@/shots/following.rss", self.username]; 12 | 13 | self.request = [SMWebRequest requestWithURL:[NSURL URLWithString:URL] delegate:nil context:NULL]; 14 | [self.request addTarget:self action:@selector(meRequestComplete:) forRequestEvents:SMWebRequestEventComplete]; 15 | [self.request addTarget:self action:@selector(meRequestError:) forRequestEvents:SMWebRequestEventError]; 16 | [self.request start]; 17 | } 18 | 19 | - (void)meRequestComplete:(NSData *)data { 20 | 21 | self.feeds = @[[Feed feedWithURLString:[NSString stringWithFormat:@"http://dribbble.com/%@/activity/incoming.rss", self.username] title:@"My Activity" account:self], 22 | [Feed feedWithURLString:[NSString stringWithFormat:@"http://dribbble.com/%@/shots/following.rss", self.username] title:@"Following Activity" account:self]]; 23 | 24 | [self.delegate account:self validationDidCompleteWithNewPassword:nil]; 25 | } 26 | 27 | - (void)meRequestError:(NSError *)error { 28 | if (error.code == 404) 29 | [self.delegate account:self validationDidFailWithMessage:@"Could not find the given Dribbble username." field:AccountFailingFieldUsername]; 30 | else 31 | [self.delegate account:self validationDidFailWithMessage:error.localizedDescription field:AccountFailingFieldUnknown]; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Feeds/DropmarkAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface DropmarkAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/DropmarkAccount.m: -------------------------------------------------------------------------------- 1 | #import "DropmarkAccount.h" 2 | 3 | @implementation DropmarkAccount 4 | 5 | + (void)load { [Account registerClass:self]; } 6 | + (BOOL)requiresUsername { return YES; } 7 | + (BOOL)requiresPassword { return YES; } 8 | + (NSString *)usernameLabel { return @"Email Address:"; } 9 | 10 | - (void)validateWithPassword:(NSString *)password { 11 | 12 | if (![self.username isValidEmailAddress]) { 13 | [self.delegate account:self validationDidFailWithMessage:@"Please enter a valid email address." field:AccountFailingFieldUsername]; 14 | return; 15 | } 16 | 17 | NSString *URL = @"https://app.dropmark.com/activity.rss"; 18 | 19 | self.request = [SMWebRequest requestWithURLRequest:[NSURLRequest requestWithURLString:URL username:self.username password:password] delegate:nil context:password]; 20 | [self.request addTarget:self action:@selector(rssRequestComplete:password:) forRequestEvents:SMWebRequestEventComplete]; 21 | [self.request addTarget:self action:@selector(rssRequestError:) forRequestEvents:SMWebRequestEventError]; 22 | [self.request start]; 23 | } 24 | 25 | - (void)rssRequestComplete:(NSData *)data password:(NSString *)password { 26 | 27 | SMXMLDocument *document = [SMXMLDocument documentWithData:data error:NULL]; 28 | NSString *title = [document.root valueWithPath:@"channel.title"]; 29 | NSString *author = [title stringByReplacingOccurrencesOfString:@"Dropmark activity for " withString:@""]; 30 | 31 | NSString *URL = @"https://app.dropmark.com/activity.rss"; 32 | 33 | Feed *feed = [Feed feedWithURLString:URL title:@"All Activity" author:author account:self]; 34 | feed.requiresBasicAuth = YES; 35 | self.feeds = @[feed]; 36 | 37 | [self.delegate account:self validationDidCompleteWithNewPassword:password]; 38 | } 39 | 40 | - (void)rssRequestError:(NSError *)error { 41 | if (error.code == 401) 42 | [self.delegate account:self validationDidFailWithMessage:@"Could not log in to the given Dropmark account. Please check your email address and password." field:0]; 43 | else 44 | [self.delegate account:self validationDidFailWithMessage:error.localizedDescription field:AccountFailingFieldUnknown]; 45 | } 46 | 47 | @end 48 | -------------------------------------------------------------------------------- /Feeds/ErrorReport.txt: -------------------------------------------------------------------------------- 1 | 2 | Please describe what you were doing when the problem happened: 3 | 4 | 5 | 6 | 7 | -------- Diagnostic Data Follows -------- 8 | 9 | -------------------------------------------------------------------------------- /Feeds/Feed.h: -------------------------------------------------------------------------------- 1 | 2 | @class Account; 3 | 4 | extern NSString *kFeedUpdatedNotification; 5 | 6 | NSDate *AutoFormatDate(NSString *dateString); 7 | 8 | @interface Feed : NSObject 9 | 10 | // stored properties 11 | @property (nonatomic, strong) NSURL *URL; 12 | @property (nonatomic, copy) NSString *title, *author; 13 | @property (nonatomic, copy) NSDictionary *requestHeaders; 14 | @property (nonatomic, assign) BOOL disabled, requiresBasicAuth, requiresOAuth2Token, incremental; 15 | 16 | // used only at runtime 17 | @property (nonatomic, copy) NSArray *items; 18 | @property (nonatomic, unsafe_unretained) Account *account; 19 | 20 | + (Feed *)feedWithURLString:(NSString *)URLString title:(NSString *)title account:(Account *)account; 21 | + (Feed *)feedWithURLString:(NSString *)URLString title:(NSString *)title author:(NSString *)author account:(Account *)account; 22 | 23 | + (Feed *)feedWithDictionary:(NSDictionary *)dict account:(Account *)account; 24 | - (NSDictionary *)dictionaryRepresentation; 25 | 26 | + (NSArray *)feedItemsWithData:(NSData *)data discoveredTitle:(NSString **)title error:(NSError **)error; 27 | 28 | - (void)refresh; 29 | - (void)refreshWithURL:(NSURL *)refreshURL; // some accounts (like basecamp next) append things like "since=" to the "base" URL 30 | 31 | @end 32 | 33 | @interface FeedItem : NSObject 34 | 35 | @property (nonatomic, copy) NSString *identifier, *title, *author, *authorIdentifier, *project, *content, *rawDate; 36 | @property (nonatomic, strong) NSURL *link, *comments; 37 | @property (nonatomic, strong) NSDate *published, *updated; 38 | @property (nonatomic, assign) BOOL notified, viewed, authoredByMe; 39 | @property (nonatomic, unsafe_unretained) Feed *feed; 40 | 41 | @property (nonatomic, readonly) NSString *authorAndTitle; 42 | 43 | // creates a new FeedItem by parsing an XML element 44 | + (FeedItem *)itemWithRSSItemElement:(SMXMLElement *)element; 45 | + (FeedItem *)itemWithATOMEntryElement:(SMXMLElement *)element; 46 | 47 | - (NSComparisonResult)compareItemByPublishedDate:(FeedItem *)item; 48 | 49 | - (NSAttributedString *)attributedStringHighlighted:(BOOL)highlighted; 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /Feeds/Feeds-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | ApplicationIcon.icns 11 | CFBundleIdentifier 12 | com.feedsapp.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleURLTypes 22 | 23 | 24 | CFBundleURLSchemes 25 | 26 | feedsapp 27 | 28 | 29 | 30 | CFBundleVersion 31 | 2.1.2 32 | LSApplicationCategoryType 33 | public.app-category.productivity 34 | LSMinimumSystemVersion 35 | ${MACOSX_DEPLOYMENT_TARGET} 36 | LSUIElement 37 | 38 | NSAppTransportSecurity 39 | 40 | NSAllowsArbitraryLoads 41 | 42 | 43 | NSMainNibFile 44 | App 45 | NSPrincipalClass 46 | NSApplication 47 | SUFeedURL 48 | https://feedswww.appspot.com/appcast.xml 49 | 50 | 51 | -------------------------------------------------------------------------------- /Feeds/Feeds-Prefix.pch: -------------------------------------------------------------------------------- 1 | 2 | #ifdef __OBJC__ 3 | #import 4 | #import 5 | #import 6 | #import 7 | #import 8 | #import "DDLog.h" 9 | #import "DDASLLogger.h" 10 | #import "DDTTYLogger.h" 11 | #import "DDFileLogger.h" 12 | #import "DDHotKeyCenter.h" 13 | #import "NSDate+InternetDateTime.h" 14 | #import "SMWebRequest.h" 15 | #import "SMXMLDocument.h" 16 | #import "NSArray+Linqish.h" 17 | #import "NSString+EntityDecoding.h" 18 | #import "NSString+Base64.h" 19 | #import "NSString+English.h" 20 | #import "NSURLRequest+Authorization.h" 21 | #import "NSView+PrintHierarchy.h" 22 | #import "NSString+Truncated.h" 23 | #import "Reachability.h" 24 | #import "RegexKitLite.h" 25 | #import "CG+Geometry.h" 26 | #import "TFHpple.h" 27 | #import "ISO8601DateFormatter.h" 28 | #import "NSDate+TimeAgo.h" 29 | #import "NSString+URLArgument.h" 30 | #import "NSAlert+Foreground.h" 31 | #import "NSString+EmailValidation.h" 32 | #import "NSData+ObjectFromJSONData.h" 33 | #import "NSString+ObjectFromJSONString.h" 34 | #import "NSDictionary+JSONString.h" 35 | #endif 36 | 37 | #include "Prefs.h" 38 | 39 | // Compatibility stuff 40 | #define HAS_NOTIFICATION_CENTER (NSClassFromString(@"NSUserNotificationCenter") != nil) 41 | 42 | extern const int ddLogLevel; -------------------------------------------------------------------------------- /Feeds/FreshdeskAccount.h: -------------------------------------------------------------------------------- 1 | // 2 | // FreshdeskAccount.h 3 | // Feeds 4 | // 5 | // Created by Tom Schoffelen on 17-10-13. 6 | // 7 | 8 | #import "Account.h" 9 | 10 | @interface FreshdeskAccount : Account 11 | @property (nonatomic, assign) NSString *passw; 12 | @end 13 | -------------------------------------------------------------------------------- /Feeds/GithubAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface GithubAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/Graphics/Accounts.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Accounts.icns -------------------------------------------------------------------------------- /Feeds/Graphics/AlertCautionIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/AlertCautionIcon.icns -------------------------------------------------------------------------------- /Feeds/Graphics/ApplicationIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ApplicationIcon.icns -------------------------------------------------------------------------------- /Feeds/Graphics/Basecamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Basecamp.png -------------------------------------------------------------------------------- /Feeds/Graphics/Basecamp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Basecamp@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/BasecampAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BasecampAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/BasecampAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BasecampAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/BasecampNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BasecampNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/BasecampNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BasecampNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Beanstalk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Beanstalk.png -------------------------------------------------------------------------------- /Feeds/Graphics/Beanstalk@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Beanstalk@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/BeanstalkAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BeanstalkAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/BeanstalkAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BeanstalkAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/BeanstalkNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BeanstalkNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/BeanstalkNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BeanstalkNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Bitbucket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Bitbucket.png -------------------------------------------------------------------------------- /Feeds/Graphics/Bitbucket@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Bitbucket@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/BitbucketAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BitbucketAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/BitbucketAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BitbucketAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/BitbucketNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BitbucketNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/BitbucketNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/BitbucketNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Default.png -------------------------------------------------------------------------------- /Feeds/Graphics/Dribbble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Dribbble.png -------------------------------------------------------------------------------- /Feeds/Graphics/Dribbble@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Dribbble@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/DribbbleAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DribbbleAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/DribbbleAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DribbbleAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/DribbbleNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DribbbleNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/DribbbleNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DribbbleNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Dropmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Dropmark.png -------------------------------------------------------------------------------- /Feeds/Graphics/Dropmark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Dropmark@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/DropmarkAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DropmarkAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/DropmarkAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DropmarkAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/DropmarkNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DropmarkNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/DropmarkNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/DropmarkNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Freshdesk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Freshdesk.png -------------------------------------------------------------------------------- /Feeds/Graphics/Freshdesk@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Freshdesk@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/FreshdeskAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/FreshdeskAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/FreshdeskAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/FreshdeskAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/FreshdeskNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/FreshdeskNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/FreshdeskNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/FreshdeskNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/General.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/General.icns -------------------------------------------------------------------------------- /Feeds/Graphics/Github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Github.png -------------------------------------------------------------------------------- /Feeds/Graphics/Github@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Github@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/GithubAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/GithubAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/GithubAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/GithubAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/GithubNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/GithubNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/GithubNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/GithubNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Highrise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Highrise.png -------------------------------------------------------------------------------- /Feeds/Graphics/Highrise@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Highrise@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/HighriseAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/HighriseAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/HighriseAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/HighriseAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/HighriseNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/HighriseNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/HighriseNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/HighriseNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/PivotalTracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/PivotalTracker.png -------------------------------------------------------------------------------- /Feeds/Graphics/PivotalTracker@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/PivotalTracker@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/PivotalTrackerAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/PivotalTrackerAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/PivotalTrackerAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/PivotalTrackerAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/PivotalTrackerNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/PivotalTrackerNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/PivotalTrackerNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/PivotalTrackerNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/RSSAtom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/RSSAtom.png -------------------------------------------------------------------------------- /Feeds/Graphics/RSSAtom@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/RSSAtom@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/RSSAtomAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/RSSAtomAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/RSSAtomAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/RSSAtomAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/RSSAtomNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/RSSAtomNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/RSSAtomNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/RSSAtomNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Scholica.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Scholica.png -------------------------------------------------------------------------------- /Feeds/Graphics/Scholica@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Scholica@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/ScholicaAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ScholicaAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/ScholicaAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ScholicaAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/ScholicaNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ScholicaNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/ScholicaNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ScholicaNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItem.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItem@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItem@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItemInactive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItemInactive.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItemInactive@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItemInactive@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItemSelected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItemSelected.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItemSelected@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItemSelected@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItemUnread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItemUnread.png -------------------------------------------------------------------------------- /Feeds/Graphics/StatusItemUnread@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/StatusItemUnread@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Trello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Trello.png -------------------------------------------------------------------------------- /Feeds/Graphics/Trello@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Trello@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/TrelloAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/TrelloAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/TrelloAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/TrelloAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/TrelloNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/TrelloNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/TrelloNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/TrelloNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Unread.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Unread.png -------------------------------------------------------------------------------- /Feeds/Graphics/Unread@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Unread@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/UserVoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/UserVoice.png -------------------------------------------------------------------------------- /Feeds/Graphics/UserVoice@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/UserVoice@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/UserVoiceAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/UserVoiceAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/UserVoiceAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/UserVoiceAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/UserVoiceNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/UserVoiceNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/UserVoiceNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/UserVoiceNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/Zendesk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Zendesk.png -------------------------------------------------------------------------------- /Feeds/Graphics/Zendesk@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/Zendesk@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/ZendeskAccount.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ZendeskAccount.png -------------------------------------------------------------------------------- /Feeds/Graphics/ZendeskAccount@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ZendeskAccount@2x.png -------------------------------------------------------------------------------- /Feeds/Graphics/ZendeskNotify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ZendeskNotify.png -------------------------------------------------------------------------------- /Feeds/Graphics/ZendeskNotify@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Feeds/Graphics/ZendeskNotify@2x.png -------------------------------------------------------------------------------- /Feeds/Growl Registration Ticket.growlRegDict: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TicketVersion 6 | 1 7 | AllNotifications 8 | 9 | NewItem 10 | 11 | DefaultNotifications 12 | 13 | NewItem 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /Feeds/HighriseAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface HighriseAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/HighriseAccount.m: -------------------------------------------------------------------------------- 1 | #import "HighriseAccount.h" 2 | 3 | @implementation HighriseAccount 4 | 5 | + (void)load { [Account registerClass:self]; } 6 | + (BOOL)requiresDomain { return YES; } 7 | + (BOOL)requiresUsername { return YES; } 8 | + (BOOL)requiresPassword { return YES; } 9 | + (NSString *)domainSuffix { return @".highrisehq.com"; } 10 | 11 | - (void)validateWithPassword:(NSString *)password { 12 | 13 | NSString *URL = [NSString stringWithFormat:@"https://%@.highrisehq.com/me.xml", self.domain]; 14 | 15 | self.request = [SMWebRequest requestWithURLRequest:[NSURLRequest requestWithURLString:URL username:self.username password:password] delegate:nil context:NULL]; 16 | [self.request addTarget:self action:@selector(meRequestComplete:) forRequestEvents:SMWebRequestEventComplete]; 17 | [self.request addTarget:self action:@selector(meRequestError:) forRequestEvents:SMWebRequestEventError]; 18 | [self.request start]; 19 | } 20 | 21 | - (void)meRequestComplete:(NSData *)data { 22 | 23 | SMXMLDocument *document = [SMXMLDocument documentWithData:data error:NULL]; 24 | //NSLog(@"Document: %@", document); 25 | 26 | NSString *myName = [document.root valueWithPath:@"name"]; 27 | NSString *token = [document.root valueWithPath:@"token"]; 28 | 29 | NSString *firstName = nil, *lastName = nil; 30 | NSArray *parts = [myName componentsSeparatedByString:@" "]; 31 | 32 | if ([parts count] == 2) { 33 | firstName = parts[0]; 34 | lastName = parts[1]; 35 | } 36 | 37 | NSString *mainFeedString = [NSString stringWithFormat:@"https://%@:%@@%@.highrisehq.com/recordings.atom", token, token, self.domain]; 38 | Feed *mainFeed = [Feed feedWithURLString:mainFeedString title:@"Latest Activity" account:self]; 39 | 40 | if ([firstName length] > 0 && [lastName length] > 0) 41 | mainFeed.author = [NSString stringWithFormat:@"%@ %@.", firstName, [lastName substringToIndex:1]]; 42 | 43 | self.feeds = @[mainFeed]; 44 | 45 | [self.delegate account:self validationDidCompleteWithNewPassword:nil]; 46 | } 47 | 48 | - (void)meRequestError:(NSError *)error { 49 | if (error.code == 404) 50 | [self.delegate account:self validationDidFailWithMessage:@"Could not log in to the given Highrise account. Please check your domain, username, and password." field:0]; 51 | else 52 | [self.delegate account:self validationDidFailWithMessage:error.localizedDescription field:AccountFailingFieldUnknown]; 53 | } 54 | 55 | @end 56 | -------------------------------------------------------------------------------- /Feeds/LoginItems.h: -------------------------------------------------------------------------------- 1 | 2 | @interface LoginItems : NSObject 3 | 4 | + (LoginItems *)userLoginItems; 5 | 6 | @property (nonatomic) BOOL currentAppLaunchesAtStartup; 7 | 8 | @end 9 | -------------------------------------------------------------------------------- /Feeds/MyClass.h: -------------------------------------------------------------------------------- 1 | // 2 | // MyClass.h 3 | // 4 | // 5 | // Created by Nick Farina on 7/6/11. 6 | // Copyright 2011 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface MyClass : NSString 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Feeds/MyClass.m: -------------------------------------------------------------------------------- 1 | // 2 | // MyClass.m 3 | // 4 | // 5 | // Created by Nick Farina on 7/6/11. 6 | // Copyright 2011 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import "MyClass.h" 10 | 11 | @implementation MyClass 12 | 13 | - (id)init 14 | { 15 | self = [super init]; 16 | if (self) { 17 | // Initialization code here. 18 | } 19 | 20 | return self; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Feeds/NSAlert+Foreground.h: -------------------------------------------------------------------------------- 1 | 2 | @interface NSAlert (Foreground) 3 | 4 | - (NSInteger)runModalInForeground; 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /Feeds/NSAlert+Foreground.m: -------------------------------------------------------------------------------- 1 | #import "NSAlert+Foreground.h" 2 | 3 | @implementation NSAlert (Foreground) 4 | 5 | - (NSInteger)runModalInForeground 6 | { 7 | // Transform process from background to foreground 8 | ProcessSerialNumber psn = { 0, kCurrentProcess }; 9 | SetFrontProcess(&psn); 10 | 11 | return [self runModal]; 12 | } 13 | 14 | @end 15 | -------------------------------------------------------------------------------- /Feeds/NSArray+Linqish.h: -------------------------------------------------------------------------------- 1 | 2 | // Compatibility with non-clang compilers. 3 | #ifndef __has_feature 4 | #define __has_feature(x) 0 5 | #endif 6 | 7 | @interface NSArray (Linqish) 8 | 9 | // Just like Cocoa's lastObject. 10 | - (id)firstObject; 11 | 12 | #if NS_BLOCKS_AVAILABLE 13 | - (NSArray *)selectUsingBlock:(id (^)(id obj))block; 14 | - (id)aggregateUsingBlock:(id (^)(id accumulator, id obj))block; 15 | #endif 16 | 17 | // These methods only work when compiled without ARC. They will likely be removed at some point in the future. 18 | #if !__has_feature(objc_arc) 19 | // Asks this array to collect the result of sending objects from the array to the 'selector' on 'target'. 20 | // The array constructed from all the objects returned is what is passed back. Nil object results are skipped. 21 | - (NSArray *)collect:(SEL)selector on:(id)target; 22 | - (NSArray *)collect:(SEL)selector on:(id)target secondArgument:(id)arg; 23 | 24 | // Asks this array to filter the result of sending objects from the array to the 'selector' on 'target'. 25 | // The array constructed from all the objects for which the selector returned true is what is passed back. 26 | - (NSArray *)filter:(SEL)selector on:(id)target; 27 | - (NSArray *)filter:(SEL)selector on:(id)target secondArgument:(id)secondArgument; 28 | #endif 29 | 30 | // Creates an NSDictionary from this array where the keys are found under the property 'key'. 31 | // If the object has a nil value for its 'key' property, it will be excluded from the dictionary. 32 | - (NSDictionary *)indexedWithKey:(NSString *)key; 33 | 34 | // Creates an NSDictionary from this array where the keys are found under the property 'key', 35 | // and the values are NSArrays containing the set of objects with the key in common. 36 | // If the object has a nil value for its 'key' property, it will be excluded from the dictionary. 37 | - (NSDictionary *)groupedWithKey:(NSString *)key; 38 | 39 | // Searches this array front to back and returns the first object returning the given value 40 | // for the given selector (determined with isEqual:), or nil if none found. 41 | - (id)firstObjectWithValue:(id)value forSelector:(SEL)selector; 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Feeds/NSData+ObjectFromJSONData.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+ObjectFromJSONData.h 3 | // Feeds 4 | // 5 | // Created by Mark Goody on 16/04/2014. 6 | // Copyright (c) 2014 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSData (ObjectFromJSONData) 12 | 13 | - (id)objectFromJSONData; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Feeds/NSData+ObjectFromJSONData.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSData+ObjectFromJSONData.m 3 | // Feeds 4 | // 5 | // Created by Mark Goody on 16/04/2014. 6 | // Copyright (c) 2014 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import "NSData+ObjectFromJSONData.h" 10 | 11 | @implementation NSData (ObjectFromJSONData) 12 | 13 | - (id)objectFromJSONData 14 | { 15 | NSError *decodingError = nil; 16 | id object = [NSJSONSerialization JSONObjectWithData:self 17 | options:NSJSONReadingAllowFragments 18 | error:&decodingError]; 19 | 20 | if (object == nil && decodingError != nil) { 21 | NSLog(@"Error decoding JSON data"); 22 | } 23 | 24 | return object; 25 | } 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Feeds/NSDate+InternetDateTime.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDate+InternetDateTime.h 3 | // MWFeedParser 4 | // 5 | // Created by Michael Waterfall on 07/10/2010. 6 | // Copyright 2010 Michael Waterfall. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | // Formatting hints 12 | typedef enum { 13 | DateFormatHintNone, 14 | DateFormatHintRFC822, 15 | DateFormatHintRFC3339 16 | } DateFormatHint; 17 | 18 | // A category to parse internet date & time strings 19 | @interface NSDate (InternetDateTime) 20 | 21 | // Get date from RFC3339 or RFC822 string 22 | // - A format/specification hint can be used to speed up, 23 | // otherwise both will be attempted in order to get a date 24 | + (NSDate *)dateFromInternetDateTimeString:(NSString *)dateString 25 | formatHint:(DateFormatHint)hint; 26 | 27 | // Get date from a string using a specific date specification 28 | + (NSDate *)dateFromRFC3339String:(NSString *)dateString; 29 | + (NSDate *)dateFromRFC822String:(NSString *)dateString; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Feeds/NSDate+TimeAgo.h: -------------------------------------------------------------------------------- 1 | @interface NSDate (TimeAgo) 2 | -(NSString *)timeAgo; 3 | @end 4 | 5 | -------------------------------------------------------------------------------- /Feeds/NSDate+TimeAgo.m: -------------------------------------------------------------------------------- 1 | #import "NSDate+TimeAgo.h" 2 | 3 | @implementation NSDate (TimeAgo) 4 | 5 | 6 | -(NSString *)timeAgo { 7 | NSDate *now = [NSDate date]; 8 | double deltaSeconds = fabs([self timeIntervalSinceDate:now]); 9 | double deltaMinutes = deltaSeconds / 60.0f; 10 | 11 | if(deltaSeconds < 5) { 12 | return @"Just now"; 13 | } else if(deltaSeconds < 60) { 14 | return [NSString stringWithFormat:@"%d seconds ago", (int)deltaSeconds]; 15 | } else if(deltaSeconds < 120) { 16 | return @"A minute ago"; 17 | } else if (deltaMinutes < 60) { 18 | return [NSString stringWithFormat:@"%d minutes ago", (int)deltaMinutes]; 19 | } else if (deltaMinutes < 120) { 20 | return @"An hour ago"; 21 | } else if (deltaMinutes < (24 * 60)) { 22 | return [NSString stringWithFormat:@"%d hours ago", (int)floor(deltaMinutes/60)]; 23 | } else if (deltaMinutes < (24 * 60 * 2)) { 24 | return @"Yesterday"; 25 | } else if (deltaMinutes < (24 * 60 * 7)) { 26 | return [NSString stringWithFormat:@"%d days ago", (int)floor(deltaMinutes/(60 * 24))]; 27 | } else if (deltaMinutes < (24 * 60 * 14)) { 28 | return @"Last week"; 29 | } else if (deltaMinutes < (24 * 60 * 31)) { 30 | return [NSString stringWithFormat:@"%d weeks ago", (int)floor(deltaMinutes/(60 * 24 * 7))]; 31 | } else if (deltaMinutes < (24 * 60 * 61)) { 32 | return @"Last month"; 33 | } else if (deltaMinutes < (24 * 60 * 365.25)) { 34 | return [NSString stringWithFormat:@"%d months ago", (int)floor(deltaMinutes/(60 * 24 * 30))]; 35 | } else if (deltaMinutes < (24 * 60 * 731)) { 36 | return @"Last year"; 37 | } 38 | return [NSString stringWithFormat:@"%d years ago", (int)floor(deltaMinutes/(60 * 24 * 365))]; 39 | } 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Feeds/NSDictionary+JSONString.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+JSONString.h 3 | // Feeds 4 | // 5 | // Created by Mark Goody on 17/04/2014. 6 | // Copyright (c) 2014 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSDictionary (JSONString) 12 | 13 | - (NSString *)JSONString; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Feeds/NSDictionary+JSONString.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSDictionary+JSONString.m 3 | // Feeds 4 | // 5 | // Created by Mark Goody on 17/04/2014. 6 | // Copyright (c) 2014 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import "NSDictionary+JSONString.h" 10 | 11 | @implementation NSDictionary (JSONString) 12 | 13 | - (NSString *)JSONString 14 | { 15 | NSError *encodingError = nil; 16 | NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self 17 | options:0 18 | error:&encodingError]; 19 | 20 | if (jsonData == nil && encodingError != nil) { 21 | NSLog(@"Error encoding JSON data for dictionary: %@", encodingError.localizedDescription); 22 | } 23 | 24 | NSString *jsonString = nil; 25 | if (jsonData != nil) { 26 | jsonString = [[NSString alloc] initWithBytes:jsonData.bytes 27 | length:jsonData.length 28 | encoding:NSUTF8StringEncoding]; 29 | } 30 | 31 | return jsonString; 32 | } 33 | 34 | @end 35 | -------------------------------------------------------------------------------- /Feeds/NSString+Base64.h: -------------------------------------------------------------------------------- 1 | 2 | @interface NSString (Base64) 3 | 4 | - (NSString *)base64EncodedString; 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /Feeds/NSString+Base64.m: -------------------------------------------------------------------------------- 1 | #import "NSString+Base64.h" 2 | 3 | @implementation NSString (Base64) 4 | 5 | - (NSString *)base64EncodedString { 6 | 7 | char *base64Chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 8 | NSMutableString *result = [NSMutableString new]; 9 | int i; 10 | int len = (int)[self length]; 11 | int paddingBytes = 0; 12 | 13 | for (i = 0; i < len; i+=3) 14 | { 15 | UInt32 threeBytes = [self characterAtIndex:i] * 0x10000; 16 | 17 | if (i < len - 1) threeBytes += [self characterAtIndex:i+1] * 0x100; 18 | else paddingBytes++; 19 | 20 | if (i < len - 2) threeBytes += [self characterAtIndex:i+2]; 21 | else paddingBytes++; 22 | 23 | [result appendFormat:@"%c%c%c%c", 24 | base64Chars[(threeBytes >> 18) & 0x3f], 25 | base64Chars[(threeBytes >> 12) & 0x3f], 26 | paddingBytes > 1 ? '=' : base64Chars[(threeBytes >> 6) & 0x3f], 27 | paddingBytes > 0 ? '=' : base64Chars[ threeBytes & 0x3f]]; 28 | } 29 | 30 | return result; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Feeds/NSString+EmailValidation.h: -------------------------------------------------------------------------------- 1 | 2 | @interface NSString (EmailValidation) 3 | 4 | - (BOOL)isValidEmailAddress; 5 | 6 | @end 7 | -------------------------------------------------------------------------------- /Feeds/NSString+EmailValidation.m: -------------------------------------------------------------------------------- 1 | @implementation NSString (EmailValidation) 2 | 3 | - (BOOL)isValidEmailAddress { 4 | 5 | NSString *emailRegex = 6 | @"(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}" 7 | @"~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\" 8 | @"x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-" 9 | @"z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5" 10 | @"]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-" 11 | @"9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21" 12 | @"-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"; 13 | 14 | NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex]; 15 | 16 | return [emailTest evaluateWithObject:self]; 17 | } 18 | 19 | @end 20 | -------------------------------------------------------------------------------- /Feeds/NSString+English.h: -------------------------------------------------------------------------------- 1 | 2 | BOOL NSEqualStrings(NSString *aString, NSString *bString); 3 | BOOL NSEqualObjects(id a, id b); 4 | 5 | @interface NSString (English) 6 | 7 | // Appends an "s" to this word if count is greater than 1. 8 | - (NSString *)pluralizedForCount:(NSUInteger)count; 9 | 10 | // Removes the given prefix from this string, if it exists. Useful for removing "the " from strings before sorting. 11 | - (NSString *)stringByRemovingPrefix:(NSString *)prefix; 12 | 13 | // These should really be in the cocoa framework already. I mean, come on. 14 | - (BOOL)containsString:(NSString *)substring; 15 | - (BOOL)containsString:(NSString *)substring options:(NSStringCompareOptions)mask; 16 | - (BOOL)containsCharacterFromSet:(NSCharacterSet *)set; 17 | - (BOOL)containsCharacterFromSet:(NSCharacterSet *)set options:(NSStringCompareOptions)mask; 18 | - (BOOL)beginsWithString:(NSString *)substring; 19 | - (BOOL)beginsWithString:(NSString *)substring options:(NSStringCompareOptions)mask; 20 | - (BOOL)endsWithString:(NSString *)substring; 21 | - (BOOL)endsWithString:(NSString *)substring options:(NSStringCompareOptions)mask; 22 | 23 | @end -------------------------------------------------------------------------------- /Feeds/NSString+English.m: -------------------------------------------------------------------------------- 1 | #import "NSString+English.h" 2 | 3 | BOOL NSEqualStrings(NSString *aString, NSString *bString) { 4 | return (!aString && !bString) || [aString isEqualToString:bString]; 5 | } 6 | 7 | BOOL NSEqualObjects(id a, id b) { 8 | return (!a && !b) || [a isEqual:b]; 9 | } 10 | 11 | @implementation NSString (English) 12 | 13 | - (NSString *)pluralizedForCount:(NSUInteger)count { 14 | if (count == 1) 15 | return self; 16 | else 17 | return [self stringByAppendingString:@"s"]; 18 | } 19 | 20 | - (NSString *)stringByRemovingPrefix:(NSString *)prefix { 21 | if (self.length > prefix.length && [self rangeOfString:prefix options:NSCaseInsensitiveSearch].location == 0) 22 | return [self substringFromIndex:prefix.length]; 23 | else 24 | return self; 25 | } 26 | 27 | - (BOOL)containsString:(NSString *)substring { 28 | return [self containsString:substring options:0]; 29 | } 30 | 31 | - (BOOL)containsString:(NSString *)substring options:(NSStringCompareOptions)mask { 32 | return substring && [self rangeOfString:substring options:mask].location != NSNotFound; 33 | } 34 | 35 | - (BOOL)containsCharacterFromSet:(NSCharacterSet *)set { 36 | return [self containsCharacterFromSet:set options:0]; 37 | } 38 | 39 | - (BOOL)containsCharacterFromSet:(NSCharacterSet *)set options:(NSStringCompareOptions)mask { 40 | return set && [self rangeOfCharacterFromSet:set options:mask].location != NSNotFound; 41 | } 42 | 43 | - (BOOL)beginsWithString:(NSString *)substring { 44 | return [self beginsWithString:substring options:0]; 45 | } 46 | 47 | - (BOOL)beginsWithString:(NSString *)substring options:(NSStringCompareOptions)mask { 48 | return substring && [self rangeOfString:substring options:mask].location == 0; 49 | } 50 | 51 | - (BOOL)endsWithString:(NSString *)substring { 52 | return [self endsWithString:substring options:0]; 53 | } 54 | 55 | - (BOOL)endsWithString:(NSString *)substring options:(NSStringCompareOptions)mask { 56 | return substring && [self rangeOfString:substring options:mask].location == ([self length] - [substring length]); 57 | } 58 | 59 | @end 60 | -------------------------------------------------------------------------------- /Feeds/NSString+EntityDecoding.h: -------------------------------------------------------------------------------- 1 | 2 | @interface NSString (EntityDecoding) 3 | 4 | // stringWithFormat and %C can't handle extended ASCII codes from 127 to 160; this function will handle both. 5 | // (assuming it's a particular sort of old-school MS Windows-based encoding) 6 | extern NSString* NSStringFromCharacterCode(int code); 7 | 8 | // Decodes character entities as specified in HTML, e.g. """, "&emdash;", " ", etc. 9 | - (NSString *)stringByDecodingCharacterEntities; 10 | 11 | // Takes the given string containing HTML and strips all HTML entities except P and BR which are turned into genuine linebreaks. 12 | // As a side-effect, also condenses whitespace as you would expect from HTML. 13 | - (NSString *)stringByFlatteningHTML; 14 | 15 | // Compresses characters in the given set into single spaces. 16 | - (NSString *)stringByCondensingSet:(NSCharacterSet *)set; 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Feeds/NSString+ObjectFromJSONString.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+ObjectFromJSONString.h 3 | // Feeds 4 | // 5 | // Created by Mark Goody on 17/04/2014. 6 | // Copyright (c) 2014 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface NSString (ObjectFromJSONString) 12 | 13 | - (id)objectFromJSONString; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Feeds/NSString+ObjectFromJSONString.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSString+ObjectFromJSONString.m 3 | // Feeds 4 | // 5 | // Created by Mark Goody on 17/04/2014. 6 | // Copyright (c) 2014 Spotlight Mobile. All rights reserved. 7 | // 8 | 9 | #import "NSString+ObjectFromJSONString.h" 10 | #import "NSData+ObjectFromJSONData.h" 11 | 12 | @implementation NSString (ObjectFromJSONString) 13 | 14 | - (id)objectFromJSONString 15 | { 16 | NSData *jsonData = [self dataUsingEncoding:NSUTF8StringEncoding]; 17 | 18 | return [jsonData objectFromJSONData]; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Feeds/NSString+Truncated.h: -------------------------------------------------------------------------------- 1 | 2 | @interface NSString (Truncated) 3 | 4 | - (NSString *)truncatedAfterIndex:(NSUInteger)index; 5 | - (NSString *)truncatedWithString:(NSString *)truncationString afterIndex:(NSUInteger)index; 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /Feeds/NSString+Truncated.m: -------------------------------------------------------------------------------- 1 | #import "NSString+Truncated.h" 2 | 3 | @implementation NSString (Truncated) 4 | 5 | - (NSString *)truncatedAfterIndex:(NSUInteger)index { 6 | return [self truncatedWithString:@"…" afterIndex:index]; 7 | } 8 | 9 | - (NSString *)truncatedWithString:(NSString *)truncationString afterIndex:(NSUInteger)index { 10 | if (self.length > index) { 11 | 12 | // chop! 13 | NSString *truncated = [self substringToIndex:index]; 14 | 15 | // make sure to clip any extra whitespace that may have been revealed after we chopped off the string 16 | truncated = [truncated stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 17 | 18 | // add the truncation character, most likely an ellipsis 19 | return [truncated stringByAppendingString:truncationString]; 20 | } 21 | else 22 | return self; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Feeds/NSString+URLArgument.h: -------------------------------------------------------------------------------- 1 | 2 | @interface NSString (URLArgument) 3 | 4 | /// Returns a string that is escaped properly to be a URL argument. 5 | // 6 | /// This differs from stringByAddingPercentEscapesUsingEncoding: in that it 7 | /// will escape all the reserved characters (per RFC 3986 8 | /// ) which 9 | /// stringByAddingPercentEscapesUsingEncoding would leave. 10 | /// 11 | /// This will also escape '%', so this should not be used on a string that has 12 | /// already been escaped unless double-escaping is the desired result. 13 | - (NSString*)stringByEscapingForURLArgument; 14 | 15 | /// Returns the unescaped version of a URL argument 16 | // 17 | /// This has the same behavior as stringByReplacingPercentEscapesUsingEncoding:, 18 | /// except that it will also convert '+' to space. 19 | - (NSString*)stringByUnescapingFromURLArgument; 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Feeds/NSString+URLArgument.m: -------------------------------------------------------------------------------- 1 | #import "NSString+URLArgument.h" 2 | 3 | @implementation NSString (URLArgument) 4 | 5 | - (NSString*)stringByEscapingForURLArgument { 6 | // Encode all the reserved characters, per RFC 3986 7 | // () 8 | NSString *escaped = (NSString *) 9 | CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 10 | (CFStringRef)self, 11 | NULL, 12 | (CFStringRef)@"!*'();:@&=+$,/?%#[]", 13 | kCFStringEncodingUTF8)); 14 | return escaped; 15 | } 16 | 17 | - (NSString*)stringByUnescapingFromURLArgument { 18 | NSMutableString *resultString = [NSMutableString stringWithString:self]; 19 | [resultString replaceOccurrencesOfString:@"+" 20 | withString:@" " 21 | options:NSLiteralSearch 22 | range:NSMakeRange(0, [resultString length])]; 23 | return [resultString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Feeds/NSURLRequest+Authorization.h: -------------------------------------------------------------------------------- 1 | #import "OAuth2Token.h" 2 | 3 | @interface NSURLRequest (Authorization) 4 | 5 | + (NSMutableURLRequest *)requestWithURL:(NSURL *)URL username:(NSString *)username password:(NSString *)password; 6 | + (NSMutableURLRequest *)requestWithURLString:(NSString *)URLString username:(NSString *)username password:(NSString *)password; 7 | 8 | + (NSMutableURLRequest *)requestWithURL:(NSURL *)URL OAuth2Token:(OAuth2Token *)token; 9 | + (NSMutableURLRequest *)requestWithURLString:(NSString *)URLString OAuth2Token:(OAuth2Token *)token; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /Feeds/NSURLRequest+Authorization.m: -------------------------------------------------------------------------------- 1 | #import "NSURLRequest+Authorization.h" 2 | 3 | @implementation NSURLRequest (Authorization) 4 | 5 | + (NSMutableURLRequest *)requestWithURL:(NSURL *)URL username:(NSString *)username password:(NSString *)password { 6 | 7 | NSString *loginString = [NSString stringWithFormat:@"%@:%@", username, password]; 8 | NSString *authHeader = [@"Basic " stringByAppendingString:[loginString base64EncodedString]]; 9 | 10 | NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL]; 11 | [request setValue:authHeader forHTTPHeaderField:@"Authorization"]; 12 | return request; 13 | } 14 | 15 | + (NSMutableURLRequest *)requestWithURLString:(NSString *)URLString username:(NSString *)username password:(NSString *)password { 16 | return [self requestWithURL:[NSURL URLWithString:URLString] username:username password:password]; 17 | } 18 | 19 | + (NSMutableURLRequest *)requestWithURL:(NSURL *)URL OAuth2Token:(OAuth2Token *)token; { 20 | 21 | NSString *authHeader = [@"Bearer " stringByAppendingString:token.access_token]; 22 | 23 | NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL]; 24 | [request setValue:authHeader forHTTPHeaderField:@"Authorization"]; 25 | [request setValue:@"Feeds (http://feedsapp.com)" forHTTPHeaderField:@"User-Agent"]; // basecamp wants this for instance 26 | return request; 27 | } 28 | 29 | + (NSMutableURLRequest *)requestWithURLString:(NSString *)URLString OAuth2Token:(OAuth2Token *)token; { 30 | return [self requestWithURL:[NSURL URLWithString:URLString] OAuth2Token:token]; 31 | } 32 | 33 | @end 34 | -------------------------------------------------------------------------------- /Feeds/NSView+PrintHierarchy.h: -------------------------------------------------------------------------------- 1 | @interface NSView (PrintHierarchy) 2 | 3 | - (void)printViewHierarchy; 4 | 5 | @end 6 | -------------------------------------------------------------------------------- /Feeds/NSView+PrintHierarchy.m: -------------------------------------------------------------------------------- 1 | #import "NSView+PrintHierarchy.h" 2 | 3 | @implementation NSView (PrintHierarchy) 4 | 5 | + (void)printViewHierarchy:(NSView *)view indent:(NSString *)indent { 6 | NSLog(@"%@%@ frame = (%f,%f,%f,%f)", indent, view, view.frame.origin.x, view.frame.origin.y, view.frame.size.width, view.frame.size.height); 7 | 8 | indent = [indent stringByAppendingString:@" "]; 9 | 10 | for(NSView *subview in [view subviews]) 11 | [NSView printViewHierarchy:subview indent:indent]; 12 | } 13 | 14 | - (void)printViewHierarchy { 15 | [NSView printViewHierarchy:self indent:@""]; 16 | } 17 | 18 | @end 19 | -------------------------------------------------------------------------------- /Feeds/OAuth2Token.h: -------------------------------------------------------------------------------- 1 | 2 | @interface OAuth2Token : NSObject 3 | 4 | @property (nonatomic, copy) NSString *access_token, *refresh_token; 5 | 6 | - (id)initWithTokenResponse:(NSData *)responseData error:(NSString **)error; 7 | 8 | - (NSString *)stringRepresentation; 9 | + (OAuth2Token *)tokenWithStringRepresentation:(NSString *)string; 10 | 11 | @end 12 | -------------------------------------------------------------------------------- /Feeds/OAuth2Token.m: -------------------------------------------------------------------------------- 1 | #import "OAuth2Token.h" 2 | 3 | @implementation OAuth2Token 4 | 5 | - (id)initWithTokenResponse:(NSData *)responseData error:(NSString **)error { 6 | if (self = [super init]) { 7 | 8 | NSDictionary *response = [responseData objectFromJSONData]; 9 | self.access_token = response[@"access_token"]; 10 | self.refresh_token = response[@"refresh_token"]; 11 | 12 | (*error) = response[@"error"]; 13 | if (*error) { 14 | return nil; 15 | } 16 | 17 | if (!self.access_token && !self.refresh_token) { 18 | *error = @"Token not found"; 19 | return nil; 20 | } 21 | } 22 | return self; 23 | } 24 | 25 | - (NSString *)stringRepresentation { 26 | NSDictionary *dict = @{@"access_token": self.access_token, 27 | @"refresh_token": self.refresh_token}; 28 | return [dict JSONString]; 29 | } 30 | 31 | + (OAuth2Token *)tokenWithStringRepresentation:(NSString *)string { 32 | NSDictionary *dict = [string objectFromJSONString]; 33 | 34 | if (dict) { 35 | OAuth2Token *token = [OAuth2Token new]; 36 | token.access_token = dict[@"access_token"]; 37 | token.refresh_token = dict[@"refresh_token"]; 38 | return token; 39 | } 40 | else return nil; 41 | } 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Feeds/PivotalTrackerAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface PivotalTrackerAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/Popover/Popover.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 35 | 36 | 37 |
38 | 39 |
%@
40 |
%@
41 |
42 | %@ 43 |
44 |
45 | 46 |
47 | 48 | 51 | 52 | -------------------------------------------------------------------------------- /Feeds/PreferencesController.h: -------------------------------------------------------------------------------- 1 | 2 | #define DEFAULT_REFRESH_INTERVAL 30*60; // default to 30 minutes if none specified 3 | 4 | typedef enum { 5 | NotificationTypeUserNotificationCenter = 0, 6 | NotificationTypeGrowl = 1, 7 | NotificationTypeDisabled = 2 8 | } NotificationType; 9 | 10 | @interface PreferencesController : NSWindowController 11 | 12 | + (void)migrateSettings; // from an older version of Feeds 13 | 14 | - (id)initPreferencesController; 15 | - (void)showPreferences; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Feeds/Prefs.h: -------------------------------------------------------------------------------- 1 | 2 | #ifdef DEBUG 3 | 4 | // You can uncomment this as a development-time nicety if you're working on a particular account. 5 | // If uncommented, only the given account class will be used and Feeds will ignore all others. 6 | // Additionally, we'll open the Preferences window and start the Add New Account process so 7 | // you can easily test adding accounts. 8 | 9 | //#define ISOLATE_ACCOUNTS [NSArray arrayWithObjects:@"GithubAccount",nil] 10 | 11 | #endif 12 | -------------------------------------------------------------------------------- /Feeds/RSSAtomAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface RSSAtomAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/ScholicaAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface ScholicaAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/ScholicaAccount.m: -------------------------------------------------------------------------------- 1 | #import "ScholicaAccount.h" 2 | 3 | @implementation ScholicaAccount 4 | 5 | + (void)load { [Account registerClass:self]; } 6 | + (BOOL)requiresUsername { return YES; } 7 | + (BOOL)requiresPassword { return YES; } 8 | - (NSTimeInterval)refreshInterval { return 60; } // 60 seconds 9 | 10 | - (void)validateWithPassword:(NSString *)password { 11 | 12 | NSString *URL = @"https://api.scholica.com/1.0/notifications/rss"; 13 | 14 | self.request = [SMWebRequest requestWithURLRequest:[NSURLRequest requestWithURLString:URL username:self.username password:password] delegate:nil context:password]; 15 | [self.request addTarget:self action:@selector(rssRequestComplete:password:) forRequestEvents:SMWebRequestEventComplete]; 16 | [self.request addTarget:self action:@selector(rssRequestError:) forRequestEvents:SMWebRequestEventError]; 17 | [self.request start]; 18 | } 19 | 20 | - (void)rssRequestComplete:(NSData *)data password:(NSString *)password { 21 | 22 | SMXMLDocument *document = [SMXMLDocument documentWithData:data error:NULL]; 23 | NSString *title = [document.root valueWithPath:@"channel.title"]; 24 | NSString *author = [title stringByReplacingOccurrencesOfString:@"Scholica activity for " withString:@""]; 25 | 26 | NSString *URL = @"https://api.scholica.com/1.0/notifications/rss"; 27 | 28 | Feed *feed = [Feed feedWithURLString:URL title:@"My notifications" author:author account:self]; 29 | feed.requiresBasicAuth = YES; 30 | self.feeds = @[feed]; 31 | 32 | [self.delegate account:self validationDidCompleteWithNewPassword:password]; 33 | } 34 | 35 | - (void)rssRequestError:(NSError *)error { 36 | if (error.code == 401) 37 | [self.delegate account:self validationDidFailWithMessage:@"Could not log in to the given Scholica account. Please check your username and password." field:0]; 38 | else 39 | [self.delegate account:self validationDidFailWithMessage:error.localizedDescription field:AccountFailingFieldUnknown]; 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Feeds/StatusItemView.h: -------------------------------------------------------------------------------- 1 | 2 | typedef enum { 3 | StatusItemIconNormal, 4 | StatusItemIconUnread, 5 | StatusItemIconInactive 6 | } StatusItemIcon; 7 | 8 | @interface StatusItemView : NSView 9 | 10 | - (id)initWithStatusItem:(NSStatusItem *)statusItem; 11 | 12 | - (void)toggleMenu; 13 | 14 | @property (nonatomic, assign) StatusItemIcon icon; 15 | @property (nonatomic, assign) BOOL highlighted; 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Feeds/TrelloAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface TrelloAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/UserVoiceAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface UserVoiceAccount : Account 4 | @end 5 | -------------------------------------------------------------------------------- /Feeds/UserVoiceAccount.m: -------------------------------------------------------------------------------- 1 | #import "UserVoiceAccount.h" 2 | 3 | @implementation UserVoiceAccount 4 | 5 | + (void)load { [Account registerClass:self]; } 6 | + (BOOL)requiresDomain { return YES; } 7 | + (NSString *)domainSuffix { return @".uservoice.com"; } 8 | 9 | - (void)validateWithPassword:(NSString *)password { 10 | 11 | NSString *URL = [NSString stringWithFormat:@"http://%@.uservoice.com", self.domain]; 12 | 13 | self.request = [SMWebRequest requestWithURL:[NSURL URLWithString:URL] delegate:nil context:NULL]; 14 | [self.request addTarget:self action:@selector(forumRequestComplete:) forRequestEvents:SMWebRequestEventComplete]; 15 | [self.request addTarget:self action:@selector(forumRequestError:) forRequestEvents:SMWebRequestEventError]; 16 | [self.request start]; 17 | } 18 | 19 | - (void)forumRequestComplete:(NSData *)data { 20 | 21 | TFHpple *html = [[TFHpple alloc] initWithHTMLData:data]; 22 | NSArray *links = [html searchWithXPathQuery:@"//link[@type='application/atom+xml']"]; 23 | 24 | NSMutableArray *foundFeeds = [NSMutableArray array]; 25 | 26 | for (TFHppleElement *link in links) { 27 | NSString *href = (link.attributes)[@"href"]; 28 | NSString *title = (link.attributes)[@"title"]; 29 | 30 | // "All activity on feedsapp.uservoice.com" -> "All activity" 31 | NSString *suffix = [NSString stringWithFormat:@" on %@.uservoice.com",self.domain]; 32 | title = [title stringByReplacingOccurrencesOfString:suffix withString:@""]; 33 | 34 | Feed *feed = [Feed feedWithURLString:href title:title account:self]; 35 | feed.disabled = ![title containsString:@"All activity"]; // by default, enable "All activity", disable the rest. 36 | 37 | if (![foundFeeds containsObject:feed]) // sometimes their HTML contains duplicate feed links. 38 | [foundFeeds addObject:feed]; 39 | } 40 | 41 | self.feeds = foundFeeds; 42 | [self.delegate account:self validationDidCompleteWithNewPassword:nil]; 43 | } 44 | 45 | - (void)forumRequestError:(NSError *)error { 46 | if (error.code == 404) 47 | [self.delegate account:self validationDidFailWithMessage:@"Could not find the given UserVoice account." field:AccountFailingFieldDomain]; 48 | else 49 | [self.delegate account:self validationDidFailWithMessage:error.localizedDescription field:AccountFailingFieldUnknown]; 50 | } 51 | 52 | @end 53 | -------------------------------------------------------------------------------- /Feeds/ZendeskAccount.h: -------------------------------------------------------------------------------- 1 | #import "Account.h" 2 | 3 | @interface ZendeskAccount : Account 4 | 5 | @end 6 | -------------------------------------------------------------------------------- /Feeds/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf230 2 | {\fonttbl\f0\fswiss\fcharset0 Helvetica;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \vieww9600\viewh8400\viewkind0 5 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural 6 | 7 | \f0\fs24 \cf0 Nick Farina 8 | \b @nfarina 9 | \b0 \ 10 | Eric Grossnickle 11 | \b @egrossnickle} -------------------------------------------------------------------------------- /Feeds/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Feeds/main.m: -------------------------------------------------------------------------------- 1 | 2 | int main(int argc, char *argv[]) 3 | { 4 | return NSApplicationMain(argc, (const char **)argv); 5 | } 6 | -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Growl: -------------------------------------------------------------------------------- 1 | Versions/Current/Growl -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Versions/A/Growl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Growl.framework/Versions/A/Growl -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Versions/A/Headers/Growl.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifdef __OBJC__ 4 | # include 5 | #endif 6 | -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 12C60 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | Growl 11 | CFBundleIdentifier 12 | com.growl.growlframework 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.0.1 19 | CFBundleSignature 20 | GRRR 21 | CFBundleVersion 22 | 2.0.1 23 | DTCompiler 24 | com.apple.compilers.llvm.clang.1_0 25 | DTPlatformBuild 26 | 4G2008a 27 | DTPlatformVersion 28 | GM 29 | DTSDKBuild 30 | 12C37 31 | DTSDKName 32 | macosx10.8 33 | DTXcode 34 | 0452 35 | DTXcodeBuild 36 | 4G2008a 37 | NSPrincipalClass 38 | GrowlApplicationBridge 39 | 40 | 41 | -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Versions/A/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/Info.plist 8 | 9 | VZb3f8My4te/5JwcjfvotgCXTAs= 10 | 11 | 12 | rules 13 | 14 | ^Resources/ 15 | 16 | ^Resources/.*\.lproj/ 17 | 18 | optional 19 | 20 | weight 21 | 1000 22 | 23 | ^Resources/.*\.lproj/locversion.plist$ 24 | 25 | omit 26 | 27 | weight 28 | 1100 29 | 30 | ^version.plist$ 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Frameworks/Growl.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/ShortcutRecorder: -------------------------------------------------------------------------------- 1 | Versions/Current/ShortcutRecorder -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/Headers/SRKeyCodeTransformer.h: -------------------------------------------------------------------------------- 1 | // 2 | // SRKeyCodeTransformer.h 3 | // ShortcutRecorder 4 | // 5 | // Copyright 2006-2007 Contributors. All rights reserved. 6 | // 7 | // License: BSD 8 | // 9 | // Contributors: 10 | // David Dauer 11 | // Jesper 12 | // Jamie Kirkpatrick 13 | 14 | #import 15 | 16 | @interface SRKeyCodeTransformer : NSValueTransformer {} @end 17 | -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/Headers/SRRecorderControl.h: -------------------------------------------------------------------------------- 1 | // 2 | // SRRecorderControl.h 3 | // ShortcutRecorder 4 | // 5 | // Copyright 2006-2007 Contributors. All rights reserved. 6 | // 7 | // License: BSD 8 | // 9 | // Contributors: 10 | // David Dauer 11 | // Jesper 12 | // Jamie Kirkpatrick 13 | 14 | #import 15 | #import "SRRecorderCell.h" 16 | 17 | @interface SRRecorderControl : NSControl 18 | { 19 | IBOutlet id delegate; 20 | } 21 | 22 | #pragma mark *** Aesthetics *** 23 | - (BOOL)animates; 24 | - (void)setAnimates:(BOOL)an; 25 | - (SRRecorderStyle)style; 26 | - (void)setStyle:(SRRecorderStyle)nStyle; 27 | 28 | #pragma mark *** Delegate *** 29 | - (id)delegate; 30 | - (void)setDelegate:(id)aDelegate; 31 | 32 | #pragma mark *** Key Combination Control *** 33 | 34 | - (NSUInteger)allowedFlags; 35 | - (void)setAllowedFlags:(NSUInteger)flags; 36 | 37 | - (BOOL)allowsKeyOnly; 38 | - (void)setAllowsKeyOnly:(BOOL)nAllowsKeyOnly escapeKeysRecord:(BOOL)nEscapeKeysRecord; 39 | - (BOOL)escapeKeysRecord; 40 | 41 | - (BOOL)canCaptureGlobalHotKeys; 42 | - (void)setCanCaptureGlobalHotKeys:(BOOL)inState; 43 | 44 | - (NSUInteger)requiredFlags; 45 | - (void)setRequiredFlags:(NSUInteger)flags; 46 | 47 | - (KeyCombo)keyCombo; 48 | - (void)setKeyCombo:(KeyCombo)aKeyCombo; 49 | 50 | - (NSString *)keyChars; 51 | - (NSString *)keyCharsIgnoringModifiers; 52 | 53 | #pragma mark *** Autosave Control *** 54 | 55 | - (NSString *)autosaveName; 56 | - (void)setAutosaveName:(NSString *)aName; 57 | 58 | #pragma mark - 59 | 60 | // Returns the displayed key combination if set 61 | - (NSString *)keyComboString; 62 | 63 | #pragma mark *** Conversion Methods *** 64 | 65 | - (NSUInteger)cocoaToCarbonFlags:(NSUInteger)cocoaFlags; 66 | - (NSUInteger)carbonToCocoaFlags:(NSUInteger)carbonFlags; 67 | 68 | #pragma mark *** Binding Methods *** 69 | 70 | - (NSDictionary *)objectValue; 71 | - (void)setObjectValue:(NSDictionary *)shortcut; 72 | 73 | @end 74 | 75 | // Delegate Methods 76 | @interface NSObject (SRRecorderDelegate) 77 | - (BOOL)shortcutRecorder:(SRRecorderControl *)aRecorder isKeyCode:(NSInteger)keyCode andFlagsTaken:(NSUInteger)flags reason:(NSString **)aReason; 78 | - (void)shortcutRecorder:(SRRecorderControl *)aRecorder keyComboDidChange:(KeyCombo)newKeyCombo; 79 | @end 80 | -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/Headers/SRValidator.h: -------------------------------------------------------------------------------- 1 | // 2 | // SRValidator.h 3 | // ShortcutRecorder 4 | // 5 | // Copyright 2006-2007 Contributors. All rights reserved. 6 | // 7 | // License: BSD 8 | // 9 | // Contributors: 10 | // David Dauer 11 | // Jesper 12 | // Jamie Kirkpatrick 13 | 14 | #import 15 | 16 | @interface SRValidator : NSObject { 17 | id delegate; 18 | } 19 | 20 | - (id) initWithDelegate:(id)theDelegate; 21 | 22 | - (BOOL) isKeyCode:(NSInteger)keyCode andFlagsTaken:(NSUInteger)flags error:(NSError **)error; 23 | - (BOOL) isKeyCode:(NSInteger)keyCode andFlags:(NSUInteger)flags takenInMenu:(NSMenu *)menu error:(NSError **)error; 24 | 25 | - (id) delegate; 26 | - (void) setDelegate: (id) theDelegate; 27 | 28 | @end 29 | 30 | #pragma mark - 31 | 32 | @interface NSObject( SRValidation ) 33 | - (BOOL) shortcutValidator:(SRValidator *)validator isKeyCode:(NSInteger)keyCode andFlagsTaken:(NSUInteger)flags reason:(NSString **)aReason; 34 | @end 35 | -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/Headers/SR_LeopardView.h: -------------------------------------------------------------------------------- 1 | // 2 | // SR_LeopardView.h 3 | // SR Leopard 4 | // 5 | // Created by Jesper on 2007-10-19. 6 | // Copyright 2007 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface SR_LeopardView : NSView { 12 | 13 | } 14 | 15 | @end -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/Headers/ShortcutRecorder.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortcutRecorder.h 3 | // ShortcutRecorder 4 | // - 10.5 version only; master framework header 5 | // 6 | // Copyright 2007 Contributors. All rights reserved. 7 | // 8 | // License: BSD 9 | // 10 | // Contributors to this file: 11 | // Jesper 12 | 13 | #import 14 | #import 15 | #import 16 | #import 17 | #import 18 | -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 11C74 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | ShortcutRecorder 11 | CFBundleIdentifier 12 | net.wafflesoftware.ShortcutRecorder.framework.Leopard 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1.0 21 | DTCompiler 22 | com.apple.compilers.llvm.clang.1_0 23 | DTPlatformBuild 24 | 4D199 25 | DTPlatformVersion 26 | GM 27 | DTSDKBuild 28 | 11C63 29 | DTSDKName 30 | macosx10.7 31 | DTXcode 32 | 0420 33 | DTXcodeBuild 34 | 4D199 35 | 36 | 37 | -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/ShortcutRecorder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/ShortcutRecorder.framework/Versions/A/ShortcutRecorder -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/A/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/Info.plist 8 | 9 | aPfAa0eSP5mWV7tSuwQMe8ba/w0= 10 | 11 | 12 | rules 13 | 14 | ^Resources/ 15 | 16 | ^Resources/.*\.lproj/ 17 | 18 | optional 19 | 20 | weight 21 | 1000 22 | 23 | ^Resources/.*\.lproj/locversion.plist$ 24 | 25 | omit 26 | 27 | weight 28 | 1100 29 | 30 | ^version.plist$ 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Frameworks/ShortcutRecorder.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Sparkle: -------------------------------------------------------------------------------- 1 | Versions/Current/Sparkle -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcast.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcast.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCAST_H 10 | #define SUAPPCAST_H 11 | 12 | @class SUAppcastItem; 13 | @interface SUAppcast : NSObject { 14 | NSArray *items; 15 | NSString *userAgentString; 16 | id delegate; 17 | NSMutableData *incrementalData; 18 | } 19 | 20 | - (void)fetchAppcastFromURL:(NSURL *)url; 21 | - (void)setDelegate:delegate; 22 | - (void)setUserAgentString:(NSString *)userAgentString; 23 | 24 | - (NSArray *)items; 25 | 26 | @end 27 | 28 | @interface NSObject (SUAppcastDelegate) 29 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast; 30 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; 31 | @end 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcastItem.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCASTITEM_H 10 | #define SUAPPCASTITEM_H 11 | 12 | @interface SUAppcastItem : NSObject { 13 | NSString *title; 14 | NSDate *date; 15 | NSString *itemDescription; 16 | 17 | NSURL *releaseNotesURL; 18 | 19 | NSString *DSASignature; 20 | NSString *minimumSystemVersion; 21 | 22 | NSURL *fileURL; 23 | NSString *versionString; 24 | NSString *displayVersionString; 25 | 26 | NSDictionary *propertiesDictionary; 27 | } 28 | 29 | // Initializes with data from a dictionary provided by the RSS class. 30 | - initWithDictionary:(NSDictionary *)dict; 31 | 32 | - (NSString *)title; 33 | - (NSString *)versionString; 34 | - (NSString *)displayVersionString; 35 | - (NSDate *)date; 36 | - (NSString *)itemDescription; 37 | - (NSURL *)releaseNotesURL; 38 | - (NSURL *)fileURL; 39 | - (NSString *)DSASignature; 40 | - (NSString *)minimumSystemVersion; 41 | 42 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. 43 | - (NSDictionary *)propertiesDictionary; 44 | 45 | @end 46 | 47 | #endif 48 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionComparisonProtocol.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 12/21/07. 6 | // Copyright 2007 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H 10 | #define SUVERSIONCOMPARISONPROTOCOL_H 11 | 12 | /*! 13 | @protocol 14 | @abstract Implement this protocol to provide version comparison facilities for Sparkle. 15 | */ 16 | @protocol SUVersionComparison 17 | 18 | /*! 19 | @method 20 | @abstract An abstract method to compare two version strings. 21 | @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. 22 | */ 23 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; 24 | 25 | @end 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Headers/Sparkle.h: -------------------------------------------------------------------------------- 1 | // 2 | // Sparkle.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SPARKLE_H 10 | #define SPARKLE_H 11 | 12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless 13 | // there are name-space collisions) so we can list all of them to start with: 14 | 15 | #import 16 | 17 | #import 18 | #import 19 | #import 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | Sparkle 9 | CFBundleIdentifier 10 | org.andymatuschak.Sparkle 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | Sparkle 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.5 Beta 6 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 313 23 | 24 | 25 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/License.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2006 Andy Matuschak 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | CLASS 25 | FirstResponder 26 | LANGUAGE 27 | ObjC 28 | SUPERCLASS 29 | NSObject 30 | 31 | 32 | CLASS 33 | NSObject 34 | LANGUAGE 35 | ObjC 36 | 37 | 38 | CLASS 39 | SUStatusController 40 | LANGUAGE 41 | ObjC 42 | OUTLETS 43 | 44 | actionButton 45 | NSButton 46 | progressBar 47 | NSProgressIndicator 48 | 49 | SUPERCLASS 50 | SUWindowController 51 | 52 | 53 | IBVersion 54 | 1 55 | 56 | 57 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 658 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9C7010 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 18 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 41 15 | 16 | IBSystem Version 17 | 10A96 18 | targetFramework 19 | IBCocoaFramework 20 | 21 | 22 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9D34 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj: -------------------------------------------------------------------------------- 1 | /Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/fr_CA.lproj: -------------------------------------------------------------------------------- 1 | /Users/andym/Development/Build Products/Release/Sparkle.framework/Resources/fr.lproj -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 667 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 5 14 | 15 | IBSystem Version 16 | 9D34 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | 6 12 | 13 | IBSystem Version 14 | 9D34 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 629 7 | IBOldestOS 8 | 5 9 | IBOpenObjects 10 | 11 | IBSystem Version 12 | 9E17 13 | targetFramework 14 | IBCocoaFramework 15 | 16 | 17 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/relaunch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/relaunch -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9E17 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | CLASS 17 | NSApplication 18 | LANGUAGE 19 | ObjC 20 | SUPERCLASS 21 | NSResponder 22 | 23 | 24 | ACTIONS 25 | 26 | installUpdate 27 | id 28 | remindMeLater 29 | id 30 | skipThisVersion 31 | id 32 | 33 | CLASS 34 | SUUpdateAlert 35 | LANGUAGE 36 | ObjC 37 | OUTLETS 38 | 39 | delegate 40 | id 41 | description 42 | NSTextField 43 | releaseNotesView 44 | WebView 45 | 46 | SUPERCLASS 47 | SUWindowController 48 | 49 | 50 | CLASS 51 | FirstResponder 52 | LANGUAGE 53 | ObjC 54 | SUPERCLASS 55 | NSObject 56 | 57 | 58 | CLASS 59 | NSObject 60 | LANGUAGE 61 | ObjC 62 | 63 | 64 | IBVersion 65 | 1 66 | 67 | 68 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 9E17 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | NSObject 10 | LANGUAGE 11 | ObjC 12 | 13 | 14 | CLASS 15 | SUWindowController 16 | LANGUAGE 17 | ObjC 18 | SUPERCLASS 19 | NSWindowController 20 | 21 | 22 | ACTIONS 23 | 24 | finishPrompt 25 | id 26 | toggleMoreInfo 27 | id 28 | 29 | CLASS 30 | SUUpdatePermissionPrompt 31 | LANGUAGE 32 | ObjC 33 | OUTLETS 34 | 35 | delegate 36 | id 37 | descriptionTextField 38 | NSTextField 39 | moreInfoButton 40 | NSButton 41 | moreInfoView 42 | NSView 43 | 44 | SUPERCLASS 45 | SUWindowController 46 | 47 | 48 | CLASS 49 | FirstResponder 50 | LANGUAGE 51 | ObjC 52 | SUPERCLASS 53 | NSObject 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | IBSystem Version 14 | 9E17 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | doNotInstall 19 | id 20 | installLater 21 | id 22 | installNow 23 | id 24 | 25 | CLASS 26 | SUAutomaticUpdateAlert 27 | LANGUAGE 28 | ObjC 29 | SUPERCLASS 30 | SUWindowController 31 | 32 | 33 | CLASS 34 | FirstResponder 35 | LANGUAGE 36 | ObjC 37 | SUPERCLASS 38 | NSObject 39 | 40 | 41 | CLASS 42 | NSObject 43 | LANGUAGE 44 | ObjC 45 | 46 | 47 | IBVersion 48 | 1 49 | 50 | 51 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib: -------------------------------------------------------------------------------- 1 | { 2 | IBClasses = ( 3 | { 4 | CLASS = FirstResponder; 5 | LANGUAGE = ObjC; 6 | SUPERCLASS = NSObject; 7 | }, 8 | { 9 | CLASS = NSApplication; 10 | LANGUAGE = ObjC; 11 | SUPERCLASS = NSResponder; 12 | }, 13 | { 14 | CLASS = NSObject; 15 | LANGUAGE = ObjC; 16 | }, 17 | { 18 | ACTIONS = { 19 | installUpdate = id; 20 | remindMeLater = id; 21 | skipThisVersion = id; 22 | }; 23 | CLASS = SUUpdateAlert; 24 | LANGUAGE = ObjC; 25 | OUTLETS = { 26 | delegate = id; 27 | description = NSTextField; 28 | releaseNotesView = WebView; 29 | }; 30 | SUPERCLASS = SUWindowController; 31 | }, 32 | { 33 | CLASS = SUWindowController; 34 | LANGUAGE = ObjC; 35 | SUPERCLASS = NSWindowController; 36 | } 37 | ); 38 | IBVersion = 1; 39 | } -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBDocumentLocation 6 | 69 14 356 240 0 0 1280 778 7 | IBFramework Version 8 | 489.0 9 | IBLastKnownRelativeProjectPath 10 | ../Sparkle.xcodeproj 11 | IBOldestOS 12 | 5 13 | IBSystem Version 14 | 9D34 15 | targetFramework 16 | IBCocoaFramework 17 | 18 | 19 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBClasses 6 | 7 | 8 | CLASS 9 | SUWindowController 10 | LANGUAGE 11 | ObjC 12 | SUPERCLASS 13 | NSWindowController 14 | 15 | 16 | ACTIONS 17 | 18 | finishPrompt 19 | id 20 | toggleMoreInfo 21 | id 22 | 23 | CLASS 24 | SUUpdatePermissionPrompt 25 | LANGUAGE 26 | ObjC 27 | OUTLETS 28 | 29 | delegate 30 | id 31 | descriptionTextField 32 | NSTextField 33 | moreInfoButton 34 | NSButton 35 | moreInfoView 36 | NSView 37 | 38 | SUPERCLASS 39 | SUWindowController 40 | 41 | 42 | CLASS 43 | FirstResponder 44 | LANGUAGE 45 | ObjC 46 | SUPERCLASS 47 | NSObject 48 | 49 | 50 | CLASS 51 | NSObject 52 | LANGUAGE 53 | ObjC 54 | 55 | 56 | IBVersion 57 | 1 58 | 59 | 60 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IBFramework Version 6 | 670 7 | IBLastKnownRelativeProjectPath 8 | ../Sparkle.xcodeproj 9 | IBOldestOS 10 | 5 11 | IBOpenObjects 12 | 13 | 6 14 | 15 | IBSystem Version 16 | 10A96 17 | targetFramework 18 | IBCocoaFramework 19 | 20 | 21 | -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/A/Sparkle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Frameworks/Sparkle.framework/Versions/A/Sparkle -------------------------------------------------------------------------------- /Frameworks/Sparkle.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Libraries/DDHotKey/DDHotKey-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.yourcompany.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleShortVersionString 22 | 1.0 23 | LSMinimumSystemVersion 24 | ${MACOSX_DEPLOYMENT_TARGET} 25 | CFBundleVersion 26 | 1 27 | NSMainNibFile 28 | MainMenu 29 | NSPrincipalClass 30 | NSApplication 31 | 32 | 33 | -------------------------------------------------------------------------------- /Libraries/DDHotKey/DDHotKeyAppDelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | DDHotKey -- DDHotKeyAppDelegate.h 3 | 4 | Copyright (c) 2010, Dave DeLong 5 | 6 | Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. 7 | 8 | The software is provided "as is", without warranty of any kind, including all implied warranties of merchantability and fitness. In no event shall the author(s) or copyright holder(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software. 9 | */ 10 | 11 | #import 12 | 13 | @interface DDHotKeyAppDelegate : NSObject /**/ { 14 | NSWindow *window; 15 | NSTextView *output; 16 | } 17 | 18 | @property (assign) IBOutlet NSWindow *window; 19 | @property (assign) IBOutlet NSTextView *output; 20 | 21 | - (void) addOutput:(NSString *)newOutput; 22 | 23 | - (IBAction) registerExample1:(id)sender; 24 | - (IBAction) registerExample2:(id)sender; 25 | - (IBAction) registerExample3:(id)sender; 26 | 27 | - (IBAction) unregisterExample1:(id)sender; 28 | - (IBAction) unregisterExample2:(id)sender; 29 | - (IBAction) unregisterExample3:(id)sender; 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Libraries/DDHotKey/DDHotKey_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'DDHotKey' target in the 'DDHotKey' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /Libraries/DDHotKey/English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Libraries/DDHotKey/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DDHotKey 4 | // 5 | // Created by Dave DeLong on 2/24/10. 6 | // Copyright 2010 Home. 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 | -------------------------------------------------------------------------------- /Libraries/Hpple/TFHpple.h: -------------------------------------------------------------------------------- 1 | // 2 | // TFHpple.h 3 | // Hpple 4 | // 5 | // Created by Geoffrey Grosenbach on 1/31/09. 6 | // 7 | // Copyright (c) 2009 Topfunky Corporation, http://topfunky.com 8 | // 9 | // MIT LICENSE 10 | // 11 | // Permission is hereby granted, free of charge, to any person obtaining 12 | // a copy of this software and associated documentation files (the 13 | // "Software"), to deal in the Software without restriction, including 14 | // without limitation the rights to use, copy, modify, merge, publish, 15 | // distribute, sublicense, and/or sell copies of the Software, and to 16 | // permit persons to whom the Software is furnished to do so, subject to 17 | // the following conditions: 18 | // 19 | // The above copyright notice and this permission notice shall be 20 | // included in all copies or substantial portions of the Software. 21 | // 22 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 23 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 24 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 25 | // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 26 | // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 27 | // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 28 | // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 29 | 30 | 31 | #import 32 | 33 | #import "TFHppleElement.h" 34 | 35 | @interface TFHpple : NSObject { 36 | @private 37 | NSData * data; 38 | BOOL isXML; 39 | } 40 | 41 | - (id) initWithData:(NSData *)theData isXML:(BOOL)isDataXML; 42 | - (id) initWithXMLData:(NSData *)theData; 43 | - (id) initWithHTMLData:(NSData *)theData; 44 | 45 | + (TFHpple *) hppleWithData:(NSData *)theData isXML:(BOOL)isDataXML; 46 | + (TFHpple *) hppleWithXMLData:(NSData *)theData; 47 | + (TFHpple *) hppleWithHTMLData:(NSData *)theData; 48 | 49 | - (NSArray *) searchWithXPathQuery:(NSString *)xPathOrCSS; 50 | - (TFHppleElement *) peekAtSearchWithXPathQuery:(NSString *)xPathOrCSS; 51 | 52 | @property (retain) NSData * data; 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /Libraries/Hpple/XPathQuery.h: -------------------------------------------------------------------------------- 1 | // 2 | // XPathQuery.h 3 | // FuelFinder 4 | // 5 | // Created by Matt Gallagher on 4/08/08. 6 | // Copyright 2008 __MyCompanyName__. All rights reserved. 7 | // 8 | 9 | NSArray *PerformHTMLXPathQuery(NSData *document, NSString *query); 10 | NSArray *PerformXMLXPathQuery(NSData *document, NSString *query); 11 | -------------------------------------------------------------------------------- /Libraries/Lumberjack/DDASLLogger.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | 4 | #import "DDLog.h" 5 | 6 | /** 7 | * Welcome to Cocoa Lumberjack! 8 | * 9 | * The project page has a wealth of documentation if you have any questions. 10 | * https://github.com/robbiehanson/CocoaLumberjack 11 | * 12 | * If you're new to the project you may wish to read the "Getting Started" wiki. 13 | * https://github.com/robbiehanson/CocoaLumberjack/wiki/GettingStarted 14 | * 15 | * 16 | * This class provides a logger for the Apple System Log facility. 17 | * 18 | * As described in the "Getting Started" page, 19 | * the traditional NSLog() function directs it's output to two places: 20 | * 21 | * - Apple System Log 22 | * - StdErr (if stderr is a TTY) so log statements show up in Xcode console 23 | * 24 | * To duplicate NSLog() functionality you can simply add this logger and a tty logger. 25 | * However, if you instead choose to use file logging (for faster performance), 26 | * you may choose to use a file logger and a tty logger. 27 | **/ 28 | 29 | @interface DDASLLogger : DDAbstractLogger 30 | { 31 | aslclient client; 32 | } 33 | 34 | + (DDASLLogger *)sharedInstance; 35 | 36 | // Inherited from DDAbstractLogger 37 | 38 | // - (id )logFormatter; 39 | // - (void)setLogFormatter:(id )formatter; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /Libraries/SMWebRequest/README.md: -------------------------------------------------------------------------------- 1 | 2 | ### Overview 3 | 4 | SMWebRequest is a very handy lightweight HTTP request class for iOS. 5 | 6 | It encapsulates a single HTTP request and response, and is designed to be less verbose 7 | and simpler to use than NSURLConnection. The server response is buffered completely into memory 8 | then passed back to event listeners as NSData. Optionally, you can specify a delegate which 9 | can process the NSData in some way on a background thread then return something else. 10 | 11 | More info in the blog post: 12 | http://nfarina.com/post/3776625971/webrequest 13 | 14 | ### ARC Support 15 | 16 | If you are including SMWebRequest in a project that has [Automatic Reference Counting (ARC)](http://clang.llvm.org/docs/AutomaticReferenceCounting.html) enabled, you will need to set the `-fno-objc-arc` compiler flag for our source. To do this in Xcode, go to your active target and select the "Build Phases" tab. In the "Compiler Flags" column, set `-fno-objc-arc` for `SMWebRequest.m`. 17 | 18 | 19 | -------------------------------------------------------------------------------- /Libraries/SMXMLDocument/README.md: -------------------------------------------------------------------------------- 1 | 2 | ### Overview 3 | 4 | SMXMLDocument is a very handy lightweight XML parser for iOS. 5 | 6 | In brief: 7 | 8 | // create a new SMXMLDocument with the contents of sample.xml 9 | SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error]; 10 | 11 | // Pull out the node 12 | SMXMLElement *books = [document.root childNamed:@"books"]; 13 | 14 | // Look through children of type 15 | for (SMXMLElement *book in [books childrenNamed:@"book"]) { 16 | 17 | // demonstrate common cases of extracting XML data 18 | NSString *isbn = [book attributeNamed:@"isbn"]; // XML attribute 19 | NSString *title = [book valueWithPath:@"title"]; // child node value 20 | 21 | // show off some KVC magic 22 | NSArray *authors = [[book childNamed:@"authors"].children valueForKey:@"value"]; 23 | 24 | // do interesting things... 25 | } 26 | 27 | More info in the blog post: 28 | http://nfarina.com/post/2843708636/a-lightweight-xml-parser-for-ios 29 | 30 | ### ARC Support 31 | 32 | This branch supports (and requires) [Automatic Reference Counting (ARC)](http://clang.llvm.org/docs/AutomaticReferenceCounting.html) 33 | -------------------------------------------------------------------------------- /Libraries/ShortcutRecorder/README.md: -------------------------------------------------------------------------------- 1 | 2 | Shortcut Recorder 3 | ================= 4 | 5 | Shortcut Recorder is a wonderful open-source control that presents the user with the ability to specify a keyboard shortcut by simply typing it. 6 | 7 | The official home for Shortcut Recoder is here: 8 | 9 | http://wafflesoftware.net/shortcut/ 10 | 11 | The ZIP file in this directory contains a slightly modified version of Shortcut Recorder used by Feeds. Because Shortcut Recorder is not on Github, I can't easily fork the repository and maintain my own version, so I simply zipped up the whole thing with my modifications and placed it here for future reference. -------------------------------------------------------------------------------- /Libraries/ShortcutRecorder/Shortcutrecorder Modified.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Libraries/ShortcutRecorder/Shortcutrecorder Modified.zip -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Example Screenshot](Assets/Screenshot.png) 2 | 3 | Overview 4 | ======== 5 | 6 | Feeds lives in your Mac's menu bar and lets you quickly view the content of new posts on your favorite web services without ever opening a browser window. 7 | 8 | For more information, see the [Official Website](http://www.feedsapp.com). 9 | 10 | 11 | Adding New Account Types 12 | ------------------------ 13 | 14 | To add a new service to Feeds, you simply write an `Account` subclass. We're still working on documentation for how to write these classes, but you can examing the existing ones to get a sense for it. 15 | 16 | Note regarding **Github two-factor authentication** 17 | 18 | 2FA isn't yet supported, in the mean time you can create an app token in: [Settings > Tokens](https://github.com/settings/tokens), and provide the token as your password. 19 | 20 | 21 | Migrating Your Old Accounts 22 | --------------------------- 23 | 24 | If you originally downloaded Feeds from the Mac App Store, your existing preferences file (with all the accounts you added) will have been stored in the Mac App Sandbox. If you want to reuse your old preferences file, you can find it here: 25 | 26 | ~/Library/Containers/com.feedsapp.Feeds/Data/Library/Preferences/com.feedsapp.Feeds.plist 27 | 28 | And simply copy it to here: 29 | 30 | ~/Library/Preferences/com.feedsapp.Feeds.plist 31 | -------------------------------------------------------------------------------- /Website/app.yaml: -------------------------------------------------------------------------------- 1 | runtime: python27 2 | api_version: 1 3 | threadsafe: yes 4 | 5 | handlers: 6 | - url: /css 7 | static_dir: css 8 | 9 | - url: /css/(.*\.svg) 10 | static_files: static/\1 11 | upload: static/(.*\.svg) 12 | mime_type: text/plain 13 | 14 | - url: /js 15 | static_dir: js 16 | 17 | - url: /img 18 | static_dir: img 19 | 20 | - url: /wallpaper 21 | static_dir: wallpaper 22 | 23 | - url: /appcast\.xml 24 | script: appcast.app 25 | 26 | - url: /favicon.ico 27 | static_files: img/favicon.ico 28 | upload: img/favicon.ico 29 | 30 | - url: / 31 | static_files: index.html 32 | upload: index.html 33 | -------------------------------------------------------------------------------- /Website/appcast.py: -------------------------------------------------------------------------------- 1 | import webapp2 2 | 3 | class MainPage(webapp2.RequestHandler): 4 | def get(self): 5 | self.redirect("https://storage.googleapis.com/feeds-releases/appcast.xml") 6 | 7 | app = webapp2.WSGIApplication([ 8 | ('.*', MainPage), 9 | ], debug=True) -------------------------------------------------------------------------------- /Website/img/app-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/app-icon.png -------------------------------------------------------------------------------- /Website/img/app-menu-selection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/app-menu-selection.png -------------------------------------------------------------------------------- /Website/img/app-menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/app-menu.png -------------------------------------------------------------------------------- /Website/img/app-popover-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/app-popover-image.jpg -------------------------------------------------------------------------------- /Website/img/app-popover-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/app-popover-image.png -------------------------------------------------------------------------------- /Website/img/app-popover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/app-popover.png -------------------------------------------------------------------------------- /Website/img/arrow-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/arrow-1.png -------------------------------------------------------------------------------- /Website/img/arrow-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/arrow-2.png -------------------------------------------------------------------------------- /Website/img/arrow-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/arrow-down.png -------------------------------------------------------------------------------- /Website/img/bg-tile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/bg-tile.jpg -------------------------------------------------------------------------------- /Website/img/bg-tile_gradient.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/bg-tile_gradient.jpg -------------------------------------------------------------------------------- /Website/img/buy-coming_soon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/buy-coming_soon.png -------------------------------------------------------------------------------- /Website/img/buy-sale.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/buy-sale.png -------------------------------------------------------------------------------- /Website/img/buy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/buy.png -------------------------------------------------------------------------------- /Website/img/checkmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/checkmark.png -------------------------------------------------------------------------------- /Website/img/desktop-bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/desktop-bg.jpg -------------------------------------------------------------------------------- /Website/img/desktop-menu_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/desktop-menu_bar.png -------------------------------------------------------------------------------- /Website/img/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/download.png -------------------------------------------------------------------------------- /Website/img/feed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/feed.png -------------------------------------------------------------------------------- /Website/img/footer-life_buoy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/footer-life_buoy.png -------------------------------------------------------------------------------- /Website/img/footer-twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/footer-twitter.png -------------------------------------------------------------------------------- /Website/img/header-bg-tile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/header-bg-tile.png -------------------------------------------------------------------------------- /Website/img/icon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/icon-256.png -------------------------------------------------------------------------------- /Website/img/icon-284.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/icon-284.png -------------------------------------------------------------------------------- /Website/img/line-1px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/line-1px.png -------------------------------------------------------------------------------- /Website/img/line-gradient_horiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/line-gradient_horiz.png -------------------------------------------------------------------------------- /Website/img/line-gradient_vert_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/line-gradient_vert_down.png -------------------------------------------------------------------------------- /Website/img/line-gradient_vert_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/line-gradient_vert_up.png -------------------------------------------------------------------------------- /Website/img/rss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/rss.png -------------------------------------------------------------------------------- /Website/img/screenshot-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/screenshot-1.jpg -------------------------------------------------------------------------------- /Website/img/screenshot-1_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/screenshot-1_sm.png -------------------------------------------------------------------------------- /Website/img/screenshot-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/screenshot-2.jpg -------------------------------------------------------------------------------- /Website/img/screenshot-2_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/screenshot-2_sm.png -------------------------------------------------------------------------------- /Website/img/screenshot-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/screenshot-3.jpg -------------------------------------------------------------------------------- /Website/img/screenshot-3_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/screenshot-3_sm.png -------------------------------------------------------------------------------- /Website/img/service-basecamp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-basecamp.png -------------------------------------------------------------------------------- /Website/img/service-beanstalk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-beanstalk.png -------------------------------------------------------------------------------- /Website/img/service-dribbble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-dribbble.png -------------------------------------------------------------------------------- /Website/img/service-dropmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-dropmark.png -------------------------------------------------------------------------------- /Website/img/service-github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-github.png -------------------------------------------------------------------------------- /Website/img/service-highrise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-highrise.png -------------------------------------------------------------------------------- /Website/img/service-pivotaltracker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-pivotaltracker.png -------------------------------------------------------------------------------- /Website/img/service-trello.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-trello.png -------------------------------------------------------------------------------- /Website/img/service-uservoice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-uservoice.png -------------------------------------------------------------------------------- /Website/img/service-zendesk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/service-zendesk.png -------------------------------------------------------------------------------- /Website/img/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/star.png -------------------------------------------------------------------------------- /Website/img/wallpaper-macbook_air.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/wallpaper-macbook_air.png -------------------------------------------------------------------------------- /Website/img/wallpaper-option-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/wallpaper-option-1.jpg -------------------------------------------------------------------------------- /Website/img/wallpaper-option-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/wallpaper-option-2.jpg -------------------------------------------------------------------------------- /Website/img/zoom/closebox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/closebox.png -------------------------------------------------------------------------------- /Website/img/zoom/spacer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/spacer.gif -------------------------------------------------------------------------------- /Website/img/zoom/zoom-caption-fill.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-caption-fill.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-caption-l.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-caption-l.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-caption-r.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-caption-r.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow1.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow2.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow3.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow4.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow5.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow6.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow7.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-shadow8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-shadow8.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-1.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-10.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-11.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-12.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-2.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-3.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-4.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-5.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-6.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-7.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-8.png -------------------------------------------------------------------------------- /Website/img/zoom/zoom-spin-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nfarina/feeds/c6ad6c68f53eca08ced40ed1e4b3d2d6ab99bea6/Website/img/zoom/zoom-spin-9.png -------------------------------------------------------------------------------- /Website/index.yaml: -------------------------------------------------------------------------------- 1 | indexes: 2 | 3 | # AUTOGENERATED 4 | 5 | # This index.yaml is automatically updated whenever the dev_appserver 6 | # detects that a new type of query is run. If you want to manage the 7 | # index.yaml file manually, remove the above marker line (the line 8 | # saying "# AUTOGENERATED"). If you want to manage some indexes 9 | # manually, move them above the marker line. The index.yaml file is 10 | # automatically uploaded to the admin console when you next deploy 11 | # your application using appcfg.py. 12 | --------------------------------------------------------------------------------