Commit 394b8b924c373eb16ab82dd8b445b3252643687a

Authored by perry.werneck@gmail.com
1 parent 597d8ae9

Incluindo action_string

Showing 2 changed files with 27 additions and 1 deletions   Show diff stats
src/lib3270/kybd.c
@@ -2521,7 +2521,8 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int @@ -2521,7 +2521,8 @@ LIB3270_EXPORT int lib3270_emulate_input(H3270 *hSession, char *s, int len, int
2521 return 0; 2521 return 0;
2522 } 2522 }
2523 2523
2524 - if (pasting && IN_3270) { 2524 + if (pasting && IN_3270)
  2525 + {
2525 2526
2526 /* Check for cursor wrap to top of screen. */ 2527 /* Check for cursor wrap to top of screen. */
2527 if (hSession->cursor_addr < orig_addr) 2528 if (hSession->cursor_addr < orig_addr)
src/pw3270/actions.c
@@ -389,6 +389,13 @@ static void action_select_last(GtkAction *action, GtkWidget *widget) @@ -389,6 +389,13 @@ static void action_select_last(GtkAction *action, GtkWidget *widget)
389 lib3270_reselect(v3270_get_session(widget)); 389 lib3270_reselect(v3270_get_session(widget));
390 } 390 }
391 391
  392 +static void action_string(GtkAction *action, GtkWidget *widget)
  393 +{
  394 + gchar *text = g_object_get_data(G_OBJECT(action),"value");
  395 + if(text)
  396 + lib3270_emulate_input(v3270_get_session(widget),text,strlen(text),0);
  397 +}
  398 +
392 static int id_from_array(const gchar *key, const gchar **array, GError **error) 399 static int id_from_array(const gchar *key, const gchar **array, GError **error)
393 { 400 {
394 int f; 401 int f;
@@ -481,6 +488,7 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash @@ -481,6 +488,7 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash
481 ACTION_TYPE_SET, 488 ACTION_TYPE_SET,
482 ACTION_TYPE_RESET, 489 ACTION_TYPE_RESET,
483 ACTION_TYPE_TABLE, 490 ACTION_TYPE_TABLE,
  491 + ACTION_TYPE_STRING,
484 492
485 } action_type = ACTION_TYPE_DEFAULT; 493 } action_type = ACTION_TYPE_DEFAULT;
486 494
@@ -658,6 +666,18 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash @@ -658,6 +666,18 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash
658 id = atoi(attr); 666 id = atoi(attr);
659 nm = g_strdup_printf("pa%02d",id); 667 nm = g_strdup_printf("pa%02d",id);
660 } 668 }
  669 + else if(!g_ascii_strcasecmp(name,"string"))
  670 + {
  671 + action_type = ACTION_TYPE_STRING;
  672 + attr = ui_get_attribute("value",names,values);
  673 + if(!attr)
  674 + {
  675 + *error = g_error_new(ERROR_DOMAIN,EINVAL,_("%s action needs a valid value" ),name);
  676 + return NULL;
  677 + }
  678 + attr = ui_get_attribute("name",names,values);
  679 + nm = g_strdup(attr ? attr : name);
  680 + }
661 else 681 else
662 { 682 {
663 attr = ui_get_attribute("name",names,values); 683 attr = ui_get_attribute("name",names,values);
@@ -722,6 +742,11 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash @@ -722,6 +742,11 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash
722 action = gtk_action_new(nm,NULL,NULL,NULL); 742 action = gtk_action_new(nm,NULL,NULL,NULL);
723 g_signal_connect(action,"activate",callback[id],widget); 743 g_signal_connect(action,"activate",callback[id],widget);
724 break; 744 break;
  745 +
  746 + case ACTION_TYPE_STRING:
  747 + action = gtk_action_new(nm,NULL,NULL,NULL);
  748 + g_signal_connect(action,"activate",G_CALLBACK(action_string),widget);
  749 + break;
725 } 750 }
726 751
727 for(f=0;f<ACTION_COUNT;f++) 752 for(f=0;f<ACTION_COUNT;f++)