Commit ba1bc21f21f15654d65f6ac925a586a0903db0d2

Authored by Perry Werneck
1 parent 23321bd6

Implementing keypad on main window.

src/objects/keypad/widget.c
... ... @@ -49,6 +49,8 @@
49 49 gtk_widget_set_can_default(button,FALSE);
50 50 gtk_widget_set_focus_on_click(button,FALSE);
51 51  
  52 + gtk_widget_show_all(button);
  53 +
52 54 gtk_grid_attach(
53 55 grid,
54 56 button,
... ... @@ -81,5 +83,7 @@
81 83  
82 84 g_list_foreach(keypad->elements,(GFunc) create_child, grid);
83 85  
  86 + gtk_widget_show(grid); // FIX-ME
  87 +
84 88 return grid;
85 89 }
... ...
src/objects/window/window.c
... ... @@ -32,6 +32,7 @@
32 32 #include <pw3270/toolbar.h>
33 33 #include <pw3270/application.h>
34 34 #include <pw3270/actions.h>
  35 + #include <pw3270/keypad.h>
35 36  
36 37 static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
37 38 static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
... ... @@ -187,7 +188,7 @@
187 188 widget->state.is_fullscreen = 0;
188 189  
189 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 193 widget->notebook = GTK_NOTEBOOK(gtk_notebook_new());
193 194 gtk_notebook_set_scrollable(widget->notebook,TRUE);
... ... @@ -197,7 +198,6 @@
197 198  
198 199 {
199 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 201 GtkWidget * new_tab = gtk_button_new_from_icon_name("tab-new-symbolic",GTK_ICON_SIZE_LARGE_TOOLBAR);
202 202 gtk_button_set_relief(GTK_BUTTON(new_tab),GTK_RELIEF_NONE);
203 203 gtk_actionable_set_action_name(GTK_ACTIONABLE(new_tab),"app.new.tab");
... ... @@ -213,11 +213,59 @@
213 213 }
214 214  
215 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 271 // Setup tn3270 actions.
... ...