Commit 20603bd17da0bec8e43a9c2a1d7c6ce3bb878333
1 parent
aa81b9a9
Exists in
master
and in
2 other branches
Processing toolbar-position settings.
Showing
1 changed file
with
91 additions
and
70 deletions
Show diff stats
src/objects/window/window.c
... | ... | @@ -272,6 +272,9 @@ |
272 | 272 | |
273 | 273 | static void pw3270ApplicationWindow_init(pw3270ApplicationWindow *widget) { |
274 | 274 | |
275 | + // Get settings | |
276 | + g_autoptr(GSettings) settings = pw3270_application_window_settings_new(); | |
277 | + | |
275 | 278 | // Setup defaults |
276 | 279 | widget->state.width = 800; |
277 | 280 | widget->state.height = 500; |
... | ... | @@ -303,18 +306,86 @@ |
303 | 306 | gtk_notebook_set_action_widget(widget->notebook,new_tab,GTK_PACK_START); |
304 | 307 | } |
305 | 308 | |
306 | - widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new()); | |
309 | + // Create boxes | |
310 | + GtkBox * hBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0)); | |
311 | + GtkBox * vBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL,0)); | |
312 | + | |
313 | + gtk_widget_show(GTK_WIDGET(hBox)); | |
314 | + gtk_widget_show(GTK_WIDGET(vBox)); | |
315 | + | |
316 | + // Create toolbar | |
317 | + { | |
318 | + widget->toolbar = GTK_TOOLBAR(pw3270_toolbar_new()); | |
319 | + | |
320 | + g_action_map_add_action( | |
321 | + G_ACTION_MAP(widget), | |
322 | + G_ACTION(g_property_action_new("toolbar", widget->toolbar, "visible")) | |
323 | + ); | |
324 | + | |
325 | + switch(g_settings_get_int(settings,"toolbar-position")) { | |
326 | + case 1: | |
327 | + gtk_orientable_set_orientation(GTK_ORIENTABLE(widget->toolbar),GTK_ORIENTATION_HORIZONTAL); | |
328 | + gtk_box_pack_end(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); | |
329 | + break; | |
330 | + | |
331 | + case 2: | |
332 | + gtk_orientable_set_orientation(GTK_ORIENTABLE(widget->toolbar),GTK_ORIENTATION_VERTICAL); | |
333 | + gtk_box_pack_end(hBox,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); | |
334 | + break; | |
335 | + | |
336 | + case 3: | |
337 | + gtk_orientable_set_orientation(GTK_ORIENTABLE(widget->toolbar),GTK_ORIENTATION_VERTICAL); | |
338 | + gtk_box_pack_start(hBox,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); | |
339 | + break; | |
340 | + | |
341 | + default: | |
342 | + gtk_orientable_set_orientation(GTK_ORIENTABLE(widget->toolbar),GTK_ORIENTATION_HORIZONTAL); | |
343 | + gtk_box_pack_start(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); | |
344 | + break; | |
345 | + | |
346 | + } | |
347 | + | |
348 | + g_settings_bind( | |
349 | + settings, | |
350 | + "toolbar-visible", | |
351 | + widget->toolbar, | |
352 | + "visible", | |
353 | + G_SETTINGS_BIND_DEFAULT | |
354 | + ); | |
355 | + | |
356 | + g_settings_bind( | |
357 | + settings, | |
358 | + "toolbar-icon-type", | |
359 | + widget->toolbar, | |
360 | + "icon-type", | |
361 | + G_SETTINGS_BIND_DEFAULT | |
362 | + ); | |
363 | + | |
364 | + g_settings_bind( | |
365 | + settings, | |
366 | + "toolbar-style", | |
367 | + widget->toolbar, | |
368 | + "style", | |
369 | + G_SETTINGS_BIND_DEFAULT | |
370 | + ); | |
307 | 371 | |
308 | - gtk_box_pack_start(container,GTK_WIDGET(widget->toolbar),FALSE,TRUE,0); | |
372 | + g_settings_bind( | |
373 | + settings, | |
374 | + "toolbar-icon-size", | |
375 | + widget->toolbar, | |
376 | + "icon-size", | |
377 | + G_SETTINGS_BIND_DEFAULT | |
378 | + ); | |
379 | + | |
380 | + } | |
381 | + | |
382 | + gtk_box_pack_start(container,GTK_WIDGET(hBox),TRUE,TRUE,0); | |
309 | 383 | |
310 | 384 | // |
311 | - // Do we have keypads? | |
385 | + // Create and pack keypads? | |
312 | 386 | // |
313 | - GList * keypads = pw3270_application_get_keypad_models(g_application_get_default()); | |
314 | - if(keypads) { | |
315 | - | |
316 | - GtkBox * hBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0)); | |
317 | - GtkBox * vBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL,0)); | |
387 | + { | |
388 | + GList * keypads = pw3270_application_get_keypad_models(g_application_get_default()); | |
318 | 389 | GList * keypad; |
319 | 390 | |
320 | 391 | // Add top Keypads |
... | ... | @@ -371,15 +442,6 @@ |
371 | 442 | } |
372 | 443 | } |
373 | 444 | |
374 | - // Add it to the container | |
375 | - gtk_widget_show(GTK_WIDGET(hBox)); | |
376 | - gtk_widget_show(GTK_WIDGET(vBox)); | |
377 | - gtk_box_pack_start(container,GTK_WIDGET(hBox),TRUE,TRUE,0); | |
378 | - | |
379 | - } else { | |
380 | - | |
381 | - gtk_box_pack_start(container,GTK_WIDGET(widget->notebook),TRUE,TRUE,0); | |
382 | - | |
383 | 445 | } |
384 | 446 | |
385 | 447 | gtk_widget_show_all(GTK_WIDGET(widget->notebook)); |
... | ... | @@ -431,22 +493,21 @@ |
431 | 493 | } |
432 | 494 | |
433 | 495 | // |
434 | - // Setup toolbar | |
496 | + // Bind properties | |
435 | 497 | // |
498 | + g_action_map_add_action( | |
499 | + G_ACTION_MAP(widget), | |
500 | + G_ACTION(g_property_action_new("menubar", widget, "show-menubar")) | |
501 | + ); | |
436 | 502 | |
437 | - { | |
438 | - | |
439 | - g_action_map_add_action( | |
440 | - G_ACTION_MAP(widget), | |
441 | - G_ACTION(g_property_action_new("toolbar", widget->toolbar, "visible")) | |
442 | - ); | |
443 | - | |
444 | - g_action_map_add_action( | |
445 | - G_ACTION_MAP(widget), | |
446 | - G_ACTION(g_property_action_new("menubar", widget, "show-menubar")) | |
447 | - ); | |
503 | + g_settings_bind( | |
504 | + settings, | |
505 | + "toolbar-action-names", | |
506 | + widget->toolbar, | |
507 | + "action-names", | |
508 | + G_SETTINGS_BIND_DEFAULT | |
509 | + ); | |
448 | 510 | |
449 | - } | |
450 | 511 | |
451 | 512 | } |
452 | 513 | |
... | ... | @@ -589,46 +650,6 @@ |
589 | 650 | G_SETTINGS_BIND_DEFAULT |
590 | 651 | ); |
591 | 652 | |
592 | - g_settings_bind( | |
593 | - settings, | |
594 | - "toolbar-visible", | |
595 | - window->toolbar, | |
596 | - "visible", | |
597 | - G_SETTINGS_BIND_DEFAULT | |
598 | - ); | |
599 | - | |
600 | - g_settings_bind( | |
601 | - settings, | |
602 | - "toolbar-icon-type", | |
603 | - window->toolbar, | |
604 | - "icon-type", | |
605 | - G_SETTINGS_BIND_DEFAULT | |
606 | - ); | |
607 | - | |
608 | - g_settings_bind( | |
609 | - settings, | |
610 | - "toolbar-action-names", | |
611 | - window->toolbar, | |
612 | - "action-names", | |
613 | - G_SETTINGS_BIND_DEFAULT | |
614 | - ); | |
615 | - | |
616 | - g_settings_bind( | |
617 | - settings, | |
618 | - "toolbar-style", | |
619 | - window->toolbar, | |
620 | - "style", | |
621 | - G_SETTINGS_BIND_DEFAULT | |
622 | - ); | |
623 | - | |
624 | - g_settings_bind( | |
625 | - settings, | |
626 | - "toolbar-icon-size", | |
627 | - window->toolbar, | |
628 | - "icon-size", | |
629 | - G_SETTINGS_BIND_DEFAULT | |
630 | - ); | |
631 | - | |
632 | 653 | } |
633 | 654 | |
634 | 655 | // Setup default position and size | ... | ... |