Commit 1ba70be989a5ad0b5c85942beb1be7ab63cc9968

Authored by perry.werneck@gmail.com
1 parent 10dc406f

Incluindo tratamento das teclas +/- do teclado numérico na versão 5

src/gtk/actions.c
@@ -156,6 +156,28 @@ static void paste_next_action(GtkAction *action, GtkWidget *widget) @@ -156,6 +156,28 @@ static void paste_next_action(GtkAction *action, GtkWidget *widget)
156 lib3270_pastenext(v3270_get_session(widget)); 156 lib3270_pastenext(v3270_get_session(widget));
157 } 157 }
158 158
  159 +static void kp_subtract_action(GtkAction *action, GtkWidget *widget)
  160 +{
  161 + trace_action(action,widget);
  162 +
  163 + if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE))
  164 + v3270_backtab(widget);
  165 + else
  166 + v3270_set_string(widget,"-");
  167 +
  168 +}
  169 +
  170 +static void kp_add_action(GtkAction *action, GtkWidget *widget)
  171 +{
  172 + trace_action(action,widget);
  173 +
  174 + if(v3270_get_toggle(widget,LIB3270_TOGGLE_KP_ALTERNATIVE))
  175 + v3270_tab(widget);
  176 + else
  177 + v3270_set_string(widget,"+");
  178 +
  179 +}
  180 +
159 static void connect_standard_action(GtkAction *action, GtkWidget *widget, const gchar *name) 181 static void connect_standard_action(GtkAction *action, GtkWidget *widget, const gchar *name)
160 { 182 {
161 #undef DECLARE_LIB3270_ACTION 183 #undef DECLARE_LIB3270_ACTION
@@ -193,6 +215,8 @@ static void connect_standard_action(GtkAction *action, GtkWidget *widget, const @@ -193,6 +215,8 @@ static void connect_standard_action(GtkAction *action, GtkWidget *widget, const
193 { "hostname", hostname_action }, 215 { "hostname", hostname_action },
194 { "editcolors", editcolors_action }, 216 { "editcolors", editcolors_action },
195 { "about", about_dialog_action }, 217 { "about", about_dialog_action },
  218 + { "kpsubtract", kp_subtract_action },
  219 + { "kpadd", kp_add_action },
196 }; 220 };
197 221
198 int f; 222 int f;
src/gtk/v3270/keyboard.c
@@ -192,6 +192,37 @@ @@ -192,6 +192,37 @@
192 192
193 } 193 }
194 194
  195 + void v3270_tab(GtkWidget *widget)
  196 + {
  197 + g_return_if_fail(GTK_IS_V3270(widget));
  198 + lib3270_tab(GTK_V3270(widget)->host);
  199 + }
  200 +
  201 + void v3270_backtab(GtkWidget *widget)
  202 + {
  203 + g_return_if_fail(GTK_IS_V3270(widget));
  204 + lib3270_backtab(GTK_V3270(widget)->host);
  205 + }
  206 +
  207 + void v3270_set_string(GtkWidget *widget, const gchar *str)
  208 + {
  209 + H3270 *host;
  210 + gchar *utf;
  211 +
  212 + g_return_if_fail(GTK_IS_V3270(widget));
  213 +
  214 + host = GTK_V3270(widget)->host;
  215 +
  216 + utf = g_convert((char *) str, -1, lib3270_get_charset(host), "UTF-8", NULL, NULL, NULL);
  217 +
  218 + if(utf)
  219 + {
  220 + lib3270_set_string(host, (const unsigned char *) utf);
  221 + g_free(utf);
  222 + }
  223 +
  224 + }
  225 +
195 void v3270_key_commit(GtkIMContext *imcontext, gchar *str, v3270 *widget) 226 void v3270_key_commit(GtkIMContext *imcontext, gchar *str, v3270 *widget)
196 { 227 {
197 gchar *utf = g_convert((char *) str, -1, lib3270_get_charset(widget->host), "UTF-8", NULL, NULL, NULL); 228 gchar *utf = g_convert((char *) str, -1, lib3270_get_charset(widget->host), "UTF-8", NULL, NULL, NULL);
src/gtk/v3270/v3270.h
@@ -158,6 +158,10 @@ @@ -158,6 +158,10 @@
158 gchar * v3270_get_text(GtkWidget *widget,int offset, int len); 158 gchar * v3270_get_text(GtkWidget *widget,int offset, int len);
159 gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all); 159 gchar * v3270_get_region(GtkWidget *widget, gint start_pos, gint end_pos, gboolean all);
160 160
  161 + void v3270_set_string(GtkWidget *widget, const gchar *str);
  162 + void v3270_tab(GtkWidget *widget);
  163 + void v3270_backtab(GtkWidget *widget);
  164 +
161 // Cut & Paste 165 // Cut & Paste
162 gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end); 166 gboolean v3270_get_selection_bounds(GtkWidget *widget, gint *start, gint *end);
163 void v3270_unselect(GtkWidget *widget); 167 void v3270_unselect(GtkWidget *widget);