ui/qt/toolbar.cpp

changeset 574
19de5292f08f
parent 573
2360c1696a34
child 575
50da9696a865
equal deleted inserted replaced
573:2360c1696a34 574:19de5292f08f
30 30
31 #include "toolbar.h" 31 #include "toolbar.h"
32 #include "menu.h" 32 #include "menu.h"
33 #include "stock.h" 33 #include "stock.h"
34 34
35 static void add_items(UiObject *obj, QToolBar *toolbar, CxList *defaults, CxMap *items);
36 static void create_item(UiObject *obj, QToolBar *toolbar, UiToolbarItemI *i);
37
35 QToolBar* ui_create_toolbar(UiObject *obj) { 38 QToolBar* ui_create_toolbar(UiObject *obj) {
36 CxMap *items = uic_get_toolbar_items(); 39 CxMap *items = uic_get_toolbar_items();
37 CxList *left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_LEFT); 40 CxList *left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_LEFT);
38 CxList *center_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_CENTER); 41 CxList *center_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_CENTER);
39 CxList *right_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHT); 42 CxList *right_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHT);
41 if(!items || cxMapSize(items) == 0) { 44 if(!items || cxMapSize(items) == 0) {
42 return nullptr; 45 return nullptr;
43 } 46 }
44 47
45 QToolBar *toolbar = new QToolBar(); 48 QToolBar *toolbar = new QToolBar();
49 add_items(obj, toolbar, left_defaults, items);
50 add_items(obj, toolbar, center_defaults, items);
51 add_items(obj, toolbar, right_defaults, items);
46 52
47 53
48 return toolbar; 54 return toolbar;
49 } 55 }
56
57 static void add_items(UiObject *obj, QToolBar *toolbar, CxList *defaults, CxMap *items) {
58 CxIterator i = cxListIterator(defaults);
59 cx_foreach(char *, name, i) {
60 UiToolbarItemI *item = (UiToolbarItemI*)cxMapGet(items, name);
61 if(item) {
62 create_item(obj, toolbar, item);
63 } else {
64 fprintf(stderr, "UI Error: unknown toolbar item '%s'\n", name);
65 }
66 }
67 }
68
69 static void create_item(UiObject *obj, QToolBar *toolbar, UiToolbarItemI *i) {
70 switch(i->type) {
71 case UI_TOOLBAR_ITEM: {
72 ui_toolbar_add_item(obj, toolbar, (UiToolbarItem*)i);
73 break;
74 }
75 case UI_TOOLBAR_TOGGLEITEM: {
76 ui_toolbar_add_toggleitem(obj, toolbar, (UiToolbarToggleItem*)i);
77 break;
78 }
79 case UI_TOOLBAR_MENU: {
80 ui_toolbar_add_menu(obj, toolbar, (UiToolbarMenuItem*)i);
81 break;
82 }
83 default: fprintf(stderr, "toolbar item type unimplemented: %d\n", (int)i->type);
84 }
85 }
86
87 void ui_toolbar_add_item(UiObject *obj, QToolBar *toolbar, UiToolbarItem *item) {
88 QAction *action = new QAction();
89 action->setText(item->args.label);
90 toolbar->addAction(action);
91 }
92
93 void ui_toolbar_add_toggleitem(UiObject *obj, QToolBar *toolbar, UiToolbarToggleItem *item) {
94
95 }
96
97 void ui_toolbar_add_menu(UiObject *obj, QToolBar *toolbar, UiToolbarMenuItem *item) {
98
99 }

mercurial