Info: Extracts from Apple docs:
SysServices.pdf
http://developer.apple.com/documentation/Cocoa/Conceptual/SysServices/index.html
appservices.pdf
http://developer.apple.com/documentation/Carbon/Conceptual/appservices/intro/chapter_1_section_1.html#//apple_ref/doc/uid/TP30000993-CH204

(…) “A service can be offered as part of an application,” (…) “or as a standalone service —one without a user interface that is intended for use only in the Services menu. Applications that offer services should be built with the .app extension and installed in the /Applications folder. A standalone service should be built with the .service extension and stored in the /Library/Services folder.
When a user logs in, Mac OS X searches the /Applications and /Library/Services folders in the four file-system domains—System, Network, Local, and User. (See Inside Mac OS X: System Overview for details on file-system domains.) The system examines the information property list for each bundle in these locations and assembles a list of available services (see “Services Properties”). It uses this information to populate the items in the Services menu.” (…)

(…) “Once the system knows what data types” the (…) “application can handle, it enables the appropriate services. At that point, the user can choose” the Application> appropriate service “from the Services menu. Figuring out the data types and enabling the appropriate items in the Services menu happens quite rapidly. In fact, to the user, items should appear in the Services menu instantaneously.”…

After reading the docs, it seems to me that the basic things I needed to know are the following:

- At the end it’s all about “intercommunicability” between apps. A service gives you features in apps without the need to fully implement these features into every app. This saves code, programatically gives a better user experience, facilities and so on…

- This have restrictions, though. Each service can handle different “kinds of data”. So, you can not expect that every selected data could be passed via “pasteboard(s)” or… to every service from the Service Menu -and submenus. Each of the them are only able to “accept” inputs of some kinds of data -the appropriate kind of data. That is the only way they can understand one each other -as if they were speaking the same language. That seems pretty normal. When this doesn’t happens properly, i.e., when you pass a kind of data that can not be understood for a given service, this service has to be deemed, not enabled or whatever (actually, I don’t ‘really’ know it; well, actually I don’t ‘really’ know anything about coding; that is).

The above said is what I have understood -’filtered’ from my absolutely lack of coding skills and from my limited english as well. So, sorry in advance if I have said something not exactly enough or probably even wrong. But, in fact, it’s the usual process of learning -trial and error.

The question you may ask yourself now is why I’m talking about things that even I say I can’t ‘really’ understand. Easy. Because trying to be somewhat helpful in some forum I said things there that are -fast all- wrong. I can maybe only save from my post the NSServices related comments. So, how I always feel the need of learning a bit more -I like to learn, even knowing the inherent limits of doing it in fields where I’m not an expert- and I also always try to be honest… I have read these docs and, as a natural result, I think that I have to say that I was not only WRONG but also not cautious enough… But, well, at least, I was not rude at all…

As always, any help is really welcome!!
Alas, my vacation -and most of my free time- is over…

Post a Comment

*
*