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