tt_trk_trkseg_trkpt,
tt_trk_trkseg_trkpt_ele,
tt_trk_trkseg_trkpt_time,
+ tt_trk_trkseg_trkpt_name,
/* extended */
tt_trk_trkseg_trkpt_course,
tt_trk_trkseg_trkpt_speed,
{ tt_trk_trkseg_trkpt, "/gpx/trk/trkseg/trkpt" },
{ tt_trk_trkseg_trkpt_ele, "/gpx/trk/trkseg/trkpt/ele" },
{ tt_trk_trkseg_trkpt_time, "/gpx/trk/trkseg/trkpt/time" },
+ { tt_trk_trkseg_trkpt_name, "/gpx/trk/trkseg/trkpt/name" },
/* extended */
{ tt_trk_trkseg_trkpt_course, "/gpx/trk/trkseg/trkpt/course" },
{ tt_trk_trkseg_trkpt_speed, "/gpx/trk/trkseg/trkpt/speed" },
{ tt_trk_cmt, "/gpx/rte/cmt" },
{ tt_trk_desc, "/gpx/rte/desc" },
{ tt_trk_trkseg_trkpt, "/gpx/rte/rtept" },
+ { tt_trk_trkseg_trkpt_name, "/gpx/rte/rtept/name" },
{ tt_trk_trkseg_trkpt_ele, "/gpx/rte/rtept/ele" },
{0}
}
break;
+ case tt_trk_trkseg_trkpt_name:
case tt_trk_trkseg_trkpt_ele:
case tt_trk_trkseg_trkpt_time:
case tt_wpt_cmt:
g_string_erase ( c_cdata, 0, -1 );
break;
+ case tt_trk_trkseg_trkpt_name:
+ vik_trackpoint_set_name ( c_tp, c_cdata->str );
+ g_string_erase ( c_cdata, 0, -1 );
+ break;
+
case tt_trk_trkseg_trkpt_time:
if ( g_time_val_from_iso8601(c_cdata->str, &tp_time) ) {
c_tp->timestamp = tp_time.tv_sec;
case tt_trk_desc:
case tt_trk_trkseg_trkpt_time:
case tt_wpt_time:
+ case tt_trk_trkseg_trkpt_name:
case tt_trk_trkseg_trkpt_course:
case tt_trk_trkseg_trkpt_speed:
case tt_trk_trkseg_trkpt_fix:
g_free ( s_lat ); s_lat = NULL;
g_free ( s_lon ); s_lon = NULL;
+ if (tp->name) {
+ gchar *s_name = entitize(tp->name);
+ fprintf ( f, " <name>%s</name>\n", s_name );
+ g_free(s_name);
+ }
+
s_alt = NULL;
if ( tp->altitude != VIK_DEFAULT_ALTITUDE )
{
struct _VikTrwLayerTpwin {
GtkDialog parent;
GtkSpinButton *lat, *lon, *alt;
- GtkLabel *track_name, *course, *ts, *localtime, *diff_dist, *diff_time, *diff_speed, *speed, *hdop, *vdop, *pdop, *sat;
+ GtkWidget *trkpt_name;
+ GtkLabel *course, *ts, *localtime, *diff_dist, *diff_time, *diff_speed, *speed, *hdop, *vdop, *pdop, *sat;
// Previously these buttons were in a glist, however I think the ordering behaviour is implicit
// thus control manually to ensure operating on the correct button
GtkWidget *button_close;
}
}
+static void tpwin_set_name ( VikTrwLayerTpwin *tpwin )
+{
+ if ( tpwin->cur_tp && (!tpwin->sync_to_tp_block) ) {
+ vik_trackpoint_set_name ( tpwin->cur_tp, gtk_entry_get_text(GTK_ENTRY(tpwin->trkpt_name)) );
+ }
+}
+
VikTrwLayerTpwin *vik_trw_layer_tpwin_new ( GtkWindow *parent )
{
- static gchar *left_label_texts[] = { N_("<b>Part of Track:</b>"),
+ static gchar *left_label_texts[] = { N_("<b>Name:</b>"),
N_("<b>Latitude:</b>"),
N_("<b>Longitude:</b>"),
N_("<b>Altitude:</b>"),
VikTrwLayerTpwin *tpwin = VIK_TRW_LAYER_TPWIN ( g_object_new ( VIK_TRW_LAYER_TPWIN_TYPE, NULL ) );
GtkWidget *main_hbox, *left_vbox, *right_vbox;
GtkWidget *diff_left_vbox, *diff_right_vbox;
-
gtk_window_set_transient_for ( GTK_WINDOW(tpwin), parent );
gtk_window_set_title ( GTK_WINDOW(tpwin), _("Trackpoint") );
/* main track info */
left_vbox = a_dialog_create_label_vbox ( left_label_texts, G_N_ELEMENTS(left_label_texts), 1, 3 );
- tpwin->track_name = GTK_LABEL(gtk_label_new(NULL));
+ tpwin->trkpt_name = gtk_entry_new();
+ g_signal_connect_swapped ( G_OBJECT(tpwin->trkpt_name), "focus-out-event", G_CALLBACK(tpwin_set_name), tpwin );
+
tpwin->course = GTK_LABEL(gtk_label_new(NULL));
tpwin->ts = GTK_LABEL(gtk_label_new(NULL));
tpwin->localtime = GTK_LABEL(gtk_label_new(NULL));
g_signal_connect_swapped ( G_OBJECT(tpwin->alt), "value-changed", G_CALLBACK(tpwin_sync_alt_to_tp), tpwin );
right_vbox = gtk_vbox_new ( TRUE, 1 );
- gtk_box_pack_start ( GTK_BOX(right_vbox), GTK_WIDGET(tpwin->track_name), FALSE, FALSE, 3 );
+ gtk_box_pack_start ( GTK_BOX(right_vbox), GTK_WIDGET(tpwin->trkpt_name), FALSE, FALSE, 3 );
gtk_box_pack_start ( GTK_BOX(right_vbox), GTK_WIDGET(tpwin->lat), FALSE, FALSE, 3 );
gtk_box_pack_start ( GTK_BOX(right_vbox), GTK_WIDGET(tpwin->lon), FALSE, FALSE, 3 );
gtk_box_pack_start ( GTK_BOX(right_vbox), GTK_WIDGET(tpwin->alt), FALSE, FALSE, 3 );
tpwin->cur_tp = NULL;
+ GtkWidget *response_w = NULL;
+#if GTK_CHECK_VERSION (2, 20, 0)
+ response_w = gtk_dialog_get_widget_for_response ( GTK_DIALOG(tpwin), VIK_TRW_LAYER_TPWIN_CLOSE );
+#endif
+ if ( response_w )
+ gtk_widget_grab_focus ( response_w );
+
return tpwin;
}
void vik_trw_layer_tpwin_set_empty ( VikTrwLayerTpwin *tpwin )
{
- gtk_label_set_text ( tpwin->track_name, NULL );
+ gtk_editable_delete_text ( GTK_EDITABLE(tpwin->trkpt_name), 0, -1 );
+ gtk_widget_set_sensitive ( tpwin->trkpt_name, FALSE );
+
gtk_label_set_text ( tpwin->ts, NULL );
gtk_label_set_text ( tpwin->localtime, NULL );
gtk_label_set_text ( tpwin->course, NULL );
gtk_label_set_text ( tpwin->hdop, NULL );
gtk_label_set_text ( tpwin->pdop, NULL );
gtk_label_set_text ( tpwin->sat, NULL );
+
+ gtk_window_set_title ( GTK_WINDOW(tpwin), _("Trackpoint") );
}
void vik_trw_layer_tpwin_set_tp ( VikTrwLayerTpwin *tpwin, GList *tpl, const gchar *track_name )
static struct LatLon ll;
VikTrackpoint *tp = VIK_TRACKPOINT(tpl->data);
+ if ( tp->name )
+ gtk_entry_set_text ( GTK_ENTRY(tpwin->trkpt_name), tp->name );
+ else
+ gtk_editable_delete_text ( GTK_EDITABLE(tpwin->trkpt_name), 0, -1 );
+ gtk_widget_set_sensitive ( tpwin->trkpt_name, TRUE );
+
/* Only can insert if not at the end (otherwise use extend track) */
gtk_widget_set_sensitive ( tpwin->button_insert, (gboolean) GPOINTER_TO_INT (tpl->next) );
gtk_widget_set_sensitive ( tpwin->button_delete, TRUE );
gtk_widget_set_sensitive ( GTK_WIDGET(tpwin->lon), TRUE );
gtk_widget_set_sensitive ( GTK_WIDGET(tpwin->alt), TRUE );
- gtk_label_set_text ( tpwin->track_name, track_name );
+ vik_trw_layer_tpwin_set_track_name ( tpwin, track_name );
tpwin->sync_to_tp_block = TRUE; /* don't update while setting data. */
g_critical("Houston, we've had a problem. height=%d", height_units);
}
-
- tpwin->sync_to_tp_block = FALSE; /* don't update whlie setting data. */
-
+ tpwin->sync_to_tp_block = FALSE; // don't update while setting data.
if ( tp->has_timestamp )
{
void vik_trw_layer_tpwin_set_track_name ( VikTrwLayerTpwin *tpwin, const gchar *track_name )
{
- gtk_label_set_text ( tpwin->track_name, track_name );
+ gchar *tmp_name = g_strdup_printf ( "%s: %s", track_name, _("Trackpoint") );
+ gtk_window_set_title ( GTK_WINDOW(tpwin), tmp_name );
+ g_free ( tmp_name );
+ //gtk_label_set_text ( tpwin->track_name, track_name );
}