summaryrefslogtreecommitdiff
path: root/plugins/fullscreen
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/fullscreen')
-rw-r--r--plugins/fullscreen/eom-fullscreen-plugin.c120
-rw-r--r--plugins/fullscreen/eom-fullscreen-plugin.h53
-rw-r--r--plugins/fullscreen/fullscreen.eom-plugin.desktop.in9
3 files changed, 182 insertions, 0 deletions
diff --git a/plugins/fullscreen/eom-fullscreen-plugin.c b/plugins/fullscreen/eom-fullscreen-plugin.c
new file mode 100644
index 0000000..baec887
--- /dev/null
+++ b/plugins/fullscreen/eom-fullscreen-plugin.c
@@ -0,0 +1,120 @@
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "eom-fullscreen-plugin.h"
+
+#include <gmodule.h>
+#include <glib/gi18n-lib.h>
+
+#include <eom-debug.h>
+#include <eom-scroll-view.h>
+
+#define WINDOW_DATA_KEY "EomFullscreenWindowData"
+
+EOM_PLUGIN_REGISTER_TYPE(EomFullscreenPlugin, eom_fullscreen_plugin)
+
+typedef struct
+{
+ gulong signal_id;
+} WindowData;
+
+static gboolean
+on_button_press (GtkWidget *button, GdkEventButton *event, EomWindow *window)
+{
+ if (event->button == 1 && event->type == GDK_2BUTTON_PRESS) {
+ EomWindowMode mode = eom_window_get_mode (window);
+
+ if (mode == EOM_WINDOW_MODE_SLIDESHOW ||
+ mode == EOM_WINDOW_MODE_FULLSCREEN)
+ eom_window_set_mode (window, EOM_WINDOW_MODE_NORMAL);
+ else if (mode == EOM_WINDOW_MODE_NORMAL)
+ eom_window_set_mode (window, EOM_WINDOW_MODE_FULLSCREEN);
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void
+free_window_data (WindowData *data)
+{
+ g_return_if_fail (data != NULL);
+
+ eom_debug (DEBUG_PLUGINS);
+
+ g_free (data);
+}
+
+static void
+eom_fullscreen_plugin_init (EomFullscreenPlugin *plugin)
+{
+ eom_debug_message (DEBUG_PLUGINS, "EomFullscreenPlugin initializing");
+}
+
+static void
+eom_fullscreen_plugin_finalize (GObject *object)
+{
+ eom_debug_message (DEBUG_PLUGINS, "EomFullscreenPlugin finalizing");
+
+ G_OBJECT_CLASS (eom_fullscreen_plugin_parent_class)->finalize (object);
+}
+
+static void
+impl_activate (EomPlugin *plugin,
+ EomWindow *window)
+{
+ GtkWidget *view = eom_window_get_view (window);
+ WindowData *data;
+
+ eom_debug (DEBUG_PLUGINS);
+
+ data = g_new (WindowData, 1);
+
+ data->signal_id = g_signal_connect (G_OBJECT (view),
+ "button-press-event",
+ G_CALLBACK (on_button_press),
+ window);
+
+ g_object_set_data_full (G_OBJECT (window),
+ WINDOW_DATA_KEY,
+ data,
+ (GDestroyNotify) free_window_data);
+}
+
+static void
+impl_deactivate (EomPlugin *plugin,
+ EomWindow *window)
+{
+ GtkWidget *view = eom_window_get_view (window);
+ WindowData *data;
+
+ data = (WindowData *) g_object_get_data (G_OBJECT (window),
+ WINDOW_DATA_KEY);
+
+ g_signal_handler_disconnect (view, data->signal_id);
+
+ g_object_set_data (G_OBJECT (window),
+ WINDOW_DATA_KEY,
+ NULL);
+}
+
+static void
+impl_update_ui (EomPlugin *plugin,
+ EomWindow *window)
+{
+}
+
+static void
+eom_fullscreen_plugin_class_init (EomFullscreenPluginClass *klass)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ EomPluginClass *plugin_class = EOM_PLUGIN_CLASS (klass);
+
+ object_class->finalize = eom_fullscreen_plugin_finalize;
+
+ plugin_class->activate = impl_activate;
+ plugin_class->deactivate = impl_deactivate;
+ plugin_class->update_ui = impl_update_ui;
+}
diff --git a/plugins/fullscreen/eom-fullscreen-plugin.h b/plugins/fullscreen/eom-fullscreen-plugin.h
new file mode 100644
index 0000000..2df3a3f
--- /dev/null
+++ b/plugins/fullscreen/eom-fullscreen-plugin.h
@@ -0,0 +1,53 @@
+#ifndef __EOM_FULLSCREEN_PLUGIN_H__
+#define __EOM_FULLSCREEN_PLUGIN_H__
+
+#include <glib.h>
+#include <glib-object.h>
+#include <eom-plugin.h>
+
+G_BEGIN_DECLS
+
+/*
+ * Type checking and casting macros
+ */
+#define EOM_TYPE_FULLSCREEN_PLUGIN (eom_fullscreen_plugin_get_type ())
+#define EOM_FULLSCREEN_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOM_TYPE_FULLSCREEN_PLUGIN, EomFullscreenPlugin))
+#define EOM_FULLSCREEN_PLUGIN_CLASS(k) G_TYPE_CHECK_CLASS_CAST((k), EOM_TYPE_FULLSCREEN_PLUGIN, EomFullscreenPluginClass))
+#define EOM_IS_FULLSCREEN_PLUGIN(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOM_TYPE_FULLSCREEN_PLUGIN))
+#define EOM_IS_FULLSCREEN_PLUGIN_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), EOM_TYPE_FULLSCREEN_PLUGIN))
+#define EOM_FULLSCREEN_PLUGIN_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), EOM_TYPE_FULLSCREEN_PLUGIN, EomFullscreenPluginClass))
+
+/* Private structure type */
+typedef struct _EomFullscreenPluginPrivate EomFullscreenPluginPrivate;
+
+/*
+ * Main object structure
+ */
+typedef struct _EomFullscreenPlugin EomFullscreenPlugin;
+
+struct _EomFullscreenPlugin
+{
+ EomPlugin parent_instance;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _EomFullscreenPluginClass EomFullscreenPluginClass;
+
+struct _EomFullscreenPluginClass
+{
+ EomPluginClass parent_class;
+};
+
+/*
+ * Public methods
+ */
+GType eom_fullscreen_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_FULLSCREEN_PLUGIN_H__ */
diff --git a/plugins/fullscreen/fullscreen.eom-plugin.desktop.in b/plugins/fullscreen/fullscreen.eom-plugin.desktop.in
new file mode 100644
index 0000000..6c55969
--- /dev/null
+++ b/plugins/fullscreen/fullscreen.eom-plugin.desktop.in
@@ -0,0 +1,9 @@
+[Eom Plugin]
+Module=fullscreen
+IAge=2
+_Name=Fullscreen with double-click
+Icon=gtk-fullscreen
+_Description=Activate fullscreen mode with double-click
+Authors=Lucas Rocha <[email protected]>
+Copyright=Copyright © 2007 Lucas Rocha
+Website=http://www.gnome.org/projects/eom