From 72043d36829a4e0059c625d75ed06e7ca41944ae Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 15 Feb 2001 22:39:02 +0000 Subject: [PATCH] dont play with menu struct innards! use api calls :) SVN revision: 4221 --- src/e.h | 10 +++++ src/menu.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/menudb.c | 15 +++---- 3 files changed, 129 insertions(+), 7 deletions(-) diff --git a/src/e.h b/src/e.h index f9ef4c808..5decb5a70 100644 --- a/src/e.h +++ b/src/e.h @@ -752,6 +752,16 @@ void e_menu_update_finish(E_Menu *m); void e_menu_update_shows(E_Menu *m); void e_menu_update_hides(E_Menu *m); void e_menu_update(E_Menu *m); +void e_menu_item_set_icon(E_Menu_Item *mi, char *icon); +void e_menu_item_set_text(E_Menu_Item *mi, char *text); +void e_menu_item_set_separator(E_Menu_Item *mi, int sep); +void e_menu_item_set_radio(E_Menu_Item *mi, int radio); +void e_menu_item_set_check(E_Menu_Item *mi, int check); +void e_menu_item_set_state(E_Menu_Item *mi, int state); +void e_menu_item_set_submenu(E_Menu_Item *mi, E_Menu *submenu); +void e_menu_item_set_scale_icon(E_Menu_Item *mi, int scale); +void e_menu_set_padding_icon(E_Menu *m, int pad); +void e_menu_set_padding_state(E_Menu *m, int pad); void e_build_menu_unbuild(E_Build_Menu *bm); E_Menu *e_build_menu_build_number(E_Build_Menu *bm, E_DB_File *db, int num); diff --git a/src/menu.c b/src/menu.c index a35312a9e..ee2c5fb76 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1452,3 +1452,114 @@ e_menu_update(E_Menu *m) e_menu_update_hides(m); e_menu_update_finish(m); } + +void +e_menu_item_set_icon(E_Menu_Item *mi, char *icon) +{ + IF_FREE(mi->icon); + mi->icon = NULL; + if (icon) mi->icon = strdup(icon); + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_item_set_text(E_Menu_Item *mi, char *text) +{ + IF_FREE(mi->str); + mi->str = NULL; + if (text) mi->str = strdup(text); + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_item_set_separator(E_Menu_Item *mi, int sep) +{ + mi->separator = sep; + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_item_set_radio(E_Menu_Item *mi, int radio) +{ + mi->radio = radio; + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_item_set_check(E_Menu_Item *mi, int check) +{ + mi->check = check; + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_item_set_state(E_Menu_Item *mi, int state) +{ + mi->on = state; + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_item_set_submenu(E_Menu_Item *mi, E_Menu *submenu) +{ + if (mi->submenu) e_menu_hide(mi->submenu); + mi->submenu = submenu; + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_item_set_scale_icon(E_Menu_Item *mi, int scale) +{ + mi->scale_icon = scale; + if (mi->menu) + { + mi->menu->recalc_entries = 1; + mi->menu->changed = 1; + } +} + +void +e_menu_set_padding_icon(E_Menu *m, int pad) +{ + m->pad.icon = pad; + m->recalc_entries = 1; + m->changed = 1; +} + +void +e_menu_set_padding_state(E_Menu *m, int pad) +{ + m->pad.state = pad; + m->recalc_entries = 1; + m->changed = 1; +} diff --git a/src/menudb.c b/src/menudb.c index eb330458d..2c668164a 100644 --- a/src/menudb.c +++ b/src/menudb.c @@ -81,8 +81,8 @@ e_build_menu_build_number(E_Build_Menu *bm, E_DB_File *db, int num) sprintf(buf, "/menu/%i/count", num); if (!e_db_int_get(db, buf, &num2)) return NULL; menu = e_menu_new(); - menu->pad.icon = 2; - menu->pad.state = 2; + e_menu_set_padding_icon(menu, 2); + e_menu_set_padding_state(menu, 2); for (i2 = 0; i2 < num2; i2++) { E_Menu_Item *menuitem; @@ -101,10 +101,11 @@ e_build_menu_build_number(E_Build_Menu *bm, E_DB_File *db, int num) sprintf(buf, "/menu/%i/%i/separator", num, i2); e_db_int_get(db, buf, &sep); menuitem = e_menu_item_new(text); - menuitem->icon = icon; - if ((icon) && (text)) menuitem->scale_icon = 1; - if (sep) - menuitem->separator = 1; + IF_FREE(text); + e_menu_item_set_icon(menuitem, icon); + IF_FREE(icon); + if ((icon) && (text)) e_menu_item_set_scale_icon(menuitem, 1); + if (sep) e_menu_item_set_separator(menuitem, 1); else { if (ok) @@ -112,7 +113,7 @@ e_build_menu_build_number(E_Build_Menu *bm, E_DB_File *db, int num) E_Menu *menu2; menu2 = e_build_menu_build_number(bm, db, sub); - menuitem->submenu = menu2; + e_menu_item_set_submenu(menuitem, menu2); } } if (exe)