├── Helium
├── Helium
│ ├── Sparkle.framework
│ │ ├── Versions
│ │ │ ├── Current
│ │ │ └── A
│ │ │ │ ├── Resources
│ │ │ │ ├── fr_CA.lproj
│ │ │ │ ├── pt.lproj
│ │ │ │ ├── Autoupdate.app
│ │ │ │ │ └── Contents
│ │ │ │ │ │ ├── PkgInfo
│ │ │ │ │ │ ├── MacOS
│ │ │ │ │ │ └── Autoupdate
│ │ │ │ │ │ ├── Resources
│ │ │ │ │ │ ├── AppIcon.icns
│ │ │ │ │ │ ├── SUStatus.nib
│ │ │ │ │ │ ├── ar.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── cs.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── da.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── de.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── el.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── en.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── es.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── fr.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── is.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── it.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ja.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ko.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── nb.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── nl.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── pl.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ro.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── ru.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── sk.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── sl.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── sv.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── th.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── tr.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── uk.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── pt_BR.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── pt_PT.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ ├── zh_CN.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ └── zh_TW.lproj
│ │ │ │ │ │ │ └── Sparkle.strings
│ │ │ │ │ │ └── Info.plist
│ │ │ │ ├── SUStatus.nib
│ │ │ │ ├── ar.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── cs.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── da.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── de.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── el.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── en.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── es.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── fr.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── is.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── it.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── ja.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── ko.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── nb.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── nl.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── pl.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── ro.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── ru.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── sk.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── sl.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── sv.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── th.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── tr.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── uk.lproj
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── pt_BR.lproj
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── pt_PT.lproj
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── zh_CN.lproj
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── zh_TW.lproj
│ │ │ │ │ ├── SUUpdateAlert.nib
│ │ │ │ │ ├── Sparkle.strings
│ │ │ │ │ ├── SUAutomaticUpdateAlert.nib
│ │ │ │ │ └── SUUpdatePermissionPrompt.nib
│ │ │ │ ├── Info.plist
│ │ │ │ └── SUModelTranslation.plist
│ │ │ │ ├── Sparkle
│ │ │ │ ├── Modules
│ │ │ │ └── module.modulemap
│ │ │ │ └── Headers
│ │ │ │ ├── SUExport.h
│ │ │ │ ├── SUVersionDisplayProtocol.h
│ │ │ │ ├── Sparkle.h
│ │ │ │ ├── SUVersionComparisonProtocol.h
│ │ │ │ ├── SUAppcast.h
│ │ │ │ ├── SUStandardVersionComparator.h
│ │ │ │ ├── SUErrors.h
│ │ │ │ ├── SUAppcastItem.h
│ │ │ │ └── SUUpdater.h
│ │ ├── Headers
│ │ ├── Modules
│ │ ├── Sparkle
│ │ └── Resources
│ ├── Images.xcassets
│ │ └── AppIcon.appiconset
│ │ │ ├── icon_1024.png
│ │ │ ├── icon_128.png
│ │ │ ├── icon_16.png
│ │ │ ├── icon_256.png
│ │ │ ├── icon_32.png
│ │ │ ├── icon_512.png
│ │ │ ├── icon_64.png
│ │ │ └── Contents.json
│ ├── Helium-Bridging-Header.h
│ ├── WKWebViewPrivate.h
│ ├── HeliumPanel.swift
│ ├── StringHelpers.swift
│ ├── UserSettings.swift
│ ├── dsa_pub.pem
│ ├── Info.plist
│ ├── AppDelegate.swift
│ ├── WebViewController.swift
│ ├── UrlHelpers.swift
│ ├── HeliumPanelController.swift
│ └── Base.lproj
│ │ └── Main.storyboard
├── HeliumShareExtension
│ ├── icon.icns
│ ├── Info.plist
│ ├── ShareViewController.swift
│ └── Base.lproj
│ │ └── ShareViewController.xib
├── Helium.xcodeproj
│ ├── project.xcworkspace
│ │ └── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── xcschemes
│ │ │ └── Helium.xcscheme
│ └── project.pbxproj
└── HeliumTests
│ ├── Info.plist
│ └── HeliumTests.swift
├── helium_start.html
├── .gitignore
├── README.md
├── LICENSE
├── .travis.yml
└── HeliumUpdatesSparkleFeed.xml
/Helium/Helium/Sparkle.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Modules:
--------------------------------------------------------------------------------
1 | Versions/Current/Modules
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Sparkle:
--------------------------------------------------------------------------------
1 | Versions/Current/Sparkle
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr_CA.lproj:
--------------------------------------------------------------------------------
1 | fr.lproj
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt.lproj:
--------------------------------------------------------------------------------
1 | pt_BR.lproj
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/PkgInfo:
--------------------------------------------------------------------------------
1 | APPL????
--------------------------------------------------------------------------------
/Helium/HeliumShareExtension/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/HeliumShareExtension/icon.icns
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Sparkle:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Sparkle
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_1024.png
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_128.png
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_16.png
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_256.png
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_32.png
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_512.png
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Images.xcassets/AppIcon.appiconset/icon_64.png
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/SUStatus.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/SUStatus.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module Sparkle {
2 | umbrella header "Sparkle.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/Helium/Helium/Helium-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | //
2 | // Use this file to import your target's public headers that you would like to expose to Swift.
3 | //
4 |
5 | #import "WKWebViewPrivate.h"
6 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ar.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/cs.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/da.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/el.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/is.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ja.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ko.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nb.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pl.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ro.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sk.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sl.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/th.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/tr.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/uk.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUAutomaticUpdateAlert.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/MacOS/Autoupdate
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_BR.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/pt_PT.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_CN.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/zh_TW.lproj/SUUpdatePermissionPrompt.nib
--------------------------------------------------------------------------------
/Helium/Helium.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/AppIcon.icns
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/SUStatus.nib
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ar.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/cs.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/da.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/de.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/el.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/en.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/es.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/fr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/is.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/it.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ja.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ko.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nb.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/nl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ro.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/ru.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sl.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/sv.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/th.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/tr.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/uk.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_BR.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/pt_PT.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_CN.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/stek29/Helium/HEAD/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Resources/zh_TW.lproj/Sparkle.strings
--------------------------------------------------------------------------------
/Helium/Helium/WKWebViewPrivate.h:
--------------------------------------------------------------------------------
1 | //
2 | // Test.h
3 | // Helium
4 | //
5 | // Created by Jaden Geller on 4/13/15.
6 | // Copyright (c) 2015 Jaden Geller. All rights reserved.
7 | //
8 |
9 | @import WebKit;
10 |
11 | @interface WKWebView (Privates)
12 |
13 | @property (copy, setter=_setCustomUserAgent:) NSString *_customUserAgent;
14 |
15 | @property (nonatomic, readonly) NSString *_userAgent;
16 |
17 | @end
18 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUExport.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUExport.h
3 | // Sparkle
4 | //
5 | // Created by Jake Petroules on 2014-08-23.
6 | // Copyright (c) 2014 Sparkle Project. All rights reserved.
7 | //
8 |
9 | #ifndef SUEXPORT_H
10 | #define SUEXPORT_H
11 |
12 | #ifdef BUILDING_SPARKLE
13 | #define SU_EXPORT __attribute__((visibility("default")))
14 | #else
15 | #define SU_EXPORT
16 | #endif
17 |
18 | #endif
19 |
--------------------------------------------------------------------------------
/helium_start.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
13 | Navigate to a webpage using the Location menu in the menubar.
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | build/
4 | *.pbxuser
5 | !default.pbxuser
6 | *.mode1v3
7 | !default.mode1v3
8 | *.mode2v3
9 | !default.mode2v3
10 | *.perspectivev3
11 | !default.perspectivev3
12 | xcuserdata
13 | *.xccheckout
14 | *.moved-aside
15 | DerivedData
16 | *.hmap
17 | *.ipa
18 | *.xcuserstate
19 |
20 | # CocoaPods
21 | #
22 | # We recommend against adding the Pods directory to your .gitignore. However
23 | # you should judge for yourself, the pros and cons are mentioned at:
24 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
25 | #
26 | #Pods/
27 |
28 | .DS_Store
29 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUVersionDisplayProtocol.h
3 | // EyeTV
4 | //
5 | // Created by Uli Kusterer on 08.12.09.
6 | // Copyright 2009 Elgato Systems GmbH. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "SUExport.h"
11 |
12 | /*!
13 | Applies special display formatting to version numbers.
14 | */
15 | @protocol SUVersionDisplay
16 |
17 | /*!
18 | Formats two version strings.
19 |
20 | Both versions are provided so that important distinguishing information
21 | can be displayed while also leaving out unnecessary/confusing parts.
22 | */
23 | - (void)formatVersion:(NSString **)inOutVersionA andVersion:(NSString **)inOutVersionB;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/Sparkle.h:
--------------------------------------------------------------------------------
1 | //
2 | // Sparkle.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07)
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SPARKLE_H
10 | #define SPARKLE_H
11 |
12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless
13 | // there are name-space collisions) so we can list all of them to start with:
14 |
15 | #import
16 | #import
17 | #import
18 | #import
19 | #import
20 | #import
21 | #import
22 |
23 | #endif
24 |
--------------------------------------------------------------------------------
/Helium/HeliumTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1
23 |
24 |
25 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUVersionComparisonProtocol.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 12/21/07.
6 | // Copyright 2007 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H
10 | #define SUVERSIONCOMPARISONPROTOCOL_H
11 |
12 | #import
13 | #import "SUExport.h"
14 |
15 | /*!
16 | Provides version comparison facilities for Sparkle.
17 | */
18 | @protocol SUVersionComparison
19 |
20 | /*!
21 | An abstract method to compare two version strings.
22 |
23 | Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a,
24 | and NSOrderedSame if they are equivalent.
25 | */
26 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD!
27 |
28 | @end
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUAppcast.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUAppcast.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/12/06.
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUAPPCAST_H
10 | #define SUAPPCAST_H
11 |
12 | #import
13 | #import "SUExport.h"
14 |
15 | @protocol SUAppcastDelegate;
16 |
17 | @class SUAppcastItem;
18 | SU_EXPORT @interface SUAppcast : NSObject
19 |
20 | @property (weak) id delegate;
21 | @property (copy) NSString *userAgentString;
22 |
23 | - (void)fetchAppcastFromURL:(NSURL *)url;
24 |
25 | @property (readonly, copy) NSArray *items;
26 | @end
27 |
28 | @protocol SUAppcastDelegate
29 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast;
30 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error;
31 | @end
32 |
33 | #endif
34 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Helium
2 | [](https://travis-ci.org/stek29/Helium)
3 |
4 | Helium is a floating browser window that allows you to watch media, browse the
5 | web and do much more while you stay productive. Your content will never fall
6 | behind your other windows even as you switch tasks. Helium supports a
7 | customizable translucency mode that allows you to simultaneously see your
8 | content and your work, without intercepting mouse clicks when it's translucent.
9 | You have the ability to click, drag, scroll behind your floating content.
10 |
11 | ## Getting Started
12 |
13 | Head over to http://heliumfloats.com and install the latest version of Helium.
14 | If you don't already allow apps from unidentified developers, you'll need to
15 | right-click and choose "Open" the first time you use the app (instead of
16 | opening the app with a single click).
17 |
18 | http://heliumfloats.com
19 |
20 | 
21 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUStandardVersionComparator.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUStandardVersionComparator.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 12/21/07.
6 | // Copyright 2007 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUSTANDARDVERSIONCOMPARATOR_H
10 | #define SUSTANDARDVERSIONCOMPARATOR_H
11 |
12 | #import "SUExport.h"
13 | #import "SUVersionComparisonProtocol.h"
14 |
15 | /*!
16 | Sparkle's default version comparator.
17 |
18 | This comparator is adapted from MacPAD, by Kevin Ballard.
19 | It's "dumb" in that it does essentially string comparison,
20 | in components split by character type.
21 | */
22 | SU_EXPORT @interface SUStandardVersionComparator : NSObject
23 |
24 | /*!
25 | Returns a singleton instance of the comparator.
26 | */
27 | + (SUStandardVersionComparator *)defaultComparator;
28 |
29 | /*!
30 | Compares version strings through textual analysis.
31 |
32 | See the implementation for more details.
33 | */
34 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB;
35 | @end
36 |
37 | #endif
38 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Jaden Geller
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUErrors.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUErrors.h
3 | // Sparkle
4 | //
5 | // Created by C.W. Betts on 10/13/14.
6 | // Copyright (c) 2014 Sparkle Project. All rights reserved.
7 | //
8 |
9 | #ifndef SUERRORS_H
10 | #define SUERRORS_H
11 |
12 | #import
13 | #import "SUExport.h"
14 |
15 | /**
16 | * Error domain used by Sparkle
17 | */
18 | SU_EXPORT extern NSString *const SUSparkleErrorDomain;
19 |
20 | typedef NS_ENUM(OSStatus, SUError) {
21 | // Appcast phase errors.
22 | SUAppcastParseError = 1000,
23 | SUNoUpdateError = 1001,
24 | SUAppcastError = 1002,
25 | SURunningFromDiskImageError = 1003,
26 |
27 | // Downlaod phase errors.
28 | SUTemporaryDirectoryError = 2000,
29 |
30 | // Extraction phase errors.
31 | SUUnarchivingError = 3000,
32 | SUSignatureError = 3001,
33 |
34 | // Installation phase errors.
35 | SUFileCopyFailure = 4000,
36 | SUAuthenticationFailure = 4001,
37 | SUMissingUpdateError = 4002,
38 | SUMissingInstallerToolError = 4003,
39 | SURelaunchError = 4004,
40 | SUInstallationError = 4005,
41 | SUDowngradeError = 4006
42 | };
43 |
44 | #endif
45 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: objective-c
2 | osx_image: xcode8.3
3 | xcode_project: Helium/Helium.xcodeproj
4 | xcode_scheme: Helium
5 | script:
6 | - set -o pipefail
7 | - xcodebuild -project $TRAVIS_XCODE_PROJECT -scheme $TRAVIS_XCODE_SCHEME -configuration
8 | Release build test | xcpretty
9 |
10 | before_deploy:
11 | - OUTPUTDIR="$PWD/Helium/build/Release"
12 | - cd $OUTPUTDIR
13 | - ditto -c -k --sequesterRsrc --keepParent "Helium.app" "Helium-$TRAVIS_TAG.zip"
14 | deploy:
15 | provider: releases
16 | api_key:
17 | secure: AhCUhASzVApSHhl2TLPggIDGEgdRpdU1YVlrnYCn9CZT2ZrfAommRU4WFOWldCEpoW+AJnXfGHIVUH7Mxp7D8VWT8Y03glezH5SjUMjFi7JYmuih6nLdVgEwXAKa3aSFE/pnJE1E6uOrW+WXcmCukfJg1KWoCbw+0bUVSswkLgLwVGZNC71/Dv2DEvBfCCL9d2t/nddMndaBu1PbWIWZ8h7FnImgcRg7RE/UntivcRI3zKPEfSzO17wObS+BgjWkFHjk/4HxBNdBeP8z3zGge8gj8rmvl6MG1Nl2kqRc3sN3kbAnarhCaHT+j7ilMAUds36wDI1xCWeXbhbkr4qjMg09XH3RKTs1OJGGhEdTfQkL+4ilVbCGlJHPk2/XEi8Dh997unmbdFHfJoXXEFExS027TJAD6PbR4QpanDKnw084mwbv71oO5LlkYAXeoiVWXr+vj1PxfYUaNoDcGgnmw3/Y91TXQGgbeICi0y8/h/pxoIUzPJp2oWFvaXG+6LiKSaaDXwhjs6jWI63vKixvTRvincVXQxAsx9igTcm7tZ4E4XBSk2p4oUt3oTBC+o9TwvTD1Wodh075P3kPcE6RGp4WaU7/ELoLblYE1B6obyOTe0TnGHpDQpATDupAby383RGQJwLDyesil7xelNydb9MBU2SyAz8ZUuvzzzYqpG0=
18 | file: $OUTPUTDIR/Helium-$TRAVIS_TAG.zip
19 | skip_cleanup: true
20 | on:
21 | repo: stek29/Helium
22 | tags: true
23 |
--------------------------------------------------------------------------------
/Helium/Helium/Images.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "16x16",
5 | "idiom" : "mac",
6 | "filename" : "icon_16.png",
7 | "scale" : "1x"
8 | },
9 | {
10 | "size" : "16x16",
11 | "idiom" : "mac",
12 | "filename" : "icon_32.png",
13 | "scale" : "2x"
14 | },
15 | {
16 | "size" : "32x32",
17 | "idiom" : "mac",
18 | "filename" : "icon_32.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "32x32",
23 | "idiom" : "mac",
24 | "filename" : "icon_64.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "128x128",
29 | "idiom" : "mac",
30 | "filename" : "icon_128.png",
31 | "scale" : "1x"
32 | },
33 | {
34 | "size" : "128x128",
35 | "idiom" : "mac",
36 | "filename" : "icon_256.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "256x256",
41 | "idiom" : "mac",
42 | "filename" : "icon_256.png",
43 | "scale" : "1x"
44 | },
45 | {
46 | "size" : "256x256",
47 | "idiom" : "mac",
48 | "filename" : "icon_512.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "512x512",
53 | "idiom" : "mac",
54 | "filename" : "icon_512.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "512x512",
59 | "idiom" : "mac",
60 | "filename" : "icon_1024.png",
61 | "scale" : "2x"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/Helium/Helium/HeliumPanel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Panel.swift
3 | // Helium
4 | //
5 | // Created by shdwprince on 8/10/16.
6 | // Copyright © 2016 Jaden Geller. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Cocoa
11 |
12 | // Sugar
13 | extension NSPoint {
14 | static func - (left: NSPoint, right: NSPoint) -> NSPoint {
15 | return NSPoint(x: left.x - right.x, y: left.y - right.y)
16 | }
17 | }
18 |
19 | class HeliumPanel: NSPanel {
20 | override var canBecomeKey: Bool {
21 | return true
22 | }
23 |
24 | override var canBecomeMain: Bool {
25 | return true
26 | }
27 |
28 | // nil when not dragging
29 | var previousMouseLocation: NSPoint?
30 |
31 | override func sendEvent(_ event: NSEvent) {
32 | switch event.type {
33 | case .flagsChanged:
34 | // If modifier key was released, dragging should be disabled
35 | if !event.modifierFlags.contains(.command) {
36 | previousMouseLocation = nil
37 | }
38 | case .leftMouseDown:
39 | if event.modifierFlags.contains(.command) {
40 | previousMouseLocation = event.locationInWindow
41 | }
42 | case .leftMouseUp:
43 | previousMouseLocation = nil
44 | case .leftMouseDragged:
45 | if let previousMouseLocation = previousMouseLocation {
46 | let delta = previousMouseLocation - event.locationInWindow
47 | let newOrigin = self.frame.origin - delta
48 | self.setFrameOrigin(newOrigin)
49 | return // don't pass event to super
50 | }
51 | default:
52 | break
53 | }
54 |
55 | super.sendEvent(event)
56 | }
57 |
58 | }
59 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUAppcastItem.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 3/12/06.
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUAPPCASTITEM_H
10 | #define SUAPPCASTITEM_H
11 |
12 | #include "SUExport.h"
13 |
14 | SU_EXPORT @interface SUAppcastItem : NSObject
15 | @property (copy, readonly) NSString *title;
16 | @property (copy, readonly) NSDate *date;
17 | @property (copy, readonly) NSString *itemDescription;
18 | @property (strong, readonly) NSURL *releaseNotesURL;
19 | @property (copy, readonly) NSString *DSASignature;
20 | @property (copy, readonly) NSString *minimumSystemVersion;
21 | @property (copy, readonly) NSString *maximumSystemVersion;
22 | @property (strong, readonly) NSURL *fileURL;
23 | @property (copy, readonly) NSString *versionString;
24 | @property (copy, readonly) NSString *displayVersionString;
25 | @property (copy, readonly) NSDictionary *deltaUpdates;
26 | @property (strong, readonly) NSURL *infoURL;
27 |
28 | // Initializes with data from a dictionary provided by the RSS class.
29 | - (instancetype)initWithDictionary:(NSDictionary *)dict;
30 | - (instancetype)initWithDictionary:(NSDictionary *)dict failureReason:(NSString **)error;
31 |
32 | @property (getter=isDeltaUpdate, readonly) BOOL deltaUpdate;
33 | @property (getter=isCriticalUpdate, readonly) BOOL criticalUpdate;
34 |
35 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions.
36 | @property (readonly, copy) NSDictionary *propertiesDictionary;
37 |
38 | - (NSURL *)infoURL;
39 |
40 | @end
41 |
42 | #endif
43 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 14C106a
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | Sparkle
11 | CFBundleIdentifier
12 | org.andymatuschak.Sparkle
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | Sparkle
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 1.9.0 git-ce22598
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.9.0
25 | DTCompiler
26 | com.apple.compilers.llvm.clang.1_0
27 | DTPlatformBuild
28 | 6A2008a
29 | DTPlatformVersion
30 | GM
31 | DTSDKBuild
32 | 14A382
33 | DTSDKName
34 | macosx10.10
35 | DTXcode
36 | 0611
37 | DTXcodeBuild
38 | 6A2008a
39 | SUAppendVersionNumber
40 | 1
41 | SUEnableAutomatedDowngrades
42 | 0
43 | SUNormalizeInstalledApplicationName
44 | 0
45 | SURelaunchToolName
46 | Autoupdate
47 |
48 |
49 |
--------------------------------------------------------------------------------
/Helium/HeliumShareExtension/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | Open in Helium
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIconFile
12 | icon
13 | CFBundleIdentifier
14 | $(PRODUCT_BUNDLE_IDENTIFIER)
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundleName
18 | $(PRODUCT_NAME)
19 | CFBundlePackageType
20 | XPC!
21 | CFBundleShortVersionString
22 | 1.9
23 | CFBundleSignature
24 | ????
25 | CFBundleVersion
26 | 19
27 | LSMinimumSystemVersion
28 | $(MACOSX_DEPLOYMENT_TARGET)
29 | NSExtension
30 |
31 | NSExtensionAttributes
32 |
33 | NSExtensionActivationRule
34 |
35 | NSExtensionActivationSupportsWebURLWithMaxCount
36 | 1
37 |
38 |
39 | NSExtensionPointIdentifier
40 | com.apple.share-services
41 | NSExtensionPrincipalClass
42 | $(PRODUCT_MODULE_NAME).ShareViewController
43 |
44 | NSHumanReadableCopyright
45 | Copyright © 2015 Jaden Geller. All rights reserved.
46 |
47 |
48 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/Autoupdate.app/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 14C106a
7 | CFBundleDevelopmentRegion
8 | English
9 | CFBundleExecutable
10 | Autoupdate
11 | CFBundleIconFile
12 | AppIcon
13 | CFBundleIdentifier
14 | org.sparkle-project.Sparkle.Autoupdate
15 | CFBundleInfoDictionaryVersion
16 | 6.0
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.9.0 git-ce22598
21 | CFBundleSignature
22 | ????
23 | CFBundleVersion
24 | 1.9.0
25 | DTCompiler
26 | com.apple.compilers.llvm.clang.1_0
27 | DTPlatformBuild
28 | 6A2008a
29 | DTPlatformVersion
30 | GM
31 | DTSDKBuild
32 | 14A382
33 | DTSDKName
34 | macosx10.10
35 | DTXcode
36 | 0611
37 | DTXcodeBuild
38 | 6A2008a
39 | LSBackgroundOnly
40 | 1
41 | LSMinimumSystemVersion
42 | 10.7
43 | LSUIElement
44 | 1
45 | NSMainNibFile
46 | MainMenu
47 | NSPrincipalClass
48 | NSApplication
49 |
50 |
51 |
--------------------------------------------------------------------------------
/Helium/Helium/StringHelpers.swift:
--------------------------------------------------------------------------------
1 | //
2 | // StringHelpers.swift
3 | // Helium
4 | //
5 | // Created by Samuel Beek on 16/03/16.
6 | // Copyright © 2016 Jaden Geller. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | extension String {
12 | func replacePrefix(_ prefix: String, replacement: String) -> String {
13 | if hasPrefix(prefix) {
14 | return replacement + substring(from: prefix.endIndex)
15 | } else {
16 | return self
17 | }
18 | }
19 |
20 | func indexOf(_ target: String) -> Int {
21 | let range = self.range(of: target)
22 | if let range = range {
23 | return self.characters.distance(from: self.startIndex, to: range.lowerBound)
24 | } else {
25 | return -1
26 | }
27 | }
28 | }
29 |
30 | // From http://nshipster.com/nsregularexpression/
31 | extension String {
32 | /// An `NSRange` that represents the full range of the string.
33 | var nsrange: NSRange {
34 | return NSRange(location: 0, length: utf16.count)
35 | }
36 |
37 | /// Returns a substring with the given `NSRange`,
38 | /// or `nil` if the range can't be converted.
39 | func substring(with nsrange: NSRange) -> String? {
40 | guard let range = nsrange.toRange()
41 | else { return nil }
42 | let start = UTF16Index(range.lowerBound)
43 | let end = UTF16Index(range.upperBound)
44 | return String(utf16[start.. Range? {
50 | guard let range = nsrange.toRange() else { return nil }
51 | let utf16Start = UTF16Index(range.lowerBound)
52 | let utf16End = UTF16Index(range.upperBound)
53 |
54 | guard let start = Index(utf16Start, within: self),
55 | let end = Index(utf16End, within: self)
56 | else { return nil }
57 |
58 | return start.. {
13 | private let key: String
14 | private let defaultValue: T
15 |
16 | init(_ userDefaultsKey: String, defaultValue: T) {
17 | self.key = userDefaultsKey
18 | self.defaultValue = defaultValue
19 | }
20 |
21 | var value: T {
22 | get {
23 | return self.get()
24 | }
25 | set (value) {
26 | self.set(value)
27 | }
28 | }
29 |
30 | private func get() -> T {
31 | if let value = UserDefaults.standard.object(forKey: self.key) as? T {
32 | return value
33 | } else {
34 | // Sets default value if failed
35 | set(self.defaultValue)
36 | return self.defaultValue
37 | }
38 | }
39 |
40 | private func set(_ value: T) {
41 | UserDefaults.standard.set(value as Any, forKey: self.key)
42 | }
43 | }
44 |
45 | static let disabledMagicURLs = Setting("disabledMagicURLs", defaultValue: false)
46 |
47 | static let disabledFullScreenFloat = Setting("disabledFullScreenFloat", defaultValue: false)
48 |
49 | static let opacityPercentage = Setting("opacityPercentage", defaultValue: 60)
50 | // See values in HeliumPanelController.TranslucencyPreference
51 | static let translucencyPreference = Setting("rawTranslucencyPreference", defaultValue: 0)
52 |
53 | static let homePageURL = Setting(
54 | "homePageURL",
55 | defaultValue: "https://cdn.rawgit.com/JadenGeller/Helium/master/helium_start.html"
56 | )
57 |
58 | static let userAgent = Setting(
59 | "userAgent",
60 | defaultValue: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30"
61 | // swiftlint:disable:previous line_length
62 | )
63 | }
64 |
--------------------------------------------------------------------------------
/Helium/HeliumTests/HeliumTests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HeliumTests.swift
3 | // HeliumTests
4 | //
5 | // Created by Jaden Geller on 4/9/15.
6 | // Copyright (c) 2015 Jaden Geller. All rights reserved.
7 | //
8 | // swiftlint:disable line_length
9 |
10 | import Cocoa
11 | import XCTest
12 |
13 | class MagicTests: XCTestCase {
14 | static func t(_ stringURL: String) -> String? {
15 | if let afterUrl = UrlHelpers.doMagic(stringURL: stringURL) {
16 | return afterUrl.absoluteString
17 | } else {
18 | return nil
19 | }
20 | }
21 |
22 | func testYoutube() {
23 | XCTAssertEqual(MagicTests.t("https://youtu.be"), nil)
24 | XCTAssertEqual(MagicTests.t("https://youtu.be/5z887j6gBr4"), "https://youtube.com/embed/5z887j6gBr4")
25 | XCTAssertEqual(MagicTests.t("youtu.be/xWcldHxHFpo&t=3h6m9s"), "https://youtube.com/embed/xWcldHxHFpo?start=11169")
26 | XCTAssertEqual(MagicTests.t("https://www.youtube.com/watch?v=q6EoRBvdVPQ?t=4"), "https://youtube.com/embed/q6EoRBvdVPQ?start=4")
27 | }
28 |
29 | func testTwitch() {
30 | XCTAssertEqual(MagicTests.t("https://twitch.tv/"), nil)
31 | XCTAssertEqual(MagicTests.t("https://twitch.tv/p/about"), nil)
32 | XCTAssertEqual(MagicTests.t("http://twitch.tv/playbattlegrounds"), "https://player.twitch.tv?html5&channel=playbattlegrounds")
33 | XCTAssertEqual(MagicTests.t("https://www.twitch.tv/videos/140064610"), "https://player.twitch.tv?html5&video=v140064610")
34 | }
35 |
36 | func testVimeo() {
37 | XCTAssertEqual(MagicTests.t("vimeo.com"), nil)
38 | XCTAssertEqual(MagicTests.t("https://vimeo.com/armanddijcks"), nil)
39 | XCTAssertEqual(MagicTests.t("vimeo.com/215405296"), "https://player.vimeo.com/video/215405296")
40 | }
41 | }
42 |
43 | class HelpersTest: XCTestCase {
44 | func testValidate() {
45 | XCTAssertEqual(UrlHelpers.isValid(urlString: "njknfs"), false)
46 | XCTAssertEqual(UrlHelpers.isValid(urlString: ""), false)
47 | XCTAssertEqual(UrlHelpers.isValid(urlString: "http://"), false)
48 | XCTAssertEqual(UrlHelpers.isValid(urlString: "http://example.com"), true)
49 | XCTAssertEqual(UrlHelpers.isValid(urlString: "https://note.it/?q=Spaces NOT escaped"), false)
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/Helium/Helium/dsa_pub.pem:
--------------------------------------------------------------------------------
1 | -----BEGIN PUBLIC KEY-----
2 | MIIGOzCCBC0GByqGSM44BAEwggQgAoICAQDB4QnrUAxQ8mnsiUM9ZoNP8CkLvBEK
3 | XtabEFABAScVQbm3+eYb7Pt4PLjCJTgVkbcFWE0/wf4cAT54HvjIalD2DGMXdW5O
4 | KGD+q0W+WL/wunKMi0mSPX6tMbxd3oPEXqFL8uXtJ0bifizK2fJbK6WvnBlI35oE
5 | HwViThGZ1Tj5zJDcuOno3xOoLeV76CZUY53dEUdEpr0qqH1cwjZEpmRsG4rhkV92
6 | lvD/aklWZ6FiCdZbcc38LJkxp953f/Md776EkwYy1bKkzUd4zSCWBFjUuphCMh64
7 | WKDl5qzUpQQRRU4XyHMEokXoMHTbjRdxVdqHFz/r3TpK+4IjTBVo/ZsdwCVer0ZG
8 | fF3HqBKZYSeDdMIKALnoFz0cPOjnZfF5z2z+9S6VUteJz6Mb/3l+vhCdIVFlPNra
9 | FGAUNCXQPOmUChWSEHBpw+iBnGLZrjElQdlQpdAbYbLfWF+yySyju/grX+Z5QmF/
10 | RA0MsT+tRf/F9Ozr05sKCeRzMgi3Cdj6rvsT1xLAbvjQp+GFPcqgTMhTR0zAB8MU
11 | CJXX+HvX9dh8ZlCp3/SZyUOf7FIG2FzJp66fD8HXE3unEqr0hYGZkMgULN4dey6w
12 | 3kFgogJuFlbj4QlgN2fzMuXWrAf0eYkzX1m+OCeSuMCz/M0fYvO8WLMGCrTEpBqH
13 | Crq/3r1D09SIqQIVAMzaW/mEtq2EW8YZaqEjGvrdujiXAoICABdFYqE2HFZpOfT+
14 | u1nZ56ajwF4SwLNSbLnagfcQa3By8SUJPd0Xyvclrwro49zelkyTpre5gIXnYzb/
15 | DXwl/AXp4lIUldTyraHnwXIsAB58QQZ3TrqFRyHvWX0ofK0KdmVmdFDN6Ij9hhPi
16 | FhX9DqoWjqWUJEShR+iZhYZRkojWaGH29ROat4zrYntqdUSl1s26om9Tpd6411as
17 | +oPvSss4Hl7FxcZLPn/16hO7oE3LnoiWMt7UNhFfYQiWRnbxNfRiXsg7PPPpXq64
18 | Jh+PrKk3PwjtIwzbfPgYLnehmxBAkwc/k08PnTE8Rcc9bzABXBrBaQBhjnt9eO6n
19 | reUWFZf/y4rpkzTWgDhkCft8h6Q2TkVIRwFv85bjFpFFBYDxe9RmZBdV/9dNAys/
20 | 0m+cmnvYDSXMyexQRu2LWJUTozvoX8Y3QiSNlfxiuukZkty50BUEgD+TOFU5autJ
21 | yqZkgjD4slhOIsUJW58/H9yUCtJ9smBqBJD622DomgddKObytbg8D9pI9PoLGW+h
22 | EAAclfTalbryspmhfpU8k6t8/kf2y4WqgdYfFtaMEabtpIgl0xAe6FmhaqUoGgFQ
23 | 1J5g5q60LHtXlSyOJTXyVw49V5HoHk8aVbravjtThTCxkIejxNUINVYHu/bqsSH2
24 | Iv2nJudMQhU29qGcD0q0tsyxNxcKA4ICBgACggIBAIHFSTLFdC8hqEFlUhNT9wdX
25 | f20bnNqkFoChJRVF3f/o4J05KwV8jNOpj8wKzveRH5bc4oitKbaPkcKu5EghR/Rf
26 | 77+V0t8bA/z/pT7IgKMj9HDFvJKLACqh9kxbuzwLvNMApcdsqNz/GI9BeQiNPlHh
27 | CSji1RRGPnMvNtBgz6f2pMG3ohjYdFbwjBYFEIW0MjYX3scCqtCi0ve/NGQrqZEM
28 | QKeoI0aG8iGceoQKwNLgeo6OGVgVK24r3Zv6zObRwVRswzXK0XK8RLh3Jcf3697A
29 | BiU1ky9rmg2qDc2mIIi7ILXAAXVNMgZSakdsK/PGLFpB3g11zXZnHPeuRQQH9lHo
30 | hBBLcPdo68OkexSf/t/25A/GuZO3sQRBHhlAw7jw18wqteXHoQnQiFl6K0hAbwAV
31 | hcA2hakoBbumQz5wo/c2decTUqragBbFioPpNLJ64AIQj3dt01c6Zv60/6aawDBA
32 | yFAO0/+DVQBJi6C5sATetZF2XdyOh6O9G4SVsMu1SgYcdQuxbLXXqL+dKnDuoAKT
33 | +7TDgLb6/MB994BmILIi3zK2H0S4dAcmM7L5RRZu7F/CRIh8WGni9WIaGmwO4Xbf
34 | FrGOl3GqLgjtNXjMavZRVB7r+0YuOgmA8XcaPdolpwxs+rPGiou04gnFpTYIqRz/
35 | 7q7l5x6pHs8g3VGh1i5g
36 | -----END PUBLIC KEY-----
37 |
--------------------------------------------------------------------------------
/Helium/Helium/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 2.0.2
21 | CFBundleSignature
22 | ????
23 | CFBundleURLTypes
24 |
25 |
26 | CFBundleTypeRole
27 | Viewer
28 | CFBundleURLName
29 | helium
30 | CFBundleURLSchemes
31 |
32 | helium
33 |
34 |
35 |
36 | CFBundleVersion
37 | 19
38 | LSApplicationCategoryType
39 | public.app-category.utilities
40 | LSMinimumSystemVersion
41 | $(MACOSX_DEPLOYMENT_TARGET)
42 | NSAppTransportSecurity
43 |
44 | NSAllowsArbitraryLoads
45 |
46 |
47 | NSHumanReadableCopyright
48 | Copyright © 2015 Jaden Geller. All rights reserved.
49 | NSMainStoryboardFile
50 | Main
51 | NSPrincipalClass
52 | NSApplication
53 | SUFeedURL
54 | https://rawgit.com/stek29/Helium/master/HeliumUpdatesSparkleFeed.xml
55 | SUPublicDSAKeyFile
56 | dsa_pub.pem
57 | NSServices
58 |
59 |
60 | NSPortName
61 | Helium
62 | NSRequiredContext
63 |
64 | NSTextContent
65 | URL
66 |
67 | NSSendTypes
68 |
69 | public.utf8-plain-text
70 |
71 | NSMessage
72 | handleURLPboard
73 | NSMenuItem
74 |
75 | default
76 | Open in Helium
77 |
78 |
79 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/Helium/Helium/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // Helium
4 | //
5 | // Created by Jaden Geller on 4/9/15.
6 | // Copyright (c) 2015 Jaden Geller. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 |
11 | @NSApplicationMain
12 | class AppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
13 |
14 | @IBOutlet weak var magicURLMenu: NSMenuItem!
15 | @IBOutlet weak var percentageMenu: NSMenuItem!
16 | @IBOutlet weak var fullScreenFloatMenu: NSMenuItem!
17 |
18 | func applicationWillFinishLaunching(_ notification: Notification) {
19 | NSAppleEventManager.shared().setEventHandler(
20 | self,
21 | andSelector: #selector(AppDelegate.handleURLEvent(_:withReply:)),
22 | forEventClass: AEEventClass(kInternetEventClass),
23 | andEventID: AEEventID(kAEGetURL)
24 | )
25 | }
26 |
27 | func applicationDidFinishLaunching(_ aNotification: Notification) {
28 | NSApp.servicesProvider = self
29 |
30 | magicURLMenu.state = UserSettings.disabledMagicURLs.value ? NSOffState : NSOnState
31 |
32 | fullScreenFloatMenu.state = UserSettings.disabledFullScreenFloat.value ? NSOffState : NSOnState
33 |
34 | let alpha = UserSettings.opacityPercentage.value
35 | let offset = alpha/10 - 1
36 | for (index, button) in percentageMenu.submenu!.items.enumerated() {
37 | (button).state = (offset == index) ? NSOnState : NSOffState
38 | }
39 | }
40 |
41 | func applicationWillTerminate(_ aNotification: Notification) {
42 | // Insert code here to tear down your application
43 | }
44 |
45 | @IBAction func magicURLRedirectToggled(_ sender: NSMenuItem) {
46 | sender.state = (sender.state == NSOnState) ? NSOffState : NSOnState
47 | UserSettings.disabledMagicURLs.value = (sender.state == NSOffState)
48 | }
49 |
50 | // MARK: - handleURLEvent
51 | // Called when the App opened via URL.
52 | @objc func handleURLEvent(_ event: NSAppleEventDescriptor, withReply reply: NSAppleEventDescriptor) {
53 |
54 | guard let keyDirectObject = event.paramDescriptor(forKeyword: AEKeyword(keyDirectObject)),
55 | let urlString = keyDirectObject.stringValue else {
56 | return print("Can't get URL from event")
57 | }
58 |
59 | // skip 'helium://'
60 | let index = urlString.index(urlString.startIndex, offsetBy: 9)
61 | let url = urlString.substring(from: index)
62 |
63 | NotificationCenter.default.post(name: Notification.Name(rawValue: "HeliumLoadURLString"), object: url)
64 | }
65 |
66 | @objc func handleURLPboard(_ pboard: NSPasteboard, userData: NSString, error: NSErrorPointer) {
67 | if let selection = pboard.string(forType: NSPasteboardTypeString) {
68 | // Notice: string will contain whole selection, not just the urls
69 | // So this may (and will) fail. It should instead find url in whole
70 | // Text somehow
71 | NotificationCenter.default.post(name: Notification.Name(rawValue: "HeliumLoadURLString"), object: selection)
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/Helium/HeliumShareExtension/Base.lproj/ShareViewController.xib:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
31 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/HeliumUpdatesSparkleFeed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Helium Changelog
5 | https://raw.githubusercontent.com/JadenGeller/Helium/master/HeliumUpdatesSparkleFeed.xml
6 | Most recent changes with links to updates.
7 | en
8 | -
9 | Version 1.9
10 |
11 |
14 | "Open in Helium" from Safari with the built-in share extension!
15 | Stays on top even as you switch between spaces—even full screen ones! (This can be disabled in preferences.)
16 | Navigation gestures like swipe to go back
17 |
18 | Last update:
19 |
20 | - Support for Netflix HTML5 player! (Bye, Silverlight!)
21 | - URL scheme improvements
22 | - Gatekeeper-compatible
23 | - Other bug fixes and minor features
24 | - Translucency preferences: "Always", "Mouse Over", "Mouse Outside"
25 |
- Updated menu bar interface to make it easier to use
26 |
27 | ]]>
28 |
29 | Fri, 30 Oct 2015 19:35:00 -0000
30 |
31 |
37 |
38 | -
39 | Version 1.8
40 |
41 |
44 | Translucency preferences: "Always", "Mouse Over", "Mouse Outside"
45 | Updated menu bar interface to make it easier to use
46 |
47 | Last update:
48 |
49 | - Support for Netflix HTML5 player! (Bye, Silverlight!)
50 | - URL scheme improvements
51 | - Gatekeeper-compatible
52 | - Other bug fixes and minor features
53 |
54 | ]]>
55 |
56 | Sun, 26 Oct 2015 16:00:00 -0000
57 |
58 |
64 |
65 | -
66 | Version 1.7
67 |
68 |
70 | Support for Netflix HTML5 player! (Bye, Silverlight!)
71 | URL scheme improvements
72 | Gatekeeper-compatible
73 | Other bug fixes and minor features
74 |
75 | ]]>
76 |
77 | Sun, 25 Oct 2015 20:00:00 -0000
78 |
79 |
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/Helium/Helium.xcodeproj/xcshareddata/xcschemes/Helium.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
11 |
14 |
15 |
16 |
17 |
18 |
24 |
30 |
31 |
32 |
33 |
34 |
39 |
40 |
42 |
48 |
49 |
50 |
51 |
52 |
58 |
59 |
60 |
61 |
62 |
63 |
73 |
75 |
81 |
82 |
83 |
84 |
85 |
86 |
92 |
94 |
100 |
101 |
102 |
103 |
105 |
106 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/Helium/Helium/WebViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.swift
3 | // Helium
4 | //
5 | // Created by Jaden Geller on 4/9/15.
6 | // Copyright (c) 2015 Jaden Geller. All rights reserved.
7 | //
8 |
9 | import Cocoa
10 | import WebKit
11 |
12 | class WebViewController: NSViewController, WKNavigationDelegate {
13 |
14 | var trackingTag: NSTrackingRectTag?
15 |
16 | // MARK: View lifecycle
17 | override func viewDidLoad() {
18 | super.viewDidLoad()
19 |
20 | NotificationCenter.default.addObserver(
21 | self,
22 | selector: #selector(WebViewController.loadURL(urlObject:)),
23 | name: NSNotification.Name(rawValue: "HeliumLoadURLString"),
24 | object: nil)
25 |
26 | // Layout webview
27 | view.addSubview(webView)
28 | webView.frame = view.bounds
29 | webView.autoresizingMask = [.viewHeightSizable, .viewWidthSizable]
30 |
31 | // Allow plug-ins such as silverlight
32 | webView.configuration.preferences.plugInsEnabled = true
33 |
34 | // Custom user agent string to mimic Safari -- some sites rely on this
35 | webView._customUserAgent = UserSettings.userAgent.value
36 |
37 | // Setup magic URLs
38 | webView.navigationDelegate = self
39 |
40 | // Allow zooming
41 | webView.allowsMagnification = true
42 |
43 | // Alow back and forth
44 | webView.allowsBackForwardNavigationGestures = true
45 |
46 | // Listen for load progress
47 | webView.addObserver(self, forKeyPath: "estimatedProgress", options: .new, context: nil)
48 |
49 | clear()
50 | }
51 |
52 | override func viewDidLayout() {
53 | super.viewDidLayout()
54 |
55 | if let tag = trackingTag {
56 | view.removeTrackingRect(tag)
57 | }
58 |
59 | trackingTag = view.addTrackingRect(view.bounds, owner: self, userData: nil, assumeInside: false)
60 | }
61 |
62 | // MARK: Actions
63 | override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
64 | switch menuItem.title {
65 | case "Back":
66 | return webView.canGoBack
67 | case "Forward":
68 | return webView.canGoForward
69 | default:
70 | return true
71 | }
72 | }
73 |
74 | @IBAction func backPress(_ sender: AnyObject) {
75 | webView.goBack()
76 | }
77 |
78 | @IBAction func forwardPress(_ sender: AnyObject) {
79 | webView.goForward()
80 | }
81 |
82 | fileprivate func zoomIn() {
83 | webView.magnification += 0.1
84 | }
85 |
86 | fileprivate func zoomOut() {
87 | webView.magnification -= 0.1
88 | }
89 |
90 | fileprivate func resetZoom() {
91 | webView.magnification = 1
92 | }
93 |
94 | @IBAction fileprivate func reloadPress(_ sender: AnyObject) {
95 | requestedReload()
96 | }
97 |
98 | @IBAction fileprivate func clearPress(_ sender: AnyObject) {
99 | clear()
100 | }
101 |
102 | @IBAction fileprivate func resetZoomLevel(_ sender: AnyObject) {
103 | resetZoom()
104 | }
105 | @IBAction fileprivate func zoomIn(_ sender: AnyObject) {
106 | zoomIn()
107 | }
108 | @IBAction fileprivate func zoomOut(_ sender: AnyObject) {
109 | zoomOut()
110 | }
111 |
112 | // MARK: - URL management
113 | internal var currentURL: String? {
114 | return webView.url?.absoluteString
115 | }
116 |
117 | internal func loadURL(text: String) {
118 | let text = UrlHelpers.ensureScheme(text)
119 | if let url = URL(string: text) {
120 | loadURL(url: url)
121 | }
122 | }
123 |
124 | internal func loadURL(url: URL) {
125 | webView.load(URLRequest(url: url))
126 | }
127 |
128 | func loadURL(urlObject: Notification) {
129 | if let string = urlObject.object as? String {
130 | loadURL(text: string)
131 | }
132 | }
133 |
134 | fileprivate func requestedReload() {
135 | webView.reload()
136 | }
137 |
138 | // MARK: Webview functions
139 | /// Reload to home page (or default if no URL stored in UserDefaults)
140 | func clear() {
141 | loadURL(text: UserSettings.homePageURL.value)
142 | }
143 |
144 | var webView = WKWebView()
145 |
146 | // MARK: - Redirect magic urls
147 | func webView(_ webView: WKWebView,
148 | decidePolicyFor navigationAction: WKNavigationAction,
149 | decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
150 | guard !UserSettings.disabledMagicURLs.value,
151 | let url = navigationAction.request.url else {
152 | decisionHandler(WKNavigationActionPolicy.allow)
153 | return
154 | }
155 |
156 | if let newUrl = UrlHelpers.doMagic(url) {
157 | decisionHandler(WKNavigationActionPolicy.cancel)
158 | loadURL(url: newUrl)
159 | } else {
160 | decisionHandler(WKNavigationActionPolicy.allow)
161 | }
162 | }
163 |
164 | func webView(_ webView: WKWebView, didFinish navigation: WKNavigation) {
165 | if let pageTitle = webView.title {
166 | var title = pageTitle
167 | if title.isEmpty { title = "Helium" }
168 | let notif = Notification(name: Notification.Name(rawValue: "HeliumUpdateTitle"), object: title)
169 | NotificationCenter.default.post(notif)
170 | }
171 | }
172 |
173 | override func observeValue(
174 | forKeyPath keyPath: String?,
175 | of object: Any?,
176 | change: [NSKeyValueChangeKey : Any]?,
177 | context: UnsafeMutableRawPointer?) {
178 |
179 | if keyPath == "estimatedProgress",
180 | let view = object as? WKWebView, view == webView {
181 | if let progress = change?[NSKeyValueChangeKey(rawValue: "new")] as? Float {
182 | let percent = progress * 100
183 | var title = NSString(format: "Loading... %.2f%%", percent)
184 | if percent == 100 {
185 | title = "Helium"
186 | }
187 |
188 | let notif = Notification(name: Notification.Name(rawValue: "HeliumUpdateTitle"), object: title)
189 | NotificationCenter.default.post(notif)
190 | }
191 | }
192 | }
193 | }
194 |
--------------------------------------------------------------------------------
/Helium/Helium/UrlHelpers.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UrlHelpers.swift
3 | // Helium
4 | //
5 | // Created by Viktor Oreshkin on 9.5.17.
6 | // Copyright © 2017 Jaden Geller. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct UrlHelpers {
12 | /// Prepends `http://` if scheme isn't `https?://`
13 | static func ensureScheme(_ urlString: String) -> String {
14 | if !(urlString.lowercased().hasPrefix("http://") || urlString.lowercased().hasPrefix("https://")) {
15 | return "http://" + urlString
16 | } else {
17 | return urlString
18 | }
19 | }
20 |
21 | // https://mathiasbynens.be/demo/url-regex
22 | static func isValid(urlString: String) -> Bool {
23 | // swiftlint:disable:next force_try
24 | let regex = try! NSRegularExpression(pattern: "^(https?://)[^\\s/$.?#].[^\\s]*$")
25 | return (regex.firstMatch(in: urlString, range: urlString.nsrange) != nil)
26 | }
27 | }
28 |
29 | // MARK: - Magic Handlers
30 | extension UrlHelpers {
31 | static func doMagic(_ url: URL) -> URL? {
32 | return UrlHelpers.Magic(url).newUrl
33 | }
34 |
35 | static func doMagic(stringURL: String) -> URL? {
36 | let stringURL = UrlHelpers.ensureScheme(stringURL)
37 | if let url = URL(string: stringURL) {
38 | return UrlHelpers.doMagic(url)
39 | } else {
40 | return nil
41 | }
42 | }
43 |
44 | class Magic {
45 | fileprivate var modified: URLComponents
46 | fileprivate var converted: Bool = false
47 | public var newUrl: URL? {
48 | return self.converted ? self.modified.url : nil
49 | }
50 |
51 | fileprivate let url: URL
52 | fileprivate let urlString: String
53 |
54 | init(_ url: URL) {
55 | self.url = url
56 | self.urlString = url.absoluteString
57 |
58 | self.modified = URLComponents()
59 | self.modified.scheme = url.scheme
60 |
61 | // Paranoind check
62 | if url.host != nil {
63 | self.converted = self.hYouTube() ||
64 | self.hTwitch() ||
65 | self.hVimeo() ||
66 | self.hYouku() ||
67 | self.hDailyMotion()
68 | }
69 | }
70 | }
71 | }
72 |
73 | // MARK: Generic Handler Factory - just replaces prefix
74 | extension UrlHelpers.Magic {
75 | fileprivate static func genericHandlerFactory(prefix: String, replacement: String) -> ((UrlHelpers.Magic) -> Bool) {
76 | return { (instance: UrlHelpers.Magic) in
77 | if instance.urlString.hasPrefix(prefix) {
78 | let urlStringModified = instance.urlString.replacePrefix(prefix, replacement: replacement)
79 | if let newComponents = URLComponents(string: urlStringModified) {
80 | instance.modified = newComponents
81 | return true
82 | }
83 | }
84 | return false
85 | }
86 | }
87 | }
88 |
89 | // MARK: Youku Handler
90 | extension UrlHelpers.Magic {
91 | private static let YoukuClosure = UrlHelpers.Magic.genericHandlerFactory(
92 | prefix: "http://v.youku.com/v_show/id_",
93 | replacement: "http://player.youku.com/embed/")
94 |
95 | fileprivate func hYouku() -> Bool {
96 | return UrlHelpers.Magic.YoukuClosure(self)
97 | }
98 | }
99 |
100 | // MARK: DailyMotion Handler
101 | extension UrlHelpers.Magic {
102 | private static let DailyMotionShort = UrlHelpers.Magic.genericHandlerFactory(
103 | prefix: "http://www.dailymotion.com/video/",
104 | replacement: "http://www.dailymotion.com/embed/video/")
105 |
106 | private static let DailyMotionLong = UrlHelpers.Magic.genericHandlerFactory(
107 | prefix: "http://dai.ly/video/",
108 | replacement: "http://www.dailymotion.com/embed/video/")
109 |
110 | fileprivate func hDailyMotion() -> Bool {
111 | return UrlHelpers.Magic.DailyMotionLong(self) ||
112 | UrlHelpers.Magic.DailyMotionShort(self)
113 | }
114 | }
115 |
116 | // MARK: Twitch.tv Handler
117 | extension UrlHelpers.Magic {
118 | fileprivate func hTwitch() -> Bool {
119 | // swiftlint:disable:next force_try
120 | let TwitchRegExp = try! NSRegularExpression(pattern: "https?://(?:www\\.)?twitch\\.tv/([\\w\\d\\_]+)(?:/(\\d+))?")
121 |
122 | if let match = TwitchRegExp.firstMatch(in: urlString, range: urlString.nsrange),
123 | let channel = urlString.substring(with:match.rangeAt(1)) {
124 | var magicd = false
125 | switch channel {
126 | case "directory", "products", "p", "user":
127 | break
128 | case "videos":
129 | if let idString = urlString.substring(with:match.rangeAt(2)) {
130 | modified.query = "html5&video=v" + idString
131 | magicd = true
132 | }
133 | default:
134 | modified.query = "html5&channel=" + channel
135 | magicd = true
136 | }
137 |
138 | if magicd {
139 | // Enforce https
140 | modified.scheme = "https"
141 | modified.host = "player.twitch.tv"
142 | }
143 |
144 | return magicd
145 | }
146 |
147 | return false
148 | }
149 | }
150 |
151 | // MARK: Vimeo Handler
152 | extension UrlHelpers.Magic {
153 | fileprivate func hVimeo() -> Bool {
154 | // Enforce https
155 | let urlStringModified = self.urlString.replacingOccurrences(
156 | of: "(?:https?://)?(?:www\\.)?vimeo\\.com/(\\d+)",
157 | with: "https://player.vimeo.com/video/$1",
158 | options: .regularExpression)
159 |
160 | if urlStringModified != self.urlString, let newComponents = URLComponents(string: urlStringModified) {
161 | self.modified = newComponents
162 |
163 | return true
164 | }
165 |
166 | return false
167 | }
168 | }
169 |
170 | // MARK: YouTube Handler
171 | extension UrlHelpers.Magic {
172 | fileprivate func hYouTube() -> Bool {
173 | // (video id) (hours)?(minutes)?(seconds)
174 | // swiftlint:disable:next force_try line_length
175 | let YTRegExp = try! NSRegularExpression(pattern: "(?:https?://)?(?:www\\.)?(?:youtube\\.com/watch\\?v=|youtu.be/)([\\w\\_\\-]+)(?:[&?]t=(?:(\\d+)h)?(?:(\\d+)m)?(?:(\\d+)s?))?")
176 |
177 | if let match = YTRegExp.firstMatch(in: self.urlString, range: self.urlString.nsrange) {
178 | // Enforce https
179 | self.modified.scheme = "https"
180 | self.modified.host = "youtube.com"
181 | self.modified.path = "/embed/" + self.urlString.substring(with: match.rangeAt(1))!
182 |
183 | var start = 0
184 | var multiplier = 60 * 60
185 | for idx in 2...4 {
186 | if let tStr = self.urlString.substring(with: match.rangeAt(idx)), let tInt = Int(tStr) {
187 | start += tInt * multiplier
188 | }
189 | multiplier /= 60
190 | }
191 | if start != 0 {
192 | self.modified.query = "start=" + String(start)
193 | }
194 |
195 | return true
196 | }
197 |
198 | return false
199 | }
200 | }
201 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ADP2,1
6 | Developer Transition Kit
7 | iMac1,1
8 | iMac G3 (Rev A-D)
9 | iMac4,1
10 | iMac (Core Duo)
11 | iMac4,2
12 | iMac for Education (17 inch, Core Duo)
13 | iMac5,1
14 | iMac (Core 2 Duo, 17 or 20 inch, SuperDrive)
15 | iMac5,2
16 | iMac (Core 2 Duo, 17 inch, Combo Drive)
17 | iMac6,1
18 | iMac (Core 2 Duo, 24 inch, SuperDrive)
19 | iMac8,1
20 | iMac (Core 2 Duo, 20 or 24 inch, Early 2008 )
21 | iMac9,1
22 | iMac (Core 2 Duo, 20 or 24 inch, Early or Mid 2009 )
23 | iMac10,1
24 | iMac (Core 2 Duo, 21.5 or 27 inch, Late 2009 )
25 | iMac11,1
26 | iMac (Core i5 or i7, 27 inch Late 2009)
27 | iMac11,2
28 | iMac (Core i3 or i5, 27 inch Mid 2010)
29 | iMac11,3
30 | iMac (Core i5 or i7, 27 inch Mid 2010)
31 | iMac12,1
32 | iMac (Core i3 or i5 or i7, 21.5 inch Mid 2010 or Late 2011)
33 | iMac12,2
34 | iMac (Core i5 or i7, 27 inch Mid 2011)
35 | iMac13,1
36 | iMac (Core i3 or i5 or i7, 21.5 inch Late 2012 or Early 2013)
37 | iMac13,2
38 | iMac (Core i5 or i7, 27 inch Late 2012)
39 | iMac14,1
40 | iMac (Core i5, 21.5 inch Late 2013)
41 | iMac14,2
42 | iMac (Core i5 or i7, 27 inch Late 2013)
43 | iMac14,3
44 | iMac (Core i5 or i7, 21.5 inch Late 2013)
45 | MacBook1,1
46 | MacBook (Core Duo)
47 | MacBook2,1
48 | MacBook (Core 2 Duo)
49 | MacBook4,1
50 | MacBook (Core 2 Duo Feb 2008)
51 | MacBook5,1
52 | MacBook (Core 2 Duo, Late 2008, Unibody)
53 | MacBook5,2
54 | MacBook (Core 2 Duo, Early 2009, White)
55 | MacBook6,1
56 | MacBook (Core 2 Duo, Late 2009, Unibody)
57 | MacBook7,1
58 | MacBook (Core 2 Duo, Mid 2010, White)
59 | MacBookAir1,1
60 | MacBook Air (Core 2 Duo, 13 inch, Early 2008)
61 | MacBookAir2,1
62 | MacBook Air (Core 2 Duo, 13 inch, Mid 2009)
63 | MacBookAir3,1
64 | MacBook Air (Core 2 Duo, 11 inch, Late 2010)
65 | MacBookAir3,2
66 | MacBook Air (Core 2 Duo, 13 inch, Late 2010)
67 | MacBookAir4,1
68 | MacBook Air (Core i5 or i7, 11 inch, Mid 2011)
69 | MacBookAir4,2
70 | MacBook Air (Core i5 or i7, 13 inch, Mid 2011)
71 | MacBookAir5,1
72 | MacBook Air (Core i5 or i7, 11 inch, Mid 2012)
73 | MacBookAir5,2
74 | MacBook Air (Core i5 or i7, 13 inch, Mid 2012)
75 | MacBookAir6,1
76 | MacBook Air (Core i5 or i7, 11 inch, Mid 2013 or Early 2014)
77 | MacBookAir6,2
78 | MacBook Air (Core i5 or i7, 13 inch, Mid 2013 or Early 2014)
79 | MacBookPro1,1
80 | MacBook Pro Core Duo (15-inch)
81 | MacBookPro1,2
82 | MacBook Pro Core Duo (17-inch)
83 | MacBookPro2,1
84 | MacBook Pro Core 2 Duo (17-inch)
85 | MacBookPro2,2
86 | MacBook Pro Core 2 Duo (15-inch)
87 | MacBookPro3,1
88 | MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo)
89 | MacBookPro3,2
90 | MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo)
91 | MacBookPro4,1
92 | MacBook Pro (Core 2 Duo Feb 2008)
93 | Macmini1,1
94 | Mac Mini (Core Solo/Duo)
95 | MacPro1,1
96 | Mac Pro (four-core)
97 | MacPro2,1
98 | Mac Pro (eight-core)
99 | MacPro3,1
100 | Mac Pro (January 2008 4- or 8- core "Harpertown")
101 | MacPro4,1
102 | Mac Pro (March 2009)
103 | MacPro5,1
104 | Mac Pro (August 2010)
105 | PowerBook1,1
106 | PowerBook G3
107 | PowerBook2,1
108 | iBook G3
109 | PowerBook2,2
110 | iBook G3 (FireWire)
111 | PowerBook2,3
112 | iBook G3
113 | PowerBook2,4
114 | iBook G3
115 | PowerBook3,1
116 | PowerBook G3 (FireWire)
117 | PowerBook3,2
118 | PowerBook G4
119 | PowerBook3,3
120 | PowerBook G4 (Gigabit Ethernet)
121 | PowerBook3,4
122 | PowerBook G4 (DVI)
123 | PowerBook3,5
124 | PowerBook G4 (1GHz / 867MHz)
125 | PowerBook4,1
126 | iBook G3 (Dual USB, Late 2001)
127 | PowerBook4,2
128 | iBook G3 (16MB VRAM)
129 | PowerBook4,3
130 | iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003)
131 | PowerBook5,1
132 | PowerBook G4 (17 inch)
133 | PowerBook5,2
134 | PowerBook G4 (15 inch FW 800)
135 | PowerBook5,3
136 | PowerBook G4 (17-inch 1.33GHz)
137 | PowerBook5,4
138 | PowerBook G4 (15 inch 1.5/1.33GHz)
139 | PowerBook5,5
140 | PowerBook G4 (17-inch 1.5GHz)
141 | PowerBook5,6
142 | PowerBook G4 (15 inch 1.67GHz/1.5GHz)
143 | PowerBook5,7
144 | PowerBook G4 (17-inch 1.67GHz)
145 | PowerBook5,8
146 | PowerBook G4 (Double layer SD, 15 inch)
147 | PowerBook5,9
148 | PowerBook G4 (Double layer SD, 17 inch)
149 | PowerBook6,1
150 | PowerBook G4 (12 inch)
151 | PowerBook6,2
152 | PowerBook G4 (12 inch, DVI)
153 | PowerBook6,3
154 | iBook G4
155 | PowerBook6,4
156 | PowerBook G4 (12 inch 1.33GHz)
157 | PowerBook6,5
158 | iBook G4 (Early-Late 2004)
159 | PowerBook6,7
160 | iBook G4 (Mid 2005)
161 | PowerBook6,8
162 | PowerBook G4 (12 inch 1.5GHz)
163 | PowerMac1,1
164 | Power Macintosh G3 (Blue & White)
165 | PowerMac1,2
166 | Power Macintosh G4 (PCI Graphics)
167 | PowerMac10,1
168 | Mac Mini G4
169 | PowerMac10,2
170 | Mac Mini (Late 2005)
171 | PowerMac11,2
172 | Power Macintosh G5 (Late 2005)
173 | PowerMac12,1
174 | iMac G5 (iSight)
175 | PowerMac2,1
176 | iMac G3 (Slot-loading CD-ROM)
177 | PowerMac2,2
178 | iMac G3 (Summer 2000)
179 | PowerMac3,1
180 | Power Macintosh G4 (AGP Graphics)
181 | PowerMac3,2
182 | Power Macintosh G4 (AGP Graphics)
183 | PowerMac3,3
184 | Power Macintosh G4 (Gigabit Ethernet)
185 | PowerMac3,4
186 | Power Macintosh G4 (Digital Audio)
187 | PowerMac3,5
188 | Power Macintosh G4 (Quick Silver)
189 | PowerMac3,6
190 | Power Macintosh G4 (Mirrored Drive Door)
191 | PowerMac4,1
192 | iMac G3 (Early/Summer 2001)
193 | PowerMac4,2
194 | iMac G4 (Flat Panel)
195 | PowerMac4,4
196 | eMac
197 | PowerMac4,5
198 | iMac G4 (17-inch Flat Panel)
199 | PowerMac5,1
200 | Power Macintosh G4 Cube
201 | PowerMac6,1
202 | iMac G4 (USB 2.0)
203 | PowerMac6,3
204 | iMac G4 (20-inch Flat Panel)
205 | PowerMac6,4
206 | eMac (USB 2.0, 2005)
207 | PowerMac7,2
208 | Power Macintosh G5
209 | PowerMac7,3
210 | Power Macintosh G5
211 | PowerMac8,1
212 | iMac G5
213 | PowerMac8,2
214 | iMac G5 (Ambient Light Sensor)
215 | PowerMac9,1
216 | Power Macintosh G5 (Late 2005)
217 | RackMac1,1
218 | Xserve G4
219 | RackMac1,2
220 | Xserve G4 (slot-loading, cluster node)
221 | RackMac3,1
222 | Xserve G5
223 | Xserve1,1
224 | Xserve (Intel Xeon)
225 | Xserve2,1
226 | Xserve (January 2008 quad-core)
227 |
228 |
229 |
--------------------------------------------------------------------------------
/Helium/Helium/HeliumPanelController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // HeliumPanelController.swift
3 | // Helium
4 | //
5 | // Created by Jaden Geller on 4/9/15.
6 | // Copyright (c) 2015 Jaden Geller. All rights reserved.
7 | //
8 |
9 | import AppKit
10 |
11 | fileprivate class URLField: NSTextField {
12 | override func mouseDown(with event: NSEvent) {
13 | super.mouseDown(with: event)
14 | if let textEditor = currentEditor() {
15 | textEditor.selectAll(self)
16 | }
17 | }
18 |
19 | convenience init(withValue: String?) {
20 | self.init()
21 |
22 | if let string = withValue {
23 | self.stringValue = string
24 | }
25 | self.lineBreakMode = NSLineBreakMode.byTruncatingHead
26 | self.usesSingleLineMode = true
27 | }
28 | }
29 |
30 | class HeliumPanelController: NSWindowController {
31 |
32 | fileprivate var webViewController: WebViewController {
33 | // swiftlint:disable:next force_cast
34 | return self.window?.contentViewController as! WebViewController
35 | }
36 |
37 | fileprivate var panel: HeliumPanel! {
38 | // swiftlint:disable:next force_cast
39 | return self.window as! HeliumPanel
40 | }
41 |
42 | // MARK: Window lifecycle
43 | override func windowDidLoad() {
44 | panel.isFloatingPanel = true
45 |
46 | NotificationCenter.default.addObserver(
47 | self,
48 | selector: #selector(HeliumPanelController.didBecomeActive),
49 | name: NSNotification.Name.NSApplicationDidBecomeActive,
50 | object: nil)
51 | NotificationCenter.default.addObserver(
52 | self,
53 | selector: #selector(HeliumPanelController.willResignActive),
54 | name: NSNotification.Name.NSApplicationWillResignActive,
55 | object: nil)
56 | NotificationCenter.default.addObserver(
57 | self,
58 | selector: #selector(HeliumPanelController.didUpdateTitle(_:)),
59 | name: Notification.Name(rawValue: "HeliumUpdateTitle"),
60 | object: nil)
61 |
62 | setFloatOverFullScreenApps()
63 |
64 | // MARK: Load settings from UserSettings
65 | didUpdateAlpha(CGFloat(UserSettings.opacityPercentage.value))
66 |
67 | if let prefernce = TranslucencyPreference(rawValue: UserSettings.translucencyPreference.value) {
68 | translucencyPreference = prefernce
69 | }
70 | }
71 |
72 | // MARK : Mouse events
73 | override func mouseEntered(with theEvent: NSEvent) {
74 | mouseOver = true
75 | updateTranslucency()
76 | }
77 |
78 | override func mouseExited(with theEvent: NSEvent) {
79 | mouseOver = false
80 | updateTranslucency()
81 | }
82 |
83 | // MARK : Translucency
84 | fileprivate var mouseOver: Bool = false
85 |
86 | fileprivate var alpha: CGFloat = 0 {
87 | didSet {
88 | updateTranslucency()
89 | }
90 | }
91 |
92 | fileprivate var translucencyPreference: TranslucencyPreference = .never {
93 | didSet {
94 | UserSettings.translucencyPreference.value = translucencyPreference.rawValue
95 | updateTranslucency()
96 | }
97 | }
98 |
99 | fileprivate enum TranslucencyPreference: Int {
100 | case never = 0
101 | case always = 1
102 | case mouseOver = 2
103 | case mouseOutside = 3
104 | }
105 |
106 | fileprivate func updateTranslucency() {
107 | currentlyTranslucent = shouldBeTranslucent()
108 | }
109 |
110 | fileprivate var currentlyTranslucent: Bool = false {
111 | didSet {
112 | if !NSApplication.shared().isActive {
113 | panel.ignoresMouseEvents = currentlyTranslucent
114 | }
115 | if currentlyTranslucent {
116 | panel.animator().alphaValue = alpha
117 | panel.isOpaque = false
118 | } else {
119 | panel.isOpaque = true
120 | panel.animator().alphaValue = 1
121 | }
122 | }
123 | }
124 |
125 | fileprivate func shouldBeTranslucent() -> Bool {
126 | /* Implicit Arguments
127 | * - mouseOver
128 | * - translucencyPreference
129 | */
130 |
131 | switch translucencyPreference {
132 | case .never:
133 | return false
134 | case .always:
135 | return true
136 | case .mouseOver:
137 | return mouseOver
138 | case .mouseOutside:
139 | return !mouseOver
140 | }
141 | }
142 |
143 | fileprivate func setFloatOverFullScreenApps() {
144 | if UserSettings.disabledFullScreenFloat.value {
145 | panel.collectionBehavior = [.moveToActiveSpace, .fullScreenAuxiliary]
146 |
147 | } else {
148 | panel.collectionBehavior = [.canJoinAllSpaces, .fullScreenAuxiliary]
149 | }
150 | }
151 |
152 | // MARK: IBActions
153 |
154 | fileprivate func disabledAllMouseOverPreferences(_ allMenus: [NSMenuItem]) {
155 | // GROSS HARD CODED
156 | for x in allMenus.dropFirst(2) {
157 | x.state = NSOffState
158 | }
159 | }
160 |
161 | @IBAction fileprivate func neverPreferencePress(_ sender: NSMenuItem) {
162 | disabledAllMouseOverPreferences(sender.menu!.items)
163 | translucencyPreference = .never
164 | sender.state = NSOnState
165 | }
166 |
167 | @IBAction fileprivate func alwaysPreferencePress(_ sender: NSMenuItem) {
168 | disabledAllMouseOverPreferences(sender.menu!.items)
169 | translucencyPreference = .always
170 | sender.state = NSOnState
171 | }
172 |
173 | @IBAction fileprivate func overPreferencePress(_ sender: NSMenuItem) {
174 | disabledAllMouseOverPreferences(sender.menu!.items)
175 | translucencyPreference = .mouseOver
176 | sender.state = NSOnState
177 | }
178 |
179 | @IBAction fileprivate func outsidePreferencePress(_ sender: NSMenuItem) {
180 | disabledAllMouseOverPreferences(sender.menu!.items)
181 | translucencyPreference = .mouseOutside
182 | sender.state = NSOnState
183 | }
184 |
185 | @IBAction fileprivate func percentagePress(_ sender: NSMenuItem) {
186 | for button in sender.menu!.items {
187 | (button).state = NSOffState
188 | }
189 | sender.state = NSOnState
190 | let value = sender.title.substring(to: sender.title.characters.index(sender.title.endIndex, offsetBy: -1))
191 | if let alpha = Int(value) {
192 | didUpdateAlpha(CGFloat(alpha))
193 | UserSettings.opacityPercentage.value = alpha
194 | }
195 | }
196 |
197 | @IBAction fileprivate func openLocationPress(_ sender: AnyObject) {
198 | didRequestUserUrl(RequestUserUrlStrings(
199 | currentURL: self.webViewController.currentURL,
200 | messageText: "Enter Destination URL",
201 | acceptBtnText: "Load",
202 | cancelBtnText: "Cancel"),
203 | acceptHandler: { (newUrl: String) in
204 | self.webViewController.loadURL(text: newUrl)
205 | }
206 | )
207 | }
208 |
209 | @IBAction fileprivate func openFilePress(_ sender: AnyObject) {
210 | didRequestFile()
211 | }
212 |
213 | @IBAction fileprivate func floatOverFullScreenAppsToggled(_ sender: NSMenuItem) {
214 | sender.state = (sender.state == NSOnState) ? NSOffState : NSOnState
215 | UserSettings.disabledFullScreenFloat.value = (sender.state == NSOffState)
216 |
217 | setFloatOverFullScreenApps()
218 | }
219 |
220 | @IBAction fileprivate func hideTitle(_ sender: NSMenuItem) {
221 | if sender.state == NSOnState {
222 | sender.state = NSOffState
223 | panel.styleMask.remove(.titled)
224 | } else {
225 | sender.state = NSOnState
226 | // somehow removing .titled also removes .utitlityWindow, which is required
227 | panel.styleMask.update(with: [ .titled, .utilityWindow ])
228 | panel.title = self.webViewController.webView.title ?? ""
229 | }
230 | }
231 |
232 | @IBAction func setHomePage(_ sender: AnyObject) {
233 | didRequestUserUrl(RequestUserUrlStrings(
234 | currentURL: UserSettings.homePageURL.value,
235 | messageText: "Enter new Home Page URL",
236 | acceptBtnText: "Set",
237 | cancelBtnText: "Cancel"),
238 | acceptHandler: { (newUrlConstant: String) in
239 | var newUrl = newUrlConstant
240 |
241 | if !(newUrl.lowercased().hasPrefix("http://") || newUrl.lowercased().hasPrefix("https://")) {
242 | newUrl = "http://" + newUrl
243 | }
244 |
245 | // Save to defaults and loads it
246 | UserSettings.homePageURL.value = newUrl
247 | self.webViewController.loadURL(text: newUrl)
248 | })
249 | }
250 |
251 | // MARK: Actual functionality
252 | @objc fileprivate func didUpdateTitle(_ notification: Notification) {
253 | if let title = notification.object as? String {
254 | panel.title = title
255 | }
256 | }
257 |
258 | fileprivate func didRequestFile() {
259 | let open = NSOpenPanel()
260 | open.allowsMultipleSelection = false
261 | open.canChooseFiles = true
262 | open.canChooseDirectories = false
263 |
264 | if open.runModal() == NSModalResponseOK {
265 | if let url = open.url {
266 | webViewController.loadURL(url: url)
267 | }
268 | }
269 | }
270 |
271 | struct RequestUserUrlStrings {
272 | let currentURL: String?
273 | let messageText: String
274 | let acceptBtnText: String
275 | let cancelBtnText: String
276 | }
277 |
278 | /// Shows alert asking user to input URL
279 | /// And validate it
280 | fileprivate func didRequestUserUrl(_ strings: RequestUserUrlStrings, acceptHandler: @escaping (String) -> Void) {
281 | // Create alert
282 | let alert = NSAlert()
283 | alert.alertStyle = NSAlertStyle.informational
284 | alert.messageText = strings.messageText
285 |
286 | // Create urlField
287 | let urlField = URLField(withValue: strings.currentURL)
288 | urlField.frame = NSRect(x: 0, y: 0, width: 300, height: 20)
289 |
290 | // Add urlField and buttons to alert
291 | alert.accessoryView = urlField
292 | alert.addButton(withTitle: strings.acceptBtnText)
293 | alert.addButton(withTitle: strings.cancelBtnText)
294 |
295 | alert.beginSheetModal(for: self.window!, completionHandler: { response in
296 | // first button is accept
297 | if response == NSAlertFirstButtonReturn {
298 | // swiftlint:disable:next force_cast
299 | var newUrl = (alert.accessoryView as! NSTextField).stringValue
300 | newUrl = UrlHelpers.ensureScheme(newUrl)
301 | if UrlHelpers.isValid(urlString: newUrl) {
302 | acceptHandler(newUrl)
303 | }
304 | }
305 | })
306 |
307 | // Set focus on urlField
308 | alert.accessoryView!.becomeFirstResponder()
309 | }
310 |
311 | @objc fileprivate func didBecomeActive() {
312 | panel.ignoresMouseEvents = false
313 | }
314 |
315 | @objc fileprivate func willResignActive() {
316 | if currentlyTranslucent {
317 | panel.ignoresMouseEvents = true
318 | }
319 | }
320 |
321 | fileprivate func didUpdateAlpha(_ newAlpha: CGFloat) {
322 | alpha = newAlpha / 100
323 | }
324 | }
325 |
--------------------------------------------------------------------------------
/Helium/Helium/Sparkle.framework/Versions/A/Headers/SUUpdater.h:
--------------------------------------------------------------------------------
1 | //
2 | // SUUpdater.h
3 | // Sparkle
4 | //
5 | // Created by Andy Matuschak on 1/4/06.
6 | // Copyright 2006 Andy Matuschak. All rights reserved.
7 | //
8 |
9 | #ifndef SUUPDATER_H
10 | #define SUUPDATER_H
11 |
12 | #import "SUExport.h"
13 | #import "SUVersionComparisonProtocol.h"
14 | #import "SUVersionDisplayProtocol.h"
15 |
16 | @class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast;
17 |
18 | @protocol SUUpdaterDelegate;
19 |
20 | /*!
21 | The main API in Sparkle for controlling the update mechanism.
22 |
23 | This class is used to configure the update paramters as well as manually
24 | and automatically schedule and control checks for updates.
25 | */
26 | SU_EXPORT @interface SUUpdater : NSObject
27 |
28 | @property (unsafe_unretained) IBOutlet id delegate;
29 |
30 | + (SUUpdater *)sharedUpdater;
31 | + (SUUpdater *)updaterForBundle:(NSBundle *)bundle;
32 | - (instancetype)initForBundle:(NSBundle *)bundle;
33 |
34 | @property (readonly, strong) NSBundle *hostBundle;
35 |
36 | @property BOOL automaticallyChecksForUpdates;
37 |
38 | @property NSTimeInterval updateCheckInterval;
39 |
40 | /*!
41 | * The URL of the appcast used to download update information.
42 | *
43 | * This property must be called on the main thread.
44 | */
45 | @property (copy) NSURL *feedURL;
46 |
47 | @property (nonatomic, copy) NSString *userAgentString;
48 |
49 | @property BOOL sendsSystemProfile;
50 |
51 | @property BOOL automaticallyDownloadsUpdates;
52 |
53 | /*!
54 | Explicitly checks for updates and displays a progress dialog while doing so.
55 |
56 | This method is meant for a main menu item.
57 | Connect any menu item to this action in Interface Builder,
58 | and Sparkle will check for updates and report back its findings verbosely
59 | when it is invoked.
60 | */
61 | - (IBAction)checkForUpdates:(id)sender;
62 |
63 | /*!
64 | Checks for updates, but does not display any UI unless an update is found.
65 |
66 | This is meant for programmatically initating a check for updates. That is,
67 | it will display no UI unless it actually finds an update, in which case it
68 | proceeds as usual.
69 |
70 | If the fully automated updating is turned on, however, this will invoke that
71 | behavior, and if an update is found, it will be downloaded and prepped for
72 | installation.
73 | */
74 | - (void)checkForUpdatesInBackground;
75 |
76 | /*!
77 | Returns the date of last update check.
78 |
79 | \returns \c nil if no check has been performed.
80 | */
81 | @property (readonly, copy) NSDate *lastUpdateCheckDate;
82 |
83 | /*!
84 | Begins a "probing" check for updates which will not actually offer to
85 | update to that version.
86 |
87 | However, the delegate methods
88 | SUUpdaterDelegate::updater:didFindValidUpdate: and
89 | SUUpdaterDelegate::updaterDidNotFindUpdate: will be called,
90 | so you can use that information in your UI.
91 | */
92 | - (void)checkForUpdateInformation;
93 |
94 | /*!
95 | Appropriately schedules or cancels the update checking timer according to
96 | the preferences for time interval and automatic checks.
97 |
98 | This call does not change the date of the next check,
99 | but only the internal NSTimer.
100 | */
101 | - (void)resetUpdateCycle;
102 |
103 | @property (readonly) BOOL updateInProgress;
104 |
105 | @end
106 |
107 | // -----------------------------------------------------------------------------
108 | // SUUpdater Notifications for events that might be interesting to more than just the delegate
109 | // The updater will be the notification object
110 | // -----------------------------------------------------------------------------
111 | SU_EXPORT extern NSString *const SUUpdaterDidFinishLoadingAppCastNotification;
112 | SU_EXPORT extern NSString *const SUUpdaterDidFindValidUpdateNotification;
113 | SU_EXPORT extern NSString *const SUUpdaterDidNotFindUpdateNotification;
114 | SU_EXPORT extern NSString *const SUUpdaterWillRestartNotification;
115 | #define SUUpdaterWillRelaunchApplicationNotification SUUpdaterWillRestartNotification;
116 | #define SUUpdaterWillInstallUpdateNotification SUUpdaterWillRestartNotification;
117 |
118 | // Key for the SUAppcastItem object in the SUUpdaterDidFindValidUpdateNotification userInfo
119 | SU_EXPORT extern NSString *const SUUpdaterAppcastItemNotificationKey;
120 | // Key for the SUAppcast object in the SUUpdaterDidFinishLoadingAppCastNotification userInfo
121 | SU_EXPORT extern NSString *const SUUpdaterAppcastNotificationKey;
122 |
123 | // -----------------------------------------------------------------------------
124 | // SUUpdater Delegate:
125 | // -----------------------------------------------------------------------------
126 |
127 | /*!
128 | Provides methods to control the behavior of an SUUpdater object.
129 | */
130 | @protocol SUUpdaterDelegate
131 | @optional
132 |
133 | /*!
134 | Returns whether to allow Sparkle to pop up.
135 |
136 | For example, this may be used to prevent Sparkle from interrupting a setup assistant.
137 |
138 | \param updater The SUUpdater instance.
139 | */
140 | - (BOOL)updaterMayCheckForUpdates:(SUUpdater *)updater;
141 |
142 | /*!
143 | Returns additional parameters to append to the appcast URL's query string.
144 |
145 | This is potentially based on whether or not Sparkle will also be sending along the system profile.
146 |
147 | \param updater The SUUpdater instance.
148 | \param sendingProfile Whether the system profile will also be sent.
149 |
150 | \return An array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user.
151 | */
152 | - (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile;
153 |
154 | /*!
155 | Returns a custom appcast URL.
156 |
157 | Override this to dynamically specify the entire URL.
158 |
159 | \param updater The SUUpdater instance.
160 | */
161 | - (NSString *)feedURLStringForUpdater:(SUUpdater *)updater;
162 |
163 | /*!
164 | Returns whether Sparkle should prompt the user about automatic update checks.
165 |
166 | Use this to override the default behavior.
167 |
168 | \param updater The SUUpdater instance.
169 | */
170 | - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)updater;
171 |
172 | /*!
173 | Called after Sparkle has downloaded the appcast from the remote server.
174 |
175 | Implement this if you want to do some special handling with the appcast once it finishes loading.
176 |
177 | \param updater The SUUpdater instance.
178 | \param appcast The appcast that was downloaded from the remote server.
179 | */
180 | - (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast;
181 |
182 | /*!
183 | Returns the item in the appcast corresponding to the update that should be installed.
184 |
185 | If you're using special logic or extensions in your appcast,
186 | implement this to use your own logic for finding a valid update, if any,
187 | in the given appcast.
188 |
189 | \param appcast The appcast that was downloaded from the remote server.
190 | \param updater The SUUpdater instance.
191 | */
192 | - (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)updater;
193 |
194 | /*!
195 | Called when a valid update is found by the update driver.
196 |
197 | \param updater The SUUpdater instance.
198 | \param item The appcast item corresponding to the update that is proposed to be installed.
199 | */
200 | - (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)item;
201 |
202 | /*!
203 | Called when a valid update is not found.
204 |
205 | \param updater The SUUpdater instance.
206 | */
207 | - (void)updaterDidNotFindUpdate:(SUUpdater *)updater;
208 |
209 | /*!
210 | Called immediately before installing the specified update.
211 |
212 | \param updater The SUUpdater instance.
213 | \param item The appcast item corresponding to the update that is proposed to be installed.
214 | */
215 | - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)item;
216 |
217 | /*!
218 | Returns whether the relaunch should be delayed in order to perform other tasks.
219 |
220 | This is not called if the user didn't relaunch on the previous update,
221 | in that case it will immediately restart.
222 |
223 | \param updater The SUUpdater instance.
224 | \param item The appcast item corresponding to the update that is proposed to be installed.
225 | \param invocation The invocation that must be completed before continuing with the relaunch.
226 |
227 | \return \c YES to delay the relaunch until \p invocation is invoked.
228 | */
229 | - (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)item untilInvoking:(NSInvocation *)invocation;
230 |
231 | /*!
232 | Returns whether the application should be relaunched at all.
233 |
234 | Some apps \b cannot be relaunched under certain circumstances.
235 | This method can be used to explicitly prevent a relaunch.
236 |
237 | \param updater The SUUpdater instance.
238 | */
239 | - (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater;
240 |
241 | /*!
242 | Called immediately before relaunching.
243 |
244 | \param updater The SUUpdater instance.
245 | */
246 | - (void)updaterWillRelaunchApplication:(SUUpdater *)updater;
247 |
248 | /*!
249 | Returns an object that compares version numbers to determine their arithmetic relation to each other.
250 |
251 | This method allows you to provide a custom version comparator.
252 | If you don't implement this method or return \c nil,
253 | the standard version comparator will be used.
254 |
255 | \sa SUStandardVersionComparator
256 |
257 | \param updater The SUUpdater instance.
258 | */
259 | - (id)versionComparatorForUpdater:(SUUpdater *)updater;
260 |
261 | /*!
262 | Returns an object that formats version numbers for display to the user.
263 |
264 | If you don't implement this method or return \c nil,
265 | the standard version formatter will be used.
266 |
267 | \sa SUUpdateAlert
268 |
269 | \param updater The SUUpdater instance.
270 | */
271 | - (id)versionDisplayerForUpdater:(SUUpdater *)updater;
272 |
273 | /*!
274 | Returns the path which is used to relaunch the client after the update is installed.
275 |
276 | The default is the path of the host bundle.
277 |
278 | \param updater The SUUpdater instance.
279 | */
280 | - (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater;
281 |
282 | /*!
283 | Called before an updater shows a modal alert window,
284 | to give the host the opportunity to hide attached windows that may get in the way.
285 |
286 | \param updater The SUUpdater instance.
287 | */
288 | - (void)updaterWillShowModalAlert:(SUUpdater *)updater;
289 |
290 | /*!
291 | Called after an updater shows a modal alert window,
292 | to give the host the opportunity to hide attached windows that may get in the way.
293 |
294 | \param updater The SUUpdater instance.
295 | */
296 | - (void)updaterDidShowModalAlert:(SUUpdater *)updater;
297 |
298 | /*!
299 | Called when an update is scheduled to be silently installed on quit.
300 |
301 | \param updater The SUUpdater instance.
302 | \param item The appcast item corresponding to the update that is proposed to be installed.
303 | \param invocation Can be used to trigger an immediate silent install and relaunch.
304 | */
305 | - (void)updater:(SUUpdater *)updater willInstallUpdateOnQuit:(SUAppcastItem *)item immediateInstallationInvocation:(NSInvocation *)invocation;
306 |
307 | /*!
308 | Calls after an update that was scheduled to be silently installed on quit has been canceled.
309 |
310 | \param updater The SUUpdater instance.
311 | \param item The appcast item corresponding to the update that was proposed to be installed.
312 | */
313 | - (void)updater:(SUUpdater *)updater didCancelInstallUpdateOnQuit:(SUAppcastItem *)item;
314 |
315 | /*!
316 | Called after an update is aborted due to an error.
317 |
318 | \param updater The SUUpdater instance.
319 | \param error The error that caused the abort
320 | */
321 | - (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error;
322 |
323 | @end
324 |
325 | #endif
326 |
--------------------------------------------------------------------------------
/Helium/Helium/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
316 |
317 |
318 |
319 |
320 |
321 |
322 |
323 |
324 |
325 |
326 |
327 |
328 |
329 |
330 |
331 |
332 |
333 |
334 |
335 |
336 |
337 |
338 |
339 |
340 |
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
362 |
363 |
364 |
365 |
366 |
--------------------------------------------------------------------------------
/Helium/Helium.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 27199AB41BE422AC00E02297 /* icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 27199AB31BE422AC00E02297 /* icon.icns */; };
11 | 27199AB71BE422AC00E02297 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27199AB61BE422AC00E02297 /* ShareViewController.swift */; };
12 | 27199ABA1BE422AC00E02297 /* ShareViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 27199AB81BE422AC00E02297 /* ShareViewController.xib */; };
13 | 27199ABE1BE422AC00E02297 /* HeliumShareExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 27199AB01BE422AC00E02297 /* HeliumShareExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
14 | 4D867CB71AD6781200681331 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D867CB61AD6781200681331 /* AppDelegate.swift */; };
15 | 4D867CB91AD6781200681331 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D867CB81AD6781200681331 /* WebViewController.swift */; };
16 | 4D867CBB1AD6781200681331 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 4D867CBA1AD6781200681331 /* Images.xcassets */; };
17 | 4D867CBE1AD6781200681331 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4D867CBC1AD6781200681331 /* Main.storyboard */; };
18 | 4D867CD41AD6796A00681331 /* HeliumPanelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D867CD31AD6796A00681331 /* HeliumPanelController.swift */; };
19 | 4D8DAEAC1C3A41F300B212EC /* UserSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAA3EA011BE4CEC9001A471F /* UserSettings.swift */; };
20 | 4D8DAEB31C3A427D00B212EC /* HeliumTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D8DAEB11C3A427D00B212EC /* HeliumTests.swift */; };
21 | 5B75B5121C9A13D600475921 /* StringHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B75B5111C9A13D600475921 /* StringHelpers.swift */; };
22 | 5B75B5131C9A13D600475921 /* StringHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B75B5111C9A13D600475921 /* StringHelpers.swift */; };
23 | 6569AE371EC11E86002C8D07 /* UrlHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6569AE361EC11E86002C8D07 /* UrlHelpers.swift */; };
24 | 6569AE381EC13B34002C8D07 /* StringHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B75B5111C9A13D600475921 /* StringHelpers.swift */; };
25 | 6569AE391EC13B34002C8D07 /* UrlHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6569AE361EC11E86002C8D07 /* UrlHelpers.swift */; };
26 | 6569AE681EC23C88002C8D07 /* HeliumPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6569AE671EC23C88002C8D07 /* HeliumPanel.swift */; };
27 | B34C1EC31ADE3B520094ADBA /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B34C1EC21ADE3B520094ADBA /* Sparkle.framework */; };
28 | B34C1EC61ADE3CBE0094ADBA /* dsa_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = B34C1EC51ADE3CBE0094ADBA /* dsa_pub.pem */; };
29 | B34C1EC91ADE3F980094ADBA /* Sparkle.framework in Copy Files */ = {isa = PBXBuildFile; fileRef = B34C1EC21ADE3B520094ADBA /* Sparkle.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
30 | /* End PBXBuildFile section */
31 |
32 | /* Begin PBXContainerItemProxy section */
33 | 27199ABC1BE422AC00E02297 /* PBXContainerItemProxy */ = {
34 | isa = PBXContainerItemProxy;
35 | containerPortal = 4D867CA91AD6781200681331 /* Project object */;
36 | proxyType = 1;
37 | remoteGlobalIDString = 27199AAF1BE422AC00E02297;
38 | remoteInfo = HeliumShareExtension;
39 | };
40 | 4D867CC41AD6781200681331 /* PBXContainerItemProxy */ = {
41 | isa = PBXContainerItemProxy;
42 | containerPortal = 4D867CA91AD6781200681331 /* Project object */;
43 | proxyType = 1;
44 | remoteGlobalIDString = 4D867CB01AD6781200681331;
45 | remoteInfo = Helium;
46 | };
47 | /* End PBXContainerItemProxy section */
48 |
49 | /* Begin PBXCopyFilesBuildPhase section */
50 | 27199AC21BE422AC00E02297 /* Embed App Extensions */ = {
51 | isa = PBXCopyFilesBuildPhase;
52 | buildActionMask = 2147483647;
53 | dstPath = "";
54 | dstSubfolderSpec = 13;
55 | files = (
56 | 27199ABE1BE422AC00E02297 /* HeliumShareExtension.appex in Embed App Extensions */,
57 | );
58 | name = "Embed App Extensions";
59 | runOnlyForDeploymentPostprocessing = 0;
60 | };
61 | B34C1EC81ADE3F870094ADBA /* Copy Files */ = {
62 | isa = PBXCopyFilesBuildPhase;
63 | buildActionMask = 2147483647;
64 | dstPath = "";
65 | dstSubfolderSpec = 10;
66 | files = (
67 | B34C1EC91ADE3F980094ADBA /* Sparkle.framework in Copy Files */,
68 | );
69 | name = "Copy Files";
70 | runOnlyForDeploymentPostprocessing = 0;
71 | };
72 | /* End PBXCopyFilesBuildPhase section */
73 |
74 | /* Begin PBXFileReference section */
75 | 27199AB01BE422AC00E02297 /* HeliumShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = HeliumShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
76 | 27199AB31BE422AC00E02297 /* icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = icon.icns; sourceTree = ""; };
77 | 27199AB61BE422AC00E02297 /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = ""; };
78 | 27199AB91BE422AC00E02297 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ShareViewController.xib; sourceTree = ""; };
79 | 27199ABB1BE422AC00E02297 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
80 | 4D867CB11AD6781200681331 /* Helium.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Helium.app; sourceTree = BUILT_PRODUCTS_DIR; };
81 | 4D867CB51AD6781200681331 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
82 | 4D867CB61AD6781200681331 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
83 | 4D867CB81AD6781200681331 /* WebViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebViewController.swift; sourceTree = ""; };
84 | 4D867CBA1AD6781200681331 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; };
85 | 4D867CBD1AD6781200681331 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
86 | 4D867CC31AD6781200681331 /* HeliumTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = HeliumTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
87 | 4D867CD31AD6796A00681331 /* HeliumPanelController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeliumPanelController.swift; sourceTree = ""; };
88 | 4D8DAEB11C3A427D00B212EC /* HeliumTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeliumTests.swift; sourceTree = ""; };
89 | 4D8DAEB21C3A427D00B212EC /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
90 | 4DEAB8FD1ADBD98600A2FC2B /* Helium-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Helium-Bridging-Header.h"; sourceTree = ""; };
91 | 4DEAB8FE1ADBD98600A2FC2B /* WKWebViewPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKWebViewPrivate.h; sourceTree = ""; };
92 | 5B75B5111C9A13D600475921 /* StringHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StringHelpers.swift; sourceTree = ""; };
93 | 6569AE361EC11E86002C8D07 /* UrlHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UrlHelpers.swift; sourceTree = ""; };
94 | 6569AE671EC23C88002C8D07 /* HeliumPanel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HeliumPanel.swift; sourceTree = ""; };
95 | AAA3EA011BE4CEC9001A471F /* UserSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UserSettings.swift; sourceTree = ""; };
96 | B34C1EC21ADE3B520094ADBA /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = ""; };
97 | B34C1EC51ADE3CBE0094ADBA /* dsa_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = dsa_pub.pem; sourceTree = ""; };
98 | /* End PBXFileReference section */
99 |
100 | /* Begin PBXFrameworksBuildPhase section */
101 | 27199AAD1BE422AC00E02297 /* Frameworks */ = {
102 | isa = PBXFrameworksBuildPhase;
103 | buildActionMask = 2147483647;
104 | files = (
105 | );
106 | runOnlyForDeploymentPostprocessing = 0;
107 | };
108 | 4D867CAE1AD6781200681331 /* Frameworks */ = {
109 | isa = PBXFrameworksBuildPhase;
110 | buildActionMask = 2147483647;
111 | files = (
112 | B34C1EC31ADE3B520094ADBA /* Sparkle.framework in Frameworks */,
113 | );
114 | runOnlyForDeploymentPostprocessing = 0;
115 | };
116 | 4D867CC01AD6781200681331 /* Frameworks */ = {
117 | isa = PBXFrameworksBuildPhase;
118 | buildActionMask = 2147483647;
119 | files = (
120 | );
121 | runOnlyForDeploymentPostprocessing = 0;
122 | };
123 | /* End PBXFrameworksBuildPhase section */
124 |
125 | /* Begin PBXGroup section */
126 | 27199AB11BE422AC00E02297 /* HeliumShareExtension */ = {
127 | isa = PBXGroup;
128 | children = (
129 | 27199AB61BE422AC00E02297 /* ShareViewController.swift */,
130 | 27199AB81BE422AC00E02297 /* ShareViewController.xib */,
131 | 27199ABB1BE422AC00E02297 /* Info.plist */,
132 | 27199AB21BE422AC00E02297 /* Supporting Files */,
133 | );
134 | path = HeliumShareExtension;
135 | sourceTree = "";
136 | };
137 | 27199AB21BE422AC00E02297 /* Supporting Files */ = {
138 | isa = PBXGroup;
139 | children = (
140 | 27199AB31BE422AC00E02297 /* icon.icns */,
141 | );
142 | name = "Supporting Files";
143 | sourceTree = "";
144 | };
145 | 4D867CA81AD6781200681331 = {
146 | isa = PBXGroup;
147 | children = (
148 | 4D867CB31AD6781200681331 /* Helium */,
149 | 4D8DAEB01C3A427D00B212EC /* HeliumTests */,
150 | 27199AB11BE422AC00E02297 /* HeliumShareExtension */,
151 | 4D867CB21AD6781200681331 /* Products */,
152 | );
153 | sourceTree = "";
154 | };
155 | 4D867CB21AD6781200681331 /* Products */ = {
156 | isa = PBXGroup;
157 | children = (
158 | 4D867CB11AD6781200681331 /* Helium.app */,
159 | 4D867CC31AD6781200681331 /* HeliumTests.xctest */,
160 | 27199AB01BE422AC00E02297 /* HeliumShareExtension.appex */,
161 | );
162 | name = Products;
163 | sourceTree = "";
164 | };
165 | 4D867CB31AD6781200681331 /* Helium */ = {
166 | isa = PBXGroup;
167 | children = (
168 | 6569AE671EC23C88002C8D07 /* HeliumPanel.swift */,
169 | 4D867CB61AD6781200681331 /* AppDelegate.swift */,
170 | 4D867CD31AD6796A00681331 /* HeliumPanelController.swift */,
171 | 4D867CB81AD6781200681331 /* WebViewController.swift */,
172 | 4DEAB8FE1ADBD98600A2FC2B /* WKWebViewPrivate.h */,
173 | 4D867CBA1AD6781200681331 /* Images.xcassets */,
174 | 4D867CBC1AD6781200681331 /* Main.storyboard */,
175 | 4D867CB41AD6781200681331 /* Supporting Files */,
176 | 4DEAB8FD1ADBD98600A2FC2B /* Helium-Bridging-Header.h */,
177 | B34C1EC71ADE3CCA0094ADBA /* Resources */,
178 | B34C1EC41ADE3B5E0094ADBA /* Frameworks */,
179 | AAA3EA011BE4CEC9001A471F /* UserSettings.swift */,
180 | 5B75B5111C9A13D600475921 /* StringHelpers.swift */,
181 | 6569AE361EC11E86002C8D07 /* UrlHelpers.swift */,
182 | );
183 | path = Helium;
184 | sourceTree = "";
185 | };
186 | 4D867CB41AD6781200681331 /* Supporting Files */ = {
187 | isa = PBXGroup;
188 | children = (
189 | 4D867CB51AD6781200681331 /* Info.plist */,
190 | );
191 | name = "Supporting Files";
192 | sourceTree = "";
193 | };
194 | 4D8DAEB01C3A427D00B212EC /* HeliumTests */ = {
195 | isa = PBXGroup;
196 | children = (
197 | 4D8DAEB11C3A427D00B212EC /* HeliumTests.swift */,
198 | 4D8DAEB21C3A427D00B212EC /* Info.plist */,
199 | );
200 | path = HeliumTests;
201 | sourceTree = "";
202 | };
203 | B34C1EC41ADE3B5E0094ADBA /* Frameworks */ = {
204 | isa = PBXGroup;
205 | children = (
206 | B34C1EC21ADE3B520094ADBA /* Sparkle.framework */,
207 | );
208 | name = Frameworks;
209 | sourceTree = "";
210 | };
211 | B34C1EC71ADE3CCA0094ADBA /* Resources */ = {
212 | isa = PBXGroup;
213 | children = (
214 | B34C1EC51ADE3CBE0094ADBA /* dsa_pub.pem */,
215 | );
216 | name = Resources;
217 | sourceTree = "";
218 | };
219 | /* End PBXGroup section */
220 |
221 | /* Begin PBXNativeTarget section */
222 | 27199AAF1BE422AC00E02297 /* HeliumShareExtension */ = {
223 | isa = PBXNativeTarget;
224 | buildConfigurationList = 27199AC11BE422AC00E02297 /* Build configuration list for PBXNativeTarget "HeliumShareExtension" */;
225 | buildPhases = (
226 | 27199AAC1BE422AC00E02297 /* Sources */,
227 | 27199AAD1BE422AC00E02297 /* Frameworks */,
228 | 27199AAE1BE422AC00E02297 /* Resources */,
229 | );
230 | buildRules = (
231 | );
232 | dependencies = (
233 | );
234 | name = HeliumShareExtension;
235 | productName = HeliumShareExtension;
236 | productReference = 27199AB01BE422AC00E02297 /* HeliumShareExtension.appex */;
237 | productType = "com.apple.product-type.app-extension";
238 | };
239 | 4D867CB01AD6781200681331 /* Helium */ = {
240 | isa = PBXNativeTarget;
241 | buildConfigurationList = 4D867CCD1AD6781200681331 /* Build configuration list for PBXNativeTarget "Helium" */;
242 | buildPhases = (
243 | 4D867CAD1AD6781200681331 /* Sources */,
244 | 4D867CAE1AD6781200681331 /* Frameworks */,
245 | 4D867CAF1AD6781200681331 /* Resources */,
246 | B34C1EC81ADE3F870094ADBA /* Copy Files */,
247 | 27199AC21BE422AC00E02297 /* Embed App Extensions */,
248 | );
249 | buildRules = (
250 | );
251 | dependencies = (
252 | 27199ABD1BE422AC00E02297 /* PBXTargetDependency */,
253 | );
254 | name = Helium;
255 | productName = Helium;
256 | productReference = 4D867CB11AD6781200681331 /* Helium.app */;
257 | productType = "com.apple.product-type.application";
258 | };
259 | 4D867CC21AD6781200681331 /* HeliumTests */ = {
260 | isa = PBXNativeTarget;
261 | buildConfigurationList = 4D867CD01AD6781200681331 /* Build configuration list for PBXNativeTarget "HeliumTests" */;
262 | buildPhases = (
263 | 4D867CBF1AD6781200681331 /* Sources */,
264 | 4D867CC01AD6781200681331 /* Frameworks */,
265 | 4D867CC11AD6781200681331 /* Resources */,
266 | );
267 | buildRules = (
268 | );
269 | dependencies = (
270 | 4D867CC51AD6781200681331 /* PBXTargetDependency */,
271 | );
272 | name = HeliumTests;
273 | productName = HeliumTests;
274 | productReference = 4D867CC31AD6781200681331 /* HeliumTests.xctest */;
275 | productType = "com.apple.product-type.bundle.unit-test";
276 | };
277 | /* End PBXNativeTarget section */
278 |
279 | /* Begin PBXProject section */
280 | 4D867CA91AD6781200681331 /* Project object */ = {
281 | isa = PBXProject;
282 | attributes = {
283 | LastSwiftMigration = 0700;
284 | LastSwiftUpdateCheck = 0720;
285 | LastUpgradeCheck = 0830;
286 | ORGANIZATIONNAME = "Jaden Geller";
287 | TargetAttributes = {
288 | 27199AAF1BE422AC00E02297 = {
289 | CreatedOnToolsVersion = 7.1;
290 | DevelopmentTeam = S45U87UZN5;
291 | LastSwiftMigration = 0830;
292 | SystemCapabilities = {
293 | com.apple.Sandbox = {
294 | enabled = 1;
295 | };
296 | };
297 | };
298 | 4D867CB01AD6781200681331 = {
299 | CreatedOnToolsVersion = 6.3;
300 | DevelopmentTeam = S45U87UZN5;
301 | LastSwiftMigration = 0830;
302 | SystemCapabilities = {
303 | com.apple.Sandbox = {
304 | enabled = 0;
305 | };
306 | };
307 | };
308 | 4D867CC21AD6781200681331 = {
309 | CreatedOnToolsVersion = 6.3;
310 | DevelopmentTeam = S45U87UZN5;
311 | LastSwiftMigration = 0830;
312 | TestTargetID = 4D867CB01AD6781200681331;
313 | };
314 | };
315 | };
316 | buildConfigurationList = 4D867CAC1AD6781200681331 /* Build configuration list for PBXProject "Helium" */;
317 | compatibilityVersion = "Xcode 3.2";
318 | developmentRegion = English;
319 | hasScannedForEncodings = 0;
320 | knownRegions = (
321 | en,
322 | Base,
323 | );
324 | mainGroup = 4D867CA81AD6781200681331;
325 | productRefGroup = 4D867CB21AD6781200681331 /* Products */;
326 | projectDirPath = "";
327 | projectRoot = "";
328 | targets = (
329 | 4D867CB01AD6781200681331 /* Helium */,
330 | 4D867CC21AD6781200681331 /* HeliumTests */,
331 | 27199AAF1BE422AC00E02297 /* HeliumShareExtension */,
332 | );
333 | };
334 | /* End PBXProject section */
335 |
336 | /* Begin PBXResourcesBuildPhase section */
337 | 27199AAE1BE422AC00E02297 /* Resources */ = {
338 | isa = PBXResourcesBuildPhase;
339 | buildActionMask = 2147483647;
340 | files = (
341 | 27199ABA1BE422AC00E02297 /* ShareViewController.xib in Resources */,
342 | 27199AB41BE422AC00E02297 /* icon.icns in Resources */,
343 | );
344 | runOnlyForDeploymentPostprocessing = 0;
345 | };
346 | 4D867CAF1AD6781200681331 /* Resources */ = {
347 | isa = PBXResourcesBuildPhase;
348 | buildActionMask = 2147483647;
349 | files = (
350 | 4D867CBB1AD6781200681331 /* Images.xcassets in Resources */,
351 | B34C1EC61ADE3CBE0094ADBA /* dsa_pub.pem in Resources */,
352 | 4D867CBE1AD6781200681331 /* Main.storyboard in Resources */,
353 | );
354 | runOnlyForDeploymentPostprocessing = 0;
355 | };
356 | 4D867CC11AD6781200681331 /* Resources */ = {
357 | isa = PBXResourcesBuildPhase;
358 | buildActionMask = 2147483647;
359 | files = (
360 | );
361 | runOnlyForDeploymentPostprocessing = 0;
362 | };
363 | /* End PBXResourcesBuildPhase section */
364 |
365 | /* Begin PBXSourcesBuildPhase section */
366 | 27199AAC1BE422AC00E02297 /* Sources */ = {
367 | isa = PBXSourcesBuildPhase;
368 | buildActionMask = 2147483647;
369 | files = (
370 | 5B75B5131C9A13D600475921 /* StringHelpers.swift in Sources */,
371 | 27199AB71BE422AC00E02297 /* ShareViewController.swift in Sources */,
372 | );
373 | runOnlyForDeploymentPostprocessing = 0;
374 | };
375 | 4D867CAD1AD6781200681331 /* Sources */ = {
376 | isa = PBXSourcesBuildPhase;
377 | buildActionMask = 2147483647;
378 | files = (
379 | 5B75B5121C9A13D600475921 /* StringHelpers.swift in Sources */,
380 | 4D867CD41AD6796A00681331 /* HeliumPanelController.swift in Sources */,
381 | 4D8DAEAC1C3A41F300B212EC /* UserSettings.swift in Sources */,
382 | 4D867CB91AD6781200681331 /* WebViewController.swift in Sources */,
383 | 4D867CB71AD6781200681331 /* AppDelegate.swift in Sources */,
384 | 6569AE371EC11E86002C8D07 /* UrlHelpers.swift in Sources */,
385 | 6569AE681EC23C88002C8D07 /* HeliumPanel.swift in Sources */,
386 | );
387 | runOnlyForDeploymentPostprocessing = 0;
388 | };
389 | 4D867CBF1AD6781200681331 /* Sources */ = {
390 | isa = PBXSourcesBuildPhase;
391 | buildActionMask = 2147483647;
392 | files = (
393 | 6569AE381EC13B34002C8D07 /* StringHelpers.swift in Sources */,
394 | 6569AE391EC13B34002C8D07 /* UrlHelpers.swift in Sources */,
395 | 4D8DAEB31C3A427D00B212EC /* HeliumTests.swift in Sources */,
396 | );
397 | runOnlyForDeploymentPostprocessing = 0;
398 | };
399 | /* End PBXSourcesBuildPhase section */
400 |
401 | /* Begin PBXTargetDependency section */
402 | 27199ABD1BE422AC00E02297 /* PBXTargetDependency */ = {
403 | isa = PBXTargetDependency;
404 | target = 27199AAF1BE422AC00E02297 /* HeliumShareExtension */;
405 | targetProxy = 27199ABC1BE422AC00E02297 /* PBXContainerItemProxy */;
406 | };
407 | 4D867CC51AD6781200681331 /* PBXTargetDependency */ = {
408 | isa = PBXTargetDependency;
409 | target = 4D867CB01AD6781200681331 /* Helium */;
410 | targetProxy = 4D867CC41AD6781200681331 /* PBXContainerItemProxy */;
411 | };
412 | /* End PBXTargetDependency section */
413 |
414 | /* Begin PBXVariantGroup section */
415 | 27199AB81BE422AC00E02297 /* ShareViewController.xib */ = {
416 | isa = PBXVariantGroup;
417 | children = (
418 | 27199AB91BE422AC00E02297 /* Base */,
419 | );
420 | name = ShareViewController.xib;
421 | sourceTree = "";
422 | };
423 | 4D867CBC1AD6781200681331 /* Main.storyboard */ = {
424 | isa = PBXVariantGroup;
425 | children = (
426 | 4D867CBD1AD6781200681331 /* Base */,
427 | );
428 | name = Main.storyboard;
429 | sourceTree = "";
430 | };
431 | /* End PBXVariantGroup section */
432 |
433 | /* Begin XCBuildConfiguration section */
434 | 27199ABF1BE422AC00E02297 /* Debug */ = {
435 | isa = XCBuildConfiguration;
436 | buildSettings = {
437 | COMBINE_HIDPI_IMAGES = YES;
438 | ENABLE_TESTABILITY = YES;
439 | INFOPLIST_FILE = HeliumShareExtension/Info.plist;
440 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
441 | MACOSX_DEPLOYMENT_TARGET = 10.11;
442 | PRODUCT_BUNDLE_IDENTIFIER = com.JadenGeller.Helium.HeliumShareExtension;
443 | PRODUCT_NAME = "$(TARGET_NAME)";
444 | SKIP_INSTALL = YES;
445 | SWIFT_VERSION = 3.0;
446 | };
447 | name = Debug;
448 | };
449 | 27199AC01BE422AC00E02297 /* Release */ = {
450 | isa = XCBuildConfiguration;
451 | buildSettings = {
452 | COMBINE_HIDPI_IMAGES = YES;
453 | INFOPLIST_FILE = HeliumShareExtension/Info.plist;
454 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @executable_path/../../../../Frameworks";
455 | MACOSX_DEPLOYMENT_TARGET = 10.11;
456 | PRODUCT_BUNDLE_IDENTIFIER = com.JadenGeller.Helium.HeliumShareExtension;
457 | PRODUCT_NAME = "$(TARGET_NAME)";
458 | SKIP_INSTALL = YES;
459 | SWIFT_VERSION = 3.0;
460 | };
461 | name = Release;
462 | };
463 | 4D867CCB1AD6781200681331 /* Debug */ = {
464 | isa = XCBuildConfiguration;
465 | buildSettings = {
466 | ALWAYS_SEARCH_USER_PATHS = NO;
467 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
468 | CLANG_CXX_LIBRARY = "libc++";
469 | CLANG_ENABLE_MODULES = YES;
470 | CLANG_ENABLE_OBJC_ARC = YES;
471 | CLANG_WARN_BOOL_CONVERSION = YES;
472 | CLANG_WARN_CONSTANT_CONVERSION = YES;
473 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
474 | CLANG_WARN_EMPTY_BODY = YES;
475 | CLANG_WARN_ENUM_CONVERSION = YES;
476 | CLANG_WARN_INFINITE_RECURSION = YES;
477 | CLANG_WARN_INT_CONVERSION = YES;
478 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
479 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
480 | CLANG_WARN_UNREACHABLE_CODE = YES;
481 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
482 | COPY_PHASE_STRIP = NO;
483 | DEBUG_INFORMATION_FORMAT = dwarf;
484 | ENABLE_STRICT_OBJC_MSGSEND = YES;
485 | ENABLE_TESTABILITY = YES;
486 | GCC_C_LANGUAGE_STANDARD = gnu99;
487 | GCC_DYNAMIC_NO_PIC = NO;
488 | GCC_NO_COMMON_BLOCKS = YES;
489 | GCC_OPTIMIZATION_LEVEL = 0;
490 | GCC_PREPROCESSOR_DEFINITIONS = (
491 | "DEBUG=1",
492 | "$(inherited)",
493 | );
494 | GCC_SYMBOLS_PRIVATE_EXTERN = NO;
495 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
496 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
497 | GCC_WARN_UNDECLARED_SELECTOR = YES;
498 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
499 | GCC_WARN_UNUSED_FUNCTION = YES;
500 | GCC_WARN_UNUSED_VARIABLE = YES;
501 | MACOSX_DEPLOYMENT_TARGET = 10.10;
502 | MTL_ENABLE_DEBUG_INFO = YES;
503 | ONLY_ACTIVE_ARCH = YES;
504 | SDKROOT = macosx;
505 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
506 | SYMROOT = "$(SRCROOT)/build";
507 | };
508 | name = Debug;
509 | };
510 | 4D867CCC1AD6781200681331 /* Release */ = {
511 | isa = XCBuildConfiguration;
512 | buildSettings = {
513 | ALWAYS_SEARCH_USER_PATHS = NO;
514 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
515 | CLANG_CXX_LIBRARY = "libc++";
516 | CLANG_ENABLE_MODULES = YES;
517 | CLANG_ENABLE_OBJC_ARC = YES;
518 | CLANG_WARN_BOOL_CONVERSION = YES;
519 | CLANG_WARN_CONSTANT_CONVERSION = YES;
520 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
521 | CLANG_WARN_EMPTY_BODY = YES;
522 | CLANG_WARN_ENUM_CONVERSION = YES;
523 | CLANG_WARN_INFINITE_RECURSION = YES;
524 | CLANG_WARN_INT_CONVERSION = YES;
525 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
526 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
527 | CLANG_WARN_UNREACHABLE_CODE = YES;
528 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
529 | COPY_PHASE_STRIP = NO;
530 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
531 | ENABLE_NS_ASSERTIONS = NO;
532 | ENABLE_STRICT_OBJC_MSGSEND = YES;
533 | GCC_C_LANGUAGE_STANDARD = gnu99;
534 | GCC_NO_COMMON_BLOCKS = YES;
535 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
536 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
537 | GCC_WARN_UNDECLARED_SELECTOR = YES;
538 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
539 | GCC_WARN_UNUSED_FUNCTION = YES;
540 | GCC_WARN_UNUSED_VARIABLE = YES;
541 | MACOSX_DEPLOYMENT_TARGET = 10.10;
542 | MTL_ENABLE_DEBUG_INFO = NO;
543 | SDKROOT = macosx;
544 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
545 | SYMROOT = "$(SRCROOT)/build";
546 | };
547 | name = Release;
548 | };
549 | 4D867CCE1AD6781200681331 /* Debug */ = {
550 | isa = XCBuildConfiguration;
551 | buildSettings = {
552 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
553 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
554 | CLANG_ENABLE_MODULES = YES;
555 | COMBINE_HIDPI_IMAGES = YES;
556 | FRAMEWORK_SEARCH_PATHS = (
557 | "$(inherited)",
558 | "$(PROJECT_DIR)/Helium",
559 | );
560 | INFOPLIST_FILE = Helium/Info.plist;
561 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
562 | OTHER_LDFLAGS = "-Wl,-rpath,@loader_path/../Frameworks";
563 | PRODUCT_BUNDLE_IDENTIFIER = com.JadenGeller.Helium;
564 | PRODUCT_NAME = "$(TARGET_NAME)";
565 | SWIFT_OBJC_BRIDGING_HEADER = "Helium/Helium-Bridging-Header.h";
566 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
567 | SWIFT_VERSION = 3.0;
568 | };
569 | name = Debug;
570 | };
571 | 4D867CCF1AD6781200681331 /* Release */ = {
572 | isa = XCBuildConfiguration;
573 | buildSettings = {
574 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
575 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
576 | CLANG_ENABLE_MODULES = YES;
577 | COMBINE_HIDPI_IMAGES = YES;
578 | FRAMEWORK_SEARCH_PATHS = (
579 | "$(inherited)",
580 | "$(PROJECT_DIR)/Helium",
581 | );
582 | INFOPLIST_FILE = Helium/Info.plist;
583 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
584 | OTHER_LDFLAGS = "-Wl,-rpath,@loader_path/../Frameworks";
585 | PRODUCT_BUNDLE_IDENTIFIER = com.JadenGeller.Helium;
586 | PRODUCT_NAME = "$(TARGET_NAME)";
587 | SWIFT_OBJC_BRIDGING_HEADER = "Helium/Helium-Bridging-Header.h";
588 | SWIFT_VERSION = 3.0;
589 | };
590 | name = Release;
591 | };
592 | 4D867CD11AD6781200681331 /* Debug */ = {
593 | isa = XCBuildConfiguration;
594 | buildSettings = {
595 | BUNDLE_LOADER = "$(TEST_HOST)";
596 | CLANG_ENABLE_MODULES = YES;
597 | COMBINE_HIDPI_IMAGES = YES;
598 | FRAMEWORK_SEARCH_PATHS = (
599 | "$(DEVELOPER_FRAMEWORKS_DIR)",
600 | "$(inherited)",
601 | );
602 | GCC_PREPROCESSOR_DEFINITIONS = (
603 | "DEBUG=1",
604 | "$(inherited)",
605 | );
606 | INFOPLIST_FILE = HeliumTests/Info.plist;
607 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
608 | PRODUCT_BUNDLE_IDENTIFIER = "com.JadenGeller.$(PRODUCT_NAME:rfc1034identifier)";
609 | PRODUCT_NAME = "$(TARGET_NAME)";
610 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
611 | SWIFT_VERSION = 3.0;
612 | };
613 | name = Debug;
614 | };
615 | 4D867CD21AD6781200681331 /* Release */ = {
616 | isa = XCBuildConfiguration;
617 | buildSettings = {
618 | BUNDLE_LOADER = "$(TEST_HOST)";
619 | CLANG_ENABLE_MODULES = YES;
620 | COMBINE_HIDPI_IMAGES = YES;
621 | FRAMEWORK_SEARCH_PATHS = (
622 | "$(DEVELOPER_FRAMEWORKS_DIR)",
623 | "$(inherited)",
624 | );
625 | INFOPLIST_FILE = HeliumTests/Info.plist;
626 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks";
627 | PRODUCT_BUNDLE_IDENTIFIER = "com.JadenGeller.$(PRODUCT_NAME:rfc1034identifier)";
628 | PRODUCT_NAME = "$(TARGET_NAME)";
629 | SWIFT_VERSION = 3.0;
630 | };
631 | name = Release;
632 | };
633 | /* End XCBuildConfiguration section */
634 |
635 | /* Begin XCConfigurationList section */
636 | 27199AC11BE422AC00E02297 /* Build configuration list for PBXNativeTarget "HeliumShareExtension" */ = {
637 | isa = XCConfigurationList;
638 | buildConfigurations = (
639 | 27199ABF1BE422AC00E02297 /* Debug */,
640 | 27199AC01BE422AC00E02297 /* Release */,
641 | );
642 | defaultConfigurationIsVisible = 0;
643 | defaultConfigurationName = Release;
644 | };
645 | 4D867CAC1AD6781200681331 /* Build configuration list for PBXProject "Helium" */ = {
646 | isa = XCConfigurationList;
647 | buildConfigurations = (
648 | 4D867CCB1AD6781200681331 /* Debug */,
649 | 4D867CCC1AD6781200681331 /* Release */,
650 | );
651 | defaultConfigurationIsVisible = 0;
652 | defaultConfigurationName = Release;
653 | };
654 | 4D867CCD1AD6781200681331 /* Build configuration list for PBXNativeTarget "Helium" */ = {
655 | isa = XCConfigurationList;
656 | buildConfigurations = (
657 | 4D867CCE1AD6781200681331 /* Debug */,
658 | 4D867CCF1AD6781200681331 /* Release */,
659 | );
660 | defaultConfigurationIsVisible = 0;
661 | defaultConfigurationName = Release;
662 | };
663 | 4D867CD01AD6781200681331 /* Build configuration list for PBXNativeTarget "HeliumTests" */ = {
664 | isa = XCConfigurationList;
665 | buildConfigurations = (
666 | 4D867CD11AD6781200681331 /* Debug */,
667 | 4D867CD21AD6781200681331 /* Release */,
668 | );
669 | defaultConfigurationIsVisible = 0;
670 | defaultConfigurationName = Release;
671 | };
672 | /* End XCConfigurationList section */
673 | };
674 | rootObject = 4D867CA91AD6781200681331 /* Project object */;
675 | }
676 |
--------------------------------------------------------------------------------