ui/gtk/toolbar.c

branch
newapi
changeset 276
376921880a7f
parent 275
132c7bcc6997
child 278
a8faf8757450
equal deleted inserted replaced
275:132c7bcc6997 276:376921880a7f
343 gtk_toolbar_insert(tb, item, -1); 343 gtk_toolbar_insert(tb, item, -1);
344 } 344 }
345 } 345 }
346 */ 346 */
347 347
348
349
350 #ifdef UI_GTK3
351
352 GtkWidget* ui_create_headerbar(UiObject *obj) {
353 GtkWidget *headerbar = gtk_header_bar_new();
354
355 CxMap *items = uic_get_toolbar_items();
356 CxList *left_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_LEFT);
357 CxList *center_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_CENTER);
358 CxList *right_defaults = uic_get_toolbar_defaults(UI_TOOLBAR_RIGHT);
359
360 ui_headerbar_add_items(obj, headerbar, items, left_defaults);
361 ui_headerbar_add_items(obj, headerbar, items, center_defaults);
362 ui_headerbar_add_items(obj, headerbar, items, right_defaults);
363
364 return headerbar;
365 }
366
367 static void hb_create_item(UiObject *obj, GtkWidget *toolbar, UiToolbarItemI *i) {
368 GtkHeaderBar *tb = GTK_HEADER_BAR(toolbar);
369 switch(i->type) {
370 case UI_TOOLBAR_ITEM: {
371 add_headerbar_item_widget(tb, (UiToolbarItem*)i, obj);
372 break;
373 }
374 case UI_TOOLBAR_TOGGLEITEM: {
375 add_headerbar_item_toggle_widget(tb, (UiToolbarToggleItem*)i, obj);
376 break;
377 }
378 case UI_TOOLBAR_MENU: {
379 add_headerbar_item_menu_widget(tb, (UiToolbarMenuItem*)i, obj);
380 break;
381 }
382 default: fprintf(stderr, "toolbar item type unimplemented: %d\n", (int)i->type);
383 }
384 }
385
386
387 void ui_headerbar_add_items(UiObject *obj, GtkWidget *headerbar, CxMap *items, CxList *defaults) {
388 // add pre-configured items
389 CxIterator i = cxListIterator(defaults);
390 cx_foreach(char*, def, i) {
391 UiToolbarItemI* item = uic_toolbar_get_item(def);
392 if (!item) {
393 fprintf(stderr, "unknown toolbar item: %s\n", def);
394 continue;
395 }
396 hb_create_item(obj, headerbar, item);
397 }
398 }
399
400 void add_headerbar_item_widget(GtkHeaderBar *hb, UiToolbarItem *item, UiObject *obj) {
401 GtkWidget *button = gtk_button_new_with_label(item->args.label);
402 if(item->args.icon) {
403 ui_button_set_icon_name(button, item->args.icon);
404 }
405
406 gtk_header_bar_pack_start(hb, button);
407
408 }
409
410 void add_headerbar_item_toggle_widget(GtkHeaderBar *hb, UiToolbarToggleItem *item, UiObject *obj) {
411
412 }
413
414 void add_headerbar_item_menu_widget(GtkHeaderBar *hb, UiToolbarMenuItem *item, UiObject *obj) {
415
416 }
417
418 #endif

mercurial