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 | 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. | ... | ... |