diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2013-05-24 12:38:48 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2013-05-24 12:38:48 +0000 |
commit | e5d81bad7b3a3dcca90d7750f177945470b2aaa4 (patch) | |
tree | 6c33efe5e90f8faaf44f8a36daad9633cd9a3dfd | |
parent | a6fc0708529fa57c8ff6f96b5da4aab51a9ab5dc (diff) | |
download | navit-e5d81bad7b3a3dcca90d7750f177945470b2aaa4.tar.gz |
Add:osd_core:New attribute for specifying icon directory
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@5501 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r-- | navit/navit/attr_def.h | 1 | ||||
-rw-r--r-- | navit/navit/osd/core/osd_core.c | 20 |
2 files changed, 18 insertions, 3 deletions
diff --git a/navit/navit/attr_def.h b/navit/navit/attr_def.h index d5c020e21..7862b6158 100644 --- a/navit/navit/attr_def.h +++ b/navit/navit/attr_def.h @@ -370,6 +370,7 @@ ATTR(ref) ATTR(tile_name) ATTR(first_key) ATTR(last_key) +ATTR(src_dir) ATTR2(0x0003ffff,type_string_end) ATTR2(0x00040000,type_special_begin) ATTR(order) diff --git a/navit/navit/osd/core/osd_core.c b/navit/navit/osd/core/osd_core.c index 4e862d95a..fe0b1907f 100644 --- a/navit/navit/osd/core/osd_core.c +++ b/navit/navit/osd/core/osd_core.c @@ -1427,7 +1427,7 @@ struct osd_button { int use_overlay; struct callback *draw_cb,*navit_init_cb; struct graphics_image *img; - char *src; + char *src_dir,*src; }; static void @@ -1480,6 +1480,15 @@ osd_button_init(struct osd_priv_common *opc, struct navit *nav) navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_std_click), attr_button, &opc->osd_item)); osd_button_draw(opc,nav); } + +char * +osd_button_icon_path(struct osd_button *this_, char *src) +{ + char *s,*ret; + if (!this_->src_dir) + return graphics_icon_path(src); + return g_strdup_printf("%s%s%s",this_->src_dir, G_DIR_SEPARATOR_S, src); +} int osd_button_set_attr(struct osd_priv_common *opc, struct attr* attr) @@ -1496,7 +1505,7 @@ osd_button_set_attr(struct osd_priv_common *opc, struct attr* attr) g_free(this_->src); } if(attr->u.str) { - this_->src = graphics_icon_path(attr->u.str); + this_->src = osd_button_icon_path(this_, attr->u.str); } nav = opc->osd_item.navit; gra = navit_get_graphics(nav); @@ -1556,13 +1565,18 @@ osd_button_new(struct navit *nav, struct osd_methods *meth, dbg(0, "no command\n"); goto error; } + attr = attr_search(attrs, NULL, attr_src_dir); + if (attr) + this->src_dir=graphics_icon_path(attr->u.str); + else + this->src_dir=NULL; attr = attr_search(attrs, NULL, attr_src); if (!attr) { dbg(0, "no src\n"); goto error; } - this->src = graphics_icon_path(attr->u.str); + this->src = osd_button_icon_path(this, attr->u.str); navit_add_callback(nav, this->navit_init_cb = callback_new_attr_1(callback_cast (osd_button_init), attr_graphics_ready, opc)); |