From: <sl...@us...> - 2013-04-23 06:31:49
|
Revision: 5444 http://navit.svn.sourceforge.net/navit/?rev=5444&view=rev Author: sleske Date: 2013-04-23 06:31:31 +0000 (Tue, 23 Apr 2013) Log Message: ----------- Add:gui/gtk:Add context menu item "Visit before a destination".|Fixes #1100. Thanks, me.yahoo.com/a/_ij44v97roulszbeztrzcqzaaiyvlg--#9d14a ! Modified Paths: -------------- trunk/navit/navit/popup.c Modified: trunk/navit/navit/popup.c =================================================================== --- trunk/navit/navit/popup.c 2013-04-21 19:57:23 UTC (rev 5443) +++ trunk/navit/navit/popup.c 2013-04-23 06:31:31 UTC (rev 5444) @@ -134,7 +134,28 @@ navit_set_destination(nav, pc, buffer, 1); } + static void +popup_set_visitbefore(struct navit *nav, struct pcoord *pc,int visitbefore) +{ + struct pcoord *dst; + char buffer[1024]; + int i, dstcount; + sprintf(buffer, _("Waypoint %d"), visitbefore+1); + dstcount=navit_get_destination_count(nav)+1; + dst=g_alloca(dstcount*sizeof(struct pcoord)); + dstcount=navit_get_destinations(nav,dst,dstcount); + for (i=dstcount;i>visitbefore;i--){ + dst[i]=dst[i-1]; + } + dst[visitbefore]=*pc; + navit_add_destination_description(nav,pc,buffer); + navit_set_destinations(nav, dst, dstcount+1, buffer, 1); +} + + + +static void popup_set_bookmark(struct navit *nav, struct pcoord *pc) { struct attr attr; @@ -219,7 +240,25 @@ return ret; } + + static void +popup_show_visitbefore(struct navit *nav,struct pcoord *pc, void *menu) +{ + void *menuvisitbefore; + char buffer[100]; + int i, dstcount; + dstcount=navit_get_destination_count(nav); + if (dstcount>=1){ + menuvisitbefore=popup_printf(menu, menu_type_submenu, _("Visit before...")); + for (i=0;i<dstcount;i++){ + sprintf(buffer,_("Waypoint %d"),i+1); + popup_printf_cb(menuvisitbefore, menu_type_menu, callback_new_3(callback_cast(popup_set_visitbefore), nav, pc,i), buffer); + } + } +} + +static void popup_show_attr_val(struct map *map, void *menu, struct attr *attr) { char *attr_name=attr_to_name(attr->type); @@ -393,6 +432,7 @@ c.y = co.y; popup_printf_cb(men, menu_type_menu, callback_new_2(callback_cast(popup_set_position), nav, &c), _("Set as position")); popup_printf_cb(men, menu_type_menu, callback_new_2(callback_cast(popup_set_destination), nav, &c), _("Set as destination")); + popup_show_visitbefore(nav,&c,men); popup_printf_cb(men, menu_type_menu, callback_new_2(callback_cast(popup_set_bookmark), nav, &c), _("Add as bookmark")); popup_display(nav, popup, p); menu_popup(popup); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |