Commit dc7828e581b1dbe3e5d87ab18e554e94b7bbdc9f

Authored by Perry Werneck
1 parent 72bdaf33

Reimplementando keypads.

src/pw3270/uiparser/button.c
@@ -77,6 +77,18 @@ @@ -77,6 +77,18 @@
77 77
78 void keypad_button_start(GMarkupParseContext *context, const gchar **names,const gchar **values, GError **error, struct keypad *keypad) 78 void keypad_button_start(GMarkupParseContext *context, const gchar **names,const gchar **values, GError **error, struct keypad *keypad)
79 { 79 {
  80 + const gchar * label = ui_get_attribute("label", names, values);
  81 + const gchar * icon = ui_get_attribute("icon", names, values);
  82 +
  83 + if(label) {
  84 + keypad->widget = gtk_button_new_with_label(label);
  85 + } else {
  86 + gchar *text = g_strconcat("gtk-",icon,NULL);
  87 + keypad->widget = gtk_button_new();
  88 + gtk_container_add(GTK_CONTAINER(keypad->widget),gtk_image_new_from_stock(text,GTK_ICON_SIZE_SMALL_TOOLBAR));
  89 + g_free(text);
  90 + }
  91 +
80 /* 92 /*
81 const gchar * label = ui_get_attribute("label", names, values); 93 const gchar * label = ui_get_attribute("label", names, values);
82 const gchar * icon = ui_get_attribute("icon", names, values); 94 const gchar * icon = ui_get_attribute("icon", names, values);
@@ -85,11 +97,6 @@ @@ -85,11 +97,6 @@
85 GtkAction * action = NULL; 97 GtkAction * action = NULL;
86 GtkWidget * widget = NULL; 98 GtkWidget * widget = NULL;
87 99
88 - if(++keypad->col > keypad->num_cols)  
89 - keypad->num_cols = keypad->col;  
90 -  
91 - keypad->row->num_cols++;  
92 -  
93 if(label) 100 if(label)
94 { 101 {
95 widget = gtk_button_new_with_label(gettext(g_strcompress(label))); 102 widget = gtk_button_new_with_label(gettext(g_strcompress(label)));
@@ -102,11 +109,6 @@ @@ -102,11 +109,6 @@
102 g_free(text); 109 g_free(text);
103 } 110 }
104 111
105 - keypad->row->cols = g_list_append(keypad->row->cols,widget);  
106 -  
107 - if(!widget)  
108 - return;  
109 -  
110 #if GTK_CHECK_VERSION(2,18,0) 112 #if GTK_CHECK_VERSION(2,18,0)
111 gtk_widget_set_can_focus(widget,FALSE); 113 gtk_widget_set_can_focus(widget,FALSE);
112 gtk_widget_set_can_default(widget,FALSE); 114 gtk_widget_set_can_default(widget,FALSE);
@@ -133,6 +135,6 @@ @@ -133,6 +135,6 @@
133 gtk_widget_set_sensitive(widget,FALSE); 135 gtk_widget_set_sensitive(widget,FALSE);
134 g_signal_connect(G_OBJECT(widget),"clicked",G_CALLBACK(button_script),info->center_widget); 136 g_signal_connect(G_OBJECT(widget),"clicked",G_CALLBACK(button_script),info->center_widget);
135 } 137 }
136 - */ 138 +*/
137 } 139 }
138 140
src/pw3270/uiparser/keypad.c
@@ -33,12 +33,30 @@ @@ -33,12 +33,30 @@
33 33
34 static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, struct keypad *keypad, GError **error) 34 static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, struct keypad *keypad, GError **error)
35 { 35 {
36 - trace("%s(%s)",__FUNCTION__,element_name); 36 + trace("%s(%s,%d,%d)",__FUNCTION__,element_name,(int) keypad->row, (int) keypad->col);
  37 +
  38 + keypad->widget = NULL;
  39 +
  40 + if(!strcasecmp(element_name,"button")) {
  41 + keypad_button_start(context, names, values, error, keypad);
  42 + }
  43 +
37 } 44 }
38 45
39 static void element_end(GMarkupParseContext *context, const gchar *element_name, struct keypad *keypad, GError **error) 46 static void element_end(GMarkupParseContext *context, const gchar *element_name, struct keypad *keypad, GError **error)
40 { 47 {
41 - trace("%s(%s)",__FUNCTION__,element_name); 48 + if(keypad->widget) {
  49 + gtk_grid_attach(keypad->grid,keypad->widget,keypad->col,keypad->row,1,1);
  50 + keypad->widget = NULL;
  51 + }
  52 +
  53 + if(!strcasecmp(element_name,"row")) {
  54 + keypad->row++;
  55 + keypad->col = 0;
  56 + } else {
  57 + keypad->col++;
  58 + }
  59 +
42 } 60 }
43 61
44 static void toggled(GtkToggleAction *action, GtkWidget *widget) 62 static void toggled(GtkToggleAction *action, GtkWidget *widget)
src/pw3270/uiparser/keypad.h
@@ -38,6 +38,7 @@ @@ -38,6 +38,7 @@
38 unsigned short row; 38 unsigned short row;
39 unsigned short col; 39 unsigned short col;
40 GtkGrid * grid; 40 GtkGrid * grid;
  41 + GtkWidget * widget;
41 GtkReliefStyle relief; 42 GtkReliefStyle relief;
42 UI_ATTR_DIRECTION pos; 43 UI_ATTR_DIRECTION pos;
43 }; 44 };