ui/qt/toolbar.cpp

changeset 574
19de5292f08f
parent 573
2360c1696a34
child 575
50da9696a865
--- a/ui/qt/toolbar.cpp	Fri Apr 18 11:48:11 2025 +0200
+++ b/ui/qt/toolbar.cpp	Fri Apr 18 14:56:12 2025 +0200
@@ -32,6 +32,9 @@
 #include "menu.h"
 #include "stock.h"
 
+static void add_items(UiObject *obj, QToolBar *toolbar, CxList *defaults, CxMap *items);
+static void create_item(UiObject *obj, QToolBar *toolbar, UiToolbarItemI *i);
+
 QToolBar* ui_create_toolbar(UiObject *obj) {
     CxMap *items = uic_get_toolbar_items();
     CxList *left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_LEFT);
@@ -43,7 +46,54 @@
     }
     
     QToolBar *toolbar = new QToolBar();
+    add_items(obj, toolbar, left_defaults, items);
+    add_items(obj, toolbar, center_defaults, items);
+    add_items(obj, toolbar, right_defaults, items);
     
     
     return toolbar;
 }
+
+static void add_items(UiObject *obj, QToolBar *toolbar, CxList *defaults, CxMap *items) {
+    CxIterator i = cxListIterator(defaults);
+    cx_foreach(char *, name, i) {
+        UiToolbarItemI *item = (UiToolbarItemI*)cxMapGet(items, name);
+        if(item) {
+            create_item(obj, toolbar, item);
+        } else {
+            fprintf(stderr, "UI Error: unknown toolbar item '%s'\n", name);
+        }
+    }
+}
+
+static void create_item(UiObject *obj, QToolBar *toolbar, UiToolbarItemI *i) {
+    switch(i->type) {
+        case UI_TOOLBAR_ITEM: {
+            ui_toolbar_add_item(obj, toolbar, (UiToolbarItem*)i);
+            break;
+        }
+        case UI_TOOLBAR_TOGGLEITEM: {
+            ui_toolbar_add_toggleitem(obj, toolbar, (UiToolbarToggleItem*)i);
+            break;
+        }
+        case UI_TOOLBAR_MENU: {
+            ui_toolbar_add_menu(obj, toolbar, (UiToolbarMenuItem*)i);
+            break;
+        }
+        default: fprintf(stderr, "toolbar item type unimplemented: %d\n", (int)i->type);
+    }
+}
+
+void ui_toolbar_add_item(UiObject *obj, QToolBar *toolbar, UiToolbarItem *item) {
+    QAction *action = new QAction();
+    action->setText(item->args.label);
+    toolbar->addAction(action);
+}
+
+void ui_toolbar_add_toggleitem(UiObject *obj, QToolBar *toolbar, UiToolbarToggleItem *item) {
+    
+}
+
+void ui_toolbar_add_menu(UiObject *obj, QToolBar *toolbar, UiToolbarMenuItem *item) {
+    
+}

mercurial