From 4171d9c77448f668a759a8146e117a59539f80bf Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 27 Feb 2010 13:14:28 +0100 Subject: [PATCH] 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(+) diff --git a/app/tools/gimptexttool-editor.c b/app/tools/gimptexttool-editor.c index e4f8906445..9e5c1b5e0d 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); } } @@ -1019,6 +1030,20 @@ gimp_text_tool_select_all (GimpTextTool *text_tool, gimp_draw_tool_resume (GIMP_DRAW_TOOL (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, diff --git a/app/widgets/gimptextproxy.c b/app/widgets/gimptextproxy.c index 1d3fe55109..b7dab8eb02 100644 --- a/app/widgets/gimptextproxy.c +++ b/app/widgets/gimptextproxy.c @@ -21,10 +21,21 @@ #include "config.h" #include +#include + +#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 fa2c03d787..554840f177 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); };