summaryrefslogtreecommitdiff
path: root/plugins/reload
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/reload')
-rw-r--r--plugins/reload/eom-reload-plugin.c151
-rw-r--r--plugins/reload/eom-reload-plugin.h53
-rw-r--r--plugins/reload/reload.eom-plugin.desktop.in9
3 files changed, 213 insertions, 0 deletions
diff --git a/plugins/reload/eom-reload-plugin.c b/plugins/reload/eom-reload-plugin.c
new file mode 100644
index 0000000..9b3dcc7
--- /dev/null
+++ b/plugins/reload/eom-reload-plugin.c
@@ -0,0 +1,151 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "eom-reload-plugin.h"
+
+#include <gmodule.h>
+#include <glib/gi18n-lib.h>
+
+#include <eom-debug.h>
+#include <eom-scroll-view.h>
+#include <eom-thumb-view.h>
+#include <eom-image.h>
+
+#define WINDOW_DATA_KEY "EomReloadWindowData"
+
+EOM_PLUGIN_REGISTER_TYPE(EomReloadPlugin, eom_reload_plugin)
+
+typedef struct
+{
+ GtkActionGroup *ui_action_group;
+ guint ui_id;
+} WindowData;
+
+static void
+reload_cb (GtkAction *action,
+ EomWindow *window)
+{
+ eom_window_reload_image (window);
+}
+
+static const gchar * const ui_definition =
+ "<ui><menubar name=\"MainMenu\">"
+ "<menu name=\"ToolsMenu\" action=\"Tools\"><separator/>"
+ "<menuitem name=\"EomPluginReload\" action=\"EomPluginRunReload\"/>"
+ "<separator/></menu></menubar>"
+ "<popup name=\"ViewPopup\"><separator/>"
+ "<menuitem action=\"EomPluginRunReload\"/><separator/>"
+ "</popup></ui>";
+
+static const GtkActionEntry action_entries[] =
+{
+ { "EomPluginRunReload",
+ GTK_STOCK_REFRESH,
+ N_("Reload Image"),
+ "R",
+ N_("Reload current image"),
+ G_CALLBACK (reload_cb) }
+};
+
+static void
+free_window_data (WindowData *data)
+{
+ g_return_if_fail (data != NULL);
+
+ eom_debug (DEBUG_PLUGINS);
+
+ g_object_unref (data->ui_action_group);
+
+ g_free (data);
+}
+
+static void
+eom_reload_plugin_init (EomReloadPlugin *plugin)
+{
+ eom_debug_message (DEBUG_PLUGINS, "EomReloadPlugin initializing");
+}
+
+static void
+eom_reload_plugin_finalize (GObject *object)
+{
+ eom_debug_message (DEBUG_PLUGINS, "EomReloadPlugin finalizing");
+
+ G_OBJECT_CLASS (eom_reload_plugin_parent_class)->finalize (object);
+}
+
+static void
+impl_activate (EomPlugin *plugin,
+ EomWindow *window)
+{
+ GtkUIManager *manager;
+ WindowData *data;
+
+ eom_debug (DEBUG_PLUGINS);
+
+ data = g_new (WindowData, 1);
+
+ manager = eom_window_get_ui_manager (window);
+
+ data->ui_action_group = gtk_action_group_new ("EomReloadPluginActions");
+
+ gtk_action_group_set_translation_domain (data->ui_action_group,
+ GETTEXT_PACKAGE);
+
+ gtk_action_group_add_actions (data->ui_action_group,
+ action_entries,
+ G_N_ELEMENTS (action_entries),
+ window);
+
+ gtk_ui_manager_insert_action_group (manager,
+ data->ui_action_group,
+ -1);
+
+ g_object_set_data_full (G_OBJECT (window),
+ WINDOW_DATA_KEY,
+ data,
+ (GDestroyNotify) free_window_data);
+
+ data->ui_id = gtk_ui_manager_add_ui_from_string (manager,
+ ui_definition,
+ -1, NULL);
+ g_warn_if_fail (data->ui_id != 0);
+}
+
+static void
+impl_deactivate (EomPlugin *plugin,
+ EomWindow *window)
+{
+ GtkUIManager *manager;
+ WindowData *data;
+
+ eom_debug (DEBUG_PLUGINS);
+
+ manager = eom_window_get_ui_manager (window);
+
+ data = (WindowData *) g_object_get_data (G_OBJECT (window),
+ WINDOW_DATA_KEY);
+ g_return_if_fail (data != NULL);
+
+ gtk_ui_manager_remove_ui (manager,
+ data->ui_id);
+
+ gtk_ui_manager_remove_action_group (manager,
+ data->ui_action_group);
+
+ g_object_set_data (G_OBJECT (window),
+ WINDOW_DATA_KEY,
+ NULL);
+}
+
+static void
+eom_reload_plugin_class_init (EomReloadPluginClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ EomPluginClass *plugin_class = EOM_PLUGIN_CLASS (klass);
+
+ object_class->finalize = eom_reload_plugin_finalize;
+
+ plugin_class->activate = impl_activate;
+ plugin_class->deactivate = impl_deactivate;
+}
diff --git a/plugins/reload/eom-reload-plugin.h b/plugins/reload/eom-reload-plugin.h
new file mode 100644
index 0000000..19a5d4c
--- /dev/null
+++ b/plugins/reload/eom-reload-plugin.h
@@ -0,0 +1,53 @@
+#ifndef __EOM_RELOAD_PLUGIN_H__
+#define __EOM_RELOAD_PLUGIN_H__
+
+#include <glib.h>
+#include <glib-object.h>
+#include <eom-plugin.h>
+
+G_BEGIN_DECLS
+
+/*
+ * Type checking and casting macros
+ */
+#define EOM_TYPE_RELOAD_PLUGIN (eom_reload_plugin_get_type ())
+#define EOM_RELOAD_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_RELOAD_PLUGIN, EomReloadPlugin))
+#define EOM_RELOAD_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_RELOAD_PLUGIN, EomReloadPluginClass))
+#define EOM_IS_RELOAD_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_RELOAD_PLUGIN))
+#define EOM_IS_RELOAD_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_RELOAD_PLUGIN))
+#define EOM_RELOAD_PLUGIN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_RELOAD_PLUGIN, EomReloadPluginClass))
+
+/* Private structure type */
+typedef struct _EomReloadPluginPrivate EomReloadPluginPrivate;
+
+/*
+ * Main object structure
+ */
+typedef struct _EomReloadPlugin EomReloadPlugin;
+
+struct _EomReloadPlugin
+{
+ EomPlugin parent_instance;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _EomReloadPluginClass EomReloadPluginClass;
+
+struct _EomReloadPluginClass
+{
+ EomPluginClass parent_class;
+};
+
+/*
+ * Public methods
+ */
+GType eom_reload_plugin_get_type (void) G_GNUC_CONST;
+
+/* All the plugins must implement this function */
+G_MODULE_EXPORT GType register_eom_plugin (GTypeModule *module);
+
+G_END_DECLS
+
+#endif /* __EOM_RELOAD_PLUGIN_H__ */
diff --git a/plugins/reload/reload.eom-plugin.desktop.in b/plugins/reload/reload.eom-plugin.desktop.in
new file mode 100644
index 0000000..eec527b
--- /dev/null
+++ b/plugins/reload/reload.eom-plugin.desktop.in
@@ -0,0 +1,9 @@
+[Eom Plugin]
+Module=reload
+IAge=2
+_Name=Reload Image
+Icon=gtk-refresh
+_Description=Reload current image
+Authors=Lucas Rocha <[email protected]>
+Copyright=Copyright © 2007 Lucas Rocha
+Website=http://www.gnome.org/projects/eom