So, when we rewrote the plugin system in 2.0, I created a project template you can install to make a plugin xcode project. However, said template never had its display side finished, only the action side was. The display plugin should still create the utter basics, however it will not create any of the classes needed except the preference pane. Cocoa displays aren't terribly common from third parties, so it just wasn't a priority (and Displays weren't as fully rewritten and abstracted as they should have been, which makes implementing them annoying still). As Chris said, you can look at the main code base for plenty of examples.
Basics of our plugin system. Plugin bundles get installed to our container in ~/Library/Containers/com.Growl.GrowlHelperApp/Library/ Application Support/Growl/Plugin, and simply double clicking the bundle will have us install it in the right place. Growl supports two different bundle types, growlstyle (CSS/HTML) and growlview (Cocoa/Obj- C). In Growl 2.0, cocoa plugins need to link against our GrowlPlugins.framework, which has all the base classes, and a lot of different code you might need. You should *not* bundle this framework with your plugin, Growl bundles this and links it, and we have a Info.plist key that you need to use to declare the version of the framework you linked against so we can disable your plugin if we break something in a future version. Display plugins main class doesn't have much in it, and inherits from GrowlDisplayPlugin, there are a couple things it needs to do. First is to set the windowControllerClass is the class where more of the magic really happens. Next is to set the prefsDomain, and finally is to optionally provide a preferencePane. GrowlDisplayWindowController subclass is where you set up the window, and again, this is where looking at the plugins in Growl itself is probably a good idea, as a lot happens in the init method. GrowlNotificationView subclass is where the big stuff really happens, a bunch of layout related code is there. On Mar 31, 7:06 am, Chris Forsythe <[email protected]> wrote: > Let's keep the conversation here. You should have plenty of examples by > simply downloading the Growl source through mercurial. :) > > -- > Chris Forsythe > > > > > > > > On Sunday, March 31, 2013 at 6:00 AM, Thomas Schlosser wrote: > > Hi Chris, > > sorry, I don't want to crosspost too much - there is a conversation in > > Twitter (@GrowlMac) as well. > > > I downloaded SDK 2.0.1 and found the Plugin Dev folder. > > But after reading the readme's twice (not yet trying what happens in Xcode) > > I feel very uncomfortable with this. I don't understand the basic structure > > yet (basically I would expect some main method which the plugin has to > > implement to receive calls from Growl to display a notification; delegation > > pattern), what has to be produced in the Xcode product finally and how it > > is "linked" to Growl (installation). > > I have never seen this template technique before (but maybe it shows up > > like the Apple preinstalled templates - which would be great). > > > For my special way to approach similar things it would be phantastic to > > have a minimal (!) Xcode project which ideally works out of the box. Maybe > > the preferences part isn't even needed for this (optional?). > > > And/or a walk through like for Webkit based style "plugin". > > > Thanks > > Thomas > > > On Sunday, March 31, 2013 7:32:19 AM UTC+2, Christopher Forsythe wrote: > > > We have a brand new bit of work in Growl 2 and the accompanying SDK that > > > should be a good start. Look in the 2.0.1 SDK at the Plugin Development > > > directory. Let us know if you have any questions. > > > > I don't know how you would address this with a webkit display either. > > > > -- > > > Chris Forsythe > > > @The_Tick (http://twitter.com/The_Tick) > > > > On Saturday, March 30, 2013 at 6:47 AM, Thomas Schlosser wrote: > > > > > On this page (http://growl.info/documentation/webkit.php) I found out > > > > that besides the CSS-based display styles there must be another one > > > > based on Objective.C. > > > > > I couldn't find any examples, how-tos or documemtation about this. > > > > I have seen some examples integrating Growl via the API / framework > > > > into existing Cocoa applications, but I just want to have better > > > > control on the output. > > > > > Any places you could me point to? > > > > > FYI: What I want to do? > > > > Basically I want at least to have control about formatting (at least > > > > line breaks and spacing) in the text part of the notification. > > > > Example from terminal: cal | growlnotifier -t Calendar > > > > All the blanks are not displayed as HTML does not render them. But I > > > > can't just replace them with because these are escaped and > > > > displayed as text. > > > > Any hints on this are also very welcome! > > > > > Thanks > > > > Thomas > > > > > -- > > > > You received this message because you are subscribed to the Google > > > > Groups "Growl Discuss" group. > > > > To unsubscribe from this group and stop receiving emails from it, send > > > > an email to [email protected]. > > > > To post to this group, send email to [email protected]. > > > > Visit this group athttp://groups.google.com/group/growldiscuss?hl=en. > > > > For more options, visithttps://groups.google.com/groups/opt_out. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Growl Discuss" group. > > To unsubscribe from this group and stop receiving emails from it, send an > > email to [email protected]. > > To post to this group, send email to [email protected]. > > Visit this group athttp://groups.google.com/group/growldiscuss?hl=en. > > For more options, visithttps://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "Growl Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/growldiscuss?hl=en. For more options, visit https://groups.google.com/groups/opt_out.
