Commit ba1bc21f21f15654d65f6ac925a586a0903db0d2

Authored by Perry Werneck
1 parent 23321bd6

Implementing keypad on main window.

src/objects/keypad/widget.c
@@ -49,6 +49,8 @@ @@ -49,6 +49,8 @@
49 gtk_widget_set_can_default(button,FALSE); 49 gtk_widget_set_can_default(button,FALSE);
50 gtk_widget_set_focus_on_click(button,FALSE); 50 gtk_widget_set_focus_on_click(button,FALSE);
51 51
  52 + gtk_widget_show_all(button);
  53 +
52 gtk_grid_attach( 54 gtk_grid_attach(
53 grid, 55 grid,
54 button, 56 button,
@@ -81,5 +83,7 @@ @@ -81,5 +83,7 @@
81 83
82 g_list_foreach(keypad->elements,(GFunc) create_child, grid); 84 g_list_foreach(keypad->elements,(GFunc) create_child, grid);
83 85
  86 + gtk_widget_show(grid); // FIX-ME
  87 +
84 return grid; 88 return grid;
85 } 89 }
src/objects/window/window.c
@@ -32,6 +32,7 @@ @@ -32,6 +32,7 @@
32 #include <pw3270/toolbar.h> 32 #include <pw3270/toolbar.h>
33 #include <pw3270/application.h> 33 #include <pw3270/application.h>
34 #include <pw3270/actions.h> 34 #include <pw3270/actions.h>
  35 + #include <pw3270/keypad.h>
35 36
36 static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec); 37 static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
37 static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec); 38 static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
@@ -187,7 +188,7 @@ @@ -187,7 +188,7 @@
187 widget->state.is_fullscreen = 0; 188 widget->state.is_fullscreen = 0;
188 189
189 // Create contents 190 // Create contents
190 - GtkBox * vBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL,0)); 191 + GtkBox * container = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL,0));
191 192
192 widget->notebook = GTK_NOTEBOOK(gtk_notebook_new()); 193 widget->notebook = GTK_NOTEBOOK(gtk_notebook_new());
193 gtk_notebook_set_scrollable(widget->notebook,TRUE); 194 gtk_notebook_set_scrollable(widget->notebook,TRUE);
@@ -197,7 +198,6 @@ @@ -197,7 +198,6 @@
197 198
198 { 199 {
199 // Create new tab action widget 200 // Create new tab action widget
200 - //GtkWidget * new_tab = gtk_image_new_from_icon_name("tab-new-symbolic",GTK_ICON_SIZE_LARGE_TOOLBAR);  
201 GtkWidget * new_tab = gtk_button_new_from_icon_name("tab-new-symbolic",GTK_ICON_SIZE_LARGE_TOOLBAR); 201 GtkWidget * new_tab = gtk_button_new_from_icon_name("tab-new-symbolic",GTK_ICON_SIZE_LARGE_TOOLBAR);
202 gtk_button_set_relief(GTK_BUTTON(new_tab),GTK_RELIEF_NONE); 202 gtk_button_set_relief(GTK_BUTTON(new_tab),GTK_RELIEF_NONE);
203 gtk_actionable_set_action_name(GTK_ACTIONABLE(new_tab),"app.new.tab"); 203 gtk_actionable_set_action_name(GTK_ACTIONABLE(new_tab),"app.new.tab");
@@ -213,11 +213,59 @@ @@ -213,11 +213,59 @@
213 } 213 }
214 214
215 widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new()); 215 widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new());
216 - gtk_box_pack_start(vBox,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0);  
217 - gtk_box_pack_start(vBox,GTK_WIDGET(widget->notebook),TRUE,TRUE,0); 216 + gtk_box_pack_start(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0);
218 217
219 - gtk_widget_show_all(GTK_WIDGET(vBox));  
220 - gtk_container_add(GTK_CONTAINER(widget),GTK_WIDGET(vBox)); 218 + //
  219 + // Do we have keypads?
  220 + //
  221 + GList * keypads = pw3270_application_get_keypad_models(g_application_get_default());
  222 + if(keypads) {
  223 +
  224 + GtkBox * hBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0));
  225 + GList * keypad;
  226 +
  227 + // Add left keypads
  228 + for(keypad = keypads;keypad;keypad = g_list_next(keypad)) {
  229 +
  230 + if(pw3270_keypad_get_position(G_OBJECT(keypad->data)) == KEYPAD_POSITION_LEFT) {
  231 + gtk_box_pack_start(
  232 + hBox,
  233 + pw3270_keypad_get_from_model(G_OBJECT(keypad->data)),
  234 + FALSE,FALSE,0
  235 + );
  236 + }
  237 + }
  238 +
  239 + // Add center notebook
  240 + gtk_box_pack_start(hBox,GTK_WIDGET(widget->notebook),TRUE,TRUE,0);
  241 +
  242 + // Add right keypads
  243 + for(keypad = keypads;keypad;keypad = g_list_next(keypad)) {
  244 +
  245 + if(pw3270_keypad_get_position(G_OBJECT(keypad->data)) == KEYPAD_POSITION_RIGHT) {
  246 + gtk_box_pack_end(
  247 + hBox,
  248 + pw3270_keypad_get_from_model(G_OBJECT(keypad->data)),
  249 + FALSE,FALSE,0
  250 + );
  251 + }
  252 + }
  253 +
  254 +
  255 + // Add it to the container
  256 + gtk_widget_show(GTK_WIDGET(hBox));
  257 + gtk_box_pack_start(container,GTK_WIDGET(hBox),TRUE,TRUE,0);
  258 +
  259 + } else {
  260 +
  261 + gtk_box_pack_start(container,GTK_WIDGET(widget->notebook),TRUE,TRUE,0);
  262 +
  263 + }
  264 +
  265 + gtk_widget_show_all(GTK_WIDGET(widget->notebook));
  266 +
  267 + gtk_widget_show(GTK_WIDGET(container));
  268 + gtk_container_add(GTK_CONTAINER(widget),GTK_WIDGET(container));
221 269
222 // 270 //
223 // Setup tn3270 actions. 271 // Setup tn3270 actions.