Exemplo n.º 1
0
void a_geonames_search(VikWindow *vw, VikLayersPanel *vlp, VikViewport *vvp)
{
  VikCoord new_center;
  gchar *s_str;
  gboolean more = TRUE;
  int ret;

  do {
    s_str = a_prompt_for_search_string(vw);
    if ((!s_str) || (s_str[0] == 0)) {
      more = FALSE;
    }
    else {
      ret = geonames_search_get_coord(vw, vvp, s_str, &new_center);
      if (ret == 1) {
        vik_viewport_set_center_coord(vvp, &new_center);
        vik_layers_panel_emit_update(vlp);
        more = FALSE;
      }
      else {
        if (ret == 3) {
          if (!prompt_try_again(vw)) {
            more = FALSE;
          }
        }
      }
    }
    if (s_str) {
      g_free(s_str);
    }
  } while (more);
}
Exemplo n.º 2
0
void a_vik_goto(VikWindow *vw, VikViewport *vvp)
{
  VikCoord new_center;
  gchar *s_str;
  gboolean more = TRUE;

  if (goto_tools_list == NULL)
  {
    /* Empty list */
    display_no_tool(vw);
    return;
  }

  do {
    s_str = a_prompt_for_goto_string(vw);
    if ((!s_str) || (s_str[0] == 0)) {
      more = FALSE;
    }

    else if (!vik_goto_tool_get_coord(g_list_nth_data (goto_tools_list, last_goto_tool), vw, vvp, s_str, &new_center)) {
      if (last_coord)
        g_free(last_coord);
      last_coord = g_malloc(sizeof(VikCoord));
      *last_coord = new_center;
      if (last_successful_goto_str)
        g_free(last_successful_goto_str);
      last_successful_goto_str = g_strdup(last_goto_str);
      vik_viewport_set_center_coord(vvp, &new_center, TRUE);
      more = FALSE;
    }
    else if (!prompt_try_again(vw))
        more = FALSE;
    g_free(s_str);
  } while (more);
}
Exemplo n.º 3
0
static void trw_layer_waypoint_view ( menu_array_values values )
{
	VikTrwLayer *vtl = VIK_TRW_LAYER(values[MA_VTL]);
	VikWaypoint *wpt = VIK_WAYPOINT(values[MA_WPT]);
	VikViewport *vvp = VIK_VIEWPORT(values[MA_VVP]);

	vik_viewport_set_center_coord ( vvp, &(wpt->coord), TRUE );

	trw_layer_waypoint_select (values);

	vik_layer_emit_update ( VIK_LAYER(vtl) );
}
Exemplo n.º 4
0
static void goto_center_ll ( VikViewport *vp,
                             struct LatLon ll_tl,
                             struct LatLon ll_br )
{
  VikCoord vc_center;
  struct LatLon ll_center;

  ll_center.lat = (ll_tl.lat + ll_br.lat) / 2.0;
  ll_center.lon = (ll_tl.lon + ll_br.lon) / 2.0;

  vik_coord_load_from_latlon ( &vc_center, vik_viewport_get_coord_mode (vp), &ll_center );
  vik_viewport_set_center_coord ( vp, &vc_center, TRUE );
}
Exemplo n.º 5
0
void vik_viewport_set_center_screen ( VikViewport *vvp, int x, int y )
{
  g_return_if_fail ( vvp != NULL );
  if ( vvp->coord_mode == VIK_COORD_UTM ) {
    /* slightly optimized */
    vvp->center.east_west += vvp->xmpp * (x - (vvp->width/2));
    vvp->center.north_south += vvp->ympp * ((vvp->height/2) - y);
    viewport_utm_zone_check ( vvp );
  } else {
    VikCoord tmp;
    vik_viewport_screen_to_coord ( vvp, x, y, &tmp );
    vik_viewport_set_center_coord ( vvp, &tmp );
  }
}
Exemplo n.º 6
0
static void georef_layer_goto_center ( gpointer vgl_vlp[2] )
{
  VikGeorefLayer *vgl = VIK_GEOREF_LAYER ( vgl_vlp[0] );
  VikViewport *vp = vik_layers_panel_get_viewport(VIK_LAYERS_PANEL(vgl_vlp[1]));
  struct UTM utm;
  VikCoord coord;

  vik_coord_to_utm ( vik_viewport_get_center ( vp ), &utm );

  utm.easting = vgl->corner.easting + (vgl->width * vgl->mpp_easting / 2); /* only an approximation */
  utm.northing = vgl->corner.northing - (vgl->height * vgl->mpp_northing / 2);

  vik_coord_load_from_utm ( &coord, vik_viewport_get_coord_mode ( vp ), &utm );
  vik_viewport_set_center_coord ( vp, &coord );

  vik_layers_panel_emit_update ( VIK_LAYERS_PANEL(vgl_vlp[1]) );
}
Exemplo n.º 7
0
void a_vik_goto(VikWindow *vw, VikViewport *vvp)
{
  VikCoord new_center;
  gchar *s_str;
  gboolean more = TRUE;

  if (goto_tools_list == NULL)
  {
    /* Empty list */
    display_no_tool(vw);
    return;
  }

  do {
    s_str = a_prompt_for_goto_string(vw);
    if ((!s_str) || (s_str[0] == 0)) {
      more = FALSE;
    }
    else {
      int ans = vik_goto_tool_get_coord(g_list_nth_data (goto_tools_list, last_goto_tool), vw, vvp, s_str, &new_center);
      if ( ans == 0 ) {
        if (last_coord)
          g_free(last_coord);
        last_coord = g_malloc(sizeof(VikCoord));
        *last_coord = new_center;
        if (last_successful_goto_str)
          g_free(last_successful_goto_str);
        last_successful_goto_str = g_strdup(last_goto_str);
        vik_viewport_set_center_coord(vvp, &new_center, TRUE);
        more = FALSE;
      }
      else if ( ans == -1 ) {
        if (!prompt_try_again(vw, _("I don't know that place. Do you want another goto?")))
          more = FALSE;
      }
      else if (!prompt_try_again(vw, _("Service request failure. Do you want another goto?")))
        more = FALSE;
    }
    g_free(s_str);
  } while (more);
}