From 802f2f1edd872e87ff347dcd948958462780f088 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 9 Jan 2013 19:17:42 -0500 Subject: [PATCH] Move Growl bindings to it's own assembly, usable by MonoMac or Xamarin.Mac --- .gitignore | 5 + Growl/README.md | 7 + Growl/binding/ApiDefinition.cs | 183 + Growl/binding/Extra.cs | 73 + Growl/binding/Makefile | 22 + Growl/samples/TwoMinuteGrowler/AppDelegate.cs | 27 + .../TwoMinuteGrowler/CountDownTimer.cs | 61 + .../GrowlRegistrationTicket.plist | 20 + Growl/samples/TwoMinuteGrowler/Info.plist | 18 + Growl/samples/TwoMinuteGrowler/Main.cs | 24 + Growl/samples/TwoMinuteGrowler/MainMenu.xib | 4075 +++++++++++++++++ .../TwoMinuteGrowler/MainMenu.xib.designer.cs | 18 + Growl/samples/TwoMinuteGrowler/MainWindow.cs | 15 + Growl/samples/TwoMinuteGrowler/MainWindow.xib | 368 ++ .../MainWindow.xib.designer.cs | 55 + .../TwoMinuteGrowler/MainWindowController.cs | 72 + Growl/samples/TwoMinuteGrowler/README.md | 26 + .../TwoMinuteGrowler/TwoMinuteGrowler.csproj | 81 + .../TwoMinuteGrowler/TwoMinuteGrowler.sln | 20 + 19 files changed, 5170 insertions(+) create mode 100644 .gitignore create mode 100644 Growl/README.md create mode 100644 Growl/binding/ApiDefinition.cs create mode 100644 Growl/binding/Extra.cs create mode 100644 Growl/binding/Makefile create mode 100644 Growl/samples/TwoMinuteGrowler/AppDelegate.cs create mode 100644 Growl/samples/TwoMinuteGrowler/CountDownTimer.cs create mode 100644 Growl/samples/TwoMinuteGrowler/GrowlRegistrationTicket.plist create mode 100644 Growl/samples/TwoMinuteGrowler/Info.plist create mode 100644 Growl/samples/TwoMinuteGrowler/Main.cs create mode 100644 Growl/samples/TwoMinuteGrowler/MainMenu.xib create mode 100644 Growl/samples/TwoMinuteGrowler/MainMenu.xib.designer.cs create mode 100644 Growl/samples/TwoMinuteGrowler/MainWindow.cs create mode 100644 Growl/samples/TwoMinuteGrowler/MainWindow.xib create mode 100644 Growl/samples/TwoMinuteGrowler/MainWindow.xib.designer.cs create mode 100644 Growl/samples/TwoMinuteGrowler/MainWindowController.cs create mode 100644 Growl/samples/TwoMinuteGrowler/README.md create mode 100644 Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.csproj create mode 100644 Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.sln diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3f32f47 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +bin/ +obj/ +*.dll* +*.userprefs +.DS_Store \ No newline at end of file diff --git a/Growl/README.md b/Growl/README.md new file mode 100644 index 0000000..e46ffde --- /dev/null +++ b/Growl/README.md @@ -0,0 +1,7 @@ +Growl Bindings +============== + +This is a copy of the Growl bindings that were included directly in monomac.dll in the past. Since Growl is an external application/framework, with a different release schedule than OSX, it is being moved to a separate assembly. + +The current bindings are for Growl 1.2.1. For information in: +http://cocoa-mono.org/archives/254/growl-my-monomac-application-says/ diff --git a/Growl/binding/ApiDefinition.cs b/Growl/binding/ApiDefinition.cs new file mode 100644 index 0000000..806b07b --- /dev/null +++ b/Growl/binding/ApiDefinition.cs @@ -0,0 +1,183 @@ +// +// Copyright 2010, Novell, Inc. +// +// 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: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// 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. +// + +// +// growl.cs: Definitions for the Growl Framework +// +using System; +using MonoMac.Foundation; +using MonoMac.ObjCRuntime; +using MonoMac.AppKit; + +namespace MonoMac.Growl { + [BaseType (typeof (NSObject))] + interface GrowlApplicationBridge { + [Static] + [Export ("isGrowlInstalled")] + bool IsGrowlInstalled (); + + [Static] + [Export ("isGrowlRunning")] + bool IsGrowlRunning (); + + [Static] + [Export ("notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:")] + void Notify (string title, string description, string notifName, [NullAllowed] NSData iconData, int priority, bool isSticky, [NullAllowed] NSObject clickContext); + + [Static] + [Export ("notifyWithTitle:description:notificationName:iconData:priority:isSticky:clickContext:identifier:")] + void Notify (string title, string description, string notifName, [NullAllowed] NSData iconData, int priority, bool isSticky, [NullAllowed] NSObject clickContext, string identifier); + + [Static] + [Export ("notifyWithDictionary:")] + void Notify (NSDictionary userInfo); + + [Export ("registerWithDictionary:")] + bool Register (NSDictionary regDict); + + [Static] + [Export ("reregisterGrowlNotifications")] + void ReRegister (); + + [Export ("registrationDictionaryFromDelegate")] + NSDictionary RegistrationDictionaryFromDelegate (); + + [Static] + [Export ("registrationDictionaryFromBundle:")] + NSDictionary RegistrationDictionaryFromBundle (NSBundle bundle); + + [Static] + [Export ("bestRegistrationDictionary")] + NSDictionary BestRegistrationDictionary (); + + [Static] + [Export ("registrationDictionaryByFillingInDictionary:")] + NSDictionary FromDictionary (NSDictionary regDict); + + [Static] + [Export ("registrationDictionaryByFillingInDictionary:restrictToKeys:")] + NSDictionary FromDictionary (NSDictionary regDict, NSSet restrictToKeys); + + [Static] + [Export ("notificationDictionaryByFillingInDictionary:")] + NSDictionary NotificationDictionary (NSDictionary regDict); + + [Static] + [Export ("frameworkInfoDictionary")] + NSDictionary FrameworkInfoDictionary { get; } + + //Detected properties + //[Export ("growlDelegate")] + //NSObject GrowlDelegate { get; set; } + + [Static] + [Export ("growlDelegate", ArgumentSemantic.Assign), NullAllowed] + NSObject WeakDelegate { get; set; } + + [Static] + [Wrap ("WeakDelegate")] + GrowlDelegate Delegate { get; set; } + + [Static] + [Export ("willRegisterWhenGrowlIsReady")] + bool WillRegisterWhenGrowlIsReady { get; set; } + + } + [BaseType (typeof(NSObject))] + [Model] + interface GrowlDelegate { + [Export ("registrationDictionaryForGrowl")] + NSDictionary RegistrationDictionaryForGrowl (); + + [Export ("applicationNameForGrowl")] + string ApplicationNameForGrowl (); + + [Export ("applicationIconForGrowl")] + NSImage ApplicationIconForGrowl (); + + [Export ("applicationIconDataForGrowl")] + NSData ApplicationIconDataForGrowl (); + + [Export ("growlIsReady")] + void GrowlIsReady (); + + [Export ("growlNotificationWasClicked:")] + void GrowlNotificationWasClicked (NSObject clickContext); + + [Export ("growlNotificationTimedOut:")] + void GrowlNotificationTimedOut (NSObject clickContext); + + // Installer informal protocol + [Export ("growlInstallationWindowTitle")] + string GrowlInstallationWindowTitle (); + + [Export ("growlUpdateWindowTitle")] + string GrowlUpdateWindowTitle (); + + [Export ("growlInstallationInformation")] + NSAttributedString GrowlInstallationInformation (); + + [Export ("growlUpdateInformation")] + NSAttributedString GrowlUpdateInformation (); + } + + /* Growl has two informal protocols (NSObject categories) rather than a delegate protocol since version 0.7 */ + /* This would be the literal interpretation of the ObjC code + interface NSObject { + [Bind ("registrationDictionaryForGrowl")] + NSDictionary RegistrationDictionaryForGrowl ([Target] NSObject target); + + [Bind ("applicationNameForGrowl")] + string ApplicationNameForGrowl ([Target] NSObject target); + + [Bind ("applicationIconForGrowl")] + NSImage ApplicationIconForGrowl ([Target] NSObject target); + + [Bind ("applicationIconDataForGrowl")] + NSData ApplicationIconDataForGrowl ([Target] NSObject target); + + [Bind ("growlIsReady")] + void GrowlIsReady ([Target] NSObject target); + + [Bind ("growlNotificationWasClicked:")] + void GrowlNotificationWasClicked ([Target] NSObject target, NSObject clickContext); + + [Bind ("growlNotificationTimedOut:")] + void GrowlNotificationTimedOut ([Target] NSObject target, NSObject clickContext); + + // Installer informal protocol + [Bind ("growlInstallationWindowTitle")] + string GrowlInstallationWindowTitle ([Target] NSObject target); + + [Bind ("growlUpdateWindowTitle")] + string GrowlUpdateWindowTitle ([Target] NSObject target); + + [Bind ("growlInstallationInformation")] + NSAttributedString GrowlInstallationInformation ([Target] NSObject target); + + [Bind ("growlUpdateInformation")] + NSAttributedString GrowlUpdateInformation ([Target] NSObject target); + + } + */ +} diff --git a/Growl/binding/Extra.cs b/Growl/binding/Extra.cs new file mode 100644 index 0000000..5a79eb3 --- /dev/null +++ b/Growl/binding/Extra.cs @@ -0,0 +1,73 @@ +// +// Copyright 2010, Novell, Inc. +// +// 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: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// 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. +// + +// +// Constants.cs: Constants for the Growl Framework +// +using System; +using MonoMac.Foundation; +using MonoMac.ObjCRuntime; +using MonoMac.AppKit; + +namespace MonoMac.Growl { + public static class RegistrationUserInfoKeys { + static public string ApplicationName = "ApplicationName"; + static public string ApplicationId = "ApplicationId"; + static public string ApplicationIcon = "ApplicationIcon"; + static public string DefaultNotifications = "DefaultNotifications"; + static public string AllNotifications = "AllNotifications"; + static public string HumanReadableNames = "HumanReadableNames"; + static public string NotificationDescriptions = "NotificationDescriptions"; + static public string TicketVersion = "TicketVersion"; + } + + public static class NotificationUserInfoKeys { + static public string NotificationName = "NotificationName"; + static public string NotificationTitle = "NotificationTitle"; + static public string NotificationDescription = "NotificationDescription"; + static public string NotificationIcon = "NotificationIcon"; + static public string NotificationAppIcon = "NotificationAppIcon"; + static public string NotificationPriority = "NotificationPriority"; + static public string NotificationSticky = "NotificationSticky"; + static public string NotificationClickContext = "NotificationClickContext"; + static public string NotificationDisplayPlugin = "NotificationDisplayPlugin"; + static public string GrowlNotificationIdentifier = "GrowlNotificationIdentifier"; + static public string ApplicationPID = "ApplicationPID"; + static public string NotificationProgress = "NotificationProgress"; + } + + public static class GrowlNotifications { + static public string ApplicationRegistrationNotification = "GrowlApplicationRegistrationNotification"; + static public string ApplicationRegistrationConfirmationNotification = "GrowlApplicationRegistrationConfirmationNotification"; + static public string Notification = "GrowlNotification"; + static public string Shutdown = "GrowlShutdown"; + static public string Ping = "Honey, Mind Taking Out The Trash"; + static public string Pong = "What Do You Want From Me, Woman"; + static public string IsReady = "Lend Me Some Sugar; I Am Your Neighbor!"; + static public string Clicked = "GrowlClicked!"; + static public string TimedOut = "GrowlTimedOut!"; + static public string ClickedContext = "ClickedContext"; + static public string RegDictExtension = "growlRegDict"; + static public string GrowlSelectedPosition = "GrowlSelectedPosition"; + } +} \ No newline at end of file diff --git a/Growl/binding/Makefile b/Growl/binding/Makefile new file mode 100644 index 0000000..c1076eb --- /dev/null +++ b/Growl/binding/Makefile @@ -0,0 +1,22 @@ +# MONOMAC variable needs to be edited to match your setup +MONOMAC=/Developer/MonoTouch/Source/monomac/ +MONOMAC_DLL=$(MONOMAC)/src/MonoMac.dll +XAMMAC=/Library/Frameworks/Xamarin.Mac.framework/Versions/Current +XAMMAC_DLL=$(XAMMAC)/usr/lib/mono/XamMac.dll +MCS=mcs + +all: Mono.Growl.dll Xamarin.Growl.dll + +clean: + -rm -f *.dll* + -rm -rf xamarin mono + +Mono.Growl.dll: ApiDefinition.cs Extra.cs + mkdir -p mono + mono $(MONOMAC)/src/bmac.exe -e ApiDefinition.cs --tmpdir=mono -baselib=$(MONOMAC_DLL) -sourceonly mono/sources.list + $(MCS) -target:library -unsafe -out:$@ Extra.cs @mono/sources.list -r:System.Drawing -r:$(MONOMAC_DLL) + +Xamarin.Growl.dll: ApiDefinition.cs Extra.cs + mkdir -p xamarin + $(XAMMAC)/usr/bin/bmac -e ApiDefinition.cs --tmpdir=xamarin -baselib=$(XAMMAC_DLL) -sourceonly xamarin/sources.list + $(MCS) -target:library -unsafe -out:$@ Extra.cs @xamarin/sources.list -r:System.Drawing -r:$(XAMMAC_DLL) diff --git a/Growl/samples/TwoMinuteGrowler/AppDelegate.cs b/Growl/samples/TwoMinuteGrowler/AppDelegate.cs new file mode 100644 index 0000000..e7794b4 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/AppDelegate.cs @@ -0,0 +1,27 @@ +using System; +using System.Drawing; +using MonoMac.Foundation; +using MonoMac.AppKit; + + +namespace TwoMinuteGrowler { + public partial class AppDelegate : NSApplicationDelegate { + MainWindowController mainWindowController; + + public AppDelegate () + { + } + + public override void FinishedLaunching (NSObject notification) + { + mainWindowController = new MainWindowController (); + mainWindowController.Window.MakeKeyAndOrderFront (this); + } + + public override bool ApplicationShouldTerminateAfterLastWindowClosed (NSApplication sender) + { + return true; + } + } +} + diff --git a/Growl/samples/TwoMinuteGrowler/CountDownTimer.cs b/Growl/samples/TwoMinuteGrowler/CountDownTimer.cs new file mode 100644 index 0000000..55af244 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/CountDownTimer.cs @@ -0,0 +1,61 @@ +using System; +using System.Timers; +using System.Threading; + +using MonoMac.Foundation; +using MonoMac.AppKit; +using MonoMac.Growl; + +namespace TwoMinuteGrowler +{ + public class CountDownTimer : NSObject { + NSTimer myTTimer; + string timer; + TimeSpan currentTime; + + public CountDownTimer () : base() + { + currentTime = TimeSpan.FromMinutes (2); + TimeLeft = formatTimeSpan (currentTime); + } + + public void Start () + { + currentTime = TimeSpan.FromMinutes (2); + TimeLeft = formatTimeSpan (currentTime); + + myTTimer = NSTimer.CreateRepeatingScheduledTimer (1, delegate { + currentTime = currentTime - TimeSpan.FromSeconds (1); + TimeLeft = formatTimeSpan (currentTime); + }); + } + + private string formatTimeSpan (TimeSpan ts) + { + return String.Format ("{0}:{1:00}", ts.Minutes, ts.Seconds); + } + + public void Stop () + { + myTTimer.Invalidate (); + } + + [Export ("timeLeft")] + public string TimeLeft { + get { + return timer; + } + set { + WillChangeValue ("timeLeft"); + timer = value; + DidChangeValue ("timeLeft"); + } + } + + public TimeSpan TimerMark { + get { return currentTime; } + } + + } +} + diff --git a/Growl/samples/TwoMinuteGrowler/GrowlRegistrationTicket.plist b/Growl/samples/TwoMinuteGrowler/GrowlRegistrationTicket.plist new file mode 100644 index 0000000..2ebd0f7 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/GrowlRegistrationTicket.plist @@ -0,0 +1,20 @@ + + + + + TicketVersion + 1 + AllNotifications + + Start + Stop + Info + + DefaultNotifications + + Start + Stop + Info + + + diff --git a/Growl/samples/TwoMinuteGrowler/Info.plist b/Growl/samples/TwoMinuteGrowler/Info.plist new file mode 100644 index 0000000..9030549 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/Info.plist @@ -0,0 +1,18 @@ + + + + + CFBundleIdentifier + com.yourcompany.TwoMinuteGrowler + CFBundleName + TwoMinuteGrowler + CFBundleVersion + 1 + LSMinimumSystemVersion + 10.6 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/Growl/samples/TwoMinuteGrowler/Main.cs b/Growl/samples/TwoMinuteGrowler/Main.cs new file mode 100644 index 0000000..a0d39f5 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/Main.cs @@ -0,0 +1,24 @@ +using System; +using System.Runtime; +using System.IO; +using System.Drawing; +using MonoMac.Foundation; +using MonoMac.AppKit; +using MonoMac.ObjCRuntime; + +namespace TwoMinuteGrowler { + class MainClass { + static void Main ( string[] args ) { + + var baseAppPath = Directory.GetParent (Directory.GetParent (System.AppDomain.CurrentDomain.BaseDirectory).ToString ()); + //var growlPath = baseAppPath + "/Frameworks/Growl-WithInstaller.framework/Growl-WithInstaller"; + var growlPath = baseAppPath + "/Frameworks/Growl.framework/Growl"; + + Dlfcn.dlopen (growlPath, 0); + + NSApplication.Init (); + NSApplication.Main (args); + } + } +} + diff --git a/Growl/samples/TwoMinuteGrowler/MainMenu.xib b/Growl/samples/TwoMinuteGrowler/MainMenu.xib new file mode 100644 index 0000000..89c319f --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/MainMenu.xib @@ -0,0 +1,4075 @@ + + + + 1060 + 10D573 + 762 + 1038.29 + 460.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 762 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + TwoMinuteGrowler + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + MacCocoaApp + + YES + + + About TwoMinuteGrowler + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide TwoMinuteGrowler + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit TwoMinuteGrowler + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Paste and Match Style + V + 1572864 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling and Grammar + : + 1048576 + 2147483647 + + + + + + Check Document Now + ; + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + Correct Spelling Automatically + + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Show Substitutions + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Dashes + + 2147483647 + + + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + Text Replacement + + 2147483647 + + + + + + + + + Transformations + + 2147483647 + + + submenuAction: + + Transformations + + YES + + + Make Upper Case + + 2147483647 + + + + + + Make Lower Case + + 2147483647 + + + + + + Capitalize + + 2147483647 + + + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Writing Direction + + 2147483647 + + + submenuAction: + + Writing Direction + + YES + + + YES + Paragraph + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + YES + Selection + + 2147483647 + + + + + + CURlZmF1bHQ + + 2147483647 + + + + + + CUxlZnQgdG8gUmlnaHQ + + 2147483647 + + + + + + CVJpZ2h0IHRvIExlZnQ + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 2147483647 + + + submenuAction: + + Help + + YES + + + TwoMinuteGrowler Help + ? + 1048576 + 2147483647 + + + + + _NSHelpMenu + + + + _NSMainMenu + + + NSFontManager + + + AppDelegate + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + terminate: + + + + 449 + + + + toggleAutomaticSpellingCorrection: + + + + 456 + + + + orderFrontSubstitutionsPanel: + + + + 458 + + + + toggleAutomaticDashSubstitution: + + + + 461 + + + + toggleAutomaticTextReplacement: + + + + 463 + + + + uppercaseWord: + + + + 464 + + + + capitalizeWord: + + + + 467 + + + + lowercaseWord: + + + + 468 + + + + pasteAsPlainText: + + + + 486 + + + + performFindPanelAction: + + + + 487 + + + + performFindPanelAction: + + + + 488 + + + + performFindPanelAction: + + + + 489 + + + + showHelp: + + + + 493 + + + + alignCenter: + + + + 518 + + + + pasteRuler: + + + + 519 + + + + toggleRuler: + + + + 520 + + + + alignRight: + + + + 521 + + + + copyRuler: + + + + 522 + + + + alignJustified: + + + + 523 + + + + alignLeft: + + + + 524 + + + + makeBaseWritingDirectionNatural: + + + + 525 + + + + makeBaseWritingDirectionLeftToRight: + + + + 526 + + + + makeBaseWritingDirectionRightToLeft: + + + + 527 + + + + makeTextWritingDirectionNatural: + + + + 528 + + + + makeTextWritingDirectionLeftToRight: + + + + 529 + + + + makeTextWritingDirectionRightToLeft: + + + + 530 + + + + delegate + + + + 534 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + + + 80 + + + + + 78 + + + + + 72 + + + + + 82 + + + + + 124 + + + YES + + + + + + 77 + + + + + 73 + + + + + 79 + + + + + 112 + + + + + 74 + + + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + + + 144 + + + + + 129 + + + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + YES + + + + + + 451 + + + YES + + + + + + + + 452 + + + + + 453 + + + + + 454 + + + + + 457 + + + + + 459 + + + + + 460 + + + + + 462 + + + + + 465 + + + + + 466 + + + + + 485 + + + + + 490 + + + YES + + + + + + 491 + + + YES + + + + + + 492 + + + + + 496 + + + YES + + + + + + 497 + + + YES + + + + + + + + + + + + + + + 498 + + + + + 499 + + + + + 500 + + + + + 501 + + + + + 502 + + + + + 503 + + + YES + + + + + + 504 + + + + + 505 + + + + + 506 + + + + + 507 + + + + + 508 + + + YES + + + + + + + + + + + + + + 509 + + + + + 510 + + + + + 511 + + + + + 512 + + + + + 513 + + + + + 514 + + + + + 515 + + + + + 516 + + + + + 517 + + + + + 533 + + + + + + + YES + + YES + -3.IBPluginDependency + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBEditorWindowLastContentRect + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBEditorWindowLastContentRect + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBEditorWindowLastContentRect + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBEditorWindowLastContentRect + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBEditorWindowLastContentRect + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBEditorWindowLastContentRect + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 451.IBEditorWindowLastContentRect + 451.IBPluginDependency + 452.IBPluginDependency + 453.IBPluginDependency + 454.IBPluginDependency + 457.IBPluginDependency + 459.IBPluginDependency + 460.IBPluginDependency + 462.IBPluginDependency + 465.IBPluginDependency + 466.IBPluginDependency + 485.IBPluginDependency + 490.IBPluginDependency + 491.IBEditorWindowLastContentRect + 491.IBPluginDependency + 492.IBPluginDependency + 496.IBPluginDependency + 497.IBEditorWindowLastContentRect + 497.IBPluginDependency + 498.IBPluginDependency + 499.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 500.IBPluginDependency + 501.IBPluginDependency + 502.IBPluginDependency + 503.IBPluginDependency + 504.IBPluginDependency + 505.IBPluginDependency + 506.IBPluginDependency + 507.IBPluginDependency + 508.IBEditorWindowLastContentRect + 508.IBPluginDependency + 509.IBPluginDependency + 510.IBPluginDependency + 511.IBPluginDependency + 512.IBPluginDependency + 513.IBPluginDependency + 514.IBPluginDependency + 515.IBPluginDependency + 516.IBPluginDependency + 517.IBPluginDependency + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBEditorWindowLastContentRect + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{753, 187}, {275, 113}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{453, 408}, {254, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{753, 217}, {238, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{613, 618}, {194, 73}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{346, 722}, {402, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + {{563, 648}, {231, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{746, 287}, {220, 133}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{497, 648}, {83, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{580, 408}, {175, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{753, 197}, {170, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{684, 668}, {142, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{674, 260}, {204, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{878, 180}, {164, 173}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{355, 508}, {183, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{411, 488}, {196, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 534 + + + + YES + + AppDelegate + NSResponder + + IBUserSource + + + + + + YES + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSBrowser + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSBrowser.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSDocument + NSObject + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + id + id + id + id + id + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocument.h + + + + NSDocument + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentScripting.h + + + + NSDocumentController + NSObject + + YES + + YES + clearRecentDocuments: + newDocument: + openDocument: + saveAllDocuments: + + + YES + id + id + id + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentController.h + + + + NSFontManager + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMatrix + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSMatrix.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMovieView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMovieView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../MacCocoaApp.xcodeproj + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + + + + diff --git a/Growl/samples/TwoMinuteGrowler/MainMenu.xib.designer.cs b/Growl/samples/TwoMinuteGrowler/MainMenu.xib.designer.cs new file mode 100644 index 0000000..c067b1f --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/MainMenu.xib.designer.cs @@ -0,0 +1,18 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Mono Runtime Version: 2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +namespace TwoMinuteGrowler { + + + // Should subclass MonoMac.AppKit.NSResponder + [MonoMac.Foundation.Register("AppDelegate")] + public partial class AppDelegate { + } +} diff --git a/Growl/samples/TwoMinuteGrowler/MainWindow.cs b/Growl/samples/TwoMinuteGrowler/MainWindow.cs new file mode 100644 index 0000000..266c7b8 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/MainWindow.cs @@ -0,0 +1,15 @@ + +using System; +using MonoMac.Foundation; + +namespace TwoMinuteGrowler +{ + public partial class MainWindow : MonoMac.AppKit.NSWindow + { + public MainWindow (IntPtr handle) : base(handle) {} + + [Export("initWithCoder:")] + public MainWindow (NSCoder coder) : base(coder) {} + } +} + diff --git a/Growl/samples/TwoMinuteGrowler/MainWindow.xib b/Growl/samples/TwoMinuteGrowler/MainWindow.xib new file mode 100644 index 0000000..36ae130 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/MainWindow.xib @@ -0,0 +1,368 @@ + + + + 1060 + 10J567 + 804 + 1038.35 + 462.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 804 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + MainWindowController + + + FirstResponder + + + NSApplication + + + 15 + 2 + {{131, 277}, {302, 151}} + 611844096 + Two Minute Growler + MainWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 303 + {{17, 50}, {268, 81}} + + YES + + 68288064 + 138413056 + 2:00 + + ComicSansMS + 48 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + + + + 261 + {{103, 14}, {96, 32}} + + YES + + 67239424 + 134217728 + Start + + LucidaGrande + 13 + 1044 + + + -2038284033 + 129 + + + 200 + 25 + + + + {302, 151} + + + {{0, 0}, {1280, 778}} + {1.79769e+308, 1.79769e+308} + + + + + YES + + + window + + + + 6 + + + + countDownLabel + + + + 11 + + + + startStopAction: + + + + 13 + + + + startStopButton + + + + 14 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 2 + + + YES + + + + + + 3 + + + YES + + + + + + + 7 + + + YES + + + + + + 8 + + + + + 9 + + + YES + + + + + + 10 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 10.IBPluginDependency + 2.IBEditorWindowLastContentRect + 2.IBPluginDependency + 2.IBWindowTemplateEditedContentRect + 2.NSWindowTemplate.visibleAtLaunch + 3.IBPluginDependency + 7.IBPluginDependency + 7.IBViewBoundsToFrameTransform + 8.IBPluginDependency + 9.IBPluginDependency + 9.IBViewBoundsToFrameTransform + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{463, 1020}, {302, 151}} + com.apple.InterfaceBuilder.CocoaPlugin + {{463, 1020}, {302, 151}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBiAAAwsoAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABCzgAAwjAAAA + + + + + YES + + + YES + + + + + YES + + + YES + + + + 14 + + + + YES + + MainWindow + NSWindow + + IBUserSource + + + + + MainWindowController + NSWindowController + + startStopAction: + NSButton + + + startStopAction: + + startStopAction: + NSButton + + + + YES + + YES + countDownLabel + startStopButton + + + YES + NSTextField + NSButton + + + + YES + + YES + countDownLabel + startStopButton + + + YES + + countDownLabel + NSTextField + + + startStopButton + NSButton + + + + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + diff --git a/Growl/samples/TwoMinuteGrowler/MainWindow.xib.designer.cs b/Growl/samples/TwoMinuteGrowler/MainWindow.xib.designer.cs new file mode 100644 index 0000000..c889e3a --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/MainWindow.xib.designer.cs @@ -0,0 +1,55 @@ +// ------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Mono Runtime Version: 2.0.50727.1433 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +// ------------------------------------------------------------------------------ + +namespace TwoMinuteGrowler { + + + // Should subclass MonoMac.AppKit.NSWindow + [MonoMac.Foundation.Register("MainWindow")] + public partial class MainWindow { + } + + // Should subclass MonoMac.AppKit.NSWindowController + [MonoMac.Foundation.Register("MainWindowController")] + public partial class MainWindowController { + + private global::MonoMac.AppKit.NSTextField __mt_countDownLabel; + + private global::MonoMac.AppKit.NSButton __mt_startStopButton; + + #pragma warning disable 0169 + [MonoMac.Foundation.Export("startStopAction:")] + partial void startStopAction (MonoMac.AppKit.NSButton sender); + + [MonoMac.Foundation.Connect("countDownLabel")] + private global::MonoMac.AppKit.NSTextField countDownLabel { + get { + this.__mt_countDownLabel = ((global::MonoMac.AppKit.NSTextField)(this.GetNativeField("countDownLabel"))); + return this.__mt_countDownLabel; + } + set { + this.__mt_countDownLabel = value; + this.SetNativeField("countDownLabel", value); + } + } + + [MonoMac.Foundation.Connect("startStopButton")] + private global::MonoMac.AppKit.NSButton startStopButton { + get { + this.__mt_startStopButton = ((global::MonoMac.AppKit.NSButton)(this.GetNativeField("startStopButton"))); + return this.__mt_startStopButton; + } + set { + this.__mt_startStopButton = value; + this.SetNativeField("startStopButton", value); + } + } + } +} diff --git a/Growl/samples/TwoMinuteGrowler/MainWindowController.cs b/Growl/samples/TwoMinuteGrowler/MainWindowController.cs new file mode 100644 index 0000000..b187797 --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/MainWindowController.cs @@ -0,0 +1,72 @@ + +using System; +using System.Collections.Generic; +using System.Linq; +using MonoMac.Foundation; +using MonoMac.AppKit; +using MonoMac.Growl; + +namespace TwoMinuteGrowler { + public partial class MainWindowController : MonoMac.AppKit.NSWindowController { + CountDownTimer counter; + + public MainWindowController (IntPtr handle) : base (handle) { } + + [Export("initWithCoder:")] + public MainWindowController (NSCoder coder) : base(coder) { } + + public MainWindowController () : base("MainWindow") { } + + + public override void AwakeFromNib () + { + GrowlApplicationBridge.WeakDelegate = this; + counter = new CountDownTimer (); + Bind ("countDown", counter, "timeLeft", null); + } + + partial void startStopAction (NSButton sender) + { + if (sender.Title == "Start") { + counter.Start (); + sender.Title = "Stop"; + GrowlApplicationBridge.Notify ("The two-minute rule is magic.", + "You now have two minutes to Get Your Things Done.", "Start", null, 0, false, null); + } else { + counter.Stop (); + sender.Title = "Start"; + if (counter.TimerMark.Minutes > 0 && counter.TimerMark.Seconds > 0) + GrowlApplicationBridge.Notify ("Action Completed", String.Format ("You still have {0} left. Step back and breath. " + "Take a second and contemplate what you have achieved. " + "You'll be suprised how many two-minute actions you can " + "perform even on your most critical projects", counter.TimeLeft), "Stop", null, 0, true, null); + } + } + + [Export("countDown")] + public string CountDown { + get { return countDownLabel.StringValue; } + set { + countDownLabel.StringValue = counter.TimeLeft; + if (counter.TimerMark.Minutes == 0 && counter.TimerMark.Seconds == 0) { + GrowlApplicationBridge.Notify ("Time is up", + "Your two minutes is up. Did you get everything done? " + + "You need to clarify what is next and then manage that accordingly.", "Stop", null, 0, false, null); + counter.Stop (); + startStopButton.Title = "Start"; + + } else if (counter.TimerMark.Minutes == 1 && counter.TimerMark.Seconds == 0) { + GrowlApplicationBridge.Notify ("One Minute Warning", "This is your one minute warning. " + + "Not to put more pressure on you but you had better get a move on!", "Info", null, 0, false, null); + } + } + } + + [Export("registrationDictionaryForGrowl")] + NSDictionary RegistrationDictionaryForGrowl () + { + var regPath = NSBundle.MainBundle.PathForResource ("GrowlRegistrationTicket", "plist"); + var reg = NSDictionary.FromFile (regPath); + return reg; + } + + } +} + diff --git a/Growl/samples/TwoMinuteGrowler/README.md b/Growl/samples/TwoMinuteGrowler/README.md new file mode 100644 index 0000000..fe6fb2f --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/README.md @@ -0,0 +1,26 @@ +TwoMinuteGrowler +================ + +Shows the use of using Growl in your applications. It is simple Two-Minute countdown timer that +notifies the user by Growl notifications of specific time events. + +Author: Kenneth J. Pouncey 2011/01/23 + +Requirements: +============= +Growl application installed +Growl SDK to be linked in +And of course the MonoMac plugin for MonoDevelop + +Custom Command for build: +========================= +This sample uses a custom command for After Build to link in the Growl framework. + +mkdir -p ${TargetDir}/${SolutionName}.app/Contents/Frameworks; cp –r /Frameworks/Growl.framework ${TargetDir}/${SolutionName}.app/Contents/Frameworks + +Make sure you replace the with the directory location where you copied the SDK frameworks. + + +For a full description of the process of linking the Growl framework can be found here: + +http://cocoa-mono.org/?p=254 diff --git a/Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.csproj b/Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.csproj new file mode 100644 index 0000000..de420ae --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.csproj @@ -0,0 +1,81 @@ + + + + Debug + AnyCPU + 10.0.0 + 2.0 + {052D9378-E657-4291-BC62-D98E434B6FEB} + {948B3504-5B70-4649-8FE4-BDE1FB46EC69};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Exe + TwoMinuteGrowler + TwoMinuteGrowler + v4.0 + 12/11/2012 10:22:26 PM + + + true + full + false + bin\Debug + DEBUG + prompt + 4 + false + + + + + + + + none + false + bin\Release + prompt + 4 + false + + + + + + + + + False + + + + + MainWindow.xib + + + MainWindow.xib + + + MainWindow.xib + + + + MainMenu.xib + + + MainMenu.xib + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.sln b/Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.sln new file mode 100644 index 0000000..3e30e8f --- /dev/null +++ b/Growl/samples/TwoMinuteGrowler/TwoMinuteGrowler.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TwoMinuteGrowler", "TwoMinuteGrowler.csproj", "{052D9378-E657-4291-BC62-D98E434B6FEB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {052D9378-E657-4291-BC62-D98E434B6FEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {052D9378-E657-4291-BC62-D98E434B6FEB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {052D9378-E657-4291-BC62-D98E434B6FEB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {052D9378-E657-4291-BC62-D98E434B6FEB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = TwoMinuteGrowler.csproj + EndGlobalSection +EndGlobal