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:
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
};
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user