diff options
Diffstat (limited to 'samples')
| -rw-r--r-- | samples/simple-plugin/README | 27 | ||||
| -rw-r--r-- | samples/simple-plugin/simple-plugin.vala | 49 | 
2 files changed, 76 insertions, 0 deletions
| diff --git a/samples/simple-plugin/README b/samples/simple-plugin/README new file mode 100644 index 0000000..090389e --- /dev/null +++ b/samples/simple-plugin/README @@ -0,0 +1,27 @@ + +    simple-plugin +    ------------- +     +    This sample plugin implements the barebones for a SPIT module that can be +    loaded by Shotwell at startupp.  However, because it implements no +    Spit.Pluggables, is does not actually extend Shotwell's functionality. +     +    Note that the Shotwell plugin developer headers must be installed prior +    to building simple-plugin.  This can be done from the source code like so: +     +    $ ./configure --install-headers +    $ make +    $ make install +     +    You probably need to be root prior to running "make install" ("sudo make +    install" or some variant). +     +    NOTE: simple-plugin's Makefile is *not* designed to install the plugin in +    a system directory.  Rather, it installs the plugin in the user's plugin +    directory (in ~/.gnome2/shotwell/plugins).  To build and install  +    simple-plugin: +     +    $ make +    $ make install +     +    Copyright 2016 Software Freedom Conservancy Inc. diff --git a/samples/simple-plugin/simple-plugin.vala b/samples/simple-plugin/simple-plugin.vala new file mode 100644 index 0000000..8c57496 --- /dev/null +++ b/samples/simple-plugin/simple-plugin.vala @@ -0,0 +1,49 @@ +/* Copyright 2016 Software Freedom Conservancy Inc. + * + * This software is licensed under the GNU Lesser General Public License + * (version 2.1 or later).  See the COPYING file in this distribution. + */ + +extern const string _VERSION; + +// +// Each .so has a Spit.Module that describes the module and offers zero or more Spit.Pluggables +// to Shotwell to extend its functionality, +// + +private class SimplePluginModule : Object, Spit.Module { +    public unowned string get_module_name() { +        return "Simple Plugin Sample"; +    } +     +    public unowned string get_version() { +        return _VERSION; +    } +     +    // Every module needs to have a unique ID. +    public unowned string get_id() { +        return "org.yorba.shotwell.samples.simple-plugin"; +    } +     +    public unowned Spit.Pluggable[]? get_pluggables() { +        return null; +    } +} + +// +// spit_entry_point() is required for all SPIT modules. +// + +public Spit.Module? spit_entry_point(Spit.EntryPointParams *params) { +    // Spit.negotiate_interfaces is a simple way to deal with the parameters from the host +    params->module_spit_interface = Spit.negotiate_interfaces(params->host_min_spit_interface, +        params->host_max_spit_interface, Spit.CURRENT_INTERFACE); +     +    return (params->module_spit_interface != Spit.UNSUPPORTED_INTERFACE) +        ? new SimplePluginModule() : null; +} + +// This is here to keep valac happy. +private void dummy_main() { +} + | 
