From 1ba70be989a5ad0b5c85942beb1be7ab63cc9968 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Wed, 2 May 2012 13:24:07 +0000 Subject: [PATCH] Incluindo tratamento das teclas +/- do teclado numérico na versão 5 --- src/gtk/actions.c | 24 ++++++++++++++++++++++++ src/gtk/v3270/keyboard.c | 31 +++++++++++++++++++++++++++++++ src/gtk/v3270/v3270.h | 4 ++++ 3 files changed, 59 insertions(+), 0 deletions(-) diff --git a/src/gtk/actions.c b/src/gtk/actions.c index 7a53c2a..98c23d8 100644 --- a/src/gtk/actions.c +++ b/src/gtk/actions.c @@ -156,6 +156,28 @@ static void paste_next_action(GtkAction *action, GtkWidget *widget) lib3270_pastenext(v3270_get_session(widget)); } +static void kp_subtract_action(GtkAction *action, GtkWidget *widget) +{ + trace_action(action,widget); + + if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE)) + v3270_backtab(widget); + else + v3270_set_string(widget,"-"); + +} + +static void kp_add_action(GtkAction *action, GtkWidget *widget) +{ + trace_action(action,widget); + + if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE)) + v3270_tab(widget); + else + v3270_set_string(widget,"+"); + +} + static void connect_standard_action(GtkAction *action, GtkWidget *widget, const gchar *name) { #undef DECLARE_LIB3270_ACTION @@ -193,6 +215,8 @@ static void connect_standard_action(GtkAction *action, GtkWidget *widget, const { "hostname", hostname_action }, { "editcolors", editcolors_action }, { "about", about_dialog_action }, + { "kpsubtract", kp_subtract_action }, + { "kpadd", kp_add_action }, }; int f; diff --git a/src/gtk/v3270/keyboard.c b/src/gtk/v3270/keyboard.c index 2f3bfcf..6fe3087 100644 --- a/src/gtk/v3270/keyboard.c +++ b/src/gtk/v3270/keyboard.c @@ -192,6 +192,37 @@ } + void v3270_tab(GtkWidget *widget) + { + g_return_if_fail(GTK_IS_V3270(widget)); + lib3270_tab(GTK_V3270(widget)->host); + } + + void v3270_backtab(GtkWidget *widget) + { + g_return_if_fail(GTK_IS_V3270(widget)); + lib3270_backtab(GTK_V3270(widget)->host); + } + + void v3270_set_string(GtkWidget *widget, const gchar *str) + { + H3270 *host; + gchar *utf; + + g_return_if_fail(GTK_IS_V3270(widget)); + + host = GTK_V3270(widget)->host; + + utf = g_convert((char *) str, -1, lib3270_get_charset(host), "UTF-8", NULL, NULL, NULL); + + if(utf) + { + lib3270_set_string(host, (const unsigned char *) utf); + g_free(utf); + } + + } + void v3270_key_commit(GtkIMContext *imcontext, gchar *str, v3270 *widget) { gchar *utf = g_convert((char *) str, -1, lib3270_get_charset(widget->host), "UTF-8", NULL, NULL, NULL); diff --git a/src/gtk/v3270/v3270.h b/src/gtk/v3270/v3270.h index e531cf7..fb39726 100644 --- a/src/gtk/v3270/v3270.h +++ b/src/gtk/v3270/v3270.h @@ -158,6 +158,10 @@ gchar * v3270_get_text(GtkWidget *widget,int offset, int len); gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all); + void v3270_set_string(GtkWidget *widget, const gchar *str); + void v3270_tab(GtkWidget *widget); + void v3270_backtab(GtkWidget *widget); + // Cut & Paste gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end); void v3270_unselect(GtkWidget *widget); -- libgit2 0.21.2