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() { +} + |