├── 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 Simulator- 01iphone.xml
properties.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 |
13 |
27 |
31 |
38 |
39 | YES
40 |
41 | ISCController
42 |
43 |
44 | FirstResponder
45 |
46 |
47 | NSApplication
48 |
49 |
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 |
--------------------------------------------------------------------------------