]> git.street.me.uk Git - andy/viking.git/commitdiff
Fixed bugs that caused "draw_scale" and "draw_centermark" not consistent.
authorQuy Tonthat <qtonthat@gmail.com>
Tue, 3 Jul 2007 05:59:19 +0000 (05:59 +0000)
committerQuy Tonthat <qtonthat@gmail.com>
Tue, 3 Jul 2007 05:59:19 +0000 (05:59 +0000)
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 <qtonthat@gmail.com>
src/file.c
src/vikwindow.c

index 9d38220bd22f7faf00795679aa1a2c081d0551b0..be4fb118b54d526e580822203cba76c191ddb2f6 100644 (file)
@@ -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 )
index a22811e3d4d6cea63f888c6d642d96b26c45075d..f57614e0cca7466f190e2d9745830f90ea858901 100644 (file)
@@ -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 );
 }