ui/gtk/headerbar.c

changeset 110
c00e968d018b
parent 109
c3dfcb8f0be7
child 112
c3f2f16fa4b8
equal deleted inserted replaced
109:c3dfcb8f0be7 110:c00e968d018b
29 #include "headerbar.h" 29 #include "headerbar.h"
30 30
31 #include "button.h" 31 #include "button.h"
32 #include "menu.h" 32 #include "menu.h"
33 33
34 #include "../ui/properties.h"
35
34 #if GTK_CHECK_VERSION(3, 10, 0) 36 #if GTK_CHECK_VERSION(3, 10, 0)
35 37
36 void ui_fill_headerbar(UiObject *obj, GtkWidget *headerbar) { 38 void ui_fill_headerbar(UiObject *obj, GtkWidget *sidebar_headerbar, GtkWidget *main_headerbar, GtkWidget *right_headerbar) {
39 CxList *sidebar_left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_SIDEBAR_LEFT);
40 CxList *sidebar_right_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_SIDEBAR_RIGHT);
41
37 CxList *left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_LEFT); 42 CxList *left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_LEFT);
38 CxList *center_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_CENTER); 43 CxList *center_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_CENTER);
39 CxList *right_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHT); 44 CxList *right_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHT);
40 45
41 ui_headerbar_add_items(obj, headerbar, left_defaults, UI_TOOLBAR_LEFT); 46 CxList *rightpanel_left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHTPANEL_LEFT);
42 ui_headerbar_add_items(obj, headerbar, center_defaults, UI_TOOLBAR_CENTER); 47 CxList *rightpanel_center_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHTPANEL_CENTER);
43 48 CxList *rightpanel_right_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHTPANEL_RIGHT);
49
44 UiToolbarMenuItem *appmenu = uic_get_appmenu(); 50 UiToolbarMenuItem *appmenu = uic_get_appmenu();
45 if(appmenu) { 51 const char *appmenu_pos_str = ui_get_property("ui.gtk.window.appmenu.position");
46 ui_add_headerbar_menu(headerbar, NULL, appmenu, obj, UI_TOOLBAR_RIGHT); 52 int appmenu_pos = UI_TOOLBAR_RIGHT;
47 } 53 if(sidebar_headerbar) {
48 ui_headerbar_add_items(obj, headerbar, right_defaults, UI_TOOLBAR_RIGHT); 54 appmenu_pos = UI_TOOLBAR_SIDEBAR_RIGHT;
55 } else if(right_headerbar) {
56 appmenu_pos = UI_TOOLBAR_RIGHTPANEL_RIGHT;
57 }
58 if(appmenu_pos_str) {
59 if(!strcmp(appmenu_pos_str, "sidebar") && sidebar_headerbar) {
60 appmenu_pos = UI_TOOLBAR_SIDEBAR_RIGHT;
61 } else if(!strcmp(appmenu_pos_str, "main")) {
62 appmenu_pos = UI_TOOLBAR_RIGHT;
63 } else if(!strcmp(appmenu_pos_str, "rightpanel") && right_headerbar) {
64 appmenu_pos = UI_TOOLBAR_RIGHTPANEL_RIGHT;
65 }
66 }
67
68 // main toolbar
69 ui_headerbar_add_items(obj, main_headerbar, left_defaults, UI_TOOLBAR_LEFT);
70 ui_headerbar_add_items(obj, main_headerbar, center_defaults, UI_TOOLBAR_CENTER);
71
72 if(appmenu && appmenu_pos == UI_TOOLBAR_RIGHT) {
73 ui_add_headerbar_menu(main_headerbar, NULL, appmenu, obj, UI_TOOLBAR_RIGHT);
74 }
75 ui_headerbar_add_items(obj, main_headerbar, right_defaults, UI_TOOLBAR_RIGHT);
76
77 // sidebar
78 if(sidebar_headerbar) {
79 // ui_headerbar_add_items pos parameter uses only UI_TOOLBAR_LEFT, UI_TOOLBAR_CENTER, UI_TOOLBAR_RIGHT
80 ui_headerbar_add_items(obj, sidebar_headerbar, sidebar_left_defaults, UI_TOOLBAR_LEFT);
81
82 if(appmenu && appmenu_pos == UI_TOOLBAR_SIDEBAR_RIGHT) {
83 ui_add_headerbar_menu(sidebar_headerbar, NULL, appmenu, obj, UI_TOOLBAR_RIGHT);
84 }
85 ui_headerbar_add_items(obj, sidebar_headerbar, sidebar_right_defaults, UI_TOOLBAR_RIGHT);
86 }
87
88 // right panel
89 if(right_headerbar) {
90 ui_headerbar_add_items(obj, right_headerbar, rightpanel_left_defaults, UI_TOOLBAR_LEFT);
91 ui_headerbar_add_items(obj, right_headerbar, rightpanel_center_defaults, UI_TOOLBAR_CENTER);
92
93 if(appmenu && appmenu_pos == UI_TOOLBAR_RIGHTPANEL_RIGHT) {
94 ui_add_headerbar_menu(right_headerbar, NULL, appmenu, obj, UI_TOOLBAR_RIGHT);
95 }
96 ui_headerbar_add_items(obj, right_headerbar, rightpanel_right_defaults, UI_TOOLBAR_RIGHT);
97 }
49 } 98 }
50 99
51 static void create_item(UiObject *obj, GtkWidget *headerbar, GtkWidget *box, UiToolbarItemI *i, enum UiToolbarPos pos) { 100 static void create_item(UiObject *obj, GtkWidget *headerbar, GtkWidget *box, UiToolbarItemI *i, enum UiToolbarPos pos) {
52 switch(i->type) { 101 switch(i->type) {
53 case UI_TOOLBAR_ITEM: { 102 case UI_TOOLBAR_ITEM: {

mercurial