[gimp] app: add signals bindings to change baseline and spacing



commit 4171d9c77448f668a759a8146e117a59539f80bf
Author: Michael Natterer <mitch gimp org>
Date:   Sat Feb 27 13:14:28 2010 +0100

    app: add signals bindings to change baseline and spacing
    
    Bind them to Alt+up/down/left/right and connect to the signals in
    the text tool editor. The callbacks do nothing yet.

 app/tools/gimptexttool-editor.c |   25 +++++++++++++++++++
 app/widgets/gimptextproxy.c     |   50 +++++++++++++++++++++++++++++++++++++++
 app/widgets/gimptextproxy.h     |    5 ++++
 3 files changed, 80 insertions(+), 0 deletions(-)
---
diff --git a/app/tools/gimptexttool-editor.c b/app/tools/gimptexttool-editor.c
index e4f8906..9e5c1b5 100644
--- a/app/tools/gimptexttool-editor.c
+++ b/app/tools/gimptexttool-editor.c
@@ -68,6 +68,11 @@ static void   gimp_text_tool_backspace          (GimpTextTool    *text_tool);
 static void   gimp_text_tool_toggle_overwrite   (GimpTextTool    *text_tool);
 static void   gimp_text_tool_select_all         (GimpTextTool    *text_tool,
                                                  gboolean         select);
+static void   gimp_text_tool_change_baseline    (GimpTextTool    *text_tool,
+                                                 gint             count);
+static void   gimp_text_tool_change_spacing     (GimpTextTool    *text_tool,
+                                                 gint             count);
+
 static void   gimp_text_tool_options_notify     (GimpTextOptions *options,
                                                  GParamSpec      *pspec,
                                                  GimpTextTool    *text_tool);
@@ -601,6 +606,12 @@ gimp_text_tool_ensure_proxy (GimpTextTool *text_tool)
       g_signal_connect_swapped (text_tool->proxy_text_view, "select-all",
                                 G_CALLBACK (gimp_text_tool_select_all),
                                 text_tool);
+      g_signal_connect_swapped (text_tool->proxy_text_view, "change-baseline",
+                                G_CALLBACK (gimp_text_tool_change_baseline),
+                                text_tool);
+      g_signal_connect_swapped (text_tool->proxy_text_view, "change-spacing",
+                                G_CALLBACK (gimp_text_tool_change_spacing),
+                                text_tool);
     }
 }
 
@@ -1020,6 +1031,20 @@ gimp_text_tool_select_all (GimpTextTool *text_tool,
 }
 
 static void
+gimp_text_tool_change_baseline (GimpTextTool *text_tool,
+                                gint          count)
+{
+  g_printerr ("%s: count = %d\n", G_STRFUNC, count);
+}
+
+static void
+gimp_text_tool_change_spacing (GimpTextTool *text_tool,
+                               gint          count)
+{
+  g_printerr ("%s: count = %d\n", G_STRFUNC, count);
+}
+
+static void
 gimp_text_tool_options_notify (GimpTextOptions *options,
                                GParamSpec      *pspec,
                                GimpTextTool    *text_tool)
diff --git a/app/widgets/gimptextproxy.c b/app/widgets/gimptextproxy.c
index 1d3fe55..b7dab8e 100644
--- a/app/widgets/gimptextproxy.c
+++ b/app/widgets/gimptextproxy.c
@@ -21,10 +21,21 @@
 #include "config.h"
 
 #include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
+
+#include "core/gimpmarshal.h"
 
 #include "gimptextproxy.h"
 
 
+enum
+{
+  CHANGE_BASELINE,
+  CHANGE_SPACING,
+  LAST_SIGNAL
+};
+
+
 static void   gimp_text_proxy_move_cursor        (GtkTextView     *text_view,
                                                   GtkMovementStep  step,
                                                   gint             count,
@@ -43,11 +54,14 @@ static void   gimp_text_proxy_toggle_overwrite   (GtkTextView     *text_view);
 
 G_DEFINE_TYPE (GimpTextProxy, gimp_text_proxy, GTK_TYPE_TEXT_VIEW)
 
+static guint proxy_signals[LAST_SIGNAL] = { 0 };
+
 
 static void
 gimp_text_proxy_class_init (GimpTextProxyClass *klass)
 {
   GtkTextViewClass *tv_class = GTK_TEXT_VIEW_CLASS (klass);
+  GtkBindingSet    *binding_set;
 
   tv_class->move_cursor        = gimp_text_proxy_move_cursor;
   tv_class->insert_at_cursor   = gimp_text_proxy_insert_at_cursor;
@@ -57,6 +71,42 @@ gimp_text_proxy_class_init (GimpTextProxyClass *klass)
   tv_class->copy_clipboard     = gimp_text_proxy_copy_clipboard;
   tv_class->paste_clipboard    = gimp_text_proxy_paste_clipboard;
   tv_class->toggle_overwrite   = gimp_text_proxy_toggle_overwrite;
+
+  proxy_signals[CHANGE_BASELINE] =
+    g_signal_new ("change-baseline",
+		  G_TYPE_FROM_CLASS (klass),
+		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+		  G_STRUCT_OFFSET (GimpTextProxyClass, change_baseline),
+		  NULL, NULL,
+		  gimp_marshal_VOID__INT,
+		  G_TYPE_NONE, 1,
+		  G_TYPE_INT);
+
+  proxy_signals[CHANGE_SPACING] =
+    g_signal_new ("change-spacing",
+		  G_TYPE_FROM_CLASS (klass),
+		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+		  G_STRUCT_OFFSET (GimpTextProxyClass, change_spacing),
+		  NULL, NULL,
+		  gimp_marshal_VOID__INT,
+		  G_TYPE_NONE, 1,
+		  G_TYPE_INT);
+
+  binding_set = gtk_binding_set_by_class (klass);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_Up, GDK_MOD1_MASK,
+				"change-baseline", 1,
+                                G_TYPE_INT, 1);
+  gtk_binding_entry_add_signal (binding_set, GDK_Down, GDK_MOD1_MASK,
+				"change-baseline", 1,
+                                G_TYPE_INT, -1);
+
+  gtk_binding_entry_add_signal (binding_set, GDK_Left, GDK_MOD1_MASK,
+				"change-spacing", 1,
+                                G_TYPE_INT, -1);
+  gtk_binding_entry_add_signal (binding_set, GDK_Right, GDK_MOD1_MASK,
+				"change-spacing", 1,
+                                G_TYPE_INT, 1);
 }
 
 static void
diff --git a/app/widgets/gimptextproxy.h b/app/widgets/gimptextproxy.h
index fa2c03d..554840f 100644
--- a/app/widgets/gimptextproxy.h
+++ b/app/widgets/gimptextproxy.h
@@ -40,6 +40,11 @@ struct _GimpTextProxy
 struct _GimpTextProxyClass
 {
   GtkTextViewClass  parent_class;
+
+  void (* change_baseline) (GimpTextProxy *proxy,
+                            gint           count);
+  void (* change_spacing)  (GimpTextProxy *proxy,
+                            gint           count);
 };
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]