| 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: { |