summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-05-24 12:38:48 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2013-05-24 12:38:48 +0000
commite5d81bad7b3a3dcca90d7750f177945470b2aaa4 (patch)
tree6c33efe5e90f8faaf44f8a36daad9633cd9a3dfd
parenta6fc0708529fa57c8ff6f96b5da4aab51a9ab5dc (diff)
downloadnavit-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.h1
-rw-r--r--navit/navit/osd/core/osd_core.c20
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));