quicksilver/development/qsplugin_plist.txt · Last modified: 2005/12/29 09:33 (external edit)


Plug-in Info.plist entries

Quicksilver uses an set of plist entries to define what modules a plugin provides:

Keys are either class names, types, or bundle ids depending on the list. Values are class names.

Standard Entries

Several of these entries will be provided by XCode based on your project and target settings.

CFBundleIdentifier - MUST be unique. This is a Java-style identifier to uniquely name your plugin, like com.mycompany.Quicksilver.MyPlugIn. This identifier is used for duplicate resolution.

CFBundleName - Human-readable plugin name, used in the archive, like Displays Module

CFBundleShortVersionString - Human-readable version number, like 1.0.3a

CFBundleGetInfoString - Version string for Get Info, like MyPlugin 1.0.3a, © 2004 mycompany.com

CFBundleVersion - hex build number used for version checking - The PlugIn template includes a tool that will automatically increment the CFBundleVersion every time the plugin is built.

QSPlugIn

Information for plugin archive

author - author name. must match the name in plugin archive to be linked correctly

description - short description of plugin's purpose. HTML OK

extendedDescription - long description of plugin's purpose. HTML OK Plug-in Extended Description Template

versionChanges - dictionary. Keys:version numbers,

icon - internal icon name, either in resources or a QSResourceManager key

webIcon - url of remote 32×32 icon

relatedBundles - array of bundle ids of apps that this plugin is associated with.if undefined, qsrequirement's bundles will be used

categories - array of categories this plugin is in see PlugIn Categories

QSRequirements

Requirements for this plugin to load - Usually this is not required

bundles - Array of dictionaries listing bundles that this plugin requires. Each dictionary should have keys: name,id,version.

paths - Array of strings of pathnames that must exist on the user's system for this plugin to load.

feature - Integer: 0: Stable - always available, 1: Beta - only available when beta features are enabled, 2: Alpha - only available when beta features are enabled

version - Required QS version in hex

plugins - Array of dictionaries listing other plugins that this plugin requires. Each dictionary should have keys: name,id,version.

launchLoad - True if the plugin must be loaded on application load (can't be live loaded).

QSRegistration

Dictionary of arrays that registers handlers for a variety of tasks - (Key/Value) <Protocol>

If the QSRegistration entry is missing, the principal class is sent a +loadPlugIn: message when loaded. Use of QSRegistration is preferred, because it allows delayed loading of the code.

QSActionProviders: (Class/Class) - <QSActionProvider>

QSBundleChildHandlers: (BundleID/Class) Must respond to loadChildrenForObject:

QSBundleChildPresets: (BundleID/PresetID) – may not be functional yet Catalog Preset to use for children

QSObjectHandlers: (Type/Class) <QSObjectHandlerInformalProtocol> Conform to the QSObjectHandlerProtocol (QSObject.h)

QSObjectSources: (Class/Class) <QSObjectSource>

QSPreferencePanes: (ID/Dictionary) (QSPreferencePane sublass) Adds Preference Panes. Should be a dictionary with keys: name, description, icon, class. The class must subclass QSPreferencePane in the QSInterface framework

QSFSParsers: (Class/Class) <QSFSParser> File System Parsers

QSFSFileTypeParsers: (Class/Class) <QSFSParser> Parsers used to provide children to specific file types

QSChatMediators: (BundleID/Class) <QSChatMediator> (QSChatMediator subclass) Chat mediator

QSMailMediators: (BundleID/Class) Mail mediator

QSPresetAdditions

Array of new presets to add to Catalog

These have the same format as the Catalog.plist entries, so you can add items to the catalog and then move them over to this plist when done. Right now the ID of each entry must have the prefix “QSPreset” to behave correctly.

QSResourceAdditions

Array of new resource locators

Resource locators provide a mapping from a resource name to a locator, the locator dictionaries are described in the QSResourceManager docs