From 9241ed23cae871b68e2fb7c386c3e9e826a2bd3b Mon Sep 17 00:00:00 2001 From: martin-s Date: Fri, 20 Nov 2009 08:26:57 +0000 Subject: [PATCH] Add:gui_internal:Further export of menus git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk/navit@2767 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/command.c | 2 + navit/gui.c | 12 +++++ navit/gui.h | 2 + navit/gui/internal/gui_internal.c | 97 +++++++++---------------------------- navit/navit.c | 3 ++ navit/navit_shipped.xml | 11 ++++- navit/xmlconfig.c | 2 +- 7 files changed, 53 insertions(+), 76 deletions(-) diff --git a/navit/command.c b/navit/command.c index 58d414e..1258fc5 100644 --- a/navit/command.c +++ b/navit/command.c @@ -659,6 +659,8 @@ eval_assignment(struct context *ctx, struct result *res) if (!get_op(ctx,0,"=",NULL)) return; eval_conditional(ctx, &tmp); if (ctx->error) return; + resolve(ctx, &tmp, NULL); + if (ctx->error) return; resolve_object(ctx, res); command_set_attr(ctx, res, &tmp); } diff --git a/navit/gui.c b/navit/gui.c index a05d3d8..8dc1dca 100644 --- a/navit/gui.c +++ b/navit/gui.c @@ -75,6 +75,18 @@ gui_get_attr(struct gui *this_, enum attr_type type, struct attr *attr, struct a return attr_generic_get_attr(this_->attrs, NULL, type, attr, iter); } + +int +gui_set_attr(struct gui *this_, struct attr *attr) +{ + int ret=1; + if (this_->meth.set_attr) + ret=this_->meth.set_attr(this_->priv, attr); + if (ret == 1) + this_->attrs=attr_generic_set_attr(this_->attrs, attr); + return ret != 0; +} + int gui_add_attr(struct gui *this_, struct attr *attr) { diff --git a/navit/gui.h b/navit/gui.h index 81dcd31..b19b512 100644 --- a/navit/gui.h +++ b/navit/gui.h @@ -39,6 +39,7 @@ struct gui_methods { void (*disable_suspend)(struct gui_priv *priv); int (*get_attr)(struct gui_priv *priv, enum attr_type type, struct attr *attr); int (*add_attr)(struct gui_priv *priv, struct attr *attr); + int (*set_attr)(struct gui_priv *priv, struct attr *attr); }; @@ -54,6 +55,7 @@ struct menu; struct pcoord; struct gui *gui_new(struct attr *parent, struct attr **attrs); int gui_get_attr(struct gui *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter); +int gui_set_attr(struct gui *this_, struct attr *attr); int gui_add_attr(struct gui *this_, struct attr *attr); struct menu *gui_menubar_new(struct gui *gui); struct menu *gui_popup_new(struct gui *gui); diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c index 73ef473..714fd5d 100644 --- a/navit/gui/internal/gui_internal.c +++ b/navit/gui/internal/gui_internal.c @@ -1358,7 +1358,6 @@ gui_internal_cmd2_back_to_map(struct gui_priv *this, char *function, struct attr gui_internal_prune_menu(this, NULL); } - static void gui_internal_cmd_main_menu(struct gui_priv *this, struct widget *wm, void *data) { @@ -3055,7 +3054,7 @@ gui_internal_cmd2_town(struct gui_priv *this, char *function, struct attr **in, } static void -gui_internal_cmd_layout(struct gui_priv *this, struct widget *wm, void *data) +gui_internal_cmd2_setting_layout(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid) { struct attr attr; struct widget *w,*wb,*wl; @@ -3077,75 +3076,6 @@ gui_internal_cmd_layout(struct gui_priv *this, struct widget *wm, void *data) } static void -gui_internal_cmd_fullscreen(struct gui_priv *this, struct widget *wm, void *data) -{ - graphics_draw_mode(this->gra, draw_mode_end); - if (this->fullscreen != 2) - this->fullscreen=!this->fullscreen; - this->win->fullscreen(this->win, this->fullscreen != 0); - graphics_draw_mode(this->gra, draw_mode_begin); -} - -static void -gui_internal_cmd_2d(struct gui_priv *this, struct widget *wm, void *data) -{ - struct transformation *trans=navit_get_trans(this->nav); - transform_set_pitch(trans, 0); - this->redraw=1; - gui_internal_prune_menu(this, NULL); -} - -static void -gui_internal_cmd_3d(struct gui_priv *this, struct widget *wm, void *data) -{ - struct transformation *trans=navit_get_trans(this->nav); - transform_set_pitch(trans, this->pitch); - this->redraw=1; - gui_internal_prune_menu(this, NULL); -} - -static void -gui_internal_cmd2_setting_display(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid) -{ - struct widget *w; - struct transformation *trans; - - w=gui_internal_menu(this, _("Display")); - gui_internal_widget_append(w, - gui_internal_button_new_with_callback(this, _("Layout"), - image_new_l(this, "gui_display"), gravity_center|orientation_vertical, - gui_internal_cmd_layout, NULL)); - - if(this->fullscreen != 2) { - if (this->fullscreen) { - gui_internal_widget_append(w, - gui_internal_button_new_with_callback(this, _("Window Mode"), - image_new_l(this, "gui_leave_fullscreen"), gravity_center|orientation_vertical, - gui_internal_cmd_fullscreen, NULL)); - } else { - gui_internal_widget_append(w, - gui_internal_button_new_with_callback(this, _("Fullscreen"), - image_new_l(this, "gui_fullscreen"), gravity_center|orientation_vertical, - gui_internal_cmd_fullscreen, NULL)); - } - } - trans=navit_get_trans(this->nav); - if (transform_get_pitch(trans)) { - gui_internal_widget_append(w, - gui_internal_button_new_with_callback(this, _("2D"), - image_new_l(this, "gui_map"), gravity_center|orientation_vertical, - gui_internal_cmd_2d, NULL)); - - } else { - gui_internal_widget_append(w, - gui_internal_button_new_with_callback(this, _("3D"), - image_new_l(this, "gui_map"), gravity_center|orientation_vertical, - gui_internal_cmd_3d, NULL)); - } - gui_internal_menu_render(this); -} - -static void gui_internal_cmd2_quit(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid) { struct attr navit; @@ -3904,6 +3834,9 @@ gui_internal_get_attr(struct gui_priv *this, enum attr_type type, struct attr *a return 0; *attr=*this->position_coord_geo; break; + case attr_pitch: + attr->u.num=this->pitch; + break; default: return 0; } @@ -3924,6 +3857,24 @@ gui_internal_add_attr(struct gui_priv *this, struct attr *attr) } } +static int +gui_internal_set_attr(struct gui_priv *this, struct attr *attr) +{ + switch (attr->type) { + case attr_fullscreen: + if ((this->fullscreen > 0) != (attr->u.num > 0)) { + graphics_draw_mode(this->gra, draw_mode_end); + this->win->fullscreen(this->win, attr->u.num > 0); + graphics_draw_mode(this->gra, draw_mode_begin); + } + this->fullscreen=attr->u.num; + return 1; + default: + dbg(0,"%s\n",attr_to_name(attr->type)); + return 0; + } +} + //############################################################################################################## //# Description: Function to handle mouse clicks and scroll wheel movement @@ -4246,6 +4197,7 @@ struct gui_methods gui_internal_methods = { gui_internal_disable_suspend, gui_internal_get_attr, gui_internal_add_attr, + gui_internal_set_attr, }; static void @@ -5294,7 +5246,6 @@ static struct command_table commands[] = { {"abort_navigation()",command_cast(gui_internal_cmd2_abort_navigation)}, {"back_to_map",command_cast(gui_internal_cmd2_back_to_map)}, {"bookmarks",command_cast(gui_internal_cmd2_bookmarks)}, - {"fullscreen",command_cast(gui_internal_cmd_fullscreen)}, {"get_data",command_cast(gui_internal_get_data)}, {"locale",command_cast(gui_internal_cmd2_locale)}, {"log",command_cast(gui_internal_cmd_log)}, @@ -5302,7 +5253,7 @@ static struct command_table commands[] = { {"position",command_cast(gui_internal_cmd2_position)}, {"route_description",command_cast(gui_internal_cmd2_route_description)}, {"route_height_profile",command_cast(gui_internal_cmd2_route_height_profile)}, - {"setting_display",command_cast(gui_internal_cmd2_setting_display)}, + {"setting_layout",command_cast(gui_internal_cmd2_setting_layout)}, {"setting_maps",command_cast(gui_internal_cmd2_setting_maps)}, {"setting_rules",command_cast(gui_internal_cmd2_setting_rules)}, {"setting_vehicle",command_cast(gui_internal_cmd2_setting_vehicle)}, diff --git a/navit/navit.c b/navit/navit.c index 5e9ab6e..8f7283d 100644 --- a/navit/navit.c +++ b/navit/navit.c @@ -1861,6 +1861,9 @@ navit_get_attr(struct navit *this_, enum attr_type type, struct attr *attr, stru case attr_osd_configuration: attr->u.num=this_->osd_configuration; break; + case attr_pitch: + attr->u.num=transform_get_pitch(this_->trans); + break; case attr_projection: if(this_->trans) { attr->u.num=transform_get_projection(this_->trans); diff --git a/navit/navit_shipped.xml b/navit/navit_shipped.xml index d41f3be..689850b 100644 --- a/navit/navit_shipped.xml +++ b/navit/navit_shipped.xml @@ -42,7 +42,7 @@ - Main menu + Main menu Actions Show Map @@ -60,11 +60,18 @@ Map Navigation Settings - Display + Display Maps Vehicle Rules + Display + Layout + Fullscreen + Window Mode + 3D + 2D + Tools Show Locale diff --git a/navit/xmlconfig.c b/navit/xmlconfig.c index f0661a9..76d3d96 100644 --- a/navit/xmlconfig.c +++ b/navit/xmlconfig.c @@ -244,7 +244,7 @@ static struct object_func object_funcs[] = { { attr_cursor, NEW(cursor_new), NULL, NULL, NULL, NULL, ADD(cursor_add_attr)}, { attr_debug, NEW(debug_new)}, { attr_graphics, NEW(graphics_new)}, - { attr_gui, NEW(gui_new), GET(gui_get_attr), NULL, NULL, NULL, ADD(gui_add_attr)}, + { attr_gui, NEW(gui_new), GET(gui_get_attr), NULL, NULL, SET(gui_set_attr), ADD(gui_add_attr)}, { attr_icon, NEW(icon_new), NULL, NULL, NULL, NULL, ADD(element_add_attr)}, { attr_image, NEW(image_new)}, { attr_itemgra, NEW(itemgra_new), NULL, NULL, NULL, NULL, ADD(itemgra_add_attr)}, -- 1.7.9.5