Commit 20603bd17da0bec8e43a9c2a1d7c6ce3bb878333

Authored by Perry Werneck
1 parent aa81b9a9

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,6 +272,9 @@
272 272
273 static void pw3270ApplicationWindow_init(pw3270ApplicationWindow *widget) { 273 static void pw3270ApplicationWindow_init(pw3270ApplicationWindow *widget) {
274 274
  275 + // Get settings
  276 + g_autoptr(GSettings) settings = pw3270_application_window_settings_new();
  277 +
275 // Setup defaults 278 // Setup defaults
276 widget->state.width = 800; 279 widget->state.width = 800;
277 widget->state.height = 500; 280 widget->state.height = 500;
@@ -303,18 +306,86 @@ @@ -303,18 +306,86 @@
303 gtk_notebook_set_action_widget(widget->notebook,new_tab,GTK_PACK_START); 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 GList * keypad; 389 GList * keypad;
319 390
320 // Add top Keypads 391 // Add top Keypads
@@ -371,15 +442,6 @@ @@ -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 gtk_widget_show_all(GTK_WIDGET(widget->notebook)); 447 gtk_widget_show_all(GTK_WIDGET(widget->notebook));
@@ -431,22 +493,21 @@ @@ -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,46 +650,6 @@
589 G_SETTINGS_BIND_DEFAULT 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 // Setup default position and size 655 // Setup default position and size