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.
This commit is contained in:
Michael Natterer
2010-02-27 13:14:28 +01:00
parent 14194a3be5
commit 4171d9c774
3 changed files with 80 additions and 0 deletions

View File

@ -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,

View File

@ -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

View File

@ -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);
};