├── .gitignore ├── libs ├── submodules │ └── dribbble-api-modern-objc │ │ ├── .gitignore │ │ ├── dribbble-api-modern-objc │ │ ├── comp.gif │ │ ├── AppDelegate.h │ │ ├── URLParser.h │ │ ├── main.m │ │ ├── Images.xcassets │ │ │ └── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ ├── URLParser.m │ │ ├── Info.plist │ │ ├── AppDelegate.m │ │ └── Dribbble.h │ │ └── dribbble-api-modern-objc.xcodeproj │ │ ├── xcuserdata │ │ └── aaronsmith.xcuserdatad │ │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── dribbble-api-modern-objc.xcscheme │ │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ └── aaronsmith.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ └── dribbble-api-modern-objc.xccheckout ├── yrk-spinning-progress-indicator │ ├── Resources │ │ ├── English.lproj │ │ │ └── InfoPlist.strings │ │ └── Info.plist │ ├── Code │ │ ├── SPIDemo_Prefix.pch │ │ ├── main.m │ │ ├── SPIDAppController.h │ │ ├── YRKSpinningProgressIndicator.h │ │ └── SPIDAppController.m │ ├── .gitignore │ ├── Configs │ │ ├── debug.xcconfig │ │ └── release.xcconfig │ ├── README.mdown │ └── SPIDemo.xcodeproj │ │ └── project.pbxproj ├── diskcache │ ├── GWDataDiskCache.h │ └── GWDataDiskCache.m └── reachability │ ├── Reachability.h │ └── Reachability.m ├── DribbbleSaver ├── DribbbleSaver │ ├── en.lproj │ │ ├── InfoPlist.strings │ │ └── Credits.rtf │ ├── NSURLRequest+Additions.h │ ├── DribbbleSaver-Prefix.pch │ ├── NSURLRequest+Additions.m │ ├── GWAppDelegate.h │ ├── GWDribbbleShot.h │ ├── main.m │ ├── GWSaverPrefs.h │ ├── GWAppDelegate.m │ ├── GWDribbbleSaver.h │ ├── GWDribbbleSaver.xib │ ├── Images.xcassets │ │ └── AppIcon.appiconset │ │ │ └── Contents.json │ ├── DribbbleSaver-Info.plist │ ├── GWDribbbleShot.xib │ ├── GWSaverPrefs.m │ ├── GWDribbbleShot.m │ ├── GWDribbbleSaver.m │ └── GWSaverPrefs.xib ├── DribbbleScreenSaver │ ├── en.lproj │ │ └── InfoPlist.strings │ ├── DribbbleScreenSaver-Prefix.pch │ ├── DribbbleScreenSaverView.h │ ├── DribbbleScreenSaverView.m │ └── DribbbleScreenSaver-Info.plist ├── symlink-debug.sh ├── DribbbleSaver.xcodeproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ ├── xcuserdata │ │ │ └── aaronsmith.xcuserdatad │ │ │ │ └── UserInterfaceState.xcuserstate │ │ └── xcshareddata │ │ │ ├── DribbbleSaver.xccheckout │ │ │ └── DribbbleSaver.xcscmblueprint │ └── xcuserdata │ │ └── aaronsmith.xcuserdatad │ │ ├── xcschemes │ │ ├── xcschememanagement.plist │ │ ├── HotShotsScreenSaver.xcscheme │ │ ├── AuthDribbbleScreensaver.xcscheme │ │ ├── DribbbleSaver.xcscheme │ │ └── ScreenSaverEngine.xcscheme │ │ └── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist ├── ScreenSaverEngine │ ├── ScreenSaverEngine-Prefix.pch │ ├── main.m │ └── ScreenSaverEngine.1 └── AuthDribbbleScreensaver │ ├── main.m │ ├── AppDelegate.h │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Info.plist │ └── AppDelegate.m ├── site ├── screensaver2.png ├── screensaver-imac.png ├── fonts │ └── bigbottom │ │ ├── big_bottom_typeface_normal-webfont.eot │ │ ├── big_bottom_typeface_normal-webfont.ttf │ │ ├── big_bottom_typeface_normal-webfont.woff │ │ ├── big_bottom_typeface_normal-webfont.woff2 │ │ ├── generator_config.txt │ │ ├── stylesheet.css │ │ └── specimen_files │ │ ├── easytabs.js │ │ ├── grid_12-825-55-15.css │ │ └── specimen_stylesheet.css ├── main.css └── index.html ├── Releases ├── 2.0.9 │ ├── HotShotsScreenSaver.saver │ │ └── Contents │ │ │ ├── Resources │ │ │ ├── AuthDribbbleScreensaver.app │ │ │ │ └── Contents │ │ │ │ │ ├── PkgInfo │ │ │ │ │ ├── MacOS │ │ │ │ │ └── AuthDribbbleScreensaver │ │ │ │ │ ├── Resources │ │ │ │ │ └── Base.lproj │ │ │ │ │ │ └── MainMenu.nib │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── _CodeSignature │ │ │ │ │ └── CodeResources │ │ │ ├── GWSaverPrefs.nib │ │ │ ├── GWDribbbleShot.nib │ │ │ ├── GWDribbbleSaver.nib │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ │ ├── MacOS │ │ │ └── HotShotsScreenSaver │ │ │ └── Info.plist │ └── HotShotsScreenSaver.zip ├── 2.1.10 │ ├── HotShotsScreenSaver.saver │ │ └── Contents │ │ │ ├── Resources │ │ │ ├── AuthDribbbleScreensaver.app │ │ │ │ └── Contents │ │ │ │ │ ├── PkgInfo │ │ │ │ │ ├── MacOS │ │ │ │ │ └── AuthDribbbleScreensaver │ │ │ │ │ ├── Resources │ │ │ │ │ └── Base.lproj │ │ │ │ │ │ └── MainMenu.nib │ │ │ │ │ ├── Info.plist │ │ │ │ │ └── _CodeSignature │ │ │ │ │ └── CodeResources │ │ │ ├── GWSaverPrefs.nib │ │ │ ├── GWDribbbleSaver.nib │ │ │ ├── GWDribbbleShot.nib │ │ │ └── en.lproj │ │ │ │ └── InfoPlist.strings │ │ │ ├── MacOS │ │ │ └── HotShotsScreenSaver │ │ │ └── Info.plist │ └── HotShotsScreenSaver.zip ├── 2.0.8 │ ├── HotShotsScreenSaver.zip │ └── HotShotsScreenSaver.saver │ │ └── Contents │ │ ├── MacOS │ │ └── HotShotsScreenSaver │ │ ├── Resources │ │ ├── GWSaverPrefs.nib │ │ ├── GWDribbbleShot.nib │ │ ├── GWDribbbleSaver.nib │ │ └── en.lproj │ │ │ └── InfoPlist.strings │ │ └── Info.plist └── 1.1.7 │ └── HotShotsScreenSaver.saver.zip ├── readme.md ├── release.sh └── .gitmodules /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | build/ 3 | *.xcarchive/ 4 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | build/ 3 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /site/screensaver2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/site/screensaver2.png -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleScreenSaver/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /site/screensaver-imac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/site/screensaver-imac.png -------------------------------------------------------------------------------- /Releases/2.0.8/HotShotsScreenSaver.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.8/HotShotsScreenSaver.zip -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.zip -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.zip -------------------------------------------------------------------------------- /Releases/1.1.7/HotShotsScreenSaver.saver.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/1.1.7/HotShotsScreenSaver.saver.zip -------------------------------------------------------------------------------- /DribbbleSaver/symlink-debug.sh: -------------------------------------------------------------------------------- 1 | ln -s /Users/aaronsmith/Development/Aaron/dribbble-screen-saver/DribbbleSaver/build/Debug/HotShotsScreenSaver.saver ~/Library/Screen\ Savers/ -------------------------------------------------------------------------------- /site/fonts/bigbottom/big_bottom_typeface_normal-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/site/fonts/bigbottom/big_bottom_typeface_normal-webfont.eot -------------------------------------------------------------------------------- /site/fonts/bigbottom/big_bottom_typeface_normal-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/site/fonts/bigbottom/big_bottom_typeface_normal-webfont.ttf -------------------------------------------------------------------------------- /site/fonts/bigbottom/big_bottom_typeface_normal-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/site/fonts/bigbottom/big_bottom_typeface_normal-webfont.woff -------------------------------------------------------------------------------- /site/fonts/bigbottom/big_bottom_typeface_normal-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/site/fonts/bigbottom/big_bottom_typeface_normal-webfont.woff2 -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/NSURLRequest+Additions.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | @interface NSURLRequest (GWAdditions) 5 | + (BOOL) allowsAnyHTTPSCertificateForHost:(NSString *) host; 6 | @end 7 | -------------------------------------------------------------------------------- /Releases/2.0.8/HotShotsScreenSaver.saver/Contents/MacOS/HotShotsScreenSaver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.8/HotShotsScreenSaver.saver/Contents/MacOS/HotShotsScreenSaver -------------------------------------------------------------------------------- /Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/GWSaverPrefs.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/GWSaverPrefs.nib -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/MacOS/HotShotsScreenSaver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.saver/Contents/MacOS/HotShotsScreenSaver -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/GWSaverPrefs.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/GWSaverPrefs.nib -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/MacOS/HotShotsScreenSaver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.saver/Contents/MacOS/HotShotsScreenSaver -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/comp.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/comp.gif -------------------------------------------------------------------------------- /Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleShot.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleShot.nib -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleShot.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleShot.nib -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/GWSaverPrefs.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/GWSaverPrefs.nib -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/AppDelegate.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import "Dribbble.h" 4 | 5 | @interface AppDelegate : NSObject 6 | 7 | @end 8 | 9 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Resources/English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/libs/yrk-spinning-progress-indicator/Resources/English.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleSaver.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleSaver.nib -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleSaver.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleSaver.nib -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleSaver.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleSaver.nib -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleShot.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/GWDribbbleShot.nib -------------------------------------------------------------------------------- /Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Resources/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Code/SPIDemo_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'TurboFan' target in the 'TurboFan' project 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #endif 8 | -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/en.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/en.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.xcodeproj/*.pbxuser 3 | *.xcodeproj/*.mode1v3 4 | *.xcodeproj/*.perspective 5 | *.xcodeproj/project.xcworkspace 6 | *.xcodeproj/xcuserdata 7 | *.xcodeproj/*.tm_build_errors 8 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/DribbbleSaver-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #endif 10 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/NSURLRequest+Additions.m: -------------------------------------------------------------------------------- 1 | 2 | #import "NSURLRequest+Additions.h" 3 | 4 | @implementation NSURLRequest (GWAdditions) 5 | 6 | + (BOOL) allowsAnyHTTPSCertificateForHost:(NSString*) host; { 7 | return TRUE; 8 | } 9 | 10 | @end 11 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWAppDelegate.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import "GWDribbbleSaver.h" 4 | 5 | @interface GWAppDelegate : NSObject 6 | @property (assign) IBOutlet NSWindow *window; 7 | @property GWDribbbleSaver * saver; 8 | @end 9 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleScreenSaver/DribbbleScreenSaver-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #endif 10 | -------------------------------------------------------------------------------- /DribbbleSaver/ScreenSaverEngine/ScreenSaverEngine-Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header 3 | // 4 | // The contents of this file are implicitly included at the beginning of every source file. 5 | // 6 | 7 | #ifdef __OBJC__ 8 | #import 9 | #endif 10 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | Dribbble Screensaver 2 | 3 | Loads and displays recent and popular shots. 4 | 5 | Content is cached for offline use. 6 | 7 | Download it here http://gngrwzrd.com/dribbble-screen-saver/ 8 | 9 | ![Screen Saver](http://gngrwzrd.com/dribbble-screen-saver/screensaver-imac.png) 10 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Code/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // 4 | // Copyright 2009 Kelan Champagne. All rights reserved. 5 | // 6 | 7 | #import 8 | 9 | int main(int argc, char *argv[]) 10 | { 11 | return NSApplicationMain(argc, (const char **) argv); 12 | } 13 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/project.xcworkspace/xcuserdata/aaronsmith.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/DribbbleSaver/DribbbleSaver.xcodeproj/project.xcworkspace/xcuserdata/aaronsmith.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/MacOS/AuthDribbbleScreensaver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/MacOS/AuthDribbbleScreensaver -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleScreenSaver/DribbbleScreenSaverView.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import "GWDribbbleSaver.h" 4 | #import "GWSaverPrefs.h" 5 | 6 | @interface DribbbleScreenSaverView : ScreenSaverView 7 | @property GWDribbbleSaver * saver; 8 | @property GWSaverPrefs * prefs; 9 | @end 10 | -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/MacOS/AuthDribbbleScreensaver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/MacOS/AuthDribbbleScreensaver -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/Resources/Base.lproj/MainMenu.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/Resources/Base.lproj/MainMenu.nib -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/Resources/Base.lproj/MainMenu.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/Resources/Base.lproj/MainMenu.nib -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWDribbbleShot.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import 4 | #import "YRKSpinningProgressIndicator.h" 5 | 6 | @interface GWDribbbleShot : NSViewController { 7 | NSTimer * spinnerTimer; 8 | } 9 | 10 | @property (assign) IBOutlet NSImageView * imageView; 11 | @end 12 | -------------------------------------------------------------------------------- /release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | VERSION=$1 3 | ARCHIVE=$2 4 | mkdir -p "Releases/${VERSION}" 5 | cp -r "${ARCHIVE}/Products/Users/aaronsmith/Library/Screen Savers/HotShotsScreenSaver.saver" "Releases/${VERSION}/HotShotsScreenSaver.saver" 6 | cd "Releases/${VERSION}/" 7 | zip -r "HotShotsScreenSaver.saver.zip" "HotShotsScreenSaver.saver" 8 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libs/submodules/dribbble-api-objc"] 2 | path = libs/submodules/dribbble-api-objc 3 | url = git@github.com-gngrwzrd:gngrwzrd/dribbble-api-objc.git 4 | [submodule "libs/submodules/dribbble-api-modern-objc"] 5 | path = libs/submodules/dribbble-api-modern-objc 6 | url = git@github.com:gngrwzrd/dribbble-api-modern-objc.git 7 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DribbbleSaver 4 | // 5 | // Created by Aaron Smith on 11/21/13. 6 | // Copyright (c) 2013 Aaron Smith. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) 12 | { 13 | return NSApplicationMain(argc, argv); 14 | } 15 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/URLParser.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | @interface URLParser : NSObject { 5 | NSArray * variables; 6 | } 7 | 8 | @property NSArray * variables; 9 | - (id) initWithURLString:(NSString *) url; 10 | - (NSString *) valueForVariable:(NSString *) varName; 11 | @end -------------------------------------------------------------------------------- /DribbbleSaver/AuthDribbbleScreensaver/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // AuthDribbbleScreensaver 4 | // 5 | // Created by Aaron Smith on 7/22/16. 6 | // Copyright © 2016 Aaron Smith. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) { 12 | return NSApplicationMain(argc, argv); 13 | } 14 | -------------------------------------------------------------------------------- /DribbbleSaver/AuthDribbbleScreensaver/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // AuthDribbbleScreensaver 4 | // 5 | // Created by Aaron Smith on 7/22/16. 6 | // Copyright © 2016 Aaron Smith. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "Dribbble.h" 11 | 12 | @interface AppDelegate : NSObject 13 | @end 14 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc.xcodeproj/project.xcworkspace/xcuserdata/aaronsmith.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gngrwzrd/dribbble-screen-saver/HEAD/libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc.xcodeproj/project.xcworkspace/xcuserdata/aaronsmith.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // dribbble-api-modern-objc 4 | // 5 | // Created by Aaron Smith on 10/26/14. 6 | // Copyright (c) 2014 gngrwzrd. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) { 12 | return NSApplicationMain(argc, argv); 13 | } 14 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWSaverPrefs.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import 4 | 5 | @interface GWSaverPrefs : NSWindowController 6 | @property IBOutlet NSButton * gifs; 7 | @property IBOutlet NSButton * authButton; 8 | @property IBOutlet NSTextField * version; 9 | @property IBOutlet NSTextField * check; 10 | @property NSBundle * resourcesBundle; 11 | + (ScreenSaverDefaults *) defaults; 12 | @end 13 | -------------------------------------------------------------------------------- /DribbbleSaver/ScreenSaverEngine/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // ScreenSaverEngine 4 | // 5 | // Created by Aaron Smith on 11/21/13. 6 | // Copyright (c) 2013 Aaron Smith. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) 12 | { 13 | 14 | @autoreleasepool { 15 | 16 | // insert code here... 17 | NSLog(@"Hello, World!"); 18 | 19 | } 20 | return 0; 21 | } 22 | 23 | -------------------------------------------------------------------------------- /site/fonts/bigbottom/generator_config.txt: -------------------------------------------------------------------------------- 1 | # Font Squirrel Font-face Generator Configuration File 2 | # Upload this file to the generator to recreate the settings 3 | # you used to create these fonts. 4 | 5 | {"mode":"optimal","formats":["ttf","woff","woff2","eotz"],"tt_instructor":"default","fix_vertical_metrics":"Y","fix_gasp":"xy","add_spaces":"Y","add_hyphens":"Y","fallback":"none","fallback_custom":"100","options_subset":"basic","subset_custom":"","subset_custom_range":"","subset_ot_features_list":"","css_stylesheet":"stylesheet.css","filename_suffix":"-webfont","emsquare":"2048","spacing_adjustment":"0"} -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Configs/debug.xcconfig: -------------------------------------------------------------------------------- 1 | // debug.xcconfig 2 | // 3 | // This is mostly based on the Release config, but we override some settings 4 | 5 | #include "release.xcconfig" 6 | 7 | 8 | // Architectures 9 | ARCHS = $(NATIVE_ARCH_ACTUAL) 10 | ONLY_ACTIVE_ARCH = YES 11 | 12 | // Code Generation 13 | GCC_DYNAMIC_NO_PIC = NO 14 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES 15 | GCC_OPTIMIZATION_LEVEL = 0 16 | 17 | 18 | // Deployment 19 | COPY_PHASE_STRIP = NO 20 | STRIP_INSTALLED_PRODUCT = NO 21 | STRIP_STYLE = all 22 | 23 | 24 | // Linking 25 | DEAD_CODE_STRIPPING = NO 26 | 27 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/en.lproj/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWAppDelegate.m: -------------------------------------------------------------------------------- 1 | 2 | #import "GWAppDelegate.h" 3 | 4 | @implementation GWAppDelegate 5 | 6 | - (void) applicationDidFinishLaunching:(NSNotification *)aNotification { 7 | self.saver = [[GWDribbbleSaver alloc] initWithNibName:@"GWDribbbleSaver" bundle:nil]; 8 | self.saver.view.frame = ((NSView*)self.window.contentView).bounds; 9 | self.saver.view.wantsLayer = TRUE; 10 | self.saver.view.layer.backgroundColor = [[NSColor blackColor] CGColor]; 11 | [self.saver run]; 12 | [self.window.contentView addSubview:self.saver.view]; 13 | } 14 | 15 | - (IBAction) refresh:(id)sender { 16 | [self.saver refresh:nil]; 17 | } 18 | 19 | - (BOOL) isAnimating { 20 | return TRUE; 21 | } 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /site/fonts/bigbottom/stylesheet.css: -------------------------------------------------------------------------------- 1 | /* Generated by Font Squirrel (http://www.fontsquirrel.com) on November 11, 2014 */ 2 | 3 | 4 | 5 | @font-face { 6 | font-family: 'big_bottom_cartoonregular'; 7 | src: url('big_bottom_typeface_normal-webfont.eot'); 8 | src: url('big_bottom_typeface_normal-webfont.eot?#iefix') format('embedded-opentype'), 9 | url('big_bottom_typeface_normal-webfont.woff2') format('woff2'), 10 | url('big_bottom_typeface_normal-webfont.woff') format('woff'), 11 | url('big_bottom_typeface_normal-webfont.ttf') format('truetype'), 12 | url('big_bottom_typeface_normal-webfont.svg#big_bottom_cartoonregular') format('svg'); 13 | font-weight: normal; 14 | font-style: normal; 15 | 16 | } -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | dribbble-api-modern-objc.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | 079E5CCB19FD8509006D10DE 16 | 17 | primary 18 | 19 | 20 | 079E5CDE19FD8509006D10DE 21 | 22 | primary 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.yeahrightkeller.SPIDemo 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | NSMainNibFile 24 | MainMenu 25 | NSPrincipalClass 26 | NSApplication 27 | 28 | 29 | -------------------------------------------------------------------------------- /libs/diskcache/GWDataDiskCache.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | @interface GWDataDiskCache : NSObject { 5 | 6 | } 7 | 8 | @property NSURL * diskCacheURL; 9 | @property (nonatomic) NSTimeInterval oldestAllowableFileTimeDelta; //seconds 10 | @property BOOL logFilesNotCached; 11 | @property BOOL logFilesRemoved; 12 | 13 | - (id) initWithDiskCacheURL:(NSURL *) url; 14 | - (void) clearOldFiles; 15 | - (void) empty; 16 | - (void) setOldestAllowableFileTimeDeltaToDayCount:(NSInteger) dayCount; 17 | - (BOOL) writeData:(NSData *)data forRequest:(NSURLRequest *)request; 18 | - (BOOL) writeData:(NSData *) data forResponse:(NSURLResponse *) response; 19 | - (BOOL) hasDataForURL:(NSURL *) url; 20 | - (BOOL) hasDataForRequest:(NSURLRequest *) request; 21 | - (NSURL *) localCachedURLForURL:(NSURL *) url; 22 | - (NSURL *) localCachedURLForRequest:(NSURLRequest *) request; 23 | - (NSURLRequest *) localRequestForRequest:(NSURLRequest *) request; 24 | - (NSData *) dataForRequest:(NSURLRequest *) request; 25 | - (NSData *) dataForURL:(NSURL *) url; 26 | - (CGFloat) oldestAllowableFileTimeDeltaInDays; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /site/fonts/bigbottom/specimen_files/easytabs.js: -------------------------------------------------------------------------------- 1 | (function($){$.fn.easyTabs=function(option){var param=jQuery.extend({fadeSpeed:"fast",defaultContent:1,activeClass:'active'},option);$(this).each(function(){var thisId="#"+this.id;if(param.defaultContent==''){param.defaultContent=1;} 2 | if(typeof param.defaultContent=="number") 3 | {var defaultTab=$(thisId+" .tabs li:eq("+(param.defaultContent-1)+") a").attr('href').substr(1);}else{var defaultTab=param.defaultContent;} 4 | $(thisId+" .tabs li a").each(function(){var tabToHide=$(this).attr('href').substr(1);$("#"+tabToHide).addClass('easytabs-tab-content');});hideAll();changeContent(defaultTab);function hideAll(){$(thisId+" .easytabs-tab-content").hide();} 5 | function changeContent(tabId){hideAll();$(thisId+" .tabs li").removeClass(param.activeClass);$(thisId+" .tabs li a[href=#"+tabId+"]").closest('li').addClass(param.activeClass);if(param.fadeSpeed!="none") 6 | {$(thisId+" #"+tabId).fadeIn(param.fadeSpeed);}else{$(thisId+" #"+tabId).show();}} 7 | $(thisId+" .tabs li").click(function(){var tabId=$(this).find('a').attr('href').substr(1);changeContent(tabId);return false;});});}})(jQuery); -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWDribbbleSaver.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import "Dribbble.h" 4 | #import "GWDribbbleShot.h" 5 | #import "YRKSpinningProgressIndicator.h" 6 | #import "GWSaverPrefs.h" 7 | #import "GWDataDiskCache.h" 8 | 9 | #define GWDribbbleSaverUseCache 1 10 | 11 | @interface GWDribbbleSaver : NSViewController { 12 | BOOL _useCachedShots; 13 | NSTimer * refreshTimer; 14 | NSTimer * switchTimer; 15 | NSTimer * switchTimer2; 16 | } 17 | 18 | @property NSBundle * resourcesBundle; 19 | @property NSMutableArray * shots; 20 | @property NSMutableArray * shotViews; 21 | @property NSButton * includeLatest; 22 | @property NSButton * includePopular; 23 | @property NSButton * includeFavorites; 24 | @property Dribbble * latest; 25 | @property Dribbble * popular; 26 | @property Dribbble * favorites; 27 | 28 | #if GWDribbbleSaverUseCache 29 | @property GWDataDiskCache * cache; 30 | #endif 31 | 32 | + (GWDribbbleSaver *) instance; 33 | + (NSURL *) applicationSupport; 34 | - (IBAction) refresh:(id)sender; 35 | - (void) stopTimers; 36 | - (void) startTimers; 37 | - (void) run; 38 | 39 | //- (void) shotLoadCompleted; 40 | 41 | @end 42 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWDribbbleSaver.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /DribbbleSaver/AuthDribbbleScreensaver/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/URLParser.m: -------------------------------------------------------------------------------- 1 | 2 | #import "URLParser.h" 3 | 4 | @implementation URLParser 5 | @synthesize variables; 6 | 7 | - (id) initWithURLString:(NSString *) url{ 8 | self = [super init]; 9 | if(self != nil) { 10 | NSString * string = url; 11 | NSScanner * scanner = [NSScanner scannerWithString:string]; 12 | [scanner setCharactersToBeSkipped:[NSCharacterSet characterSetWithCharactersInString:@"&?"]]; 13 | NSString * tempString = nil; 14 | NSMutableArray * vars = [NSMutableArray new]; 15 | [scanner scanUpToString:@"?" intoString:nil]; 16 | while([scanner scanUpToString:@"&" intoString:&tempString]) { 17 | [vars addObject:[tempString copy]]; 18 | } 19 | self.variables = vars; 20 | } 21 | return self; 22 | } 23 | 24 | - (NSString *) valueForVariable:(NSString *) varName { 25 | for (NSString * var in self.variables) { 26 | if ([var length] > [varName length]+1 && [[var substringWithRange:NSMakeRange(0, [varName length]+1)] isEqualToString:[varName stringByAppendingString:@"="]]) { 27 | NSString * varValue = [var substringFromIndex:[varName length]+1]; 28 | return varValue; 29 | } 30 | } 31 | return nil; 32 | } 33 | 34 | - (void) dealloc { 35 | //NSLog(@"DEALLOC: URLParser"); 36 | } 37 | 38 | @end 39 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Code/SPIDAppController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SPIDAppController.h 3 | // 4 | // Copyright 2009 Kelan Champagne. All rights reserved. 5 | // 6 | 7 | 8 | @class YRKSpinningProgressIndicator; 9 | 10 | 11 | @interface SPIDAppController : NSObject { 12 | NSViewAnimation *viewAnimation; 13 | 14 | IBOutlet NSProgressIndicator *_progressIndicator; 15 | IBOutlet YRKSpinningProgressIndicator *_turboFan; 16 | IBOutlet NSButton *_nspiToggleButton; 17 | IBOutlet NSButton *_yrkpiToggleButton; 18 | IBOutlet NSButton *_threadedAnimationButton; 19 | IBOutlet NSButton *_displayWhenStoppedButton; 20 | 21 | IBOutlet NSColorWell *_foregroundColorWell; 22 | IBOutlet NSColorWell *_backgroundColorWell; 23 | BOOL _yrkpiIsRunning, _nspiIsRunning; 24 | 25 | IBOutlet NSButton *_determinateDemoButton; 26 | } 27 | 28 | - (IBAction)toggleProgressIndicator:(id)sender; 29 | - (IBAction)toggleTurboFan:(id)sender; 30 | 31 | - (IBAction)startDeterminateDemo:(id)sender; 32 | - (void)finishDeterminateDemo; 33 | 34 | - (IBAction)changeForegroundColor:(id)sender; 35 | - (IBAction)changeBackgroundColor:(id)sender; 36 | - (IBAction)toggleDrawBackground:(id)sender; 37 | 38 | - (IBAction)toggleDisplayWhenStopped:(id)sender; 39 | 40 | - (IBAction)takeThreadedFrom:(id)sender; 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/DribbbleSaver-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.gngrwzrd.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 2.1 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 10 25 | LSMinimumSystemVersion 26 | ${MACOSX_DEPLOYMENT_TARGET} 27 | NSHumanReadableCopyright 28 | Copyright © 2013 Aaron Smith. All rights reserved. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | NSAppTransportSecurity 34 | 35 | NSAllowsArbitraryLoads 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Code/YRKSpinningProgressIndicator.h: -------------------------------------------------------------------------------- 1 | // 2 | // YRKSpinningProgressIndicator.h 3 | // 4 | // Copyright 2009 Kelan Champagne. All rights reserved. 5 | // 6 | 7 | 8 | @interface YRKSpinningProgressIndicator : NSView { 9 | int _position; 10 | int _numFins; 11 | NSColor *__autoreleasing*_finColors; 12 | 13 | BOOL _isAnimating; 14 | BOOL _isFadingOut; 15 | NSTimer *_animationTimer; 16 | NSThread *_animationThread; 17 | 18 | NSColor *_foreColor; 19 | NSColor *_backColor; 20 | BOOL _drawsBackground; 21 | 22 | BOOL _displayedWhenStopped; 23 | BOOL _usesThreadedAnimation; 24 | 25 | // For determinate mode 26 | BOOL _isIndeterminate; 27 | double _currentValue; 28 | double _maxValue; 29 | } 30 | 31 | @property (nonatomic, retain) NSColor *color; 32 | @property (nonatomic, retain) NSColor *backgroundColor; 33 | @property (nonatomic, assign) BOOL drawsBackground; 34 | 35 | @property (nonatomic, assign, getter=isDisplayedWhenStopped) BOOL displayedWhenStopped; 36 | @property (nonatomic, assign) BOOL usesThreadedAnimation; 37 | 38 | @property (nonatomic, assign, getter=isIndeterminate) BOOL indeterminate; 39 | @property (nonatomic, assign) double doubleValue; 40 | @property (nonatomic, assign) double maxValue; 41 | 42 | - (void)stopAnimation:(id)sender; 43 | - (void)startAnimation:(id)sender; 44 | 45 | @end 46 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleScreenSaver/DribbbleScreenSaverView.m: -------------------------------------------------------------------------------- 1 | 2 | #import "DribbbleScreenSaverView.h" 3 | 4 | @implementation DribbbleScreenSaverView 5 | 6 | - (id)initWithFrame:(NSRect)frame isPreview:(BOOL)isPreview { 7 | self = [super initWithFrame:frame isPreview:isPreview]; 8 | if (self) { 9 | [self setAnimationTimeInterval:1/30.0]; 10 | } 11 | NSBundle * bundle = [NSBundle bundleWithIdentifier:@"com.gngrwzrd.HotShotsScreenSaver"]; 12 | self.saver = [[GWDribbbleSaver alloc] initWithNibName:@"GWDribbbleSaver" bundle:bundle]; 13 | self.saver.resourcesBundle = bundle; 14 | self.saver.view.frame = NSMakeRect(0,0,NSWidth(frame),NSHeight(frame)); 15 | [self.saver run]; 16 | [self addSubview:self.saver.view]; 17 | return self; 18 | } 19 | 20 | - (void)startAnimation { 21 | [super startAnimation]; 22 | [self.saver startTimers]; 23 | } 24 | 25 | - (void)stopAnimation { 26 | [super stopAnimation]; 27 | [self.saver stopTimers]; 28 | } 29 | 30 | - (void)drawRect:(NSRect)rect { 31 | [super drawRect:rect]; 32 | } 33 | 34 | - (void)animateOneFrame { 35 | return; 36 | } 37 | 38 | - (BOOL)hasConfigureSheet { 39 | return YES; 40 | } 41 | 42 | - (NSWindow *)configureSheet { 43 | NSArray * topLevels = nil; 44 | self.prefs = [[GWSaverPrefs alloc] init]; 45 | self.prefs.resourcesBundle = self.saver.resourcesBundle; 46 | [self.saver.resourcesBundle loadNibNamed:@"GWSaverPrefs" owner:self.prefs topLevelObjects:&topLevels]; 47 | return self.prefs.window; 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /site/main.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family:'big_bottom_cartoonregular'; 3 | src: url('fonts/bigbottom/big_bottom_typeface_normal-webfont.eot'); 4 | src: url('fonts/bigbottom/big_bottom_typeface_normal-webfont.eot?#iefix') format('embedded-opentype'), 5 | url('fonts/bigbottom/big_bottom_typeface_normal-webfont.woff2') format('woff2'), 6 | url('fonts/bigbottom/big_bottom_typeface_normal-webfont.woff') format('woff'), 7 | url('fonts/bigbottom/big_bottom_typeface_normal-webfont.ttf') format('truetype'), 8 | url('fonts/bigbottom/big_bottom_typeface_normal-webfont.svg#big_bottom_cartoonregular') format('svg'); 9 | font-weight: normal; 10 | font-style: normal; 11 | } 12 | 13 | body { 14 | margin:0; 15 | padding:0; 16 | background-color:#f2f2f2; 17 | color:#333; 18 | font-family:"Lucida Grande"; 19 | } 20 | 21 | a { 22 | color:#333; 23 | text-decoration:underline; 24 | } 25 | 26 | h1 { 27 | font-size:40pt; 28 | font-family:"big_bottom_cartoonregular"; 29 | margin:0; 30 | padding:0; 31 | } 32 | 33 | #content { 34 | margin:0 auto; 35 | width:900px; 36 | text-align:center; 37 | } 38 | 39 | #footer { 40 | font-size:10px; 41 | margin-top:20px; 42 | } 43 | 44 | #screensaver { 45 | font-family: "big_bottom_cartoonregular"; 46 | font-size:20pt; 47 | } 48 | 49 | 50 | div.apps { 51 | color:white; 52 | background-color:#555; 53 | padding:10px; 54 | text-align:center; 55 | font-size:10px; 56 | padding-bottom:12px; 57 | line-height:18px; 58 | } 59 | 60 | div.apps a { 61 | color:white; 62 | } -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | AuthDribbbleScreensaver.xcscheme 8 | 9 | orderHint 10 | 3 11 | 12 | DribbbleSaver.xcscheme 13 | 14 | orderHint 15 | 0 16 | 17 | HotShotsScreenSaver.xcscheme 18 | 19 | orderHint 20 | 1 21 | 22 | ScreenSaverEngine.xcscheme 23 | 24 | orderHint 25 | 2 26 | 27 | 28 | SuppressBuildableAutocreation 29 | 30 | 077B11FF1D3FE17C0021DA7A 31 | 32 | primary 33 | 34 | 35 | 077B120D1D4264230021DA7A 36 | 37 | primary 38 | 39 | 40 | 07D48543183F0C8900663948 41 | 42 | primary 43 | 44 | 45 | 07D48564183F0C8900663948 46 | 47 | primary 48 | 49 | 50 | 07D4859E183F329300663948 51 | 52 | primary 53 | 54 | 55 | 07D485B3183F32B300663948 56 | 57 | primary 58 | 59 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleScreenSaver/DribbbleScreenSaver-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.gngrwzrd.${PRODUCT_NAME:rfc1034identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 2.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 9 25 | NSHumanReadableCopyright 26 | Copyright © 2015 Aaron Smith. All rights reserved. 27 | NSPrincipalClass 28 | DribbbleScreenSaverView 29 | NSAppTransportSecurity 30 | 31 | NSAllowsArbitraryLoads 32 | 33 | 34 | CFBundleURLTypes 35 | 36 | 37 | CFBundleTypeRole 38 | Editor 39 | CFBundleURLName 40 | com.gngrwzrd.hotshots-screensaver 41 | CFBundleURLSchemes 42 | 43 | hotshots-screensaver 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.gngrwzrd.$(PRODUCT_NAME:rfc1034identifier) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | $(MACOSX_DEPLOYMENT_TARGET) 27 | NSHumanReadableCopyright 28 | Copyright © 2014 gngrwzrd. All rights reserved. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | CFBundleURLTypes 34 | 35 | 36 | CFBundleTypeRole 37 | Editor 38 | CFBundleURLName 39 | com.mycompany.myscheme 40 | CFBundleURLSchemes 41 | 42 | hotshots-sandbox 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /DribbbleSaver/AuthDribbbleScreensaver/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | LSMinimumSystemVersion 26 | $(MACOSX_DEPLOYMENT_TARGET) 27 | NSHumanReadableCopyright 28 | Copyright © 2016 Aaron Smith. All rights reserved. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | LSUIElement 34 | 35 | CFBundleURLTypes 36 | 37 | 38 | CFBundleTypeRole 39 | Editor 40 | CFBundleURLName 41 | com.gngrwzrd.hotshots-screensaver 42 | CFBundleURLSchemes 43 | 44 | hotshots-screensaver 45 | 46 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /Releases/2.0.8/HotShotsScreenSaver.saver/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 15B30a 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | HotShotsScreenSaver 11 | CFBundleIdentifier 12 | com.gngrwzrd.HotShotsScreenSaver 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | HotShotsScreenSaver 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 2.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleSupportedPlatforms 24 | 25 | MacOSX 26 | 27 | CFBundleVersion 28 | 8 29 | DTCompiler 30 | com.apple.compilers.llvm.clang.1_0 31 | DTPlatformBuild 32 | 7A1001 33 | DTPlatformVersion 34 | GM 35 | DTSDKBuild 36 | 15A278 37 | DTSDKName 38 | macosx10.11 39 | DTXcode 40 | 0701 41 | DTXcodeBuild 42 | 7A1001 43 | NSAppTransportSecurity 44 | 45 | NSAllowsArbitraryLoads 46 | 47 | 48 | NSHumanReadableCopyright 49 | Copyright © 2015 Aaron Smith. All rights reserved. 50 | NSPrincipalClass 51 | DribbbleScreenSaverView 52 | 53 | 54 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc.xcodeproj/project.xcworkspace/xcshareddata/dribbble-api-modern-objc.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 9D428E93-4093-46A5-8718-8E6A544D64A5 9 | IDESourceControlProjectName 10 | dribbble-api-modern-objc 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 23F7DCC083C81EFCF2112680A51FDC413FC613D4 14 | github.com-gngrwzrd:gngrwzrd/dribbble-api-modern-objc.git 15 | 16 | IDESourceControlProjectPath 17 | dribbble-api-modern-objc.xcodeproj 18 | IDESourceControlProjectRelativeInstallPathDictionary 19 | 20 | 23F7DCC083C81EFCF2112680A51FDC413FC613D4 21 | ../.. 22 | 23 | IDESourceControlProjectURL 24 | github.com-gngrwzrd:gngrwzrd/dribbble-api-modern-objc.git 25 | IDESourceControlProjectVersion 26 | 111 27 | IDESourceControlProjectWCCIdentifier 28 | 23F7DCC083C81EFCF2112680A51FDC413FC613D4 29 | IDESourceControlProjectWCConfigurations 30 | 31 | 32 | IDESourceControlRepositoryExtensionIdentifierKey 33 | public.vcs.git 34 | IDESourceControlWCCIdentifierKey 35 | 23F7DCC083C81EFCF2112680A51FDC413FC613D4 36 | IDESourceControlWCCName 37 | dribbble-api-modern-objc 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWDribbbleShot.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Dribbble Screen Saver 4 | 5 | 6 | 7 | 8 |
9 | More Apps:   10 | Better Window Manager   11 | Script Center   12 | Mouse Warp 2   13 | Color Picker   14 | Color Lists Plugin   15 | Hot Shots 2   16 | Hot Shots Screen Saver 17 |
18 |
19 |
20 |
21 |

Dribbble Screen Saver

22 | 23 | Download
24 |

Version: 2.1.10

25 | Source 26 |
27 | 30 |
31 |
32 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /DribbbleSaver/AuthDribbbleScreensaver/AppDelegate.m: -------------------------------------------------------------------------------- 1 | 2 | #import "AppDelegate.h" 3 | 4 | @interface AppDelegate () 5 | @property Dribbble * dribbble; 6 | @end 7 | 8 | @implementation AppDelegate 9 | 10 | - (void) applicationDidFinishLaunching:(NSNotification *)aNotification { 11 | [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleOpenURLEvent:replyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL]; 12 | [NSTimer scheduledTimerWithTimeInterval:.2 target:self selector:@selector(auth) userInfo:nil repeats:false]; 13 | } 14 | 15 | - (void) handleOpenURLEvent:(NSAppleEventDescriptor *) event replyEvent:(NSAppleEventDescriptor *) replyEvent { 16 | NSString * url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; 17 | [self.dribbble handleCustomSchemeCallback:url]; 18 | } 19 | 20 | - (void) auth { 21 | NSString * tokenDir = [@"~/Library/Application Support/HotShotsScreenSaver" stringByExpandingTildeInPath]; 22 | [[NSFileManager defaultManager] createDirectoryAtPath:tokenDir withIntermediateDirectories:TRUE attributes:nil error:nil]; 23 | NSString * tokenPath = [@"~/Library/Application Support/HotShotsScreenSaver/accesstoken.txt" stringByExpandingTildeInPath]; 24 | [[NSFileManager defaultManager] removeItemAtPath:tokenPath error:nil]; 25 | self.dribbble = [[Dribbble alloc] init]; 26 | self.dribbble.clientId = @"c7c885499244790f1bd11ac7f79e2078acf62d73e8ac6f03e2e5cc1e1bfabe2a"; 27 | self.dribbble.clientSecret = @"f817779f5b9abd0a4fe74f306c64dd5fc4245a7f8aa1d6a2afb76a87168261a1"; 28 | [self.dribbble authorizeWithScopes:@[DribbbleScopePublic] completion:^(DribbbleResponse *response) { 29 | NSData * accessTokenData = [self.dribbble.accessToken dataUsingEncoding:NSUTF8StringEncoding]; 30 | [[NSFileManager defaultManager] createFileAtPath:tokenPath contents:accessTokenData attributes:nil]; 31 | [[NSWorkspace sharedWorkspace] openFile:@"/Applications/System Preferences.app"]; 32 | [[NSApplication sharedApplication] terminate:nil]; 33 | }]; 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 15G26a 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | HotShotsScreenSaver 11 | CFBundleIdentifier 12 | com.gngrwzrd.HotShotsScreenSaver 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | HotShotsScreenSaver 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 2.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleSupportedPlatforms 24 | 25 | MacOSX 26 | 27 | CFBundleURLTypes 28 | 29 | 30 | CFBundleTypeRole 31 | Editor 32 | CFBundleURLName 33 | com.gngrwzrd.hotshots-screensaver 34 | CFBundleURLSchemes 35 | 36 | hotshots-screensaver 37 | 38 | 39 | 40 | CFBundleVersion 41 | 9 42 | DTCompiler 43 | com.apple.compilers.llvm.clang.1_0 44 | DTPlatformBuild 45 | 7D1014 46 | DTPlatformVersion 47 | GM 48 | DTSDKBuild 49 | 15E60 50 | DTSDKName 51 | macosx10.11 52 | DTXcode 53 | 0731 54 | DTXcodeBuild 55 | 7D1014 56 | NSAppTransportSecurity 57 | 58 | NSAllowsArbitraryLoads 59 | 60 | 61 | NSHumanReadableCopyright 62 | Copyright © 2015 Aaron Smith. All rights reserved. 63 | NSPrincipalClass 64 | DribbbleScreenSaverView 65 | 66 | 67 | -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 15G31 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | HotShotsScreenSaver 11 | CFBundleIdentifier 12 | com.gngrwzrd.HotShotsScreenSaver 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | HotShotsScreenSaver 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 2.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleSupportedPlatforms 24 | 25 | MacOSX 26 | 27 | CFBundleURLTypes 28 | 29 | 30 | CFBundleTypeRole 31 | Editor 32 | CFBundleURLName 33 | com.gngrwzrd.hotshots-screensaver 34 | CFBundleURLSchemes 35 | 36 | hotshots-screensaver 37 | 38 | 39 | 40 | CFBundleVersion 41 | 9 42 | DTCompiler 43 | com.apple.compilers.llvm.clang.1_0 44 | DTPlatformBuild 45 | 7D1014 46 | DTPlatformVersion 47 | GM 48 | DTSDKBuild 49 | 15E60 50 | DTSDKName 51 | macosx10.11 52 | DTXcode 53 | 0731 54 | DTXcodeBuild 55 | 7D1014 56 | NSAppTransportSecurity 57 | 58 | NSAllowsArbitraryLoads 59 | 60 | 61 | NSHumanReadableCopyright 62 | Copyright © 2015 Aaron Smith. All rights reserved. 63 | NSPrincipalClass 64 | DribbbleScreenSaverView 65 | 66 | 67 | -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 15G26a 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | AuthDribbbleScreensaver 11 | CFBundleIdentifier 12 | com.gngrwzrd.AuthDribbbleScreensaver 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | AuthDribbbleScreensaver 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleSupportedPlatforms 24 | 25 | MacOSX 26 | 27 | CFBundleURLTypes 28 | 29 | 30 | CFBundleTypeRole 31 | Editor 32 | CFBundleURLName 33 | com.gngrwzrd.hotshots-screensaver 34 | CFBundleURLSchemes 35 | 36 | hotshots-screensaver 37 | 38 | 39 | 40 | CFBundleVersion 41 | 1 42 | DTCompiler 43 | com.apple.compilers.llvm.clang.1_0 44 | DTPlatformBuild 45 | 7D1014 46 | DTPlatformVersion 47 | GM 48 | DTSDKBuild 49 | 15E60 50 | DTSDKName 51 | macosx10.11 52 | DTXcode 53 | 0731 54 | DTXcodeBuild 55 | 7D1014 56 | LSMinimumSystemVersion 57 | 10.11 58 | LSUIElement 59 | 60 | NSHumanReadableCopyright 61 | Copyright © 2016 Aaron Smith. All rights reserved. 62 | NSMainNibFile 63 | MainMenu 64 | NSPrincipalClass 65 | NSApplication 66 | 67 | 68 | -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 15G31 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | AuthDribbbleScreensaver 11 | CFBundleIdentifier 12 | com.gngrwzrd.AuthDribbbleScreensaver 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | AuthDribbbleScreensaver 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleSupportedPlatforms 24 | 25 | MacOSX 26 | 27 | CFBundleURLTypes 28 | 29 | 30 | CFBundleTypeRole 31 | Editor 32 | CFBundleURLName 33 | com.gngrwzrd.hotshots-screensaver 34 | CFBundleURLSchemes 35 | 36 | hotshots-screensaver 37 | 38 | 39 | 40 | CFBundleVersion 41 | 1 42 | DTCompiler 43 | com.apple.compilers.llvm.clang.1_0 44 | DTPlatformBuild 45 | 7D1014 46 | DTPlatformVersion 47 | GM 48 | DTSDKBuild 49 | 15E60 50 | DTSDKName 51 | macosx10.11 52 | DTXcode 53 | 0731 54 | DTXcodeBuild 55 | 7D1014 56 | LSMinimumSystemVersion 57 | 10.11 58 | LSUIElement 59 | 60 | NSHumanReadableCopyright 61 | Copyright © 2016 Aaron Smith. All rights reserved. 62 | NSMainNibFile 63 | MainMenu 64 | NSPrincipalClass 65 | NSApplication 66 | 67 | 68 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/project.xcworkspace/xcshareddata/DribbbleSaver.xccheckout: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDESourceControlProjectFavoriteDictionaryKey 6 | 7 | IDESourceControlProjectIdentifier 8 | 671FE756-E725-4B84-BE41-13C09FD2D5DA 9 | IDESourceControlProjectName 10 | DribbbleSaver 11 | IDESourceControlProjectOriginsDictionary 12 | 13 | 0CBEFD82816DFB0AC94598C8CE3044F9A25D13C0 14 | github.com-gngrwzrd:gngrwzrd/dribbble-api-objc.git 15 | 210070983D1C18A7861836924E0C08D36C406F8F 16 | github.com-gngrwzrd:gngrwzrd/dribbble-screen-saver.git 17 | 18 | IDESourceControlProjectPath 19 | DribbbleSaver/DribbbleSaver.xcodeproj 20 | IDESourceControlProjectRelativeInstallPathDictionary 21 | 22 | 0CBEFD82816DFB0AC94598C8CE3044F9A25D13C0 23 | ../../..libs/submodules/dribbble-api-objc 24 | 210070983D1C18A7861836924E0C08D36C406F8F 25 | ../../.. 26 | 27 | IDESourceControlProjectURL 28 | github.com-gngrwzrd:gngrwzrd/dribbble-screen-saver.git 29 | IDESourceControlProjectVersion 30 | 111 31 | IDESourceControlProjectWCCIdentifier 32 | 210070983D1C18A7861836924E0C08D36C406F8F 33 | IDESourceControlProjectWCConfigurations 34 | 35 | 36 | IDESourceControlRepositoryExtensionIdentifierKey 37 | public.vcs.git 38 | IDESourceControlWCCIdentifierKey 39 | 0CBEFD82816DFB0AC94598C8CE3044F9A25D13C0 40 | IDESourceControlWCCName 41 | dribbble-api-objc 42 | 43 | 44 | IDESourceControlRepositoryExtensionIdentifierKey 45 | public.vcs.git 46 | IDESourceControlWCCIdentifierKey 47 | 210070983D1C18A7861836924E0C08D36C406F8F 48 | IDESourceControlWCCName 49 | dribbble-screen-saver 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcschemes/HotShotsScreenSaver.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 42 | 43 | 44 | 45 | 51 | 52 | 54 | 55 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/project.xcworkspace/xcshareddata/DribbbleSaver.xcscmblueprint: -------------------------------------------------------------------------------- 1 | { 2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "210070983D1C18A7861836924E0C08D36C406F8F", 3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { 4 | 5 | }, 6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { 7 | "0CBEFD82816DFB0AC94598C8CE3044F9A25D13C0" : 0, 8 | "210070983D1C18A7861836924E0C08D36C406F8F" : 0, 9 | "048BDABE3AE79FA3EE55C616D3C9FA56FDEE4397" : 0 10 | }, 11 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "671FE756-E725-4B84-BE41-13C09FD2D5DA", 12 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { 13 | "0CBEFD82816DFB0AC94598C8CE3044F9A25D13C0" : "dribbble-screen-saverlibs\/submodules\/dribbble-api-objc", 14 | "210070983D1C18A7861836924E0C08D36C406F8F" : "dribbble-screen-saver", 15 | "048BDABE3AE79FA3EE55C616D3C9FA56FDEE4397" : "dribbble-screen-saver\/libs\/submodules\/dribbble-api-modern-objc\/" 16 | }, 17 | "DVTSourceControlWorkspaceBlueprintNameKey" : "DribbbleSaver", 18 | "DVTSourceControlWorkspaceBlueprintVersion" : 204, 19 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "DribbbleSaver\/DribbbleSaver.xcodeproj", 20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ 21 | { 22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:gngrwzrd\/dribbble-api-modern-objc.git", 23 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 24 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "048BDABE3AE79FA3EE55C616D3C9FA56FDEE4397" 25 | }, 26 | { 27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com-gngrwzrd:gngrwzrd\/dribbble-api-objc.git", 28 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 29 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "0CBEFD82816DFB0AC94598C8CE3044F9A25D13C0" 30 | }, 31 | { 32 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com-gngrwzrd:gngrwzrd\/dribbble-screen-saver.git", 33 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 34 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "210070983D1C18A7861836924E0C08D36C406F8F" 35 | } 36 | ] 37 | } -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/AppDelegate.m: -------------------------------------------------------------------------------- 1 | 2 | #import "AppDelegate.h" 3 | 4 | @interface AppDelegate () 5 | @property (weak) IBOutlet NSWindow * window; 6 | @property (weak) IBOutlet NSTextField * likeShotField; 7 | @property (weak) IBOutlet NSTextField * unlikeShotField; 8 | @property (weak) IBOutlet NSTextField * followUser; 9 | @property (weak) IBOutlet NSTextField * unfollowUser; 10 | @property Dribbble * d; 11 | @end 12 | 13 | @implementation AppDelegate 14 | 15 | - (void) applicationDidFinishLaunching:(NSNotification *) aNotification { 16 | // Insert code here to initialize your application 17 | [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL]; 18 | } 19 | 20 | - (void) applicationWillTerminate:(NSNotification *) aNotification { 21 | // Insert code here to tear down your application 22 | } 23 | 24 | - (void) handleURLEvent:(NSAppleEventDescriptor*) event withReplyEvent:(NSAppleEventDescriptor*) replyEvent { 25 | NSString * url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; 26 | [self.d handleCustomSchemeCallback:url]; 27 | } 28 | 29 | - (IBAction) testAuth:(id)sender { 30 | self.d = [[Dribbble alloc] init]; 31 | self.d.clientId = @"1bcc9d4412783d9ed17457ea7bfe293392c523de74f5e4e8cf798f45eca3e559"; 32 | self.d.clientSecret = @"5d20fe22fdba1dfb957d8187230394b7b732db2c9e9cae9da31e5ed0a5233933"; 33 | [self.d authorizeWithScopes:@[DribbbleScopePublic,DribbbleScopeWrite,DribbbleScopeUpload] completion:^(DribbbleResponse *response) { 34 | if(!response.error) { 35 | NSLog(@"%@",self.d.accessToken); 36 | NSLog(@"authorize success!"); 37 | } 38 | }]; 39 | } 40 | 41 | - (IBAction) listShots:(id)sender { 42 | [self.d listShotsWithParameters:nil completion:^(DribbbleResponse *response) { 43 | NSLog(@"shots complete"); 44 | NSLog(@"%@",response.data); 45 | }]; 46 | } 47 | 48 | - (IBAction) listShotLikesForAuthedUser:(id)sender { 49 | [self.d listShotsLikedParameters:nil withCompletion:^(DribbbleResponse *response) { 50 | NSLog(@"likes:"); 51 | NSLog(@"%@",response.data); 52 | }]; 53 | } 54 | 55 | - (IBAction) likeShot:(id)sender { 56 | [self.d likeShot:self.likeShotField.stringValue withCompletion:^(DribbbleResponse *response) { 57 | NSLog(@"%@",response); 58 | }]; 59 | } 60 | 61 | - (IBAction) unlikeShot:(id)sender { 62 | [self.d unlikeShot:self.likeShotField.stringValue withCompletion:^(DribbbleResponse *response) { 63 | NSLog(@"%@",response); 64 | }]; 65 | } 66 | 67 | - (IBAction) followUser:(id)sender { 68 | [self.d followUser:self.followUser.stringValue withCompletion:^(DribbbleResponse *response) { 69 | NSLog(@"%@",response); 70 | }]; 71 | } 72 | 73 | - (IBAction) unfollowUser:(id)sender { 74 | [self.d unfollowUser:self.unfollowUser.stringValue withCompletion:^(DribbbleResponse *response) { 75 | NSLog(@"%@",response); 76 | }]; 77 | } 78 | 79 | - (IBAction) listAnimatedRecent:(id)sender { 80 | [self.d listShotsWithParameters:@{@"list":@"animated",@"sort":@"recent"} completion:^(DribbbleResponse *response) { 81 | NSLog(@"%@",response); 82 | }]; 83 | } 84 | 85 | @end 86 | -------------------------------------------------------------------------------- /Releases/2.0.9/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/Base.lproj/MainMenu.nib 8 | 9 | hash 10 | 11 | +297FXwBd/pSb3zUk/kSzwY8FTs= 12 | 13 | optional 14 | 15 | 16 | 17 | files2 18 | 19 | Resources/Base.lproj/MainMenu.nib 20 | 21 | hash 22 | 23 | +297FXwBd/pSb3zUk/kSzwY8FTs= 24 | 25 | hash2 26 | 27 | F+2XqAraT6GAHLBll3q4CZy67x/Tr3m7xGOMo5Xmio0= 28 | 29 | optional 30 | 31 | 32 | 33 | rules 34 | 35 | ^Resources/ 36 | 37 | ^Resources/.*\.lproj/ 38 | 39 | optional 40 | 41 | weight 42 | 1000 43 | 44 | ^Resources/.*\.lproj/locversion.plist$ 45 | 46 | omit 47 | 48 | weight 49 | 1100 50 | 51 | ^version.plist$ 52 | 53 | 54 | rules2 55 | 56 | .*\.dSYM($|/) 57 | 58 | weight 59 | 11 60 | 61 | ^(.*/)?\.DS_Store$ 62 | 63 | omit 64 | 65 | weight 66 | 2000 67 | 68 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 69 | 70 | nested 71 | 72 | weight 73 | 10 74 | 75 | ^.* 76 | 77 | ^Info\.plist$ 78 | 79 | omit 80 | 81 | weight 82 | 20 83 | 84 | ^PkgInfo$ 85 | 86 | omit 87 | 88 | weight 89 | 20 90 | 91 | ^Resources/ 92 | 93 | weight 94 | 20 95 | 96 | ^Resources/.*\.lproj/ 97 | 98 | optional 99 | 100 | weight 101 | 1000 102 | 103 | ^Resources/.*\.lproj/locversion.plist$ 104 | 105 | omit 106 | 107 | weight 108 | 1100 109 | 110 | ^[^/]+$ 111 | 112 | nested 113 | 114 | weight 115 | 10 116 | 117 | ^embedded\.provisionprofile$ 118 | 119 | weight 120 | 20 121 | 122 | ^version\.plist$ 123 | 124 | weight 125 | 20 126 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /Releases/2.1.10/HotShotsScreenSaver.saver/Contents/Resources/AuthDribbbleScreensaver.app/Contents/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/Base.lproj/MainMenu.nib 8 | 9 | hash 10 | 11 | +297FXwBd/pSb3zUk/kSzwY8FTs= 12 | 13 | optional 14 | 15 | 16 | 17 | files2 18 | 19 | Resources/Base.lproj/MainMenu.nib 20 | 21 | hash 22 | 23 | +297FXwBd/pSb3zUk/kSzwY8FTs= 24 | 25 | hash2 26 | 27 | F+2XqAraT6GAHLBll3q4CZy67x/Tr3m7xGOMo5Xmio0= 28 | 29 | optional 30 | 31 | 32 | 33 | rules 34 | 35 | ^Resources/ 36 | 37 | ^Resources/.*\.lproj/ 38 | 39 | optional 40 | 41 | weight 42 | 1000 43 | 44 | ^Resources/.*\.lproj/locversion.plist$ 45 | 46 | omit 47 | 48 | weight 49 | 1100 50 | 51 | ^version.plist$ 52 | 53 | 54 | rules2 55 | 56 | .*\.dSYM($|/) 57 | 58 | weight 59 | 11 60 | 61 | ^(.*/)?\.DS_Store$ 62 | 63 | omit 64 | 65 | weight 66 | 2000 67 | 68 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 69 | 70 | nested 71 | 72 | weight 73 | 10 74 | 75 | ^.* 76 | 77 | ^Info\.plist$ 78 | 79 | omit 80 | 81 | weight 82 | 20 83 | 84 | ^PkgInfo$ 85 | 86 | omit 87 | 88 | weight 89 | 20 90 | 91 | ^Resources/ 92 | 93 | weight 94 | 20 95 | 96 | ^Resources/.*\.lproj/ 97 | 98 | optional 99 | 100 | weight 101 | 1000 102 | 103 | ^Resources/.*\.lproj/locversion.plist$ 104 | 105 | omit 106 | 107 | weight 108 | 1100 109 | 110 | ^[^/]+$ 111 | 112 | nested 113 | 114 | weight 115 | 10 116 | 117 | ^embedded\.provisionprofile$ 118 | 119 | weight 120 | 20 121 | 122 | ^version\.plist$ 123 | 124 | weight 125 | 20 126 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Configs/release.xcconfig: -------------------------------------------------------------------------------- 1 | // release.xcconfig 2 | // 3 | // The strategy for build Config settings is to put all the general settings in 4 | // this file. Then the other .xcconfig files can override settings as necessary. 5 | // 6 | // The only settings that should be done in the Xcode UI (at the Target level) are: 7 | // * Info.plist 8 | // * Product Name 9 | // There shouldn't be anything set at the Project level in the Xcode UI. 10 | // 11 | // 12 | // Release: 13 | // * This makes a full build, and is optimized for release. 14 | // 15 | // Debug: 16 | // * This is a full build, that should run on all machines, but has all debug info in it. 17 | // 18 | // Development: 19 | // * This should build faster, and only has to work on the local machine it was built on. 20 | // 21 | // 22 | // NOTE: 23 | // If we need "merging" of values, try this: 24 | // http://stackoverflow.com/questions/1393987/how-to-append-values-in-xcconfig-variables/5289384#5289384 25 | // 26 | // 27 | 28 | // Architectures 29 | ARCHS = $(ARCHS_STANDARD_32_64_BIT) 30 | SDKROOT = macosx // latest Mac OS 31 | ONLY_ACTIVE_ARCH = NO 32 | 33 | 34 | // Build Options 35 | DEBUG_INFORMATION_FORMAT = dwarf-with-dsym 36 | 37 | 38 | // Compiler Version 39 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0 40 | 41 | 42 | // Code Generation 43 | GCC_DYNAMIC_NO_PIC = YES 44 | GCC_ENABLE_FIX_AND_CONTINUE = NO 45 | GCC_GENERATE_DEBUGGING_SYMBOLS = NO 46 | GCC_OPTIMIZATION_LEVEL = s 47 | GCC_SYMBOLS_PRIVATE_EXTERN = YES // "Symbols Hidden by Default" in the GUI 48 | LLVM_LTO = NO 49 | 50 | 51 | // Deployment 52 | COPY_PHASE_STRIP = YES 53 | MACOSX_DEPLOYMENT_TARGET = 10.5 54 | STRIP_INSTALLED_PRODUCT = YES 55 | 56 | 57 | // Language 58 | GCC_C_LANGUAGE_STANDARD = gnu99 59 | GCC_PRECOMPILE_PREFIX_HEADER = YES 60 | OTHER_CPLUSPLUSFLAGS = $(OTHER_CFLAGS) 61 | 62 | 63 | // Preprocessing 64 | GCC_PREPROCESSOR_DEFINITIONS = NS_BLOCK_ASSERTIONS 65 | 66 | 67 | // Linking 68 | OTHER_LDFLAGS = -ObjC 69 | DEAD_CODE_STRIPPING = YES 70 | STRIP_STYLE = all 71 | 72 | 73 | // Search Paths 74 | ALWAYS_SEARCH_USER_PATHS = NO 75 | 76 | 77 | // Warnings 78 | GCC_TREAT_WARNINGS_AS_ERRORS = YES 79 | // We have to add -Wno-unused-parameter here, because this flag gets added 80 | // after the specific GCC_WARN_* warnings below, so the -Wall overrides 81 | // any GCC_WARN_UNUSED_PARAMETER value. 82 | WARNING_CFLAGS = -Wall -Wextra -Wno-unused-parameter 83 | 84 | // Some advice from: http://boredzo.org/blog/archives/2009-11-07/warnings 85 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES 86 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES 87 | GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES 88 | GCC_WARN_ABOUT_MISSING_NEWLINE = YES 89 | GCC_WARN_ABOUT_RETURN_TYPE = YES 90 | GCC_WARN_CHECK_SWITCH_STATEMENTS = YES 91 | GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES 92 | GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES 93 | GCC_WARN_MISSING_PARENTHESES = YES 94 | GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES 95 | GCC_WARN_SHADOW = YES 96 | GCC_WARN_SIGN_COMPARE = YES 97 | GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES 98 | GCC_WARN_UNDECLARED_SELECTOR = YES 99 | GCC_WARN_UNUSED_FUNCTION = YES 100 | GCC_WARN_UNUSED_LABEL = YES 101 | GCC_WARN_UNUSED_PARAMETER = NO 102 | GCC_WARN_UNUSED_VALUE = YES 103 | GCC_WARN_UNUSED_VARIABLE = YES 104 | 105 | 106 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWSaverPrefs.m: -------------------------------------------------------------------------------- 1 | 2 | #import "GWSaverPrefs.h" 3 | #import "Dribbble.h" 4 | 5 | @interface GWSaverPrefs () 6 | @property Dribbble * auth; 7 | @property NSTimer * authCheckTimer; 8 | @end 9 | 10 | @implementation GWSaverPrefs 11 | 12 | + (ScreenSaverDefaults *) defaults { 13 | return [ScreenSaverDefaults defaultsForModuleWithName:@"com.gngrwzrd.HotShotsScreenSaver"]; 14 | } 15 | 16 | - (void) awakeFromNib { 17 | ScreenSaverDefaults * defaults = [GWSaverPrefs defaults]; 18 | NSMutableDictionary * registered = [NSMutableDictionary dictionary]; 19 | [registered setObject:[NSNumber numberWithBool:0] forKey:@"animateGifs"]; 20 | [registered setObject:[NSNumber numberWithBool:true] forKey:@"IncludeRecent"]; 21 | [registered setObject:[NSNumber numberWithBool:true] forKey:@"IncludePopular"]; 22 | [registered setObject:[NSNumber numberWithBool:true] forKey:@"IncludeFavorites"]; 23 | [defaults registerDefaults:registered]; 24 | self.gifs.state = ([[defaults objectForKey:@"animateGifs"] boolValue]) ? NSOnState : NSOffState; 25 | NSString * stringVersion = [[self.resourcesBundle infoDictionary] objectForKey:@"CFBundleShortVersionString"]; 26 | NSString * bundleVersion = [[self.resourcesBundle infoDictionary] objectForKey:@"CFBundleVersion"]; 27 | self.version.stringValue = [NSString stringWithFormat:@"Version: %@.%@",stringVersion,bundleVersion]; 28 | 29 | self.check.hidden = true; 30 | self.authButton.hidden = false; 31 | 32 | NSString * tokenPath = [@"~/Library/Application Support/HotShotsScreenSaver/accesstoken.txt" stringByExpandingTildeInPath]; 33 | if([[NSFileManager defaultManager] fileExistsAtPath:tokenPath]) { 34 | NSData * data = [NSData dataWithContentsOfFile:tokenPath]; 35 | NSString * token = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 36 | Dribbble * checkAuth = [[Dribbble alloc] init]; 37 | checkAuth.accessToken = token; 38 | [checkAuth getAuthedUser:^(DribbbleResponse *response) { 39 | if(!response.error && response.data) { 40 | self.check.hidden = false; 41 | self.authButton.hidden = true; 42 | } 43 | }]; 44 | } 45 | } 46 | 47 | - (IBAction) ok:(id) sender { 48 | [[NSApplication sharedApplication] endSheet:self.window]; 49 | } 50 | 51 | - (IBAction) animateGifs:(id)sender { 52 | ScreenSaverDefaults * defaults = [GWSaverPrefs defaults]; 53 | BOOL on = self.gifs.state == NSOnState; 54 | [defaults setObject:[NSNumber numberWithBool:on] forKey:@"animateGifs"]; 55 | [defaults synchronize]; 56 | } 57 | 58 | - (IBAction) checkForUpdates:(id)sender { 59 | [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://www.gngrwzrd.com/hot-shots-screen-saver/"]]; 60 | } 61 | 62 | - (IBAction) authorizeDribbble:(id)sender { 63 | NSString * path = [[NSBundle bundleForClass:[self class]] pathForResource:@"AuthDribbbleScreensaver" ofType:@"app"]; 64 | [[NSWorkspace sharedWorkspace] openFile:path]; 65 | 66 | self.authCheckTimer = [NSTimer scheduledTimerWithTimeInterval:.5 target:self selector:@selector(onCheckAuth) userInfo:nil repeats:true]; 67 | } 68 | 69 | - (void) onCheckAuth { 70 | NSString * tokenPath = [@"~/Library/Application Support/HotShotsScreenSaver/accesstoken.txt" stringByExpandingTildeInPath]; 71 | if([[NSFileManager defaultManager] fileExistsAtPath:tokenPath]) { 72 | [self.authCheckTimer invalidate]; 73 | self.check.hidden = false; 74 | self.authButton.hidden = true; 75 | } 76 | } 77 | 78 | @end 79 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc/Dribbble.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | //forwards 5 | @class Dribbble; 6 | @class DribbbleResponse; 7 | @class DribbbleShotsCollection; 8 | 9 | //error domain 10 | extern NSString * const DribbbleErrorDomain; 11 | 12 | //error coes 13 | extern NSInteger const DribbbleErrorCodeBadCredentials; 14 | 15 | //scopes 16 | extern NSString * const DribbbleScopePublic; 17 | extern NSString * const DribbbleScopeWrite; 18 | extern NSString * const DribbbleScopeComment; 19 | extern NSString * const DribbbleScopeUpload; 20 | 21 | //completions 22 | typedef void (^DribbbleCompletionBlock)(DribbbleResponse * response); 23 | typedef void (^DribbbleCollectionCompletionBlock)(Dribbble * dribbble, DribbbleResponse * response); 24 | 25 | //main Dribbble class 26 | @interface Dribbble : NSObject 27 | 28 | //default configured session. 29 | @property NSURLSession * defaultSession; 30 | 31 | //auth properties 32 | @property NSString * clientId; 33 | @property NSString * clientSecret; 34 | @property NSString * accessToken; 35 | 36 | //authorize 37 | - (void) authorizeWithScopes:(NSArray *) scopes completion:(DribbbleCompletionBlock) completion; 38 | - (void) handleCustomSchemeCallback:(NSString *) url; 39 | 40 | //shots 41 | - (void) listShotsWithParameters:(NSDictionary *) params completion:(DribbbleCompletionBlock) completion; 42 | - (void) likeShot:(NSString *) shotId withCompletion:(DribbbleCompletionBlock) completion; 43 | - (void) unlikeShot:(NSString *) shotId withCompletion:(DribbbleCompletionBlock) completion; 44 | 45 | //user 46 | - (void) getUser:(NSString *) user completion:(DribbbleCompletionBlock) completion; 47 | - (void) getAuthedUser:(DribbbleCompletionBlock) completion; 48 | - (void) listShotsLikedParameters:(NSDictionary *) params withCompletion:(DribbbleCompletionBlock) completion; 49 | - (void) listShotsOfPlayersFollowedParameters:(NSDictionary *) params withCompletion:(DribbbleCompletionBlock) completion; 50 | - (void) listShotsOfUser:(NSString *) user parameters:(NSDictionary *) params withCompletion:(DribbbleCompletionBlock) completion; 51 | - (void) followUser:(NSString *) user withCompletion:(DribbbleCompletionBlock) completion; 52 | - (void) unfollowUser:(NSString *) user withCompletion:(DribbbleCompletionBlock) completion; 53 | - (void) getFollowedUsersWithParameters:(NSDictionary *) params withCompletion:(DribbbleCompletionBlock) completion; 54 | - (void) getFollowersForAuthedUserWithParameters:(NSDictionary *) params withCompletion:(DribbbleCompletionBlock) completion; 55 | 56 | @end 57 | 58 | //response object for all asynchronous dribbble methods. 59 | @interface DribbbleResponse : NSObject 60 | @property id data; 61 | @property NSError * error; 62 | @end 63 | 64 | //custom collection object to gather shots however needed. 65 | //subclass this and use a Dribbble instance to do whatever is needed 66 | //for the overall collection of shots. 67 | @interface DribbbleShotsCollection : NSObject 68 | @property Dribbble * dribbble; 69 | @property NSMutableArray * content; 70 | @property NSDictionary * parameters; 71 | @property NSUInteger page; 72 | - (id) initWithDribbble:(Dribbble *) dribbble parameters:(NSDictionary *) parameters; 73 | - (void) loadContentWithCompletion:(DribbbleCollectionCompletionBlock) completion; 74 | - (void) addContent:(NSArray *) content; 75 | - (void) incrementPage; 76 | - (void) reset; 77 | - (NSDictionary *) APICallParameters; 78 | @end 79 | -------------------------------------------------------------------------------- /DribbbleSaver/ScreenSaverEngine/ScreenSaverEngine.1: -------------------------------------------------------------------------------- 1 | .\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples. 2 | .\"See Also: 3 | .\"man mdoc.samples for a complete listing of options 4 | .\"man mdoc for the short list of editing options 5 | .\"/usr/share/misc/mdoc.template 6 | .Dd 11/21/13 \" DATE 7 | .Dt ScreenSaverEngine 1 \" Program name and manual section number 8 | .Os Darwin 9 | .Sh NAME \" Section Header - required - don't modify 10 | .Nm ScreenSaverEngine, 11 | .\" The following lines are read in generating the apropos(man -k) database. Use only key 12 | .\" words here as the database is built based on the words here and in the .ND line. 13 | .Nm Other_name_for_same_program(), 14 | .Nm Yet another name for the same program. 15 | .\" Use .Nm macro to designate other names for the documented program. 16 | .Nd This line parsed for whatis database. 17 | .Sh SYNOPSIS \" Section Header - required - don't modify 18 | .Nm 19 | .Op Fl abcd \" [-abcd] 20 | .Op Fl a Ar path \" [-a path] 21 | .Op Ar file \" [file] 22 | .Op Ar \" [file ...] 23 | .Ar arg0 \" Underlined argument - use .Ar anywhere to underline 24 | arg2 ... \" Arguments 25 | .Sh DESCRIPTION \" Section Header - required - don't modify 26 | Use the .Nm macro to refer to your program throughout the man page like such: 27 | .Nm 28 | Underlining is accomplished with the .Ar macro like this: 29 | .Ar underlined text . 30 | .Pp \" Inserts a space 31 | A list of items with descriptions: 32 | .Bl -tag -width -indent \" Begins a tagged list 33 | .It item a \" Each item preceded by .It macro 34 | Description of item a 35 | .It item b 36 | Description of item b 37 | .El \" Ends the list 38 | .Pp 39 | A list of flags and their descriptions: 40 | .Bl -tag -width -indent \" Differs from above in tag removed 41 | .It Fl a \"-a flag as a list item 42 | Description of -a flag 43 | .It Fl b 44 | Description of -b flag 45 | .El \" Ends the list 46 | .Pp 47 | .\" .Sh ENVIRONMENT \" May not be needed 48 | .\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1 49 | .\" .It Ev ENV_VAR_1 50 | .\" Description of ENV_VAR_1 51 | .\" .It Ev ENV_VAR_2 52 | .\" Description of ENV_VAR_2 53 | .\" .El 54 | .Sh FILES \" File used or created by the topic of the man page 55 | .Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact 56 | .It Pa /usr/share/file_name 57 | FILE_1 description 58 | .It Pa /Users/joeuser/Library/really_long_file_name 59 | FILE_2 description 60 | .El \" Ends the list 61 | .\" .Sh DIAGNOSTICS \" May not be needed 62 | .\" .Bl -diag 63 | .\" .It Diagnostic Tag 64 | .\" Diagnostic informtion here. 65 | .\" .It Diagnostic Tag 66 | .\" Diagnostic informtion here. 67 | .\" .El 68 | .Sh SEE ALSO 69 | .\" List links in ascending order by section, alphabetically within a section. 70 | .\" Please do not reference files that do not exist without filing a bug report 71 | .Xr a 1 , 72 | .Xr b 1 , 73 | .Xr c 1 , 74 | .Xr a 2 , 75 | .Xr b 2 , 76 | .Xr a 3 , 77 | .Xr b 3 78 | .\" .Sh BUGS \" Document known, unremedied bugs 79 | .\" .Sh HISTORY \" Document history if command behaves in a unique manner -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/README.mdown: -------------------------------------------------------------------------------- 1 | # YRKSpinningProgressIndicator and SPIDemo.app 2 | 3 | by Kelan Champagne (http://yeahrightkeller.com) 4 | 5 | Please feel free to send me questions or comments. 6 | 7 | 8 | ## Overview 9 | 10 | YRKSpinningProgressIndicator is a clone of the "Spinning style" 11 | NSProgressIndicator that can be set to an arbitrary size and color. The 12 | background color can also be set, or it can be transparent. You can even 13 | change the color in real-time while it's animating. SPIDemo is an app to demo 14 | its use. 15 | 16 | 17 | ## Version History 18 | 19 | * v1.0 2008-07-08 Initial Release. 20 | * v1.1 2009-02-14 Fixes from Eric Roccasecca. 21 | * v1.2 2009-12-21 Added determinate mode and threaded animation, mostly via 22 | email from Rowan Beentje (from SequelPro). 23 | * v1.3 2010-09-06 Pulled fixes, name improvements from mikeabdulla and 24 | uncomplex. 25 | NOTE: This version is not backwards-compatible with 26 | previous versions due to the name changes. 27 | 28 | 29 | ## Features 30 | 31 | * Can be set to arbitrary size and color. 32 | * Can even be changed while animating. 33 | * Background color can be set arbitrarily or be transparent. 34 | * Has determinate mode that is a pie-chart of the progress. 35 | * Mostly compatible with OS X 10.4 (Tiger). I think there might be some issues 36 | with the run modes with the NSTimer-based animation, but I don't have access 37 | to a Tiger machine right now, so I can't check. 38 | 39 | 40 | ## Code Architecture 41 | 42 | * Implemented as a subclass of NSView. 43 | * Animation is done with an NSTimer, or on a separate thread (when 44 | setUsesThreadedAnimation:YES). You can even swap between the two while the 45 | animation is running. 46 | 47 | 48 | ## Code Conventions 49 | 50 | * Instance variables are prefixed with an underscore (i.e. "_"). 51 | 52 | 53 | ## Contributing 54 | 55 | Please feel free to fork this project, or email any patches to me at 56 | kelan@yeahrightkeller.com. 57 | 58 | 59 | ## License (BSD) 60 | 61 | Copyright (c) 2009, Kelan Champagne (http://yeahrightkeller.com) 62 | 63 | All rights reserved. 64 | 65 | Redistribution and use in source and binary forms, with or without 66 | modification, are permitted provided that the following conditions are met: 67 | 68 | * Redistributions of source code must retain the above copyright 69 | notice, this list of conditions and the following disclaimer. 70 | * Redistributions in binary form must reproduce the above copyright 71 | notice, this list of conditions and the following disclaimer in the 72 | documentation and/or other materials provided with the distribution. 73 | * Neither the name of the Kelan Champagne nor the 74 | names of its contributors may be used to endorse or promote products 75 | derived from this software without specific prior written permission. 76 | 77 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 78 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 79 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 80 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 81 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 82 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 83 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 84 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 85 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 86 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 87 | POSSIBILITY OF SUCH DAMAGE. 88 | 89 | Also, I'd appreciate it if you would let me know if you find this code useful. 90 | 91 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcschemes/AuthDribbbleScreensaver.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/Code/SPIDAppController.m: -------------------------------------------------------------------------------- 1 | // 2 | // SPIDAppController.m 3 | // 4 | // Copyright 2009 Kelan Champagne. All rights reserved. 5 | // 6 | 7 | #import "SPIDAppController.h" 8 | 9 | #import "YRKSpinningProgressIndicator.h" 10 | 11 | @interface SPIDAppController (PrivateMethods) 12 | 13 | - (void)runDeterminateDemoInBackgroundThread; 14 | 15 | @end 16 | 17 | 18 | @implementation SPIDAppController 19 | 20 | -(id)init 21 | { 22 | self = [super init]; 23 | if (self != nil) { 24 | _nspiIsRunning = NO; 25 | _yrkpiIsRunning = NO; 26 | } 27 | return self; 28 | } 29 | 30 | - (void)applicationDidFinishLaunching:(NSNotification *)notification 31 | { 32 | [_foregroundColorWell setColor:[NSColor colorWithDeviceRed:0.2 green:0.2 blue:0.2 alpha:1.0]]; 33 | [_backgroundColorWell setColor:[NSColor whiteColor]]; 34 | [self changeForegroundColor:_foregroundColorWell]; 35 | [self changeBackgroundColor:_backgroundColorWell]; 36 | 37 | [_turboFan setDrawsBackground:NO]; 38 | 39 | [self takeThreadedFrom:_threadedAnimationButton]; 40 | } 41 | 42 | - (IBAction)toggleProgressIndicator:(id)sender 43 | { 44 | if(_nspiIsRunning) { 45 | [_progressIndicator stopAnimation:self]; 46 | [_nspiToggleButton setTitle:@"Start"]; 47 | _nspiIsRunning = NO; 48 | } 49 | else { 50 | [_progressIndicator startAnimation:self]; 51 | [_nspiToggleButton setTitle:@"Stop"]; 52 | _nspiIsRunning = YES; 53 | } 54 | } 55 | 56 | - (IBAction)toggleTurboFan:(id)sender 57 | { 58 | if(_yrkpiIsRunning) { 59 | [_turboFan stopAnimation:self]; 60 | [_yrkpiToggleButton setTitle:@"Start"]; 61 | _yrkpiIsRunning = NO; 62 | } 63 | else { 64 | [_turboFan startAnimation:self]; 65 | [_yrkpiToggleButton setTitle:@"Stop"]; 66 | _yrkpiIsRunning = YES; 67 | } 68 | } 69 | 70 | - (IBAction)startDeterminateDemo:(id)sender 71 | { 72 | [_determinateDemoButton setEnabled:NO]; 73 | 74 | [_turboFan setIndeterminate:NO]; 75 | [_turboFan setDoubleValue:0]; 76 | 77 | [NSThread detachNewThreadSelector:@selector(runDeterminateDemoInBackgroundThread) toTarget:self withObject:nil]; 78 | } 79 | 80 | - (void)runDeterminateDemoInBackgroundThread 81 | { 82 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 83 | 84 | double i; 85 | for (i = 0; i <= 100; i += 0.5) { 86 | usleep(20000); 87 | [_turboFan setDoubleValue:i]; 88 | } 89 | [pool release]; 90 | 91 | [self performSelectorOnMainThread:@selector(finishDeterminateDemo) 92 | withObject:nil 93 | waitUntilDone:NO]; 94 | } 95 | 96 | - (void)finishDeterminateDemo 97 | { 98 | [_turboFan setIndeterminate:YES]; 99 | if(_yrkpiIsRunning) { 100 | [_turboFan startAnimation:self]; 101 | } 102 | 103 | [_determinateDemoButton setEnabled:YES]; 104 | } 105 | 106 | - (IBAction)changeForegroundColor:(id)sender 107 | { 108 | [_turboFan setColor:[sender color]]; 109 | } 110 | 111 | 112 | - (IBAction)changeBackgroundColor:(id)sender 113 | { 114 | [_turboFan setBackgroundColor:[sender color]]; 115 | } 116 | 117 | - (IBAction)toggleDrawBackground:(id)sender 118 | { 119 | if([sender state] == NSOnState) 120 | [_turboFan setDrawsBackground:YES]; 121 | else 122 | [_turboFan setDrawsBackground:NO]; 123 | } 124 | 125 | - (IBAction)toggleDisplayWhenStopped:(id)sender 126 | { 127 | [_turboFan setDisplayedWhenStopped:([sender state] == NSOnState)]; 128 | } 129 | 130 | - (IBAction)takeThreadedFrom:(id)sender 131 | { 132 | BOOL useThreaded = (BOOL)[sender intValue]; 133 | [_turboFan setUsesThreadedAnimation:useThreaded]; 134 | [_progressIndicator setUsesThreadedAnimation:useThreaded]; 135 | } 136 | 137 | @end 138 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcschemes/DribbbleSaver.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 49 | 50 | 51 | 52 | 61 | 63 | 69 | 70 | 71 | 72 | 73 | 74 | 80 | 82 | 88 | 89 | 90 | 91 | 93 | 94 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /libs/reachability/Reachability.h: -------------------------------------------------------------------------------- 1 | /* 2 | File: Reachability.h 3 | Abstract: Basic demonstration of how to use the SystemConfiguration Reachablity APIs. 4 | Version: 3.0 5 | 6 | Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple 7 | Inc. ("Apple") in consideration of your agreement to the following 8 | terms, and your use, installation, modification or redistribution of 9 | this Apple software constitutes acceptance of these terms. If you do 10 | not agree with these terms, please do not use, install, modify or 11 | redistribute this Apple software. 12 | 13 | In consideration of your agreement to abide by the following terms, and 14 | subject to these terms, Apple grants you a personal, non-exclusive 15 | license, under Apple's copyrights in this original Apple software (the 16 | "Apple Software"), to use, reproduce, modify and redistribute the Apple 17 | Software, with or without modifications, in source and/or binary forms; 18 | provided that if you redistribute the Apple Software in its entirety and 19 | without modifications, you must retain this notice and the following 20 | text and disclaimers in all such redistributions of the Apple Software. 21 | Neither the name, trademarks, service marks or logos of Apple Inc. may 22 | be used to endorse or promote products derived from the Apple Software 23 | without specific prior written permission from Apple. Except as 24 | expressly stated in this notice, no other rights or licenses, express or 25 | implied, are granted by Apple herein, including but not limited to any 26 | patent rights that may be infringed by your derivative works or by other 27 | works in which the Apple Software may be incorporated. 28 | 29 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE 30 | MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION 31 | THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS 32 | FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 33 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 34 | 35 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 36 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 37 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 38 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 39 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 40 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 41 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 42 | POSSIBILITY OF SUCH DAMAGE. 43 | 44 | Copyright (C) 2013 Apple Inc. All Rights Reserved. 45 | 46 | */ 47 | 48 | #import 49 | #import 50 | #import 51 | 52 | 53 | typedef enum : NSInteger { 54 | NotReachable = 0, 55 | ReachableViaWiFi, 56 | ReachableViaWWAN 57 | } NetworkStatus; 58 | 59 | 60 | extern NSString *kReachabilityChangedNotification; 61 | 62 | 63 | @interface Reachability : NSObject 64 | 65 | /*! 66 | * Use to check the reachability of a given host name. 67 | */ 68 | + (instancetype)reachabilityWithHostName:(NSString *)hostName; 69 | 70 | /*! 71 | * Use to check the reachability of a given IP address. 72 | */ 73 | + (instancetype)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress; 74 | 75 | /*! 76 | * Checks whether the default route is available. Should be used by applications that do not connect to a particular host. 77 | */ 78 | + (instancetype)reachabilityForInternetConnection; 79 | 80 | /*! 81 | * Checks whether a local WiFi connection is available. 82 | */ 83 | + (instancetype)reachabilityForLocalWiFi; 84 | 85 | /*! 86 | * Start listening for reachability notifications on the current run loop. 87 | */ 88 | - (BOOL)startNotifier; 89 | - (void)stopNotifier; 90 | 91 | - (NetworkStatus)currentReachabilityStatus; 92 | 93 | /*! 94 | * WWAN may be available, but not active until a connection has been established. WiFi may require a connection for VPN on Demand. 95 | */ 96 | - (BOOL)connectionRequired; 97 | 98 | @end 99 | 100 | 101 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcschemes/ScreenSaverEngine.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 58 | 59 | 60 | 66 | 67 | 68 | 69 | 72 | 73 | 74 | 75 | 76 | 77 | 83 | 85 | 91 | 92 | 93 | 94 | 96 | 97 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWDribbbleShot.m: -------------------------------------------------------------------------------- 1 | 2 | #import "GWDribbbleShot.h" 3 | #import "GWDribbbleSaver.h" 4 | #import "NSURLRequest+Additions.h" 5 | 6 | @interface GWDribbbleShot () 7 | @end 8 | 9 | @implementation GWDribbbleShot 10 | 11 | - (void) awakeFromNib { 12 | self.imageView.imageScaling = NSScaleToFit; 13 | ScreenSaverDefaults * defaults = [ScreenSaverDefaults defaultsForModuleWithName:@"com.gngrwzrd.HotShotsScreenSaver"]; 14 | BOOL animateGifs = [[defaults objectForKey:@"animateGifs"] boolValue]; 15 | if(animateGifs) { 16 | self.imageView.animates = TRUE; 17 | } 18 | } 19 | 20 | - (void) setRepresentedObject:(id) representedObject { 21 | GWDribbbleSaver * saver = [GWDribbbleSaver instance]; 22 | NSDictionary * shot = representedObject; 23 | NSDictionary * images = shot[@"images"]; 24 | NSString * _cachedImageFile = [[representedObject objectForKey:@"cache_shot_filename"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 25 | NSString * _imgurl = [[images objectForKey:@"normal"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 26 | 27 | if(![images[@"hidpi"] isEqualTo:[NSNull null]]) { 28 | _imgurl = [[images objectForKey:@"hidpi"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 29 | } 30 | 31 | NSString * _img400url = [[representedObject objectForKey:@"image_400_url"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 32 | 33 | NSURL * imgURL = NULL; 34 | NSURL * fullCachedURL = NULL; 35 | 36 | if(_cachedImageFile) { 37 | fullCachedURL = [saver.cache.diskCacheURL URLByAppendingPathComponent:_cachedImageFile]; 38 | } 39 | 40 | if(_cachedImageFile && [[NSFileManager defaultManager] fileExistsAtPath:fullCachedURL.path]) { 41 | 42 | imgURL = [saver.cache.diskCacheURL URLByAppendingPathComponent:_cachedImageFile]; 43 | NSData * data = [NSData dataWithContentsOfFile:imgURL.path]; 44 | NSImage * image = [[NSImage alloc] initWithData:data]; 45 | [self displayImage:image]; 46 | 47 | return; 48 | 49 | } else if(_img400url) { 50 | 51 | imgURL = [NSURL URLWithString:_img400url]; 52 | 53 | } else { 54 | 55 | imgURL = [NSURL URLWithString:_imgurl]; 56 | 57 | } 58 | 59 | NSURLRequest * request = [NSURLRequest requestWithURL:imgURL cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:3000]; 60 | 61 | #if GWDribbbleSaverUseCache 62 | 63 | if([saver.cache hasDataForRequest:request]) { 64 | NSData * data = [saver.cache dataForRequest:request]; 65 | NSImage * image = [[NSImage alloc] initWithData:data]; 66 | [self displayImage:image]; 67 | return; 68 | } 69 | 70 | #endif 71 | 72 | [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 73 | 74 | if(connectionError) { 75 | NSLog(@"%@",connectionError); 76 | //[saver loadFailedWithError:connectionError]; 77 | } 78 | 79 | if(data) { 80 | //[saver shotLoadCompleted]; 81 | NSImage * image = [[NSImage alloc] initWithData:data]; 82 | 83 | #if GWDribbbleSaverUseCache 84 | if(![saver.cache hasDataForRequest:request]) { 85 | [saver.cache writeData:data forRequest:request]; 86 | } 87 | #endif 88 | 89 | [self displayImage:image]; 90 | } 91 | }]; 92 | } 93 | 94 | - (void) displayImage:(NSImage *) image { 95 | if(!self.imageView.image) { 96 | self.imageView.alphaValue = .6; 97 | self.imageView.image = image; 98 | } else { 99 | [self _displayImageOutFirst:image]; 100 | } 101 | } 102 | 103 | - (void) _displayImageOutFirst:(NSImage *) image { 104 | [NSAnimationContext beginGrouping]; 105 | [[NSAnimationContext currentContext] setDuration:1]; 106 | [[NSAnimationContext currentContext] setCompletionHandler:^{ 107 | [self _displayImageFadeIn:image]; 108 | }]; 109 | self.imageView.animator.alphaValue = 0; 110 | 111 | CGRect frame = self.imageView.frame; 112 | self.imageView.animator.frame = NSInsetRect(frame,10,10); 113 | [NSAnimationContext endGrouping]; 114 | } 115 | 116 | - (void) _displayImageFadeIn:(NSImage *) image { 117 | CGRect frame = self.imageView.frame; 118 | self.imageView.frame = NSInsetRect(frame,-10,-10); 119 | self.imageView.image = image; 120 | 121 | [NSAnimationContext beginGrouping]; 122 | [[NSAnimationContext currentContext] setDuration:1]; 123 | self.imageView.animator.alphaValue = 1; 124 | [[NSAnimationContext currentContext] setCompletionHandler:^{ 125 | [NSTimer scheduledTimerWithTimeInterval:4.25 target:self selector:@selector(_fadeOutSlightly:) userInfo:nil repeats:false]; 126 | }]; 127 | [NSAnimationContext endGrouping]; 128 | } 129 | 130 | - (void) _fadeOutSlightly:(id) sender { 131 | [NSAnimationContext beginGrouping]; 132 | [[NSAnimationContext currentContext] setDuration:1]; 133 | self.imageView.animator.alphaValue = .6; 134 | [NSAnimationContext endGrouping]; 135 | } 136 | 137 | @end 138 | -------------------------------------------------------------------------------- /libs/submodules/dribbble-api-modern-objc/dribbble-api-modern-objc.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcschemes/dribbble-api-modern-objc.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 29 | 35 | 36 | 37 | 38 | 39 | 44 | 45 | 47 | 53 | 54 | 55 | 56 | 57 | 63 | 64 | 65 | 66 | 75 | 76 | 82 | 83 | 84 | 85 | 86 | 87 | 93 | 94 | 100 | 101 | 102 | 103 | 105 | 106 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /site/fonts/bigbottom/specimen_files/grid_12-825-55-15.css: -------------------------------------------------------------------------------- 1 | /*Notes about grid: 2 | Columns: 12 3 | Grid Width: 825px 4 | Column Width: 55px 5 | Gutter Width: 15px 6 | -------------------------------*/ 7 | 8 | 9 | 10 | .section {margin-bottom: 18px; 11 | } 12 | .section:after {content: ".";display: block;height: 0;clear: both;visibility: hidden;} 13 | .section {*zoom: 1;} 14 | 15 | .section .firstcolumn, 16 | .section .firstcol {margin-left: 0;} 17 | 18 | 19 | /* Border on left hand side of a column. */ 20 | .border { 21 | padding-left: 7px; 22 | margin-left: 7px; 23 | border-left: 1px solid #eee; 24 | } 25 | 26 | /* Border with more whitespace, spans one column. */ 27 | .colborder { 28 | padding-left: 42px; 29 | margin-left: 42px; 30 | border-left: 1px solid #eee; 31 | } 32 | 33 | 34 | 35 | /* The Grid Classes */ 36 | .grid1, .grid1_2cols, .grid1_3cols, .grid1_4cols, .grid2, .grid2_3cols, .grid2_4cols, .grid3, .grid3_2cols, .grid3_4cols, .grid4, .grid4_3cols, .grid5, .grid5_2cols, .grid5_3cols, .grid5_4cols, .grid6, .grid6_4cols, .grid7, .grid7_2cols, .grid7_3cols, .grid7_4cols, .grid8, .grid8_3cols, .grid9, .grid9_2cols, .grid9_4cols, .grid10, .grid10_3cols, .grid10_4cols, .grid11, .grid11_2cols, .grid11_3cols, .grid11_4cols, .grid12 37 | {margin-left: 15px;float: left;display: inline; overflow: hidden;} 38 | 39 | 40 | .width1, .grid1, .span-1 {width: 55px;} 41 | .width1_2cols,.grid1_2cols {width: 20px;} 42 | .width1_3cols,.grid1_3cols {width: 8px;} 43 | .width1_4cols,.grid1_4cols {width: 2px;} 44 | .input_width1 {width: 49px;} 45 | 46 | .width2, .grid2, .span-2 {width: 125px;} 47 | .width2_3cols,.grid2_3cols {width: 31px;} 48 | .width2_4cols,.grid2_4cols {width: 20px;} 49 | .input_width2 {width: 119px;} 50 | 51 | .width3, .grid3, .span-3 {width: 195px;} 52 | .width3_2cols,.grid3_2cols {width: 90px;} 53 | .width3_4cols,.grid3_4cols {width: 37px;} 54 | .input_width3 {width: 189px;} 55 | 56 | .width4, .grid4, .span-4 {width: 265px;} 57 | .width4_3cols,.grid4_3cols {width: 78px;} 58 | .input_width4 {width: 259px;} 59 | 60 | .width5, .grid5, .span-5 {width: 335px;} 61 | .width5_2cols,.grid5_2cols {width: 160px;} 62 | .width5_3cols,.grid5_3cols {width: 101px;} 63 | .width5_4cols,.grid5_4cols {width: 72px;} 64 | .input_width5 {width: 329px;} 65 | 66 | .width6, .grid6, .span-6 {width: 405px;} 67 | .width6_4cols,.grid6_4cols {width: 90px;} 68 | .input_width6 {width: 399px;} 69 | 70 | .width7, .grid7, .span-7 {width: 475px;} 71 | .width7_2cols,.grid7_2cols {width: 230px;} 72 | .width7_3cols,.grid7_3cols {width: 148px;} 73 | .width7_4cols,.grid7_4cols {width: 107px;} 74 | .input_width7 {width: 469px;} 75 | 76 | .width8, .grid8, .span-8 {width: 545px;} 77 | .width8_3cols,.grid8_3cols {width: 171px;} 78 | .input_width8 {width: 539px;} 79 | 80 | .width9, .grid9, .span-9 {width: 615px;} 81 | .width9_2cols,.grid9_2cols {width: 300px;} 82 | .width9_4cols,.grid9_4cols {width: 142px;} 83 | .input_width9 {width: 609px;} 84 | 85 | .width10, .grid10, .span-10 {width: 685px;} 86 | .width10_3cols,.grid10_3cols {width: 218px;} 87 | .width10_4cols,.grid10_4cols {width: 160px;} 88 | .input_width10 {width: 679px;} 89 | 90 | .width11, .grid11, .span-11 {width: 755px;} 91 | .width11_2cols,.grid11_2cols {width: 370px;} 92 | .width11_3cols,.grid11_3cols {width: 241px;} 93 | .width11_4cols,.grid11_4cols {width: 177px;} 94 | .input_width11 {width: 749px;} 95 | 96 | .width12, .grid12, .span-12 {width: 825px;} 97 | .input_width12 {width: 819px;} 98 | 99 | /* Subdivided grid spaces */ 100 | .emptycols_left1, .prepend-1 {padding-left: 70px;} 101 | .emptycols_right1, .append-1 {padding-right: 70px;} 102 | .emptycols_left2, .prepend-2 {padding-left: 140px;} 103 | .emptycols_right2, .append-2 {padding-right: 140px;} 104 | .emptycols_left3, .prepend-3 {padding-left: 210px;} 105 | .emptycols_right3, .append-3 {padding-right: 210px;} 106 | .emptycols_left4, .prepend-4 {padding-left: 280px;} 107 | .emptycols_right4, .append-4 {padding-right: 280px;} 108 | .emptycols_left5, .prepend-5 {padding-left: 350px;} 109 | .emptycols_right5, .append-5 {padding-right: 350px;} 110 | .emptycols_left6, .prepend-6 {padding-left: 420px;} 111 | .emptycols_right6, .append-6 {padding-right: 420px;} 112 | .emptycols_left7, .prepend-7 {padding-left: 490px;} 113 | .emptycols_right7, .append-7 {padding-right: 490px;} 114 | .emptycols_left8, .prepend-8 {padding-left: 560px;} 115 | .emptycols_right8, .append-8 {padding-right: 560px;} 116 | .emptycols_left9, .prepend-9 {padding-left: 630px;} 117 | .emptycols_right9, .append-9 {padding-right: 630px;} 118 | .emptycols_left10, .prepend-10 {padding-left: 700px;} 119 | .emptycols_right10, .append-10 {padding-right: 700px;} 120 | .emptycols_left11, .prepend-11 {padding-left: 770px;} 121 | .emptycols_right11, .append-11 {padding-right: 770px;} 122 | .pull-1 {margin-left: -70px;} 123 | .push-1 {margin-right: -70px;margin-left: 18px;float: right;} 124 | .pull-2 {margin-left: -140px;} 125 | .push-2 {margin-right: -140px;margin-left: 18px;float: right;} 126 | .pull-3 {margin-left: -210px;} 127 | .push-3 {margin-right: -210px;margin-left: 18px;float: right;} 128 | .pull-4 {margin-left: -280px;} 129 | .push-4 {margin-right: -280px;margin-left: 18px;float: right;} -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver.xcodeproj/xcuserdata/aaronsmith.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 20 | 21 | 22 | 24 | 36 | 37 | 38 | 40 | 52 | 53 | 54 | 56 | 62 | 63 | 64 | 66 | 78 | 79 | 80 | 82 | 94 | 95 | 96 | 98 | 110 | 111 | 112 | 114 | 126 | 127 | 128 | 130 | 142 | 143 | 144 | 146 | 158 | 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /libs/diskcache/GWDataDiskCache.m: -------------------------------------------------------------------------------- 1 | 2 | #import "GWDataDiskCache.h" 3 | 4 | @implementation GWDataDiskCache 5 | 6 | + (void) registerDefaults { 7 | NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 8 | NSMutableDictionary * registered = [NSMutableDictionary dictionary]; 9 | [registered setObject:[NSNumber numberWithInteger:86400] forKey:@"oldestAllowableFileTimeDelta"]; 10 | [defaults registerDefaults:registered]; 11 | } 12 | 13 | - (id) init { 14 | self = [super init]; 15 | [self setupDefaults]; 16 | return self; 17 | } 18 | 19 | - (id) initWithDiskCacheURL:(NSURL *) url; { 20 | self = [self init]; 21 | self.diskCacheURL = url; 22 | return self; 23 | } 24 | 25 | - (void) setupDefaults { 26 | [GWDataDiskCache registerDefaults]; 27 | NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 28 | self.oldestAllowableFileTimeDelta = [[defaults objectForKey:@"oldestAllowableFileTimeDelta"] integerValue]; 29 | } 30 | 31 | - (void) updateDefaults { 32 | NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; 33 | [defaults setObject:[NSNumber numberWithInteger:_oldestAllowableFileTimeDelta] forKey:@"oldestAllowableFileTimeDelta"]; 34 | [defaults synchronize]; 35 | } 36 | 37 | - (void) setOldestAllowableFileTimeDelta:(NSTimeInterval)oldestAllowableFileTimeDelta { 38 | _oldestAllowableFileTimeDelta = oldestAllowableFileTimeDelta; 39 | [self updateDefaults]; 40 | } 41 | 42 | - (void) setOldestAllowableFileTimeDeltaToDayCount:(NSInteger) dayCount; { 43 | self.oldestAllowableFileTimeDelta = 86400*dayCount; 44 | } 45 | 46 | - (CGFloat) oldestAllowableFileTimeDeltaInDays; { 47 | return _oldestAllowableFileTimeDelta / 86400; 48 | } 49 | 50 | - (void) createDiskCacheURL { 51 | NSFileManager * fileManager = [NSFileManager defaultManager]; 52 | if(![fileManager fileExistsAtPath:self.diskCacheURL.path]) { 53 | [fileManager createDirectoryAtURL:self.diskCacheURL withIntermediateDirectories:TRUE attributes:nil error:nil]; 54 | } 55 | } 56 | 57 | - (NSString *) localFileNameForURL:(NSURL *) url { 58 | if(!url) { 59 | return NULL; 60 | } 61 | NSString * path1 = [url absoluteString]; 62 | NSString * path = (__bridge NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(CFAllocatorGetDefault(),(CFStringRef)path1,NULL,kCFStringEncodingUTF8); 63 | //path = [path stringByRemovingPercentEncoding]; 64 | path = [path stringByReplacingOccurrencesOfString:@"http://" withString:@""]; 65 | path = [path stringByReplacingOccurrencesOfString:@"https://" withString:@""]; 66 | path = [path stringByReplacingOccurrencesOfString:@":" withString:@"-"]; 67 | path = [path stringByReplacingOccurrencesOfString:@"?" withString:@"-"]; 68 | path = [path stringByReplacingOccurrencesOfString:@"/" withString:@"-"]; 69 | path = [path stringByReplacingOccurrencesOfString:@" " withString:@"_"]; 70 | return path; 71 | } 72 | 73 | - (NSURL *) localCachedURLForURL:(NSURL *) url; { 74 | if(!url) { 75 | return NULL; 76 | } 77 | NSString * fileName = [self localFileNameForURL:url]; 78 | NSURL * localURL = [self.diskCacheURL URLByAppendingPathComponent:fileName]; 79 | return localURL; 80 | } 81 | 82 | - (NSURL *) localCachedURLForRequest:(NSURLRequest *)request; { 83 | return [self localCachedURLForURL:request.URL]; 84 | } 85 | 86 | - (NSURLRequest *) localRequestForRequest:(NSURLRequest *) request; { 87 | return [NSURLRequest requestWithURL:[self localCachedURLForRequest:request]]; 88 | } 89 | 90 | - (NSData *) dataForRequest:(NSURLRequest *) request { 91 | if(!request || !request.URL) { 92 | return NULL; 93 | } 94 | NSString * fileName = [self localFileNameForURL:[request URL]]; 95 | NSURL * localURL = [self.diskCacheURL URLByAppendingPathComponent:fileName]; 96 | NSFileManager * fileManager = [NSFileManager defaultManager]; 97 | if([fileManager fileExistsAtPath:localURL.path]) { 98 | return [NSData dataWithContentsOfURL:localURL]; 99 | } else { 100 | if(self.logFilesNotCached) { 101 | NSLog(@"file not cached: %@",localURL); 102 | } 103 | } 104 | return nil; 105 | } 106 | 107 | - (NSData *) dataForURL:(NSURL *)url { 108 | if(!url) { 109 | return NULL; 110 | } 111 | NSString * fileName = [self localFileNameForURL:url]; 112 | NSURL * localURL = [self.diskCacheURL URLByAppendingPathComponent:fileName]; 113 | NSFileManager * fileManager = [NSFileManager defaultManager]; 114 | if([fileManager fileExistsAtPath:localURL.path]) { 115 | return [NSData dataWithContentsOfURL:localURL]; 116 | } else { 117 | if(self.logFilesNotCached) { 118 | NSLog(@"file not cached: %@",localURL); 119 | } 120 | } 121 | return nil; 122 | } 123 | 124 | - (BOOL) writeData:(NSData *)data forRequest:(NSURLRequest *)request { 125 | [self createDiskCacheURL]; 126 | NSString * fileName = [self localFileNameForURL:[request URL]]; 127 | NSURL * localURL = [self.diskCacheURL URLByAppendingPathComponent:fileName]; 128 | return [data writeToURL:localURL atomically:TRUE]; 129 | } 130 | 131 | - (BOOL) writeData:(NSData *) data forResponse:(NSURLResponse *) response { 132 | [self createDiskCacheURL]; 133 | NSString * fileName = [self localFileNameForURL:[response URL]]; 134 | NSURL * localURL = [self.diskCacheURL URLByAppendingPathComponent:fileName]; 135 | return [data writeToURL:localURL atomically:TRUE]; 136 | } 137 | 138 | - (BOOL) hasDataForRequest:(NSURLRequest *) request; { 139 | if(!request || !request.URL) { 140 | return FALSE; 141 | } 142 | [self createDiskCacheURL]; 143 | NSFileManager * fileManager = [NSFileManager defaultManager]; 144 | NSString * fileName = [self localFileNameForURL:[request URL]]; 145 | NSURL * localURL = [self.diskCacheURL URLByAppendingPathComponent:fileName]; 146 | return [fileManager fileExistsAtPath:localURL.path]; 147 | } 148 | 149 | - (BOOL) hasDataForURL:(NSURL *) url; { 150 | if(!url) { 151 | return FALSE; 152 | } 153 | NSFileManager * fileManager = [NSFileManager defaultManager]; 154 | NSString * fileName = [self localFileNameForURL:url]; 155 | NSURL * localURL = [self.diskCacheURL URLByAppendingPathComponent:fileName]; 156 | return [fileManager fileExistsAtPath:localURL.path]; 157 | } 158 | 159 | - (void) clearOldFiles { 160 | NSFileManager * fileManager = [NSFileManager defaultManager]; 161 | NSArray * files = [fileManager contentsOfDirectoryAtPath:self.diskCacheURL.path error:nil]; 162 | NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; 163 | NSTimeInterval cutoff = now-self.oldestAllowableFileTimeDelta; 164 | NSMutableArray * deleteThese = [NSMutableArray array]; 165 | for(NSString * file in files) { 166 | NSURL * fullPath = [NSURL URLWithString:file relativeToURL:self.diskCacheURL]; 167 | if(!fullPath) { 168 | continue; 169 | } 170 | NSDictionary * attributes = [fileManager attributesOfItemAtPath:fullPath.path error:nil]; 171 | if(!attributes) { 172 | continue; 173 | } 174 | NSTimeInterval ca = [[attributes objectForKey:NSFileCreationDate] timeIntervalSince1970]; 175 | if(ca < cutoff) { 176 | [deleteThese addObject:fullPath]; 177 | } 178 | } 179 | 180 | dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0) , ^{ 181 | NSError * __autoreleasing error = NULL; 182 | for(NSURL * fullPath in deleteThese) { 183 | [fileManager removeItemAtPath:fullPath.path error:&error]; 184 | if(self.logFilesRemoved) { 185 | if(error) { 186 | NSLog(@"%@",error); 187 | } else { 188 | NSLog(@"removeing file: %@",fullPath.path); 189 | } 190 | } 191 | } 192 | }); 193 | } 194 | 195 | - (void) empty { 196 | NSFileManager * fileManager = [NSFileManager defaultManager]; 197 | [fileManager removeItemAtURL:self.diskCacheURL error:nil]; 198 | [self createDiskCacheURL]; 199 | } 200 | 201 | @end 202 | -------------------------------------------------------------------------------- /site/fonts/bigbottom/specimen_files/specimen_stylesheet.css: -------------------------------------------------------------------------------- 1 | @import url('grid_12-825-55-15.css'); 2 | 3 | /* 4 | CSS Reset by Eric Meyer - Released under Public Domain 5 | http://meyerweb.com/eric/tools/css/reset/ 6 | */ 7 | html, body, div, span, applet, object, iframe, 8 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 9 | a, abbr, acronym, address, big, cite, code, 10 | del, dfn, em, font, img, ins, kbd, q, s, samp, 11 | small, strike, strong, sub, sup, tt, var, 12 | b, u, i, center, dl, dt, dd, ol, ul, li, 13 | fieldset, form, label, legend, table, 14 | caption, tbody, tfoot, thead, tr, th, td 15 | {margin: 0;padding: 0;border: 0;outline: 0; 16 | font-size: 100%;vertical-align: baseline; 17 | background: transparent;} 18 | body {line-height: 1;} 19 | ol, ul {list-style: none;} 20 | blockquote, q {quotes: none;} 21 | blockquote:before, blockquote:after, 22 | q:before, q:after {content: ''; content: none;} 23 | :focus {outline: 0;} 24 | ins {text-decoration: none;} 25 | del {text-decoration: line-through;} 26 | table {border-collapse: collapse;border-spacing: 0;} 27 | 28 | 29 | 30 | 31 | body { 32 | color: #000; 33 | background-color: #dcdcdc; 34 | } 35 | 36 | a { 37 | text-decoration: none; 38 | color: #1883ba; 39 | } 40 | 41 | h1{ 42 | font-size: 32px; 43 | font-weight: normal; 44 | font-style: normal; 45 | margin-bottom: 18px; 46 | } 47 | 48 | h2{ 49 | font-size: 18px; 50 | } 51 | 52 | #container { 53 | width: 865px; 54 | margin: 0px auto; 55 | } 56 | 57 | 58 | #header { 59 | padding: 20px; 60 | font-size: 36px; 61 | background-color: #000; 62 | color: #fff; 63 | } 64 | 65 | #header span { 66 | color: #666; 67 | } 68 | #main_content { 69 | background-color: #fff; 70 | padding: 60px 20px 20px; 71 | } 72 | 73 | 74 | #footer p { 75 | margin: 0; 76 | padding-top: 10px; 77 | padding-bottom: 50px; 78 | color: #333; 79 | font: 10px Arial, sans-serif; 80 | } 81 | 82 | .tabs { 83 | width: 100%; 84 | height: 31px; 85 | background-color: #444; 86 | } 87 | .tabs li { 88 | float: left; 89 | margin: 0; 90 | overflow: hidden; 91 | background-color: #444; 92 | } 93 | .tabs li a { 94 | display: block; 95 | color: #fff; 96 | text-decoration: none; 97 | font: bold 11px/11px 'Arial'; 98 | text-transform: uppercase; 99 | padding: 10px 15px; 100 | border-right: 1px solid #fff; 101 | } 102 | 103 | .tabs li a:hover { 104 | background-color: #00b3ff; 105 | 106 | } 107 | 108 | .tabs li.active a { 109 | color: #000; 110 | background-color: #fff; 111 | } 112 | 113 | 114 | 115 | div.huge { 116 | 117 | font-size: 300px; 118 | line-height: 1em; 119 | padding: 0; 120 | letter-spacing: -.02em; 121 | overflow: hidden; 122 | } 123 | div.glyph_range { 124 | font-size: 72px; 125 | line-height: 1.1em; 126 | } 127 | 128 | .size10{ font-size: 10px; } 129 | .size11{ font-size: 11px; } 130 | .size12{ font-size: 12px; } 131 | .size13{ font-size: 13px; } 132 | .size14{ font-size: 14px; } 133 | .size16{ font-size: 16px; } 134 | .size18{ font-size: 18px; } 135 | .size20{ font-size: 20px; } 136 | .size24{ font-size: 24px; } 137 | .size30{ font-size: 30px; } 138 | .size36{ font-size: 36px; } 139 | .size48{ font-size: 48px; } 140 | .size60{ font-size: 60px; } 141 | .size72{ font-size: 72px; } 142 | .size90{ font-size: 90px; } 143 | 144 | 145 | .psample_row1 { height: 120px;} 146 | .psample_row1 { height: 120px;} 147 | .psample_row2 { height: 160px;} 148 | .psample_row3 { height: 160px;} 149 | .psample_row4 { height: 160px;} 150 | 151 | .psample { 152 | overflow: hidden; 153 | position: relative; 154 | } 155 | .psample p { 156 | line-height: 1.3em; 157 | display: block; 158 | overflow: hidden; 159 | margin: 0; 160 | } 161 | 162 | .psample span { 163 | margin-right: .5em; 164 | } 165 | 166 | .white_blend { 167 | width: 100%; 168 | height: 61px; 169 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAO1JREFUeNrs3TsKgFAMRUE/eer+NxztxMYuEWQG3ECKwwUF58ycAKixOAGAyAKILAAiCyCyACILgMgCiCyAyAIgsgAiCyCyAIgsgMgCiCwAIgsgsgAiC4DIAogsACIL0CWuZ3UGgLrIhjMA1EV2OAOAJQtgyQLwjOzmDAAiCyCyAIgsQFtkd2cAEFkAkQVAZAHaIns4A4AlC2DJAiCyACILILIAiCzAV5H1dQGAJQsgsgCILIDIAvwisl58AViyAJYsACILILIAIgvAe2T9EhxAZAFEFgCRBeiL7HAGgLrIhjMAWLIAliwAt1OAAQDwygTBulLIlQAAAABJRU5ErkJggg==); 170 | position: absolute; 171 | bottom: 0; 172 | } 173 | .black_blend { 174 | width: 100%; 175 | height: 61px; 176 | background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAAA9CAYAAAAH4BojAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAPJJREFUeNrs3TEKhTAQRVGjibr/9QoxhY2N3Ywo50A28IrLwP9g6b1PAMSYTQAgsgAiC4DIAogsgMgCILIAIgsgsgCILIDIAogsACILILIAIguAyAKILIDIAiCyACILgMgCZCnjLWYAiFGvB0BQZJsZAFyyAC5ZAO6RXc0AILIAIguAyAKkRXYzA4DIAogsACILkBbZ3QwALlkAlywAIgsgsgAiC4DIArwVWf8uAHDJAogsACILILIAv4isH74AXLIALlkARBZAZAFEFoDnyPokOIDIAogsACILkBfZZgaAuMhWMwC4ZAE+p4x3mAEgxinAAJ+XBbPWGkwAAAAAAElFTkSuQmCC); 177 | position: absolute; 178 | bottom: 0; 179 | } 180 | .fullreverse { 181 | background: #000 !important; 182 | color: #fff !important; 183 | margin-left: -20px; 184 | padding-left: 20px; 185 | margin-right: -20px; 186 | padding-right: 20px; 187 | padding: 20px; 188 | margin-bottom:0; 189 | } 190 | 191 | 192 | .sample_table td { 193 | padding-top: 3px; 194 | padding-bottom:5px; 195 | padding-left: 5px; 196 | vertical-align: middle; 197 | line-height: 1.2em; 198 | } 199 | 200 | .sample_table td:first-child { 201 | background-color: #eee; 202 | text-align: right; 203 | padding-right: 5px; 204 | padding-left: 0; 205 | padding: 5px; 206 | font: 11px/12px "Courier New", Courier, mono; 207 | } 208 | 209 | code { 210 | white-space: pre; 211 | background-color: #eee; 212 | display: block; 213 | padding: 10px; 214 | margin-bottom: 18px; 215 | overflow: auto; 216 | } 217 | 218 | 219 | .bottom,.last {margin-bottom:0 !important; padding-bottom:0 !important;} 220 | 221 | .box { 222 | padding: 18px; 223 | margin-bottom: 18px; 224 | background: #eee; 225 | } 226 | 227 | .reverse,.reversed { background: #000 !important;color: #fff !important; border: none !important;} 228 | 229 | #bodycomparison { 230 | position: relative; 231 | overflow: hidden; 232 | font-size: 72px; 233 | height: 90px; 234 | white-space: nowrap; 235 | } 236 | 237 | #bodycomparison div{ 238 | font-size: 72px; 239 | line-height: 90px; 240 | display: inline; 241 | margin: 0 15px 0 0; 242 | padding: 0; 243 | } 244 | 245 | #bodycomparison div span{ 246 | font: 10px Arial; 247 | position: absolute; 248 | left: 0; 249 | } 250 | #xheight { 251 | float: none; 252 | position: absolute; 253 | color: #d9f3ff; 254 | font-size: 72px; 255 | line-height: 90px; 256 | } 257 | 258 | .fontbody { 259 | position: relative; 260 | } 261 | .arialbody{ 262 | font-family: Arial; 263 | position: relative; 264 | } 265 | .verdanabody{ 266 | font-family: Verdana; 267 | position: relative; 268 | } 269 | .georgiabody{ 270 | font-family: Georgia; 271 | position: relative; 272 | } 273 | 274 | /* @group Layout page 275 | */ 276 | 277 | #layout h1 { 278 | font-size: 36px; 279 | line-height: 42px; 280 | font-weight: normal; 281 | font-style: normal; 282 | } 283 | 284 | #layout h2 { 285 | font-size: 24px; 286 | line-height: 23px; 287 | font-weight: normal; 288 | font-style: normal; 289 | } 290 | 291 | #layout h3 { 292 | font-size: 22px; 293 | line-height: 1.4em; 294 | margin-top: 1em; 295 | font-weight: normal; 296 | font-style: normal; 297 | } 298 | 299 | 300 | #layout p.byline { 301 | font-size: 12px; 302 | margin-top: 18px; 303 | line-height: 12px; 304 | margin-bottom: 0; 305 | } 306 | #layout p { 307 | font-size: 14px; 308 | line-height: 21px; 309 | margin-bottom: .5em; 310 | } 311 | 312 | #layout p.large{ 313 | font-size: 18px; 314 | line-height: 26px; 315 | } 316 | 317 | #layout .sidebar p{ 318 | font-size: 12px; 319 | line-height: 1.4em; 320 | } 321 | 322 | #layout p.caption { 323 | font-size: 10px; 324 | margin-top: -16px; 325 | margin-bottom: 18px; 326 | } 327 | 328 | /* @end */ 329 | 330 | /* @group Glyphs */ 331 | 332 | #glyph_chart div{ 333 | background-color: #d9f3ff; 334 | color: black; 335 | float: left; 336 | font-size: 36px; 337 | height: 1.2em; 338 | line-height: 1.2em; 339 | margin-bottom: 1px; 340 | margin-right: 1px; 341 | text-align: center; 342 | width: 1.2em; 343 | position: relative; 344 | padding: .6em .2em .2em; 345 | } 346 | 347 | #glyph_chart div p { 348 | position: absolute; 349 | left: 0; 350 | top: 0; 351 | display: block; 352 | text-align: center; 353 | font: bold 9px Arial, sans-serif; 354 | background-color: #3a768f; 355 | width: 100%; 356 | color: #fff; 357 | padding: 2px 0; 358 | } 359 | 360 | 361 | #glyphs h1 { 362 | font-family: Arial, sans-serif; 363 | } 364 | /* @end */ 365 | 366 | /* @group Installing */ 367 | 368 | #installing { 369 | font: 13px Arial, sans-serif; 370 | } 371 | 372 | #installing p, 373 | #glyphs p{ 374 | line-height: 1.2em; 375 | margin-bottom: 18px; 376 | font: 13px Arial, sans-serif; 377 | } 378 | 379 | 380 | 381 | #installing h3{ 382 | font-size: 15px; 383 | margin-top: 18px; 384 | } 385 | 386 | /* @end */ 387 | 388 | #rendering h1 { 389 | font-family: Arial, sans-serif; 390 | } 391 | .render_table td { 392 | font: 11px "Courier New", Courier, mono; 393 | vertical-align: middle; 394 | } 395 | 396 | 397 | -------------------------------------------------------------------------------- /libs/reachability/Reachability.m: -------------------------------------------------------------------------------- 1 | /* 2 | File: Reachability.m 3 | Abstract: Basic demonstration of how to use the SystemConfiguration Reachablity APIs. 4 | Version: 3.0 5 | 6 | Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple 7 | Inc. ("Apple") in consideration of your agreement to the following 8 | terms, and your use, installation, modification or redistribution of 9 | this Apple software constitutes acceptance of these terms. If you do 10 | not agree with these terms, please do not use, install, modify or 11 | redistribute this Apple software. 12 | 13 | In consideration of your agreement to abide by the following terms, and 14 | subject to these terms, Apple grants you a personal, non-exclusive 15 | license, under Apple's copyrights in this original Apple software (the 16 | "Apple Software"), to use, reproduce, modify and redistribute the Apple 17 | Software, with or without modifications, in source and/or binary forms; 18 | provided that if you redistribute the Apple Software in its entirety and 19 | without modifications, you must retain this notice and the following 20 | text and disclaimers in all such redistributions of the Apple Software. 21 | Neither the name, trademarks, service marks or logos of Apple Inc. may 22 | be used to endorse or promote products derived from the Apple Software 23 | without specific prior written permission from Apple. Except as 24 | expressly stated in this notice, no other rights or licenses, express or 25 | implied, are granted by Apple herein, including but not limited to any 26 | patent rights that may be infringed by your derivative works or by other 27 | works in which the Apple Software may be incorporated. 28 | 29 | The Apple Software is provided by Apple on an "AS IS" basis. APPLE 30 | MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION 31 | THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS 32 | FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND 33 | OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS. 34 | 35 | IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL 36 | OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 37 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 38 | INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, 39 | MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED 40 | AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), 41 | STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE 42 | POSSIBILITY OF SUCH DAMAGE. 43 | 44 | Copyright (C) 2013 Apple Inc. All Rights Reserved. 45 | 46 | */ 47 | 48 | #import 49 | #import 50 | #import 51 | #import 52 | 53 | #import 54 | 55 | #import "Reachability.h" 56 | 57 | 58 | NSString *kReachabilityChangedNotification = @"kNetworkReachabilityChangedNotification"; 59 | 60 | 61 | #pragma mark - Supporting functions 62 | 63 | #define kShouldPrintReachabilityFlags 1 64 | 65 | static void PrintReachabilityFlags(SCNetworkReachabilityFlags flags, const char* comment) 66 | { 67 | #if kShouldPrintReachabilityFlags 68 | 69 | NSLog(@"Reachability Flag Status: %c%c %c%c%c%c%c%c%c %s\n", 70 | (flags & kSCNetworkReachabilityFlagsIsWWAN) ? 'W' : '-', 71 | (flags & kSCNetworkReachabilityFlagsReachable) ? 'R' : '-', 72 | 73 | (flags & kSCNetworkReachabilityFlagsTransientConnection) ? 't' : '-', 74 | (flags & kSCNetworkReachabilityFlagsConnectionRequired) ? 'c' : '-', 75 | (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) ? 'C' : '-', 76 | (flags & kSCNetworkReachabilityFlagsInterventionRequired) ? 'i' : '-', 77 | (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) ? 'D' : '-', 78 | (flags & kSCNetworkReachabilityFlagsIsLocalAddress) ? 'l' : '-', 79 | (flags & kSCNetworkReachabilityFlagsIsDirect) ? 'd' : '-', 80 | comment 81 | ); 82 | #endif 83 | } 84 | 85 | 86 | static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* info) 87 | { 88 | #pragma unused (target, flags) 89 | NSCAssert(info != NULL, @"info was NULL in ReachabilityCallback"); 90 | NSCAssert([(__bridge NSObject*) info isKindOfClass: [Reachability class]], @"info was wrong class in ReachabilityCallback"); 91 | 92 | Reachability* noteObject = (__bridge Reachability *)info; 93 | // Post a notification to notify the client that the network reachability changed. 94 | [[NSNotificationCenter defaultCenter] postNotificationName: kReachabilityChangedNotification object: noteObject]; 95 | } 96 | 97 | 98 | #pragma mark - Reachability implementation 99 | 100 | @implementation Reachability 101 | { 102 | BOOL localWiFiRef; 103 | SCNetworkReachabilityRef reachabilityRef; 104 | } 105 | 106 | 107 | + (instancetype)reachabilityWithHostName:(NSString *)hostName; 108 | { 109 | Reachability* returnValue = NULL; 110 | SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, [hostName UTF8String]); 111 | if (reachability != NULL) 112 | { 113 | returnValue= [[self alloc] init]; 114 | if (returnValue != NULL) 115 | { 116 | returnValue->reachabilityRef = reachability; 117 | returnValue->localWiFiRef = NO; 118 | } 119 | } 120 | return returnValue; 121 | } 122 | 123 | 124 | + (instancetype)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress; 125 | { 126 | SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)hostAddress); 127 | 128 | Reachability* returnValue = NULL; 129 | 130 | if (reachability != NULL) 131 | { 132 | returnValue = [[self alloc] init]; 133 | if (returnValue != NULL) 134 | { 135 | returnValue->reachabilityRef = reachability; 136 | returnValue->localWiFiRef = NO; 137 | } 138 | } 139 | return returnValue; 140 | } 141 | 142 | 143 | 144 | + (instancetype)reachabilityForInternetConnection; 145 | { 146 | struct sockaddr_in zeroAddress; 147 | bzero(&zeroAddress, sizeof(zeroAddress)); 148 | zeroAddress.sin_len = sizeof(zeroAddress); 149 | zeroAddress.sin_family = AF_INET; 150 | 151 | return [self reachabilityWithAddress:&zeroAddress]; 152 | } 153 | 154 | 155 | + (instancetype)reachabilityForLocalWiFi; 156 | { 157 | struct sockaddr_in localWifiAddress; 158 | bzero(&localWifiAddress, sizeof(localWifiAddress)); 159 | localWifiAddress.sin_len = sizeof(localWifiAddress); 160 | localWifiAddress.sin_family = AF_INET; 161 | 162 | // IN_LINKLOCALNETNUM is defined in as 169.254.0.0. 163 | localWifiAddress.sin_addr.s_addr = htonl(IN_LINKLOCALNETNUM); 164 | 165 | Reachability* returnValue = [self reachabilityWithAddress: &localWifiAddress]; 166 | if (returnValue != NULL) 167 | { 168 | returnValue->localWiFiRef = YES; 169 | } 170 | 171 | return returnValue; 172 | } 173 | 174 | 175 | #pragma mark - Start and stop notifier 176 | 177 | - (BOOL)startNotifier 178 | { 179 | BOOL returnValue = NO; 180 | SCNetworkReachabilityContext context = {0, (__bridge void *)(self), NULL, NULL, NULL}; 181 | 182 | if (SCNetworkReachabilitySetCallback(reachabilityRef, ReachabilityCallback, &context)) 183 | { 184 | if (SCNetworkReachabilityScheduleWithRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)) 185 | { 186 | returnValue = YES; 187 | } 188 | } 189 | 190 | return returnValue; 191 | } 192 | 193 | 194 | - (void)stopNotifier 195 | { 196 | if (reachabilityRef != NULL) 197 | { 198 | SCNetworkReachabilityUnscheduleFromRunLoop(reachabilityRef, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); 199 | } 200 | } 201 | 202 | 203 | - (void)dealloc 204 | { 205 | [self stopNotifier]; 206 | if (reachabilityRef != NULL) 207 | { 208 | CFRelease(reachabilityRef); 209 | } 210 | } 211 | 212 | 213 | #pragma mark - Network Flag Handling 214 | 215 | - (NetworkStatus)localWiFiStatusForFlags:(SCNetworkReachabilityFlags)flags 216 | { 217 | PrintReachabilityFlags(flags, "localWiFiStatusForFlags"); 218 | BOOL returnValue = NotReachable; 219 | 220 | if ((flags & kSCNetworkReachabilityFlagsReachable) && (flags & kSCNetworkReachabilityFlagsIsDirect)) 221 | { 222 | returnValue = ReachableViaWiFi; 223 | } 224 | 225 | return returnValue; 226 | } 227 | 228 | 229 | - (NetworkStatus)networkStatusForFlags:(SCNetworkReachabilityFlags)flags 230 | { 231 | PrintReachabilityFlags(flags, "networkStatusForFlags"); 232 | if ((flags & kSCNetworkReachabilityFlagsReachable) == 0) 233 | { 234 | // The target host is not reachable. 235 | return NotReachable; 236 | } 237 | 238 | BOOL returnValue = NotReachable; 239 | 240 | if ((flags & kSCNetworkReachabilityFlagsConnectionRequired) == 0) 241 | { 242 | /* 243 | If the target host is reachable and no connection is required then we'll assume (for now) that you're on Wi-Fi... 244 | */ 245 | returnValue = ReachableViaWiFi; 246 | } 247 | 248 | if ((((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || 249 | (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)) 250 | { 251 | /* 252 | ... and the connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs... 253 | */ 254 | 255 | if ((flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0) 256 | { 257 | /* 258 | ... and no [user] intervention is needed... 259 | */ 260 | returnValue = ReachableViaWiFi; 261 | } 262 | } 263 | 264 | if ((flags & kSCNetworkReachabilityFlagsIsWWAN) == kSCNetworkReachabilityFlagsIsWWAN) 265 | { 266 | /* 267 | ... but WWAN connections are OK if the calling application is using the CFNetwork APIs. 268 | */ 269 | returnValue = ReachableViaWWAN; 270 | } 271 | 272 | return returnValue; 273 | } 274 | 275 | 276 | - (BOOL)connectionRequired 277 | { 278 | NSAssert(reachabilityRef != NULL, @"connectionRequired called with NULL reachabilityRef"); 279 | SCNetworkReachabilityFlags flags; 280 | 281 | if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags)) 282 | { 283 | return (flags & kSCNetworkReachabilityFlagsConnectionRequired); 284 | } 285 | 286 | return NO; 287 | } 288 | 289 | 290 | - (NetworkStatus)currentReachabilityStatus 291 | { 292 | NSAssert(reachabilityRef != NULL, @"currentNetworkStatus called with NULL reachabilityRef"); 293 | NetworkStatus returnValue = NotReachable; 294 | SCNetworkReachabilityFlags flags; 295 | 296 | if (SCNetworkReachabilityGetFlags(reachabilityRef, &flags)) 297 | { 298 | if (localWiFiRef) 299 | { 300 | returnValue = [self localWiFiStatusForFlags:flags]; 301 | } 302 | else 303 | { 304 | returnValue = [self networkStatusForFlags:flags]; 305 | } 306 | } 307 | 308 | return returnValue; 309 | } 310 | 311 | 312 | @end 313 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWDribbbleSaver.m: -------------------------------------------------------------------------------- 1 | 2 | #import "GWDribbbleSaver.h" 3 | 4 | static GWDribbbleSaver * _instance; 5 | 6 | @interface GWDribbbleSaver () 7 | @end 8 | 9 | @implementation GWDribbbleSaver 10 | 11 | + (GWDribbbleSaver *) instance { 12 | return _instance; 13 | } 14 | 15 | + (NSURL *) applicationSupport { 16 | NSFileManager * fileManager = [NSFileManager defaultManager]; 17 | NSURL * url = [fileManager URLForDirectory:NSApplicationSupportDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:TRUE error:nil]; 18 | url = [url URLByAppendingPathComponent:@"HotShotsScreenSaver"]; 19 | [fileManager createDirectoryAtPath:url.path withIntermediateDirectories:TRUE attributes:nil error:nil]; 20 | return url; 21 | } 22 | 23 | - (void) awakeFromNib { 24 | _instance = self; 25 | [self setup]; 26 | [self setupCache]; 27 | [self setupDribbble]; 28 | [self deserializeShots]; 29 | } 30 | 31 | - (void) viewDidLoad { 32 | 33 | } 34 | 35 | - (void) setup { 36 | self.shots = [NSMutableArray array]; 37 | self.shotViews = [NSMutableArray array]; 38 | } 39 | 40 | - (BOOL) setupDribbble { 41 | self.latest = [[Dribbble alloc] init]; 42 | self.popular = [[Dribbble alloc] init]; 43 | self.favorites = [[Dribbble alloc] init]; 44 | NSString * tokenPath = [@"~/Library/Application Support/HotShotsScreenSaver/accesstoken.txt" stringByExpandingTildeInPath]; 45 | if([[NSFileManager defaultManager] fileExistsAtPath:tokenPath]) { 46 | NSData * data = [NSData dataWithContentsOfFile:tokenPath]; 47 | NSString * token = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 48 | self.popular.accessToken = token; 49 | self.latest.accessToken = token; 50 | self.favorites.accessToken = token; 51 | return TRUE; 52 | } 53 | return FALSE; 54 | } 55 | 56 | - (void) setupCache { 57 | #if GWDribbbleSaverUseCache 58 | NSURL * as = [GWDribbbleSaver applicationSupport]; 59 | NSURL * url = [as URLByAppendingPathComponent:@"HotShotsScreenSaver"]; 60 | self.cache = [[GWDataDiskCache alloc] initWithDiskCacheURL:url]; 61 | self.cache.oldestAllowableFileTimeDelta = 86400; 62 | [self.cache clearOldFiles]; 63 | #endif 64 | } 65 | 66 | - (void) run { 67 | if(self.shots.count > 0) { 68 | [self shuffleShots]; 69 | if([self canUseCachedShots]) { 70 | _useCachedShots = TRUE; 71 | [self populateDribbbleShotsFromCachedImages]; 72 | } else { 73 | [self populateDribbbleShots]; 74 | } 75 | [self startRefreshTimer]; 76 | [self startSwitchTimer]; 77 | } 78 | [self loadDribbble:nil]; 79 | } 80 | 81 | - (void) serializeShots { 82 | NSURL * as = [GWDribbbleSaver applicationSupport]; 83 | NSURL * shots = [as URLByAppendingPathComponent:@"shots.data"]; 84 | NSData * data = [NSKeyedArchiver archivedDataWithRootObject:self.shots]; 85 | [data writeToURL:shots atomically:TRUE]; 86 | } 87 | 88 | - (void) deserializeShots { 89 | NSURL * as = [GWDribbbleSaver applicationSupport]; 90 | NSURL * shots = [as URLByAppendingPathComponent:@"shots.data"]; 91 | NSFileManager * fileManager = [NSFileManager defaultManager]; 92 | NSDictionary * stats = [fileManager attributesOfItemAtPath:shots.path error:nil]; 93 | NSString * size = [stats objectForKey:NSFileSize]; 94 | if([size integerValue]/1000000 <= 2) { 95 | if([fileManager fileExistsAtPath:shots.path]) { 96 | NSData * data = [NSData dataWithContentsOfURL:shots]; 97 | _shots = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 98 | } 99 | } 100 | } 101 | 102 | static NSMutableArray * newShots; 103 | - (void) loadDribbble:(id) sender { 104 | newShots = [[NSMutableArray alloc] init]; 105 | 106 | if(self.latest.accessToken) { 107 | [self.latest listShotsWithParameters:@{@"sort":@"recent",@"per_page":@"100"} completion:^(DribbbleResponse *response) { 108 | if(response.error) { 109 | return; 110 | } 111 | NSArray * results = (NSArray *)response.data; 112 | for(int i = 0; i < results.count; i++) { 113 | NSDictionary * shot = results[i]; 114 | [newShots addObject:shot]; 115 | } 116 | [self dribbbleLoadedNewShots:newShots]; 117 | }]; 118 | } 119 | 120 | if(self.popular.accessToken) { 121 | [self.popular listShotsWithParameters:@{@"per_page":@"100"} completion:^(DribbbleResponse *response) { 122 | if(response.error) { 123 | return; 124 | } 125 | NSArray * results = (NSArray *)response.data; 126 | for(int i = 0; i < results.count; i++) { 127 | NSDictionary * shot = results[i]; 128 | [newShots addObject:shot]; 129 | } 130 | [self dribbbleLoadedNewShots:newShots]; 131 | }]; 132 | } 133 | 134 | // if(self.favorites.accessToken) { 135 | // [self.favorites listShotsLikedParameters:@{@"per_page":@"100"} withCompletion:^(DribbbleResponse *response) { 136 | // if(response.error) { 137 | // return; 138 | // } 139 | // NSArray * results = (NSArray *)response.data; 140 | // for(int i = 0; i < results.count; i++) { 141 | // NSDictionary * fav = results[i]; 142 | // NSDictionary * shot = fav[@"shot"]; 143 | // [newShots addObject:shot]; 144 | // } 145 | // [self dribbbleLoadedNewShots:newShots]; 146 | // }]; 147 | // } 148 | } 149 | 150 | - (void) dribbbleLoadedNewShots:(NSMutableArray *) array { 151 | _useCachedShots = FALSE; 152 | if (self.shots.count > 400) { 153 | self.shots = [NSMutableArray array]; 154 | } 155 | [self.shots addObjectsFromArray:array]; 156 | [self shuffleShots]; 157 | if(self.shotViews.count < 1) { 158 | [self populateDribbbleShots]; 159 | [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(startSwitchTimer) userInfo:nil repeats:FALSE]; 160 | } else { 161 | [self startSwitchTimer]; 162 | } 163 | [self startRefreshTimer]; 164 | [self serializeShots]; 165 | } 166 | 167 | - (void) shuffleShots { 168 | [self.shots sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { 169 | NSInteger ri = arc4random_uniform(100); 170 | if(ri > 50) { 171 | return -1; 172 | } else { 173 | return 1; 174 | } 175 | }]; 176 | } 177 | 178 | - (void) startRefreshTimer { 179 | [refreshTimer invalidate]; 180 | refreshTimer = [NSTimer scheduledTimerWithTimeInterval:300 target:self selector:@selector(loadDribbble:) userInfo:nil repeats:TRUE]; 181 | } 182 | 183 | - (void) stopRefreshTimer { 184 | [refreshTimer invalidate]; 185 | refreshTimer = nil; 186 | } 187 | 188 | - (void) startSwitchTimer { 189 | if(switchTimer) { 190 | [switchTimer invalidate]; 191 | } 192 | 193 | if(switchTimer2) { 194 | [switchTimer2 invalidate]; 195 | } 196 | 197 | switchTimer = [NSTimer scheduledTimerWithTimeInterval:2.75 target:self selector:@selector(switchDribbble:) userInfo:nil repeats:TRUE]; 198 | switchTimer2 = [NSTimer scheduledTimerWithTimeInterval:3.8 target:self selector:@selector(switchDribbble:) userInfo:nil repeats:TRUE]; 199 | } 200 | 201 | - (void) stopSwitchTimer { 202 | [switchTimer invalidate]; 203 | switchTimer = nil; 204 | 205 | [switchTimer2 invalidate]; 206 | switchTimer2 = nil; 207 | } 208 | 209 | - (void) startTimers { 210 | [self stopTimers]; 211 | [self startSwitchTimer]; 212 | [self startRefreshTimer]; 213 | } 214 | 215 | - (void) stopTimers { 216 | [self stopRefreshTimer]; 217 | [self stopSwitchTimer]; 218 | } 219 | 220 | - (BOOL) canUseCachedShots { 221 | NSFileManager * fileManager = [NSFileManager defaultManager]; 222 | NSArray * fls = [fileManager contentsOfDirectoryAtURL:self.cache.diskCacheURL includingPropertiesForKeys:nil options:0 error:nil]; 223 | return fls.count > 50; 224 | } 225 | 226 | - (void) switchDribbble:(NSTimer *) timer { 227 | if(self.shotViews.count < 1) { 228 | return; 229 | } 230 | 231 | NSInteger switchCount = 1; 232 | NSMutableArray * __shots = [NSMutableArray array]; 233 | NSInteger ri = 0; 234 | 235 | if(_useCachedShots) { 236 | NSLog(@"switching to cached shot!"); 237 | NSFileManager * fileManager = [NSFileManager defaultManager]; 238 | NSArray * files = [fileManager contentsOfDirectoryAtPath:self.cache.diskCacheURL.path error:nil]; 239 | NSMutableDictionary * shot = NULL; 240 | for(NSInteger i = 0; i < switchCount; i++) { 241 | shot = [NSMutableDictionary dictionary]; 242 | ri = arc4random_uniform((uint32_t)files.count); 243 | [shot setObject:[files objectAtIndex:ri] forKey:@"cache_shot_filename"]; 244 | [__shots addObject:shot]; 245 | } 246 | } else { 247 | for(NSInteger i = 0; i < switchCount; i++) { 248 | ri = arc4random_uniform((uint32_t)self.shots.count); 249 | [__shots addObject:[self.shots objectAtIndex:ri]]; 250 | } 251 | } 252 | 253 | NSInteger rsi = 0; 254 | GWDribbbleShot * dshot = NULL; 255 | for(NSInteger j = 0; j < __shots.count; j++) { 256 | rsi = arc4random_uniform((uint32_t)self.shotViews.count); 257 | dshot = [self.shotViews objectAtIndex:rsi]; 258 | dshot.representedObject = [__shots objectAtIndex:j]; 259 | } 260 | } 261 | 262 | - (void) removeDribbbleShots { 263 | for(GWDribbbleShot * shotvc in self.shotViews) { 264 | [shotvc.view removeFromSuperview]; 265 | } 266 | self.shotViews = [[NSMutableArray alloc] init]; 267 | } 268 | 269 | - (void) populateDribbbleShots { 270 | NSRect bounds = self.view.bounds; 271 | NSInteger w = 300; 272 | NSInteger h = 225; 273 | 274 | if(bounds.size.width < 1500) { 275 | w = 200; 276 | h = w*.75; 277 | } 278 | 279 | if(bounds.size.width < 300) { 280 | w = 40; 281 | h = 30; 282 | } 283 | 284 | NSInteger row = 0; 285 | NSInteger cols = ceilf(NSWidth(bounds)/w); 286 | NSInteger rows = ceilf(NSHeight(bounds)/h); 287 | NSInteger i = 0; 288 | NSInteger totalHeight = h*rows; 289 | NSInteger diffy = (totalHeight - NSHeight(bounds)) / 2; 290 | NSInteger totalWidth = w*cols; 291 | NSInteger diffx = (totalWidth - NSWidth(bounds)) / 2; 292 | NSRect f = NSMakeRect(-diffx,-diffy,w,h); 293 | 294 | //NSLog(@"bounds: %f %f",NSWidth(bounds),NSHeight(bounds)); 295 | //NSLog(@"cell w/h: %li %li",w,h); 296 | //NSLog(@"first cell x/y: %f %f",f.origin.x,f.origin.y); 297 | 298 | for(NSDictionary * shot in self.shots) { 299 | GWDribbbleShot * sh = [[GWDribbbleShot alloc] initWithNibName:@"GWDribbbleShot" bundle:self.resourcesBundle]; 300 | sh.view.frame = f; 301 | [self.view addSubview:sh.view]; 302 | sh.representedObject = shot; 303 | 304 | f.origin.y += h; 305 | row++; 306 | if(row > rows) { 307 | f.origin.y = -diffy; 308 | f.origin.x += w; 309 | row = 0; 310 | } 311 | 312 | [self.shotViews addObject:sh]; 313 | 314 | i++; 315 | if(i >= (rows*cols)+cols) { 316 | break; 317 | } 318 | } 319 | } 320 | 321 | - (void) populateDribbbleShotsFromCachedImages { 322 | NSRect bounds = self.view.bounds; 323 | NSInteger w = 300; 324 | NSInteger h = 225; 325 | 326 | if(bounds.size.width < 1500) { 327 | w = 200; 328 | h = w*.75; 329 | } 330 | 331 | if(bounds.size.width < 300) { 332 | w = 40; 333 | h = 30; 334 | } 335 | 336 | NSInteger row = 0; 337 | NSInteger cols = ceilf(NSWidth(bounds)/w); 338 | NSInteger rows = ceilf(NSHeight(bounds)/h); 339 | NSInteger i = 0; 340 | NSInteger totalHeight = h*rows; 341 | NSInteger diffy = (totalHeight - NSHeight(bounds)) / 2; 342 | NSInteger totalWidth = w*cols; 343 | NSInteger diffx = (totalWidth - NSWidth(bounds)) / 2; 344 | NSRect f = NSMakeRect(-diffx,-diffy,w,h); 345 | 346 | //NSLog(@"bounds: %f %f",NSWidth(bounds),NSHeight(bounds)); 347 | //NSLog(@"cell w/h: %li %li",w,h); 348 | //NSLog(@"first cell x/y: %f %f",f.origin.x,f.origin.y); 349 | 350 | GWDribbbleSaver * saver = [GWDribbbleSaver instance]; 351 | NSFileManager * fileManager = [NSFileManager defaultManager]; 352 | NSMutableArray * files = [NSMutableArray arrayWithArray:[fileManager contentsOfDirectoryAtPath:saver.cache.diskCacheURL.path error:nil]]; 353 | 354 | [files sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { 355 | NSInteger ri = arc4random_uniform(100); 356 | if(ri > 50) { 357 | return -1; 358 | } else { 359 | return 1; 360 | } 361 | }]; 362 | 363 | NSMutableDictionary * shot = NULL; 364 | for(NSString * file in files) { 365 | shot = [NSMutableDictionary dictionary]; 366 | [shot setObject:file forKey:@"cache_shot_filename"]; 367 | 368 | GWDribbbleShot * sh = [[GWDribbbleShot alloc] initWithNibName:@"GWDribbbleShot" bundle:self.resourcesBundle]; 369 | sh.view.frame = f; 370 | [self.view addSubview:sh.view]; 371 | sh.representedObject = shot; 372 | 373 | f.origin.y += h; 374 | row++; 375 | if(row > rows) { 376 | f.origin.y = -diffy; 377 | f.origin.x += w; 378 | row = 0; 379 | } 380 | 381 | [self.shotViews addObject:sh]; 382 | 383 | i++; 384 | if(i >= (rows*cols)+cols) { 385 | break; 386 | } 387 | } 388 | } 389 | 390 | - (IBAction) refresh:(id) sender { 391 | [self stopRefreshTimer]; 392 | [self loadDribbble:nil]; 393 | [self startRefreshTimer]; 394 | } 395 | 396 | @end 397 | -------------------------------------------------------------------------------- /DribbbleSaver/DribbbleSaver/GWSaverPrefs.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 115 | 129 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | -------------------------------------------------------------------------------- /libs/yrk-spinning-progress-indicator/SPIDemo.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 42; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 35948AD413D26C0200982A06 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 76345A7A0F47DE4000C1B478 /* MainMenu.xib */; }; 11 | 35948AD513D26C0E00982A06 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 76345A7C0F47DE4000C1B478 /* InfoPlist.strings */; }; 12 | 76345A5F0F47DD8000C1B478 /* YRKSpinningProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 76345A5B0F47DD8000C1B478 /* YRKSpinningProgressIndicator.m */; }; 13 | 76345A600F47DD8000C1B478 /* SPIDAppController.m in Sources */ = {isa = PBXBuildFile; fileRef = 76345A5D0F47DD8000C1B478 /* SPIDAppController.m */; }; 14 | 76345A620F47DD8900C1B478 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 76345A610F47DD8900C1B478 /* main.m */; }; 15 | 76345A7E0F47DE4000C1B478 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 76345A7A0F47DE4000C1B478 /* MainMenu.xib */; }; 16 | 76345A7F0F47DE4000C1B478 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 76345A7C0F47DE4000C1B478 /* InfoPlist.strings */; }; 17 | 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXFileReference section */ 21 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 22 | 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 23 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 24 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 25 | 35C80A7313D14CF8003D17E4 /* debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = debug.xcconfig; path = Configs/debug.xcconfig; sourceTree = ""; }; 26 | 35C80A7413D14CF8003D17E4 /* release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = release.xcconfig; path = Configs/release.xcconfig; sourceTree = ""; }; 27 | 76345A5B0F47DD8000C1B478 /* YRKSpinningProgressIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = YRKSpinningProgressIndicator.m; path = Code/YRKSpinningProgressIndicator.m; sourceTree = ""; }; 28 | 76345A5C0F47DD8000C1B478 /* YRKSpinningProgressIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = YRKSpinningProgressIndicator.h; path = Code/YRKSpinningProgressIndicator.h; sourceTree = ""; }; 29 | 76345A5D0F47DD8000C1B478 /* SPIDAppController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SPIDAppController.m; path = Code/SPIDAppController.m; sourceTree = ""; }; 30 | 76345A5E0F47DD8000C1B478 /* SPIDAppController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SPIDAppController.h; path = Code/SPIDAppController.h; sourceTree = ""; }; 31 | 76345A610F47DD8900C1B478 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Code/main.m; sourceTree = ""; }; 32 | 76345A6C0F47DDF000C1B478 /* SPIDemo_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SPIDemo_Prefix.pch; path = Code/SPIDemo_Prefix.pch; sourceTree = ""; }; 33 | 76345A7B0F47DE4000C1B478 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Resources/English.lproj/MainMenu.xib; sourceTree = ""; }; 34 | 76345A7D0F47DE4000C1B478 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = Resources/English.lproj/InfoPlist.strings; sourceTree = ""; }; 35 | 76345A950F47DEB400C1B478 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Resources/Info.plist; sourceTree = ""; }; 36 | 8D1107320486CEB800E47090 /* SPIDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SPIDemo.app; sourceTree = BUILT_PRODUCTS_DIR; }; 37 | /* End PBXFileReference section */ 38 | 39 | /* Begin PBXFrameworksBuildPhase section */ 40 | 8D11072E0486CEB800E47090 /* Frameworks */ = { 41 | isa = PBXFrameworksBuildPhase; 42 | buildActionMask = 2147483647; 43 | files = ( 44 | 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, 45 | ); 46 | runOnlyForDeploymentPostprocessing = 0; 47 | }; 48 | /* End PBXFrameworksBuildPhase section */ 49 | 50 | /* Begin PBXGroup section */ 51 | 080E96DDFE201D6D7F000001 /* Classes */ = { 52 | isa = PBXGroup; 53 | children = ( 54 | 76345A5E0F47DD8000C1B478 /* SPIDAppController.h */, 55 | 76345A5D0F47DD8000C1B478 /* SPIDAppController.m */, 56 | 76345A5C0F47DD8000C1B478 /* YRKSpinningProgressIndicator.h */, 57 | 76345A5B0F47DD8000C1B478 /* YRKSpinningProgressIndicator.m */, 58 | ); 59 | name = Classes; 60 | sourceTree = ""; 61 | }; 62 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { 63 | isa = PBXGroup; 64 | children = ( 65 | 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, 66 | ); 67 | name = "Linked Frameworks"; 68 | sourceTree = ""; 69 | }; 70 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { 71 | isa = PBXGroup; 72 | children = ( 73 | 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 74 | 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, 75 | 29B97325FDCFA39411CA2CEA /* Foundation.framework */, 76 | ); 77 | name = "Other Frameworks"; 78 | sourceTree = ""; 79 | }; 80 | 19C28FACFE9D520D11CA2CBB /* Products */ = { 81 | isa = PBXGroup; 82 | children = ( 83 | 8D1107320486CEB800E47090 /* SPIDemo.app */, 84 | ); 85 | name = Products; 86 | sourceTree = ""; 87 | }; 88 | 29B97314FDCFA39411CA2CEA /* TurboFan */ = { 89 | isa = PBXGroup; 90 | children = ( 91 | 080E96DDFE201D6D7F000001 /* Classes */, 92 | 29B97315FDCFA39411CA2CEA /* Other Sources */, 93 | 29B97317FDCFA39411CA2CEA /* Resources */, 94 | 35C80A7113D14CD9003D17E4 /* Configs */, 95 | 29B97323FDCFA39411CA2CEA /* Frameworks */, 96 | 19C28FACFE9D520D11CA2CBB /* Products */, 97 | ); 98 | name = TurboFan; 99 | sourceTree = ""; 100 | }; 101 | 29B97315FDCFA39411CA2CEA /* Other Sources */ = { 102 | isa = PBXGroup; 103 | children = ( 104 | 76345A610F47DD8900C1B478 /* main.m */, 105 | 76345A6C0F47DDF000C1B478 /* SPIDemo_Prefix.pch */, 106 | ); 107 | name = "Other Sources"; 108 | sourceTree = ""; 109 | }; 110 | 29B97317FDCFA39411CA2CEA /* Resources */ = { 111 | isa = PBXGroup; 112 | children = ( 113 | 76345A950F47DEB400C1B478 /* Info.plist */, 114 | 76345A7A0F47DE4000C1B478 /* MainMenu.xib */, 115 | 76345A7C0F47DE4000C1B478 /* InfoPlist.strings */, 116 | ); 117 | name = Resources; 118 | sourceTree = ""; 119 | }; 120 | 29B97323FDCFA39411CA2CEA /* Frameworks */ = { 121 | isa = PBXGroup; 122 | children = ( 123 | 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 124 | 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, 125 | ); 126 | name = Frameworks; 127 | sourceTree = ""; 128 | }; 129 | 35C80A7113D14CD9003D17E4 /* Configs */ = { 130 | isa = PBXGroup; 131 | children = ( 132 | 35C80A7313D14CF8003D17E4 /* debug.xcconfig */, 133 | 35C80A7413D14CF8003D17E4 /* release.xcconfig */, 134 | ); 135 | name = Configs; 136 | sourceTree = ""; 137 | }; 138 | /* End PBXGroup section */ 139 | 140 | /* Begin PBXNativeTarget section */ 141 | 8D1107260486CEB800E47090 /* SPIDemo */ = { 142 | isa = PBXNativeTarget; 143 | buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "SPIDemo" */; 144 | buildPhases = ( 145 | 8D11072C0486CEB800E47090 /* Sources */, 146 | 8D11072E0486CEB800E47090 /* Frameworks */, 147 | 8D1107290486CEB800E47090 /* Resources */, 148 | ); 149 | buildRules = ( 150 | ); 151 | dependencies = ( 152 | ); 153 | name = SPIDemo; 154 | productInstallPath = "$(HOME)/Applications"; 155 | productName = TurboFan; 156 | productReference = 8D1107320486CEB800E47090 /* SPIDemo.app */; 157 | productType = "com.apple.product-type.application"; 158 | }; 159 | /* End PBXNativeTarget section */ 160 | 161 | /* Begin PBXProject section */ 162 | 29B97313FDCFA39411CA2CEA /* Project object */ = { 163 | isa = PBXProject; 164 | buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SPIDemo" */; 165 | compatibilityVersion = "Xcode 2.4"; 166 | developmentRegion = English; 167 | hasScannedForEncodings = 1; 168 | knownRegions = ( 169 | en, 170 | English, 171 | ); 172 | mainGroup = 29B97314FDCFA39411CA2CEA /* TurboFan */; 173 | projectDirPath = ""; 174 | projectRoot = ""; 175 | targets = ( 176 | 8D1107260486CEB800E47090 /* SPIDemo */, 177 | ); 178 | }; 179 | /* End PBXProject section */ 180 | 181 | /* Begin PBXResourcesBuildPhase section */ 182 | 8D1107290486CEB800E47090 /* Resources */ = { 183 | isa = PBXResourcesBuildPhase; 184 | buildActionMask = 2147483647; 185 | files = ( 186 | 76345A7E0F47DE4000C1B478 /* MainMenu.xib in Resources */, 187 | 76345A7F0F47DE4000C1B478 /* InfoPlist.strings in Resources */, 188 | 35948AD413D26C0200982A06 /* MainMenu.xib in Resources */, 189 | 35948AD513D26C0E00982A06 /* InfoPlist.strings in Resources */, 190 | ); 191 | runOnlyForDeploymentPostprocessing = 0; 192 | }; 193 | /* End PBXResourcesBuildPhase section */ 194 | 195 | /* Begin PBXSourcesBuildPhase section */ 196 | 8D11072C0486CEB800E47090 /* Sources */ = { 197 | isa = PBXSourcesBuildPhase; 198 | buildActionMask = 2147483647; 199 | files = ( 200 | 76345A5F0F47DD8000C1B478 /* YRKSpinningProgressIndicator.m in Sources */, 201 | 76345A600F47DD8000C1B478 /* SPIDAppController.m in Sources */, 202 | 76345A620F47DD8900C1B478 /* main.m in Sources */, 203 | ); 204 | runOnlyForDeploymentPostprocessing = 0; 205 | }; 206 | /* End PBXSourcesBuildPhase section */ 207 | 208 | /* Begin PBXVariantGroup section */ 209 | 76345A7A0F47DE4000C1B478 /* MainMenu.xib */ = { 210 | isa = PBXVariantGroup; 211 | children = ( 212 | 76345A7B0F47DE4000C1B478 /* English */, 213 | ); 214 | name = MainMenu.xib; 215 | sourceTree = ""; 216 | }; 217 | 76345A7C0F47DE4000C1B478 /* InfoPlist.strings */ = { 218 | isa = PBXVariantGroup; 219 | children = ( 220 | 76345A7D0F47DE4000C1B478 /* English */, 221 | ); 222 | name = InfoPlist.strings; 223 | sourceTree = ""; 224 | }; 225 | /* End PBXVariantGroup section */ 226 | 227 | /* Begin XCBuildConfiguration section */ 228 | C01FCF4B08A954540054247B /* Debug */ = { 229 | isa = XCBuildConfiguration; 230 | buildSettings = { 231 | GCC_ENABLE_FIX_AND_CONTINUE = YES; 232 | INFOPLIST_FILE = Resources/Info.plist; 233 | PRODUCT_NAME = SPIDemo; 234 | }; 235 | name = Debug; 236 | }; 237 | C01FCF4C08A954540054247B /* Release */ = { 238 | isa = XCBuildConfiguration; 239 | buildSettings = { 240 | INFOPLIST_FILE = Resources/Info.plist; 241 | PRODUCT_NAME = SPIDemo; 242 | }; 243 | name = Release; 244 | }; 245 | C01FCF4F08A954540054247B /* Debug */ = { 246 | isa = XCBuildConfiguration; 247 | baseConfigurationReference = 35C80A7313D14CF8003D17E4 /* debug.xcconfig */; 248 | buildSettings = { 249 | GCC_PREFIX_HEADER = Code/SPIDemo_Prefix.pch; 250 | }; 251 | name = Debug; 252 | }; 253 | C01FCF5008A954540054247B /* Release */ = { 254 | isa = XCBuildConfiguration; 255 | baseConfigurationReference = 35C80A7413D14CF8003D17E4 /* release.xcconfig */; 256 | buildSettings = { 257 | GCC_PREFIX_HEADER = Code/SPIDemo_Prefix.pch; 258 | }; 259 | name = Release; 260 | }; 261 | /* End XCBuildConfiguration section */ 262 | 263 | /* Begin XCConfigurationList section */ 264 | C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "SPIDemo" */ = { 265 | isa = XCConfigurationList; 266 | buildConfigurations = ( 267 | C01FCF4B08A954540054247B /* Debug */, 268 | C01FCF4C08A954540054247B /* Release */, 269 | ); 270 | defaultConfigurationIsVisible = 0; 271 | defaultConfigurationName = Release; 272 | }; 273 | C01FCF4E08A954540054247B /* Build configuration list for PBXProject "SPIDemo" */ = { 274 | isa = XCConfigurationList; 275 | buildConfigurations = ( 276 | C01FCF4F08A954540054247B /* Debug */, 277 | C01FCF5008A954540054247B /* Release */, 278 | ); 279 | defaultConfigurationIsVisible = 0; 280 | defaultConfigurationName = Release; 281 | }; 282 | /* End XCConfigurationList section */ 283 | }; 284 | rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; 285 | } 286 | --------------------------------------------------------------------------------