Store the location in lat/long format in the preferences - can set values directly.
Add more user friendly method: can set it to the current position via an Edit menu 'Set Default Position' command.
Add tool bar button to jump to the home location.
static gchar * params_units_distance[] = {"Kilometres", "Miles", NULL};
static gchar * params_units_speed[] = {"km/h", "mph", "m/s", NULL};
static gchar * params_units_height[] = {"Metres", "Feet", NULL};
-
+static VikLayerParamScale params_scales_lat[] = { {-90.0, 90.0, 0.05, 2} };
+static VikLayerParamScale params_scales_long[] = { {-180.0, 180.0, 0.05, 2} };
+
static VikLayerParam prefs1[] = {
{ VIKING_PREFERENCES_NAMESPACE "degree_format", VIK_LAYER_PARAM_UINT, VIK_DEGREE_FORMAT_DMS, N_("Degree format:"), VIK_LAYER_WIDGET_COMBOBOX, params_degree_formats, NULL },
};
{ VIKING_PREFERENCES_NAMESPACE "use_large_waypoint_icons", VIK_LAYER_PARAM_BOOLEAN, TRUE, N_("Use large waypoint icons:"), VIK_LAYER_WIDGET_CHECKBUTTON, NULL, NULL },
};
+static VikLayerParam prefs6[] = {
+ { VIKING_PREFERENCES_NAMESPACE "default_latitude", VIK_LAYER_PARAM_DOUBLE, VIK_LOCATION_LAT, N_("Default latitude:"), VIK_LAYER_WIDGET_SPINBUTTON, params_scales_lat, NULL },
+};
+static VikLayerParam prefs7[] = {
+ { VIKING_PREFERENCES_NAMESPACE "default_longitude", VIK_LAYER_PARAM_DOUBLE, VIK_LOCATION_LONG, N_("Default longitude:"), VIK_LAYER_WIDGET_SPINBUTTON, params_scales_long, NULL },
+};
+
void a_vik_preferences_init ()
{
a_preferences_register_group ( VIKING_PREFERENCES_GROUP_KEY, "Global preferences" );
tmp.b = TRUE;
a_preferences_register(prefs5, tmp, VIKING_PREFERENCES_GROUP_KEY);
+
+ /* Maintain the default location to New York */
+ tmp.d = 40.714490;
+ a_preferences_register(prefs6, tmp, VIKING_PREFERENCES_GROUP_KEY);
+ tmp.d = -74.007130;
+ a_preferences_register(prefs7, tmp, VIKING_PREFERENCES_GROUP_KEY);
}
vik_degree_format_t a_vik_get_degree_format ( )
use_large_waypoint_icons = a_preferences_get(VIKING_PREFERENCES_NAMESPACE "use_large_waypoint_icons")->b;
return use_large_waypoint_icons;
}
+
+gdouble a_vik_get_default_lat ( )
+{
+ gdouble data;
+ data = a_preferences_get(VIKING_PREFERENCES_NAMESPACE "default_latitude")->d;
+ return data;
+}
+
+gdouble a_vik_get_default_long ( )
+{
+ gdouble data;
+ data = a_preferences_get(VIKING_PREFERENCES_NAMESPACE "default_longitude")->d;
+ return data;
+}
gboolean a_vik_get_use_large_waypoint_icons ( );
+/* Location preferences */
+typedef enum {
+ VIK_LOCATION_LAT,
+ VIK_LOCATION_LONG,
+} vik_location_t;
+
+gdouble a_vik_get_default_lat ( );
+gdouble a_vik_get_default_long ( );
+
/* Group for global preferences */
#define VIKING_PREFERENCES_GROUP_KEY "viking.globals"
#define VIKING_PREFERENCES_NAMESPACE "viking.globals."
" <menuitem action='DeleteAll'/>"
" <separator/>"
" <menuitem action='MapCacheFlush'/>"
+ " <menuitem action='SetDefaultLocation'/>"
" <menuitem action='Preferences'/>"
" </menu>"
" <menu action='View'>"
#endif
" <menuitem action='ModeMercator'/>"
" <separator/>"
+ " <menuitem action='GotoDefaultLocation'/>"
" <menuitem action='GotoSearch'/>"
" <menuitem action='GotoLL'/>"
" <menuitem action='GotoUTM'/>"
" <separator/>"
" </placeholder>"
" <placeholder name='ViewToolItems'>"
+ " <toolitem action='GotoDefaultLocation'/>"
" <toolitem action='GotoSearch'/>"
" <separator/>"
" </placeholder>"
{
viewport_init_ra();
+ struct UTM utm;
+ struct LatLon ll;
+ ll.lat = a_vik_get_default_lat();
+ ll.lon = a_vik_get_default_long();
+ a_coords_latlon_to_utm ( &ll, &utm );
+
/* TODO: not static */
vvp->xmpp = 4.0;
vvp->ympp = 4.0;
vvp->coord_mode = VIK_COORD_LATLON;
vvp->drawmode = VIK_VIEWPORT_DRAWMODE_MERCATOR;
vvp->center.mode = VIK_COORD_LATLON;
- vvp->center.north_south = 40.714490;
- vvp->center.east_west = -74.007130;
- vvp->center.utm_zone = 31;
- vvp->center.utm_letter = 'N';
+ vvp->center.north_south = ll.lat;
+ vvp->center.east_west = ll.lon;
+ vvp->center.utm_zone = (int)utm.zone;
+ vvp->center.utm_letter = utm.letter;
vvp->scr_buffer = NULL;
vvp->alpha_pixbuf = NULL;
vvp->alpha_pixbuf_width = vvp->alpha_pixbuf_height = 0;
}
#endif
+static void goto_default_location( GtkAction *a, VikWindow *vw)
+{
+ struct LatLon ll;
+ ll.lat = a_vik_get_default_lat();
+ ll.lon = a_vik_get_default_long();
+ vik_viewport_set_center_latlon(vw->viking_vvp, &ll);
+ vik_layers_panel_emit_update(vw->viking_vlp);
+}
+
+
static void goto_address( GtkAction *a, VikWindow *vw)
{
a_vik_goto(vw, vw->viking_vlp, vw->viking_vvp);
draw_update ( vw );
}
+static void default_location_cb ( GtkAction *a, VikWindow *vw )
+{
+ /* Simplistic repeat of preference setting
+ Only the name & type are important for setting the preference via this 'external' way */
+ VikLayerParam pref_lat[] = {
+ { VIKING_PREFERENCES_NAMESPACE "default_latitude",
+ VIK_LAYER_PARAM_DOUBLE,
+ VIK_LOCATION_LAT,
+ NULL,
+ VIK_LAYER_WIDGET_SPINBUTTON,
+ NULL,
+ NULL },
+ };
+ VikLayerParam pref_lon[] = {
+ { VIKING_PREFERENCES_NAMESPACE "default_longitude",
+ VIK_LAYER_PARAM_DOUBLE,
+ VIK_LOCATION_LONG,
+ NULL,
+ VIK_LAYER_WIDGET_SPINBUTTON,
+ NULL,
+ NULL },
+ };
+
+ /* Get current center */
+ struct LatLon ll;
+ vik_coord_to_latlon ( vik_viewport_get_center ( vw->viking_vvp ), &ll );
+
+ /* Apply to preferences */
+ VikLayerParamData vlp_data;
+ vlp_data.d = ll.lat;
+ a_preferences_run_setparam (vlp_data, pref_lat);
+ vlp_data.d = ll.lon;
+ a_preferences_run_setparam (vlp_data, pref_lon);
+ /* Remember to save */
+ a_preferences_save_to_file();
+}
+
static void clear_cb ( GtkAction *a, VikWindow *vw )
{
vik_layers_panel_clear ( vw->viking_vlp );
{ "Exit", GTK_STOCK_QUIT, N_("E_xit"), "<control>W", N_("Exit the program"), (GCallback)window_close },
{ "SaveExit", GTK_STOCK_QUIT, N_("Save and Exit"), NULL, N_("Save and Exit the program"), (GCallback)save_file_and_exit },
+ { "GotoDefaultLocation", GTK_STOCK_HOME, N_("Go to the _Default Location"), NULL, N_("Go to the default location"), (GCallback)goto_default_location },
{ "GotoSearch", GTK_STOCK_JUMP_TO, N_("Go to Location..."), NULL, N_("Go to address/place using text search"), (GCallback)goto_address },
{ "GotoLL", GTK_STOCK_JUMP_TO, N_("_Go to Lat/Lon..."), NULL, N_("Go to arbitrary lat/lon coordinate"), (GCallback)draw_goto_cb },
{ "GotoUTM", GTK_STOCK_JUMP_TO, N_("Go to UTM..."), NULL, N_("Go to arbitrary UTM coordinate"), (GCallback)draw_goto_cb },
{ "Delete", GTK_STOCK_DELETE, N_("_Delete"), NULL, NULL, (GCallback)menu_delete_layer_cb },
{ "DeleteAll", NULL, N_("Delete All"), NULL, NULL, (GCallback)clear_cb },
{ "MapCacheFlush",NULL, N_("_Flush Map Cache"), NULL, NULL, (GCallback)mapcache_flush_cb },
+ { "SetDefaultLocation", GTK_STOCK_GO_FORWARD, N_("_Set the Default Location"), NULL, N_("Set the Default Location to the current position"),(GCallback)default_location_cb },
{ "Preferences",GTK_STOCK_PREFERENCES, N_("_Preferences"), NULL, NULL, (GCallback)preferences_cb },
{ "Properties",GTK_STOCK_PROPERTIES, N_("_Properties"), NULL, NULL, (GCallback)menu_properties_cb },