Vendor platypus.app
Let's see if it can be made to work.
|
|
@ -0,0 +1 @@
|
|||
Versions/Current/Autoupdate
|
||||
|
|
@ -0,0 +1 @@
|
|||
Versions/Current/Resources
|
||||
|
|
@ -0,0 +1 @@
|
|||
Versions/Current/Sparkle
|
||||
|
|
@ -0,0 +1 @@
|
|||
Versions/Current/Updater.app
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>21G83</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Sparkle</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.sparkle-project.Sparkle</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Sparkle</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>FMWK</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.2.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2017.1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>macosx</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>12.3</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>21E226</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx12.3</string>
|
||||
<key>DTXcode</key>
|
||||
<string>1331</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.11</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
@media (prefers-color-scheme: dark) {
|
||||
html {
|
||||
color-scheme: dark;
|
||||
color: white;
|
||||
background: transparent;
|
||||
}
|
||||
:link {
|
||||
color: #419CFF;
|
||||
}
|
||||
:link:active {
|
||||
color: #FF1919;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,314 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>ADP2,1</key>
|
||||
<string>Developer Transition Kit</string>
|
||||
<key>iMac1,1</key>
|
||||
<string>iMac G3 (Rev A-D)</string>
|
||||
<key>iMac4,1</key>
|
||||
<string>iMac (Core Duo)</string>
|
||||
<key>iMac4,2</key>
|
||||
<string>iMac for Education (17 inch, Core Duo)</string>
|
||||
<key>iMac5,1</key>
|
||||
<string>iMac (Core 2 Duo, 17 or 20 inch, SuperDrive)</string>
|
||||
<key>iMac5,2</key>
|
||||
<string>iMac (Core 2 Duo, 17 inch, Combo Drive)</string>
|
||||
<key>iMac6,1</key>
|
||||
<string>iMac (Core 2 Duo, 24 inch, SuperDrive)</string>
|
||||
<key>iMac7,1</key>
|
||||
<string>iMac Intel Core 2 Duo (aluminum enclosure)</string>
|
||||
<key>iMac8,1</key>
|
||||
<string>iMac (Core 2 Duo, 20 or 24 inch, Early 2008 )</string>
|
||||
<key>iMac9,1</key>
|
||||
<string>iMac (Core 2 Duo, 20 or 24 inch, Early or Mid 2009 )</string>
|
||||
<key>iMac10,1</key>
|
||||
<string>iMac (Core 2 Duo, 21.5 or 27 inch, Late 2009 )</string>
|
||||
<key>iMac11,1</key>
|
||||
<string>iMac (Core i5 or i7, 27 inch Late 2009)</string>
|
||||
<key>iMac11,2</key>
|
||||
<string>21.5" iMac (mid 2010)</string>
|
||||
<key>iMac11,3</key>
|
||||
<string>iMac (Core i5 or i7, 27 inch Mid 2010)</string>
|
||||
<key>iMac12,1</key>
|
||||
<string>iMac (Core i3 or i5 or i7, 21.5 inch Mid 2010 or Late 2011)</string>
|
||||
<key>iMac12,2</key>
|
||||
<string>iMac (Core i5 or i7, 27 inch Mid 2011)</string>
|
||||
<key>iMac13,1</key>
|
||||
<string>iMac (Core i3 or i5 or i7, 21.5 inch Late 2012 or Early 2013)</string>
|
||||
<key>iMac13,2</key>
|
||||
<string>iMac (Core i5 or i7, 27 inch Late 2012)</string>
|
||||
<key>iMac14,1</key>
|
||||
<string>iMac (Core i5, 21.5 inch Late 2013)</string>
|
||||
<key>iMac14,2</key>
|
||||
<string>iMac (Core i5 or i7, 27 inch Late 2013)</string>
|
||||
<key>iMac14,3</key>
|
||||
<string>iMac (Core i5 or i7, 21.5 inch Late 2013)</string>
|
||||
<key>iMac14,4</key>
|
||||
<string>iMac (Core i5, 21.5 inch Mid 2014)</string>
|
||||
<key>iMac15,1</key>
|
||||
<string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2014 or Mid 2015)</string>
|
||||
<key>iMac16,1</key>
|
||||
<string>iMac (Core i5, 21,5 inch Late 2015)</string>
|
||||
<key>iMac16,2</key>
|
||||
<string>iMac (Retina 4K Core i5 or i7, 21.5 inch Late 2015)</string>
|
||||
<key>iMac17,1</key>
|
||||
<string>iMac (Retina 5K Core i5 or i7, 27 inch Late 2015)</string>
|
||||
<key>MacBook1,1</key>
|
||||
<string>MacBook (Core Duo)</string>
|
||||
<key>MacBook2,1</key>
|
||||
<string>MacBook (Core 2 Duo)</string>
|
||||
<key>MacBook4,1</key>
|
||||
<string>MacBook (Core 2 Duo Feb 2008)</string>
|
||||
<key>MacBook5,1</key>
|
||||
<string>MacBook (Core 2 Duo, Late 2008, Unibody)</string>
|
||||
<key>MacBook5,2</key>
|
||||
<string>MacBook (Core 2 Duo, Early 2009, White)</string>
|
||||
<key>MacBook6,1</key>
|
||||
<string>MacBook (Core 2 Duo, Late 2009, Unibody)</string>
|
||||
<key>MacBook7,1</key>
|
||||
<string>MacBook (Core 2 Duo, Mid 2010, White)</string>
|
||||
<key>MacBook8,1</key>
|
||||
<string>MacBook (Core M, 12 inch, Early 2015)</string>
|
||||
<key>MacBookAir1,1</key>
|
||||
<string>MacBook Air (Core 2 Duo, 13 inch, Early 2008)</string>
|
||||
<key>MacBookAir2,1</key>
|
||||
<string>MacBook Air (Core 2 Duo, 13 inch, Mid 2009)</string>
|
||||
<key>MacBookAir3,1</key>
|
||||
<string>MacBook Air (Core 2 Duo, 11 inch, Late 2010)</string>
|
||||
<key>MacBookAir3,2</key>
|
||||
<string>MacBook Air (Core 2 Duo, 13 inch, Late 2010)</string>
|
||||
<key>MacBookAir4,1</key>
|
||||
<string>MacBook Air (Core i5 or i7, 11 inch, Mid 2011)</string>
|
||||
<key>MacBookAir4,2</key>
|
||||
<string>MacBook Air (Core i5 or i7, 13 inch, Mid 2011)</string>
|
||||
<key>MacBookAir5,1</key>
|
||||
<string>MacBook Air (Core i5 or i7, 11 inch, Mid 2012)</string>
|
||||
<key>MacBookAir5,2</key>
|
||||
<string>MacBook Air (Core i5 or i7, 13 inch, Mid 2012)</string>
|
||||
<key>MacBookAir6,1</key>
|
||||
<string>MacBook Air (Core i5 or i7, 11 inch, Mid 2013 or Early 2014)</string>
|
||||
<key>MacBookAir6,2</key>
|
||||
<string>MacBook Air (Core i5 or i7, 13 inch, Mid 2013 or Early 2014)</string>
|
||||
<key>MacBookAir7,1</key>
|
||||
<string>MacBook Air (Core i5 or i7, 11 inch, Early 2015)</string>
|
||||
<key>MacBookAir7,2</key>
|
||||
<string>MacBook Air (Core i5 or i7, 13 inch, Early 2015)</string>
|
||||
<key>MacBookPro1,1</key>
|
||||
<string>MacBook Pro Core Duo (15-inch)</string>
|
||||
<key>MacBookPro1,2</key>
|
||||
<string>MacBook Pro Core Duo (17-inch)</string>
|
||||
<key>MacBookPro2,1</key>
|
||||
<string>MacBook Pro Core 2 Duo (17-inch)</string>
|
||||
<key>MacBookPro2,2</key>
|
||||
<string>MacBook Pro Core 2 Duo (15-inch)</string>
|
||||
<key>MacBookPro3,1</key>
|
||||
<string>MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo)</string>
|
||||
<key>MacBookPro3,2</key>
|
||||
<string>MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo)</string>
|
||||
<key>MacBookPro4,1</key>
|
||||
<string>MacBook Pro (Core 2 Duo Feb 2008)</string>
|
||||
<key>MacBookPro5,1</key>
|
||||
<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
|
||||
<key>MacBookPro5,2</key>
|
||||
<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
|
||||
<key>MacBookPro5,3</key>
|
||||
<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
|
||||
<key>MacBookPro5,4</key>
|
||||
<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
|
||||
<key>MacBookPro5,5</key>
|
||||
<string>MacBook Pro Intel Core 2 Duo (aluminum unibody)</string>
|
||||
<key>MacBookPro6,1</key>
|
||||
<string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>
|
||||
<key>MacBookPro6,2</key>
|
||||
<string>MacBook Pro Intel Core i5, Intel Core i7 (mid 2010)</string>
|
||||
<key>MacBookPro7,1</key>
|
||||
<string>MacBook Pro Intel Core 2 Duo (mid 2010)</string>
|
||||
<key>MacBookPro8,1</key>
|
||||
<string>MacBook Pro Intel Core i5, Intel Core i7, 13" (early 2011)</string>
|
||||
<key>MacBookPro8,2</key>
|
||||
<string>MacBook Pro Intel Core i7, 15" (early 2011)</string>
|
||||
<key>MacBookPro8,3</key>
|
||||
<string>MacBook Pro Intel Core i7, 17" (early 2011)</string>
|
||||
<key>MacBookPro9,1</key>
|
||||
<string>MacBook Pro (15-inch, Mid 2012)</string>
|
||||
<key>MacBookPro9,2</key>
|
||||
<string>MacBook Pro (13-inch, Mid 2012)</string>
|
||||
<key>MacBookPro10,1</key>
|
||||
<string>MacBook Pro (Retina, Mid 2012)</string>
|
||||
<key>MacBookPro10,2</key>
|
||||
<string>MacBook Pro (Retina, 13-inch, Late 2012)</string>
|
||||
<key>MacBookPro11,1</key>
|
||||
<string>MacBook Pro (Retina, 13-inch, Late 2013)</string>
|
||||
<key>MacBookPro11,2</key>
|
||||
<string>MacBook Pro (Retina, 15-inch, Late 2013)</string>
|
||||
<key>MacBookPro11,3</key>
|
||||
<string>MacBook Pro (Retina, 15-inch, Late 2013)</string>
|
||||
<key>MacbookPro11,4</key>
|
||||
<string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>
|
||||
<key>MacbookPro11,5</key>
|
||||
<string>MacBook Pro (Retina, 15-inch, Mid 2015)</string>
|
||||
<key>MacbookPro12,1 </key>
|
||||
<string>MacBook Pro (Retina, 13-inch, Early 2015)</string>
|
||||
<key>Macmini1,1</key>
|
||||
<string>Mac Mini (Core Solo/Duo)</string>
|
||||
<key>Macmini2,1</key>
|
||||
<string>Mac mini Intel Core</string>
|
||||
<key>Macmini3,1</key>
|
||||
<string>Mac mini Intel Core</string>
|
||||
<key>Macmini4,1</key>
|
||||
<string>Mac mini Intel Core (Mid 2010)</string>
|
||||
<key>Macmini5,1</key>
|
||||
<string>Mac mini (Core i5, Mid 2011)</string>
|
||||
<key>Macmini5,2</key>
|
||||
<string>Mac mini (Core i5 or Core i7, Mid 2011)</string>
|
||||
<key>Macmini5,3</key>
|
||||
<string>Mac mini (Core i7, Server, Mid 2011)</string>
|
||||
<key>Macmini6,1</key>
|
||||
<string>Mac mini (Core i5, Late 2012)</string>
|
||||
<key>Macmini6,2</key>
|
||||
<string>Mac mini (Core i7, Normal or Server, Late 2012)</string>
|
||||
<key>Macmini7,1</key>
|
||||
<string>Mac mini (Core i5 or Core i7, Late 2014)</string>
|
||||
<key>MacPro1,1,Quad</key>
|
||||
<string>Mac Pro</string>
|
||||
<key>MacPro1,1</key>
|
||||
<string>Mac Pro (four-core)</string>
|
||||
<key>MacPro2,1</key>
|
||||
<string>Mac Pro (eight-core)</string>
|
||||
<key>MacPro3,1</key>
|
||||
<string>Mac Pro (January 2008 4- or 8- core "Harpertown")</string>
|
||||
<key>MacPro4,1</key>
|
||||
<string>Mac Pro (March 2009)</string>
|
||||
<key>MacPro5,1</key>
|
||||
<string>Mac Pro (2010 or 2012)</string>
|
||||
<key>MacPro6,1</key>
|
||||
<string>Mac Pro (Late 2013)</string>
|
||||
<key>PowerBook1,1</key>
|
||||
<string>PowerBook G3</string>
|
||||
<key>PowerBook2,1</key>
|
||||
<string>iBook G3</string>
|
||||
<key>PowerBook2,2</key>
|
||||
<string>iBook G3 (FireWire)</string>
|
||||
<key>PowerBook2,3</key>
|
||||
<string>iBook G3</string>
|
||||
<key>PowerBook2,4</key>
|
||||
<string>iBook G3</string>
|
||||
<key>PowerBook3,1</key>
|
||||
<string>PowerBook G3 (FireWire)</string>
|
||||
<key>PowerBook3,2</key>
|
||||
<string>PowerBook G4</string>
|
||||
<key>PowerBook3,3</key>
|
||||
<string>PowerBook G4 (Gigabit Ethernet)</string>
|
||||
<key>PowerBook3,4</key>
|
||||
<string>PowerBook G4 (DVI)</string>
|
||||
<key>PowerBook3,5</key>
|
||||
<string>PowerBook G4 (1GHz / 867MHz)</string>
|
||||
<key>PowerBook4,1</key>
|
||||
<string>iBook G3 (Dual USB, Late 2001)</string>
|
||||
<key>PowerBook4,2</key>
|
||||
<string>iBook G3 (16MB VRAM)</string>
|
||||
<key>PowerBook4,3</key>
|
||||
<string>iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003)</string>
|
||||
<key>PowerBook5,1</key>
|
||||
<string>PowerBook G4 (17 inch)</string>
|
||||
<key>PowerBook5,2</key>
|
||||
<string>PowerBook G4 (15 inch FW 800)</string>
|
||||
<key>PowerBook5,3</key>
|
||||
<string>PowerBook G4 (17-inch 1.33GHz)</string>
|
||||
<key>PowerBook5,4</key>
|
||||
<string>PowerBook G4 (15 inch 1.5/1.33GHz)</string>
|
||||
<key>PowerBook5,5</key>
|
||||
<string>PowerBook G4 (17-inch 1.5GHz)</string>
|
||||
<key>PowerBook5,6</key>
|
||||
<string>PowerBook G4 (15 inch 1.67GHz/1.5GHz)</string>
|
||||
<key>PowerBook5,7</key>
|
||||
<string>PowerBook G4 (17-inch 1.67GHz)</string>
|
||||
<key>PowerBook5,8</key>
|
||||
<string>PowerBook G4 (Double layer SD, 15 inch)</string>
|
||||
<key>PowerBook5,9</key>
|
||||
<string>PowerBook G4 (Double layer SD, 17 inch)</string>
|
||||
<key>PowerBook6,1</key>
|
||||
<string>PowerBook G4 (12 inch)</string>
|
||||
<key>PowerBook6,2</key>
|
||||
<string>PowerBook G4 (12 inch, DVI)</string>
|
||||
<key>PowerBook6,3</key>
|
||||
<string>iBook G4</string>
|
||||
<key>PowerBook6,4</key>
|
||||
<string>PowerBook G4 (12 inch 1.33GHz)</string>
|
||||
<key>PowerBook6,5</key>
|
||||
<string>iBook G4 (Early-Late 2004)</string>
|
||||
<key>PowerBook6,7</key>
|
||||
<string>iBook G4 (Mid 2005)</string>
|
||||
<key>PowerBook6,8</key>
|
||||
<string>PowerBook G4 (12 inch 1.5GHz)</string>
|
||||
<key>PowerMac1,1</key>
|
||||
<string>Power Macintosh G3 (Blue & White)</string>
|
||||
<key>PowerMac1,2</key>
|
||||
<string>Power Macintosh G4 (PCI Graphics)</string>
|
||||
<key>PowerMac2,1</key>
|
||||
<string>iMac G3 (Slot-loading CD-ROM)</string>
|
||||
<key>PowerMac2,2</key>
|
||||
<string>iMac G3 (Summer 2000)</string>
|
||||
<key>PowerMac3,1</key>
|
||||
<string>Power Macintosh G4 (AGP Graphics)</string>
|
||||
<key>PowerMac3,2</key>
|
||||
<string>Power Macintosh G4 (AGP Graphics)</string>
|
||||
<key>PowerMac3,3</key>
|
||||
<string>Power Macintosh G4 (Gigabit Ethernet)</string>
|
||||
<key>PowerMac3,4</key>
|
||||
<string>Power Macintosh G4 (Digital Audio)</string>
|
||||
<key>PowerMac3,5</key>
|
||||
<string>Power Macintosh G4 (Quick Silver)</string>
|
||||
<key>PowerMac3,6</key>
|
||||
<string>Power Macintosh G4 (Mirrored Drive Door)</string>
|
||||
<key>PowerMac4,1</key>
|
||||
<string>iMac G3 (Early/Summer 2001)</string>
|
||||
<key>PowerMac4,2</key>
|
||||
<string>iMac G4 (Flat Panel)</string>
|
||||
<key>PowerMac4,4</key>
|
||||
<string>eMac</string>
|
||||
<key>PowerMac4,5</key>
|
||||
<string>iMac G4 (17-inch Flat Panel)</string>
|
||||
<key>PowerMac5,1</key>
|
||||
<string>Power Macintosh G4 Cube</string>
|
||||
<key>PowerMac5,2</key>
|
||||
<string>Power Mac G4 Cube</string>
|
||||
<key>PowerMac6,1</key>
|
||||
<string>iMac G4 (USB 2.0)</string>
|
||||
<key>PowerMac6,3</key>
|
||||
<string>iMac G4 (20-inch Flat Panel)</string>
|
||||
<key>PowerMac6,4</key>
|
||||
<string>eMac (USB 2.0, 2005)</string>
|
||||
<key>PowerMac7,2</key>
|
||||
<string>Power Macintosh G5</string>
|
||||
<key>PowerMac7,3</key>
|
||||
<string>Power Macintosh G5</string>
|
||||
<key>PowerMac8,1</key>
|
||||
<string>iMac G5</string>
|
||||
<key>PowerMac8,2</key>
|
||||
<string>iMac G5 (Ambient Light Sensor)</string>
|
||||
<key>PowerMac9,1</key>
|
||||
<string>Power Macintosh G5 (Late 2005)</string>
|
||||
<key>PowerMac10,1</key>
|
||||
<string>Mac Mini G4</string>
|
||||
<key>PowerMac10,2</key>
|
||||
<string>Mac Mini (Late 2005)</string>
|
||||
<key>PowerMac11,2</key>
|
||||
<string>Power Macintosh G5 (Late 2005)</string>
|
||||
<key>PowerMac12,1</key>
|
||||
<string>iMac G5 (iSight)</string>
|
||||
<key>RackMac1,1</key>
|
||||
<string>Xserve G4</string>
|
||||
<key>RackMac1,2</key>
|
||||
<string>Xserve G4 (slot-loading, cluster node)</string>
|
||||
<key>RackMac3,1</key>
|
||||
<string>Xserve G5</string>
|
||||
<key>Xserve1,1</key>
|
||||
<string>Xserve (Intel Xeon)</string>
|
||||
<key>Xserve2,1</key>
|
||||
<string>Xserve (January 2008 quad-core)</string>
|
||||
<key>Xserve3,1</key>
|
||||
<string>Xserve (early 2009)</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
/* Class = "NSWindow"; title = "Software Update"; ObjectID = "5"; */
|
||||
"5.title" = "Software Update";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Release Notes:"; ObjectID = "170"; */
|
||||
"170.title" = "Release Notes:";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Remind Me Later"; ObjectID = "171"; */
|
||||
"171.title" = "Remind Me Later";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Skip This Version"; ObjectID = "172"; */
|
||||
"172.title" = "Skip This Version";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Install Update"; ObjectID = "173"; */
|
||||
"173.title" = "Install Update";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Automatically download and install updates in the future"; ObjectID = "175"; */
|
||||
"175.title" = "Automatically download and install updates in the future";
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
|
||||
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "43"; */
|
||||
"43.title" = "Text Cell";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Text Cell"; ObjectID = "45"; */
|
||||
"45.title" = "Text Cell";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Check Automatically"; ObjectID = "176"; */
|
||||
"OhZ-1K-DmA.title" = "Check Automatically";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Don’t Check"; ObjectID = "177"; */
|
||||
"cCJ-V0-aTi.title" = "Don’t Check";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Check for updates automatically?"; ObjectID = "178"; */
|
||||
"gmh-T4-BO0.title" = "Check for updates automatically?";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "DO NOT LOCALIZE"; ObjectID = "179"; */
|
||||
"179.title" = "DO NOT LOCALIZE";
|
||||
|
||||
/* Class = "NSButtonCell"; title = "Include anonymous system profile"; ObjectID = "180"; */
|
||||
"gz7-LM-gNf.title" = "Include anonymous system profile";
|
||||
|
||||
/* Class = "NSTextFieldCell"; title = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:"; ObjectID = "183"; */
|
||||
"183.title" = "Anonymous system profile information is used to help us plan future development work. Please contact us if you have any questions about this.\n\nThis is the information that would be sent:";
|
||||
BIN
platypus/Platypus.app/Contents/Frameworks/Sparkle.framework/Versions/B/Sparkle
Executable file
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>21G83</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Updater</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.sparkle-project.Sparkle.Updater</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Updater</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.2.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2017.1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>macosx</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>12.3</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>21E226</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx12.3</string>
|
||||
<key>DTXcode</key>
|
||||
<string>1331</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.11</string>
|
||||
<key>LSUIElement</key>
|
||||
<string>1</string>
|
||||
<key>NSPrincipalClass</key>
|
||||
<string>NSApplication</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1 @@
|
|||
APPL????
|
||||
|
|
@ -0,0 +1,866 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict>
|
||||
<key>Resources/Base.lproj/Sparkle.strings</key>
|
||||
<data>
|
||||
XSU5ujIHVj0VrcaL7/1PMjP8QWE=
|
||||
</data>
|
||||
<key>Resources/SUStatus.nib/keyedobjects-101300.nib</key>
|
||||
<data>
|
||||
MMoEZd95HH2wagHtE7tdRXWDz2Y=
|
||||
</data>
|
||||
<key>Resources/SUStatus.nib/keyedobjects.nib</key>
|
||||
<data>
|
||||
xfoE8HeFjdDHIe1XsSevLTFTKwU=
|
||||
</data>
|
||||
<key>Resources/ar.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5Ukin0TnIF0ot6Daz8OSgIoDZJ0=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ca.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
SM9Ssbq+EA6SD88oCZx9K6nLvic=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/cs.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
hIXy3nCBtLeY6/3v3pWwYRJl+sA=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/da.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
CkbYzkpwfT37juYfJP25giiTUo4=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/de.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
/1A+Sg5wG2SW+Q5Q7rGwtU2aVk0=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/el.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Hh2GQMfVkK/dapsekwiVZz9cakg=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/es.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
fucEKrOlh81Wj9EqCtUl6sQVg1k=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/fa.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
vI1JRqMnuuewEX52rjBZ/TDrrXk=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/fi.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
+T4u6wvinBvx2z6vcAQKz32lvvE=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/fr.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
fPB1Vk+1a7xRIMKxQ3/F1bxGirA=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/he.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
bG2Mhx67XieRw+jRYm1/n2PIGnI=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/hr.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
S2g3qlSPK1msOuuvB2dU9UoInq4=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/hu.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5CCN2xKgiom6y3+mcWd48RVdX48=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/is.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
RO7D/40UgCd+DPSZg5LlrOBdmfY=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/it.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
W/h9EbnuDfXU4nxRzIF7Dv8ckks=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ja.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
RYRC4Vmp6utNAtLodS/PTyi4yIM=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ko.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
lmXDaCFjaOlD2OSN7WeCYPUkiAc=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/nb.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
n42iYGYF5rusi8bu9cZKBXVwwXE=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/nl.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
t++79qkzwHo15l2gbAGPNIoYsJc=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/pl.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Z2RTzAW/+3ZV5g9/DyNv+YFZNQE=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/pt-BR.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
HLX0cX6CzMOMpZ7eff4JZYu+KQY=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/pt-PT.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
cyq/clJHyLGamebBp/NK6YzPUNM=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ro.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
kYCbmI7ssPYVnQQ3uDHF6PgOBjw=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ru.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
3yWhlgxQS7Hhh481yH9qttWea0U=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/sk.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5I5OyTLppz6aT5r3kKOmRcrDfXg=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/sl.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5fscQshoMtSnO4kj3Ts2Nw4xqkc=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/sv.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
AlR6NnM+kipd4A8PFhs0S0Rccbk=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/th.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
UrzLYtjSwKdvxlSQJa/xe5IqqVo=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/tr.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
fKCgCsGuwlJJnukTgKv+0tfNjSg=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/uk.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
kATRxVYhY1dX+dY1bQ+V+TvmXNk=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/zh_CN.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
glWpVzkvgcS34yRRkZBCTAEAb2k=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/zh_TW.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
KuFUtl+HGoAeq8C81zw8HFNkUtA=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>Resources/Base.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
XSU5ujIHVj0VrcaL7/1PMjP8QWE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
7DQi4XIdmNDFEuet0a26l/2qsTHrLKlDT4/zp6XA97w=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/SUStatus.nib/keyedobjects-101300.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
MMoEZd95HH2wagHtE7tdRXWDz2Y=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
xaemKA5RnHBgTuwB81z6r5d+f2CaMcz74K9Tv+bY4BM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/SUStatus.nib/keyedobjects.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
xfoE8HeFjdDHIe1XsSevLTFTKwU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Wy+vzp56doboxWN7PxsAwtIcSnegjwxIp2S+xhElzW4=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/ar.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5Ukin0TnIF0ot6Daz8OSgIoDZJ0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
yx9tkKjj3aOHvgdYCWXM89uhlyVeNb4oqcAenJxibwI=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ca.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
SM9Ssbq+EA6SD88oCZx9K6nLvic=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
DQhUnYhSgufw5NRY162lt2GGM83U38tQvNF1qotGYzE=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/cs.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
hIXy3nCBtLeY6/3v3pWwYRJl+sA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
yJXcgwDV0GC2yZWVdhf9UQirDu1yLWTaa+x0vVpYkfo=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/da.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
CkbYzkpwfT37juYfJP25giiTUo4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
qgYKiHiodd+q/4U1lIEIUSS9PX9ENx0isGUKLSWmKe4=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/de.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
/1A+Sg5wG2SW+Q5Q7rGwtU2aVk0=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
uxoRq90TmDirUKRbCW1lKy/k1tZvFz4EbxQPhVf+Mhs=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/el.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Hh2GQMfVkK/dapsekwiVZz9cakg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
GvP3asj8JbFMZdNtcFo0MWdmrCB+z6k66kmleaGlmow=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/es.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
fucEKrOlh81Wj9EqCtUl6sQVg1k=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
RYqWb4D0ylosWigPpdVjMlaCWiXNrRIvzIwwVbXpaSs=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/fa.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
vI1JRqMnuuewEX52rjBZ/TDrrXk=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
hiHofXML8/Ej+t2dTRuvVL3vkS/6jW6b/wvx/3quM10=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/fi.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
+T4u6wvinBvx2z6vcAQKz32lvvE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
a70/+B90B44V8vfbEZUJjfFl7uva424DcaTZOvwCEs8=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/fr.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
fPB1Vk+1a7xRIMKxQ3/F1bxGirA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
47e3tLN5HipnOK5BV6nhmhttV0iZRHEYtGRTh56Pp6M=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/he.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
bG2Mhx67XieRw+jRYm1/n2PIGnI=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
RYs+L0NAew70ya8KrCKYYJPkdzTVckZY7TLwVay0ubQ=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/hr.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
S2g3qlSPK1msOuuvB2dU9UoInq4=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
xyEyZ8ezqdbPQQ/b6RSpnULrjnL08GWQ3wd+AasW2KQ=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/hu.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5CCN2xKgiom6y3+mcWd48RVdX48=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
0UBqgjXjtRG51lEacNaLTmNvj5aFUeJ7oo1J4WYkrCw=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/is.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
RO7D/40UgCd+DPSZg5LlrOBdmfY=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
n1w40GWVeQM6/1d+krnNoL0XutbF3HNv2qjFaMErsuY=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/it.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
W/h9EbnuDfXU4nxRzIF7Dv8ckks=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
TgEXGRRCYffwGHAa78wO2btMh/B5TluqOiVpvsy7yYY=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ja.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
RYRC4Vmp6utNAtLodS/PTyi4yIM=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
6b23nyneGkjP1x+wd00PTqF9PPujhu9g0TS4+3cBywo=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ko.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
lmXDaCFjaOlD2OSN7WeCYPUkiAc=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
PIYd2jHiJYoXmHfGbXu4sWialdDeBEyHWgMzu8Yd2H8=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/nb.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
n42iYGYF5rusi8bu9cZKBXVwwXE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
oVMa0iTjxWVrd4HFHRrUvKxqnk+YFHk2CxOu43+wO2Q=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/nl.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
t++79qkzwHo15l2gbAGPNIoYsJc=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
2tCuekmOs0JtuIM7hm/+jt5s4OJGocWANizpTH8a58k=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/pl.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
Z2RTzAW/+3ZV5g9/DyNv+YFZNQE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
/qcXx+RijYb31wahT1y3K+QX0NCxCnGFDX9dWzAc56o=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/pt-BR.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
HLX0cX6CzMOMpZ7eff4JZYu+KQY=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
cExBbBN/cbmRWOsrqKbEBHJOo7FtTr3ZavW9slfCsVc=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/pt-PT.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
cyq/clJHyLGamebBp/NK6YzPUNM=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
WGgYHgAMqsDwSkDIWMFg5XBJnvRCbvM59I1pqJgmhgM=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ro.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
kYCbmI7ssPYVnQQ3uDHF6PgOBjw=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
o6GEyuuMFsBOFOONmS2V2x+bv11kkMT3xHEoelaxJv8=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/ru.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
3yWhlgxQS7Hhh481yH9qttWea0U=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
uqN6dwLmCFJJQmbURrhDJv9wDJSGWqRqyqgeKTNUHZ0=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/sk.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5I5OyTLppz6aT5r3kKOmRcrDfXg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
iZvCvn22+4feRZso6kzggSUbr1p4Z5zyDU7qniyWqE8=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/sl.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
5fscQshoMtSnO4kj3Ts2Nw4xqkc=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
eq+yTsmwGRXUHYRVC4w06YmUPnsYuuc4OjUfo7feieE=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/sv.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
AlR6NnM+kipd4A8PFhs0S0Rccbk=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ZoKH8cwKHH2VaZEkGsmRKevFaLdLxlAICRnrceNdsuw=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/th.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
UrzLYtjSwKdvxlSQJa/xe5IqqVo=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
HT9jsdOsSvc+Orcce27NpaRxKmDCzIwkq+/wUGI3JQM=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/tr.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
fKCgCsGuwlJJnukTgKv+0tfNjSg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
756/lMgBfXOE5IDG5Ei94/iIP40obn9ZEROHo01+SRY=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/uk.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
kATRxVYhY1dX+dY1bQ+V+TvmXNk=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
90+2Bfu2sI863NKWVBCjCtNi5gbrwPr82sRRfR6DOGM=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/zh_CN.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
glWpVzkvgcS34yRRkZBCTAEAb2k=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ri6zQgTn4jhWoV3/2rrfInZs3E9V1wRXWZBILuJatWQ=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/zh_TW.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
KuFUtl+HGoAeq8C81zw8HFNkUtA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
BUEu9Z/QsdFq/HA3MMRbc+oPwLYMAZtEhcwIksTmzB0=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>21G83</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Downloader</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.sparkle-project.Downloader</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Downloader</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.2.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2017.1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>macosx</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>12.3</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>21E226</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx12.3</string>
|
||||
<key>DTXcode</key>
|
||||
<string>1331</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.11</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
<false/>
|
||||
</dict>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2016 Sparkle Project. All rights reserved.</string>
|
||||
<key>XPCService</key>
|
||||
<dict>
|
||||
<key>RunLoopType</key>
|
||||
<string>NSRunLoop</string>
|
||||
<key>ServiceType</key>
|
||||
<string>Application</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict/>
|
||||
<key>files2</key>
|
||||
<dict/>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>BuildMachineOSBuild</key>
|
||||
<string>21G83</string>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>en</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>Installer</string>
|
||||
<key>CFBundleIdentifier</key>
|
||||
<string>org.sparkle-project.InstallerLauncher</string>
|
||||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Installer</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.2.2</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleSupportedPlatforms</key>
|
||||
<array>
|
||||
<string>MacOSX</string>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>2017.1</string>
|
||||
<key>DTCompiler</key>
|
||||
<string>com.apple.compilers.llvm.clang.1_0</string>
|
||||
<key>DTPlatformBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>DTPlatformName</key>
|
||||
<string>macosx</string>
|
||||
<key>DTPlatformVersion</key>
|
||||
<string>12.3</string>
|
||||
<key>DTSDKBuild</key>
|
||||
<string>21E226</string>
|
||||
<key>DTSDKName</key>
|
||||
<string>macosx12.3</string>
|
||||
<key>DTXcode</key>
|
||||
<string>1331</string>
|
||||
<key>DTXcodeBuild</key>
|
||||
<string>13E500a</string>
|
||||
<key>LSMinimumSystemVersion</key>
|
||||
<string>10.11</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string>Copyright © 2016 Sparkle Project. All rights reserved.</string>
|
||||
<key>XPCService</key>
|
||||
<dict>
|
||||
<key>JoinExistingSession</key>
|
||||
<true/>
|
||||
<key>ServiceType</key>
|
||||
<string>Application</string>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict/>
|
||||
<key>files2</key>
|
||||
<dict/>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,362 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>files</key>
|
||||
<dict>
|
||||
<key>Resources/Base.lproj/SUUpdateAlert.nib/keyedobjects-101300.nib</key>
|
||||
<data>
|
||||
eTYyA5a/zlA7yci7ZeY5RT9rNuA=
|
||||
</data>
|
||||
<key>Resources/Base.lproj/SUUpdateAlert.nib/keyedobjects.nib</key>
|
||||
<data>
|
||||
dkgNWMAOxwMTpBWbVE3etzMSYmM=
|
||||
</data>
|
||||
<key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib</key>
|
||||
<data>
|
||||
rP8JtvaANGmgYMHZZYqXixYGclg=
|
||||
</data>
|
||||
<key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib</key>
|
||||
<data>
|
||||
GspzsCPMWa1nV05fEmLIp6zro0I=
|
||||
</data>
|
||||
<key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib</key>
|
||||
<data>
|
||||
YQpWexdFK1383SEk52LmXDEPjsU=
|
||||
</data>
|
||||
<key>Resources/Base.lproj/Sparkle.strings</key>
|
||||
<data>
|
||||
XSU5ujIHVj0VrcaL7/1PMjP8QWE=
|
||||
</data>
|
||||
<key>Resources/Info.plist</key>
|
||||
<data>
|
||||
wkByDmTl1CDu1Wat8APbKFY2k7Y=
|
||||
</data>
|
||||
<key>Resources/ReleaseNotesColorStyle.css</key>
|
||||
<data>
|
||||
NjIvb1z7eJuLCKf9HS15O5heg50=
|
||||
</data>
|
||||
<key>Resources/SUModelTranslation.plist</key>
|
||||
<data>
|
||||
iD2Ex40Usc4ZE6IAhRePqgwK/xw=
|
||||
</data>
|
||||
<key>Resources/SUStatus.nib/keyedobjects-101300.nib</key>
|
||||
<data>
|
||||
MMoEZd95HH2wagHtE7tdRXWDz2Y=
|
||||
</data>
|
||||
<key>Resources/SUStatus.nib/keyedobjects.nib</key>
|
||||
<data>
|
||||
xfoE8HeFjdDHIe1XsSevLTFTKwU=
|
||||
</data>
|
||||
<key>Resources/en.lproj/SUUpdateAlert.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
FSez7jCd0gDTFFGHiWL1QXY8OUU=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/en.lproj/SUUpdatePermissionPrompt.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
NzxxRDATRj41eOLu03OYPRaKa1k=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>files2</key>
|
||||
<dict>
|
||||
<key>Autoupdate</key>
|
||||
<dict>
|
||||
<key>cdhash</key>
|
||||
<data>
|
||||
1cVxblMg9mybVrTagSwOXDuYN3I=
|
||||
</data>
|
||||
<key>requirement</key>
|
||||
<string>cdhash H"6f464712eeb14571e0ba6dcbe95f27eed5943976" or cdhash H"d5c5716e5320f66c9b56b4da812c0e5c3b983772" or cdhash H"fd30c8f4e668a505372802f267df81a5ea1297b5" or cdhash H"b49420629b500ab885b9421a80585dc9ba4c5035"</string>
|
||||
</dict>
|
||||
<key>Resources/Base.lproj/SUUpdateAlert.nib/keyedobjects-101300.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
eTYyA5a/zlA7yci7ZeY5RT9rNuA=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
mOFXSM2WOtGWi7TVaZdQgqyAVM5mN2K8y+fec0Aj1GY=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/Base.lproj/SUUpdateAlert.nib/keyedobjects.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
dkgNWMAOxwMTpBWbVE3etzMSYmM=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
btn6MFqV511IkuTjLAH517GveaLzqWBZV2wQGckoAfA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-101300.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
rP8JtvaANGmgYMHZZYqXixYGclg=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
pL+GKmbdcxP9FeynHxxQn4LiULgbgbtLjeBYQQpBPys=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects-110000.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
GspzsCPMWa1nV05fEmLIp6zro0I=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
ngBPulWqKTt+DrJFiZicSyfUiNyQq34nvTHBaXDsqCA=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/Base.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
YQpWexdFK1383SEk52LmXDEPjsU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
yt15/UsFQ/oJCLbHXcQZgV2KJ245TUGbNFt0/ZTrc5Q=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/Base.lproj/Sparkle.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
XSU5ujIHVj0VrcaL7/1PMjP8QWE=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
7DQi4XIdmNDFEuet0a26l/2qsTHrLKlDT4/zp6XA97w=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/Info.plist</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
wkByDmTl1CDu1Wat8APbKFY2k7Y=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
AbeVxw0aEyknfdN5QCXrmMkEIerxNSWIRFbpcWzyaoE=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/ReleaseNotesColorStyle.css</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
NjIvb1z7eJuLCKf9HS15O5heg50=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
dr1pmXWP2OUdF+a0gttDT5tHaMArA3r2vS46AAzoy8E=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/SUModelTranslation.plist</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
iD2Ex40Usc4ZE6IAhRePqgwK/xw=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
bxnpRQhROJXTL2xuIeffR3p+hOuuji7eOoDeNqSYqTg=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/SUStatus.nib/keyedobjects-101300.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
MMoEZd95HH2wagHtE7tdRXWDz2Y=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
xaemKA5RnHBgTuwB81z6r5d+f2CaMcz74K9Tv+bY4BM=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/SUStatus.nib/keyedobjects.nib</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
xfoE8HeFjdDHIe1XsSevLTFTKwU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
Wy+vzp56doboxWN7PxsAwtIcSnegjwxIp2S+xhElzW4=
|
||||
</data>
|
||||
</dict>
|
||||
<key>Resources/en.lproj/SUUpdateAlert.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
FSez7jCd0gDTFFGHiWL1QXY8OUU=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
EBVS8ZfEIJxGSghO17emwoHQo0LVWWzBJMFs8RwvKWg=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Resources/en.lproj/SUUpdatePermissionPrompt.strings</key>
|
||||
<dict>
|
||||
<key>hash</key>
|
||||
<data>
|
||||
NzxxRDATRj41eOLu03OYPRaKa1k=
|
||||
</data>
|
||||
<key>hash2</key>
|
||||
<data>
|
||||
dtCxuHMLMU87LdmyOxxclj/bOGkoLz6sOZtmOQ4pjXg=
|
||||
</data>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>Updater.app</key>
|
||||
<dict>
|
||||
<key>cdhash</key>
|
||||
<data>
|
||||
+wYRWqTWY2oBwxgLpfqsX1Xk0uw=
|
||||
</data>
|
||||
<key>requirement</key>
|
||||
<string>cdhash H"d2366cad102ade3b3049dd10361e6172d4106ca5" or cdhash H"fb06115aa4d6636a01c3180ba5faac5f55e4d2ec" or cdhash H"b3011c7ffade11b8d2975109a2bdc1d1c8fa8b06" or cdhash H"bd1617f0ef87442324436babd85fdfc3c3b1d5a8"</string>
|
||||
</dict>
|
||||
<key>XPCServices/Downloader.xpc</key>
|
||||
<dict>
|
||||
<key>cdhash</key>
|
||||
<data>
|
||||
SCyCaauepdVTt66VEhL3bgxa6pk=
|
||||
</data>
|
||||
<key>requirement</key>
|
||||
<string>cdhash H"2908c697c401e0cfb054191f1a95aab688fc0c4f" or cdhash H"482c8269ab9ea5d553b7ae951212f76e0c5aea99" or cdhash H"0a1a98cf7b39a738bd2d6cf09388712a5f7b4dc4" or cdhash H"e70a11fb8dbc7c225cbf2d404d6e96b6c6badf9a"</string>
|
||||
</dict>
|
||||
<key>XPCServices/Installer.xpc</key>
|
||||
<dict>
|
||||
<key>cdhash</key>
|
||||
<data>
|
||||
pGZRx+BjZQC9fImZZG9qtO1U38M=
|
||||
</data>
|
||||
<key>requirement</key>
|
||||
<string>cdhash H"eb6a16876b88a72efcebbc439660ebb6c949ab04" or cdhash H"a46651c7e0636500bd7c8999646f6ab4ed54dfc3" or cdhash H"c7e44b8390e27dc58de89b1fc1d1fcd704afee1e" or cdhash H"36e11edfd4e431d194f3cee1a29d885e668ae194"</string>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>rules</key>
|
||||
<dict>
|
||||
<key>^Resources/</key>
|
||||
<true/>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^version.plist$</key>
|
||||
<true/>
|
||||
</dict>
|
||||
<key>rules2</key>
|
||||
<dict>
|
||||
<key>.*\.dSYM($|/)</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>11</real>
|
||||
</dict>
|
||||
<key>^(.*/)?\.DS_Store$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>2000</real>
|
||||
</dict>
|
||||
<key>^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^.*</key>
|
||||
<true/>
|
||||
<key>^Info\.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^PkgInfo$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/</key>
|
||||
<dict>
|
||||
<key>optional</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1000</real>
|
||||
</dict>
|
||||
<key>^Resources/.*\.lproj/locversion.plist$</key>
|
||||
<dict>
|
||||
<key>omit</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>1100</real>
|
||||
</dict>
|
||||
<key>^Resources/Base\.lproj/</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>1010</real>
|
||||
</dict>
|
||||
<key>^[^/]+$</key>
|
||||
<dict>
|
||||
<key>nested</key>
|
||||
<true/>
|
||||
<key>weight</key>
|
||||
<real>10</real>
|
||||
</dict>
|
||||
<key>^embedded\.provisionprofile$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
<key>^version\.plist$</key>
|
||||
<dict>
|
||||
<key>weight</key>
|
||||
<real>20</real>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1 @@
|
|||
B
|
||||
|
|
@ -0,0 +1 @@
|
|||
Versions/Current/XPCServices
|
||||
BIN
platypus/Platypus.app/Contents/Info.plist
Normal file
BIN
platypus/Platypus.app/Contents/MacOS/Platypus
Executable file
15
platypus/Platypus.app/Contents/Resources/Credits.rtf
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{\rtf1\ansi\ansicpg1252\cocoartf1561\cocoasubrtf400
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\*\expandedcolortbl;;}
|
||||
\paperw11900\paperh16840\margl1440\margr1440\vieww10800\viewh8400\viewkind0
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
|
||||
|
||||
\f0\fs24 \cf0 Created by {\field{\*\fldinst{HYPERLINK "mailto:sveinbjorn@sveinbjorn.org"}}{\fldrslt Sveinbjorn Thordarson}}\
|
||||
\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc\partightenfactor0
|
||||
{\field{\*\fldinst{HYPERLINK "https://sveinbjorn.org/platypus"}}{\fldrslt \cf0 https://sveinbjorn.org/platypus}}\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\qc\partightenfactor0
|
||||
\cf0 \
|
||||
Platypus is free, open-source software and has been continually maintained and developed for a very long time. If you find this program useful, please
|
||||
{\field{\*\fldinst{HYPERLINK "https://sveinbjorn.org/donations"}}{\fldrslt make a donation}} to support further development.}
|
||||
|
After Width: | Height: | Size: 968 B |
664
platypus/Platypus.app/Contents/Resources/Documentation.html
Normal file
|
|
@ -0,0 +1,664 @@
|
|||
<!doctype html>
|
||||
<!-- Created with GFM2HTML: https://github.com/rvagg/gfm2html -->
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title></title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="created-with" content="https://github.com/rvagg/gfm2html">
|
||||
|
||||
<style type="text/css">
|
||||
/* most of normalize.css */
|
||||
article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block;}[hidden],template{display:none;}html{font-family:sans-serif;/*1*/-ms-text-size-adjust:100%;/*2*/-webkit-text-size-adjust:100%;/*2*/}body{margin:0;}a{background:transparent;}a:focus{outline:thindotted;}a:active,a:hover{outline:0;}h1{font-size:2em;margin:0.67em0;}abbr[title]{border-bottom:1pxdotted;}b,strong{font-weight:bold;}dfn{font-style:italic;}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0;}mark{background:#ff0;color:#000;}code,kbd,pre,samp{font-family:monospace,serif;font-size:1em;}pre{white-space:pre-wrap;}q{quotes:"\201C""\201D""\2018""\2019";}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}img{border:0;}svg:not(:root){overflow:hidden;}table{border-collapse:collapse;border-spacing:0;}
|
||||
|
||||
html {
|
||||
font: 14px 'Helvetica Neue', Helvetica, arial, freesans, clean, sans-serif;
|
||||
}
|
||||
|
||||
.container {
|
||||
line-height: 1.6;
|
||||
color: #333;
|
||||
background: #eee;
|
||||
border-radius: 3px;
|
||||
padding: 3px;
|
||||
width: 790px;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
.body-content {
|
||||
background-color: #fff;
|
||||
border: 1px solid #CACACA;
|
||||
padding: 30px;
|
||||
}
|
||||
|
||||
.body-content > *:first-child {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
color: #4183c4;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
p, blockquote, ul, ol, dl, table, pre {
|
||||
margin: 15px 0;
|
||||
}
|
||||
|
||||
.markdown-body h1
|
||||
, .markdown-body h2
|
||||
, .markdown-body h3
|
||||
, .markdown-body h4
|
||||
, .markdown-body h5
|
||||
, .markdown-body h6 {
|
||||
margin: 20px 0 10px;
|
||||
padding: 0;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5em;
|
||||
color: #000;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2em;
|
||||
border-bottom: 1px solid #eee;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
hr {
|
||||
background: transparent url("/img/hr.png") repeat-x 0 0;
|
||||
border: 0 none;
|
||||
color: #ccc;
|
||||
height: 4px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
tr:nth-child(2n) {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.markdown-body tr {
|
||||
border-top: 1px solid #ccc;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
td, th {
|
||||
border: 1px solid #ccc;
|
||||
padding: 6px 13px;
|
||||
}
|
||||
|
||||
th {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
border-left: 4px solid #ddd;
|
||||
padding: 0 15px;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
blockquote > :last-child, blockquote > :first-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
pre, code {
|
||||
font-size: 13px;
|
||||
font-family: 'UbuntuMono', monospace;
|
||||
white-space: nowrap;
|
||||
margin: 0 2px;
|
||||
padding: 0px 5px;
|
||||
border: 1px solid #eaeaea;
|
||||
background-color: #f8f8f8;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
pre > code {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
pre {
|
||||
overflow-x: auto;
|
||||
white-space: pre;
|
||||
padding: 10px;
|
||||
line-height: 150%;
|
||||
background-color: #f8f8f8;
|
||||
border-color: #ccc;
|
||||
}
|
||||
|
||||
pre code, pre tt {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.highlight .c
|
||||
, .highlight .cm
|
||||
, .highlight .cp
|
||||
, .highlight .c1 {
|
||||
color:#999988;
|
||||
font-style:italic;
|
||||
}
|
||||
|
||||
.highlight .err {
|
||||
color:#a61717;
|
||||
background-color:#e3d2d2
|
||||
}
|
||||
|
||||
.highlight .o
|
||||
, .highlight .gs
|
||||
, .highlight .kc
|
||||
, .highlight .kd
|
||||
, .highlight .kn
|
||||
, .highlight .kp
|
||||
, .highlight .kr {
|
||||
font-weight:bold
|
||||
}
|
||||
|
||||
.highlight .cs {
|
||||
color:#999999;
|
||||
font-weight:bold;
|
||||
font-style:italic
|
||||
}
|
||||
|
||||
.highlight .gd {
|
||||
color:#000000;
|
||||
background-color:#ffdddd
|
||||
}
|
||||
|
||||
.highlight .gd .x {
|
||||
color:#000000;
|
||||
background-color:#ffaaaa
|
||||
}
|
||||
|
||||
.highlight .ge {
|
||||
font-style:italic
|
||||
}
|
||||
|
||||
.highlight .gr
|
||||
, .highlight .gt {
|
||||
color:#aa0000
|
||||
}
|
||||
|
||||
.highlight .gh
|
||||
, .highlight .bp {
|
||||
color:#999999
|
||||
}
|
||||
|
||||
.highlight .gi {
|
||||
color:#000000;
|
||||
background-color:#ddffdd
|
||||
}
|
||||
|
||||
.highlight .gi .x {
|
||||
color:#000000;
|
||||
background-color:#aaffaa
|
||||
}
|
||||
|
||||
.highlight .go {
|
||||
color:#888888
|
||||
}
|
||||
|
||||
.highlight .gp
|
||||
, .highlight .nn {
|
||||
color:#555555
|
||||
}
|
||||
|
||||
|
||||
.highlight .gu {
|
||||
color:#800080;
|
||||
font-weight:bold
|
||||
}
|
||||
|
||||
|
||||
.highlight .kt {
|
||||
color:#445588;
|
||||
font-weight:bold
|
||||
}
|
||||
|
||||
.highlight .m
|
||||
, .highlight .mf
|
||||
, .highlight .mh
|
||||
, .highlight .mi
|
||||
, .highlight .mo
|
||||
, .highlight .il {
|
||||
color:#009999
|
||||
}
|
||||
|
||||
.highlight .s
|
||||
, .highlight .sb
|
||||
, .highlight .sc
|
||||
, .highlight .sd
|
||||
, .highlight .s2
|
||||
, .highlight .se
|
||||
, .highlight .sh
|
||||
, .highlight .si
|
||||
, .highlight .sx
|
||||
, .highlight .s1 {
|
||||
color:#d14
|
||||
}
|
||||
|
||||
.highlight .n {
|
||||
color:#333333
|
||||
}
|
||||
|
||||
.highlight .na
|
||||
, .highlight .no
|
||||
, .highlight .nv
|
||||
, .highlight .vc
|
||||
, .highlight .vg
|
||||
, .highlight .vi
|
||||
, .highlight .nb {
|
||||
color:#0086B3
|
||||
}
|
||||
|
||||
.highlight .nc {
|
||||
color:#445588;
|
||||
font-weight:bold
|
||||
}
|
||||
|
||||
.highlight .ni {
|
||||
color:#800080
|
||||
}
|
||||
|
||||
.highlight .ne
|
||||
, .highlight .nf {
|
||||
color:#990000;
|
||||
font-weight:bold
|
||||
}
|
||||
|
||||
.highlight .nt {
|
||||
color:#000080
|
||||
}
|
||||
|
||||
.highlight .ow {
|
||||
font-weight:bold
|
||||
}
|
||||
|
||||
.highlight .w {
|
||||
color:#bbbbbb
|
||||
}
|
||||
|
||||
.highlight .sr {
|
||||
color:#009926
|
||||
}
|
||||
|
||||
.highlight .ss {
|
||||
color:#990073
|
||||
}
|
||||
|
||||
.highlight .gc {
|
||||
color:#999;
|
||||
background-color:#EAF2F5
|
||||
}
|
||||
|
||||
@media print {
|
||||
.container {
|
||||
background: transparent;
|
||||
border-radius: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.body-content {
|
||||
border: none;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<div class="body-content"><p><img style="float: right; margin-left: 30px; margin-bottom: 20px;" width="128" height="128" src="images/platypus.png" align="right"></p>
|
||||
<h1 id="documentation-for-platypus-5-4-1">Documentation for Platypus 5.4.1</h1>
|
||||
<p>Last updated on September 3rd, 2022. The latest version of this document can be found <a href="https://sveinbjorn.org/platypus_documentation">here</a>.</p>
|
||||
<h2 id="introduction">Introduction</h2>
|
||||
<h3 id="what-is-platypus-">What is Platypus?</h3>
|
||||
<p>Platypus is a developer tool that creates native macOS application wrappers around scripts. Scripts are thus transformed into regular applications that can be launched from the window environment – e.g. the Finder or the Dock – without requiring use of the command line interface.</p>
|
||||
<p>Platypus was first released in 2003 and has since gone through many significant updates. It is written in Objective-C/Cocoa and is free, open-source software distributed under a BSD license.</p>
|
||||
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="float: right; margin-left: 40px;">
|
||||
<input type="hidden" name="cmd" value="_s-xclick">
|
||||
<input type="hidden" name="hosted_button_id" value="BDT58J7HYKAEE">
|
||||
<input type="image" src="https://www.paypalobjects.com/WEBSCR-640-20110306-1/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal" width="92" height="26">
|
||||
</form>
|
||||
|
||||
<p>While Platypus is free, it is the product of countless hours of work over the last twenty years or so. <strong>If Platypus makes your life easier, please <a href="https://sveinbjorn.org/donations">make a donation</a> to support continued development.</strong></p>
|
||||
<p>I am happy to respond to feature requests, bug reports and questions concerning Platypus which are not addressed in this document, but I cannot answer queries about the particulars of individual scripting languages. Productive use of Platypus assumes that you are competent in your language of choice and understand the UNIX shell environment.</p>
|
||||
<h3 id="how-does-platypus-work-">How does Platypus work?</h3>
|
||||
<p>Regular macOS applications are <a href="https://en.wikipedia.org/wiki/Bundle_%28macOS%29">bundles</a> – special folders with a particular directory structure and a <code>.app</code> suffix. An executable binary is stored in the bundle along with resources and configuration files. This binary is run when the application bundle is launched in the graphical user interface.</p>
|
||||
<p>Platypus creates application bundles with a special executable binary that runs a script and captures its output. The binary can be configured to present the script's text output in various ways, for example by showing a progress bar, a text view, a Status Item menu or a WebKit-based web view.</p>
|
||||
<h3 id="what-platypus-is-not">What Platypus is NOT</h3>
|
||||
<p>Platypus is <strong>not</strong> a set of bindings between the native macOS APIs and scripting languages. It is not a full GUI development environment and is not intended for creating substantial applications with complex and dynamic user interaction. If you want to create advanced macOS applications, you should learn to program using the Cocoa APIs. Platypus is not and never will be a substitute for learning to use the native application programming interfaces.</p>
|
||||
<p>That being said, you may be able to add some interactive GUI elements using <a href="https://github.com/cocoadialog/cocoadialog">CocoaDialog</a>,
|
||||
<a href="https://www.bluem.net/en/projects/pashua/">Pashua</a> or <a href="#prompting-for-input-via-osascript-applescript">AppleScript</a>.</p>
|
||||
<h3 id="system-requirements">System Requirements</h3>
|
||||
<p>Both Platypus and the applications it generates require <strong>macOS 10.11</strong> or later and are provided as <strong>64-bit ARM/Intel</strong> binaries. If you want to target macOS 10.8-10.10, use <a href="https://sveinbjorn.org/files/software/platypus/platypus5.3.zip">version 5.3</a>.
|
||||
If you want to target 10.6 and/or 32-bit Intel systems,
|
||||
<a href="https://sveinbjorn.org/files/software/platypus/platypus4.9.zip">version 4.9</a> continues to work just fine.</p>
|
||||
<h3 id="credits">Credits</h3>
|
||||
<p>Platypus was created by me, <a href="mailto:sveinbjorn@sveinbjorn.org">Sveinbjorn Thordarson</a>.</p>
|
||||
<p>Thanks go to Seth Willits, author of the AGIconFamily class used for icon handling in Platypus, Bryan D K Jones, author of <a href="https://github.com/bdkjones/VDKQueue">VDKQueue</a>, Gianni Ceccarelli for contributing code on authenticated script execution, Matt Gallagher for secure temp file code, James S. Derry and Paul Kim for improvements to the built-in editor, and Andy Matuschak for the <a href="https://sparkle-project.org">Sparkle</a> software update framework.</p>
|
||||
<p>Finally, I am much indebted to <a href="http://www.wsanchez.net">Wilfredo Sanchez</a>, author of <a href="http://www.wsanchez.net/software">DropScript</a>, the proof-of-concept project which inspired me to create Platypus in the first place.</p>
|
||||
<h2 id="the-basics">The Basics</h2>
|
||||
<h3 id="basic-interface">Basic Interface</h3>
|
||||
<p>The basic Platypus interface is relatively straightforward. As soon as you launch the Platypus application, you see a window that looks like this:</p>
|
||||
<p><img src="images/basic_interface.png" width="657" alt="Platypus window"></p>
|
||||
<p><strong>App Name</strong></p>
|
||||
<p>The name of your application.</p>
|
||||
<p><strong>Script Path</strong></p>
|
||||
<p>Path to the script you want to create an app from. Either use the <strong>Select</strong> button to select a script, or drag a script file on the Platypus window. You can also type in a path manually (the text field supports supports shell-style tab autocompletion).</p>
|
||||
<p><img src="images/script_path.png" width="492" alt="Platypus Script Path"></p>
|
||||
<p>Once you have selected a script, you can press the <strong>Edit</strong> button to open it in your default text editor. Platypus defaults to using a very basic built-in text editor. You can change this in the <strong>Preferences</strong> if you want to use a more capable external editor.</p>
|
||||
<p>The <strong>New</strong> button creates a script file in the Platypus Application Support folder and opens it in the default editor. The <strong>Reveal</strong> button reveals the script file in the Finder.</p>
|
||||
<h3 id="interpreter">Interpreter</h3>
|
||||
<p><img src="images/script_type.png" style="float: right; margin-left:20px; margin-bottom:20px;" width="135"></p>
|
||||
<p>Use <strong>Script Type</strong> to specify an interpreter for your script. Either select one of the predefined scripting languages from the the pop-up menu or type in the path to an interpreter binary.</p>
|
||||
<p>Most of the time, you do not need to specify this manually. Whenever you open a script file, Platypus automatically tries to determine its type based on the file suffix and shebang line (<code>#!</code>). If you have specified this meta-data in the script file itself, Platypus is usually smart enough to figure it out.</p>
|
||||
<p>Please note that the interpreter must exist on the system where the application is run. All the preset scripting language interpreters (except Node.js) are a standard part of all macOS installations.</p>
|
||||
<p><strong>Args</strong> let you add arguments to the script and/or its interpreter.</p>
|
||||
<p><img src="images/args.png" width="500"></p>
|
||||
<h3 id="interface">Interface</h3>
|
||||
<p><img src="images/interface_type.png" style="float: right; margin-left: 20px; margin-bottom:20px;" width="159"></p>
|
||||
<p><strong>Interface</strong> sets the user interface for the application. Platypus offers six different interface types:</p>
|
||||
<h4 id="none">None</h4>
|
||||
<p>Windowless application that provides no graphical feedback. All script output is redirected to <code>stderr</code>.</p>
|
||||
<h4 id="progress-bar">Progress Bar</h4>
|
||||
<p>A small window with an indeterminate progress bar and a "Cancel" button appears during the execution of the script. Script output is fed line by line into the text field above the progress bar. The "Show details" button reveals a small text view containing full script output.</p>
|
||||
<p><img src="images/interface_progressbar.png" width="438"></p>
|
||||
<h4 id="text-window">Text Window</h4>
|
||||
<p>Shows a window with a text view containing script output. Please note that this text view is <em>not</em> a full, interactive terminal session, and cannot be used to prompt for user input via <code>stdin</code>. It does not support any of the standard terminal commands and cannot be used to display ncurses-based interfaces.</p>
|
||||
<p>The styling of the text view can configured under <strong>Text Settings</strong>.</p>
|
||||
<p><img src="images/interface_textwindow.png" width="469"></p>
|
||||
<h4 id="web-view">Web View</h4>
|
||||
<p>Output from the script is rendered as HTML in a WebView window. This allows you to use HTML formatting and other web technologies to present script output to the user.</p>
|
||||
<p>The base directory for the browser instance is the application bundle's Resources directory, so you can include images and other support files by adding them to the <strong>Bundled Files</strong> list and referencing them relative to the directory.</p>
|
||||
<p><img src="images/interface_webview.png" width="508"></p>
|
||||
<h4 id="status-menu">Status Menu</h4>
|
||||
<p>Creates a Status Item in the menu bar when the app is launched. Every time the status item is clicked, the script is executed and its text output shown line for line in a menu. If a menu item is selected, the script is executed again with the title of the selected item passed as an argument to the script.</p>
|
||||
<p>The properties of the Status Item (icon, title, etc.) can be configured under <strong>Status Item Settings</strong> button.</p>
|
||||
<p><img src="images/interface_statusmenu.png" width="360"></p>
|
||||
<h4 id="droplet">Droplet</h4>
|
||||
<p>Creates a square window instructing the user to drop files on it for processing. While processing, script output is displayed line for line along with an indeterminate circular progress indicator.</p>
|
||||
<p><img src="images/interface_droplet.png" width="294"></p>
|
||||
<h3 id="setting-the-icon">Setting the Icon</h3>
|
||||
<p><img src="images/setting_icon.png" width="197" style="float: right; margin-left: 20px; margin-bottom:20px;"></p>
|
||||
<p>Platypus lets you set an icon for your application. You can pick from the icon presets, paste your own image or select an image or <code>icns</code> file.</p>
|
||||
<p>Please note that having Platypus create the icon from an ordinary image file will typically not result in an icon that looks good at smaller sizes. For best results, use professional icon-editing software and import a carefully crafted <code>.icns</code> file using the <strong>Select .icns file</strong> option.</p>
|
||||
<h3 id="identifier-author-and-version">Identifier, Author and Version</h3>
|
||||
<p>The <strong>Identifier</strong> text field specifies the unique identifier for the application. If you have already set an application name, this will default to something in the form of "org.yourusername.YourAppName".</p>
|
||||
<p>Every macOS application has a unique string called a bundle identifier, which takes the form of a reverse DNS name (e.g. "com.apple.iTunes" or "org.sveinbjorn.Platypus"). Platypus automatically formats the bundle identifier using the application name and default user name, but you can set it to whatever you want. The default bundle identifier prefix can be configured in <strong>Preferences</strong>.</p>
|
||||
<p><img src="images/author_identifier.png" width="427"></p>
|
||||
<p>You can also set <strong>Author</strong> and <strong>Version</strong> metadata. This information will appear in the Finder "Get Info" window for your application and in the About window accessible through the application menu.</p>
|
||||
<h3 id="special-options">Special Options</h3>
|
||||
<p><img src="images/special_options.png" style="float: right; margin-left: 20px; margin-bottom:20px;" width="260"></p>
|
||||
<p><strong>Run with root privileges:</strong> If selected, the application prompts for an Administrator password and executes the script with escalated (root) privileges using Apple's Security Framework. This is not strictly equivalent to running the script <em>as the root user</em>. For details, see the <a href="http://developer.apple.com/mac/library/documentation/Security/Reference/authorization_ref/Reference/reference.html#//apple_ref/c/func/AuthorizationExecuteWithPrivileges">documentation for the macOS Security Framework</a>. </p>
|
||||
<p>Please note that for some reason or other, the macOS bash shell at /bin/bash <a href="https://github.com/sveinbjornt/Platypus/issues/97">cannot run with root privileges</a>.</p>
|
||||
<p><em>Platypus scripts must not use the 'sudo' command</em>. This causes the script to prompt for input via <code>stdin</code>, and since no input is forthcoming, the application will hang indefinitely.</p>
|
||||
<p>Please note that if this option is selected, <code>stderr</code> output cannot be captured due to limitations in the Security APIs. This can be circumvented by using a shell script to execute another script while piping <code>stderr</code> into <code>stdout</code> (e.g. <code>python script.py 2>&1</code>).</p>
|
||||
<p><strong>Runs in background:</strong> If selected, the application is registered with Launch Services as a User Interface Element (LSUIElement) and will not show a menu bar or appear in the Dock when launched.</p>
|
||||
<p><strong>Remain running after completion</strong>: This option tells the application to remain open after the script has executed.</p>
|
||||
<h3 id="bundled-files">Bundled Files</h3>
|
||||
<p><strong>Bundled Files</strong> contains files that should be copied into the Resources folder of the application bundle. These files can then be used by your script, which is run from the same directory.</p>
|
||||
<p><img src="images/bundled_files.png" width="658"></p>
|
||||
<p>See also <a href="#how-do-i-get-the-path-to-my-application-and-or-bundled-files-from-within-the-script-">How do I get the path to my application / bundled files within the script?</a> in the FAQ.</p>
|
||||
<h2 id="advanced-options">Advanced Options</h2>
|
||||
<h3 id="accepting-files-and-dragged-items">Accepting files and dragged items</h3>
|
||||
<p>Checking <strong>Accept dropped items</strong> makes the application bundle accept dragged and dropped files, or dragged text snippets. You can specify which file types and draggable data the application should accept under <strong>Drop Settings</strong>.</p>
|
||||
<p><img src="images/drop_settings.png" width="536"></p>
|
||||
<p><strong>Accept Dropped Files</strong> means the paths of dropped or opened files are passed to the script as arguments. You can specify which file types to accept either using <a href="https://en.wikipedia.org/wiki/Uniform_Type_Identifier">UTIs</a> (recommended) or filename suffixes.</p>
|
||||
<p>To accept dragged folders, add the UTI <code>public.folder</code>. HINT: You can drag files from the Finder into the suffix or UTI list to add their respective suffix/UTI.</p>
|
||||
<p>Optionally, select a document icon (.icns file) for the files "owned" by your app.</p>
|
||||
<p>Selecting <strong>Accept Dropped Text</strong> makes the app accept dragged snippets of text. The text string is passed to the script via <code>stdin</code>.</p>
|
||||
<p><strong>Provide macOS Service</strong> makes the app register as a text-processing <a href="http://www.computerworld.com/article/2476298/mac-os-x/os-x-a-quick-guide-to-services-on-your-mac.html">Dynamic Service</a>, accessible from the <strong>Services</strong> submenu of application menus. You also need to enable this if you want your app to accept text snippets or URLs dropped on its Dock/Finder icon.</p>
|
||||
<p><strong>Register as URI scheme handler</strong> makes the app register as a handler for <a href="https://en.wikipedia.org/wiki/Uniform_Resource_Identifier">URI schemes</a>. These can be either standard URI schemes such as http or custom URI schemes of your choice (e.g. <code>myscheme://</code>). If your app is the default handler for a URI scheme, it will launch every time a URL matching the scheme is opened. The URL is then passed to the script as an argument.</p>
|
||||
<h3 id="build-time-options">Build-Time Options</h3>
|
||||
<p>Platypus allows you to <strong>create development versions</strong> of your script application. Ordinarily, the script and any bundled files are copied into the resulting application. If <strong>Development Version</strong> is selected in the <strong>Create app</strong> dialog, a symlink to the original script and bundled files is created instead. This allows you to edit your script file while simultaneously testing it as a Platypus app.</p>
|
||||
<p><img src="images/create_options.png" width="349"></p>
|
||||
<p><strong>Optimize Application</strong>: Strip and compile the nib file in the application in order to reduce its size. This makes the nib uneditable. Only works if Xcode is installed.</p>
|
||||
<h3 id="built-in-editor">Built-In Editor</h3>
|
||||
<p>Platypus includes a very basic built-in text editor for editing scripts. Press the <strong>Edit</strong> button to bring it up.</p>
|
||||
<p><img src="images/built-in_editor.png" width="600"></p>
|
||||
<p>A more capable external editor can be set in <strong>Preferences.</strong></p>
|
||||
<h3 id="syntax-checking">Syntax Checking</h3>
|
||||
<p>The <strong>Check Script Syntax</strong> menu verifies the syntax of the script by running it through the interpreter's syntax checker.</p>
|
||||
<p>This feature only works for interpreters that support syntax checking (bash, Perl, Python, Ruby, PHP and Swift).</p>
|
||||
<p><img src="images/syntax_checker.png" width="473"></p>
|
||||
<h3 id="show-shell-command">Show Shell Command</h3>
|
||||
<p>Platypus includes a <strong>command line tool</strong> counterpart to the Platypus.app application, <code>platypus</code>, which can be installed into <code>/usr/local/bin/</code> via <strong>Preferences</strong>. The man page for this tool is available from the Help menu, and via the command line. There is also an <a href="https://sveinbjorn.org/files/manpages/platypus.man.html">online version available</a></a>.</p>
|
||||
<p>The command line tool does not in any way depend on the Platypus application once it has been installed.</p>
|
||||
<p><img src="images/shell_command.png" width="471"></p>
|
||||
<p><strong>Show Shell Command</strong> in the <strong>Action</strong> menu displays the command required to execute the platypus command line tool using all the options selected in the graphical interface. This can be helpful if you have the command line tool installed and want to automate the creation of script apps within a larger build process.</p>
|
||||
<h2 id="preferences">Preferences</h2>
|
||||
<p>The Platypus Preferences should be pretty self-explanatory. You can select an editor of choice, set the default author and bundle identifier settings, set the behaviour of Platypus on app creation, and install/uninstall the <code>platypus</code> command line tool.</p>
|
||||
<p><img src="images/preferences.png" width="313"></p>
|
||||
<h2 id="profiles">Profiles</h2>
|
||||
<h3 id="saving-and-loading">Saving and Loading</h3>
|
||||
<p>Profiles let you save Platypus application configuration settings. These can then be loaded by Platypus or the <code>platypus</code> command line tool. The Profiles menu is used to save and access profiles. Profiles are stored as files, typically in the <strong>Profiles</strong> folder of the Platypus Application Support folder (<code>~/Library/Application Support/Platypus/Profiles</code>).</p>
|
||||
<p>You can load a profile by selecting it from the menu, which lists all profiles in the Profiles folder. To reveal a profile in the Finder, hold down the Command key and select the profile. Profiles have a <code>.platypus</code> filename suffix.</p>
|
||||
<p><img src="images/profiles.png" width="212"></p>
|
||||
<h3 id="using-profiles-with-the-command-line-tool">Using Profiles with the Command Line Tool</h3>
|
||||
<p>Profiles can be used with the <code>platypus</code> command line tool. This allows you to set all the settings for your application within the graphical user interface, save them as a profile and then load the settings with the command line app. This makes automation more convenient. The following command would load a profile with the command line tool and create an app from it named MyApp.app:</p>
|
||||
<pre><code>/usr/local/bin/platypus -P myProfile.platypus MyApp.app
|
||||
</code></pre><p>See the command line tool man page for further details. An HTML version of the man page is <a href="https://sveinbjorn.org/files/manpages/platypus.man.html">available here</a>.</p>
|
||||
<h3 id="platypus-profile-format">Platypus Profile Format</h3>
|
||||
<p>Platypus Profiles are standard macOS <a href="https://en.wikipedia.org/wiki/Property_list">property lists</a> in XML format. They can be edited using either a plain text editor or Xcode.</p>
|
||||
<p>As of version 5.2, Platypus understands and resolves relative paths in Profiles. However, neither the Platypus app nor the command line tool <em>generate</em> relative paths, so if you want to use them in a Profile, you will have to edit it manually.</p>
|
||||
<h2 id="controlling-the-gui-with-script-output">Controlling the GUI with script output</h2>
|
||||
<h3 id="showing-an-alert">Showing an Alert</h3>
|
||||
<p>Platypus application wrappers can be made to show an alert if your script prints out a line using the following syntax:</p>
|
||||
<pre><code>ALERT:Title|Text\n
|
||||
</code></pre><p>Thus, to show an alert with the title "Hello" and the informative text "World", you would do as follows:</p>
|
||||
<pre><code>ALERT:Hello|World\n
|
||||
</code></pre><h3 id="showing-a-notification">Showing a Notification</h3>
|
||||
<p>Platypus application wrappers can be made to show a notification in the User Notification Center if your script prints out a line using the following syntax:</p>
|
||||
<pre><code>NOTIFICATION:My title|My text\n
|
||||
</code></pre><h3 id="controlling-the-progress-bar">Controlling the Progress Bar</h3>
|
||||
<p>Script apps with the interface type <strong>Progress Bar</strong> can communicate with the progress bar by notifying it of script progress. All lines of script output in the format "PROGRESS:\d+\n" (e.g. PROGRESS:75) are parsed and used to set the completion percentage of the progress bar. Similarly, DETAILS:SHOW and DETAILS:HIDE can be used to change the visibility of the Details text field during the execution of the script.</p>
|
||||
<h3 id="terminating-application">Terminating Application</h3>
|
||||
<p>If your script prints the string "QUITAPP\n" to STDOUT, the application will quit.</p>
|
||||
<h3 id="clearing-output">Clearing Output</h3>
|
||||
<p>If your script prints the string "REFRESH\n" to STDOUT, the text output buffer will be cleared. This can, for example, be used to clear a Web View in preparation for new HTML output.</p>
|
||||
<h3 id="loading-a-website-into-a-web-view">Loading a Website into a Web View</h3>
|
||||
<p>If interface type was set to <strong>Web View</strong> and your script prints "LOCATION:<a href="http://some.url.com\n"">http://some.url.com\n"</a>, the Web View will load the URL in question.</p>
|
||||
<h3 id="user-interaction-with-cocoadialog">User interaction with CocoaDialog</h3>
|
||||
<p>Platypus apps may be able to use <a href="https://github.com/cocoadialog/cocoadialog">CocoaDialog</a> to construct scripts that prompt for user input with dialogs. As of writing, the CocoaDialog project seems to be dead and so the following instructions may be obsolete:</p>
|
||||
<ul>
|
||||
<li>Download CocoaDialog</li>
|
||||
<li>Add CocoaDialog.app to the list of Bundled Files.</li>
|
||||
</ul>
|
||||
<p>The following script shows how to query for input using the bundled copy of CocoaDialog:</p>
|
||||
<pre><code>#!/bin/bash
|
||||
|
||||
CD="CocoaDialog.app/Contents/MacOS/CocoaDialog"
|
||||
|
||||
rv=`$CD yesno-msgbox --string-output`
|
||||
$CD ok-msgbox --no-cancel --text "You pressed $rv"
|
||||
</code></pre><p>This application will present the user with an alert and several buttons. When the user presses one of the buttons, a feedback dialog is generated notifying the user which button he pressed. While this particular script accomplishes nothing, it serves as a basic example of how to add interactive elements to the script.</p>
|
||||
<h3 id="creating-a-status-menu-app">Creating a Status Menu app</h3>
|
||||
<p><img src="images/interface_statusmenu2.png" width="315" style="float: right; margin: 20px;"></p>
|
||||
<p>Platypus-generated apps with <strong>Interface</strong> set to <strong>Status Menu</strong> show a Status Item in the menu bar when launched. When the item is pressed, a menu is opened, the script is executed and each line of output is shown as a menu item in the menu.</p>
|
||||
<p>When the user selects a menu item, the script is executed again, but this time it receives the menu title as an argument. Based on whether it receives an argument, the script can thus determine whether it is being invoked to list the menu items or in order to perform some action for a selected menu item.</p>
|
||||
<p>If this seems unclear, check out the following script, which is part of the MacbethMenu Example:</p>
|
||||
<pre><code>#!/usr/bin/perl
|
||||
|
||||
# If 0 arguments, we show menu
|
||||
if (!scalar(@ARGV)) {
|
||||
print "Life's but a walking shadow, a poor player\n";
|
||||
print "That struts and frets his hour upon the stage\n";
|
||||
print "And then is heard no more.\n";
|
||||
} else {
|
||||
# We get the menu title as an argument
|
||||
system("/usr/bin/say \"$ARGV[0]\"");
|
||||
}
|
||||
</code></pre><p>This script creates a Status Menu app which shows a few lines from Shakespeare's Macbeth as menu items. When selected, the title of the menu item in question is fed into the macOS speech synthesizer via <code>/usr/bin/say</code>.</p>
|
||||
<p><strong>Set icon for menu item</strong></p>
|
||||
<pre><code>MENUITEMICON|my_bundled_file.png|Bundled file example\n
|
||||
MENUITEMICON|/path/to/icon.png|Absolute path example\n
|
||||
MENUITEMICON|https://sveinbjorn.org/images/andlat.png|Remote URL example\n
|
||||
</code></pre><p><strong>Creating a menu separator</strong></p>
|
||||
<pre><code>----\n
|
||||
</code></pre><p><strong>Creating a submenu named "Title" with three menu items:</strong></p>
|
||||
<pre><code>SUBMENU|Title|Item1|Item2|Item3\n
|
||||
</code></pre><p><strong>Showing a disabled menu item:</strong></p>
|
||||
<pre><code>DISABLED|Name of item\n
|
||||
</code></pre><p><strong>Changing status item title and icon dynamically</strong></p>
|
||||
<p>Title:</p>
|
||||
<pre><code>STATUSTITLE|Title\n
|
||||
</code></pre><p>Icon:</p>
|
||||
<pre><code>STATUSICON|bundled image filename or absolute path or URL\n
|
||||
</code></pre><h3 id="prompting-for-input-via-osascript-applescript">Prompting for input via osascript/AppleScript</h3>
|
||||
<p>Scripts can also prompt for input by running AppleScript code via the <code>/usr/bin/osascript</code> program. See an example in Perl below:</p>
|
||||
<pre><code>#!/usr/bin/perl
|
||||
|
||||
use strict;
|
||||
|
||||
sub osascript($) { system 'osascript', map { ('-e', $_) } split(/\n/, $_[0]); }
|
||||
|
||||
sub dialog {
|
||||
my ($text, $default) = @_;
|
||||
osascript(qq{
|
||||
tell app "System Events"
|
||||
text returned of (display dialog "$text" default answer "$default" buttons {"OK"} default button 1 with title "Riddle")
|
||||
end tell
|
||||
});
|
||||
}
|
||||
|
||||
my $result = dialog("Answer to life, the universe and everything?", "42");
|
||||
</code></pre><p><a href="https://stackoverflow.com/questions/33601580/using-platypus-to-create-mac-os-x-applications-from-a-perl-script/33603239#33603239">Source.</a></p>
|
||||
<h2 id="examples">Examples</h2>
|
||||
<h3 id="built-in-examples">Built-In Examples</h3>
|
||||
<p>Platypus includes many built-in examples. These can be opened via the <strong>Examples</strong> submenu of the <strong>Profiles</strong> menu. Brief explanation of each of the examples:</p>
|
||||
<ul>
|
||||
<li><p><strong>AdminPrivilegesDemo</strong>: Demonstrates running a script with root privileges by creating a file in /etc/ and testing for its existence.</p>
|
||||
</li>
|
||||
<li><p><strong>AlertMe</strong>: Demonstrates ALERT: and PROGRESS: syntax in action by showing alerts while manipulating the progress bar.</p>
|
||||
</li>
|
||||
<li><p><strong>DataURLifier</strong>: Drop a file on a window to get its <a href="https://en.wikipedia.org/wiki/Data_URI_scheme">Data URI</a>.</p>
|
||||
</li>
|
||||
<li><p><strong>FastDMGMounter</strong>: Creates a replacement for DiskImageMounter. Uses the <code>hdiutil</code> command line tool to quickly mount <code>.dmg</code> disk images, skipping verification and auto-accepting any EULAs.</p>
|
||||
</li>
|
||||
<li><p><strong>IcnsToIconset</strong>: Converts Apple <code>.icns</code> files to <code>.iconset</code> folders with PNGs for the various representations.</p>
|
||||
</li>
|
||||
<li><p><strong>ImageResizer</strong>: Shows how to use the built-in macOS Scriptable Image Processing System (see <code>man sips</code>) to resize dropped images to 512x512 dimensions.</p>
|
||||
</li>
|
||||
<li><p><strong>MacbethMenu</strong>: Simple interactive status menu app that shows lines by Shakespeare and feeds them to the speech synthesizer when selected.</p>
|
||||
</li>
|
||||
<li><p><strong>PostToNotificationCenter</strong>: Creates notifications in the macOS Notification Center via script output using the custom NOTIFICATION: syntax.</p>
|
||||
</li>
|
||||
<li><p><strong>ProcessMenu</strong>: Creates a status menu which displays the output of <code>ps cax</code> when clicked.</p>
|
||||
</li>
|
||||
<li><p><strong>ProgressBar</strong>: Demonstrates how a progress bar can be controlled with script output.</p>
|
||||
</li>
|
||||
<li><p><strong>SayURLSchemeHandler</strong>: A handler for the custom URI scheme <code>say://</code>. Try creating the app and opening a URL such as <code>say://hello-world</code> in your browser.</p>
|
||||
</li>
|
||||
<li><p><strong>SpeakDroplet</strong>: Uses the macOS speech synthesiser to read all opened text files.</p>
|
||||
</li>
|
||||
<li><p><strong>SpotlightInfo</strong>: Drag a file on a window to see its Spotlight metadata.</p>
|
||||
</li>
|
||||
<li><p><strong>StatusMenuDemo</strong>: Shows how to set menu item icons and create submenus in a Status Menu interface.</p>
|
||||
</li>
|
||||
<li><p><strong>SysLoadMenu</strong>: Status menu app which displays the output of <code>w</code>.</p>
|
||||
</li>
|
||||
<li><p><strong>TarGzipper</strong>: Creates a gzipped tar archive of any dropped files.</p>
|
||||
</li>
|
||||
<li><p><strong>WordCountService</strong>: Dynamic Service app which does a word count of received text and shows results in an alert.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<p>If you come up with a particularly nifty use of Platypus and think it might make a suitable addition to this list, by all means <a href="mailto:sveinbjorn@sveinbjorn.org">let me know</a>.</p>
|
||||
<h2 id="updates">Updates</h2>
|
||||
<h3 id="updating-platypus">Updating Platypus</h3>
|
||||
<p>Platypus uses <a href="https://sparkle-project.org">Sparkle</a> for updates. You can update to the latest version by selecting <strong>Check for updates...</strong> in the application menu. Future releases may or may not break your saved profiles. Consult the version change log for details.</p>
|
||||
<p>The AppCast XML file is available <a href="https://sveinbjorn.org/files/appcasts/PlatypusAppcast.xml">here</a>.</p>
|
||||
<p>To get the absolutely latest development version of Platypus, you can check out the source repository on <a href="https://github.com/sveinbjornt/Platypus">GitHub</a>.</p>
|
||||
<h2 id="frequently-asked-questions">Frequently Asked Questions</h2>
|
||||
<h3 id="can-i-use-platypus-to-create-proprietary-software-">Can I use Platypus to create proprietary software?</h3>
|
||||
<p>Yes. Platypus is distributed under the terms and conditions of the three-clause <a href="https://sveinbjorn.org/files/software/platypus/documentation/License.html">BSD License</a>.</p>
|
||||
<h3 id="help-text-output-isn-t-being-shown-until-the-script-is-done-">Help, text output isn't being shown until the script is done!</h3>
|
||||
<p>You need to autoflush the output buffer. In Python, you can pass the <code>-u</code> parameter to the interpreter to get unbuffered output, or alternately flush the output buffer in code:</p>
|
||||
<pre><code>import sys
|
||||
sys.stdout.flush()
|
||||
</code></pre><p>In Perl, this is done with the following command at the start of your script:</p>
|
||||
<pre><code>$| = 1;
|
||||
</code></pre><p>For help with other scripting languages, <a href="https://stackoverflow.com">Stack Overflow</a> is your friend.</p>
|
||||
<h3 id="does-platypus-support-localizations-">Does Platypus support localizations?</h3>
|
||||
<p>No. But if you uncheck "Optimize nib file" in the save dialog when creating an app, the resulting nib in the application bundle can be edited using Xcode. You can thus localize your app manually if you want to. Support for localization is not on the feature roadmap.</p>
|
||||
<h3 id="how-does-my-script-access-the-user-s-shell-environment-e-g-path-">How does my script access the user's shell environment (e.g. PATH)?</h3>
|
||||
<p>Assuming that you're using <code>bash</code>, you can set the interpreter to <code>/bin/bash</code> and add the <code>-l</code> flag as an argument under "Args". This makes <code>bash</code> act as if it had been invoked as a login shell. See <code>man bash</code> for details.</p>
|
||||
<p>Another alternative is to manually load the user's shell configuration file in your script:</p>
|
||||
<pre><code>source ~/.bashrc
|
||||
</code></pre><p>For other shells, consult their respective documentation.</p>
|
||||
<h3 id="how-can-i-pass-specific-arguments-to-my-script-">How can I pass specific arguments to my script?</h3>
|
||||
<p>You can edit arguments to both the script interpreter and the script itself by pressing the <strong>Args</strong> button next to the <strong>Interpreter</strong> controls.</p>
|
||||
<h3 id="how-do-i-uninstall-platypus-">How do I uninstall Platypus?</h3>
|
||||
<p>Platypus only uses about 9 MB of disk space, but if you want to remove it entirely, along with support files, profiles, etc., you can select <strong>Uninstall Platypus</strong> from the Platypus application menu. This will uninstall the command line tool (if previously installed), and move Platypus.app and all its supporting files – including saved Profiles – to the Trash.</p>
|
||||
<h3 id="how-do-i-get-the-source-code-to-platypus-and-platypus-generated-app-binaries-">How do I get the source code to Platypus and Platypus-generated app binaries?</h3>
|
||||
<p>The Platypus source code repository can be found <a href="https://github.com/sveinbjornt/Platypus">on GitHub</a>.</p>
|
||||
<p>The source code to the binary used in Platypus-generated apps is <a href="https://github.com/sveinbjornt/Platypus/blob/master/ScriptExec/SEController">SEController.m</a>.</p>
|
||||
<p>Please let me know if you make any improvements or fix any bugs, so I can incorporate them into the official release.</p>
|
||||
<h3 id="how-do-i-get-the-path-to-my-application-and-or-bundled-files-from-within-the-script-">How do I get the path to my application and/or bundled files from within the script?</h3>
|
||||
<p>The script executed by Platypus-generated applications runs from the Resources directory of the application bundle (e.g. <code>MyApp.app/Contents/Resources</code>). Any bundled files are thus accessible from the script's current working directory.</p>
|
||||
<p>For example, if you have added <code>file.txt</code> as a bundled file and want to copy it over to the user's home directory using a shell script, you would run the following command:</p>
|
||||
<pre><code>cp file.txt ~/
|
||||
</code></pre><p>To get the path to the application bundle itself, or its containing directory, you can use <code>../..</code> (application bundle) or <code>../../..</code> (application bundle's containing directory).</p>
|
||||
<h3 id="how-do-platypus-generated-applications-work-">How do Platypus-generated applications work?</h3>
|
||||
<p>Platypus-generated applications are macOS application (.app) <a href="https://en.wikipedia.org/wiki/Bundle_(OS_X">bundles</a>#OS_X_application_bundles), and have the following directory structure:</p>
|
||||
<pre><code>MyApp.app/ Application bundle folder
|
||||
MyApp.app/Contents
|
||||
MyApp.app/Contents/Info.plist Info property list for app
|
||||
MyApp.app/Contents/MacOS
|
||||
MyApp.app/Contents/MacOS/MyApp Application binary
|
||||
MyApp.app/Contents/Resources Resources folder
|
||||
MyApp.app/Contents/Resources/AppIcon.icns Application icon
|
||||
MyApp.app/Contents/Resources/AppSettings.plist Application settings
|
||||
MyApp.app/Contents/Resources/MainMenu.nib Nib file, stores interface layout
|
||||
MyApp.app/Contents/Resources/script Script executed by application binary
|
||||
</code></pre><p>The application binary reads settings from AppSettings.plist and then runs the script, making use of the user interface assets in the nib file to display the script's output.</p>
|
||||
<p>The source code to the binary is <a href="https://github.com/sveinbjornt/Platypus/blob/master/ScriptExec/SEController.m">here</a>. Skimming it should give you a fairly thorough understanding of what the executable does. It's relatively straightforward.</p>
|
||||
<h3 id="can-i-change-the-dimensions-of-my-app-s-window-">Can I change the dimensions of my app's window?</h3>
|
||||
<p>Yes, but only by altering the application manually after it has been created. When you press Create, you need to uncheck the "Optimize Application (strip nib file)" option in the dialog. You can then edit the user interface assets in the nib file using Xcode. The nib file is stored at the following path within your application bundle.</p>
|
||||
<pre><code>Contents/Resources/MainMenu.nib
|
||||
</code></pre><p>If you want to keep your own modified nib for repeated use, you can simply save a copy, edit it and add it to <strong>Bundled Files</strong> when you create an app. It will then overwrite the default MainMenu.nib file:</p>
|
||||
<p>The Platypus command line tool also allows you to specify an alternate nib file using the <code>-H</code> flag. See the <a href="https://sveinbjorn.org/files/manpages/platypus.man.html">man page</a> for details.</p>
|
||||
<h3 id="can-i-prompt-for-user-input-via-stdin-in-my-platypus-wrapped-scripts-">Can I prompt for user input via <code>stdin</code> in my Platypus-wrapped scripts?</h3>
|
||||
<p>No. Platypus applications do not present the user with an interactive shell, and therefore no bidirectional communication can take place using standard input. Platypus apps can only capture and display the text output of your script. They cannot prompt for input via <code>stdin</code>, and will not be able to do so in the foreseeable future. This means that any commands that require input via <code>stdin</code>, such as <code>sudo</code>, or Python's <code>input()</code> will not work from within a Platypus application.</p>
|
||||
<h3 id="is-there-a-way-to-sign-platypus-generated-apps-so-they-don-t-require-gatekeeper-approval-">Is there a way to sign Platypus-generated apps so they don't require GateKeeper approval?</h3>
|
||||
<p>Platypus-generated apps are not signed by default. Due to GateKeeper, this means they will not run on macOS without prompting the user for approval. </p>
|
||||
<p>Platypus apps, like any other apps, can signed using the following command:</p>
|
||||
<pre><code>/usr/bin/codesign -s "your-signing-identity" path/to/MyApp.app
|
||||
</code></pre><p>See Apple's <a href="https://developer.apple.com/library/archive/documentation/Security/Conceptual/CodeSigningGuide/Introduction/Introduction.html">Code Signing Guide</a> for details.</p>
|
||||
<h3 id="can-i-pass-arguments-to-a-platypus-generated-app-via-the-command-line-">Can I pass arguments to a Platypus-generated app via the command line?</h3>
|
||||
<p>Yes. You can execute a Platypus-generated binary via the command line. Any arguments you provide will be passed on to your script. Take the following example:</p>
|
||||
<pre><code># ./MyApp.app/Contents/MacOS/MyApp -arg1 -arg2
|
||||
</code></pre><p>In this case, both <code>-arg1</code> and <code>-arg2</code> will be passed on as arguments to your script. This feature makes it possible to create protocol handlers for Firefox and other programs that invoke macOS application binaries from the shell.</p>
|
||||
<h3 id="where-is-the-command-line-tool-installed-">Where is the command line tool installed?</h3>
|
||||
<p>The Platypus command line tool install script creates the following files on your system:</p>
|
||||
<pre><code>/usr/local/bin/platypus Program binary
|
||||
/usr/local/share/platypus/ScriptExec Executable binary
|
||||
/usr/local/share/platypus/MainMenu.nib Nib file for app
|
||||
/usr/local/share/platypus/PlatypusDefault.icns Default icon
|
||||
/usr/local/share/man/man1/platypus.1 Man page
|
||||
</code></pre><p>These files are all removed by <strong>Uninstall Platypus</strong> in the Platypus application menu.</p>
|
||||
<h3 id="can-i-customize-the-about-window-of-a-platypus-generated-app-">Can I customize the About window of a Platypus-generated app?</h3>
|
||||
<p>If you add a file named <strong>Credits.rtf</strong> or <strong>Credits.html</strong> to the bundled files list, it will appear in the About window of your application.</p>
|
||||
<hr>
|
||||
<p>Copyright © 2003-2022 <a href="mailto:sveinbjorn@sveinbjorn.org">Sveinbjorn Thordarson</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
BIN
platypus/Platypus.app/Contents/Resources/Editor.nib/keyedobjects-101300.nib
generated
Normal file
BIN
platypus/Platypus.app/Contents/Resources/Editor.nib/keyedobjects.nib
generated
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<false/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<true/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>AdminPrivilegesDemo.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
echo "This demo shows execution using admin privileges by creating a file in /etc/"
|
||||
echo "Running command /usr/bin/touch /etc/admin_priv_demo_testfile"
|
||||
/usr/bin/touch /etc/admin_priv_demo_testfile
|
||||
echo "Return code: $?"
|
||||
echo "Running command /bin/test -e touch /etc/admin_priv_demo_testfile"
|
||||
/bin/test -e /etc/admin_priv_demo_testfile
|
||||
echo "Return code: $?"
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.AdminPrivilegesDemo</string>
|
||||
<key>InterfaceType</key>
|
||||
<string>Text Window</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>Name</key>
|
||||
<string>AdminPrivilegesDemo</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemIconIsTemplate</key>
|
||||
<false/>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array/>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<false/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>AlertMe.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
echo "PROGRESS:20%"
|
||||
sleep 1
|
||||
echo "About to show alert"
|
||||
echo "PROGRESS:50%"
|
||||
sleep 2
|
||||
echo "Almost there..."
|
||||
echo "ALERT:This is an alert|Here you can put your test"
|
||||
sleep 1
|
||||
echo "PROGRESS:75%"
|
||||
sleep 1
|
||||
echo "PROGRESS:100%"
|
||||
sleep 2
|
||||
echo "ALERT:Example Over|We're all done here."
|
||||
echo "Task completed"
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.AlertMe</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Progress Bar</string>
|
||||
<key>Name</key>
|
||||
<string>AlertMe</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemIconIsTemplate</key>
|
||||
<false/>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array/>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>DataURLifier.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
|
||||
if [ ! -e "$1" ]
|
||||
then
|
||||
echo "Drop a file to see its Data URL"
|
||||
exit
|
||||
fi
|
||||
# Data urls have the form data:MIME_TYPE;base64,DATA
|
||||
FILE_PATH="$1"
|
||||
BASE64_DATA=$( base64 "$FILE_PATH" )
|
||||
MIME_TYPE=$( file -b --mime-type "$FILE_PATH" )
|
||||
echo "data:$MIME_TYPE;base64,$BASE64_DATA"
|
||||
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.DataURLifier</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Text Window</string>
|
||||
<key>Name</key>
|
||||
<string>DataURLifier</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemIconIsTemplate</key>
|
||||
<false/>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array>
|
||||
<string>*</string>
|
||||
</array>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array/>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>DocIconPath</key>
|
||||
<string>/System/Library/CoreServices/DiskImageMounter.app/Contents/Resources/diskcopy-doc.icns</string>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>FastDMGMounter.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh -f
|
||||
# This is the script for FastDMGMounter
|
||||
# Create this as a droppable Platypus app
|
||||
# and use it for fast .dmg mounting and
|
||||
# autoacceptance of the EULA
|
||||
|
||||
echo "Y" | /usr/bin/hdid "$1"
|
||||
|
||||
# See http://www.tuaw.com/2011/12/30/daily-mac-app-flashmount-quickly-mounts-disk-images/
|
||||
|
||||
</string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.FastDMGMounter</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/bash</string>
|
||||
<key>Name</key>
|
||||
<string>FastDMGMounter</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>InterfaceType</key>
|
||||
<string>None</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array>
|
||||
<string>-f</string>
|
||||
</array>
|
||||
<key>RemainRunning</key>
|
||||
<false/>
|
||||
<key>RunInBackground</key>
|
||||
<true/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>Suffixes</key>
|
||||
<array>
|
||||
<string>dmg</string>
|
||||
</array>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>IcnsToIconset.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
# Convert Apple .icns icon files to iconset folder
|
||||
# containing PNG images for each representation
|
||||
for var in "$@"
|
||||
do
|
||||
echo "Converting $var to iconset"
|
||||
iconutil --convert iconset "$var"
|
||||
done
|
||||
|
||||
# Open containing folder
|
||||
DIR=$(dirname $1)
|
||||
open "$DIR"
|
||||
|
||||
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.IcnsToIconset</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>Name</key>
|
||||
<string>IcnsToIconset</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Progress Bar</string>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<true/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>12</real>
|
||||
<key>UniformTypes</key>
|
||||
<array>
|
||||
<string>com.apple.icns</string>
|
||||
</array>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,95 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>ImageResizer.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
# Use Apple's Scriptable Image Processing System (sips)
|
||||
# to resize dropped images to dimensions 512x512
|
||||
for var in "$@"
|
||||
do
|
||||
echo "Resizing $var"
|
||||
basename=$(echo "$var" | cut -f 1 -d '.')
|
||||
sips -z 512 512 "$var" --out "$basename-512x512.png" &> /dev/null
|
||||
done
|
||||
|
||||
if [ ! $# -eq "0" ]; then
|
||||
echo "Done processing $# images"
|
||||
else
|
||||
echo "Drop images on this window to resize them to 512x512"
|
||||
fi
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.ImageResizer</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>Name</key>
|
||||
<string>ImageResizer</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Text Window</string>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>San Francisco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array>
|
||||
<string>public.image</string>
|
||||
</array>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,76 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>MacbethMenu.pl</string>
|
||||
<key>Script</key>
|
||||
<string>#!/usr/bin/perl
|
||||
|
||||
# If 0 arguments, we show menu
|
||||
if (!scalar(@ARGV)) {
|
||||
print "Life's but a walking shadow, a poor player\n";
|
||||
print "That struts and frets his hour upon the stage\n";
|
||||
print "And then is heard no more.\n";
|
||||
} else {
|
||||
# We get the menu title as an argument
|
||||
# and feed it to the Mac OS X voice synthesizer
|
||||
system("/usr/bin/say \"$ARGV[0]\"");
|
||||
}
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.MacbethMenu</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/perl</string>
|
||||
<key>Name</key>
|
||||
<string>MacbethMenu</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Status Menu</string>
|
||||
<key>InterpretarArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>Macbeth</string>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>PostToNotificationCenter.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
# The Platypus wrapper parses NOTIFICATION:* and sends on to Notification Center
|
||||
echo "NOTIFICATION:Hello, world!|How are you today?"
|
||||
sleep 2
|
||||
echo "NOTIFICATION:Hello, again!|Doing better?"
|
||||
sleep 2
|
||||
</string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>SendNotifications</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.PostToNotificationCenter</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>Name</key>
|
||||
<string>PostToNotificationCenter</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>None</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<false/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyApp</string>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>ProcessMenu.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
|
||||
# terse process listing
|
||||
ps cax
|
||||
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.ProcessMenu</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>Name</key>
|
||||
<string>ProcessMenu</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Status Menu</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<true/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>PS</string>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>ProgressBar.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
|
||||
/usr/bin/say "This example shows you can control the progress bar."
|
||||
echo "PROGRESS:0"
|
||||
echo "Doing something"
|
||||
sleep 1
|
||||
echo "PROGRESS:10"
|
||||
sleep 1
|
||||
echo "PROGRESS:20"
|
||||
sleep 1
|
||||
echo "Showing Details"
|
||||
echo "DETAILS:SHOW"
|
||||
sleep 1
|
||||
echo "PROGRESS:30"
|
||||
sleep 1
|
||||
echo "Hiding Details"
|
||||
sleep 1
|
||||
echo "DETAILS:HIDE"
|
||||
sleep 1
|
||||
echo "Doing something else"
|
||||
echo "PROGRESS:40"
|
||||
sleep 1
|
||||
echo "PROGRESS:50"
|
||||
sleep 1
|
||||
echo "PROGRESS:60"
|
||||
sleep 1
|
||||
echo "And now for something completely different"
|
||||
echo "PROGRESS:70"
|
||||
sleep 1
|
||||
echo "Quitting application in 2 seconds"
|
||||
sleep 2
|
||||
echo "QUITAPP"
|
||||
echo "PROGRESS:80"
|
||||
sleep 1
|
||||
echo "PROGRESS:90"
|
||||
sleep 1
|
||||
echo "PROGRESS:100"
|
||||
echo "Done"</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.ProgressBar</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>Name</key>
|
||||
<string>ProgressBar</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Progress Bar</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextEncoding</key>
|
||||
<integer>4</integer>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<false/>
|
||||
<key>AcceptsText</key>
|
||||
<true/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<true/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.SayURLSchemeHandler</string>
|
||||
<key>InterfaceType</key>
|
||||
<string>None</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/python</string>
|
||||
<key>Name</key>
|
||||
<string>SayURLSchemeHandler</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<false/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>Script</key>
|
||||
<string>#!/usr/bin/python
|
||||
|
||||
from subprocess import call
|
||||
import sys
|
||||
|
||||
text = sys.argv[1]
|
||||
text = text[6:]
|
||||
text = text.replace('-', ' ')
|
||||
if len(text):
|
||||
call(["/usr/bin/say", text])
|
||||
</string>
|
||||
<key>ScriptName</key>
|
||||
<string>SayURLSchemeHandler</string>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemIconIsTemplate</key>
|
||||
<false/>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>Title</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>URISchemes</key>
|
||||
<array>
|
||||
<string>say</string>
|
||||
</array>
|
||||
<key>UniformTypes</key>
|
||||
<array/>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>SpeakDroplet.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
# Pipe the contents of first file argument to 'say',
|
||||
# which is the command line interface to Apple's Speech Synthesizer.
|
||||
|
||||
echo "Speaking..."
|
||||
cat $1 | say
|
||||
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.SpeakDroplet</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>Name</key>
|
||||
<string>SpeakDroplet</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Droplet</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyApp</string>
|
||||
<key>Suffixes</key>
|
||||
<array>
|
||||
<string>*</string>
|
||||
</array>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,79 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>SpotlightInfo.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/usr/bin/perl
|
||||
# Uses the mdls command to list meta data info on dropped files
|
||||
|
||||
foreach(@ARGV)
|
||||
{
|
||||
print "META-DATA INFO FOR '$_':\n";
|
||||
system("/usr/bin/mdls '$_'");
|
||||
print "------------||------------\n\n";
|
||||
}
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.SpotlightInfo</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/perl</string>
|
||||
<key>Name</key>
|
||||
<string>SpotlightInfo</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Text Window</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyApp</string>
|
||||
<key>Suffixes</key>
|
||||
<array>
|
||||
<string>*</string>
|
||||
</array>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,71 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>StatusMenuDemo.pl</string>
|
||||
<key>Script</key>
|
||||
<string>#!/usr/bin/perl
|
||||
print "MENUITEMICON|AppIcon.icns|Menu item icon can be a bundled image\n";
|
||||
print "MENUITEMICON|/Library/Application Support/Apple/iChat Icons/Flags/Iceland.png|Or an image on the file system\n";
|
||||
print "MENUITEMICON|https://sveinbjorn.org/images/andlat.png|Or even a URL!\n";
|
||||
print "SUBMENU|Submenu|Item 1|Item 2|Item 3\n";
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.StatusMenuDemo</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/perl</string>
|
||||
<key>Name</key>
|
||||
<string>StatusMenuDemo</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Status Menu</string>
|
||||
<key>InterpretarArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>IconDemo</string>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>SysLoadMenu.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
w
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<false/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.SysLoadMenu</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>Name</key>
|
||||
<string>SysLoadMenu</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Status Menu</string>
|
||||
<key>InterpretarArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<true/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<false/>
|
||||
<key>StatusItemIconIsTemplate</key>
|
||||
<false/>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>w</string>
|
||||
<key>Suffixes</key>
|
||||
<array/>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>TarGzipper.pl</string>
|
||||
<key>Script</key>
|
||||
<string>#!/usr/bin/perl
|
||||
use strict;
|
||||
use File::Basename;
|
||||
|
||||
if (!scalar(@ARGV) or ! -e $ARGV[0])
|
||||
{
|
||||
print "Drop some files to create a tgz archive\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
my $cmd = "/usr/bin/tar cvfz ";
|
||||
|
||||
# Get enclosing folder of first file
|
||||
my($fn, $directory) = fileparse($ARGV[0]);
|
||||
|
||||
# Change to that directory
|
||||
chdir($directory);
|
||||
|
||||
# Archive is created there
|
||||
my $dest_path = "Archive.tgz";
|
||||
|
||||
my $files;
|
||||
foreach(@ARGV)
|
||||
{
|
||||
if (!$_ or ! -e $_) { next; }
|
||||
my($filename, $directory) = fileparse($_);
|
||||
$files .= "'$filename' ";
|
||||
}
|
||||
|
||||
print $cmd . "\n";
|
||||
system("$cmd $dest_path $files");
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.TarGzipper</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/perl</string>
|
||||
<key>Name</key>
|
||||
<string>TarGzipper</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<false/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Text Window</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyApp</string>
|
||||
<key>Suffixes</key>
|
||||
<array>
|
||||
<string>*</string>
|
||||
</array>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>10</real>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<true/>
|
||||
<key>AcceptsText</key>
|
||||
<false/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<false/>
|
||||
<key>Overwrite</key>
|
||||
<false/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>WebViewDroplet.py</string>
|
||||
<key>Script</key>
|
||||
<string>#!/usr/bin/python
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
header = """<html>
|
||||
<head>
|
||||
<style type='text/css'>
|
||||
body { background-color: #eee; padding: 10px; }
|
||||
li {
|
||||
border: 1px solid black;
|
||||
background-color: #00e;
|
||||
padding: 5px; margin: 5px;
|
||||
list-style-type: none;
|
||||
width: 70%;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
<body>
|
||||
"""
|
||||
footer = "\n</body>\n"
|
||||
|
||||
print header
|
||||
|
||||
numfiles = len(sys.argv[1:]);
|
||||
if numfiles > 0:
|
||||
print "<h1>" + str(numfiles) + " files</h1>"
|
||||
print "<ul>"
|
||||
for arg in sys.argv[1:]:
|
||||
print "<li><strong>" + os.path.basename(arg) + "</strong> (" + str(os.path.getsize(arg)) + " bytes)</li>\n"
|
||||
print "</ul>"
|
||||
else:
|
||||
print "<h4>Go ahead and drop some files on the window</h4>"
|
||||
|
||||
print footer</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.WebViewDroplet</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/usr/bin/python</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>Name</key>
|
||||
<string>WebViewDroplet</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>InterfaceType</key>
|
||||
<string>Web View</string>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<true/>
|
||||
<key>RemainRunning</key>
|
||||
<true/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array>
|
||||
<string>*</string>
|
||||
</array>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array/>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
@ -0,0 +1,94 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AcceptsFiles</key>
|
||||
<false/>
|
||||
<key>AcceptsText</key>
|
||||
<true/>
|
||||
<key>Authentication</key>
|
||||
<false/>
|
||||
<key>Author</key>
|
||||
<string>Sveinbjorn Thordarson</string>
|
||||
<key>BundledFiles</key>
|
||||
<array/>
|
||||
<key>Creator</key>
|
||||
<string>Platypus-5.4.1</string>
|
||||
<key>DeclareService</key>
|
||||
<true/>
|
||||
<key>Overwrite</key>
|
||||
<true/>
|
||||
<key>DevelopmentVersion</key>
|
||||
<false/>
|
||||
<key>Example</key>
|
||||
<true/>
|
||||
<key>ScriptName</key>
|
||||
<string>WordCountService.sh</string>
|
||||
<key>Script</key>
|
||||
<string>#!/bin/sh
|
||||
|
||||
INPUT=`cat /dev/stdin`
|
||||
|
||||
LEN=${#INPUT}
|
||||
|
||||
if [ ! $LEN -gt 0 ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
WC=`echo $INPUT | wc -w`
|
||||
echo "ALERT:$WC words|"
|
||||
say "$WC words"
|
||||
|
||||
</string>
|
||||
<key>DocIconPath</key>
|
||||
<string></string>
|
||||
<key>Droppable</key>
|
||||
<true/>
|
||||
<key>IconPath</key>
|
||||
<string></string>
|
||||
<key>Identifier</key>
|
||||
<string>org.sveinbjorn.WordCountService</string>
|
||||
<key>InterpreterPath</key>
|
||||
<string>/bin/sh</string>
|
||||
<key>InterpreterArgs</key>
|
||||
<array/>
|
||||
<key>Name</key>
|
||||
<string>WordCountService</string>
|
||||
<key>OptimizeApplication</key>
|
||||
<true/>
|
||||
<key>InterfaceType</key>
|
||||
<string>None</string>
|
||||
<key>PromptForFileOnLaunch</key>
|
||||
<false/>
|
||||
<key>RemainRunning</key>
|
||||
<false/>
|
||||
<key>ScriptArgs</key>
|
||||
<array/>
|
||||
<key>RunInBackground</key>
|
||||
<false/>
|
||||
<key>StatusItemDisplayType</key>
|
||||
<string>Text</string>
|
||||
<key>StatusItemIcon</key>
|
||||
<data></data>
|
||||
<key>StatusItemTitle</key>
|
||||
<string>MyPlatypusApp</string>
|
||||
<key>StatusItemUseSystemFont</key>
|
||||
<true/>
|
||||
<key>Suffixes</key>
|
||||
<array>
|
||||
<string>*</string>
|
||||
</array>
|
||||
<key>TextBackground</key>
|
||||
<string>#ffffff</string>
|
||||
<key>TextFont</key>
|
||||
<string>Monaco</string>
|
||||
<key>TextForeground</key>
|
||||
<string>#000000</string>
|
||||
<key>TextSize</key>
|
||||
<real>13</real>
|
||||
<key>UniformTypes</key>
|
||||
<array/>
|
||||
<key>Version</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
||||
46
platypus/Platypus.app/Contents/Resources/InstallCommandLineTool.sh
Executable file
|
|
@ -0,0 +1,46 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# InstallCommandLineTool.sh
|
||||
# Platypus
|
||||
#
|
||||
# Created by Sveinbjorn Thordarson on 6/17/08.
|
||||
# Variables defined in Common.h
|
||||
|
||||
REAL_USER_ID=`/usr/bin/id -r -u`
|
||||
|
||||
echo "Installing command line tool"
|
||||
|
||||
# Create directories if they don't exist
|
||||
echo "Creating directory structures"
|
||||
mkdir -p "%%CMDLINE_BIN_PATH%%"
|
||||
mkdir -p "%%CMDLINE_SHARE_PATH%%"
|
||||
mkdir -p "%%CMDLINE_MANDIR_PATH%%"
|
||||
|
||||
# Change to Resources directory of Platypus application, which is first argument
|
||||
echo "Changing to directory '$1'"
|
||||
cd "$1"
|
||||
|
||||
echo "Copying resources to share directory"
|
||||
# ScriptExec binary
|
||||
gunzip -c "%%CMDLINE_SCRIPTEXEC_GZIP_NAME%%" > "%%CMDLINE_SCRIPT_EXEC_PATH%%"
|
||||
# Nib
|
||||
cp -r "%%CMDLINE_NIB_NAME%%" "%%CMDLINE_SHARE_PATH%%"
|
||||
# Set permissions
|
||||
chown -R ${REAL_USER_ID} "%%CMDLINE_SHARE_PATH%%"
|
||||
chmod -R 755 "%%CMDLINE_SHARE_PATH%%"
|
||||
|
||||
# Command line tool binary
|
||||
echo "Installing command line tool"
|
||||
gunzip -c "%%CMDLINE_PROGNAME_BUNDLE%%" > "%%CMDLINE_TOOL_PATH%%"
|
||||
chown ${REAL_USER_ID} "%%CMDLINE_TOOL_PATH%%"
|
||||
chmod +x "%%CMDLINE_TOOL_PATH%%"
|
||||
|
||||
# Man page
|
||||
echo "Installing man page"
|
||||
rm "%%CMDLINE_MANPAGE_PATH%%" &> /dev/null
|
||||
rm "%%CMDLINE_MANPAGE_PATH%%.gz" &> /dev/null
|
||||
cp "%%CMDLINE_MANPAGE_NAME%%" "%%CMDLINE_MANPAGE_PATH%%"
|
||||
chmod 644 "%%CMDLINE_MANPAGE_PATH%%"
|
||||
chown ${REAL_USER_ID} "%%CMDLINE_MANPAGE_PATH%%"
|
||||
|
||||
exit 0
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
BIN
platypus/Platypus.app/Contents/Resources/InterfaceType_None.png
Normal file
|
After Width: | Height: | Size: 101 B |
|
After Width: | Height: | Size: 3 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_AWK.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_Dart.png
Normal file
|
After Width: | Height: | Size: 1 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_Expect.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 631 B |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_Node.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_PHP.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_Perl.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_Ruby.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_Swift.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_Tcl.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_bash.png
Normal file
|
After Width: | Height: | Size: 723 B |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_csh.png
Normal file
|
After Width: | Height: | Size: 750 B |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_env.png
Normal file
|
After Width: | Height: | Size: 622 B |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_ksh.png
Normal file
|
After Width: | Height: | Size: 741 B |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_sh.png
Normal file
|
After Width: | Height: | Size: 568 B |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_tcsh.png
Normal file
|
After Width: | Height: | Size: 618 B |
BIN
platypus/Platypus.app/Contents/Resources/Interpreter_zsh.png
Normal file
|
After Width: | Height: | Size: 731 B |
38
platypus/Platypus.app/Contents/Resources/License.html
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>BSD LICENSE</title>
|
||||
</head>
|
||||
<body>
|
||||
<pre>
|
||||
|
||||
Copyright © 2003-2022, Sveinbjorn Thordarson <sveinbjorn@sveinbjorn.org>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may
|
||||
be used to endorse or promote products derived from this software without specific
|
||||
prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
724
platypus/Platypus.app/Contents/Resources/MainMenu.nib/designable.nib
generated
Normal file
|
|
@ -0,0 +1,724 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21225" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
|
||||
<dependencies>
|
||||
<deployment identifier="macosx"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21225"/>
|
||||
<plugIn identifier="com.apple.WebKitIBPlugin" version="21225"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="210"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
|
||||
<customObject id="-3" userLabel="Application" customClass="NSObject">
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="446"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<customObject id="207" userLabel="SEController" customClass="SEController">
|
||||
<connections>
|
||||
<outlet property="aboutMenuItem" destination="232" id="238"/>
|
||||
<outlet property="dropletBox" destination="494" id="502"/>
|
||||
<outlet property="dropletDropFilesLabel" destination="499" id="507"/>
|
||||
<outlet property="dropletMessageTextField" destination="505" id="508"/>
|
||||
<outlet property="dropletProgressIndicator" destination="496" id="504"/>
|
||||
<outlet property="dropletShaderView" destination="519" id="w2q-dA-smc"/>
|
||||
<outlet property="dropletWindow" destination="490" id="512"/>
|
||||
<outlet property="fileMenu" destination="81" id="rcv-iy-bgF"/>
|
||||
<outlet property="hideMenuItem" destination="134" id="239"/>
|
||||
<outlet property="openRecentMenuItem" destination="FvD-xH-BRz" id="V8D-h2-Uw1"/>
|
||||
<outlet property="progressBarCancelButton" destination="206" id="299"/>
|
||||
<outlet property="progressBarDetailsLabel" destination="290" id="300"/>
|
||||
<outlet property="progressBarDetailsTriangle" destination="288" id="301"/>
|
||||
<outlet property="progressBarIndicator" destination="204" id="298"/>
|
||||
<outlet property="progressBarMessageTextField" destination="205" id="297"/>
|
||||
<outlet property="progressBarTextView" destination="307" id="516"/>
|
||||
<outlet property="progressBarWindow" destination="21" id="296"/>
|
||||
<outlet property="quitMenuItem" destination="136" id="240"/>
|
||||
<outlet property="textWindow" destination="216" id="dD5-aT-ujC"/>
|
||||
<outlet property="textWindowCancelButton" destination="220" id="uuU-Xb-xDZ"/>
|
||||
<outlet property="textWindowMessageTextField" destination="366" id="bT3-oV-9zc"/>
|
||||
<outlet property="textWindowProgressIndicator" destination="230" id="AXd-F1-wQr"/>
|
||||
<outlet property="textWindowTextView" destination="225" id="FZy-wJ-th1"/>
|
||||
<outlet property="viewMenu" destination="ITS-DI-OJD" id="2iy-Fw-JVe"/>
|
||||
<outlet property="webView" destination="258" id="GEt-Hd-OFL"/>
|
||||
<outlet property="webViewCancelButton" destination="251" id="i5n-LY-nJs"/>
|
||||
<outlet property="webViewMessageTextField" destination="509" id="Unv-5h-E6P"/>
|
||||
<outlet property="webViewProgressIndicator" destination="277" id="Hun-a2-4wC"/>
|
||||
<outlet property="webViewWindow" destination="247" id="9lw-Pg-xRw"/>
|
||||
<outlet property="windowMenu" destination="24" id="328"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="ProgressBarWindow" animationBehavior="default" tabbingMode="disallowed" id="21" userLabel="ProgressWindow">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="472" y="537" width="438" height="87"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1536" height="935"/>
|
||||
<value key="minSize" type="size" width="438" height="87"/>
|
||||
<value key="maxSize" type="size" width="600" height="87"/>
|
||||
<view key="contentView" id="2">
|
||||
<rect key="frame" x="0.0" y="0.0" width="438" height="87"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<progressIndicator wantsLayer="YES" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" bezeled="NO" indeterminate="YES" style="bar" translatesAutoresizingMaskIntoConstraints="NO" id="204">
|
||||
<rect key="frame" x="18" y="31" width="310" height="20"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="205">
|
||||
<rect key="frame" x="18" y="59" width="403" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" lineBreakMode="clipping" sendsActionOnEndEditing="YES" baseWritingDirection="leftToRight" alignment="left" id="472">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="206">
|
||||
<rect key="frame" x="338" y="24" width="86" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="473">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancel:" target="207" id="215"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button toolTip="Show details" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="288">
|
||||
<rect key="frame" x="20" y="14" width="13" height="13"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<buttonCell key="cell" type="disclosureTriangle" bezelStyle="disclosure" imagePosition="above" alignment="left" controlSize="small" borderStyle="border" inset="2" id="474">
|
||||
<behavior key="behavior" pushIn="YES" changeBackground="YES" changeGray="YES" lightByContents="YES"/>
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="toggleDetails:" target="207" id="303"/>
|
||||
</connections>
|
||||
</button>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="290">
|
||||
<rect key="frame" x="33" y="11" width="41" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Details" id="475">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="304">
|
||||
<rect key="frame" x="20" y="-208" width="393" height="208"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="2mm-QF-kpX">
|
||||
<rect key="frame" x="1" y="1" width="391" height="206"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="307" customClass="SETextView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="391" height="206"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="391" height="206"/>
|
||||
<size key="maxSize" width="463" height="10000000"/>
|
||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="489"/>
|
||||
</connections>
|
||||
</textView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="481">
|
||||
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="0.39849624060150374" horizontal="NO" id="480">
|
||||
<rect key="frame" x="323" y="1" width="15" height="200"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="377"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="87" y="314.5"/>
|
||||
</window>
|
||||
<menu title="MainMenu" systemMenu="main" id="29" userLabel="MainMenu">
|
||||
<items>
|
||||
<menuItem title="Application" id="56">
|
||||
<menu key="submenu" title="Application" systemMenu="apple" id="57">
|
||||
<items>
|
||||
<menuItem title="About" id="232">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontStandardAboutPanel:" target="-2" id="237"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="233">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Services" id="235">
|
||||
<menu key="submenu" title="Services" systemMenu="services" id="234"/>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="236">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Hide" keyEquivalent="h" id="134">
|
||||
<connections>
|
||||
<action selector="hide:" target="-2" id="152"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Hide Others" keyEquivalent="h" id="145">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="hideOtherApplications:" target="-2" id="146"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Show All" id="150">
|
||||
<connections>
|
||||
<action selector="unhideAllApplications:" target="-2" id="153"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="149">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Quit" keyEquivalent="q" id="136">
|
||||
<connections>
|
||||
<action selector="terminate:" target="-2" id="139"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="File" id="83">
|
||||
<menu key="submenu" title="File" id="81">
|
||||
<items>
|
||||
<menuItem title="Open…" keyEquivalent="o" id="72">
|
||||
<connections>
|
||||
<action selector="openFiles:" target="207" id="524"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Open Recent" id="FvD-xH-BRz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Open Recent" systemMenu="recentDocuments" id="QHk-NS-To3">
|
||||
<items>
|
||||
<menuItem title="Clear Menu" id="CWw-N0-5lz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="xgq-Qk-sfY">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Close" keyEquivalent="w" id="dh0-Fj-ATR">
|
||||
<connections>
|
||||
<action selector="performClose:" target="-1" id="0fd-CD-gUG"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="79">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Save…" keyEquivalent="s" id="75">
|
||||
<connections>
|
||||
<action selector="saveToFile:" target="207" id="523"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="74">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Page Setup…" keyEquivalent="P" id="77">
|
||||
<connections>
|
||||
<action selector="runPageLayout:" target="-1" id="87"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Print…" keyEquivalent="p" id="78">
|
||||
<connections>
|
||||
<action selector="print:" target="-1" id="86"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Edit" id="OYz-zT-LAM">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Edit" id="gbe-PM-Daj">
|
||||
<items>
|
||||
<menuItem title="Undo" keyEquivalent="z" id="6BN-ih-O2m">
|
||||
<connections>
|
||||
<action selector="undo:" target="-1" id="oH0-3R-wus"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Redo" keyEquivalent="z" id="TgQ-5S-p2w">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="redo:" target="-1" id="bxh-7G-6rR"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="ktb-NS-TU3"/>
|
||||
<menuItem title="Cut" keyEquivalent="x" id="yLq-sd-YR5">
|
||||
<connections>
|
||||
<action selector="cut:" target="-1" id="46i-iL-VLK"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Copy" keyEquivalent="c" id="s3v-O1-6pA">
|
||||
<connections>
|
||||
<action selector="copy:" target="-1" id="jxG-ij-fh7"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste" keyEquivalent="v" id="6Ld-ut-13f">
|
||||
<connections>
|
||||
<action selector="paste:" target="-1" id="PGw-sA-Gma"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Paste and Match Style" keyEquivalent="V" id="GyB-HZ-4kH">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="pasteAsPlainText:" target="-1" id="AlS-iZ-R4l"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Delete" id="YkA-TP-1J9">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="delete:" target="-1" id="cE3-5v-CP0"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Select All" keyEquivalent="a" id="z4j-fk-SUb">
|
||||
<connections>
|
||||
<action selector="selectAll:" target="-1" id="eM9-h9-WVo"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="FXg-ZR-vZj"/>
|
||||
<menuItem title="Find" id="amO-Yt-228">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Find" id="9XE-hK-Hbc">
|
||||
<items>
|
||||
<menuItem title="Find…" tag="1" keyEquivalent="f" id="yA2-y8-dhZ">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="zqc-0l-nEk"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="ceF-be-hip">
|
||||
<modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="Fno-81-Q2N"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Next" tag="2" keyEquivalent="g" id="6FX-CW-rwT">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="AeZ-8e-DSZ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Find Previous" tag="3" keyEquivalent="G" id="kIR-xV-7pl">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="ALM-eS-1XU"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="yTY-2E-Cp9">
|
||||
<connections>
|
||||
<action selector="performFindPanelAction:" target="-1" id="Gbj-g6-cYJ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Jump to Selection" keyEquivalent="j" id="80n-rn-d7I">
|
||||
<connections>
|
||||
<action selector="centerSelectionInVisibleArea:" target="-1" id="qfH-cs-Cdv"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Spelling and Grammar" id="uWG-xr-cNT">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Spelling" id="Xoa-7u-7zM">
|
||||
<items>
|
||||
<menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="rZl-3I-YFV">
|
||||
<connections>
|
||||
<action selector="showGuessPanel:" target="-1" id="CSh-4b-cGc"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Document Now" keyEquivalent=";" id="tjk-pc-YjK">
|
||||
<connections>
|
||||
<action selector="checkSpelling:" target="-1" id="O3S-v5-8Ra"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="ohv-rn-e7b"/>
|
||||
<menuItem title="Check Spelling While Typing" id="E3o-iC-0NO">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleContinuousSpellChecking:" target="-1" id="k4Q-aZ-O6y"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Check Grammar With Spelling" id="mUP-Jd-Tu1">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleGrammarChecking:" target="-1" id="Ypd-WC-IMS"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Correct Spelling Automatically" id="qq3-jk-TYN">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticSpellingCorrection:" target="-1" id="Ob8-wh-bLR"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Substitutions" id="8Ti-fk-PNH">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Substitutions" id="NeW-07-aln">
|
||||
<items>
|
||||
<menuItem title="Show Substitutions" id="DXm-9z-Sle">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="orderFrontSubstitutionsPanel:" target="-1" id="z43-IC-kpA"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="aVP-JA-dKq"/>
|
||||
<menuItem title="Smart Copy/Paste" id="Pcq-B9-JQ5">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleSmartInsertDelete:" target="-1" id="iu4-Nn-DU4"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Quotes" id="iDT-WP-ISR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="pnI-ku-LV9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Dashes" id="QFc-JW-5qE">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDashSubstitution:" target="-1" id="pY9-lv-EM7"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Smart Links" id="opP-BJ-vhR">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticLinkDetection:" target="-1" id="lfD-XD-tfO"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Data Detectors" id="zWu-P7-fpg">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticDataDetection:" target="-1" id="EAz-S6-L7B"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Text Replacement" id="2R8-fL-H32">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="toggleAutomaticTextReplacement:" target="-1" id="7Lb-Uz-uJ9"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Transformations" id="v1A-Fi-A5j">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Transformations" id="B0B-bK-IZ3">
|
||||
<items>
|
||||
<menuItem title="Make Upper Case" id="1P0-qI-ZAM">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="uppercaseWord:" target="-1" id="cre-Qh-bSZ"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Make Lower Case" id="sK6-Xl-9uz">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="lowercaseWord:" target="-1" id="qid-xu-iAw"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Capitalize" id="zvd-g7-rwM">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="capitalizeWord:" target="-1" id="0tj-lN-nE0"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Speech" id="bsj-0j-07E">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Speech" id="r3p-Q2-qJZ">
|
||||
<items>
|
||||
<menuItem title="Start Speaking" id="8Hl-RR-cUq">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="startSpeaking:" target="-1" id="Zbb-Tp-HBE"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Stop Speaking" id="SLa-Tk-XGJ">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="stopSpeaking:" target="-1" id="Oyc-KO-3qC"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="View" id="KUk-6o-tke">
|
||||
<menu key="submenu" title="View" id="ITS-DI-OJD">
|
||||
<items>
|
||||
<menuItem title="Make Text Bigger" keyEquivalent="+" id="Qae-cV-V7J">
|
||||
<connections>
|
||||
<action selector="makeTextBigger:" target="207" id="cHK-EO-JtV"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Make Text Smaller" keyEquivalent="-" id="Gv4-oc-1eL">
|
||||
<connections>
|
||||
<action selector="makeTextSmaller:" target="207" id="JTY-6k-ZKY"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="G0T-Im-91a"/>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Window" id="19">
|
||||
<menu key="submenu" title="Window" systemMenu="window" id="24">
|
||||
<items>
|
||||
<menuItem title="Zoom" keyEquivalent="z" id="197">
|
||||
<modifierMask key="keyEquivalentModifierMask" shift="YES" command="YES"/>
|
||||
<connections>
|
||||
<action selector="performZoom:" target="-1" id="198"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="Minimize" keyEquivalent="m" id="23">
|
||||
<connections>
|
||||
<action selector="performMiniaturize:" target="-1" id="37"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem isSeparatorItem="YES" id="322">
|
||||
<modifierMask key="keyEquivalentModifierMask" command="YES"/>
|
||||
</menuItem>
|
||||
<menuItem title="Bring All to Front" id="5">
|
||||
<connections>
|
||||
<action selector="arrangeInFront:" target="-1" id="39"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
<menuItem title="Help" id="ssS-yx-lud">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Help" systemMenu="help" id="Jc3-NS-beW">
|
||||
<items>
|
||||
<menuItem title="Help" keyEquivalent="?" id="By3-00-4mK">
|
||||
<connections>
|
||||
<action selector="showHelp:" target="-1" id="ZoJ-wH-vxF"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
</menuItem>
|
||||
</items>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="525"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="36" y="0.0"/>
|
||||
</menu>
|
||||
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="TextWindow" animationBehavior="default" tabbingMode="disallowed" id="216" userLabel="TextOutputWindow">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="297" y="408" width="580" height="420"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1536" height="935"/>
|
||||
<value key="minSize" type="size" width="400" height="200"/>
|
||||
<view key="contentView" id="217">
|
||||
<rect key="frame" x="0.0" y="0.0" width="580" height="420"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="220">
|
||||
<rect key="frame" x="488" y="7" width="86" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="476">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancel:" target="207" id="223"/>
|
||||
</connections>
|
||||
</button>
|
||||
<scrollView fixedFrame="YES" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" horizontalScrollElasticity="none" verticalScrollElasticity="none" translatesAutoresizingMaskIntoConstraints="NO" id="226">
|
||||
<rect key="frame" x="9" y="45" width="561" height="367"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Hk1-72-Owa">
|
||||
<rect key="frame" x="1" y="1" width="559" height="365"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textView editable="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" usesFontPanel="YES" findStyle="panel" allowsDocumentBackgroundColorChange="YES" linkDetection="YES" id="225" customClass="SETextView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="559" height="365"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
|
||||
<size key="minSize" width="559" height="365"/>
|
||||
<size key="maxSize" width="561" height="10000000"/>
|
||||
<color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="488"/>
|
||||
</connections>
|
||||
</textView>
|
||||
</subviews>
|
||||
</clipView>
|
||||
<scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="YES" id="483">
|
||||
<rect key="frame" x="-100" y="-100" width="87" height="18"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
<scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="482">
|
||||
<rect key="frame" x="-30" y="1" width="15" height="340"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
</scroller>
|
||||
</scrollView>
|
||||
<progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="230">
|
||||
<rect key="frame" x="15" y="18" width="16" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="366">
|
||||
<rect key="frame" x="43" y="17" width="429" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="477">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="376"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-478" y="370"/>
|
||||
</window>
|
||||
<window allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="WebViewWindow" animationBehavior="default" tabbingMode="disallowed" id="247" userLabel="WebOutputWindow">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
|
||||
<rect key="contentRect" x="297" y="408" width="580" height="420"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1536" height="935"/>
|
||||
<value key="minSize" type="size" width="400" height="200"/>
|
||||
<view key="contentView" id="248">
|
||||
<rect key="frame" x="0.0" y="0.0" width="580" height="420"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="251">
|
||||
<rect key="frame" x="485" y="6" width="86" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
|
||||
<buttonCell key="cell" type="push" title="Quit" bezelStyle="rounded" alignment="center" state="on" borderStyle="border" inset="2" id="478">
|
||||
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
|
||||
<font key="font" metaFont="system"/>
|
||||
<string key="keyEquivalent" base64-UTF8="YES">
|
||||
Gw
|
||||
</string>
|
||||
</buttonCell>
|
||||
<connections>
|
||||
<action selector="cancel:" target="207" id="267"/>
|
||||
</connections>
|
||||
</button>
|
||||
<box fixedFrame="YES" boxType="oldStyle" borderType="line" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="257">
|
||||
<rect key="frame" x="8" y="45" width="563" height="367"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<view key="contentView" id="X4z-hY-QR7">
|
||||
<rect key="frame" x="1" y="1" width="561" height="365"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<webView fixedFrame="YES" maintainsBackForwardList="NO" translatesAutoresizingMaskIntoConstraints="NO" id="258" customClass="STDragWebView">
|
||||
<rect key="frame" x="-1" y="0.0" width="562" height="365"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<webPreferences key="preferences" defaultFontSize="12" defaultFixedFontSize="12">
|
||||
<nil key="identifier"/>
|
||||
</webPreferences>
|
||||
<connections>
|
||||
<outlet property="UIDelegate" destination="207" id="378"/>
|
||||
<outlet property="downloadDelegate" destination="207" id="382"/>
|
||||
<outlet property="dragDelegate" destination="207" id="kaI-rz-1Ps"/>
|
||||
<outlet property="frameLoadDelegate" destination="207" id="381"/>
|
||||
<outlet property="policyDelegate" destination="207" id="380"/>
|
||||
<outlet property="resourceLoadDelegate" destination="207" id="379"/>
|
||||
</connections>
|
||||
</webView>
|
||||
</subviews>
|
||||
</view>
|
||||
</box>
|
||||
<progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" controlSize="small" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="277">
|
||||
<rect key="frame" x="16" y="15" width="16" height="16"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="509">
|
||||
<rect key="frame" x="37" y="14" width="429" height="17"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
|
||||
<textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" id="510">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="375"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="-659" y="-167"/>
|
||||
</window>
|
||||
<window title="Droplet" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" visibleAtLaunch="NO" frameAutosaveName="DropletWindow" animationBehavior="default" tabbingMode="disallowed" id="490" userLabel="DropletWindow">
|
||||
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
|
||||
<rect key="contentRect" x="157" y="273" width="294" height="280"/>
|
||||
<rect key="screenRect" x="0.0" y="0.0" width="1536" height="935"/>
|
||||
<view key="contentView" id="491">
|
||||
<rect key="frame" x="0.0" y="0.0" width="294" height="280"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<textField hidden="YES" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="519">
|
||||
<rect key="frame" x="0.0" y="0.0" width="294" height="280"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" enabled="NO" allowsUndo="NO" sendsActionOnEndEditing="YES" drawsBackground="YES" id="520">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<box autoresizesSubviews="NO" fixedFrame="YES" borderType="line" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="494">
|
||||
<rect key="frame" x="17" y="16" width="260" height="246"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<view key="contentView" id="q0i-G4-K1a">
|
||||
<rect key="frame" x="3" y="3" width="254" height="240"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<progressIndicator wantsLayer="YES" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" displayedWhenStopped="NO" bezeled="NO" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="496">
|
||||
<rect key="frame" x="112" y="124" width="32" height="32"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
</progressIndicator>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="67" translatesAutoresizingMaskIntoConstraints="NO" id="499">
|
||||
<rect key="frame" x="92" y="108" width="71" height="34"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" controlSize="mini" sendsActionOnEndEditing="YES" alignment="center" title="Drop files here" id="500">
|
||||
<font key="font" metaFont="system"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="214" translatesAutoresizingMaskIntoConstraints="NO" id="505">
|
||||
<rect key="frame" x="18" y="40" width="218" height="76"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
|
||||
<textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="center" id="506">
|
||||
<font key="font" metaFont="smallSystem"/>
|
||||
<color key="textColor" name="disabledControlTextColor" catalog="System" colorSpace="catalog"/>
|
||||
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
|
||||
</textFieldCell>
|
||||
</textField>
|
||||
</subviews>
|
||||
</view>
|
||||
</box>
|
||||
</subviews>
|
||||
</view>
|
||||
<connections>
|
||||
<outlet property="delegate" destination="207" id="RFt-L5-f73"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="608" y="262"/>
|
||||
</window>
|
||||
</objects>
|
||||
</document>
|
||||