From 1657065a00c7d9d8850aface6c030581950c2b44 Mon Sep 17 00:00:00 2001 From: Quy Tonthat Date: Tue, 3 Jul 2007 05:59:19 +0000 Subject: [PATCH] Fixed bugs that caused "draw_scale" and "draw_centermark" not consistent. Fixed following bugs related to scale and centermark: - View menu items did not always reflect correctly when loading from files. - View menu items and the viewport did not always have the same state (on/off) Signed-off-by: Quy Tonthat --- src/file.c | 2 +- src/vikwindow.c | 18 ++++++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/file.c b/src/file.c index 9d38220b..be4fb118 100644 --- a/src/file.c +++ b/src/file.c @@ -369,7 +369,7 @@ static void file_read ( VikAggregateLayer *top, FILE *f, gpointer vp ) else if ( stack->under == NULL && eq_pos == 9 && strncasecmp ( line, "drawscale", eq_pos ) == 0 ) vik_viewport_set_draw_scale ( VIK_VIEWPORT(vp), TEST_BOOLEAN(line+10) ); else if ( stack->under == NULL && eq_pos == 14 && strncasecmp ( line, "drawcentermark", eq_pos ) == 0 ) - vik_viewport_set_draw_centermark ( VIK_VIEWPORT(vp), TEST_BOOLEAN(line+10) ); + vik_viewport_set_draw_centermark ( VIK_VIEWPORT(vp), TEST_BOOLEAN(line+15) ); else if ( stack->under && eq_pos == 4 && strncasecmp ( line, "name", eq_pos ) == 0 ) vik_layer_rename ( VIK_LAYER(stack->data), line+5 ); else if ( eq_pos == 7 && strncasecmp ( line, "visible", eq_pos ) == 0 ) diff --git a/src/vikwindow.c b/src/vikwindow.c index a22811e3..f57614e0 100644 --- a/src/vikwindow.c +++ b/src/vikwindow.c @@ -1066,6 +1066,14 @@ void vik_window_open_file ( VikWindow *vw, const gchar *filename, gboolean chang vw->only_updating_coord_mode_ui = FALSE; vik_layers_panel_change_coord_mode ( vw->viking_vlp, vik_viewport_get_coord_mode ( vw->viking_vvp ) ); + + mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowScale" ); + g_assert ( mode_button ); + gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM(mode_button),vik_viewport_get_draw_scale(vw->viking_vvp) ); + + mode_button = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowCenterMark" ); + g_assert ( mode_button ); + gtk_check_menu_item_set_active ( GTK_CHECK_MENU_ITEM(mode_button),vik_viewport_get_draw_centermark(vw->viking_vvp) ); } default: draw_update ( vw ); } @@ -1559,13 +1567,19 @@ static void window_change_coord_mode_cb ( GtkAction *old_a, GtkAction *a, VikWin static void set_draw_scale ( GtkAction *a, VikWindow *vw ) { - vik_viewport_set_draw_scale ( vw->viking_vvp, !vik_viewport_get_draw_scale(vw->viking_vvp) ); + GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowScale" ); + g_assert(check_box); + gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box)); + vik_viewport_set_draw_scale ( vw->viking_vvp, state ); draw_update ( vw ); } static void set_draw_centermark ( GtkAction *a, VikWindow *vw ) { - vik_viewport_set_draw_centermark ( vw->viking_vvp, !vik_viewport_get_draw_centermark(vw->viking_vvp) ); + GtkWidget *check_box = gtk_ui_manager_get_widget ( vw->uim, "/ui/MainMenu/View/ShowCenterMark" ); + g_assert(check_box); + gboolean state = gtk_check_menu_item_get_active ( GTK_CHECK_MENU_ITEM(check_box)); + vik_viewport_set_draw_centermark ( vw->viking_vvp, state ); draw_update ( vw ); } -- 2.39.5