├── .editorconfig ├── .gitattributes ├── .github └── workflows │ └── main.yml ├── .gitignore ├── .npmrc ├── cocoaDialog.app └── Contents │ ├── Frameworks │ ├── Growl.framework │ │ ├── Growl │ │ ├── Headers │ │ ├── Resources │ │ └── Versions │ │ │ ├── A │ │ │ ├── Growl │ │ │ ├── Headers │ │ │ │ ├── Growl.h │ │ │ │ ├── GrowlApplicationBridge.h │ │ │ │ └── GrowlDefines.h │ │ │ ├── Resources │ │ │ │ └── Info.plist │ │ │ └── _CodeSignature │ │ │ │ └── CodeResources │ │ │ └── Current │ └── Sparkle.framework │ │ ├── Headers │ │ ├── Resources │ │ ├── Sparkle │ │ └── Versions │ │ ├── A │ │ ├── Headers │ │ │ ├── SUAppcast.h │ │ │ ├── SUAppcastItem.h │ │ │ ├── SUUpdater.h │ │ │ ├── SUVersionComparisonProtocol.h │ │ │ ├── SUVersionDisplayProtocol.h │ │ │ └── Sparkle.h │ │ ├── Resources │ │ │ ├── Info.plist │ │ │ ├── SUModelTranslation.plist │ │ │ ├── SUStatus.nib │ │ │ └── en.lproj │ │ │ │ ├── SUAutomaticUpdateAlert.nib │ │ │ │ ├── SUUpdateAlert.nib │ │ │ │ ├── SUUpdatePermissionPrompt.nib │ │ │ │ └── Sparkle.strings │ │ └── Sparkle │ │ └── Current │ ├── Info.plist │ ├── MacOS │ └── cocoaDialog │ ├── PkgInfo │ └── Resources │ ├── cocoadialog.icns │ ├── dsa_pub.pem │ ├── en-US.lproj │ ├── InfoPlist.strings │ ├── MainMenu.nib │ ├── Msgbox.nib │ ├── Progressbar.nib │ ├── Textbox.nib │ ├── popup.nib │ └── tbc.nib │ └── relaunch ├── index.js ├── license ├── package.json ├── readme.md ├── screenshot.png └── test.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = tab 5 | end_of_line = lf 6 | charset = utf-8 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | 10 | [*.yml] 11 | indent_style = space 12 | indent_size = 2 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | cocoaDialog.app/* linguist-vendored 3 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | - push 4 | - pull_request 5 | jobs: 6 | test: 7 | name: Node.js ${{ matrix.node-version }} 8 | runs-on: ubuntu-latest 9 | strategy: 10 | fail-fast: false 11 | matrix: 12 | node-version: 13 | - 16 14 | steps: 15 | - uses: actions/checkout@v2 16 | - uses: actions/setup-node@v2 17 | with: 18 | node-version: ${{ matrix.node-version }} 19 | - run: npm install 20 | - run: npm test 21 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | yarn.lock 3 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | package-lock=false 2 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Growl: -------------------------------------------------------------------------------- 1 | Versions/Current/Growl -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/A/Growl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/A/Growl -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/A/Headers/Growl.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifdef __OBJC__ 4 | # include 5 | #endif 6 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/A/Headers/GrowlApplicationBridge.h: -------------------------------------------------------------------------------- 1 | // 2 | // GrowlApplicationBridge.h 3 | // Growl 4 | // 5 | // Created by Evan Schoenberg on Wed Jun 16 2004. 6 | // Copyright 2004-2006 The Growl Project. All rights reserved. 7 | // 8 | 9 | /*! 10 | * @header GrowlApplicationBridge.h 11 | * @abstract Defines the GrowlApplicationBridge class. 12 | * @discussion This header defines the GrowlApplicationBridge class as well as 13 | * the GROWL_PREFPANE_BUNDLE_IDENTIFIER constant. 14 | */ 15 | 16 | #ifndef __GrowlApplicationBridge_h__ 17 | #define __GrowlApplicationBridge_h__ 18 | 19 | #import 20 | #import 21 | #import 22 | 23 | //Forward declarations 24 | @protocol GrowlApplicationBridgeDelegate; 25 | 26 | //------------------------------------------------------------------------------ 27 | #pragma mark - 28 | 29 | /*! 30 | * @class GrowlApplicationBridge 31 | * @abstract A class used to interface with Growl. 32 | * @discussion This class provides a means to interface with Growl. 33 | * 34 | * Currently it provides a way to detect if Growl is installed and launch the 35 | * GrowlHelperApp if it's not already running. 36 | */ 37 | @interface GrowlApplicationBridge : NSObject { 38 | 39 | } 40 | 41 | /*! 42 | * @method isGrowlInstalled 43 | * @abstract Detects whether Growl is installed. 44 | * @discussion Determines if the Growl prefpane and its helper app are installed. 45 | * @result this method will forever return YES. 46 | */ 47 | + (BOOL) isGrowlInstalled __attribute__((deprecated)); 48 | 49 | /*! 50 | * @method isGrowlRunning 51 | * @abstract Detects whether GrowlHelperApp is currently running. 52 | * @discussion Cycles through the process list to find whether GrowlHelperApp is running and returns its findings. 53 | * @result Returns YES if GrowlHelperApp is running, NO otherwise. 54 | */ 55 | + (BOOL) isGrowlRunning; 56 | 57 | 58 | /*! 59 | * @method isMistEnabled 60 | * @abstract Gives the caller a fairly good indication of whether or not built-in notifications(Mist) will be used. 61 | * @discussion since this call makes use of isGrowlRunning it is entirely possible for this value to change between call and 62 | * executing a notification dispatch 63 | * @result Returns YES if Growl isn't reachable and the developer has not opted-out of 64 | * Mist and the user hasn't set the global mist enable key to false. 65 | */ 66 | + (BOOL)isMistEnabled; 67 | 68 | /*! 69 | * @method setShouldUseBuiltInNotifications 70 | * @abstract opt-out mechanism for the mist notification style in the event growl can't be reached. 71 | * @discussion if growl is unavailable due to not being installed or as a result of being turned off then 72 | * this option can enable/disable a built-in fire and forget display style 73 | * @param should Specifies whether or not the developer wants to opt-in (default) or opt out 74 | * of the built-in Mist style in the event Growl is unreachable. 75 | */ 76 | + (void)setShouldUseBuiltInNotifications:(BOOL)should; 77 | 78 | /*! 79 | * @method shouldUseBuiltInNotifications 80 | * @abstract returns the current opt-in state of the framework's use of the Mist display style. 81 | * @result Returns NO if the developer opt-ed out of Mist, the default value is YES. 82 | */ 83 | + (BOOL)shouldUseBuiltInNotifications; 84 | 85 | #pragma mark - 86 | 87 | /*! 88 | * @method setGrowlDelegate: 89 | * @abstract Set the object which will be responsible for providing and receiving Growl information. 90 | * @discussion This must be called before using GrowlApplicationBridge. 91 | * 92 | * The methods in the GrowlApplicationBridgeDelegate protocol are required 93 | * and return the basic information needed to register with Growl. 94 | * 95 | * The methods in the GrowlApplicationBridgeDelegate_InformalProtocol 96 | * informal protocol are individually optional. They provide a greater 97 | * degree of interaction between the application and growl such as informing 98 | * the application when one of its Growl notifications is clicked by the user. 99 | * 100 | * The methods in the GrowlApplicationBridgeDelegate_Installation_InformalProtocol 101 | * informal protocol are individually optional and are only applicable when 102 | * using the Growl-WithInstaller.framework which allows for automated Growl 103 | * installation. 104 | * 105 | * When this method is called, data will be collected from inDelegate, Growl 106 | * will be launched if it is not already running, and the application will be 107 | * registered with Growl. 108 | * 109 | * If using the Growl-WithInstaller framework, if Growl is already installed 110 | * but this copy of the framework has an updated version of Growl, the user 111 | * will be prompted to update automatically. 112 | * 113 | * @param inDelegate The delegate for the GrowlApplicationBridge. It must conform to the GrowlApplicationBridgeDelegate protocol. 114 | */ 115 | + (void) setGrowlDelegate:(NSObject *)inDelegate; 116 | 117 | /*! 118 | * @method growlDelegate 119 | * @abstract Return the object responsible for providing and receiving Growl information. 120 | * @discussion See setGrowlDelegate: for details. 121 | * @result The Growl delegate. 122 | */ 123 | + (NSObject *) growlDelegate; 124 | 125 | #pragma mark - 126 | 127 | /*! 128 | * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext: 129 | * @abstract Send a Growl notification. 130 | * @discussion This is the preferred means for sending a Growl notification. 131 | * The notification name and at least one of the title and description are 132 | * required (all three are preferred). All other parameters may be 133 | * nil (or 0 or NO as appropriate) to accept default values. 134 | * 135 | * If using the Growl-WithInstaller framework, if Growl is not installed the 136 | * user will be prompted to install Growl. If the user cancels, this method 137 | * will have no effect until the next application session, at which time when 138 | * it is called the user will be prompted again. The user is also given the 139 | * option to not be prompted again. If the user does choose to install Growl, 140 | * the requested notification will be displayed once Growl is installed and 141 | * running. 142 | * 143 | * @param title The title of the notification displayed to the user. 144 | * @param description The full description of the notification displayed to the user. 145 | * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. 146 | * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. 147 | * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. 148 | * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. 149 | * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). 150 | */ 151 | + (void) notifyWithTitle:(NSString *)title 152 | description:(NSString *)description 153 | notificationName:(NSString *)notifName 154 | iconData:(NSData *)iconData 155 | priority:(signed int)priority 156 | isSticky:(BOOL)isSticky 157 | clickContext:(id)clickContext; 158 | 159 | /*! 160 | * @method notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier: 161 | * @abstract Send a Growl notification. 162 | * @discussion This is the preferred means for sending a Growl notification. 163 | * The notification name and at least one of the title and description are 164 | * required (all three are preferred). All other parameters may be 165 | * nil (or 0 or NO as appropriate) to accept default values. 166 | * 167 | * If using the Growl-WithInstaller framework, if Growl is not installed the 168 | * user will be prompted to install Growl. If the user cancels, this method 169 | * will have no effect until the next application session, at which time when 170 | * it is called the user will be prompted again. The user is also given the 171 | * option to not be prompted again. If the user does choose to install Growl, 172 | * the requested notification will be displayed once Growl is installed and 173 | * running. 174 | * 175 | * @param title The title of the notification displayed to the user. 176 | * @param description The full description of the notification displayed to the user. 177 | * @param notifName The internal name of the notification. Should be human-readable, as it will be displayed in the Growl preference pane. 178 | * @param iconData NSData object to show with the notification as its icon. If nil, the application's icon will be used instead. 179 | * @param priority The priority of the notification. The default value is 0; positive values are higher priority and negative values are lower priority. Not all Growl displays support priority. 180 | * @param isSticky If YES, the notification will remain on screen until clicked. Not all Growl displays support sticky notifications. 181 | * @param clickContext A context passed back to the Growl delegate if it implements -(void)growlNotificationWasClicked: and the notification is clicked. Not all display plugins support clicking. The clickContext must be plist-encodable (completely of NSString, NSArray, NSNumber, NSDictionary, and NSData types). 182 | * @param identifier An identifier for this notification. Notifications with equal identifiers are coalesced. 183 | */ 184 | + (void) notifyWithTitle:(NSString *)title 185 | description:(NSString *)description 186 | notificationName:(NSString *)notifName 187 | iconData:(NSData *)iconData 188 | priority:(signed int)priority 189 | isSticky:(BOOL)isSticky 190 | clickContext:(id)clickContext 191 | identifier:(NSString *)identifier; 192 | 193 | /*! @method notifyWithDictionary: 194 | * @abstract Notifies using a userInfo dictionary suitable for passing to 195 | * NSDistributedNotificationCenter. 196 | * @param userInfo The dictionary to notify with. 197 | * @discussion Before Growl 0.6, your application would have posted 198 | * notifications using NSDistributedNotificationCenter by 199 | * creating a userInfo dictionary with the notification data. This had the 200 | * advantage of allowing you to add other data to the dictionary for programs 201 | * besides Growl that might be listening. 202 | * 203 | * This method allows you to use such dictionaries without being restricted 204 | * to using NSDistributedNotificationCenter. The keys for this dictionary 205 | * can be found in GrowlDefines.h. 206 | */ 207 | + (void) notifyWithDictionary:(NSDictionary *)userInfo; 208 | 209 | #pragma mark - 210 | 211 | /*! @method registerWithDictionary: 212 | * @abstract Register your application with Growl without setting a delegate. 213 | * @discussion When you call this method with a dictionary, 214 | * GrowlApplicationBridge registers your application using that dictionary. 215 | * If you pass nil, GrowlApplicationBridge will ask the delegate 216 | * (if there is one) for a dictionary, and if that doesn't work, it will look 217 | * in your application's bundle for an auto-discoverable plist. 218 | * (XXX refer to more information on that) 219 | * 220 | * If you pass a dictionary to this method, it must include the 221 | * GROWL_APP_NAME key, unless a delegate is set. 222 | * 223 | * This method is mainly an alternative to the delegate system introduced 224 | * with Growl 0.6. Without a delegate, you cannot receive callbacks such as 225 | * -growlIsReady (since they are sent to the delegate). You can, 226 | * however, set a delegate after registering without one. 227 | * 228 | * This method was introduced in Growl.framework 0.7. 229 | */ 230 | + (BOOL) registerWithDictionary:(NSDictionary *)regDict; 231 | 232 | /*! @method reregisterGrowlNotifications 233 | * @abstract Reregister the notifications for this application. 234 | * @discussion This method does not normally need to be called. If your 235 | * application changes what notifications it is registering with Growl, call 236 | * this method to have the Growl delegate's 237 | * -registrationDictionaryForGrowl method called again and the 238 | * Growl registration information updated. 239 | * 240 | * This method is now implemented using -registerWithDictionary:. 241 | */ 242 | + (void) reregisterGrowlNotifications; 243 | 244 | #pragma mark - 245 | 246 | /*! @method setWillRegisterWhenGrowlIsReady: 247 | * @abstract Tells GrowlApplicationBridge to register with Growl when Growl 248 | * launches (or not). 249 | * @discussion When Growl has started listening for notifications, it posts a 250 | * GROWL_IS_READY notification on the Distributed Notification 251 | * Center. GrowlApplicationBridge listens for this notification, using it to 252 | * perform various tasks (such as calling your delegate's 253 | * -growlIsReady method, if it has one). If this method is 254 | * called with YES, one of those tasks will be to reregister 255 | * with Growl (in the manner of -reregisterGrowlNotifications). 256 | * 257 | * This attribute is automatically set back to NO (the default) 258 | * after every GROWL_IS_READY notification. 259 | * @param flag YES if you want GrowlApplicationBridge to register with 260 | * Growl when next it is ready; NO if not. 261 | */ 262 | + (void) setWillRegisterWhenGrowlIsReady:(BOOL)flag; 263 | /*! @method willRegisterWhenGrowlIsReady 264 | * @abstract Reports whether GrowlApplicationBridge will register with Growl 265 | * when Growl next launches. 266 | * @result YES if GrowlApplicationBridge will register with Growl 267 | * when next it posts GROWL_IS_READY; NO if not. 268 | */ 269 | + (BOOL) willRegisterWhenGrowlIsReady; 270 | 271 | #pragma mark - 272 | 273 | /*! @method registrationDictionaryFromDelegate 274 | * @abstract Asks the delegate for a registration dictionary. 275 | * @discussion If no delegate is set, or if the delegate's 276 | * -registrationDictionaryForGrowl method returns 277 | * nil, this method returns nil. 278 | * 279 | * This method does not attempt to clean up the dictionary in any way - for 280 | * example, if it is missing the GROWL_APP_NAME key, the result 281 | * will be missing it too. Use +[GrowlApplicationBridge 282 | * registrationDictionaryByFillingInDictionary:] or 283 | * +[GrowlApplicationBridge 284 | * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try 285 | * to fill in missing keys. 286 | * 287 | * This method was introduced in Growl.framework 0.7. 288 | * @result A registration dictionary. 289 | */ 290 | + (NSDictionary *) registrationDictionaryFromDelegate; 291 | 292 | /*! @method registrationDictionaryFromBundle: 293 | * @abstract Looks in a bundle for a registration dictionary. 294 | * @discussion This method looks in a bundle for an auto-discoverable 295 | * registration dictionary file using -[NSBundle 296 | * pathForResource:ofType:]. If it finds one, it loads the file using 297 | * +[NSDictionary dictionaryWithContentsOfFile:] and returns the 298 | * result. 299 | * 300 | * If you pass nil as the bundle, the main bundle is examined. 301 | * 302 | * This method does not attempt to clean up the dictionary in any way - for 303 | * example, if it is missing the GROWL_APP_NAME key, the result 304 | * will be missing it too. Use +[GrowlApplicationBridge 305 | * registrationDictionaryByFillingInDictionary:] or 306 | * +[GrowlApplicationBridge 307 | * registrationDictionaryByFillingInDictionary:restrictToKeys:] to try 308 | * to fill in missing keys. 309 | * 310 | * This method was introduced in Growl.framework 0.7. 311 | * @result A registration dictionary. 312 | */ 313 | + (NSDictionary *) registrationDictionaryFromBundle:(NSBundle *)bundle; 314 | 315 | /*! @method bestRegistrationDictionary 316 | * @abstract Obtains a registration dictionary, filled out to the best of 317 | * GrowlApplicationBridge's knowledge. 318 | * @discussion This method creates a registration dictionary as best 319 | * GrowlApplicationBridge knows how. 320 | * 321 | * First, GrowlApplicationBridge contacts the Growl delegate (if there is 322 | * one) and gets the registration dictionary from that. If no such dictionary 323 | * was obtained, GrowlApplicationBridge looks in your application's main 324 | * bundle for an auto-discoverable registration dictionary file. If that 325 | * doesn't exist either, this method returns nil. 326 | * 327 | * Second, GrowlApplicationBridge calls 328 | * +registrationDictionaryByFillingInDictionary: with whatever 329 | * dictionary was obtained. The result of that method is the result of this 330 | * method. 331 | * 332 | * GrowlApplicationBridge uses this method when you call 333 | * +setGrowlDelegate:, or when you call 334 | * +registerWithDictionary: with nil. 335 | * 336 | * This method was introduced in Growl.framework 0.7. 337 | * @result A registration dictionary. 338 | */ 339 | + (NSDictionary *) bestRegistrationDictionary; 340 | 341 | #pragma mark - 342 | 343 | /*! @method registrationDictionaryByFillingInDictionary: 344 | * @abstract Tries to fill in missing keys in a registration dictionary. 345 | * @discussion This method examines the passed-in dictionary for missing keys, 346 | * and tries to work out correct values for them. As of 0.7, it uses: 347 | * 348 | * Key Value 349 | * --- ----- 350 | * GROWL_APP_NAME CFBundleExecutableName 351 | * GROWL_APP_ICON_DATA The data of the icon of the application. 352 | * GROWL_APP_LOCATION The location of the application. 353 | * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL 354 | * 355 | * Keys are only filled in if missing; if a key is present in the dictionary, 356 | * its value will not be changed. 357 | * 358 | * This method was introduced in Growl.framework 0.7. 359 | * @param regDict The dictionary to fill in. 360 | * @result The dictionary with the keys filled in. This is an autoreleased 361 | * copy of regDict. 362 | */ 363 | + (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict; 364 | /*! @method registrationDictionaryByFillingInDictionary:restrictToKeys: 365 | * @abstract Tries to fill in missing keys in a registration dictionary. 366 | * @discussion This method examines the passed-in dictionary for missing keys, 367 | * and tries to work out correct values for them. As of 0.7, it uses: 368 | * 369 | * Key Value 370 | * --- ----- 371 | * GROWL_APP_NAME CFBundleExecutableName 372 | * GROWL_APP_ICON_DATA The data of the icon of the application. 373 | * GROWL_APP_LOCATION The location of the application. 374 | * GROWL_NOTIFICATIONS_DEFAULT GROWL_NOTIFICATIONS_ALL 375 | * 376 | * Only those keys that are listed in keys will be filled in. 377 | * Other missing keys are ignored. Also, keys are only filled in if missing; 378 | * if a key is present in the dictionary, its value will not be changed. 379 | * 380 | * This method was introduced in Growl.framework 0.7. 381 | * @param regDict The dictionary to fill in. 382 | * @param keys The keys to fill in. If nil, any missing keys are filled in. 383 | * @result The dictionary with the keys filled in. This is an autoreleased 384 | * copy of regDict. 385 | */ 386 | + (NSDictionary *) registrationDictionaryByFillingInDictionary:(NSDictionary *)regDict restrictToKeys:(NSSet *)keys; 387 | 388 | /*! @brief Tries to fill in missing keys in a notification dictionary. 389 | * @param notifDict The dictionary to fill in. 390 | * @return The dictionary with the keys filled in. This will be a separate instance from \a notifDict. 391 | * @discussion This function examines the \a notifDict for missing keys, and 392 | * tries to get them from the last known registration dictionary. As of 1.1, 393 | * the keys that it will look for are: 394 | * 395 | * \li GROWL_APP_NAME 396 | * \li GROWL_APP_ICON_DATA 397 | * 398 | * @since Growl.framework 1.1 399 | */ 400 | + (NSDictionary *) notificationDictionaryByFillingInDictionary:(NSDictionary *)regDict; 401 | 402 | + (NSDictionary *) frameworkInfoDictionary; 403 | @end 404 | 405 | //------------------------------------------------------------------------------ 406 | #pragma mark - 407 | 408 | /*! 409 | * @protocol GrowlApplicationBridgeDelegate 410 | * @abstract Required protocol for the Growl delegate. 411 | * @discussion The methods in this protocol are required and are called 412 | * automatically as needed by GrowlApplicationBridge. See 413 | * +[GrowlApplicationBridge setGrowlDelegate:]. 414 | * See also GrowlApplicationBridgeDelegate_InformalProtocol. 415 | */ 416 | 417 | @protocol GrowlApplicationBridgeDelegate 418 | 419 | // -registrationDictionaryForGrowl has moved to the informal protocol as of 0.7. 420 | 421 | @end 422 | 423 | //------------------------------------------------------------------------------ 424 | #pragma mark - 425 | 426 | /*! 427 | * @category NSObject(GrowlApplicationBridgeDelegate_InformalProtocol) 428 | * @abstract Methods which may be optionally implemented by the GrowlDelegate. 429 | * @discussion The methods in this informal protocol will only be called if implemented by the delegate. 430 | */ 431 | @interface NSObject (GrowlApplicationBridgeDelegate_InformalProtocol) 432 | 433 | /*! 434 | * @method registrationDictionaryForGrowl 435 | * @abstract Return the dictionary used to register this application with Growl. 436 | * @discussion The returned dictionary gives Growl the complete list of 437 | * notifications this application will ever send, and it also specifies which 438 | * notifications should be enabled by default. Each is specified by an array 439 | * of NSString objects. 440 | * 441 | * For most applications, these two arrays can be the same (if all sent 442 | * notifications should be displayed by default). 443 | * 444 | * The NSString objects of these arrays will correspond to the 445 | * notificationName: parameter passed in 446 | * +[GrowlApplicationBridge 447 | * notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:] calls. 448 | * 449 | * The dictionary should have the required key object pairs: 450 | * key: GROWL_NOTIFICATIONS_ALL object: NSArray of NSString objects 451 | * key: GROWL_NOTIFICATIONS_DEFAULT object: NSArray of NSString objects 452 | * 453 | * The dictionary may have the following key object pairs: 454 | * key: GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES object: NSDictionary of key: notification name object: human-readable notification name 455 | * 456 | * You do not need to implement this method if you have an auto-discoverable 457 | * plist file in your app bundle. (XXX refer to more information on that) 458 | * 459 | * @result The NSDictionary to use for registration. 460 | */ 461 | - (NSDictionary *) registrationDictionaryForGrowl; 462 | 463 | /*! 464 | * @method applicationNameForGrowl 465 | * @abstract Return the name of this application which will be used for Growl bookkeeping. 466 | * @discussion This name is used both internally and in the Growl preferences. 467 | * 468 | * This should remain stable between different versions and incarnations of 469 | * your application. 470 | * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and 471 | * "SurfWriter Lite" are not. 472 | * 473 | * You do not need to implement this method if you are providing the 474 | * application name elsewhere, meaning in an auto-discoverable plist file in 475 | * your app bundle (XXX refer to more information on that) or in the result 476 | * of -registrationDictionaryForGrowl. 477 | * 478 | * @result The name of the application using Growl. 479 | */ 480 | - (NSString *) applicationNameForGrowl; 481 | 482 | /*! 483 | * @method applicationIconForGrowl 484 | * @abstract Return the NSImage to treat as the application icon. 485 | * @discussion The delegate may optionally return an NSImage 486 | * object to use as the application icon. If this method is not implemented, 487 | * {{{-applicationIconDataForGrowl}}} is tried. If that method is not 488 | * implemented, the application's own icon is used. Neither method is 489 | * generally needed. 490 | * @result The NSImage to treat as the application icon. 491 | */ 492 | - (NSImage *) applicationIconForGrowl; 493 | 494 | /*! 495 | * @method applicationIconDataForGrowl 496 | * @abstract Return the NSData to treat as the application icon. 497 | * @discussion The delegate may optionally return an NSData 498 | * object to use as the application icon; if this is not implemented, the 499 | * application's own icon is used. This is not generally needed. 500 | * @result The NSData to treat as the application icon. 501 | * @deprecated In version 1.1, in favor of {{{-applicationIconForGrowl}}}. 502 | */ 503 | - (NSData *) applicationIconDataForGrowl; 504 | 505 | /*! 506 | * @method growlIsReady 507 | * @abstract Informs the delegate that Growl has launched. 508 | * @discussion Informs the delegate that Growl (specifically, the 509 | * GrowlHelperApp) was launched successfully. The application can take actions 510 | * with the knowledge that Growl is installed and functional. 511 | */ 512 | - (void) growlIsReady; 513 | 514 | /*! 515 | * @method growlNotificationWasClicked: 516 | * @abstract Informs the delegate that a Growl notification was clicked. 517 | * @discussion Informs the delegate that a Growl notification was clicked. It 518 | * is only sent for notifications sent with a non-nil 519 | * clickContext, so if you want to receive a message when a notification is 520 | * clicked, clickContext must not be nil when calling 521 | * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. 522 | * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. 523 | */ 524 | - (void) growlNotificationWasClicked:(id)clickContext; 525 | 526 | /*! 527 | * @method growlNotificationTimedOut: 528 | * @abstract Informs the delegate that a Growl notification timed out. 529 | * @discussion Informs the delegate that a Growl notification timed out. It 530 | * is only sent for notifications sent with a non-nil 531 | * clickContext, so if you want to receive a message when a notification is 532 | * clicked, clickContext must not be nil when calling 533 | * +[GrowlApplicationBridge notifyWithTitle: description:notificationName:iconData:priority:isSticky:clickContext:]. 534 | * @param clickContext The clickContext passed when displaying the notification originally via +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:]. 535 | */ 536 | - (void) growlNotificationTimedOut:(id)clickContext; 537 | 538 | 539 | /*! 540 | * @method hasNetworkClientEntitlement 541 | * @abstract Used only in sandboxed situations since we don't know whether the app has com.apple.security.network.client entitlement 542 | * @discussion GrowlDelegate calls to find out if we have the com.apple.security.network.client entitlement, 543 | * since we can't find this out without hitting the sandbox. We only call it if we detect that the application is sandboxed. 544 | */ 545 | - (BOOL) hasNetworkClientEntitlement; 546 | 547 | @end 548 | 549 | #pragma mark - 550 | 551 | #endif /* __GrowlApplicationBridge_h__ */ 552 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/A/Headers/GrowlDefines.h: -------------------------------------------------------------------------------- 1 | // 2 | // GrowlDefines.h 3 | // 4 | 5 | #ifndef _GROWLDEFINES_H 6 | #define _GROWLDEFINES_H 7 | 8 | #ifdef __OBJC__ 9 | #define XSTR(x) (@x) 10 | #else 11 | #define XSTR CFSTR 12 | #endif 13 | 14 | /*! @header GrowlDefines.h 15 | * @abstract Defines all the notification keys. 16 | * @discussion Defines all the keys used for registration with Growl and for 17 | * Growl notifications. 18 | * 19 | * Most applications should use the functions or methods of Growl.framework 20 | * instead of posting notifications such as those described here. 21 | * @updated 2004-01-25 22 | */ 23 | 24 | // UserInfo Keys for Registration 25 | #pragma mark UserInfo Keys for Registration 26 | 27 | /*! @group Registration userInfo keys */ 28 | /* @abstract Keys for the userInfo dictionary of a GROWL_APP_REGISTRATION distributed notification. 29 | * @discussion The values of these keys describe the application and the 30 | * notifications it may post. 31 | * 32 | * Your application must register with Growl before it can post Growl 33 | * notifications (and have them not be ignored). However, as of Growl 0.6, 34 | * posting GROWL_APP_REGISTRATION notifications directly is no longer the 35 | * preferred way to register your application. Your application should instead 36 | * use Growl.framework's delegate system. 37 | * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for 38 | * more information. 39 | */ 40 | 41 | /*! @defined GROWL_APP_NAME 42 | * @abstract The name of your application. 43 | * @discussion The name of your application. This should remain stable between 44 | * different versions and incarnations of your application. 45 | * For example, "SurfWriter" is a good app name, whereas "SurfWriter 2.0" and 46 | * "SurfWriter Lite" are not. 47 | */ 48 | #define GROWL_APP_NAME XSTR("ApplicationName") 49 | /*! @defined GROWL_APP_ID 50 | * @abstract The bundle identifier of your application. 51 | * @discussion The bundle identifier of your application. This key should 52 | * be unique for your application while there may be several applications 53 | * with the same GROWL_APP_NAME. 54 | * This key is optional. 55 | */ 56 | #define GROWL_APP_ID XSTR("ApplicationId") 57 | /*! @defined GROWL_APP_ICON_DATA 58 | * @abstract The image data for your application's icon. 59 | * @discussion Image data representing your application's icon. This may be 60 | * superimposed on a notification icon as a badge, used as the notification 61 | * icon when a notification-specific icon is not supplied, or ignored 62 | * altogether, depending on the display. Must be in a format supported by 63 | * NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. 64 | * 65 | * Optional. Not supported by all display plugins. 66 | */ 67 | #define GROWL_APP_ICON_DATA XSTR("ApplicationIcon") 68 | /*! @defined GROWL_NOTIFICATIONS_DEFAULT 69 | * @abstract The array of notifications to turn on by default. 70 | * @discussion These are the names of the notifications that should be enabled 71 | * by default when your application registers for the first time. If your 72 | * application reregisters, Growl will look here for any new notification 73 | * names found in GROWL_NOTIFICATIONS_ALL, but ignore any others. 74 | */ 75 | #define GROWL_NOTIFICATIONS_DEFAULT XSTR("DefaultNotifications") 76 | /*! @defined GROWL_NOTIFICATIONS_ALL 77 | * @abstract The array of all notifications your application can send. 78 | * @discussion These are the names of all of the notifications that your 79 | * application may post. See GROWL_NOTIFICATION_NAME for a discussion of good 80 | * notification names. 81 | */ 82 | #define GROWL_NOTIFICATIONS_ALL XSTR("AllNotifications") 83 | /*! @defined GROWL_NOTIFICATIONS_HUMAN_READABLE_DESCRIPTIONS 84 | * @abstract A dictionary of human-readable names for your notifications. 85 | * @discussion By default, the Growl UI will display notifications by the names given in GROWL_NOTIFICATIONS_ALL 86 | * which correspond to the GROWL_NOTIFICATION_NAME. This dictionary specifies the human-readable name to display. 87 | * The keys of the dictionary are GROWL_NOTIFICATION_NAME strings; the objects are the human-readable versions. 88 | * For any GROWL_NOTIFICATION_NAME not specific in this dictionary, the GROWL_NOTIFICATION_NAME will be displayed. 89 | * 90 | * This key is optional. 91 | */ 92 | #define GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES XSTR("HumanReadableNames") 93 | /*! @defined GROWL_NOTIFICATIONS_DESCRIPTIONS 94 | * @abstract A dictionary of descriptions of _when_ each notification occurs 95 | * @discussion This is an NSDictionary whose keys are GROWL_NOTIFICATION_NAME strings and whose objects are 96 | * descriptions of _when_ each notification occurs, such as "You received a new mail message" or 97 | * "A file finished downloading". 98 | * 99 | * This key is optional. 100 | */ 101 | #define GROWL_NOTIFICATIONS_DESCRIPTIONS XSTR("NotificationDescriptions") 102 | 103 | /*! @defined GROWL_TICKET_VERSION 104 | * @abstract The version of your registration ticket. 105 | * @discussion Include this key in a ticket plist file that you put in your 106 | * application bundle for auto-discovery. The current ticket version is 1. 107 | */ 108 | #define GROWL_TICKET_VERSION XSTR("TicketVersion") 109 | // UserInfo Keys for Notifications 110 | #pragma mark UserInfo Keys for Notifications 111 | 112 | /*! @group Notification userInfo keys */ 113 | /* @abstract Keys for the userInfo dictionary of a GROWL_NOTIFICATION distributed notification. 114 | * @discussion The values of these keys describe the content of a Growl 115 | * notification. 116 | * 117 | * Not all of these keys are supported by all displays. Only the name, title, 118 | * and description of a notification are universal. Most of the built-in 119 | * displays do support all of these keys, and most other visual displays 120 | * probably will also. But, as of 0.6, the Log, MailMe, and Speech displays 121 | * support only textual data. 122 | */ 123 | 124 | /*! @defined GROWL_NOTIFICATION_NAME 125 | * @abstract The name of the notification. 126 | * @discussion The name of the notification. Note that if you do not define 127 | * GROWL_NOTIFICATIONS_HUMAN_READABLE_NAMES when registering your ticket originally this name 128 | * will the one displayed within the Growl preference pane and should be human-readable. 129 | */ 130 | #define GROWL_NOTIFICATION_NAME XSTR("NotificationName") 131 | /*! @defined GROWL_NOTIFICATION_TITLE 132 | * @abstract The title to display in the notification. 133 | * @discussion The title of the notification. Should be very brief. 134 | * The title usually says what happened, e.g. "Download complete". 135 | */ 136 | #define GROWL_NOTIFICATION_TITLE XSTR("NotificationTitle") 137 | /*! @defined GROWL_NOTIFICATION_DESCRIPTION 138 | * @abstract The description to display in the notification. 139 | * @discussion The description should be longer and more verbose than the title. 140 | * The description usually tells the subject of the action, 141 | * e.g. "Growl-0.6.dmg downloaded in 5.02 minutes". 142 | */ 143 | #define GROWL_NOTIFICATION_DESCRIPTION XSTR("NotificationDescription") 144 | /*! @defined GROWL_NOTIFICATION_ICON 145 | * @discussion Image data for the notification icon. Image data must be in a format 146 | * supported by NSImage, such as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. 147 | * 148 | * Optional. Not supported by all display plugins. 149 | */ 150 | #define GROWL_NOTIFICATION_ICON_DATA XSTR("NotificationIcon") 151 | /*! @defined GROWL_NOTIFICATION_APP_ICON 152 | * @discussion Image data for the application icon, in case GROWL_APP_ICON does 153 | * not apply for some reason. Image data be in a format supported by NSImage, such 154 | * as TIFF, PNG, GIF, JPEG, BMP, PICT, or PDF. 155 | * 156 | * Optional. Not supported by all display plugins. 157 | */ 158 | #define GROWL_NOTIFICATION_APP_ICON_DATA XSTR("NotificationAppIcon") 159 | /*! @defined GROWL_NOTIFICATION_PRIORITY 160 | * @discussion The priority of the notification as an integer number from 161 | * -2 to +2 (+2 being highest). 162 | * 163 | * Optional. Not supported by all display plugins. 164 | */ 165 | #define GROWL_NOTIFICATION_PRIORITY XSTR("NotificationPriority") 166 | /*! @defined GROWL_NOTIFICATION_STICKY 167 | * @discussion A Boolean number controlling whether the notification is sticky. 168 | * 169 | * Optional. Not supported by all display plugins. 170 | */ 171 | #define GROWL_NOTIFICATION_STICKY XSTR("NotificationSticky") 172 | /*! @defined GROWL_NOTIFICATION_CLICK_CONTEXT 173 | * @abstract Identifies which notification was clicked. 174 | * @discussion An identifier for the notification for clicking purposes. 175 | * 176 | * This will be passed back to the application when the notification is 177 | * clicked. It must be plist-encodable (a data, dictionary, array, number, or 178 | * string object), and it should be unique for each notification you post. 179 | * A good click context would be a UUID string returned by NSProcessInfo or 180 | * CFUUID. 181 | * 182 | * Optional. Not supported by all display plugins. 183 | */ 184 | #define GROWL_NOTIFICATION_CLICK_CONTEXT XSTR("NotificationClickContext") 185 | 186 | /*! @defined GROWL_NOTIFICATION_IDENTIFIER 187 | * @abstract An identifier for the notification for coalescing purposes. 188 | * Notifications with the same identifier fall into the same class; only 189 | * the last notification of a class is displayed on the screen. If a 190 | * notification of the same class is currently being displayed, it is 191 | * replaced by this notification. 192 | * 193 | * Optional. Not supported by all display plugins. 194 | */ 195 | #define GROWL_NOTIFICATION_IDENTIFIER XSTR("GrowlNotificationIdentifier") 196 | 197 | /*! @defined GROWL_APP_PID 198 | * @abstract The process identifier of the process which sends this 199 | * notification. If this field is set, the application will only receive 200 | * clicked and timed out notifications which originate from this process. 201 | * 202 | * Optional. 203 | */ 204 | #define GROWL_APP_PID XSTR("ApplicationPID") 205 | 206 | /*! @defined GROWL_NOTIFICATION_PROGRESS 207 | * @abstract If this key is set, it should contain a double value wrapped 208 | * in a NSNumber which describes some sort of progress (from 0.0 to 100.0). 209 | * If this is key is not set, no progress bar is shown. 210 | * 211 | * Optional. Not supported by all display plugins. 212 | */ 213 | #define GROWL_NOTIFICATION_PROGRESS XSTR("NotificationProgress") 214 | 215 | // Notifications 216 | #pragma mark Notifications 217 | 218 | /*! @group Notification names */ 219 | /* @abstract Names of distributed notifications used by Growl. 220 | * @discussion These are notifications used by applications (directly or 221 | * indirectly) to interact with Growl, and by Growl for interaction between 222 | * its components. 223 | * 224 | * Most of these should no longer be used in Growl 0.6 and later, in favor of 225 | * Growl.framework's GrowlApplicationBridge APIs. 226 | */ 227 | 228 | /*! @defined GROWL_APP_REGISTRATION 229 | * @abstract The distributed notification for registering your application. 230 | * @discussion This is the name of the distributed notification that can be 231 | * used to register applications with Growl. 232 | * 233 | * The userInfo dictionary for this notification can contain these keys: 234 | *
    235 | *
  • GROWL_APP_NAME
  • 236 | *
  • GROWL_APP_ICON_DATA
  • 237 | *
  • GROWL_NOTIFICATIONS_ALL
  • 238 | *
  • GROWL_NOTIFICATIONS_DEFAULT
  • 239 | *
240 | * 241 | * No longer recommended as of Growl 0.6. An alternate method of registering 242 | * is to use Growl.framework's delegate system. 243 | * See +[GrowlApplicationBridge setGrowlDelegate:] or Growl_SetDelegate for 244 | * more information. 245 | */ 246 | #define GROWL_APP_REGISTRATION XSTR("GrowlApplicationRegistrationNotification") 247 | /*! @defined GROWL_APP_REGISTRATION_CONF 248 | * @abstract The distributed notification for confirming registration. 249 | * @discussion The name of the distributed notification sent to confirm the 250 | * registration. Used by the Growl preference pane. Your application probably 251 | * does not need to use this notification. 252 | */ 253 | #define GROWL_APP_REGISTRATION_CONF XSTR("GrowlApplicationRegistrationConfirmationNotification") 254 | /*! @defined GROWL_NOTIFICATION 255 | * @abstract The distributed notification for Growl notifications. 256 | * @discussion This is what it all comes down to. This is the name of the 257 | * distributed notification that your application posts to actually send a 258 | * Growl notification. 259 | * 260 | * The userInfo dictionary for this notification can contain these keys: 261 | *
    262 | *
  • GROWL_NOTIFICATION_NAME (required)
  • 263 | *
  • GROWL_NOTIFICATION_TITLE (required)
  • 264 | *
  • GROWL_NOTIFICATION_DESCRIPTION (required)
  • 265 | *
  • GROWL_NOTIFICATION_ICON
  • 266 | *
  • GROWL_NOTIFICATION_APP_ICON
  • 267 | *
  • GROWL_NOTIFICATION_PRIORITY
  • 268 | *
  • GROWL_NOTIFICATION_STICKY
  • 269 | *
  • GROWL_NOTIFICATION_CLICK_CONTEXT
  • 270 | *
  • GROWL_APP_NAME (required)
  • 271 | *
272 | * 273 | * No longer recommended as of Growl 0.6. Three alternate methods of posting 274 | * notifications are +[GrowlApplicationBridge notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:], 275 | * Growl_NotifyWithTitleDescriptionNameIconPriorityStickyClickContext, and 276 | * Growl_PostNotification. 277 | */ 278 | #define GROWL_NOTIFICATION XSTR("GrowlNotification") 279 | /*! @defined GROWL_PING 280 | * @abstract A distributed notification to check whether Growl is running. 281 | * @discussion This is used by the Growl preference pane. If it receives a 282 | * GROWL_PONG, the preference pane takes this to mean that Growl is running. 283 | */ 284 | #define GROWL_PING XSTR("Honey, Mind Taking Out The Trash") 285 | /*! @defined GROWL_PONG 286 | * @abstract The distributed notification sent in reply to GROWL_PING. 287 | * @discussion GrowlHelperApp posts this in reply to GROWL_PING. 288 | */ 289 | #define GROWL_PONG XSTR("What Do You Want From Me, Woman") 290 | /*! @defined GROWL_IS_READY 291 | * @abstract The distributed notification sent when Growl starts up. 292 | * @discussion GrowlHelperApp posts this when it has begin listening on all of 293 | * its sources for new notifications. GrowlApplicationBridge (in 294 | * Growl.framework), upon receiving this notification, reregisters using the 295 | * registration dictionary supplied by its delegate. 296 | */ 297 | #define GROWL_IS_READY XSTR("Lend Me Some Sugar; I Am Your Neighbor!") 298 | 299 | 300 | /*! @defined GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX 301 | * @abstract Part of the name of the distributed notification sent when a supported notification is clicked. 302 | * @discussion When a Growl notification with a click context is clicked on by 303 | * the user, Growl posts a distributed notification whose name is in the format: 304 | * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX] 305 | * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. 306 | */ 307 | #define GROWL_DISTRIBUTED_NOTIFICATION_CLICKED_SUFFIX XSTR("GrowlClicked!") 308 | 309 | /*! @defined GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX 310 | * @abstract Part of the name of the distributed notification sent when a supported notification times out without being clicked. 311 | * @discussion When a Growl notification with a click context times out, Growl posts a distributed notification 312 | * whose name is in the format: 313 | * [NSString stringWithFormat:@"%@-%d-%@", appName, pid, GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX] 314 | * The GrowlApplicationBridge responds to this notification by calling a callback in its delegate. 315 | * NOTE: The user may have actually clicked the 'close' button; this triggers an *immediate* time-out of the notification. 316 | */ 317 | #define GROWL_DISTRIBUTED_NOTIFICATION_TIMED_OUT_SUFFIX XSTR("GrowlTimedOut!") 318 | 319 | /*! @group Other symbols */ 320 | /* Symbols which don't fit into any of the other categories. */ 321 | 322 | /*! @defined GROWL_KEY_CLICKED_CONTEXT 323 | * @abstract Used internally as the key for the clickedContext passed over DNC. 324 | * @discussion This key is used in GROWL_NOTIFICATION_CLICKED, and contains the 325 | * click context that was supplied in the original notification. 326 | */ 327 | #define GROWL_KEY_CLICKED_CONTEXT XSTR("ClickedContext") 328 | /*! @defined GROWL_REG_DICT_EXTENSION 329 | * @abstract The filename extension for registration dictionaries. 330 | * @discussion The GrowlApplicationBridge in Growl.framework registers with 331 | * Growl by creating a file with the extension of .(GROWL_REG_DICT_EXTENSION) 332 | * and opening it in the GrowlHelperApp. This happens whether or not Growl is 333 | * running; if it was stopped, it quits immediately without listening for 334 | * notifications. 335 | */ 336 | #define GROWL_REG_DICT_EXTENSION XSTR("growlRegDict") 337 | 338 | 339 | #define GROWL_POSITION_PREFERENCE_KEY @"GrowlSelectedPosition" 340 | 341 | #endif //ndef _GROWLDEFINES_H 342 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 11C74 7 | CFBundleDevelopmentRegion 8 | English 9 | CFBundleExecutable 10 | Growl 11 | CFBundleIdentifier 12 | com.growl.growlframework 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.3.1 19 | CFBundleSignature 20 | GRRR 21 | CFBundleVersion 22 | 1.3.1 23 | DTCompiler 24 | com.apple.compilers.llvm.clang.1_0 25 | DTPlatformBuild 26 | 4D199 27 | DTPlatformVersion 28 | GM 29 | DTSDKBuild 30 | 11C63 31 | DTSDKName 32 | macosx10.7 33 | DTXcode 34 | 0420 35 | DTXcodeBuild 36 | 4D199 37 | NSPrincipalClass 38 | GrowlApplicationBridge 39 | 40 | 41 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/A/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | Resources/Info.plist 8 | 9 | SwzGt9RQsuVafBBrfBalB75dCwU= 10 | 11 | 12 | rules 13 | 14 | ^Resources/ 15 | 16 | ^Resources/.*\.lproj/ 17 | 18 | optional 19 | 20 | weight 21 | 1000 22 | 23 | ^Resources/.*\.lproj/locversion.plist$ 24 | 25 | omit 26 | 27 | weight 28 | 1100 29 | 30 | ^version.plist$ 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Growl.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Headers: -------------------------------------------------------------------------------- 1 | Versions/Current/Headers -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Resources: -------------------------------------------------------------------------------- 1 | Versions/Current/Resources -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Sparkle: -------------------------------------------------------------------------------- 1 | Versions/Current/Sparkle -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcast.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcast.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCAST_H 10 | #define SUAPPCAST_H 11 | 12 | @class SUAppcastItem; 13 | @interface SUAppcast : NSObject 14 | { 15 | @private 16 | NSArray *items; 17 | NSString *userAgentString; 18 | id delegate; 19 | NSString *downloadFilename; 20 | NSURLDownload *download; 21 | } 22 | 23 | - (void)fetchAppcastFromURL:(NSURL *)url; 24 | - (void)setDelegate:delegate; 25 | - (void)setUserAgentString:(NSString *)userAgentString; 26 | 27 | - (NSArray *)items; 28 | 29 | @end 30 | 31 | @interface NSObject (SUAppcastDelegate) 32 | - (void)appcastDidFinishLoading:(SUAppcast *)appcast; 33 | - (void)appcast:(SUAppcast *)appcast failedToLoadWithError:(NSError *)error; 34 | @end 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUAppcastItem.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUAppcastItem.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/12/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUAPPCASTITEM_H 10 | #define SUAPPCASTITEM_H 11 | 12 | @interface SUAppcastItem : NSObject 13 | { 14 | @private 15 | NSString *title; 16 | NSDate *date; 17 | NSString *itemDescription; 18 | 19 | NSURL *releaseNotesURL; 20 | 21 | NSString *DSASignature; 22 | NSString *minimumSystemVersion; 23 | 24 | NSURL *fileURL; 25 | NSString *versionString; 26 | NSString *displayVersionString; 27 | 28 | NSDictionary *deltaUpdates; 29 | 30 | NSDictionary *propertiesDictionary; 31 | 32 | NSURL *infoURL; // UK 2007-08-31 33 | } 34 | 35 | // Initializes with data from a dictionary provided by the RSS class. 36 | - initWithDictionary:(NSDictionary *)dict; 37 | - initWithDictionary:(NSDictionary *)dict failureReason:(NSString**)error; 38 | 39 | - (NSString *)title; 40 | - (NSString *)versionString; 41 | - (NSString *)displayVersionString; 42 | - (NSDate *)date; 43 | - (NSString *)itemDescription; 44 | - (NSURL *)releaseNotesURL; 45 | - (NSURL *)fileURL; 46 | - (NSString *)DSASignature; 47 | - (NSString *)minimumSystemVersion; 48 | - (NSDictionary *)deltaUpdates; 49 | - (BOOL)isDeltaUpdate; 50 | - (BOOL)isCriticalUpdate; 51 | 52 | // Returns the dictionary provided in initWithDictionary; this might be useful later for extensions. 53 | - (NSDictionary *)propertiesDictionary; 54 | 55 | - (NSURL *)infoURL; // UK 2007-08-31 56 | 57 | @end 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUUpdater.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUUpdater.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 1/4/06. 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUUPDATER_H 10 | #define SUUPDATER_H 11 | 12 | #import "SUVersionComparisonProtocol.h" 13 | #import "SUVersionDisplayProtocol.h" 14 | 15 | @class SUUpdateDriver, SUAppcastItem, SUHost, SUAppcast; 16 | 17 | @interface SUUpdater : NSObject 18 | { 19 | @private 20 | NSTimer *checkTimer; 21 | SUUpdateDriver *driver; 22 | 23 | NSString *customUserAgentString; 24 | SUHost *host; 25 | IBOutlet id delegate; 26 | } 27 | 28 | + (SUUpdater *)sharedUpdater; 29 | + (SUUpdater *)updaterForBundle:(NSBundle *)bundle; 30 | - initForBundle:(NSBundle *)bundle; 31 | 32 | - (NSBundle *)hostBundle; 33 | 34 | - (void)setDelegate:(id)delegate; 35 | - delegate; 36 | 37 | - (void)setAutomaticallyChecksForUpdates:(BOOL)automaticallyChecks; 38 | - (BOOL)automaticallyChecksForUpdates; 39 | 40 | - (void)setUpdateCheckInterval:(NSTimeInterval)interval; 41 | - (NSTimeInterval)updateCheckInterval; 42 | 43 | - (void)setFeedURL:(NSURL *)feedURL; 44 | - (NSURL *)feedURL; // *** MUST BE CALLED ON MAIN THREAD *** 45 | 46 | - (void)setUserAgentString:(NSString *)userAgent; 47 | - (NSString *)userAgentString; 48 | 49 | - (void)setSendsSystemProfile:(BOOL)sendsSystemProfile; 50 | - (BOOL)sendsSystemProfile; 51 | 52 | - (void)setAutomaticallyDownloadsUpdates:(BOOL)automaticallyDownloadsUpdates; 53 | - (BOOL)automaticallyDownloadsUpdates; 54 | 55 | // This IBAction is meant for a main menu item. Hook up any menu item to this action, 56 | // and Sparkle will check for updates and report back its findings verbosely. 57 | - (IBAction)checkForUpdates:(id)sender; 58 | 59 | // This kicks off an update meant to be programmatically initiated. That is, it will display no UI unless it actually finds an update, 60 | // in which case it proceeds as usual. If the fully automated updating is turned on, however, this will invoke that behavior, and if an 61 | // update is found, it will be downloaded and prepped for installation. 62 | - (void)checkForUpdatesInBackground; 63 | 64 | // Date of last update check. Returns nil if no check has been performed. 65 | - (NSDate*)lastUpdateCheckDate; 66 | 67 | // This begins a "probing" check for updates which will not actually offer to update to that version. The delegate methods, though, 68 | // (up to updater:didFindValidUpdate: and updaterDidNotFindUpdate:), are called, so you can use that information in your UI. 69 | - (void)checkForUpdateInformation; 70 | 71 | // Call this to appropriately schedule or cancel the update checking timer according to the preferences for time interval and automatic checks. This call does not change the date of the next check, but only the internal NSTimer. 72 | - (void)resetUpdateCycle; 73 | 74 | - (BOOL)updateInProgress; 75 | 76 | @end 77 | 78 | 79 | // ----------------------------------------------------------------------------- 80 | // SUUpdater Delegate: 81 | // ----------------------------------------------------------------------------- 82 | 83 | @interface NSObject (SUUpdaterDelegateInformalProtocol) 84 | 85 | // Use this to keep Sparkle from popping up e.g. while your setup assistant is showing: 86 | - (BOOL)updaterMayCheckForUpdates:(SUUpdater *)bundle; 87 | 88 | // This method allows you to add extra parameters to the appcast URL, potentially based on whether or not Sparkle will also be sending along the system profile. This method should return an array of dictionaries with keys: "key", "value", "displayKey", "displayValue", the latter two being specifically for display to the user. 89 | - (NSArray *)feedParametersForUpdater:(SUUpdater *)updater sendingSystemProfile:(BOOL)sendingProfile; 90 | 91 | // Override this to dynamically specify the entire URL. 92 | - (NSString*)feedURLStringForUpdater:(SUUpdater*)updater; 93 | 94 | // Use this to override the default behavior for Sparkle prompting the user about automatic update checks. 95 | - (BOOL)updaterShouldPromptForPermissionToCheckForUpdates:(SUUpdater *)bundle; 96 | 97 | // Implement this if you want to do some special handling with the appcast once it finishes loading. 98 | - (void)updater:(SUUpdater *)updater didFinishLoadingAppcast:(SUAppcast *)appcast; 99 | 100 | // If you're using special logic or extensions in your appcast, implement this to use your own logic for finding 101 | // a valid update, if any, in the given appcast. 102 | - (SUAppcastItem *)bestValidUpdateInAppcast:(SUAppcast *)appcast forUpdater:(SUUpdater *)bundle; 103 | 104 | // Sent when a valid update is found by the update driver. 105 | - (void)updater:(SUUpdater *)updater didFindValidUpdate:(SUAppcastItem *)update; 106 | 107 | // Sent when a valid update is not found. 108 | - (void)updaterDidNotFindUpdate:(SUUpdater *)update; 109 | 110 | // Sent immediately before installing the specified update. 111 | - (void)updater:(SUUpdater *)updater willInstallUpdate:(SUAppcastItem *)update; 112 | 113 | // Return YES to delay the relaunch until you do some processing; invoke the given NSInvocation to continue. 114 | // This is not called if the user didn't relaunch on the previous update, in that case it will immediately 115 | // restart. 116 | - (BOOL)updater:(SUUpdater *)updater shouldPostponeRelaunchForUpdate:(SUAppcastItem *)update untilInvoking:(NSInvocation *)invocation; 117 | 118 | // Some apps *can not* be installed in certain circumstances. They can use this method 119 | // to prevent an install "hard": 120 | - (BOOL)updaterShouldInstallApplication:(SUUpdater *)updater; 121 | 122 | - (BOOL)updaterShouldPromptInstall:(SUUpdater *)updater; 123 | 124 | // Some apps *can not* be relaunched in certain circumstances. They can use this method 125 | // to prevent a relaunch "hard": 126 | - (BOOL)updaterShouldRelaunchApplication:(SUUpdater *)updater; 127 | 128 | // Called immediately before relaunching. 129 | - (void)updaterWillRelaunchApplication:(SUUpdater *)updater; 130 | 131 | // Called if updater was aborted. 132 | - (void)updater:(SUUpdater *)updater didAbortWithError:(NSError *)error; 133 | 134 | // This method allows you to provide a custom version comparator. 135 | // If you don't implement this method or return nil, the standard version comparator will be used. 136 | - (id )versionComparatorForUpdater:(SUUpdater *)updater; 137 | 138 | // This method allows you to provide a custom version comparator. 139 | // If you don't implement this method or return nil, the standard version displayer will be used. 140 | - (id )versionDisplayerForUpdater:(SUUpdater *)updater; 141 | 142 | // Returns the path which is used to relaunch the client after the update is installed. By default, the path of the host bundle. 143 | - (NSString *)pathToRelaunchForUpdater:(SUUpdater *)updater; 144 | 145 | // Called before and after, respectively, an updater shows a modal alert window, to give the host 146 | // the opportunity to hide attached windows etc. that may get in the way: 147 | -(void) updaterWillShowModalAlert:(SUUpdater *)updater; 148 | -(void) updaterDidShowModalAlert:(SUUpdater *)updater; 149 | 150 | @end 151 | 152 | 153 | // ----------------------------------------------------------------------------- 154 | // Constants: 155 | // ----------------------------------------------------------------------------- 156 | 157 | // Define some minimum intervals to avoid DOS-like checking attacks. These are in seconds. 158 | #if defined(DEBUG) && DEBUG && 0 159 | #define SU_MIN_CHECK_INTERVAL 60 160 | #else 161 | #define SU_MIN_CHECK_INTERVAL 60*60 162 | #endif 163 | 164 | #if defined(DEBUG) && DEBUG && 0 165 | #define SU_DEFAULT_CHECK_INTERVAL 60 166 | #else 167 | #define SU_DEFAULT_CHECK_INTERVAL 60*60*24 168 | #endif 169 | 170 | #endif 171 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionComparisonProtocol.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 12/21/07. 6 | // Copyright 2007 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SUVERSIONCOMPARISONPROTOCOL_H 10 | #define SUVERSIONCOMPARISONPROTOCOL_H 11 | 12 | #import 13 | 14 | /*! 15 | @protocol 16 | @abstract Implement this protocol to provide version comparison facilities for Sparkle. 17 | */ 18 | @protocol SUVersionComparison 19 | 20 | /*! 21 | @method 22 | @abstract An abstract method to compare two version strings. 23 | @discussion Should return NSOrderedAscending if b > a, NSOrderedDescending if b < a, and NSOrderedSame if they are equivalent. 24 | */ 25 | - (NSComparisonResult)compareVersion:(NSString *)versionA toVersion:(NSString *)versionB; // *** MAY BE CALLED ON NON-MAIN THREAD! 26 | 27 | @end 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/SUVersionDisplayProtocol.h: -------------------------------------------------------------------------------- 1 | // 2 | // SUVersionDisplayProtocol.h 3 | // EyeTV 4 | // 5 | // Created by Uli Kusterer on 08.12.09. 6 | // Copyright 2009 Elgato Systems GmbH. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | /*! 13 | @protocol 14 | @abstract Implement this protocol to apply special formatting to the two 15 | version numbers. 16 | */ 17 | @protocol SUVersionDisplay 18 | 19 | /*! 20 | @method 21 | @abstract An abstract method to format two version strings. 22 | @discussion You get both so you can display important distinguishing 23 | information, but leave out unnecessary/confusing parts. 24 | */ 25 | -(void) formatVersion: (NSString**)inOutVersionA andVersion: (NSString**)inOutVersionB; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Headers/Sparkle.h: -------------------------------------------------------------------------------- 1 | // 2 | // Sparkle.h 3 | // Sparkle 4 | // 5 | // Created by Andy Matuschak on 3/16/06. (Modified by CDHW on 23/12/07) 6 | // Copyright 2006 Andy Matuschak. All rights reserved. 7 | // 8 | 9 | #ifndef SPARKLE_H 10 | #define SPARKLE_H 11 | 12 | // This list should include the shared headers. It doesn't matter if some of them aren't shared (unless 13 | // there are name-space collisions) so we can list all of them to start with: 14 | 15 | #import 16 | 17 | #import 18 | #import 19 | #import 20 | 21 | #endif 22 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 11C74 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | Sparkle 11 | CFBundleIdentifier 12 | org.andymatuschak.Sparkle 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Sparkle 17 | CFBundlePackageType 18 | FMWK 19 | CFBundleShortVersionString 20 | 1.5 Beta (git) 21 | CFBundleSignature 22 | ???? 23 | CFBundleVersion 24 | 613b759 25 | DTCompiler 26 | com.apple.compilers.llvm.clang.1_0 27 | DTPlatformBuild 28 | 4D199 29 | DTPlatformVersion 30 | GM 31 | DTSDKBuild 32 | 10K549 33 | DTSDKName 34 | macosx10.6 35 | DTXcode 36 | 0420 37 | DTXcodeBuild 38 | 4D199 39 | 40 | 41 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ADP2,1 6 | Developer Transition Kit 7 | iMac1,1 8 | iMac G3 (Rev A-D) 9 | iMac4,1 10 | iMac (Core Duo) 11 | iMac4,2 12 | iMac for Education (17-inch, Core Duo) 13 | iMac5,1 14 | iMac (Core 2 Duo, 17 or 20 inch, SuperDrive) 15 | iMac5,2 16 | iMac (Core 2 Duo, 17 inch, Combo Drive) 17 | iMac6,1 18 | iMac (Core 2 Duo, 24 inch, SuperDrive) 19 | iMac8,1 20 | iMac (April 2008) 21 | MacBook1,1 22 | MacBook (Core Duo) 23 | MacBook2,1 24 | MacBook (Core 2 Duo) 25 | MacBook4,1 26 | MacBook (Core 2 Duo Feb 2008) 27 | MacBookAir1,1 28 | MacBook Air (January 2008) 29 | MacBookAir2,1 30 | MacBook Air (June 2009) 31 | MacBookAir3,1 32 | MacBook Air (October 2010) 33 | MacBookPro1,1 34 | MacBook Pro Core Duo (15-inch) 35 | MacBookPro1,2 36 | MacBook Pro Core Duo (17-inch) 37 | MacBookPro2,1 38 | MacBook Pro Core 2 Duo (17-inch) 39 | MacBookPro2,2 40 | MacBook Pro Core 2 Duo (15-inch) 41 | MacBookPro3,1 42 | MacBook Pro Core 2 Duo (15-inch LED, Core 2 Duo) 43 | MacBookPro3,2 44 | MacBook Pro Core 2 Duo (17-inch HD, Core 2 Duo) 45 | MacBookPro4,1 46 | MacBook Pro (Core 2 Duo Feb 2008) 47 | Macmini1,1 48 | Mac Mini (Core Solo/Duo) 49 | MacPro1,1 50 | Mac Pro (four-core) 51 | MacPro2,1 52 | Mac Pro (eight-core) 53 | MacPro3,1 54 | Mac Pro (January 2008 4- or 8- core "Harpertown") 55 | MacPro4,1 56 | Mac Pro (March 2009) 57 | MacPro5,1 58 | Mac Pro (August 2010) 59 | PowerBook1,1 60 | PowerBook G3 61 | PowerBook2,1 62 | iBook G3 63 | PowerBook2,2 64 | iBook G3 (FireWire) 65 | PowerBook2,3 66 | iBook G3 67 | PowerBook2,4 68 | iBook G3 69 | PowerBook3,1 70 | PowerBook G3 (FireWire) 71 | PowerBook3,2 72 | PowerBook G4 73 | PowerBook3,3 74 | PowerBook G4 (Gigabit Ethernet) 75 | PowerBook3,4 76 | PowerBook G4 (DVI) 77 | PowerBook3,5 78 | PowerBook G4 (1GHz / 867MHz) 79 | PowerBook4,1 80 | iBook G3 (Dual USB, Late 2001) 81 | PowerBook4,2 82 | iBook G3 (16MB VRAM) 83 | PowerBook4,3 84 | iBook G3 Opaque 16MB VRAM, 32MB VRAM, Early 2003) 85 | PowerBook5,1 86 | PowerBook G4 (17 inch) 87 | PowerBook5,2 88 | PowerBook G4 (15 inch FW 800) 89 | PowerBook5,3 90 | PowerBook G4 (17-inch 1.33GHz) 91 | PowerBook5,4 92 | PowerBook G4 (15 inch 1.5/1.33GHz) 93 | PowerBook5,5 94 | PowerBook G4 (17-inch 1.5GHz) 95 | PowerBook5,6 96 | PowerBook G4 (15 inch 1.67GHz/1.5GHz) 97 | PowerBook5,7 98 | PowerBook G4 (17-inch 1.67GHz) 99 | PowerBook5,8 100 | PowerBook G4 (Double layer SD, 15 inch) 101 | PowerBook5,9 102 | PowerBook G4 (Double layer SD, 17 inch) 103 | PowerBook6,1 104 | PowerBook G4 (12 inch) 105 | PowerBook6,2 106 | PowerBook G4 (12 inch, DVI) 107 | PowerBook6,3 108 | iBook G4 109 | PowerBook6,4 110 | PowerBook G4 (12 inch 1.33GHz) 111 | PowerBook6,5 112 | iBook G4 (Early-Late 2004) 113 | PowerBook6,7 114 | iBook G4 (Mid 2005) 115 | PowerBook6,8 116 | PowerBook G4 (12 inch 1.5GHz) 117 | PowerMac1,1 118 | Power Macintosh G3 (Blue & White) 119 | PowerMac1,2 120 | Power Macintosh G4 (PCI Graphics) 121 | PowerMac10,1 122 | Mac Mini G4 123 | PowerMac10,2 124 | Mac Mini (Late 2005) 125 | PowerMac11,2 126 | Power Macintosh G5 (Late 2005) 127 | PowerMac12,1 128 | iMac G5 (iSight) 129 | PowerMac2,1 130 | iMac G3 (Slot-loading CD-ROM) 131 | PowerMac2,2 132 | iMac G3 (Summer 2000) 133 | PowerMac3,1 134 | Power Macintosh G4 (AGP Graphics) 135 | PowerMac3,2 136 | Power Macintosh G4 (AGP Graphics) 137 | PowerMac3,3 138 | Power Macintosh G4 (Gigabit Ethernet) 139 | PowerMac3,4 140 | Power Macintosh G4 (Digital Audio) 141 | PowerMac3,5 142 | Power Macintosh G4 (Quick Silver) 143 | PowerMac3,6 144 | Power Macintosh G4 (Mirrored Drive Door) 145 | PowerMac4,1 146 | iMac G3 (Early/Summer 2001) 147 | PowerMac4,2 148 | iMac G4 (Flat Panel) 149 | PowerMac4,4 150 | eMac 151 | PowerMac4,5 152 | iMac G4 (17-inch Flat Panel) 153 | PowerMac5,1 154 | Power Macintosh G4 Cube 155 | PowerMac6,1 156 | iMac G4 (USB 2.0) 157 | PowerMac6,3 158 | iMac G4 (20-inch Flat Panel) 159 | PowerMac6,4 160 | eMac (USB 2.0, 2005) 161 | PowerMac7,2 162 | Power Macintosh G5 163 | PowerMac7,3 164 | Power Macintosh G5 165 | PowerMac8,1 166 | iMac G5 167 | PowerMac8,2 168 | iMac G5 (Ambient Light Sensor) 169 | PowerMac9,1 170 | Power Macintosh G5 (Late 2005) 171 | RackMac1,1 172 | Xserve G4 173 | RackMac1,2 174 | Xserve G4 (slot-loading, cluster node) 175 | RackMac3,1 176 | Xserve G5 177 | Xserve1,1 178 | Xserve (Intel Xeon) 179 | Xserve2,1 180 | Xserve (January 2008 quad-core) 181 | 182 | 183 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/SUStatus.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/A/Sparkle -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Frameworks/Sparkle.framework/Versions/Current: -------------------------------------------------------------------------------- 1 | A -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 11E53 7 | CFBundleDevelopmentRegion 8 | en_US 9 | CFBundleExecutable 10 | cocoaDialog 11 | CFBundleIconFile 12 | cocoadialog 13 | CFBundleIdentifier 14 | com.cocoaDialog 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | cocoaDialog 19 | CFBundlePackageType 20 | APPL 21 | CFBundleShortVersionString 22 | 3.0-beta7 23 | CFBundleSignature 24 | ???? 25 | CFBundleVersion 26 | 3.0.0-beta7 27 | DTCompiler 28 | com.apple.compilers.llvm.clang.1_0 29 | DTPlatformBuild 30 | 4D502 31 | DTPlatformVersion 32 | GM 33 | DTSDKBuild 34 | 10K549 35 | DTSDKName 36 | macosx10.6 37 | DTXcode 38 | 0421 39 | DTXcodeBuild 40 | 4D502 41 | LSMinimumSystemVersion 42 | 10.4 43 | LSMinimumSystemVersionByArchitecture 44 | 45 | i386 46 | 10.4 47 | ppc 48 | 10.4 49 | ppc64 50 | 10.5 51 | x86_64 52 | 10.6 53 | 54 | LSUIElement 55 | 1 56 | NSMainNibFile 57 | MainMenu 58 | NSPrincipalClass 59 | NSApplication 60 | SUEnableAutomaticChecks 61 | 62 | SUPublicDSAKeyFile 63 | dsa_pub.pem 64 | 65 | 66 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/MacOS/cocoaDialog: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/MacOS/cocoaDialog -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPL???? -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/cocoadialog.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/cocoadialog.icns -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/dsa_pub.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PUBLIC KEY----- 2 | MIIDOzCCAi0GByqGSM44BAEwggIgAoIBAQDjPN8K4TW34lYfYkzreg47fijtSXDU 3 | fSwngmpYyX7pcW0mK4Z3RuVkkKqztm/vgoCmtAG0u7rQX8p27lrKRf+tQkSCzib+ 4 | Ny3LaWMW+GLlIFZ0269cu5b07GUKGRtgNjNmsWod6Zdi7FWsnXjMmSF1kFdotv+L 5 | x3rBWer0hsXxX+nZPxoLvEbes2OuzQ6s0wHagwnS6tpYuTnQiyV6ea6W+wXVFlGo 6 | j63DgGj/oTQzRw19dOc5tWhbBpyJC/p8aG1PQ1ShU+x0RgnBSuTmBcd/LWo48Tk9 7 | slz5ocZCSY3GcEqxm2cOKm5oJw6hrUtFCj1RgD3/7VFDFnT8w7GTsXvZAhUA6NRU 8 | frBbGFYYcKFP96tj6IKvHI8CggEAC5zH0KC6DzUvU7iHFG26EYpT0ilUtexqvkIp 9 | AcKe5g4crGFc3SRDUMS/wuOgEiplrQBJ3hYIIeOd3e/2tFxGPrB/o0HDCBWkKtt5 10 | iBV7FKfy6zXhNg+Uv5fgQnrZmuPY8sTgZdQ+Wj/MEkhBi4VoDTMWXkMsxaqNE28j 11 | XdZVaTQSxdTRuuvyAwEVNK3CxBfDv5Peq9XUvbn5coMlcVbvThesqarpm3Mv42jy 12 | pDgwvnQmDSJf9NJQxj4jrynGSV86gGiIaPLu2FKUBWHB2lO71H5ArS50z68DuZXW 13 | Bo2R1ThBuy/+BnH7r5pwPvBFrGEWWEEDeLQRkGx722Gk3lonVAOCAQYAAoIBAQDQ 14 | S4AnQZQaOOMBb3E0jqziugFaUtJB/2idisRYDEVFPcBZOp6FspQfUFVLQnCH23fb 15 | wsjB9IkiL9xANoaRMcwOsY+QUGBghC5QC1WryM2v25jUcDjCnf4I2iFpJwRp+oay 16 | L6cDsnztzHLZz9C04OBonPepMaxw5D04AnlCROFRr9DvVQ9ijhCzylxpPv7iJzAR 17 | Lz7YS0hFqf0ExC+GscU5RvYK5l0M4/6uYRo3fCyjQSJGl4erFr/Lw6DE1Bl7pkEJ 18 | /ei6eug6yHzI5OZ74fS4U+PUq9CS7cpoS0j8tsYJlIWzKd6e+7CwNFex0VUVY2BB 19 | WQ/QRh796sCdOwuPKafI 20 | -----END PUBLIC KEY----- 21 | -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/en-US.lproj/InfoPlist.strings: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/en-US.lproj/InfoPlist.strings -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/en-US.lproj/MainMenu.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/en-US.lproj/MainMenu.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/en-US.lproj/Msgbox.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/en-US.lproj/Msgbox.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/en-US.lproj/Progressbar.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/en-US.lproj/Progressbar.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/en-US.lproj/Textbox.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/en-US.lproj/Textbox.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/en-US.lproj/popup.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/en-US.lproj/popup.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/en-US.lproj/tbc.nib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/en-US.lproj/tbc.nib -------------------------------------------------------------------------------- /cocoaDialog.app/Contents/Resources/relaunch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/cocoaDialog.app/Contents/Resources/relaunch -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | import process from 'node:process'; 2 | import path from 'node:path'; 3 | import {fileURLToPath} from 'node:url'; 4 | import dargs from 'dargs'; 5 | import execa from 'execa'; 6 | 7 | const __dirname = path.dirname(fileURLToPath(import.meta.url)); 8 | 9 | // `cocoaDialog` 3.0.0-beta7 10 | const bin = path.join(__dirname, 'cocoaDialog.app/Contents/MacOS/cocoaDialog'); 11 | 12 | export default async function cocoaDialog(type, options) { 13 | if (process.platform !== 'darwin') { 14 | throw new Error('macOS only'); 15 | } 16 | 17 | const args = dargs(options, {useEquals: false}); 18 | 19 | const {stdout} = await execa(bin, [type, ...args], { 20 | // It exits with code 1 on success, ugh… 21 | reject: false, 22 | }); 23 | 24 | return stdout.replace(/\r?\n$/, ''); 25 | } 26 | -------------------------------------------------------------------------------- /license: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Sindre Sorhus (https://sindresorhus.com) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cocoa-dialog", 3 | "version": "3.0.0", 4 | "description": "Display common GUI dialogs on macOS using cocoaDialog", 5 | "license": "MIT", 6 | "repository": "sindresorhus/cocoa-dialog", 7 | "funding": "https://github.com/sponsors/sindresorhus", 8 | "author": { 9 | "name": "Sindre Sorhus", 10 | "email": "sindresorhus@gmail.com", 11 | "url": "https://sindresorhus.com" 12 | }, 13 | "type": "module", 14 | "exports": "./index.js", 15 | "engines": { 16 | "node": "^12.20.0 || ^14.13.1 || >=16.0.0" 17 | }, 18 | "scripts": { 19 | "test": "xo && ava" 20 | }, 21 | "files": [ 22 | "index.js", 23 | "cocoaDialog.app" 24 | ], 25 | "keywords": [ 26 | "cocoadialog", 27 | "cocoa", 28 | "dialog", 29 | "prompt", 30 | "window", 31 | "box", 32 | "gui", 33 | "util", 34 | "utility", 35 | "macos" 36 | ], 37 | "dependencies": { 38 | "dargs": "^8.1.0", 39 | "execa": "^5.1.1" 40 | }, 41 | "devDependencies": { 42 | "ava": "^3.15.0", 43 | "xo": "^0.45.0" 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # cocoa-dialog 2 | 3 | > Display common GUI dialogs on macOS using [cocoaDialog](https://github.com/cocoadialog/cocoadialog) 4 | 5 | 6 | 7 | *Issues regarding the GUI should be opened on the cocoaDialog [issue tracker](https://github.com/cocoadialog/cocoadialog/issues).* 8 | 9 | ## Install 10 | 11 | ```sh 12 | npm install cocoa-dialog 13 | ``` 14 | 15 | ## Usage 16 | 17 | ```js 18 | import cocoaDialog from 'cocoa-dialog'; 19 | 20 | const result = await cocoaDialog('msgbox', { 21 | title: 'Unicorn', 22 | icon: 'favorite', 23 | text: 'What do you want?', 24 | button1: 'Gimme rainbow', 25 | button2: 'Magicalifify' 26 | }); 27 | 28 | if (result === '1') { 29 | console.log('button1 clicked'); 30 | } else if (result === '2') { 31 | console.log('button2 clicked'); 32 | } 33 | ``` 34 | 35 | ## API 36 | 37 | ### cocoaDialog(type, options) 38 | 39 | Returns a `Promise` for result and resolves when the dialog is dismissed. 40 | 41 | #### type 42 | 43 | Type: `string`\ 44 | Values: 45 | - `bubble` 46 | - `msgbox` 47 | - `ok-msgbox` 48 | - `yesno-msgbox` 49 | - `inputbox` 50 | - `standard-inputbox` 51 | - `secure-inputbox` 52 | - `secure-standard-inputbox` 53 | - `fileselect` 54 | - `filesave` 55 | - `textbox` 56 | - `progressbar` 57 | - `dropdown` 58 | - `standard-dropdown` 59 | 60 | See the [cocoaDialog docs](http://mstratman.github.io/cocoadialog/#documentation3.0). 61 | 62 | #### options 63 | 64 | Type: `object` 65 | 66 | Any of the options defined in the [cocoaDialog docs](http://mstratman.github.io/cocoadialog/#documentation3.0) can be used in a camel-cased form. 67 | 68 | For example, `‑‑informative‑text` should be `informativeText: true`. 69 | 70 | ## Related 71 | 72 | - [error-dialog](https://github.com/sindresorhus/error-dialog) - Display an error in a GUI dialog 73 | -------------------------------------------------------------------------------- /screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sindresorhus/cocoa-dialog/6fe8eef9943c976f6e01782ff0460edd1dbe6f23/screenshot.png -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | import process from 'node:process'; 2 | import test from 'ava'; 3 | import cocoaDialog from './index.js'; 4 | 5 | test('main', async t => { 6 | if (process.env.CI) { 7 | t.pass(); 8 | return; 9 | } 10 | 11 | t.is(await cocoaDialog('ok-msgbox', {text: 'Click OK'}), '1'); 12 | }); 13 | --------------------------------------------------------------------------------