summaryrefslogtreecommitdiff
path: root/plugins/shotwell-transitions/shotwell-transitions.vala
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/shotwell-transitions/shotwell-transitions.vala')
-rw-r--r--plugins/shotwell-transitions/shotwell-transitions.vala90
1 files changed, 90 insertions, 0 deletions
diff --git a/plugins/shotwell-transitions/shotwell-transitions.vala b/plugins/shotwell-transitions/shotwell-transitions.vala
new file mode 100644
index 0000000..bd358c3
--- /dev/null
+++ b/plugins/shotwell-transitions/shotwell-transitions.vala
@@ -0,0 +1,90 @@
+/* Copyright 2011-2014 Yorba Foundation
+ *
+ * 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;
+
+private class ShotwellTransitions : Object, Spit.Module {
+ private Spit.Pluggable[] pluggables = new Spit.Pluggable[0];
+
+ public ShotwellTransitions(GLib.File module_file) {
+ GLib.File resource_directory = module_file.get_parent();
+
+ pluggables += new FadeEffectDescriptor(resource_directory);
+ pluggables += new SlideEffectDescriptor(resource_directory);
+ pluggables += new CrumbleEffectDescriptor(resource_directory);
+ pluggables += new BlindsEffectDescriptor(resource_directory);
+ pluggables += new CircleEffectDescriptor(resource_directory);
+ pluggables += new CirclesEffectDescriptor(resource_directory);
+ pluggables += new ClockEffectDescriptor(resource_directory);
+ pluggables += new SquaresEffectDescriptor(resource_directory);
+ pluggables += new ChessEffectDescriptor(resource_directory);
+ pluggables += new StripesEffectDescriptor(resource_directory);
+ }
+
+ public unowned string get_module_name() {
+ return _("Core Slideshow Transitions");
+ }
+
+ public unowned string get_version() {
+ return _VERSION;
+ }
+
+ public unowned string get_id() {
+ return "org.yorba.shotwell.transitions";
+ }
+
+ public unowned Spit.Pluggable[]? get_pluggables() {
+ return pluggables;
+ }
+}
+
+// This entry point is required for all SPIT modules.
+public Spit.Module? spit_entry_point(Spit.EntryPointParams *params) {
+ 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 ShotwellTransitions(params->module_file) : null;
+}
+
+// Base class for all transition descriptors in this module
+public abstract class ShotwellTransitionDescriptor : Object, Spit.Pluggable, Spit.Transitions.Descriptor {
+ private const string ICON_FILENAME = "slideshow-plugin.png";
+
+ private static Gdk.Pixbuf[] icon_pixbuf_set = null;
+
+ public ShotwellTransitionDescriptor(GLib.File resource_directory) {
+ if (icon_pixbuf_set == null)
+ icon_pixbuf_set = Resources.load_icon_set(resource_directory.get_child(ICON_FILENAME));
+ }
+
+ public int get_pluggable_interface(int min_host_interface, int max_host_interface) {
+ return Spit.negotiate_interfaces(min_host_interface, max_host_interface,
+ Spit.Transitions.CURRENT_INTERFACE);
+ }
+
+ public abstract unowned string get_id();
+
+ public abstract unowned string get_pluggable_name();
+
+ public void get_info(ref Spit.PluggableInfo info) {
+ info.authors = "Maxim Kartashev";
+ info.copyright = _("Copyright 2010 Maxim Kartashev, Copyright 2011-2014 Yorba Foundation");
+ info.translators = Resources.TRANSLATORS;
+ info.version = _VERSION;
+ info.website_name = Resources.WEBSITE_NAME;
+ info.website_url = Resources.WEBSITE_URL;
+ info.is_license_wordwrapped = false;
+ info.license = Resources.LICENSE;
+ info.icons = icon_pixbuf_set;
+ }
+
+ public void activation(bool enabled) {
+ }
+
+ public abstract Spit.Transitions.Effect create(Spit.HostInterface host);
+}
+