Commit ba1bc21f21f15654d65f6ac925a586a0903db0d2
1 parent
23321bd6
Exists in
master
and in
4 other branches
Implementing keypad on main window.
Showing
2 changed files
with
58 additions
and
6 deletions
Show diff stats
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. |