├── FakeApps ├── Mail.app │ ├── PkgInfo │ ├── Mail │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── Maps.app │ ├── PkgInfo │ ├── Maps │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── iPod.app │ ├── PkgInfo │ ├── iPod │ ├── Icon.png │ ├── Info.plist │ └── MainWindow.nib ├── App Store.app │ ├── PkgInfo │ ├── App Store │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── Calendar.app │ ├── PkgInfo │ ├── Calendar │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── Camera.app │ ├── PkgInfo │ ├── Camera │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── Clock.app │ ├── PkgInfo │ ├── Clock │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── Compass.app │ ├── PkgInfo │ ├── Compass │ ├── Icon.png │ ├── Info.plist │ └── MainWindow.nib ├── Messages.app │ ├── PkgInfo │ ├── Icon.png │ ├── Messages │ ├── Info.plist │ └── MainWindow.nib ├── Notes.app │ ├── PkgInfo │ ├── Notes │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── Phone.app │ ├── PkgInfo │ ├── Phone │ ├── Icon.png │ ├── Info.plist │ └── MainWindow.nib ├── Stocks.app │ ├── PkgInfo │ ├── Stocks │ ├── Icon.png │ ├── Info.plist │ └── MainWindow.nib ├── Weather.app │ ├── PkgInfo │ ├── Icon.png │ ├── Weather │ ├── MainWindow.nib │ └── Info.plist ├── YouTube.app │ ├── PkgInfo │ ├── Icon.png │ ├── YouTube │ ├── MainWindow.nib │ └── Info.plist ├── iTunes.app │ ├── PkgInfo │ ├── iTunes │ ├── Icon.png │ ├── MainWindow.nib │ └── Info.plist ├── Calculator.app │ ├── PkgInfo │ ├── Icon.png │ ├── Calculator │ ├── MainWindow.nib │ └── Info.plist └── Voice Memos.app │ ├── PkgInfo │ ├── Icon.png │ ├── Info.plist │ ├── Voice Memos │ └── MainWindow.nib ├── .gitattributes ├── English.lproj └── InfoPlist.strings ├── Images ├── Active.png ├── Hover.png ├── Overlay.png ├── RecordButton.ai ├── StopButton.png ├── OverlayFrame.psd └── RecordButton.png ├── iPhone Simulator Capture.xcodeproj ├── xcuserdata │ └── david.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints.xcbkptlist │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ └── iPhone Simulator Capture.xcscheme ├── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcuserdata │ │ └── david.xcuserdatad │ │ └── WorkspaceSettings.xcsettings └── project.pbxproj ├── Installer ├── create-plugins-directory.sh └── Installer.pmdoc │ ├── 01iphone-contents.xml │ ├── 01iphone.xml │ └── index.xml ├── Simulator Plugin_Prefix.pch ├── Notes.rtf ├── .gitignore ├── version.plist ├── README.md ├── Info.plist ├── LICENSE ├── Frameworks ├── SynthesizeSingleton.h ├── CommonMacros │ ├── SynthesizeSingleton.h │ ├── DABCommonMacros.h │ ├── DebugLog.h │ ├── IsEmpty.h │ └── CustomProperties.h ├── SimulatorView.h ├── SimulatorBridge.h ├── MonitorController.h └── iPhone Simulator.h ├── Classes ├── DABTimeIntervalFormatter.h ├── ISCAppDelegateDelay.h ├── DABTimeIntervalFormatter.m ├── ISCDeviceType.h ├── ISCPreferenceController.h ├── ISCFrame.h ├── ISCController.h ├── ISCAppDelegateDelay.m ├── ISCDeviceType.m ├── ISCRecording.h ├── ISCFrame.m ├── ISCController.m ├── ISCRecording.m └── ISCPreferenceController.m ├── Categories ├── ImageRect.h ├── ISCArraySections.h ├── ImageRect.m └── ISCArraySections.m └── PluginController.xib /FakeApps/Mail.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Maps.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/iPod.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/App Store.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Calendar.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Camera.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Clock.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Compass.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Messages.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Notes.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Phone.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Stocks.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Weather.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/YouTube.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/iTunes.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Calculator.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /FakeApps/Voice Memos.app/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.pbxproj -crlf -diff -merge 2 | -------------------------------------------------------------------------------- /English.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- 1 | /* Localized versions of Info.plist keys */ 2 | 3 | -------------------------------------------------------------------------------- /Images/Active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/Images/Active.png -------------------------------------------------------------------------------- /Images/Hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/Images/Hover.png -------------------------------------------------------------------------------- /Images/Overlay.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/Images/Overlay.png -------------------------------------------------------------------------------- /FakeApps/Mail.app/Mail: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Mail.app/Mail -------------------------------------------------------------------------------- /FakeApps/Maps.app/Maps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Maps.app/Maps -------------------------------------------------------------------------------- /FakeApps/iPod.app/iPod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/iPod.app/iPod -------------------------------------------------------------------------------- /Images/RecordButton.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/Images/RecordButton.ai -------------------------------------------------------------------------------- /Images/StopButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/Images/StopButton.png -------------------------------------------------------------------------------- /FakeApps/Clock.app/Clock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Clock.app/Clock -------------------------------------------------------------------------------- /FakeApps/Notes.app/Notes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Notes.app/Notes -------------------------------------------------------------------------------- /FakeApps/Phone.app/Phone: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Phone.app/Phone -------------------------------------------------------------------------------- /Images/OverlayFrame.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/Images/OverlayFrame.psd -------------------------------------------------------------------------------- /Images/RecordButton.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/Images/RecordButton.png -------------------------------------------------------------------------------- /FakeApps/Camera.app/Camera: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Camera.app/Camera -------------------------------------------------------------------------------- /FakeApps/Clock.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Clock.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Mail.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Mail.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Maps.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Maps.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Notes.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Notes.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Phone.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Phone.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Stocks.app/Stocks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Stocks.app/Stocks -------------------------------------------------------------------------------- /FakeApps/iPod.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/iPod.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/iTunes.app/iTunes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/iTunes.app/iTunes -------------------------------------------------------------------------------- /FakeApps/Calendar.app/Calendar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Calendar.app/Calendar -------------------------------------------------------------------------------- /FakeApps/Calendar.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Calendar.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Camera.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Camera.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Compass.app/Compass: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Compass.app/Compass -------------------------------------------------------------------------------- /FakeApps/Compass.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Compass.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Messages.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Messages.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Messages.app/Messages: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Messages.app/Messages -------------------------------------------------------------------------------- /FakeApps/Phone.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Phone.app/Info.plist -------------------------------------------------------------------------------- /FakeApps/Stocks.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Stocks.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Stocks.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Stocks.app/Info.plist -------------------------------------------------------------------------------- /FakeApps/Weather.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Weather.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Weather.app/Weather: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Weather.app/Weather -------------------------------------------------------------------------------- /FakeApps/YouTube.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/YouTube.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/YouTube.app/YouTube: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/YouTube.app/YouTube -------------------------------------------------------------------------------- /FakeApps/iPod.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/iPod.app/Info.plist -------------------------------------------------------------------------------- /FakeApps/iTunes.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/iTunes.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/App Store.app/App Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/App Store.app/App Store -------------------------------------------------------------------------------- /FakeApps/App Store.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/App Store.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Calculator.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Calculator.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Compass.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Compass.app/Info.plist -------------------------------------------------------------------------------- /FakeApps/Mail.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Mail.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Maps.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Maps.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Messages.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Messages.app/Info.plist -------------------------------------------------------------------------------- /FakeApps/iPod.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/iPod.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Calculator.app/Calculator: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Calculator.app/Calculator -------------------------------------------------------------------------------- /FakeApps/Camera.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Camera.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Clock.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Clock.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Compass.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Compass.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Notes.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Notes.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Phone.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Phone.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Stocks.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Stocks.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Voice Memos.app/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Voice Memos.app/Icon.png -------------------------------------------------------------------------------- /FakeApps/Voice Memos.app/Info.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Voice Memos.app/Info.plist -------------------------------------------------------------------------------- /FakeApps/Weather.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Weather.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/YouTube.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/YouTube.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/iTunes.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/iTunes.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/App Store.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/App Store.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Calendar.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Calendar.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Messages.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Messages.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Voice Memos.app/Voice Memos: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Voice Memos.app/Voice Memos -------------------------------------------------------------------------------- /FakeApps/Calculator.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Calculator.app/MainWindow.nib -------------------------------------------------------------------------------- /FakeApps/Voice Memos.app/MainWindow.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/davbeck/iPhone-Simulator-Capture/HEAD/FakeApps/Voice Memos.app/MainWindow.nib -------------------------------------------------------------------------------- /iPhone Simulator Capture.xcodeproj/xcuserdata/david.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /Installer/create-plugins-directory.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | mkdir -p /Library/Application\ Support/SIMBL/Plugins 4 | chown -R root:admin /Library/Application\ Support/SIMBL/Plugins 5 | chmod -R 775 /Library/Application\ Support/SIMBL/Plugins -------------------------------------------------------------------------------- /Simulator Plugin_Prefix.pch: -------------------------------------------------------------------------------- 1 | // 2 | // Prefix header for all source files of the 'Simulator Plugin' target in the 'Simulator Plugin' project. 3 | // 4 | 5 | #ifdef __OBJC__ 6 | #import 7 | #import "DABCommonMacros.h" 8 | #endif 9 | -------------------------------------------------------------------------------- /iPhone Simulator Capture.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /Installer/Installer.pmdoc/01iphone-contents.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Notes.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 2 | {\fonttbl\f0\fnil\fcharset0 Monaco;} 3 | {\colortbl;\red255\green255\blue255;} 4 | \viewkind0 5 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural 6 | 7 | \f0\fs20 \cf0 To Do:\ 8 | Waite for processing to finish.} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # xcode noise 2 | build/* 3 | *.mode1 4 | *.mode1v3 5 | *.mode2v3 6 | *.perspective 7 | *.perspectivev3 8 | *.pbxuser 9 | *.xcworkspace 10 | xcuserdata 11 | InfoPlist.h 12 | 13 | # old skool 14 | .svn 15 | 16 | # osx noise 17 | .DS_Store 18 | *~.nib 19 | *.swp 20 | profile 21 | 22 | # other 23 | Support 24 | Research 25 | Artwork 26 | -------------------------------------------------------------------------------- /iPhone Simulator Capture.xcodeproj/project.xcworkspace/xcuserdata/david.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges 6 | 7 | IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /version.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildVersion 6 | 2 7 | CFBundleShortVersionString 8 | 1.0 9 | CFBundleVersion 10 | 1 11 | ProjectName 12 | DevToolsWizardTemplates 13 | SourceVersion 14 | 15920000 15 | 16 | 17 | -------------------------------------------------------------------------------- /iPhone Simulator Capture.xcodeproj/xcuserdata/david.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | iPhone Simulator Capture.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | 13 | SuppressBuildableAutocreation 14 | 15 | iPhone Simulator Capture.bundle 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **Deprecated** - This project is no longer maintained primarily because there are much better solutions now. 2 | This repo is for reference only. A good alternative is [Reflector](http://www.reflectorapp.com). 3 | 4 | ---- 5 | 6 | This plugin requires that you install SIMBL http://www.culater.net/software/SIMBL/SIMBL.php. 7 | 8 | To install the plugin, place it in "~/Library/Application Support/SIMBL/Plugins". create it if it doesn't 9 | already exist. You will need to install SIMBL as well. Right now it is only for Snow Leopard but there 10 | isn't anything major that is keeping it from working on Leopard other than some convenience methods. 11 | 12 | It does not record audio at this time. 13 | 14 | Works with the iPhone SDK 3.2 and 4.0. HD iPhone 4 and iPad recording not supported. 15 | -------------------------------------------------------------------------------- /FakeApps/Mail.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Mail 9 | CFBundleExecutable 10 | Mail 11 | CFBundleIdentifier 12 | com.fake.Mail 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Mail 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/Maps.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Maps 9 | CFBundleExecutable 10 | Maps 11 | CFBundleIdentifier 12 | com.fake.Maps 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Maps 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/Clock.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Clock 9 | CFBundleExecutable 10 | Clock 11 | CFBundleIdentifier 12 | com.fake.Clock 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Clock 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/Notes.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Notes 9 | CFBundleExecutable 10 | Notes 11 | CFBundleIdentifier 12 | com.fake.Notes 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Notes 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/Camera.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Camera 9 | CFBundleExecutable 10 | Camera 11 | CFBundleIdentifier 12 | com.fake.Camera 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Camera 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/iTunes.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | iTunes 9 | CFBundleExecutable 10 | iTunes 11 | CFBundleIdentifier 12 | com.fake.iTunes 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | iTunes 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/Weather.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Weather 9 | CFBundleExecutable 10 | Weather 11 | CFBundleIdentifier 12 | com.fake.Weather 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Weather 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/YouTube.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | YouTube 9 | CFBundleExecutable 10 | YouTube 11 | CFBundleIdentifier 12 | com.fake.YouTube 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | YouTube 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/Calendar.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Calendar 9 | CFBundleExecutable 10 | Calendar 11 | CFBundleIdentifier 12 | com.fake.Calendar 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Calendar 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Installer/Installer.pmdoc/01iphone.xml: -------------------------------------------------------------------------------- 1 | com.davidbeck.iphoneSimulatorCapture.iPhoneSimulatorCapture.pkg1.2.0/Users/david/Desktop/iPhone Simulator Capture 5-21-11 1.39 PM/Users/david/Library/Bundles/iPhone Simulator Capture.bundle/Library/Application Support/SIMBL/PluginsinstallToinstallTo.isAbsoluteTypescripts.preinstall.isRelativeTypeinstallFrom.pathidentifierparentversioninstallFrom.isAbsoluteTypecreate-plugins-directory.sh01iphone-contents.xml/CVS$/\.svn$/\.cvsignore$/\.cvspass$/\.DS_Store$ -------------------------------------------------------------------------------- /FakeApps/App Store.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | App Store 9 | CFBundleExecutable 10 | App Store 11 | CFBundleIdentifier 12 | com.fake.AppStore 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | App Store 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /FakeApps/Calculator.app/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleDisplayName 8 | Calculator 9 | CFBundleExecutable 10 | Calculator 11 | CFBundleIdentifier 12 | com.fake.Calculator 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Calculator 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | DTPlatformName 24 | iphonesimulator 25 | DTSDKName 26 | iphonesimulator2.2 27 | LSRequiresIPhoneOS 28 | 29 | NSMainNibFile 30 | MainWindow 31 | UIPrerenderedIcon 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | com.davidbeck.${PRODUCT_NAME:rfc1034Identifier} 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | ${PRODUCT_NAME} 17 | CFBundlePackageType 18 | BNDL 19 | CFBundleShortVersionString 20 | 1.2.0 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 1 25 | NSPrincipalClass 26 | ISCController 27 | SIMBLTargetApplications 28 | 29 | 30 | BundleIdentifier 31 | com.apple.iphonesimulator 32 | MinBundleVersion 33 | 193.8 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010, David Beck 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided 5 | that the following conditions are met: 6 | 7 | - Redistributions of source code must retain the above copyright notice, this list of conditions 8 | and the following disclaimer. 9 | - Redistributions in binary form must reproduce the above copyright notice, this list of conditions 10 | and the following disclaimer in the documentation and/or other materials provided with the 11 | distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED 14 | WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 15 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 16 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 17 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 18 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 19 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 20 | POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /Frameworks/SynthesizeSingleton.h: -------------------------------------------------------------------------------- 1 | // 2 | // SynthesizeSingleton.h 3 | // CocoaWithLove 4 | // 5 | // Created by Matt Gallagher on 20/10/08. 6 | // Copyright 2009 Matt Gallagher. All rights reserved. 7 | // 8 | // Permission is given to use this source code file without charge in any 9 | // project, commercial or otherwise, entirely at your risk, with the condition 10 | // that any redistribution (in part or whole) of source code must retain 11 | // this copyright and permission notice. Attribution in compiled projects is 12 | // appreciated but not required. 13 | // 14 | 15 | #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \ 16 | \ 17 | static classname *shared##classname = nil; \ 18 | \ 19 | + (classname *)sharedInstance \ 20 | { \ 21 | @synchronized(self) \ 22 | { \ 23 | if (shared##classname == nil) \ 24 | { \ 25 | shared##classname = [[self alloc] init]; \ 26 | } \ 27 | } \ 28 | \ 29 | return shared##classname; \ 30 | } \ 31 | \ 32 | + (id)allocWithZone:(NSZone *)zone \ 33 | { \ 34 | @synchronized(self) \ 35 | { \ 36 | if (shared##classname == nil) \ 37 | { \ 38 | shared##classname = [super allocWithZone:zone]; \ 39 | return shared##classname; \ 40 | } \ 41 | } \ 42 | \ 43 | return nil; \ 44 | } \ 45 | \ 46 | - (id)copyWithZone:(NSZone *)zone \ 47 | { \ 48 | return self; \ 49 | } \ 50 | \ 51 | - (id)retain \ 52 | { \ 53 | return self; \ 54 | } \ 55 | \ 56 | - (NSUInteger)retainCount \ 57 | { \ 58 | return NSUIntegerMax; \ 59 | } \ 60 | \ 61 | - (void)release \ 62 | { \ 63 | } \ 64 | \ 65 | - (id)autorelease \ 66 | { \ 67 | return self; \ 68 | } 69 | -------------------------------------------------------------------------------- /Frameworks/CommonMacros/SynthesizeSingleton.h: -------------------------------------------------------------------------------- 1 | // 2 | // SynthesizeSingleton.h 3 | // CocoaWithLove 4 | // 5 | // Created by Matt Gallagher on 20/10/08. 6 | // Copyright 2009 Matt Gallagher. All rights reserved. 7 | // 8 | // Permission is given to use this source code file without charge in any 9 | // project, commercial or otherwise, entirely at your risk, with the condition 10 | // that any redistribution (in part or whole) of source code must retain 11 | // this copyright and permission notice. Attribution in compiled projects is 12 | // appreciated but not required. 13 | // 14 | // http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html 15 | // 16 | 17 | #define SYNTHESIZE_SINGLETON_FOR_CLASS(classname) \ 18 | \ 19 | static classname *shared##classname = nil; \ 20 | \ 21 | + (classname *)sharedInstance \ 22 | { \ 23 | @synchronized(self) \ 24 | { \ 25 | if (shared##classname == nil) \ 26 | { \ 27 | shared##classname = [[self alloc] init]; \ 28 | } \ 29 | } \ 30 | \ 31 | return shared##classname; \ 32 | } \ 33 | \ 34 | + (id)allocWithZone:(NSZone *)zone \ 35 | { \ 36 | @synchronized(self) \ 37 | { \ 38 | if (shared##classname == nil) \ 39 | { \ 40 | shared##classname = [super allocWithZone:zone]; \ 41 | return shared##classname; \ 42 | } \ 43 | } \ 44 | \ 45 | return nil; \ 46 | } \ 47 | \ 48 | - (id)copyWithZone:(NSZone *)zone \ 49 | { \ 50 | return self; \ 51 | } \ 52 | \ 53 | - (id)retain \ 54 | { \ 55 | return self; \ 56 | } \ 57 | \ 58 | - (NSUInteger)retainCount \ 59 | { \ 60 | return NSUIntegerMax; \ 61 | } \ 62 | \ 63 | - (oneway void)release \ 64 | { \ 65 | } \ 66 | \ 67 | - (id)autorelease \ 68 | { \ 69 | return self; \ 70 | } 71 | -------------------------------------------------------------------------------- /Frameworks/CommonMacros/DABCommonMacros.h: -------------------------------------------------------------------------------- 1 | // 2 | // DABCommonMacros.h 3 | // 4 | // Copyright (c) 2010, David Beck 5 | // All rights reserved. 6 | // 7 | // Redistribution and use in source and binary forms, with or without modification, 8 | // are permitted provided that the following conditions are met: 9 | // 10 | // - Redistributions of source code must retain the above copyright notice, 11 | // this list of conditions and the following disclaimer. 12 | // - Redistributions in binary form must reproduce the above copyright notice, 13 | // this list of conditions and the following disclaimer in the documentation 14 | // and/or other materials provided with the distribution. 15 | // 16 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 20 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 24 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 25 | // OF THE POSSIBILITY OF SUCH DAMAGE. 26 | // 27 | 28 | #import "SynthesizeSingleton.h" 29 | #import "DebugLog.h" 30 | #import "IsEmpty.h" 31 | #import "CustomProperties.h" -------------------------------------------------------------------------------- /Classes/DABTimeIntervalFormatter.h: -------------------------------------------------------------------------------- 1 | // 2 | // DABTimeIntervalFormatter.h 3 | // 4 | // Copyright (c) 2010, David Beck 5 | // All rights reserved. 6 | // 7 | // Redistribution and use in source and binary forms, with or without modification, 8 | // are permitted provided that the following conditions are met: 9 | // 10 | // - Redistributions of source code must retain the above copyright notice, 11 | // this list of conditions and the following disclaimer. 12 | // - Redistributions in binary form must reproduce the above copyright notice, 13 | // this list of conditions and the following disclaimer in the documentation 14 | // and/or other materials provided with the distribution. 15 | // 16 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 20 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 24 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 25 | // OF THE POSSIBILITY OF SUCH DAMAGE. 26 | // 27 | 28 | #import 29 | 30 | #define kSecondsInMinute 60 31 | 32 | @interface DABTimeIntervalFormatter : NSFormatter { 33 | 34 | } 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Frameworks/SimulatorView.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Generated by class-dump 3.3.1 (64 bit). 3 | * 4 | * class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2009 by Steve Nygard. 5 | */ 6 | 7 | #pragma mark Named Structures 8 | 9 | struct GSEllipse { 10 | struct CGPoint center; 11 | float majorRadius; 12 | float minorRadius; 13 | float angle; 14 | }; 15 | 16 | struct _PurpleEventMessage { 17 | struct GSEllipse _field1; 18 | struct { 19 | unsigned int _field1; 20 | unsigned int _field2; 21 | unsigned int _field3; 22 | unsigned int _field4; 23 | unsigned int _field5; 24 | int _field6; 25 | } _field2; 26 | struct { 27 | int _field1; 28 | unsigned int _field2; 29 | struct CGPoint _field3; 30 | struct CGPoint _field4; 31 | unsigned int _field5; 32 | unsigned long long _field6; 33 | void *_field7; 34 | int _field8; 35 | int _field9; 36 | unsigned int _field10; 37 | char *_field11; 38 | } _field3; 39 | }; 40 | 41 | #pragma mark - 42 | 43 | /* 44 | * File: /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator 45 | * Arch: Intel 80x86 (i386) 46 | * 47 | * Objective-C Garbage Collection: Unsupported 48 | */ 49 | 50 | @interface SimulatorView : NSOpenGLView 51 | { 52 | } 53 | 54 | - (id)initWithFrame:(struct _NSRect)arg1; 55 | - (void)dealloc; 56 | - (void)prepareOpenGL; 57 | - (void)drawRect:(struct _NSRect)arg1; 58 | - (BOOL)mouseDownCanMoveWindow; 59 | - (id)bitmapImageRep; 60 | - (void)setMonitorViewController:(id)arg1; 61 | - (void)setNeedsDisplayOnMainThread; 62 | 63 | @end 64 | 65 | -------------------------------------------------------------------------------- /Categories/ImageRect.h: -------------------------------------------------------------------------------- 1 | // 2 | // ImageRect.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | #define NSRectToCGRect(r) CGRectMake(r.origin.x, r.origin.y, r.size.width, r.size.height) 32 | 33 | @interface NSImage (ImageRect) 34 | 35 | - (NSRect)bounds; 36 | 37 | - (void)drawAtPoint:(NSPoint)location 38 | fraction:(CGFloat)opacity; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Categories/ISCArraySections.h: -------------------------------------------------------------------------------- 1 | // 2 | // ISCArraySections.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | 32 | @interface NSArray (ISCArraySections) 33 | 34 | //returns an array of arrays with each sub array having a count of sectionSize 35 | //all items from the original array will be in a sub array in order 36 | - (NSArray *)arrayWithSectionSize:(NSUInteger)sectionSize; 37 | 38 | - (NSArray *)flatten; 39 | 40 | @end 41 | -------------------------------------------------------------------------------- /Classes/ISCAppDelegateDelay.h: -------------------------------------------------------------------------------- 1 | // 2 | // ISCAppDelegateDelay.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | 32 | @interface ISCAppDelegateDelay : NSObject { 33 | id secondDelegate; 34 | 35 | BOOL shouldTerminate; 36 | 37 | BOOL delayedTermination; 38 | } 39 | 40 | @property (nonatomic, readonly) id secondDelegate; 41 | 42 | @property (nonatomic) BOOL shouldTerminate; 43 | 44 | + (ISCAppDelegateDelay *)sharedInstance; 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Classes/DABTimeIntervalFormatter.m: -------------------------------------------------------------------------------- 1 | // 2 | // DABTimeIntervalFormatter.m 3 | // 4 | // Copyright (c) 2010, David Beck 5 | // All rights reserved. 6 | // 7 | // Redistribution and use in source and binary forms, with or without modification, 8 | // are permitted provided that the following conditions are met: 9 | // 10 | // - Redistributions of source code must retain the above copyright notice, 11 | // this list of conditions and the following disclaimer. 12 | // - Redistributions in binary form must reproduce the above copyright notice, 13 | // this list of conditions and the following disclaimer in the documentation 14 | // and/or other materials provided with the distribution. 15 | // 16 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 20 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 24 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 25 | // OF THE POSSIBILITY OF SUCH DAMAGE. 26 | // 27 | 28 | #import "DABTimeIntervalFormatter.h" 29 | 30 | 31 | @implementation DABTimeIntervalFormatter 32 | 33 | 34 | - (NSString *)stringForObjectValue:(NSNumber *)obj 35 | { 36 | //we don't care about microseconds 37 | int timeInterval = [obj intValue]; 38 | 39 | NSString *formattedString = [NSString stringWithFormat:@"%d:%02d", 40 | timeInterval / kSecondsInMinute, 41 | timeInterval % kSecondsInMinute]; 42 | 43 | return formattedString; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Categories/ImageRect.m: -------------------------------------------------------------------------------- 1 | // 2 | // ImageRect.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import "ImageRect.h" 30 | 31 | 32 | @implementation NSImage (ImageRect) 33 | 34 | - (NSRect)bounds 35 | { 36 | NSRect imageRect; 37 | imageRect.origin = NSZeroPoint; 38 | imageRect.size = [self size]; 39 | return imageRect; 40 | } 41 | 42 | - (void)drawAtPoint:(NSPoint)location 43 | fraction:(CGFloat)opacity 44 | { 45 | [self drawAtPoint:location 46 | fromRect:[self bounds] 47 | operation:NSCompositeSourceOver 48 | fraction:opacity]; 49 | } 50 | 51 | @end 52 | -------------------------------------------------------------------------------- /Frameworks/CommonMacros/DebugLog.h: -------------------------------------------------------------------------------- 1 | // 2 | // DebugLog.h 3 | // 4 | // Copyright (c) 2010, David Beck 5 | // All rights reserved. 6 | // 7 | // Redistribution and use in source and binary forms, with or without modification, 8 | // are permitted provided that the following conditions are met: 9 | // 10 | // - Redistributions of source code must retain the above copyright notice, 11 | // this list of conditions and the following disclaimer. 12 | // - Redistributions in binary form must reproduce the above copyright notice, 13 | // this list of conditions and the following disclaimer in the documentation 14 | // and/or other materials provided with the distribution. 15 | // 16 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 20 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 24 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 25 | // OF THE POSSIBILITY OF SUCH DAMAGE. 26 | // 27 | 28 | //DEBUG can be turned on by either #define DEBUG or in the Xcode project setting as a Preprocessor Macro for the debug setting 29 | 30 | #ifdef DEBUG 31 | # ifndef DebugLog 32 | # define DebugLog(...) NSLog(__VA_ARGS__) 33 | # endif 34 | # 35 | # ifndef DebugAssert 36 | # define DebugAssert(...) NSAssert(__VA_ARGS__) 37 | # endif 38 | # 39 | # ifndef DebugAbort 40 | # define DebugAbort() abort() 41 | # endif 42 | #else 43 | # ifndef DebugLog 44 | # define DebugLog(...) 45 | # endif 46 | # 47 | # ifndef DebugAssert 48 | # define DebugAssert(...) 49 | # endif 50 | # 51 | # ifndef DebugAbort 52 | # define DebugAbort() 53 | # endif 54 | #endif -------------------------------------------------------------------------------- /Frameworks/CommonMacros/IsEmpty.h: -------------------------------------------------------------------------------- 1 | // 2 | // IsEmpty.h 3 | // 4 | // Copyright (c) 2010, David Beck 5 | // All rights reserved. 6 | // 7 | // Redistribution and use in source and binary forms, with or without modification, 8 | // are permitted provided that the following conditions are met: 9 | // 10 | // - Redistributions of source code must retain the above copyright notice, 11 | // this list of conditions and the following disclaimer. 12 | // - Redistributions in binary form must reproduce the above copyright notice, 13 | // this list of conditions and the following disclaimer in the documentation 14 | // and/or other materials provided with the distribution. 15 | // 16 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 20 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 24 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 25 | // OF THE POSSIBILITY OF SUCH DAMAGE. 26 | // 27 | 28 | #import 29 | 30 | //http://www.wilshipley.com/blog/2005/10/pimp-my-code-interlude-free-code.html 31 | //published under the "DoNotSueMe" license ( http://www.wilshipley.com/blog/2005/10/pimp-my-code-interlude-free-code.html#c112877373361288553 ) 32 | 33 | static inline BOOL IsEmpty(id thing) { 34 | return thing == nil 35 | || ([thing respondsToSelector:@selector(length)] 36 | && [(NSData *)thing length] == 0) 37 | || ([thing respondsToSelector:@selector(count)] 38 | && [(NSArray *)thing count] == 0); 39 | } 40 | //not a categorie because if the object was nil, you would not be able to call a method 41 | -------------------------------------------------------------------------------- /Classes/ISCDeviceType.h: -------------------------------------------------------------------------------- 1 | // 2 | // ISCDeviceType.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | 32 | @interface ISCDeviceType : NSObject { 33 | CGRect _screenRect; 34 | CGPoint _frameLocation; 35 | 36 | CGSize _videoSize; 37 | 38 | NSImage *_frameImage; 39 | } 40 | 41 | @property (nonatomic, readonly) CGRect screenRect; 42 | @property (nonatomic, readonly) CGPoint frameLocation; 43 | 44 | @property (nonatomic, readonly) CGSize videoSize; 45 | 46 | @property (nonatomic, readonly) NSImage *frameImage; 47 | 48 | + (ISCDeviceType *)iphone; 49 | + (ISCDeviceType *)ipad; 50 | + (ISCDeviceType *)iphoneHD; 51 | 52 | - (id)initWithScreenRect:(CGRect)screenRect frameLocation:(CGPoint)frameLocation videoSize:(CGSize)videoSize frameImage:(NSImage *)frameImage; 53 | 54 | @end 55 | -------------------------------------------------------------------------------- /Frameworks/CommonMacros/CustomProperties.h: -------------------------------------------------------------------------------- 1 | // 2 | // CustomProperties.h 3 | // 4 | // Copyright (c) 2010, David Beck 5 | // All rights reserved. 6 | // 7 | // Redistribution and use in source and binary forms, with or without modification, 8 | // are permitted provided that the following conditions are met: 9 | // 10 | // - Redistributions of source code must retain the above copyright notice, 11 | // this list of conditions and the following disclaimer. 12 | // - Redistributions in binary form must reproduce the above copyright notice, 13 | // this list of conditions and the following disclaimer in the documentation 14 | // and/or other materials provided with the distribution. 15 | // 16 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 17 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 18 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 19 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 20 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 21 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 23 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 24 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 25 | // OF THE POSSIBILITY OF SUCH DAMAGE. 26 | // 27 | 28 | #import 29 | 30 | 31 | id objc_getProperty(id self, SEL _cmd, ptrdiff_t offset, BOOL atomic); 32 | void objc_setProperty(id self, SEL _cmd, ptrdiff_t offset, id newValue, BOOL atomic, BOOL shouldCopy); 33 | void objc_copyStruct(void *dest, const void *src, ptrdiff_t size, BOOL atomic, BOOL hasStrong); 34 | 35 | 36 | #define AtomicRetainedSet(dest, source) \ 37 | objc_setProperty(self, _cmd, (ptrdiff_t)(&dest) - (ptrdiff_t)(self), source, YES, NO) 38 | #define AtomicCopiedSet(dest, source) \ 39 | objc_setProperty(self, _cmd, (ptrdiff_t)(&dest) - (ptrdiff_t)(self), source, YES, YES) 40 | #define AtomicAutoreleasedGet(source) \ 41 | objc_getProperty(self, _cmd, (ptrdiff_t)(&source) - (ptrdiff_t)(self), YES) 42 | #define AtomicStruct(dest, source) \ 43 | objc_copyStruct(&dest, &source, sizeof(__typeof__(source)), YES, NO) 44 | -------------------------------------------------------------------------------- /iPhone Simulator Capture.xcodeproj/xcuserdata/david.xcuserdatad/xcschemes/iPhone Simulator Capture.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 14 | 20 | 21 | 22 | 23 | 24 | 29 | 30 | 31 | 32 | 40 | 42 | 43 | 44 | 45 | 46 | 53 | 54 | 56 | 57 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /Classes/ISCPreferenceController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ISCPreferenceController.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | #define kRowsOnPage 4 32 | #define kAppsOnRow 4 33 | 34 | extern NSString *ISCIconStatePrefPath; 35 | 36 | //used to set preferences for SpringBoard 37 | extern NSString *ISCSBFakeTimeKey; 38 | extern NSString *ISCSBFakeTimeStringKey; 39 | extern NSString *ISCSBFakeCarrierKey; 40 | 41 | extern NSSize ISCPreferencesSizeWithRestart; 42 | 43 | #define kISCPreferencesNibName @"Preferences" 44 | 45 | @interface ISCPreferenceController : NSWindowController { 46 | IBOutlet NSTextField *fakeTimeField; 47 | IBOutlet NSView *restartMessage; 48 | } 49 | 50 | @property (retain) IBOutlet NSTextField *fakeTimeField; 51 | @property (retain) IBOutlet NSView *restartMessage; 52 | 53 | //backed by springboard preferences 54 | @property BOOL shouldUseFakeTime; 55 | @property (retain) NSString *fakeTime; 56 | @property (retain) NSString *fakeCarrier; 57 | 58 | - (NSString *)springboardPreferencePath; 59 | - (NSString *)currentVersion; 60 | - (NSDictionary *)iconState; 61 | - (NSDictionary *)iconState; 62 | - (void)saveIconState:(NSDictionary *)iconState; 63 | 64 | - (IBAction)installFakeApps:(id)sender; 65 | - (IBAction)arrangeFakeApps:(id)sender; 66 | - (IBAction)restart:(id)sender; 67 | 68 | - (void)showRestartNotice; 69 | 70 | @end 71 | -------------------------------------------------------------------------------- /Classes/ISCFrame.h: -------------------------------------------------------------------------------- 1 | // 2 | // ISCFrame.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | //rendering positions 32 | extern const NSPoint ISCScreenLocationWithOverlay; 33 | extern const NSPoint ISCOverlayLoacaionWithPointer; 34 | extern const NSPoint ISCScreenLocationWithPointer; 35 | extern const NSSize ISCFrameWithPointerSize; 36 | 37 | enum ISCFrameOrientation { 38 | ISCFrameOrientationPortrait=1, 39 | ISCFrameOrientationLandscapeLeft=3, 40 | ISCFrameOrientationLandscapeRight=4 41 | }; 42 | 43 | 44 | @interface ISCFrame : NSObject { 45 | NSImage *screenshot; 46 | 47 | BOOL isMouseDown; 48 | NSPoint location; 49 | } 50 | 51 | //we are using a threaded applicationa and 52 | //this object is used extensivly in multiple threads 53 | 54 | @property (retain, readonly) NSImage *screenshot; 55 | 56 | @property (readonly) BOOL isMouseDown; 57 | @property (readonly) NSPoint location; 58 | 59 | + (NSImage *)hoverImage; 60 | + (NSImage *)activeImage; 61 | + (NSImage *)overlay; 62 | + (NSImage *)pointerImageForState:(BOOL)state; 63 | 64 | - (id)initWithScreenshot:(NSImage *)iScreenshot 65 | isMouseDown:(BOOL)iIsMouseDown 66 | location:(NSPoint)iLocation 67 | orientation:(enum ISCFrameOrientation)iOrientation; 68 | 69 | - (NSImage *)renderedImageWithPointer:(BOOL)withPointer overlay:(BOOL)withOverlay background:(NSColor *)backgroundColor; 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /Classes/ISCController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ISCController.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | @class QTMovie; 32 | @class ISCFrame; 33 | @class ISCRecording; 34 | 35 | //the number of seconds in a minute 36 | #define kSecondsInMinute 60 37 | 38 | #define kISCPanelProgressHeight 75.0 39 | #define kISCPanelRecordHeight 103.0 40 | 41 | 42 | @interface ISCController : NSObject { 43 | ISCRecording *recording; 44 | 45 | //the menu that gets added to the app menu 46 | IBOutlet NSMenuItem *menu; 47 | //the label that shows how long the video is 48 | IBOutlet NSTextField *lengthLabel; 49 | //the progress indicator that shows the progress of the rendering 50 | IBOutlet NSProgressIndicator *indicator; 51 | //the window that has the record button. resize it when we save 52 | IBOutlet NSButton *recordButton; 53 | 54 | NSURL *_saveURL; 55 | } 56 | 57 | @property (nonatomic, retain) IBOutlet NSMenuItem *menu; 58 | @property (nonatomic, retain) IBOutlet NSTextField *lengthLabel; 59 | @property (nonatomic, retain) IBOutlet NSProgressIndicator *indicator; 60 | @property (nonatomic, retain) IBOutlet NSButton *recordButton; 61 | 62 | #pragma mark - 63 | #pragma mark Initialization 64 | + (void)load; 65 | + (ISCController *)sharedInstance; 66 | 67 | #pragma mark - 68 | #pragma mark Actions 69 | - (IBAction)startStopRecording:(id)sender; 70 | - (IBAction)saveMovie:(id)sender; 71 | - (void)writeMovie:(QTMovie *)movie toURL:(NSURL *)url; 72 | - (NSURL *)getFileName; 73 | 74 | - (void)showProgressBar:(BOOL)show; 75 | 76 | @end 77 | -------------------------------------------------------------------------------- /Categories/ISCArraySections.m: -------------------------------------------------------------------------------- 1 | // 2 | // ISCArraySections.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import "ISCArraySections.h" 30 | 31 | 32 | @implementation NSArray (ISCArraySections) 33 | 34 | - (NSArray *)arrayWithSectionSize:(NSUInteger)sectionSize 35 | { 36 | //a temporary holder that will eventually be the final array 37 | NSMutableArray *sectionedArray = [NSMutableArray arrayWithCapacity:[self count] / sectionSize]; 38 | //a reference to the current section 39 | NSMutableArray *section = [NSMutableArray arrayWithCapacity:sectionSize]; 40 | //go through each item and put it in a sub array 41 | for (id item in self) { 42 | //when the array is the size of sectionSize (could be ==, >= to be safe) 43 | if ([section count] >= sectionSize) { 44 | //save the current sub array to the final array 45 | [sectionedArray addObject:[NSArray arrayWithArray:section]]; 46 | //create a new one (old will be autoreleased) 47 | section = [NSMutableArray arrayWithCapacity:sectionSize]; 48 | } 49 | //we check the size first so that we don't add an empty array at the end 50 | [section addObject:item]; 51 | } 52 | //make sure to get the last one 53 | [sectionedArray addObject:[section copy]]; 54 | 55 | return [[sectionedArray copy] autorelease]; 56 | } 57 | 58 | - (NSArray *)flatten 59 | { 60 | NSMutableArray *flattenedArray = [NSMutableArray array]; 61 | for (id object in self) { 62 | if ([object isKindOfClass:[NSArray class]]) { 63 | [flattenedArray addObjectsFromArray:object]; 64 | } else { 65 | [flattenedArray addObject:object]; 66 | } 67 | } 68 | return [[flattenedArray copy] autorelease]; 69 | } 70 | 71 | @end 72 | -------------------------------------------------------------------------------- /Classes/ISCAppDelegateDelay.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegateDelay.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import "ISCAppDelegateDelay.h" 30 | #import "SynthesizeSingleton.h" 31 | 32 | 33 | @implementation ISCAppDelegateDelay 34 | 35 | @synthesize secondDelegate; 36 | 37 | @synthesize shouldTerminate; 38 | 39 | - (void)setShouldTerminate:(BOOL)nShouldTerminate 40 | { 41 | shouldTerminate = nShouldTerminate; 42 | 43 | if (delayedTermination && shouldTerminate) { 44 | if ([secondDelegate applicationShouldTerminate:NSApp] != NSTerminateLater) { 45 | [NSApp replyToApplicationShouldTerminate:[secondDelegate applicationShouldTerminate:NSApp]]; 46 | } 47 | } 48 | } 49 | 50 | 51 | //return singleton instance 52 | SYNTHESIZE_SINGLETON_FOR_CLASS(ISCAppDelegateDelay) 53 | 54 | - (id)init 55 | { 56 | self = [super init]; 57 | if (self != nil) { 58 | delayedTermination = NO; 59 | shouldTerminate = YES; 60 | 61 | secondDelegate = [NSApp delegate]; 62 | 63 | [NSApp setDelegate:self]; 64 | } 65 | return self; 66 | } 67 | 68 | - (NSApplicationTerminateReply)applicationShouldTerminate:(NSApplication *)sender 69 | { 70 | if (shouldTerminate) { 71 | return [secondDelegate applicationShouldTerminate:sender]; 72 | } else { 73 | delayedTermination = YES; 74 | 75 | return NSTerminateLater; 76 | } 77 | } 78 | 79 | 80 | //swizzle to the original app delegate 81 | - (BOOL)respondsToSelector:(SEL)aSelector 82 | { 83 | return [super respondsToSelector:aSelector] || [secondDelegate respondsToSelector:aSelector]; 84 | } 85 | 86 | - (id)forwardingTargetForSelector:(SEL)aSelector 87 | { 88 | return secondDelegate; 89 | } 90 | 91 | 92 | @end 93 | -------------------------------------------------------------------------------- /Frameworks/SimulatorBridge.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Generated by class-dump 3.3.1 (64 bit). 3 | * 4 | * class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2009 by Steve Nygard. 5 | */ 6 | 7 | #pragma mark - 8 | 9 | /* 10 | * File: /Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/SimulatorBridge 11 | * Arch: Intel 80x86 (i386) 12 | * 13 | * Objective-C Garbage Collection: Unsupported 14 | */ 15 | 16 | @protocol SimulatorBridge 17 | - (BOOL)installApplication:(in bycopy id)arg1 withPath:(in bycopy id)arg2 installationOptions:(in bycopy id)arg3; 18 | - (BOOL)uninstallApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 19 | - (out bycopy id)lookupInstalledApplicationsWithInstallationOptions:(in bycopy id)arg1; 20 | - (BOOL)archiveExistsForApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 21 | - (BOOL)removeArchiveForApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 22 | - (BOOL)archiveAndUninstallApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 23 | - (BOOL)restoreArchiveForApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 24 | - (unsigned int)launchApplicationWithBundleId:(in bycopy id)arg1 arguments:(in bycopy id)arg2 environment:(in bycopy id)arg3 standardOutPipe:(in bycopy id)arg4 standardErrorPipe:(in bycopy id)arg5 flags:(unsigned int)arg6; 25 | - (BOOL)processIDForDisplayIdentifier:(in bycopy id)arg1 pid:(out int *)arg2; 26 | - (out bycopy id)frontmostApplicationIdentifier; 27 | - (out bycopy id)copyString; 28 | - (void)pasteString:(in bycopy id)arg1; 29 | - (out bycopy id)copyImageData; 30 | - (void)pasteImageData:(in bycopy id)arg1; 31 | - (out bycopy id)copyWebArchiveData; 32 | - (void)pasteWebArchiveData:(in bycopy id)arg1; 33 | @end 34 | 35 | @interface SimulatorBridge : NSObject 36 | { 37 | } 38 | 39 | - (BOOL)installApplication:(in bycopy id)arg1 withPath:(in bycopy id)arg2 installationOptions:(in bycopy id)arg3; 40 | - (BOOL)uninstallApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 41 | - (out bycopy id)lookupInstalledApplicationsWithInstallationOptions:(in bycopy id)arg1; 42 | - (BOOL)archiveExistsForApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 43 | - (BOOL)removeArchiveForApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 44 | - (BOOL)archiveAndUninstallApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 45 | - (BOOL)restoreArchiveForApplication:(in bycopy id)arg1 installationOptions:(in bycopy id)arg2; 46 | - (unsigned int)launchApplicationWithBundleId:(in bycopy id)arg1 arguments:(in bycopy id)arg2 environment:(in bycopy id)arg3 standardOutPipe:(in bycopy id)arg4 standardErrorPipe:(in bycopy id)arg5 flags:(unsigned int)arg6; 47 | - (BOOL)processIDForDisplayIdentifier:(in bycopy id)arg1 pid:(out int *)arg2; 48 | - (out bycopy id)frontmostApplicationIdentifier; 49 | - (out bycopy id)copyString; 50 | - (void)pasteString:(in bycopy id)arg1; 51 | - (out bycopy id)copyImageData; 52 | - (void)pasteImageData:(in bycopy id)arg1; 53 | - (out bycopy id)copyWebArchiveData; 54 | - (void)pasteWebArchiveData:(in bycopy id)arg1; 55 | 56 | @end 57 | 58 | -------------------------------------------------------------------------------- /Classes/ISCDeviceType.m: -------------------------------------------------------------------------------- 1 | // 2 | // ISCDeviceType.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import "ISCDeviceType.h" 30 | 31 | 32 | @implementation ISCDeviceType 33 | 34 | @synthesize screenRect=_screenRect; 35 | @synthesize frameLocation=_frameLocation; 36 | 37 | @synthesize videoSize=_videoSize; 38 | 39 | @synthesize frameImage=_frameImage; 40 | 41 | 42 | + (ISCDeviceType *)iphone 43 | { 44 | static ISCDeviceType *iphone; 45 | @synchronized (self) { 46 | if (iphone == nil) { 47 | iphone = [[ISCDeviceType alloc] init]; 48 | } 49 | } 50 | return iphone; 51 | } 52 | 53 | + (ISCDeviceType *)ipad 54 | { 55 | static ISCDeviceType *ipad; 56 | @synchronized (self) { 57 | if (ipad == nil) { 58 | ipad = [[ISCDeviceType alloc] init]; 59 | } 60 | } 61 | return ipad; 62 | } 63 | 64 | + (ISCDeviceType *)iphoneHD 65 | { 66 | static ISCDeviceType *iphoneHD; 67 | @synchronized (self) { 68 | if (iphoneHD == nil) { 69 | iphoneHD = [[ISCDeviceType alloc] init]; 70 | } 71 | } 72 | return iphoneHD; 73 | } 74 | 75 | - (id)initWithScreenRect:(CGRect)screenRect frameLocation:(CGPoint)frameLocation videoSize:(CGSize)videoSize frameImage:(NSImage *)frameImage 76 | { 77 | self = [super init]; 78 | if (self != nil) { 79 | _screenRect = screenRect; 80 | _frameLocation = frameLocation; 81 | _videoSize = videoSize; 82 | _frameImage = [frameImage retain]; 83 | } 84 | return self; 85 | } 86 | 87 | - (id)retain 88 | { 89 | return self; 90 | } 91 | 92 | - (NSUInteger)retainCount 93 | { 94 | return NSUIntegerMax; 95 | } 96 | 97 | - (oneway void)release 98 | { 99 | } 100 | 101 | - (id)autorelease 102 | { 103 | return self; 104 | } 105 | 106 | @end 107 | -------------------------------------------------------------------------------- /Classes/ISCRecording.h: -------------------------------------------------------------------------------- 1 | // 2 | // ISCRecording.h 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import 30 | 31 | 32 | @class QTMovie; 33 | 34 | //the frames in a second to record and render the movie 35 | #define kFramesPerSecond 20.0 36 | //the length of time, in seconds, for a frame 37 | #define kFrameRate 1.0/kFramesPerSecond 38 | //the value from [NSEvent pressedMouseButtons] when the left mouse button is down 39 | #define kLeftMouseDown 1 << 0 40 | 41 | //preference keys 42 | extern NSString *ISCRecordPointerKey; 43 | extern NSString *ISCShowFrameKey; 44 | extern NSString *ISCBackgroundColorKey; 45 | 46 | @interface ISCRecording : NSObject { 47 | id delegate; 48 | 49 | //the timer that fires every kFrameRate to record the frame 50 | NSTimer *captureTimer; 51 | 52 | //the time when we start recording. used to calculate time since 53 | NSDate *startTime; 54 | NSTimeInterval _length; 55 | 56 | QTMovie *_movie; 57 | 58 | NSOperationQueue *_renderQueue; 59 | 60 | NSColor *_backgroundColor; 61 | BOOL _withPointer; 62 | BOOL _withFrame; 63 | 64 | double _lastProgress; 65 | } 66 | @property (assign) id delegate; 67 | 68 | @property (readonly) NSTimeInterval length; 69 | @property BOOL isRecording; 70 | @property (readonly) QTMovie *movie; 71 | @property (nonatomic, readonly) NSColor *backgroundColor; 72 | 73 | - (id)initWithDelegate:(id)iDelegate; 74 | 75 | - (void)start; 76 | - (void)stop; 77 | 78 | - (void)recordFrame; 79 | 80 | - (void)addFrameToMovie:(NSImage *)image withColor:(NSColor *)color; 81 | 82 | @end 83 | 84 | 85 | //delegate declaration 86 | @interface NSObject (ISCRecordingDelegate) 87 | //optional methods 88 | - (void)ISCRecording:(ISCRecording *)recording renderingProgress:(double)progress; 89 | - (void)ISCRecordingDidFinishRendering:(ISCRecording *)recording; 90 | - (void)ISCRecordingLengthChanged:(ISCRecording *)recording; 91 | 92 | //required methods 93 | @end 94 | -------------------------------------------------------------------------------- /Frameworks/MonitorController.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @class PreferencesController; 4 | @class MonitorWindow; 5 | @class SimulatorFrameView; 6 | @class SimulatorHomeView; 7 | @class SimulatorGlassView; 8 | @class SimulatorGlassWindow; 9 | @class MonitorViewController; 10 | @class ProcessControl; 11 | 12 | @interface MonitorController : NSObject 13 | { 14 | NSPanel *prefsWindow; 15 | PreferencesController *_preferencesController; 16 | NSMenu *devicesMenu; 17 | NSMenu *versionsMenu; 18 | MonitorWindow *_monitorWindow; 19 | NSMenuItem *_ringerMenuItem; 20 | SimulatorFrameView *_simulatorBox; 21 | SimulatorView *_simulatorView; 22 | SimulatorHomeView *_homeView; 23 | SimulatorGlassView *_glassView; 24 | SimulatorGlassWindow *_glassWindow; 25 | float _rotation; 26 | float _uiRotation; 27 | struct CGAffineTransform _transform; 28 | BOOL _inRotation; 29 | MonitorViewController *_monitorViewController; 30 | NSConditionLock *eventForwardingLock; 31 | ProcessControl *_simulatedProcess; 32 | NSAppleScript *_showProgrammingGuideScript; 33 | struct _NSPoint _startingSimulatorViewInset; 34 | BOOL _useLegacyEventStructSize; 35 | BOOL _demoMode; 36 | BOOL _enableMirrorScreens; 37 | BOOL _mirrorOnly; 38 | BOOL _mirrorScreenConnected; 39 | BOOL _mirrorScreenEvents; 40 | NSWindow *_mirrorWindow; 41 | SimulatorView *_mirrorView; 42 | struct CGAffineTransform _mirrorTransform; 43 | BOOL _mirrorNeedsRotation; 44 | } 45 | 46 | + (id)sharedInstance; 47 | + (void)setStartingURL:(char *)arg1; 48 | - (void)openURLInMobileSafari:(id)arg1; 49 | - (struct CGAffineTransform)transform; 50 | - (id)monitorWindow; 51 | - (id)simulatorBox; 52 | - (id)simulatorView; 53 | - (id)glassView; 54 | - (id)mirrorView; 55 | - (BOOL)mirrorNeedsRotation; 56 | - (struct CGAffineTransform)mirrorTransform; 57 | - (void)setUseLegacyEventStructSize:(BOOL)arg1; 58 | - (void)simulatorAlreadyRunningSheetDidEnd:(id)arg1 returnCode:(int)arg2 contextInfo:(void *)arg3; 59 | - (void)awakeFromNib; 60 | - (void)establishConnection:(id)arg1; 61 | - (BOOL)applicationShouldHandleReopen:(id)arg1 hasVisibleWindows:(BOOL)arg2; 62 | - (unsigned int)applicationShouldTerminate:(id)arg1; 63 | - (void)application:(id)arg1 openFiles:(id)arg2; 64 | - (void)dealloc; 65 | - (void)showPrefs:(id)arg1; 66 | - (void)resetContent:(id)arg1; 67 | - (void)resetContentSheetDidEnd:(id)arg1 returnCode:(int)arg2 contextInfo:(void *)arg3; 68 | - (BOOL)validateMenuItem:(id)arg1; 69 | - (float)rotation; 70 | - (void)setRotation:(float)arg1; 71 | - (int)orientationFromRadians:(float)arg1; 72 | - (int)orientation; 73 | - (int)uiOrientation; 74 | - (void)copy:(id)arg1; 75 | - (void)paste:(id)arg1; 76 | - (void)copyScreen:(id)arg1; 77 | - (void)toggleRotationLeft:(id)arg1; 78 | - (void)toggleRotationRight:(id)arg1; 79 | - (void)animateToRotation:(id)arg1; 80 | - (void)simulateDevice:(id)arg1; 81 | - (void)simulateVersion:(id)arg1; 82 | - (void)homeButtonDown:(id)arg1; 83 | - (void)homeButtonUp:(id)arg1; 84 | - (void)homeButtonPressed:(id)arg1; 85 | - (void)lockButtonPressed:(id)arg1; 86 | - (void)shakeDevice:(id)arg1; 87 | - (void)volumeUpPressed:(id)arg1; 88 | - (void)volumeDownPressed:(id)arg1; 89 | - (void)toggleRingerSwitch:(id)arg1; 90 | - (void)simulateMemoryWarning:(id)arg1; 91 | - (void)toggleInCallStatusBar:(id)arg1; 92 | - (void)toggleDemoMode:(id)arg1; 93 | - (void)showProgrammingGuide:(id)arg1; 94 | - (void)forwardEvents; 95 | - (void)sendPreferencesChangedEvent; 96 | - (void)sendClearCache; 97 | - (void)sendClearHistory; 98 | - (void)sendOpenURLEvent:(id)arg1; 99 | - (void)sendDeviceEvent:(struct _PurpleEventMessage *)arg1; 100 | 101 | @end 102 | 103 | -------------------------------------------------------------------------------- /Installer/Installer.pmdoc/index.xml: -------------------------------------------------------------------------------- 1 | iPhone Simulator Capture/Users/david/Desktop/iPhone Simulator Capture.pkgcom.davidbeckThis plugin requires Mac OS X 10.6 or above.com.apple.iphonesimulatoriPhone Simulator01iphone.xmlproperties.titlepreinstallActions.actions -------------------------------------------------------------------------------- /Classes/ISCFrame.m: -------------------------------------------------------------------------------- 1 | // 2 | // ISCFrame.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import "ISCFrame.h" 30 | 31 | #import "ImageRect.h" 32 | 33 | const NSPoint ISCScreenLocationWithOverlay = {.x = (CGFloat)28.0, .y = (CGFloat)218.0}; 34 | const NSPoint ISCOverlayLoacaionWithPointer = {.x = (CGFloat)187.0, .y = (CGFloat)76.0}; 35 | const NSPoint ISCScreenLocationWithPointer = {.x = (CGFloat)215.0, .y = (CGFloat)294.0}; 36 | const NSSize ISCFrameWithPointerSize = {.width = (CGFloat)750.0, .height = (CGFloat)1000.0}; 37 | 38 | 39 | @implementation ISCFrame 40 | 41 | @synthesize screenshot; 42 | @synthesize isMouseDown; 43 | @synthesize location; 44 | 45 | - (void)dealloc 46 | { 47 | [screenshot release]; 48 | 49 | [super dealloc]; 50 | } 51 | 52 | + (NSImage *)hoverImage 53 | { 54 | static NSImage *hoverImage = nil; 55 | if (hoverImage == nil) { 56 | //get the url for the hover image from our bundle (not main bundle) 57 | NSURL *hoverURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"Hover" withExtension:@"png"]; 58 | 59 | hoverImage = [[NSImage alloc] initWithContentsOfURL:hoverURL]; 60 | } 61 | return hoverImage; 62 | } 63 | 64 | + (NSImage *)activeImage 65 | { 66 | static NSImage *activeImage = nil; 67 | if (activeImage == nil) { 68 | //get the url for the hover image from our bundle (not main bundle) 69 | NSURL *activeURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"Active" withExtension:@"png"]; 70 | 71 | activeImage = [[NSImage alloc] initWithContentsOfURL:activeURL]; 72 | } 73 | return activeImage; 74 | } 75 | 76 | + (NSImage *)overlay 77 | { 78 | static NSImage *overlay = nil; 79 | if (overlay == nil) { 80 | //get the url for the hover image from our bundle (not main bundle) 81 | NSURL *overlayURL = [[NSBundle bundleForClass:[self class]] URLForResource:@"Overlay" withExtension:@"png"]; 82 | 83 | overlay = [[NSImage alloc] initWithContentsOfURL:overlayURL]; 84 | } 85 | return overlay; 86 | } 87 | 88 | + (NSImage *)pointerImageForState:(BOOL)state 89 | { 90 | if (state) { 91 | return [ISCFrame activeImage]; 92 | } else { 93 | return [ISCFrame hoverImage]; 94 | } 95 | } 96 | 97 | 98 | - (id)initWithScreenshot:(NSImage *)iScreenshot 99 | isMouseDown:(BOOL)iIsMouseDown 100 | location:(NSPoint)iLocation 101 | orientation:(enum ISCFrameOrientation)orientation 102 | { 103 | self = [super init]; 104 | if (self != nil) { 105 | screenshot = iScreenshot; 106 | [screenshot retain]; 107 | [screenshot setCacheMode:NSImageCacheNever]; 108 | 109 | isMouseDown = iIsMouseDown; 110 | 111 | location = iLocation; 112 | if (orientation == ISCFrameOrientationLandscapeLeft) { 113 | location.x = iLocation.y; 114 | location.y = [screenshot size].height - iLocation.x; 115 | } else if (orientation == ISCFrameOrientationLandscapeRight) { 116 | location.x = [screenshot size].width - iLocation.y; 117 | location.y = iLocation.x; 118 | } 119 | } 120 | return self; 121 | } 122 | 123 | 124 | - (NSImage *)renderedImageWithPointer:(BOOL)withPointer overlay:(BOOL)withOverlay background:(NSColor *)backgroundColor 125 | { 126 | NSSize frameSize = [screenshot size]; 127 | NSPoint screenPoint = NSZeroPoint; 128 | NSPoint frameLocation = NSZeroPoint; 129 | NSImage *mouseImage; 130 | 131 | //check largest to smalles size 132 | if (withPointer && withOverlay) { 133 | //even if withFrame was yes we would use this because it is the bigger of the two 134 | frameSize = ISCFrameWithPointerSize; 135 | 136 | screenPoint = ISCScreenLocationWithPointer; 137 | 138 | frameLocation = ISCOverlayLoacaionWithPointer; 139 | 140 | //get the hover or active image 141 | mouseImage = [ISCFrame pointerImageForState:isMouseDown]; 142 | } else if (withPointer) { 143 | //screenPoint = ISCScreenLocationWithPointer; 144 | mouseImage = [ISCFrame pointerImageForState:isMouseDown]; 145 | } else if (withOverlay) { 146 | frameSize = [[ISCFrame overlay] size]; 147 | 148 | screenPoint = ISCScreenLocationWithOverlay; 149 | 150 | frameLocation = NSZeroPoint; 151 | } 152 | 153 | //the image that we are going to draw everything into 154 | NSImage *frameImage = [[NSImage alloc] initWithSize:frameSize]; 155 | 156 | [frameImage lockFocus]; 157 | 158 | [backgroundColor set]; 159 | [NSBezierPath fillRect:[frameImage bounds]]; 160 | 161 | if (withOverlay) { 162 | //draw the iPhone frame on top (glare needs to be on top) 163 | [[ISCFrame overlay] drawAtPoint:frameLocation fraction:1.0]; 164 | } 165 | 166 | //draw the actual screen shot in the center of the screen 167 | [screenshot drawAtPoint:screenPoint fraction:1.0]; 168 | 169 | if (withPointer) { 170 | NSPoint centerLocation = location; 171 | 172 | centerLocation.x += screenPoint.x - [mouseImage size].width / 2.0; 173 | centerLocation.y += screenPoint.y - [mouseImage size].height / 2.0; 174 | 175 | //NSLog(@"pointer: %@", NSStringFromPoint(centerLocation)); 176 | 177 | //draw the pointer ofset to center 178 | [mouseImage drawAtPoint:centerLocation fraction:0.8]; 179 | } 180 | 181 | [frameImage unlockFocus]; 182 | 183 | return [frameImage autorelease]; 184 | } 185 | 186 | @end 187 | -------------------------------------------------------------------------------- /Classes/ISCController.m: -------------------------------------------------------------------------------- 1 | // 2 | // CaptureController.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | 30 | #import "ISCController.h" 31 | #import "SynthesizeSingleton.h" 32 | 33 | #import "iPhone Simulator.h" 34 | 35 | #import 36 | 37 | #import "ImageRect.h" 38 | #import "ISCFrame.h" 39 | #import "ISCRecording.h" 40 | #import "ISCAppDelegateDelay.h" 41 | 42 | @implementation ISCController 43 | 44 | @synthesize menu, lengthLabel, indicator, recordButton; 45 | 46 | 47 | #pragma mark - 48 | #pragma mark Memory Management 49 | - (void)dealloc 50 | { 51 | self.menu = nil; 52 | self.lengthLabel = nil; 53 | self.indicator = nil; 54 | 55 | [super dealloc]; 56 | } 57 | 58 | #pragma mark - 59 | #pragma mark Initialization 60 | 61 | + (void)initialize 62 | { 63 | NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 64 | 65 | NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys: 66 | [NSNumber numberWithBool:NO], @"ISCRecordWindowVisible", 67 | nil]; 68 | 69 | [defaults registerDefaults:appDefaults]; 70 | } 71 | 72 | - (id)init 73 | { 74 | self = [super init]; 75 | if (self != nil) { 76 | //load in our menu and window 77 | [NSBundle loadNibNamed:@"PluginController" owner:self]; 78 | 79 | //add our menu to the application menu 80 | //place it right before teh window and help menu 81 | [[NSApp mainMenu] insertItem:menu atIndex:[[NSApp mainMenu] numberOfItems] - 2]; 82 | 83 | [lengthLabel setDoubleValue:[recording length]]; 84 | 85 | 86 | //ProcessControl *processControl = [[NSApp delegate] valueForKey:@"_simulatedProcess"]; 87 | 88 | //NSLog(@"process: %@", [processControl applicationSupportDirectory]); 89 | 90 | //NSLog(@"homeDirectory: %@", [[ProcessControl sharedInstance] simulatedHomeDirectory]); 91 | } 92 | return self; 93 | } 94 | 95 | //A special method called by SIMBL once the application has started and all classes are initialized. 96 | + (void)load 97 | { 98 | //force creation of shared object 99 | [ISCController sharedInstance]; 100 | } 101 | 102 | //return the single static instance of the plugin object 103 | SYNTHESIZE_SINGLETON_FOR_CLASS(ISCController) 104 | 105 | 106 | #pragma mark - 107 | #pragma mark ISCRecording Delegate Methods 108 | - (void)ISCRecording:(ISCRecording *)rec renderingProgress:(double)progress 109 | { 110 | [indicator setDoubleValue:progress]; 111 | } 112 | 113 | - (void)ISCRecordingDidFinishRendering:(ISCRecording *)rec 114 | { 115 | [self writeMovie:[rec movie] toURL:_saveURL]; 116 | [_saveURL release]; 117 | _saveURL = nil; 118 | 119 | [self showProgressBar:NO]; 120 | } 121 | 122 | - (void)ISCRecordingLengthChanged:(ISCRecording *)rec 123 | { 124 | [lengthLabel setDoubleValue:[rec length]]; 125 | } 126 | 127 | 128 | #pragma mark - 129 | #pragma mark Actions 130 | 131 | //either start or stops the recording based on the new state of the sender 132 | - (IBAction)startStopRecording:(id)sender 133 | { 134 | if ([sender state] == NSOnState) { 135 | [recording release]; 136 | recording = [[ISCRecording alloc] initWithDelegate:self]; 137 | [recording start]; 138 | } else { 139 | [recording stop]; 140 | } 141 | } 142 | 143 | //stops recording if still recording 144 | //saves composites image data into video and saves it 145 | - (IBAction)saveMovie:(id)sender 146 | { 147 | [recording stop]; 148 | 149 | //get the filename from the user 150 | NSURL *filename = [self getFileName]; 151 | 152 | //nil means they canceled save 153 | if(filename != nil) { 154 | if ([recording movie] == nil) { 155 | NSLog(@"movie nil"); 156 | [self showProgressBar:YES]; 157 | 158 | _saveURL = [filename retain]; 159 | } else { 160 | [self writeMovie:[recording movie] toURL:filename]; 161 | } 162 | } 163 | } 164 | 165 | - (void)writeMovie:(QTMovie *)movie toURL:(NSURL *)url 166 | { 167 | [movie writeToFile:[url path] 168 | withAttributes:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] 169 | forKey:QTMovieFlatten] 170 | error:nil]; 171 | } 172 | 173 | //ask the user for a filename 174 | //returns nil if the user cancels 175 | - (NSURL *)getFileName 176 | { 177 | NSSavePanel *savePanel; 178 | 179 | savePanel = [NSSavePanel savePanel]; 180 | [savePanel setExtensionHidden:YES]; 181 | [savePanel setCanSelectHiddenExtension:NO]; 182 | [savePanel setTreatsFilePackagesAsDirectories:NO]; 183 | 184 | //if the user doesn't cancel the save, return the filename they selected 185 | if ([savePanel runModal] == NSOKButton) { 186 | return [savePanel URL]; 187 | } 188 | //return nil if the user canceled the save 189 | return nil; 190 | } 191 | 192 | - (void)showProgressBar:(BOOL)show 193 | { 194 | if (show) { 195 | [indicator setDoubleValue:0.0]; 196 | [[indicator window] makeKeyAndOrderFront:self]; 197 | } 198 | 199 | NSRect frame = [[indicator window] frame]; 200 | 201 | CGFloat newHeight; 202 | if (show) { 203 | newHeight = kISCPanelProgressHeight; 204 | } else { 205 | newHeight = kISCPanelRecordHeight; 206 | } 207 | 208 | frame.origin.y += frame.size.height - newHeight; 209 | frame.size.height = newHeight; 210 | 211 | [NSAnimationContext beginGrouping]; 212 | 213 | [[indicator animator] setHidden:!show]; 214 | 215 | [[recordButton animator] setHidden:show]; 216 | [[lengthLabel animator] setHidden:show]; 217 | 218 | [[[indicator window] animator] setFrame:frame display:YES]; 219 | 220 | [NSAnimationContext endGrouping]; 221 | 222 | if (show) { 223 | [indicator startAnimation:nil]; 224 | } else { 225 | [indicator stopAnimation:nil]; 226 | } 227 | } 228 | 229 | @end 230 | -------------------------------------------------------------------------------- /Classes/ISCRecording.m: -------------------------------------------------------------------------------- 1 | // 2 | // ISCRecording.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import "ISCRecording.h" 30 | 31 | #import 32 | #import 33 | 34 | #import "ISCFrame.h" 35 | #import "ISCAppDelegateDelay.h" 36 | 37 | #import "iPhone Simulator.h" 38 | 39 | NSString *ISCRecordPointerKey = @"ISCRecordPointer"; 40 | NSString *ISCShowFrameKey = @"ISCShowFrame"; 41 | NSString *ISCBackgroundColorKey = @"ISCBackgroundColor"; 42 | 43 | 44 | @interface ISCRecording () 45 | 46 | - (void)_didFinsihRendering; 47 | 48 | @end 49 | 50 | 51 | @implementation ISCRecording 52 | 53 | @synthesize delegate; 54 | @synthesize length=_length; 55 | @synthesize movie=_movie; 56 | 57 | - (void)dealloc 58 | { 59 | [_movie release]; 60 | [startTime release]; 61 | [_backgroundColor release]; 62 | 63 | [captureTimer invalidate]; 64 | 65 | [super dealloc]; 66 | } 67 | 68 | 69 | #pragma mark - 70 | #pragma mark Initialization 71 | - (id)initWithDelegate:(id)iDelegate 72 | { 73 | self = [super init]; 74 | if (self != nil) { 75 | delegate = iDelegate; 76 | 77 | _renderQueue = [[NSOperationQueue alloc] init]; 78 | _renderQueue.maxConcurrentOperationCount = 1; 79 | } 80 | return self; 81 | } 82 | 83 | 84 | #pragma mark - 85 | #pragma mark Accessors 86 | //length 87 | - (NSTimeInterval)length 88 | { 89 | if (startTime == nil) { 90 | return _length; 91 | } 92 | 93 | return [[NSDate date] timeIntervalSinceDate:startTime]; 94 | } 95 | 96 | //recording 97 | - (BOOL)isRecording 98 | { 99 | return captureTimer != nil; 100 | } 101 | 102 | - (void)setIsRecording:(BOOL)nIsRecording 103 | { 104 | if (nIsRecording && captureTimer == nil) { 105 | [self start]; 106 | } else if (!nIsRecording && captureTimer != nil) { 107 | [self stop]; 108 | } 109 | } 110 | 111 | //movie 112 | - (QTMovie *)movie 113 | { 114 | //only return the movie if it is finished rendering 115 | if ([_renderQueue operationCount] > 1) {//the last operation is the finished operation 116 | return nil; 117 | } 118 | return _movie; 119 | } 120 | 121 | - (NSColor *)backgroundColor 122 | { 123 | NSData *colorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"ISCBackgroundColor"]; 124 | NSColor *backgroundColor = nil; 125 | if ([colorData length] > 0) { 126 | backgroundColor = (NSColor *)[NSUnarchiver unarchiveObjectWithData:colorData]; 127 | } else { 128 | backgroundColor = [NSColor blackColor]; 129 | } 130 | return backgroundColor; 131 | } 132 | 133 | 134 | #pragma mark - 135 | #pragma mark Recording Commands 136 | - (void)start 137 | { 138 | startTime = [[NSDate alloc] init]; 139 | 140 | _withPointer = [[[NSUserDefaults standardUserDefaults] objectForKey:ISCRecordPointerKey] boolValue]; 141 | _withFrame = [[[NSUserDefaults standardUserDefaults] objectForKey:ISCShowFrameKey] boolValue]; 142 | _backgroundColor = [[self backgroundColor] retain]; 143 | 144 | _movie = [[QTMovie alloc] initToWritableData:[NSMutableData data] error:nil]; 145 | [_movie setAttribute:[NSNumber numberWithLong:20] forKey:QTMovieTimeScaleAttribute]; 146 | [_movie detachFromCurrentThread]; 147 | 148 | [_renderQueue cancelAllOperations]; 149 | 150 | //capture the view/cursor every frame 151 | captureTimer = [NSTimer timerWithTimeInterval:kFrameRate target:self selector:@selector(recordFrame) userInfo:nil repeats:YES]; 152 | // This should allow the time to continue to update, even when I've chosen a menu item: 153 | [[NSRunLoop currentRunLoop] addTimer:captureTimer forMode:NSRunLoopCommonModes]; 154 | } 155 | 156 | - (void)stop 157 | { 158 | if (captureTimer != nil) { 159 | //stop captureing frames 160 | [captureTimer invalidate]; 161 | captureTimer = nil; 162 | 163 | _length = [[NSDate date] timeIntervalSinceDate:startTime]; 164 | //free starting time 165 | [startTime release]; 166 | startTime = nil; 167 | 168 | [_renderQueue addOperationWithBlock:^{ 169 | [self _didFinsihRendering]; 170 | NSLog(@"movie: %@", _movie); 171 | }]; 172 | } 173 | } 174 | 175 | 176 | #pragma mark - 177 | #pragma mark Recording 178 | 179 | - (void)recordFrame 180 | { 181 | //the window of the simulator 182 | NSWindow *simulatorWindow = [[NSApp delegate] monitorWindow]; 183 | //the view that shows the simulated screenshot 184 | //SimulatorView *simulatorView = [[[simulatorWindow contentView] subviews] objectAtIndex:1]; 185 | SimulatorView *simulatorView = [[NSApp delegate] simulatorView]; 186 | 187 | MonitorViewController *monitorViewController = nil; 188 | object_getInstanceVariable(simulatorView, "_monitorViewController", (void **)&monitorViewController); 189 | 190 | //get the mouse location from the window and convert it to the views cordinate system 191 | NSPoint locationInView = [simulatorView convertPoint:[simulatorWindow mouseLocationOutsideOfEventStream] fromView:nil]; 192 | 193 | NSImage *screenshot = [[NSImage alloc] initWithData:[[monitorViewController bitmapImageRep] TIFFRepresentation]]; 194 | 195 | ISCFrame *frame = [[ISCFrame alloc] initWithScreenshot:screenshot 196 | isMouseDown:[NSEvent pressedMouseButtons] == kLeftMouseDown 197 | location:locationInView 198 | orientation:[(MonitorController *)[NSApp delegate] orientation]]; 199 | 200 | [_renderQueue addOperationWithBlock:^{ 201 | [_movie attachToCurrentThread]; 202 | 203 | NSImage *frameImage = [frame renderedImageWithPointer:_withPointer overlay:_withFrame background:_backgroundColor]; 204 | [self addFrameToMovie:frameImage withColor:[self backgroundColor]]; 205 | 206 | [self performSelectorOnMainThread:@selector(updateRenderingProgress) withObject:nil waitUntilDone:NO]; 207 | 208 | [_movie detachFromCurrentThread]; 209 | }]; 210 | 211 | [frame release]; 212 | [screenshot release]; 213 | 214 | if ([delegate respondsToSelector:@selector(ISCRecordingLengthChanged:)]) { 215 | [delegate ISCRecordingLengthChanged:self]; 216 | } 217 | } 218 | 219 | - (void)addFrameToMovie:(NSImage *)image withColor:(NSColor *)color 220 | { 221 | QTTime time = QTMakeTime(1, kFramesPerSecond); 222 | NSDictionary *attrs; 223 | if ([color alphaComponent] < 1.0) { 224 | //by using png, the video will have transparency 225 | attrs = [[NSDictionary alloc] initWithObjectsAndKeys: 226 | @"png ", QTAddImageCodecType, 227 | [NSNumber numberWithLong:codecHighQuality], QTAddImageCodecQuality, 228 | nil]; 229 | } else { 230 | //mp4v is much faster 231 | attrs = [[NSDictionary alloc] initWithObjectsAndKeys: 232 | @"mp4v", QTAddImageCodecType, 233 | [NSNumber numberWithLong:codecHighQuality], QTAddImageCodecQuality, 234 | nil]; 235 | } 236 | 237 | [_movie addImage:image forDuration:time withAttributes:attrs]; 238 | [attrs release]; 239 | } 240 | 241 | #pragma mark - Delegate Messages 242 | 243 | - (void)updateRenderingProgress 244 | { 245 | //minus 1 for the current operation and minus 1 for the finished operation 246 | double progress = (double)[_movie duration].timeValue / (double)([_movie duration].timeValue + [_renderQueue operationCount] - 2); 247 | if (progress - _lastProgress > 0.005) { 248 | _lastProgress = progress; 249 | 250 | if ([delegate respondsToSelector:@selector(ISCRecording:renderingProgress:)]) { 251 | [delegate ISCRecording:self renderingProgress:progress]; 252 | } 253 | 254 | NSLog(@"progress: %f", progress * 100.0); 255 | } 256 | } 257 | 258 | - (void)_didFinsihRendering 259 | { 260 | NSLog(@"didFinsihRendering"); 261 | if ([delegate respondsToSelector:@selector(ISCRecordingDidFinishRendering:)]) { 262 | [delegate performSelectorOnMainThread:@selector(ISCRecordingDidFinishRendering:) withObject:self waitUntilDone:YES]; 263 | } 264 | } 265 | 266 | @end 267 | -------------------------------------------------------------------------------- /Classes/ISCPreferenceController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ISCPreferenceController.m 3 | // iPhone Simulator Capture 4 | // 5 | // Copyright (c) 2010, David Beck 6 | // All rights reserved. 7 | // 8 | // Redistribution and use in source and binary forms, with or without modification, 9 | // are permitted provided that the following conditions are met: 10 | // 11 | // - Redistributions of source code must retain the above copyright notice, 12 | // this list of conditions and the following disclaimer. 13 | // - Redistributions in binary form must reproduce the above copyright notice, 14 | // this list of conditions and the following disclaimer in the documentation 15 | // and/or other materials provided with the distribution. 16 | // 17 | // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 18 | // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 19 | // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 | // IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 21 | // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22 | // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 | // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 24 | // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 25 | // OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 26 | // OF THE POSSIBILITY OF SUCH DAMAGE. 27 | // 28 | 29 | #import "ISCPreferenceController.h" 30 | 31 | #import "iPhone Simulator.h" 32 | #import "ISCArraySections.h" 33 | #import "ISCRecording.h" 34 | 35 | NSString *ISCIconStatePrefPath = @"~/Library/Application Support/iPhone Simulator/Library/SpringBoard/IconState.plist"; 36 | 37 | NSString *ISCSBFakeTimeKey = @"SBFakeTime"; 38 | NSString *ISCSBFakeTimeStringKey = @"SBFakeTimeString"; 39 | NSString *ISCSBFakeCarrierKey = @"SBFakeCarrier"; 40 | 41 | NSSize ISCPreferencesSizeWithRestart = {.width=(CGFloat)470.0, .height=(CGFloat)258.0}; 42 | 43 | @implementation ISCPreferenceController 44 | 45 | @synthesize fakeTimeField; 46 | @synthesize restartMessage; 47 | 48 | - (id)init 49 | { 50 | self = [super initWithWindowNibName:kISCPreferencesNibName]; 51 | if (self != nil) { 52 | [[NSColorPanel sharedColorPanel] setShowsAlpha:YES]; 53 | } 54 | return self; 55 | } 56 | 57 | - (void)initialize 58 | { 59 | NSMutableDictionary *defaultValues = [NSMutableDictionary dictionary]; 60 | 61 | NSData *backgroundData = [NSKeyedArchiver archivedDataWithRootObject:[NSColor blackColor]]; 62 | 63 | [defaultValues setObject:backgroundData forKey:ISCBackgroundColorKey]; 64 | 65 | [[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues]; 66 | } 67 | 68 | //expand the constant at runtime to the users preference path 69 | - (NSString *)springboardPreferencePath 70 | { 71 | NSString *userPreferencePath = [[[NSApp delegate] valueForKey:@"_simulatedProcess"] simulatedHomeDirectory]; 72 | userPreferencePath = [userPreferencePath stringByAppendingString:@"/Library/Preferences/com.apple.springboard.plist"]; 73 | return userPreferencePath; 74 | } 75 | 76 | - (NSString *)currentVersion 77 | { 78 | NSString *userPreferencePath = [[[NSApp delegate] valueForKey:@"_simulatedProcess"] simulatedHomeDirectory]; 79 | return [userPreferencePath lastPathComponent]; 80 | } 81 | 82 | - (NSDictionary *)iconState 83 | { 84 | NSString *userPreferencePath = [self springboardPreferencePath]; 85 | if (![[self currentVersion] isEqual:@"4.0"]) { 86 | NSDictionary *springboardPreferences = [[[NSMutableDictionary alloc] initWithContentsOfFile:userPreferencePath] autorelease]; 87 | if ([springboardPreferences objectForKey:@"iconState2"] != nil) { 88 | return [springboardPreferences objectForKey:@"iconState2"];//3.1.3 and below 89 | } else { 90 | return [springboardPreferences objectForKey:@"iconState"];//3.2 91 | } 92 | } else { 93 | NSString *iconStatePath = [[[NSApp delegate] valueForKey:@"_simulatedProcess"] simulatedHomeDirectory]; 94 | iconStatePath = [iconStatePath stringByAppendingString:@"/Library/SpringBoard/IconState.plist"]; 95 | NSDictionary *springboardPreferences = [[[NSMutableDictionary alloc] initWithContentsOfFile:iconStatePath] autorelease]; 96 | return springboardPreferences; 97 | } 98 | } 99 | 100 | - (void)saveIconState:(NSDictionary *)iconState 101 | { 102 | NSString *userPreferencePath = [self springboardPreferencePath]; 103 | if (![[self currentVersion] isEqual:@"4.0"]) { 104 | NSMutableDictionary *springboardPreferences = [[[NSMutableDictionary alloc] initWithContentsOfFile:userPreferencePath] autorelease]; 105 | if ([springboardPreferences objectForKey:@"iconState2"] != nil) { 106 | [springboardPreferences setObject:iconState forKey:@"iconState2"]; 107 | } else { 108 | [springboardPreferences setObject:iconState forKey:@"iconState"]; 109 | } 110 | [springboardPreferences writeToFile:userPreferencePath atomically:YES]; 111 | } else { 112 | NSString *iconStatePath = [[[NSApp delegate] valueForKey:@"_simulatedProcess"] simulatedHomeDirectory]; 113 | iconStatePath = [iconStatePath stringByAppendingString:@"/Library/SpringBoard/IconState.plist"]; 114 | [iconState writeToFile:iconStatePath atomically:YES]; 115 | } 116 | 117 | [self showRestartNotice]; 118 | } 119 | 120 | //return the dictionary of preferences for SpringBoard 121 | - (NSMutableDictionary *)springboardPrefs 122 | { 123 | NSString *userPreferencePath = [self springboardPreferencePath]; 124 | //get the preferences using the path if this is the first time we need them 125 | return [NSDictionary dictionaryWithContentsOfFile:userPreferencePath]; 126 | } 127 | 128 | //write the preference dictionary back to file 129 | - (void)saveSpringboardPrefs:(NSDictionary *)springboardPrefs 130 | { 131 | [springboardPrefs writeToFile:[self springboardPreferencePath] atomically:YES]; 132 | 133 | [self showRestartNotice]; 134 | } 135 | 136 | - (BOOL)shouldUseFakeTime 137 | { 138 | return [[[self springboardPrefs] valueForKey:ISCSBFakeTimeKey] boolValue]; 139 | } 140 | 141 | - (void)setShouldUseFakeTime:(BOOL)shouldUse 142 | { 143 | NSMutableDictionary *springboardPrefs = [[self springboardPrefs] mutableCopy]; 144 | [springboardPrefs setObject:[NSNumber numberWithBool:shouldUse] forKey:ISCSBFakeTimeKey]; 145 | [self saveSpringboardPrefs:springboardPrefs]; 146 | 147 | if (shouldUse) { 148 | //update here because binding may not have propogated 149 | [fakeTimeField setEnabled:YES]; 150 | [[fakeTimeField window] makeFirstResponder:fakeTimeField]; 151 | } 152 | } 153 | 154 | - (NSString *)fakeTime 155 | { 156 | return [[self springboardPrefs] valueForKey:ISCSBFakeTimeStringKey]; 157 | } 158 | 159 | - (void)setFakeTime:(NSString *)timeText 160 | { 161 | NSMutableDictionary *springboardPrefs = [[self springboardPrefs] mutableCopy]; 162 | if (IsEmpty(timeText)) { 163 | [springboardPrefs removeObjectForKey:ISCSBFakeTimeStringKey]; 164 | } else { 165 | [springboardPrefs setObject:timeText forKey:ISCSBFakeTimeStringKey]; 166 | } 167 | [self saveSpringboardPrefs:springboardPrefs]; 168 | } 169 | 170 | - (NSString *)fakeCarrier 171 | { 172 | return [[self springboardPrefs] valueForKey:ISCSBFakeCarrierKey]; 173 | } 174 | 175 | - (void)setFakeCarrier:(NSString *)fakeCarrier 176 | { 177 | NSMutableDictionary *springboardPrefs = [[self springboardPrefs] mutableCopy]; 178 | if (IsEmpty(fakeCarrier)) { 179 | [springboardPrefs removeObjectForKey:ISCSBFakeCarrierKey]; 180 | } else { 181 | [springboardPrefs setObject:fakeCarrier forKey:ISCSBFakeCarrierKey]; 182 | } 183 | [self saveSpringboardPrefs:springboardPrefs]; 184 | } 185 | 186 | - (NSArray *)installedApps 187 | { 188 | NSDictionary *iconState = [self iconState]; 189 | NSArray *installedApps = [NSArray arrayWithArray:[[iconState objectForKey:@"iconLists"] flatten]]; 190 | installedApps = [installedApps arrayByAddingObjectsFromArray:[[iconState objectForKey:@"buttonBar"] flatten]]; 191 | return installedApps; 192 | } 193 | 194 | - (IBAction)installFakeApps:(id)sender 195 | { 196 | ProcessControl *process = [[NSApp delegate] valueForKey:@"_simulatedProcess"]; 197 | 198 | NSArray *appPaths = [[NSBundle bundleForClass:[self class]] pathsForResourcesOfType:@".app" inDirectory:@"FakeApps"]; 199 | 200 | for (NSString *path in appPaths) { 201 | [process installApplication:nil withPath:path]; 202 | } 203 | } 204 | 205 | - (IBAction)arrangeFakeApps:(id)sender 206 | { 207 | [self installFakeApps:nil]; 208 | 209 | //the order of built in apps 210 | NSMutableArray *buttonBar = [NSMutableArray arrayWithObjects: 211 | @"com.fake.Phone", 212 | @"com.fake.Mail", 213 | @"com.apple.mobilesafari", 214 | @"com.fake.iPod", 215 | nil]; 216 | 217 | NSMutableArray *lists = [NSMutableArray arrayWithObjects: 218 | @"com.fake.Messages", 219 | @"com.fake.Calendar", 220 | @"com.apple.mobileslideshow-Photos", 221 | @"com.fake.Camera", 222 | 223 | @"com.fake.YouTube", 224 | @"com.fake.Stocks", 225 | @"com.fake.Maps", 226 | @"com.fake.Weather", 227 | 228 | @"com.fake.VoiceMemos", 229 | @"com.fake.Notes", 230 | @"com.fake.Clock", 231 | @"com.fake.Calculator", 232 | 233 | @"com.apple.Preferences", 234 | @"com.fake.iTunes", 235 | @"com.fake.AppStore", 236 | @"com.fake.Compass", 237 | 238 | @"com.apple.MobileAddressBook", 239 | nil]; 240 | 241 | NSArray *installedApps = [self installedApps]; 242 | for (NSString *app in installedApps) { 243 | if (![buttonBar containsObject:app] && ![lists containsObject:app]) { 244 | [lists addObject:app]; 245 | } 246 | } 247 | 248 | NSArray *pages; 249 | if ([[self currentVersion] isEqual:@"3.2"] || [[self currentVersion] isEqual:@"4.0"]) { 250 | pages = [lists arrayWithSectionSize:kAppsOnRow * kRowsOnPage]; 251 | } else { 252 | //arrange them as pages of rows 253 | pages = [[lists arrayWithSectionSize:kAppsOnRow] arrayWithSectionSize:kRowsOnPage]; 254 | buttonBar = [NSArray arrayWithObject:buttonBar]; 255 | } 256 | 257 | NSMutableDictionary *iconState = [[self iconState] mutableCopy]; 258 | [iconState setObject:pages forKey:@"iconLists"]; 259 | [iconState setObject:buttonBar forKey:@"buttonBar"]; 260 | [self saveIconState:iconState]; 261 | } 262 | 263 | - (IBAction)restart:(id)sender 264 | { 265 | ProcessControl *process = [[NSApp delegate] valueForKey:@"_simulatedProcess"]; 266 | [process restart]; 267 | } 268 | 269 | - (void)showRestartNotice 270 | { 271 | NSRect oldFrame = [[self window] frame]; 272 | NSRect newFrameRect = [[self window] frameRectForContentRect:NSMakeRect(0.0, 0.0, 273 | ISCPreferencesSizeWithRestart.width, 274 | ISCPreferencesSizeWithRestart.height)]; 275 | 276 | NSRect frame = [[self window] frame]; 277 | frame.size = newFrameRect.size; 278 | frame.origin.y -= (newFrameRect.size.height - oldFrame.size.height); 279 | 280 | [NSAnimationContext beginGrouping]; 281 | 282 | [[restartMessage animator] setHidden:NO]; 283 | 284 | [[[self window] animator] setFrame:frame 285 | display:YES]; 286 | 287 | [NSAnimationContext endGrouping]; 288 | } 289 | 290 | @end 291 | -------------------------------------------------------------------------------- /Frameworks/iPhone Simulator.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Generated by class-dump 3.3.1 (64 bit). 3 | * Usin iPhone Simulator 4.0 Beta 4 4 | * 5 | * class-dump is Copyright (C) 1997-1998, 2000-2001, 2004-2009 by Steve Nygard. 6 | * 7 | */ 8 | 9 | #import 10 | 11 | @class PreferencesController; 12 | @class MonitorWindow; 13 | @class SimulatorFrameView; 14 | @class SimulatorView; 15 | @class SimulatorHomeView; 16 | @class SimulatorGlassView; 17 | @class SimulatorGlassWindow; 18 | @class MonitorViewController; 19 | @class ProcessControl; 20 | @class SpringBoardRelay; 21 | @class NSDistantObject; 22 | 23 | @protocol SimulatorBridge; 24 | 25 | 26 | #pragma mark Named Structures 27 | 28 | struct _PurpleEventMessage { 29 | struct { 30 | unsigned int _field1; 31 | unsigned int _field2; 32 | unsigned int _field3; 33 | unsigned int _field4; 34 | unsigned int _field5; 35 | int _field6; 36 | } _field1; 37 | struct { 38 | int _field1; 39 | int _field2; 40 | struct CGPoint _field3; 41 | struct CGPoint _field4; 42 | unsigned int _field5; 43 | unsigned long long _field6; 44 | void *_field7; 45 | int _field8; 46 | int _field9; 47 | unsigned int _field10; 48 | char *_field11; 49 | } _field2; 50 | }; 51 | 52 | #pragma mark - 53 | 54 | /* 55 | * File: /Beta Developer/Platforms/iPhoneSimulator.platform/Developer/Applications/iPhone Simulator.app/Contents/MacOS/iPhone Simulator 56 | * Arch: Intel 80x86 (i386) 57 | * 58 | * Objective-C Garbage Collection: Unsupported 59 | */ 60 | 61 | @protocol SimulatorViewProtocol 62 | - (void)setMonitorViewController:(id)arg1; 63 | @end 64 | 65 | @interface MonitorController : NSObject 66 | { 67 | PreferencesController *_preferencesController; 68 | NSMenu *devicesMenu; 69 | NSMenu *versionsMenu; 70 | MonitorWindow *_monitorWindow; 71 | NSMenuItem *_ringerMenuItem; 72 | NSScreen *_lastScreen; 73 | SimulatorFrameView *_simulatorBox; 74 | NSView *_simulatorView; 75 | SimulatorHomeView *_homeView; 76 | SimulatorGlassView *_glassView; 77 | SimulatorGlassWindow *_glassWindow; 78 | int _tvOutMode; 79 | NSWindow *_tvOutWindow; 80 | MonitorViewController *_tvOutMonitorViewController; 81 | NSView *_tvOutSimulatorView; 82 | float _rotation; 83 | struct CGAffineTransform _transform; 84 | BOOL _inRotation; 85 | MonitorViewController *_monitorViewController; 86 | NSConditionLock *eventForwardingLock; 87 | ProcessControl *_simulatedProcess; 88 | NSAppleScript *_showProgrammingGuideScript; 89 | NSPoint _startingSimulatorViewInset; 90 | BOOL _useLegacyEventStructSize; 91 | BOOL _simulatingHardwareKeyboard; 92 | BOOL _sdkSupportsHostedLayerEvents; 93 | BOOL _demoMode; 94 | BOOL _enableMirrorScreens; 95 | BOOL _mirrorOnly; 96 | BOOL _mirrorScreenConnected; 97 | BOOL _mirrorScreenEvents; 98 | NSWindow *_mirrorWindow; 99 | NSView *_mirrorView; 100 | struct CGAffineTransform _mirrorTransform; 101 | BOOL _mirrorNeedsRotation; 102 | NSSize _reccomendedWindowSize; 103 | float _monitorWindowScale; 104 | int _monitorWindowType; 105 | NSScrollView *_monitorScrollView; 106 | } 107 | 108 | + (id)sharedInstance; 109 | + (void)setStartingURL:(char *)arg1; 110 | - (void)openURLInMobileSafari:(id)arg1; 111 | - (int)desiredMonitorWindowType; 112 | - (struct CGAffineTransform)transform; 113 | - (id)monitorWindow; 114 | - (float)monitorWindowScale; 115 | - (id)simulatorBox; 116 | - (id)simulatorView; 117 | - (id)simulatorHomeView; 118 | - (id)glassView; 119 | - (id)mirrorView; 120 | - (BOOL)mirrorNeedsRotation; 121 | - (struct CGAffineTransform)mirrorTransform; 122 | - (id)tvOutWindow; 123 | - (struct _NSRect)tvOutWindowFrame; 124 | - (void)simulatorViewNeedsDisplayOnMainThread:(id)arg1; 125 | - (void)prepareForSpringBoardLaunch; 126 | - (void)setUseLegacyEventStructSize:(BOOL)arg1; 127 | - (BOOL)simulatingHardwareKeyboard; 128 | - (void)simulatorAlreadyRunningSheetDidEnd:(id)arg1 returnCode:(int)arg2 contextInfo:(void *)arg3; 129 | - (void)awakeFromNib; 130 | - (void)establishConnection:(id)arg1; 131 | - (BOOL)applicationShouldHandleReopen:(id)arg1 hasVisibleWindows:(BOOL)arg2; 132 | - (unsigned int)applicationShouldTerminate:(id)arg1; 133 | - (void)application:(id)arg1 openFiles:(id)arg2; 134 | - (void)dealloc; 135 | - (void)resetContent:(id)arg1; 136 | - (void)resetContentSheetDidEnd:(id)arg1 returnCode:(int)arg2 contextInfo:(void *)arg3; 137 | - (BOOL)validateMenuItem:(id)arg1; 138 | - (float)rotation; 139 | - (void)setNonChromeRotation; 140 | - (void)setRotation:(float)arg1; 141 | - (int)orientation; 142 | - (void)copy:(id)arg1; 143 | - (void)paste:(id)arg1; 144 | - (void)copyScreen:(id)arg1; 145 | - (void)toggleRotationLeft:(id)arg1; 146 | - (void)toggleRotationRight:(id)arg1; 147 | - (void)animateToRotation:(id)arg1; 148 | - (void)updateWindowForDevice:(id)arg1; 149 | - (void)simulateDevice:(id)arg1; 150 | - (void)simulateVersion:(id)arg1; 151 | - (void)tvOutModeChanged:(id)arg1; 152 | - (void)homeButtonDown:(id)arg1; 153 | - (void)homeButtonUp:(id)arg1; 154 | - (void)homeButtonPressed:(id)arg1; 155 | - (void)lockButtonPressed:(id)arg1; 156 | - (void)shakeDevice:(id)arg1; 157 | - (void)volumeUpPressed:(id)arg1; 158 | - (void)volumeDownPressed:(id)arg1; 159 | - (void)toggleRingerSwitch:(id)arg1; 160 | - (void)simulateMemoryWarning:(id)arg1; 161 | - (void)toggleInCallStatusBar:(id)arg1; 162 | - (void)toggleHardwareKeyboard:(id)arg1; 163 | - (void)showProgrammingGuide:(id)arg1; 164 | - (void)windowScaleChanged:(id)arg1; 165 | - (void)forwardEvents; 166 | - (void)sendPreferencesChangedEvent; 167 | - (void)sendOpenURLEvent:(id)arg1; 168 | - (void)sendDeviceEvent:(struct _PurpleEventMessage *)arg1; 169 | 170 | @end 171 | 172 | @interface MonitorViewController : NSObject 173 | { 174 | MonitorController *_controller; 175 | id _monitor; 176 | int _monitorType; 177 | void *_data; 178 | void *_lastData; 179 | unsigned int _data_rowbytes; 180 | unsigned int _data_width; 181 | unsigned int _data_height; 182 | unsigned int _shmemPort; 183 | NSLock *_lastImageLock; 184 | struct CGContext *_image_context; 185 | unsigned int _image_texture; 186 | _Bool _gl_initialized; 187 | } 188 | 189 | - (id)initWithController:(id)arg1; 190 | - (id)initWithController:(id)arg1 monitorType:(int)arg2; 191 | - (void)dealloc; 192 | - (void)setMonitor:(id)arg1; 193 | - (void)clearLastFrame; 194 | - (void)shapeChanged:(struct CGRect)arg1; 195 | - (void)backingChanged:(struct CGRect)arg1 depth:(unsigned int)arg2 data:(void **)arg3 rowBytes:(int *)arg4; 196 | - (void)backingScrolled:(void *)arg1 dx:(int)arg2 dy:(int)arg3; 197 | - (_Bool)getShmemPort:(unsigned int *)arg1 size:(unsigned int *)arg2 rowbytes:(unsigned int *)arg3 bounds:(struct CGRect *)arg4; 198 | - (struct CGImage *)createCGImage; 199 | - (id)bitmapImageRep; 200 | - (void)drawImageInWindow:(id)arg1; 201 | - (void)initGLDrawing; 202 | - (void)blitImageToView:(id)arg1; 203 | - (int)monitorType; 204 | 205 | @end 206 | 207 | @interface PurpleMonitor : NSObject 208 | { 209 | NSString *_serverName; 210 | NSMachPort *_serverPort; 211 | MonitorViewController *_controller; 212 | BOOL _connectionEstablished; 213 | } 214 | 215 | - (id)initWithPortName:(id)arg1 controller:(id)arg2; 216 | - (void)dealloc; 217 | - (void)handleMachMessage:(void *)arg1; 218 | 219 | @end 220 | 221 | @interface MonitorWindow : NSWindow 222 | { 223 | MonitorController *_controller; 224 | NSView *_simulatorView; 225 | unsigned int _previousModifierFlags; 226 | BOOL _touchDownInStatusBar; 227 | BOOL _dragStartedOnScreen; 228 | BOOL _dragWentOffScreen; 229 | BOOL _previousEventWasMouseDown; 230 | BOOL _interceptKeyEventsForDemo; 231 | BOOL _allowTripleShiftSlowMotion; 232 | BOOL _allowFlagsChangedEvents; 233 | BOOL _allowScrollWheelEvents; 234 | BOOL _compensateForStatusBar; 235 | } 236 | 237 | - (BOOL)canBecomeKeyWindow; 238 | - (void)setMonitorController:(id)arg1; 239 | - (void)setSimulatorView:(id)arg1; 240 | - (void)setInterceptKeyEventsForDemo:(BOOL)arg1; 241 | - (void)setAllowTripleShiftSlowMotion:(BOOL)arg1; 242 | - (void)setAllowFlagsChangedEvents:(BOOL)arg1; 243 | - (void)setAllowScrollWheelEvents:(BOOL)arg1; 244 | - (void)setCompensateForStatusBar:(BOOL)arg1; 245 | - (void)sendEvent:(id)arg1; 246 | - (BOOL)dragWentOffscreen:(NSPoint *)arg1; 247 | - (BOOL)touchDownInPortraitStatusBar:(NSPoint)arg1; 248 | - (NSPoint)translatePointFromWindowToSimulator:(NSPoint)arg1; 249 | - (void)sendScrollEvents:(id)arg1; 250 | - (void)copy:(id)arg1; 251 | - (void)paste:(id)arg1; 252 | - (void)draggingEnded:(id)arg1; 253 | - (unsigned int)draggingEntered:(id)arg1; 254 | - (void)draggingExited:(id)arg1; 255 | - (BOOL)performDragOperation:(id)arg1; 256 | 257 | @end 258 | 259 | @interface PreferencesController : NSObject 260 | { 261 | MonitorController *_monitorController; 262 | } 263 | 264 | + (void)initialize; 265 | + (void)createMobileSafariBookmarks:(BOOL)arg1; 266 | + (void)registerDefaults; 267 | - (void)copyDesktopSafariBookmarks:(id)arg1; 268 | 269 | @end 270 | 271 | @interface SimulatorGlassView : NSView 272 | { 273 | NSPoint _mousePoint; 274 | NSPoint _pinchPoint; 275 | NSPoint _mirrorPoint; 276 | BOOL _fingerDown; 277 | BOOL _acceptingDrag; 278 | } 279 | 280 | - (id)initWithFrame:(struct _NSRect)arg1; 281 | - (BOOL)isOpaque; 282 | - (void)drawRect:(struct _NSRect)arg1; 283 | - (BOOL)isIgnoredPoint:(NSPoint)arg1; 284 | - (void)setPinchPoint:(NSPoint)arg1; 285 | - (void)resetPinchPoint; 286 | - (NSPoint)pinchPoint; 287 | - (void)setMousePoint:(NSPoint)arg1; 288 | - (void)resetMousePoint; 289 | - (NSPoint)mousePoint; 290 | - (void)setMirrorPoint:(NSPoint)arg1; 291 | - (void)resetMirrorPoint; 292 | - (NSPoint)mirrorPoint; 293 | - (void)setFingerDown:(BOOL)arg1; 294 | - (BOOL)fingerDown; 295 | - (void)setAcceptingDrag:(BOOL)arg1; 296 | - (void)drawCenterAtPoint:(NSPoint)arg1; 297 | - (void)drawFingerAtPoint:(NSPoint)arg1; 298 | 299 | @end 300 | 301 | @interface SimulatorGlassWindow : NSWindow 302 | { 303 | } 304 | 305 | - (BOOL)ignoresMouseEvents; 306 | - (BOOL)isOpaque; 307 | - (id)backgroundColor; 308 | - (BOOL)hasShadow; 309 | - (BOOL)accessibilityIsIgnored; 310 | 311 | @end 312 | 313 | @interface SimulatorView : NSView 314 | { 315 | MonitorViewController *_monitorViewController; 316 | } 317 | 318 | - (void)dealloc; 319 | - (void)drawRect:(struct _NSRect)arg1; 320 | - (BOOL)mouseDownCanMoveWindow; 321 | - (void)setMonitorViewController:(id)arg1; 322 | 323 | @end 324 | 325 | @interface SimulatorOpenGLView : NSOpenGLView 326 | { 327 | MonitorViewController *_monitorViewController; 328 | } 329 | 330 | - (id)initWithFrame:(struct _NSRect)arg1; 331 | - (void)dealloc; 332 | - (void)prepareOpenGL; 333 | - (void)drawRect:(struct _NSRect)arg1; 334 | - (BOOL)mouseDownCanMoveWindow; 335 | - (void)setMonitorViewController:(id)arg1; 336 | 337 | @end 338 | 339 | @interface ProcessControl : NSObject 340 | { 341 | NSString *_applicationSupportDirectory; 342 | SpringBoardRelay *_springBoardRelay; 343 | NSTask *_childTask; 344 | NSTask *_bridgeTask; 345 | NSDistantObject *_bridgeDistantObject; 346 | BOOL _crashDialogShowing; 347 | NSString *_sessionUUID; 348 | NSString *_sessionOwner; 349 | NSString *_sessionSDKRoot; 350 | NSString *_sessionDeviceInfo; 351 | NSString *_sessionApplicationIdentifier; 352 | int _grandchildPid; 353 | BOOL _launchdJobsLoaded; 354 | BOOL _homeButtonPressed; 355 | BOOL _debugLoggingEnabled; 356 | BOOL _usingDashcode; 357 | BOOL _usingDashcodeFullScreen; 358 | BOOL _usingInterfaceBuilder; 359 | } 360 | 361 | + (id)sharedInstance; 362 | - (id)init; 363 | - (void)dealloc; 364 | - (void)clearSessionProperties; 365 | - (void)migrateToVersionedHomeDirectories; 366 | - (void)copyGlobalPreferencesPlist; 367 | - (void)clearMobileInstallationCache; 368 | - (id)promptForSDKRoot; 369 | - (id)promptForApplicationPath:(id)arg1; 370 | - (id)sdkRootPath; 371 | - (id)getProcessPath; 372 | - (id)applicationSupportDirectory; 373 | - (id)simulatedHomeDirectoryVersioned:(BOOL)arg1; 374 | - (id)simulatedHomeDirectory; 375 | - (id)bridgeDistantObject; 376 | - (void)startSession:(id)arg1; 377 | - (void)endSession:(id)arg1; 378 | - (void)delayedKill:(id)arg1; 379 | - (BOOL)userNavigatedFromSession; 380 | - (BOOL)shouldQuitOnSessionEnd; 381 | - (id)mobileInstallationOptionsForApplicationType:(struct __CFString *)arg1; 382 | - (BOOL)installApplication:(id)arg1 withPath:(id)arg2; 383 | - (BOOL)uninstallApplication:(id)arg1; 384 | - (BOOL)isUserApplicationInstalled:(id)arg1; 385 | - (BOOL)isSystemApplicationInstalled:(id)arg1; 386 | - (id)lookupInstalledApplications:(struct __CFString *)arg1; 387 | - (BOOL)archiveExistsForApplication:(id)arg1; 388 | - (BOOL)removeArchiveForApplication:(id)arg1; 389 | - (BOOL)archiveAndUninstallApplication:(id)arg1; 390 | - (BOOL)restoreArchiveForApplication:(id)arg1; 391 | - (id)pathToWebApps; 392 | - (id)webAppIdentifier; 393 | - (BOOL)installWebApp:(id)arg1 withIdentifier:(id)arg2; 394 | - (id)createTask; 395 | - (id)createArguments; 396 | - (id)createEnvironment; 397 | - (void)launchBridge; 398 | - (BOOL)setupBridge; 399 | - (void)terminateBridge; 400 | - (void)loadLaunchdJobs; 401 | - (void)fixPermissionsForLaunchdPlist:(id)arg1; 402 | - (void)unloadLaunchdJobs; 403 | - (void)invalidateBridge; 404 | - (void)launch; 405 | - (void)restart; 406 | - (void)terminate; 407 | - (void)setHomeButtonPressed:(BOOL)arg1; 408 | - (void)endSessionForQuit; 409 | - (void)checkStatus:(id)arg1; 410 | - (void)_checkStatus:(id)arg1; 411 | - (void)crashSheetDidEnd:(id)arg1 returnCode:(int)arg2 contextInfo:(void *)arg3; 412 | - (void)watchGrandchildProcess:(int)arg1; 413 | - (void)postLaunchedMessageWithUserInfo:(id)arg1; 414 | - (void)handleGrandchildProcessEnded:(id)arg1; 415 | - (void)setGrandchildPid:(int)arg1; 416 | - (id)sessionUUID; 417 | - (void)setSessionUUID:(id)arg1; 418 | - (void)setSessionOwner:(id)arg1; 419 | - (void)setSessionSDKRoot:(id)arg1; 420 | - (void)setSessionDeviceInfo:(id)arg1; 421 | - (void)setSessionApplicationIdentifier:(id)arg1; 422 | - (void)debugLog:(id)arg1; 423 | 424 | @end 425 | 426 | @interface DeviceVersions : NSObject 427 | { 428 | NSMutableDictionary *_deviceMap; 429 | NSMutableDictionary *_versionMap; 430 | NSString *_sdksDirectoryPath; 431 | BOOL _allowOther; 432 | } 433 | 434 | + (id)sharedInstance; 435 | - (id)init; 436 | - (void)dealloc; 437 | - (BOOL)checkFileAtPath:(id)arg1; 438 | - (void)createDeviceMap; 439 | - (void)loadDevicesAtPath:(id)arg1; 440 | - (void)createVersionMap; 441 | - (id)deviceAndVersionInfo; 442 | - (id)productTypes; 443 | - (id)allDevices; 444 | - (id)currentDevice; 445 | - (void)setCurrentDevice:(id)arg1; 446 | - (id)currentDeviceInfo; 447 | - (id)capabilitiesPlistForCurrentDevice; 448 | - (NSSize)sizeForCurrentDevice; 449 | - (float)scaleForCurrentDevice; 450 | - (id)chromeImageForCurrentDevice; 451 | - (id)homeImageForCurrentDevice; 452 | - (NSPoint)homeOriginForCurrentDevice; 453 | - (id)allVersions; 454 | - (id)allSDKRoots; 455 | - (id)shortVersionString; 456 | - (id)currentSDKRoot; 457 | - (void)setCurrentSDKRoot:(id)arg1; 458 | - (id)sdksDirectoryPath; 459 | - (id)deviceInfoForProductType:(int)arg1; 460 | - (BOOL)updateSDKForCurrentDevice; 461 | - (BOOL)updateDeviceForCurrentSDK; 462 | - (BOOL)sdkSupportsPasteBoard:(id)arg1; 463 | - (BOOL)sdkSupportsShake:(id)arg1; 464 | - (BOOL)sdkSupportsAutomaticUpgradeInstall:(id)arg1; 465 | - (BOOL)sdkSupportsLiveInCallStatusBar:(id)arg1; 466 | - (BOOL)sdkSupportsInCallStatusBar:(id)arg1; 467 | - (BOOL)sdkUsesLegacyEventStruct:(id)arg1; 468 | - (BOOL)sdkUsesLegacyKeyEventStruct:(id)arg1; 469 | - (BOOL)sdkSupportsHardwareKeyboard:(id)arg1; 470 | - (BOOL)sdkSupportsAccessibility:(id)arg1; 471 | - (BOOL)sdkSupportsTVOut:(id)arg1; 472 | - (BOOL)sdkSupportsHostedLayerEvents:(id)arg1; 473 | - (BOOL)sdkIsComplete:(id)arg1; 474 | - (id)sdkBasedOnVersionString:(id)arg1 inverseSearch:(BOOL)arg2; 475 | - (id)sdkPathForVersion:(id)arg1; 476 | - (id)versionForSDKPath:(id)arg1; 477 | - (float)versionFloatForSDKPath:(id)arg1; 478 | - (id)systemPlistFromSDKPath:(id)arg1; 479 | - (id)sdkPlistFromSDKPath:(id)arg1; 480 | - (void)updateUseLegacyEventStructSize:(id)arg1; 481 | 482 | @end 483 | 484 | @interface SpringBoardRelay : NSObject 485 | { 486 | BOOL _busy; 487 | NSDictionary *_sessionDictionary; 488 | double _timeout; 489 | ProcessControl *_processControl; 490 | } 491 | 492 | - (void)dealloc; 493 | - (void)setProcessControl:(id)arg1; 494 | - (id)openApplication:(id)arg1; 495 | - (void)sendLaunchApplicationToSpringBoard; 496 | - (void)checkForPID; 497 | 498 | @end 499 | 500 | @interface SimulatorFrameView : NSView 501 | { 502 | BOOL _shadowNeedsDisplay; 503 | } 504 | 505 | + (id)frameImage; 506 | + (NSSize)frameSize; 507 | - (id)initWithFrame:(struct _NSRect)arg1; 508 | - (BOOL)isOpaque; 509 | - (BOOL)mouseDownCanMoveWindow; 510 | - (void)drawRect:(struct _NSRect)arg1; 511 | - (void)setShadowNeedsDisplay:(BOOL)arg1; 512 | 513 | @end 514 | 515 | @interface SimulatorHomeView : NSView 516 | { 517 | BOOL _pressed; 518 | } 519 | 520 | + (id)pressedHomeImage; 521 | - (id)initWithFrame:(struct _NSRect)arg1; 522 | - (BOOL)isOpaque; 523 | - (BOOL)acceptsFirstMouse:(id)arg1; 524 | - (BOOL)mouseDownCanMoveWindow; 525 | - (void)mouseDown:(id)arg1; 526 | - (void)mouseUp:(id)arg1; 527 | - (void)mouseDragged:(id)arg1; 528 | - (void)drawRect:(struct _NSRect)arg1; 529 | 530 | @end 531 | 532 | @interface LaunchdUtilities : NSObject 533 | { 534 | } 535 | 536 | + (void)deleteJobWithLabel:(id)arg1; 537 | + (id)allJobLabels; 538 | 539 | @end 540 | 541 | @interface PurpleHardware : NSObject 542 | { 543 | NSSize _screenPixels; 544 | float _screenScaleFactor; 545 | } 546 | 547 | + (id)sharedInstance; 548 | - (void)setScreenPixels:(NSSize)arg1; 549 | - (NSSize)screenPixels; 550 | - (NSSize)screenPoints; 551 | - (void)setScreenScaleFactor:(float)arg1; 552 | - (float)screenScaleFactor; 553 | 554 | @end 555 | 556 | @interface DeviceInfo : NSObject 557 | { 558 | NSString *displayName; 559 | NSString *bundlePath; 560 | NSString *minimumVersionString; 561 | NSString *capabilitiesPlist; 562 | NSSize size; 563 | NSSize forceSize; 564 | float scale; 565 | BOOL canTether; 566 | BOOL invertX; 567 | BOOL invertY; 568 | BOOL transformedTouch; 569 | NSString *chromeImageName; 570 | NSImage *chromeImage; 571 | NSString *homeImageName; 572 | NSImage *homeImage; 573 | float homeOriginY; 574 | NSPoint homeOrigin; 575 | int productType; 576 | NSString *productClass; 577 | } 578 | 579 | + (id)device; 580 | + (id)deviceWithPath:(id)arg1; 581 | - (id)init; 582 | - (void)dealloc; 583 | - (BOOL)isForcingSize; 584 | - (NSPoint)forceOrigin; 585 | - (id)chromeImage; 586 | - (id)homeImage; 587 | - (id)imageWithName:(id)arg1; 588 | - (id)productClass; 589 | - (void)setProductClass:(id)arg1; 590 | - (int)productType; 591 | - (void)setProductType:(int)arg1; 592 | - (NSPoint)homeOrigin; 593 | - (void)setHomeOrigin:(NSPoint)arg1; 594 | - (id)homeImageName; 595 | - (void)setHomeImageName:(id)arg1; 596 | - (id)chromeImageName; 597 | - (void)setChromeImageName:(id)arg1; 598 | - (BOOL)transformedTouch; 599 | - (void)setTransformedTouch:(BOOL)arg1; 600 | - (BOOL)invertY; 601 | - (void)setInvertY:(BOOL)arg1; 602 | - (BOOL)invertX; 603 | - (void)setInvertX:(BOOL)arg1; 604 | - (BOOL)canTether; 605 | - (void)setCanTether:(BOOL)arg1; 606 | - (float)scale; 607 | - (void)setScale:(float)arg1; 608 | - (NSSize)forceSize; 609 | - (void)setForceSize:(NSSize)arg1; 610 | - (NSSize)size; 611 | - (void)setSize:(NSSize)arg1; 612 | - (id)capabilitiesPlist; 613 | - (void)setCapabilitiesPlist:(id)arg1; 614 | - (id)minimumVersionString; 615 | - (void)setMinimumVersionString:(id)arg1; 616 | - (id)bundlePath; 617 | - (void)setBundlePath:(id)arg1; 618 | - (id)displayName; 619 | - (void)setDisplayName:(id)arg1; 620 | 621 | @end 622 | 623 | @interface MockiPhoneAccessibilityElement : NSObject 624 | { 625 | NSDictionary *_data; 626 | NSView *_parent; 627 | } 628 | 629 | + (void)initialize; 630 | - (id)initWithDictionary:(id)arg1 parent:(id)arg2; 631 | - (void)updateDictionary:(id)arg1; 632 | - (id)accessibilityAttributeNames; 633 | - (id)accessibilityActionNames; 634 | - (int)pid; 635 | - (BOOL)accessibilityIsIgnored; 636 | - (id)accessibilityActionDescription:(id)arg1; 637 | - (BOOL)accessibilityIsAttributeSettable:(id)arg1; 638 | - (id)roleDescription; 639 | - (id)accessibilityAttributeValue:(id)arg1; 640 | - (void)performPressAction; 641 | - (void)performIncrementAction; 642 | - (void)performDecrementAction; 643 | - (void)accessibilityPerformAction:(id)arg1; 644 | - (BOOL)accessibilityShouldUseUniqueId; 645 | - (void)dealloc; 646 | 647 | @end 648 | 649 | @interface MonitorController (private) 650 | - (BOOL)newWindowRequiredForRotation; 651 | - (void)cleanupWindows:(BOOL)arg1; 652 | - (void)setupWindows:(BOOL)arg1; 653 | - (void)setupMonitorWindow; 654 | - (NSSize)simulatorViewSize; 655 | - (struct _NSRect)scrollDocumentFrame; 656 | - (NSSize)simulatorViewFrameDifference; 657 | - (void)updateScaledSimulatorFrame; 658 | - (void)updateMonitorWindowLevel; 659 | - (void)moveWindowOnScreen; 660 | - (void)setupTVOutMonitorWindow; 661 | - (void)setupGlassWindow; 662 | - (void)updateGlassWindow; 663 | - (void)updateScreenInfo:(id)arg1; 664 | - (void)populateDeviceMenu; 665 | - (void)populateVersionMenu; 666 | - (void)insertOtherMenu; 667 | - (BOOL)orientationIsPortraitish; 668 | - (int)orientationFromRadians:(float)arg1; 669 | - (float)radiansFromOrientation:(int)arg1; 670 | - (void)toggleRotationToOrientation:(int)arg1; 671 | - (void)rotationTimout; 672 | - (void)sendButtonEvent:(int)arg1; 673 | @end 674 | 675 | @interface NSTask (SimulatorRunLoop) 676 | - (void)waitUntilExitWithoutSpinningRunLoop; 677 | @end 678 | 679 | @interface SimulatorOpenGLView (Accessibility) 680 | - (id)superAccessibilityAttributeValue:(id)arg1; 681 | - (id)superAccessibilityAttributeNames; 682 | - (BOOL)accessibilityIsIgnored; 683 | - (id)accessibilityHitTest:(NSPoint)arg1; 684 | - (id)accessibilityAttributeNames; 685 | - (id)accessibilityAttributeValue:(id)arg1; 686 | @end 687 | 688 | @interface SimulatorView (Accessibility) 689 | - (id)superAccessibilityAttributeValue:(id)arg1; 690 | - (id)superAccessibilityAttributeNames; 691 | - (BOOL)accessibilityIsIgnored; 692 | - (id)accessibilityHitTest:(NSPoint)arg1; 693 | - (id)accessibilityAttributeNames; 694 | - (id)accessibilityAttributeValue:(id)arg1; 695 | @end 696 | 697 | @interface MonitorWindow (Accessibility) 698 | - (id)accessibilityAttributeValue:(id)arg1; 699 | - (id)accessibilityHitTest:(NSPoint)arg1; 700 | @end 701 | 702 | @interface SimulatorHomeView (Accessibility) 703 | - (BOOL)accessibilityIsIgnored; 704 | - (id)accessibilityAttributeNames; 705 | - (id)accessibilityAttributeValue:(id)arg1; 706 | - (id)accessibilityActionNames; 707 | - (id)accessibilityActionDescription:(id)arg1; 708 | - (void)accessibilityPerformAction:(id)arg1; 709 | @end 710 | 711 | @interface MonitorViewController (Accessibility) 712 | - (id)_elementForData:(id)arg1; 713 | - (void)_handleAccessibilityScreenChange; 714 | - (void)_updateAccessibilityAvailability; 715 | - (void)_bridgeTerminated; 716 | - (void)_initializeAccessibility; 717 | - (BOOL)accessibilityIsIgnored; 718 | - (id)accessibilityHitTest:(NSPoint)arg1; 719 | - (id)accessibilityAttributeNames; 720 | - (id)accessibilityAttributeValue:(id)arg1; 721 | @end 722 | 723 | -------------------------------------------------------------------------------- /iPhone Simulator Capture.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 6300CDFD1085394200ADF370 /* ISCController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6300CDFC1085394200ADF370 /* ISCController.m */; }; 11 | 6300CFE1108570D500ADF370 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6300CFE0108570D500ADF370 /* QTKit.framework */; }; 12 | 6300D12710861EF600ADF370 /* PluginController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6300D12610861EF600ADF370 /* PluginController.xib */; }; 13 | 630CE46111E687E700E6696C /* ISCDeviceType.m in Sources */ = {isa = PBXBuildFile; fileRef = 630CE46011E687E700E6696C /* ISCDeviceType.m */; }; 14 | 6344830D1087C17C00EB2CE7 /* Hover.png in Resources */ = {isa = PBXBuildFile; fileRef = 6344830C1087C17C00EB2CE7 /* Hover.png */; }; 15 | 6344830F1087C18700EB2CE7 /* Active.png in Resources */ = {isa = PBXBuildFile; fileRef = 6344830E1087C18700EB2CE7 /* Active.png */; }; 16 | 634483B11087DB8100EB2CE7 /* ImageRect.m in Sources */ = {isa = PBXBuildFile; fileRef = 634483B01087DB8100EB2CE7 /* ImageRect.m */; }; 17 | 63684EE910880E2100A390D5 /* Overlay.png in Resources */ = {isa = PBXBuildFile; fileRef = 63684EE810880E2100A390D5 /* Overlay.png */; }; 18 | 637588C8108CE6A700E8C9C5 /* ISCRecording.m in Sources */ = {isa = PBXBuildFile; fileRef = 637588C7108CE6A700E8C9C5 /* ISCRecording.m */; }; 19 | 63758C98108D7E4200E8C9C5 /* DABTimeIntervalFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 63758C97108D7E4200E8C9C5 /* DABTimeIntervalFormatter.m */; }; 20 | 63775E9D1086B2A600816786 /* RecordButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 63775E9B1086B2A600816786 /* RecordButton.png */; }; 21 | 63775EA61086B3BF00816786 /* StopButton.png in Resources */ = {isa = PBXBuildFile; fileRef = 63775EA51086B3BF00816786 /* StopButton.png */; }; 22 | 6378D6BC10B3310500FF021A /* ISCArraySections.m in Sources */ = {isa = PBXBuildFile; fileRef = 6378D6BB10B3310500FF021A /* ISCArraySections.m */; }; 23 | 63B4F17A10892B5A0003CA1F /* ISCFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 63B4F17910892B5A0003CA1F /* ISCFrame.m */; }; 24 | 63B4F4DA108980F20003CA1F /* ISCAppDelegateDelay.m in Sources */ = {isa = PBXBuildFile; fileRef = 63B4F4D9108980F20003CA1F /* ISCAppDelegateDelay.m */; }; 25 | 63B4F6AA108A4E930003CA1F /* ISCPreferenceController.m in Sources */ = {isa = PBXBuildFile; fileRef = 63B4F6A9108A4E930003CA1F /* ISCPreferenceController.m */; }; 26 | 63B4F6AC108A508E0003CA1F /* Preferences.xib in Resources */ = {isa = PBXBuildFile; fileRef = 63B4F6AB108A508E0003CA1F /* Preferences.xib */; }; 27 | 63B4FC5F108BE0400003CA1F /* FakeApps in Resources */ = {isa = PBXBuildFile; fileRef = 63B4FC4C108BE0400003CA1F /* FakeApps */; }; 28 | 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; 29 | 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */; }; 30 | /* End PBXBuildFile section */ 31 | 32 | /* Begin PBXFileReference section */ 33 | 089C1672FE841209C02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 34 | 089C167EFE841241C02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; 35 | 089C167FFE841241C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 36 | 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 37 | 32DBCF630370AF2F00C91783 /* Simulator Plugin_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "Simulator Plugin_Prefix.pch"; sourceTree = ""; }; 38 | 6300CDFB1085394200ADF370 /* ISCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISCController.h; sourceTree = ""; }; 39 | 6300CDFC1085394200ADF370 /* ISCController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISCController.m; sourceTree = ""; }; 40 | 6300CFE0108570D500ADF370 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; 41 | 6300D12610861EF600ADF370 /* PluginController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PluginController.xib; sourceTree = ""; }; 42 | 630CE45F11E687E700E6696C /* ISCDeviceType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISCDeviceType.h; sourceTree = ""; }; 43 | 630CE46011E687E700E6696C /* ISCDeviceType.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISCDeviceType.m; sourceTree = ""; }; 44 | 6344830C1087C17C00EB2CE7 /* Hover.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Hover.png; sourceTree = ""; }; 45 | 6344830E1087C18700EB2CE7 /* Active.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Active.png; sourceTree = ""; }; 46 | 634483AF1087DB8100EB2CE7 /* ImageRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageRect.h; sourceTree = ""; }; 47 | 634483B01087DB8100EB2CE7 /* ImageRect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageRect.m; sourceTree = ""; }; 48 | 63684EE810880E2100A390D5 /* Overlay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Overlay.png; sourceTree = ""; }; 49 | 637588C6108CE6A700E8C9C5 /* ISCRecording.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISCRecording.h; sourceTree = ""; }; 50 | 637588C7108CE6A700E8C9C5 /* ISCRecording.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISCRecording.m; sourceTree = ""; }; 51 | 63758C96108D7E4200E8C9C5 /* DABTimeIntervalFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DABTimeIntervalFormatter.h; sourceTree = ""; }; 52 | 63758C97108D7E4200E8C9C5 /* DABTimeIntervalFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DABTimeIntervalFormatter.m; sourceTree = ""; }; 53 | 63775E9B1086B2A600816786 /* RecordButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = RecordButton.png; sourceTree = ""; }; 54 | 63775EA51086B3BF00816786 /* StopButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = StopButton.png; sourceTree = ""; }; 55 | 6378D6BA10B3310500FF021A /* ISCArraySections.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISCArraySections.h; sourceTree = ""; }; 56 | 6378D6BB10B3310500FF021A /* ISCArraySections.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISCArraySections.m; sourceTree = ""; }; 57 | 637FD44211A74C3E00566C47 /* DABCommonMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DABCommonMacros.h; sourceTree = ""; }; 58 | 637FD44311A74C3E00566C47 /* SynthesizeSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SynthesizeSingleton.h; sourceTree = ""; }; 59 | 637FD44411A74C3E00566C47 /* DebugLog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebugLog.h; sourceTree = ""; }; 60 | 637FD44511A74C3E00566C47 /* IsEmpty.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IsEmpty.h; sourceTree = ""; }; 61 | 637FD44611A74C3E00566C47 /* CustomProperties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CustomProperties.h; sourceTree = ""; }; 62 | 63B4F17810892B5A0003CA1F /* ISCFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISCFrame.h; sourceTree = ""; }; 63 | 63B4F17910892B5A0003CA1F /* ISCFrame.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISCFrame.m; sourceTree = ""; }; 64 | 63B4F4D8108980F20003CA1F /* ISCAppDelegateDelay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISCAppDelegateDelay.h; sourceTree = ""; }; 65 | 63B4F4D9108980F20003CA1F /* ISCAppDelegateDelay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISCAppDelegateDelay.m; sourceTree = ""; }; 66 | 63B4F6A8108A4E930003CA1F /* ISCPreferenceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ISCPreferenceController.h; sourceTree = ""; }; 67 | 63B4F6A9108A4E930003CA1F /* ISCPreferenceController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ISCPreferenceController.m; sourceTree = ""; }; 68 | 63B4F6AB108A508E0003CA1F /* Preferences.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = Preferences.xib; sourceTree = ""; }; 69 | 63B4F746108A5A7C0003CA1F /* Notes.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = Notes.rtf; sourceTree = ""; }; 70 | 63B4FBE4108BDB5B0003CA1F /* iPhone Simulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "iPhone Simulator.h"; path = "Frameworks/iPhone Simulator.h"; sourceTree = ""; }; 71 | 63B4FC4C108BE0400003CA1F /* FakeApps */ = {isa = PBXFileReference; lastKnownFileType = folder; path = FakeApps; sourceTree = ""; }; 72 | 63B4FCC1108BE6760003CA1F /* SimulatorBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SimulatorBridge.h; path = Frameworks/SimulatorBridge.h; sourceTree = ""; }; 73 | 8D5B49B6048680CD000E48DA /* iPhone Simulator Capture.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "iPhone Simulator Capture.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; 74 | 8D5B49B7048680CD000E48DA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 75 | D2F7E65807B2D6F200F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 76 | /* End PBXFileReference section */ 77 | 78 | /* Begin PBXFrameworksBuildPhase section */ 79 | 8D5B49B3048680CD000E48DA /* Frameworks */ = { 80 | isa = PBXFrameworksBuildPhase; 81 | buildActionMask = 2147483647; 82 | files = ( 83 | 8D5B49B4048680CD000E48DA /* Cocoa.framework in Frameworks */, 84 | 6300CFE1108570D500ADF370 /* QTKit.framework in Frameworks */, 85 | ); 86 | runOnlyForDeploymentPostprocessing = 0; 87 | }; 88 | /* End PBXFrameworksBuildPhase section */ 89 | 90 | /* Begin PBXGroup section */ 91 | 089C166AFE841209C02AAC07 /* Simulator Plugin */ = { 92 | isa = PBXGroup; 93 | children = ( 94 | 63B4F746108A5A7C0003CA1F /* Notes.rtf */, 95 | 638CCA4D11F9374C00323CE0 /* Classes */, 96 | 63B4F69D108A4E0F0003CA1F /* Categories */, 97 | 32C88E010371C26100C91783 /* Other Sources */, 98 | 089C167CFE841241C02AAC07 /* Resources */, 99 | 089C1671FE841209C02AAC07 /* Frameworks and Libraries */, 100 | 19C28FB8FE9D52D311CA2CBB /* Products */, 101 | ); 102 | name = "Simulator Plugin"; 103 | sourceTree = ""; 104 | }; 105 | 089C1671FE841209C02AAC07 /* Frameworks and Libraries */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | 637FD44111A74C3E00566C47 /* CommonMacros */, 109 | 63B4FBE4108BDB5B0003CA1F /* iPhone Simulator.h */, 110 | 63B4FCC1108BE6760003CA1F /* SimulatorBridge.h */, 111 | 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */, 112 | 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */, 113 | ); 114 | name = "Frameworks and Libraries"; 115 | sourceTree = ""; 116 | }; 117 | 089C167CFE841241C02AAC07 /* Resources */ = { 118 | isa = PBXGroup; 119 | children = ( 120 | 638CCA7A11F938D900323CE0 /* Images */, 121 | 63B4FC4C108BE0400003CA1F /* FakeApps */, 122 | 8D5B49B7048680CD000E48DA /* Info.plist */, 123 | 089C167DFE841241C02AAC07 /* InfoPlist.strings */, 124 | 6300D12610861EF600ADF370 /* PluginController.xib */, 125 | 63B4F6AB108A508E0003CA1F /* Preferences.xib */, 126 | ); 127 | name = Resources; 128 | sourceTree = ""; 129 | }; 130 | 1058C7ACFEA557BF11CA2CBB /* Linked Frameworks */ = { 131 | isa = PBXGroup; 132 | children = ( 133 | 1058C7ADFEA557BF11CA2CBB /* Cocoa.framework */, 134 | ); 135 | name = "Linked Frameworks"; 136 | sourceTree = ""; 137 | }; 138 | 1058C7AEFEA557BF11CA2CBB /* Other Frameworks */ = { 139 | isa = PBXGroup; 140 | children = ( 141 | 089C167FFE841241C02AAC07 /* AppKit.framework */, 142 | D2F7E65807B2D6F200F64583 /* CoreData.framework */, 143 | 089C1672FE841209C02AAC07 /* Foundation.framework */, 144 | 6300CFE0108570D500ADF370 /* QTKit.framework */, 145 | ); 146 | name = "Other Frameworks"; 147 | sourceTree = ""; 148 | }; 149 | 19C28FB8FE9D52D311CA2CBB /* Products */ = { 150 | isa = PBXGroup; 151 | children = ( 152 | 8D5B49B6048680CD000E48DA /* iPhone Simulator Capture.bundle */, 153 | ); 154 | name = Products; 155 | sourceTree = ""; 156 | }; 157 | 32C88E010371C26100C91783 /* Other Sources */ = { 158 | isa = PBXGroup; 159 | children = ( 160 | 32DBCF630370AF2F00C91783 /* Simulator Plugin_Prefix.pch */, 161 | ); 162 | name = "Other Sources"; 163 | sourceTree = ""; 164 | }; 165 | 637FD44111A74C3E00566C47 /* CommonMacros */ = { 166 | isa = PBXGroup; 167 | children = ( 168 | 637FD44211A74C3E00566C47 /* DABCommonMacros.h */, 169 | 637FD44311A74C3E00566C47 /* SynthesizeSingleton.h */, 170 | 637FD44411A74C3E00566C47 /* DebugLog.h */, 171 | 637FD44511A74C3E00566C47 /* IsEmpty.h */, 172 | 637FD44611A74C3E00566C47 /* CustomProperties.h */, 173 | ); 174 | name = CommonMacros; 175 | path = Frameworks/CommonMacros; 176 | sourceTree = ""; 177 | }; 178 | 638CCA4D11F9374C00323CE0 /* Classes */ = { 179 | isa = PBXGroup; 180 | children = ( 181 | 6300CDFB1085394200ADF370 /* ISCController.h */, 182 | 6300CDFC1085394200ADF370 /* ISCController.m */, 183 | 637588C6108CE6A700E8C9C5 /* ISCRecording.h */, 184 | 637588C7108CE6A700E8C9C5 /* ISCRecording.m */, 185 | 63B4F17810892B5A0003CA1F /* ISCFrame.h */, 186 | 63B4F17910892B5A0003CA1F /* ISCFrame.m */, 187 | 63B4F4D8108980F20003CA1F /* ISCAppDelegateDelay.h */, 188 | 63B4F4D9108980F20003CA1F /* ISCAppDelegateDelay.m */, 189 | 63B4F6A8108A4E930003CA1F /* ISCPreferenceController.h */, 190 | 63B4F6A9108A4E930003CA1F /* ISCPreferenceController.m */, 191 | 63758C96108D7E4200E8C9C5 /* DABTimeIntervalFormatter.h */, 192 | 63758C97108D7E4200E8C9C5 /* DABTimeIntervalFormatter.m */, 193 | 630CE45F11E687E700E6696C /* ISCDeviceType.h */, 194 | 630CE46011E687E700E6696C /* ISCDeviceType.m */, 195 | ); 196 | path = Classes; 197 | sourceTree = ""; 198 | }; 199 | 638CCA7A11F938D900323CE0 /* Images */ = { 200 | isa = PBXGroup; 201 | children = ( 202 | 6344830E1087C18700EB2CE7 /* Active.png */, 203 | 6344830C1087C17C00EB2CE7 /* Hover.png */, 204 | 63775E9B1086B2A600816786 /* RecordButton.png */, 205 | 63775EA51086B3BF00816786 /* StopButton.png */, 206 | 63684EE810880E2100A390D5 /* Overlay.png */, 207 | ); 208 | path = Images; 209 | sourceTree = ""; 210 | }; 211 | 63B4F69D108A4E0F0003CA1F /* Categories */ = { 212 | isa = PBXGroup; 213 | children = ( 214 | 634483AF1087DB8100EB2CE7 /* ImageRect.h */, 215 | 634483B01087DB8100EB2CE7 /* ImageRect.m */, 216 | 6378D6BA10B3310500FF021A /* ISCArraySections.h */, 217 | 6378D6BB10B3310500FF021A /* ISCArraySections.m */, 218 | ); 219 | path = Categories; 220 | sourceTree = ""; 221 | }; 222 | /* End PBXGroup section */ 223 | 224 | /* Begin PBXNativeTarget section */ 225 | 8D5B49AC048680CD000E48DA /* iPhone Simulator Capture */ = { 226 | isa = PBXNativeTarget; 227 | buildConfigurationList = 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "iPhone Simulator Capture" */; 228 | buildPhases = ( 229 | 8D5B49AF048680CD000E48DA /* Resources */, 230 | 8D5B49B1048680CD000E48DA /* Sources */, 231 | 8D5B49B3048680CD000E48DA /* Frameworks */, 232 | 6300CE5A10853DB700ADF370 /* ShellScript */, 233 | ); 234 | buildRules = ( 235 | ); 236 | dependencies = ( 237 | ); 238 | name = "iPhone Simulator Capture"; 239 | productInstallPath = "$(HOME)/Library/Bundles"; 240 | productName = "Simulator Plugin"; 241 | productReference = 8D5B49B6048680CD000E48DA /* iPhone Simulator Capture.bundle */; 242 | productType = "com.apple.product-type.bundle"; 243 | }; 244 | /* End PBXNativeTarget section */ 245 | 246 | /* Begin PBXProject section */ 247 | 089C1669FE841209C02AAC07 /* Project object */ = { 248 | isa = PBXProject; 249 | attributes = { 250 | LastUpgradeCheck = 0420; 251 | ORGANIZATIONNAME = "David Beck"; 252 | }; 253 | buildConfigurationList = 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "iPhone Simulator Capture" */; 254 | compatibilityVersion = "Xcode 3.2"; 255 | developmentRegion = English; 256 | hasScannedForEncodings = 1; 257 | knownRegions = ( 258 | en, 259 | ); 260 | mainGroup = 089C166AFE841209C02AAC07 /* Simulator Plugin */; 261 | projectDirPath = ""; 262 | projectRoot = ""; 263 | targets = ( 264 | 8D5B49AC048680CD000E48DA /* iPhone Simulator Capture */, 265 | ); 266 | }; 267 | /* End PBXProject section */ 268 | 269 | /* Begin PBXResourcesBuildPhase section */ 270 | 8D5B49AF048680CD000E48DA /* Resources */ = { 271 | isa = PBXResourcesBuildPhase; 272 | buildActionMask = 2147483647; 273 | files = ( 274 | 8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */, 275 | 6300D12710861EF600ADF370 /* PluginController.xib in Resources */, 276 | 63775E9D1086B2A600816786 /* RecordButton.png in Resources */, 277 | 63775EA61086B3BF00816786 /* StopButton.png in Resources */, 278 | 6344830D1087C17C00EB2CE7 /* Hover.png in Resources */, 279 | 6344830F1087C18700EB2CE7 /* Active.png in Resources */, 280 | 63684EE910880E2100A390D5 /* Overlay.png in Resources */, 281 | 63B4F6AC108A508E0003CA1F /* Preferences.xib in Resources */, 282 | 63B4FC5F108BE0400003CA1F /* FakeApps in Resources */, 283 | ); 284 | runOnlyForDeploymentPostprocessing = 0; 285 | }; 286 | /* End PBXResourcesBuildPhase section */ 287 | 288 | /* Begin PBXShellScriptBuildPhase section */ 289 | 6300CE5A10853DB700ADF370 /* ShellScript */ = { 290 | isa = PBXShellScriptBuildPhase; 291 | buildActionMask = 2147483647; 292 | files = ( 293 | ); 294 | inputPaths = ( 295 | ); 296 | outputPaths = ( 297 | ); 298 | runOnlyForDeploymentPostprocessing = 0; 299 | shellPath = /bin/sh; 300 | shellScript = "LIBRARY_DIR=\"\"\nif [ -a \"/Library/Application Support/SIMBL\" ]; then\n LIBRARY_DIR=\"/Library\"\nelif [ -a \"${USER_LIBRARY_DIR}/Application Support/SIMBL\" ]; then\n LIBRARY_DIR=${USER_LIBRARY_DIR}\nelse\n echo \"Cannot find SIMBL installation\"\n exit 1\nfi\n\n# clean up any previous products/symbolic links in the Internet Plug-Ins folder\nif [ -a \"${LIBRARY_DIR}/Application Support/SIMBL/Plugins/${FULL_PRODUCT_NAME}\" ]; then\n rm -Rf \"${LIBRARY_DIR}/Application Support/SIMBL/Plugins/${FULL_PRODUCT_NAME}\"\nfi\n\n# Depending on the build configuration, either copy or link to the most recent product\nif [ \"${CONFIGURATION}\" == \"Debug\" ]; then\n # if we're debugging, add a symbolic link to the plug-in\n ln -sf \"${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}\" \\\n \"${LIBRARY_DIR}/Application Support/SIMBL/Plugins/${FULL_PRODUCT_NAME}\"\nelif [ \"${CONFIGURATION}\" == \"Release\" ]; then\n # if we're compiling for release, just copy the plugin to the Internet Plug-ins folder\n cp -Rfv \"${TARGET_BUILD_DIR}/${FULL_PRODUCT_NAME}\" \\\n \"${LIBRARY_DIR}/Application Support/SIMBL/Plugins/${FULL_PRODUCT_NAME}\"\nfi"; 301 | }; 302 | /* End PBXShellScriptBuildPhase section */ 303 | 304 | /* Begin PBXSourcesBuildPhase section */ 305 | 8D5B49B1048680CD000E48DA /* Sources */ = { 306 | isa = PBXSourcesBuildPhase; 307 | buildActionMask = 2147483647; 308 | files = ( 309 | 6300CDFD1085394200ADF370 /* ISCController.m in Sources */, 310 | 634483B11087DB8100EB2CE7 /* ImageRect.m in Sources */, 311 | 63B4F17A10892B5A0003CA1F /* ISCFrame.m in Sources */, 312 | 63B4F4DA108980F20003CA1F /* ISCAppDelegateDelay.m in Sources */, 313 | 63B4F6AA108A4E930003CA1F /* ISCPreferenceController.m in Sources */, 314 | 637588C8108CE6A700E8C9C5 /* ISCRecording.m in Sources */, 315 | 63758C98108D7E4200E8C9C5 /* DABTimeIntervalFormatter.m in Sources */, 316 | 6378D6BC10B3310500FF021A /* ISCArraySections.m in Sources */, 317 | 630CE46111E687E700E6696C /* ISCDeviceType.m in Sources */, 318 | ); 319 | runOnlyForDeploymentPostprocessing = 0; 320 | }; 321 | /* End PBXSourcesBuildPhase section */ 322 | 323 | /* Begin PBXVariantGroup section */ 324 | 089C167DFE841241C02AAC07 /* InfoPlist.strings */ = { 325 | isa = PBXVariantGroup; 326 | children = ( 327 | 089C167EFE841241C02AAC07 /* English */, 328 | ); 329 | name = InfoPlist.strings; 330 | sourceTree = ""; 331 | }; 332 | /* End PBXVariantGroup section */ 333 | 334 | /* Begin XCBuildConfiguration section */ 335 | 1DEB913B08733D840010E9CD /* Debug */ = { 336 | isa = XCBuildConfiguration; 337 | buildSettings = { 338 | ALWAYS_SEARCH_USER_PATHS = NO; 339 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 340 | COPY_PHASE_STRIP = NO; 341 | GCC_DYNAMIC_NO_PIC = NO; 342 | GCC_MODEL_TUNING = G5; 343 | GCC_OPTIMIZATION_LEVEL = 0; 344 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 345 | GCC_PREFIX_HEADER = "Simulator Plugin_Prefix.pch"; 346 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 347 | INFOPLIST_FILE = Info.plist; 348 | INSTALL_PATH = "$(HOME)/Library/Bundles"; 349 | PRODUCT_NAME = "iPhone Simulator Capture"; 350 | SDKROOT = macosx; 351 | WRAPPER_EXTENSION = bundle; 352 | }; 353 | name = Debug; 354 | }; 355 | 1DEB913C08733D840010E9CD /* Release */ = { 356 | isa = XCBuildConfiguration; 357 | buildSettings = { 358 | ALWAYS_SEARCH_USER_PATHS = NO; 359 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 360 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 361 | GCC_ENABLE_OBJC_GC = supported; 362 | GCC_MODEL_TUNING = G5; 363 | GCC_PRECOMPILE_PREFIX_HEADER = YES; 364 | GCC_PREFIX_HEADER = "Simulator Plugin_Prefix.pch"; 365 | GCC_VERSION = com.apple.compilers.llvm.clang.1_0; 366 | INFOPLIST_FILE = Info.plist; 367 | INSTALL_PATH = "$(HOME)/Library/Bundles"; 368 | PRODUCT_NAME = "iPhone Simulator Capture"; 369 | SDKROOT = macosx; 370 | WRAPPER_EXTENSION = bundle; 371 | }; 372 | name = Release; 373 | }; 374 | 1DEB913F08733D840010E9CD /* Debug */ = { 375 | isa = XCBuildConfiguration; 376 | buildSettings = { 377 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 378 | GCC_C_LANGUAGE_STANDARD = gnu99; 379 | GCC_OPTIMIZATION_LEVEL = 0; 380 | GCC_PREPROCESSOR_DEFINITIONS = "DEBUG_MODE=YES"; 381 | GCC_VERSION = ""; 382 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 383 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 384 | GCC_WARN_UNUSED_VARIABLE = YES; 385 | MACOSX_DEPLOYMENT_TARGET = 10.6; 386 | ONLY_ACTIVE_ARCH = NO; 387 | SDKROOT = macosx; 388 | VALID_ARCHS = "i386 x86_64"; 389 | }; 390 | name = Debug; 391 | }; 392 | 1DEB914008733D840010E9CD /* Release */ = { 393 | isa = XCBuildConfiguration; 394 | buildSettings = { 395 | ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; 396 | GCC_C_LANGUAGE_STANDARD = gnu99; 397 | GCC_VERSION = ""; 398 | GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; 399 | GCC_WARN_ABOUT_RETURN_TYPE = YES; 400 | GCC_WARN_UNUSED_VARIABLE = YES; 401 | MACOSX_DEPLOYMENT_TARGET = 10.6; 402 | ONLY_ACTIVE_ARCH = NO; 403 | SDKROOT = macosx; 404 | VALID_ARCHS = "i386 x86_64"; 405 | }; 406 | name = Release; 407 | }; 408 | /* End XCBuildConfiguration section */ 409 | 410 | /* Begin XCConfigurationList section */ 411 | 1DEB913A08733D840010E9CD /* Build configuration list for PBXNativeTarget "iPhone Simulator Capture" */ = { 412 | isa = XCConfigurationList; 413 | buildConfigurations = ( 414 | 1DEB913B08733D840010E9CD /* Debug */, 415 | 1DEB913C08733D840010E9CD /* Release */, 416 | ); 417 | defaultConfigurationIsVisible = 0; 418 | defaultConfigurationName = Release; 419 | }; 420 | 1DEB913E08733D840010E9CD /* Build configuration list for PBXProject "iPhone Simulator Capture" */ = { 421 | isa = XCConfigurationList; 422 | buildConfigurations = ( 423 | 1DEB913F08733D840010E9CD /* Debug */, 424 | 1DEB914008733D840010E9CD /* Release */, 425 | ); 426 | defaultConfigurationIsVisible = 0; 427 | defaultConfigurationName = Release; 428 | }; 429 | /* End XCConfigurationList section */ 430 | }; 431 | rootObject = 089C1669FE841209C02AAC07 /* Project object */; 432 | } 433 | -------------------------------------------------------------------------------- /PluginController.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1050 5 | 10J869 6 | 1306 7 | 1038.35 8 | 461.00 9 | 10 | com.apple.InterfaceBuilder.CocoaPlugin 11 | 1306 12 | 13 | 14 | YES 15 | NSView 16 | NSMenu 17 | NSWindowTemplate 18 | NSMenuItem 19 | NSProgressIndicator 20 | NSTextField 21 | NSTextFieldCell 22 | NSButtonCell 23 | NSButton 24 | NSUserDefaultsController 25 | NSCustomObject 26 | 27 | 28 | YES 29 | com.apple.InterfaceBuilder.CocoaPlugin 30 | 31 | 32 | YES 33 | 34 | YES 35 | 36 | 37 | 38 | 39 | YES 40 | 41 | ISCController 42 | 43 | 44 | FirstResponder 45 | 46 | 47 | NSApplication 48 | 49 | 50 | Recording 51 | 52 | 2147483647 53 | 54 | NSImage 55 | NSMenuCheckmark 56 | 57 | 58 | NSImage 59 | NSMenuMixedState 60 | 61 | submenuAction: 62 | 63 | Recording 64 | 65 | YES 66 | 67 | 68 | Save Movie 69 | s 70 | 1048576 71 | 2147483647 72 | 73 | 74 | 75 | 76 | 77 | YES 78 | YES 79 | 80 | 81 | 2147483647 82 | 83 | 84 | 85 | 86 | 87 | Recording Preferences 88 | 89 | 2147483647 90 | 91 | 92 | 93 | 94 | 95 | Recording 96 | r 97 | 1048576 98 | 2147483647 99 | 100 | 101 | 102 | 103 | YES 104 | 105 | 106 | 107 | 8343 108 | 2 109 | {{140, 374}, {194, 84}} 110 | -461896704 111 | Duration 112 | NSPanel 113 | 114 | 115 | 116 | 256 117 | 118 | YES 119 | 120 | 121 | 268 122 | {{19, 22}, {40, 40}} 123 | 124 | 125 | 126 | YES 127 | 2 128 | YES 129 | 130 | 67239424 131 | 134217728 132 | 133 | 134 | LucidaGrande 135 | 13 136 | 1044 137 | 138 | 139 | 1212961023 140 | 130 141 | 142 | NSImage 143 | RecordButton 144 | 145 | 146 | NSImage 147 | StopButton 148 | 149 | 150 | 151 | 400 152 | 75 153 | 154 | 155 | 156 | 157 | 266 158 | {{54, 20}, {123, 44}} 159 | 160 | 161 | 162 | YES 163 | 2 164 | YES 165 | 166 | 68288064 167 | 71304192 168 | 0:00 169 | 170 | LucidaGrande 171 | 36 172 | 16 173 | 174 | 0:00 175 | 176 | 177 | 6 178 | System 179 | controlColor 180 | 181 | 3 182 | MC42NjY2NjY2NjY3AA 183 | 184 | 185 | 186 | 1 187 | MSAxIDEAA 188 | 189 | 190 | 191 | 192 | 193 | -2147482358 194 | 195 | {{18, 44}, {158, 20}} 196 | 197 | 198 | 199 | 2 200 | 16392 201 | 1 202 | 203 | 204 | {{7, 11}, {194, 84}} 205 | 206 | 207 | 208 | 2 209 | 210 | {{0, 0}, {1440, 878}} 211 | {1e+13, 1e+13} 212 | duration 213 | 214 | 215 | YES 216 | 217 | 218 | DABTimeIntervalFormatter 219 | 220 | 221 | ISCPreferenceController 222 | 223 | 224 | 225 | 226 | YES 227 | 228 | 229 | saveMovie: 230 | 231 | 232 | 233 | 10 234 | 235 | 236 | 237 | menu 238 | 239 | 240 | 241 | 17 242 | 243 | 244 | 245 | startStopRecording: 246 | 247 | 248 | 249 | 35 250 | 251 | 252 | 253 | makeKeyAndOrderFront: 254 | 255 | 256 | 257 | 48 258 | 259 | 260 | 261 | indicator 262 | 263 | 264 | 265 | 52 266 | 267 | 268 | 269 | visible: values.ISCRecordPanelVisible 270 | 271 | 272 | 273 | 274 | 275 | visible: values.ISCRecordPanelVisible 276 | visible 277 | values.ISCRecordPanelVisible 278 | 2 279 | 280 | 281 | 87 282 | 283 | 284 | 285 | showWindow: 286 | 287 | 288 | 289 | 91 290 | 291 | 292 | 293 | recordButton 294 | 295 | 296 | 297 | 92 298 | 299 | 300 | 301 | value: recording.length 302 | 303 | 304 | 305 | 306 | 307 | value: recording.length 308 | value 309 | recording.length 310 | 2 311 | 312 | 313 | 109 314 | 315 | 316 | 317 | formatter 318 | 319 | 320 | 321 | 111 322 | 323 | 324 | 325 | lengthLabel 326 | 327 | 328 | 329 | 112 330 | 331 | 332 | 333 | 334 | YES 335 | 336 | 0 337 | 338 | 339 | 340 | 341 | 342 | -2 343 | 344 | 345 | File's Owner 346 | 347 | 348 | -1 349 | 350 | 351 | First Responder 352 | 353 | 354 | -3 355 | 356 | 357 | Application 358 | 359 | 360 | 15 361 | 362 | 363 | YES 364 | 365 | 366 | 367 | 368 | 369 | 11 370 | 371 | 372 | YES 373 | 374 | 375 | 376 | 377 | 378 | 379 | 380 | 381 | 6 382 | 383 | 384 | 385 | 386 | 18 387 | 388 | 389 | YES 390 | 391 | 392 | 393 | 394 | 395 | 19 396 | 397 | 398 | YES 399 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 33 407 | 408 | 409 | YES 410 | 411 | 412 | 413 | 414 | 415 | 34 416 | 417 | 418 | 419 | 420 | 46 421 | 422 | 423 | 424 | 425 | 51 426 | 427 | 428 | 429 | 430 | 54 431 | 432 | 433 | YES 434 | 435 | 436 | 437 | 438 | 439 | 55 440 | 441 | 442 | YES 443 | 444 | 445 | 446 | 447 | 79 448 | 449 | 450 | 451 | 452 | 38 453 | 454 | 455 | 456 | 457 | 95 458 | 459 | 460 | 461 | 462 | 110 463 | 464 | 465 | 466 | 467 | 89 468 | 469 | 470 | 471 | 472 | 473 | 474 | YES 475 | 476 | YES 477 | 11.IBEditorWindowLastContentRect 478 | 11.IBPluginDependency 479 | 110.IBPluginDependency 480 | 15.IBPluginDependency 481 | 18.IBEditorWindowLastContentRect 482 | 18.IBPluginDependency 483 | 18.IBWindowTemplateEditedContentRect 484 | 18.NSWindowTemplate.visibleAtLaunch 485 | 19.IBPluginDependency 486 | 33.IBPluginDependency 487 | 34.IBPluginDependency 488 | 38.IBPluginDependency 489 | 46.IBPluginDependency 490 | 51.IBPluginDependency 491 | 54.IBPluginDependency 492 | 55.IBPluginDependency 493 | 6.IBPluginDependency 494 | 89.IBPluginDependency 495 | 95.IBPluginDependency 496 | 497 | 498 | YES 499 | {{570, 525}, {157, 43}} 500 | com.apple.InterfaceBuilder.CocoaPlugin 501 | com.apple.InterfaceBuilder.CocoaPlugin 502 | com.apple.InterfaceBuilder.CocoaPlugin 503 | {{371, 250}, {194, 84}} 504 | com.apple.InterfaceBuilder.CocoaPlugin 505 | {{371, 250}, {194, 84}} 506 | 507 | com.apple.InterfaceBuilder.CocoaPlugin 508 | com.apple.InterfaceBuilder.CocoaPlugin 509 | com.apple.InterfaceBuilder.CocoaPlugin 510 | com.apple.InterfaceBuilder.CocoaPlugin 511 | com.apple.InterfaceBuilder.CocoaPlugin 512 | com.apple.InterfaceBuilder.CocoaPlugin 513 | com.apple.InterfaceBuilder.CocoaPlugin 514 | com.apple.InterfaceBuilder.CocoaPlugin 515 | com.apple.InterfaceBuilder.CocoaPlugin 516 | com.apple.InterfaceBuilder.CocoaPlugin 517 | com.apple.InterfaceBuilder.CocoaPlugin 518 | 519 | 520 | 521 | YES 522 | 523 | 524 | 525 | 526 | 527 | YES 528 | 529 | 530 | 531 | 532 | 112 533 | 534 | 535 | 536 | YES 537 | 538 | DABTimeIntervalFormatter 539 | NSFormatter 540 | 541 | IBProjectSource 542 | ./Classes/DABTimeIntervalFormatter.h 543 | 544 | 545 | 546 | ISCController 547 | NSObject 548 | 549 | YES 550 | 551 | YES 552 | saveMovie: 553 | startStopRecording: 554 | 555 | 556 | YES 557 | id 558 | id 559 | 560 | 561 | 562 | YES 563 | 564 | YES 565 | saveMovie: 566 | startStopRecording: 567 | 568 | 569 | YES 570 | 571 | saveMovie: 572 | id 573 | 574 | 575 | startStopRecording: 576 | id 577 | 578 | 579 | 580 | 581 | YES 582 | 583 | YES 584 | indicator 585 | lengthLabel 586 | menu 587 | recordButton 588 | 589 | 590 | YES 591 | NSProgressIndicator 592 | NSTextField 593 | NSMenuItem 594 | NSButton 595 | 596 | 597 | 598 | YES 599 | 600 | YES 601 | indicator 602 | lengthLabel 603 | menu 604 | recordButton 605 | 606 | 607 | YES 608 | 609 | indicator 610 | NSProgressIndicator 611 | 612 | 613 | lengthLabel 614 | NSTextField 615 | 616 | 617 | menu 618 | NSMenuItem 619 | 620 | 621 | recordButton 622 | NSButton 623 | 624 | 625 | 626 | 627 | IBProjectSource 628 | ./Classes/ISCController.h 629 | 630 | 631 | 632 | ISCPreferenceController 633 | NSWindowController 634 | 635 | YES 636 | 637 | YES 638 | arrangeFakeApps: 639 | installFakeApps: 640 | restart: 641 | 642 | 643 | YES 644 | id 645 | id 646 | id 647 | 648 | 649 | 650 | YES 651 | 652 | YES 653 | arrangeFakeApps: 654 | installFakeApps: 655 | restart: 656 | 657 | 658 | YES 659 | 660 | arrangeFakeApps: 661 | id 662 | 663 | 664 | installFakeApps: 665 | id 666 | 667 | 668 | restart: 669 | id 670 | 671 | 672 | 673 | 674 | YES 675 | 676 | YES 677 | fakeTimeField 678 | restartMessage 679 | 680 | 681 | YES 682 | NSTextField 683 | NSView 684 | 685 | 686 | 687 | YES 688 | 689 | YES 690 | fakeTimeField 691 | restartMessage 692 | 693 | 694 | YES 695 | 696 | fakeTimeField 697 | NSTextField 698 | 699 | 700 | restartMessage 701 | NSView 702 | 703 | 704 | 705 | 706 | IBProjectSource 707 | ./Classes/ISCPreferenceController.h 708 | 709 | 710 | 711 | 712 | 0 713 | IBCocoaFramework 714 | 715 | com.apple.InterfaceBuilder.CocoaPlugin.macosx 716 | 717 | 718 | 719 | com.apple.InterfaceBuilder.CocoaPlugin.macosx 720 | 721 | 722 | 723 | com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 724 | 725 | 726 | YES 727 | 3 728 | 729 | YES 730 | 731 | YES 732 | NSMenuCheckmark 733 | NSMenuMixedState 734 | RecordButton 735 | StopButton 736 | 737 | 738 | YES 739 | {9, 8} 740 | {7, 2} 741 | {50, 50} 742 | {50, 50} 743 | 744 | 745 | 746 | 747 | --------------------------------------------------------------------------------