SF.net SVN: geany-plugins:[1837] trunk/geany-plugins/webhelper

colombanw at users.sourceforge.net colombanw at xxxxx
Thu Jan 13 19:40:26 UTC 2011


Revision: 1837
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1837&view=rev
Author:   colombanw
Date:     2011-01-13 19:40:26 +0000 (Thu, 13 Jan 2011)

Log Message:
-----------
WebHelper: Add support for keybindings (to come)

This uses Geany's keybinding mechanism, but also supports the
keybindings in the other windows (actually, in the web view and
inspector).

Modified Paths:
--------------
    trunk/geany-plugins/webhelper/src/Makefile.am
    trunk/geany-plugins/webhelper/src/gwh-browser.c
    trunk/geany-plugins/webhelper/src/gwh-plugin.c
    trunk/geany-plugins/webhelper/wscript_build

Added Paths:
-----------
    trunk/geany-plugins/webhelper/src/gwh-keybindings.c
    trunk/geany-plugins/webhelper/src/gwh-keybindings.h

Modified: trunk/geany-plugins/webhelper/src/Makefile.am
===================================================================
--- trunk/geany-plugins/webhelper/src/Makefile.am	2011-01-13 19:39:51 UTC (rev 1836)
+++ trunk/geany-plugins/webhelper/src/Makefile.am	2011-01-13 19:40:26 UTC (rev 1837)
@@ -12,10 +12,12 @@
 
 
 sources         = gwh-browser.c \
+                  gwh-keybindings.c \
                   gwh-plugin.c \
                   gwh-settings.c \
                   gwh-utils.c
 headers         = gwh-browser.h \
+                  gwh-keybindings.h \
                   gwh-plugin.h \
                   gwh-settings.h \
                   gwh-utils.h

Modified: trunk/geany-plugins/webhelper/src/gwh-browser.c
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-browser.c	2011-01-13 19:39:51 UTC (rev 1836)
+++ trunk/geany-plugins/webhelper/src/gwh-browser.c	2011-01-13 19:40:26 UTC (rev 1837)
@@ -29,6 +29,7 @@
 
 #include "gwh-utils.h"
 #include "gwh-settings.h"
+#include "gwh-keybindings.h"
 
 
 #if ! GTK_CHECK_VERSION (2, 18, 0)
@@ -238,6 +239,7 @@
   inspector_hide_window (self);
   gtk_toggle_tool_button_set_active (GTK_TOGGLE_TOOL_BUTTON (self->priv->item_inspector),
                                      FALSE);
+  gtk_widget_grab_focus (self->priv->web_view);
   
   return TRUE;
 }
@@ -838,6 +840,11 @@
   g_signal_connect (G_OBJECT (self->priv->web_view), "scroll-event",
                     G_CALLBACK (on_web_view_scroll_event), self);
   
+  g_signal_connect (self->priv->web_view, "key-press-event",
+                    G_CALLBACK (gwh_keybindings_handle_event), self);
+  g_signal_connect (self->priv->inspector_view, "key-press-event",
+                    G_CALLBACK (gwh_keybindings_handle_event), self);
+  
   gtk_widget_grab_focus (self->priv->url_entry);
   
   g_signal_connect (self->priv->settings, "notify::browser-last-uri",

Added: trunk/geany-plugins/webhelper/src/gwh-keybindings.c
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-keybindings.c	                        (rev 0)
+++ trunk/geany-plugins/webhelper/src/gwh-keybindings.c	2011-01-13 19:40:26 UTC (rev 1837)
@@ -0,0 +1,91 @@
+/*
+ *  
+ *  Copyright (C) 2010-2011  Colomban Wendling <ban at herbesfolles.org>
+ *  
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *  
+ */
+
+#include "gwh-keybindings.h"
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <geanyplugin.h>
+#include <geany.h>
+
+#include "gwh-plugin.h"
+
+
+static GeanyKeyGroup *G_key_group;
+
+
+void
+gwh_keybindings_init (void)
+{
+  G_key_group = plugin_set_key_group (geany_plugin, "webhelper", GWH_KB_COUNT,
+                                      NULL);
+}
+
+void
+gwh_keybindings_cleanup (void)
+{
+  G_key_group = NULL;
+}
+
+GeanyKeyGroup *
+gwh_keybindings_get_group (void)
+{
+  return G_key_group;
+}
+
+/**
+ * ghw_keybindings_handle_event:
+ * @widget: Unused, may be %NULL
+ * @event: A GdkEventKey to handle
+ * @data: Unused, may be %NULL
+ * 
+ * Handles a GDK key event and calls corresponding keybindings callbacks.
+ * This function is meant to be used as the callback for a
+ * GtkWidget:key-press-event signal.
+ * 
+ * Returns: Whether the event was handled or not
+ */
+gboolean
+gwh_keybindings_handle_event (GtkWidget    *widget,
+                              GdkEventKey  *event,
+                              gpointer      data)
+{
+  guint     mods = event->state & gtk_accelerator_get_default_mod_mask ();
+  gboolean  handled = FALSE;
+  guint     i;
+  
+  for (i = 0; ! handled && i < GWH_KB_COUNT; i++) {
+    GeanyKeyBinding *kb;
+    
+    kb = keybindings_get_item (G_key_group, i);
+    if (kb->key == event->keyval && kb->mods == mods) {
+      if (kb->callback) {
+        kb->callback (i);
+      /* We can't handle key group callback since we can't acces key group
+       * fields. However, we don't use it so it's not a real problem. */
+      /*} else if (G_key_group->callback) {
+        G_key_group->callback (i);*/
+      }
+      handled = TRUE;
+    }
+  }
+  
+  return handled;
+}

Added: trunk/geany-plugins/webhelper/src/gwh-keybindings.h
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-keybindings.h	                        (rev 0)
+++ trunk/geany-plugins/webhelper/src/gwh-keybindings.h	2011-01-13 19:40:26 UTC (rev 1837)
@@ -0,0 +1,51 @@
+/*
+ *  
+ *  Copyright (C) 2010-2011  Colomban Wendling <ban at herbesfolles.org>
+ *  
+ *  This program is free software: you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation, either version 3 of the License, or
+ *  (at your option) any later version.
+ *  
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *  
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *  
+ */
+
+#ifndef H_GWH_KEYBINDINGS
+#define H_GWH_KEYBINDINGS
+
+#include <glib.h>
+#include <gtk/gtk.h>
+
+#include <geanyplugin.h>
+#include <geany.h>
+
+G_BEGIN_DECLS
+
+
+enum {
+  GWH_KB_COUNT
+};
+
+
+G_GNUC_INTERNAL
+void            gwh_keybindings_init          (void);
+G_GNUC_INTERNAL
+void            gwh_keybindings_cleanup       (void);
+G_GNUC_INTERNAL
+GeanyKeyGroup  *gwh_keybindings_get_group     (void);
+G_GNUC_INTERNAL
+gboolean        gwh_keybindings_handle_event  (GtkWidget   *widget G_GNUC_UNUSED,
+                                               GdkEventKey *event,
+                                               gpointer     data G_GNUC_UNUSED);
+
+
+G_END_DECLS
+
+#endif /* guard */

Modified: trunk/geany-plugins/webhelper/src/gwh-plugin.c
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-plugin.c	2011-01-13 19:39:51 UTC (rev 1836)
+++ trunk/geany-plugins/webhelper/src/gwh-plugin.c	2011-01-13 19:40:26 UTC (rev 1837)
@@ -33,6 +33,7 @@
 #include "gwh-browser.h"
 #include "gwh-settings.h"
 #include "gwh-plugin.h"
+#include "gwh-keybindings.h"
 
 
 GeanyPlugin      *geany_plugin;
@@ -296,6 +297,7 @@
   plugin_module_make_resident (geany_plugin);
   
   load_config ();
+  gwh_keybindings_init ();
   
   G_browser = gwh_browser_new ();
   g_signal_connect (G_browser, "populate-popup",
@@ -317,6 +319,7 @@
 {
   detach_browser ();
   
+  gwh_keybindings_cleanup ();
   save_config ();
 }
 

Modified: trunk/geany-plugins/webhelper/wscript_build
===================================================================
--- trunk/geany-plugins/webhelper/wscript_build	2011-01-13 19:39:51 UTC (rev 1836)
+++ trunk/geany-plugins/webhelper/wscript_build	2011-01-13 19:40:26 UTC (rev 1837)
@@ -27,11 +27,13 @@
 name = 'WebHelper'
 sources = [
     'src/gwh-browser.c',
+    'src/gwh-keybindings.c',
     'src/gwh-plugin.c',
     'src/gwh-settings.c',
     'src/gwh-utils.c']
 header = [
     'src/gwh-browser.h',
+    'src/gwh-keybindings.h',
     'src/gwh-plugin.h',
     'src/gwh-settings.h',
     'src/gwh-utils.h']


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Plugins-Commits mailing list