[Git][debian-gis-team/gpsprune][master] 4 commits: New upstream version 25.1

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Sun Mar 2 15:11:39 GMT 2025



Bas Couwenberg pushed to branch master at Debian GIS Project / gpsprune


Commits:
28ccb6f0 by Bas Couwenberg at 2025-03-02T16:07:25+01:00
New upstream version 25.1
- - - - -
0a3c1b19 by Bas Couwenberg at 2025-03-02T16:07:26+01:00
Update upstream source from tag 'upstream/25.1'

Update to upstream version '25.1'
with Debian dir 650fd0ae9e3f80da52924a873c387e85dcee3d1a
- - - - -
3f9abe57 by Bas Couwenberg at 2025-03-02T16:07:38+01:00
New upstream release.

- - - - -
d5f2db74 by Bas Couwenberg at 2025-03-02T16:08:24+01:00
Set distribution to unstable.

- - - - -


18 changed files:

- build.sh
- debian/changelog
- tim/prune/GpsPrune.java
- tim/prune/data/Altitude.java
- tim/prune/data/DataPoint.java
- tim/prune/function/ProjectRange.java
- tim/prune/function/comparesegments/CompareSegmentsFunction.java
- tim/prune/function/comparesegments/SegmentTableModel.java
- tim/prune/gui/DetailsDisplay.java
- tim/prune/lang/prune-texts_it.properties
- tim/prune/lang/prune-texts_nl.properties
- tim/prune/lang/prune-texts_no.properties
- tim/prune/lang/prune-texts_pt.properties
- tim/prune/load/xml/GpxHandler.java
- tim/prune/load/xml/GpxTag.java
- tim/prune/readme.txt
- tim/prune/save/xml/KmlExporter.java
- tim/prune/save/xml/KmlWriter.java


Changes:

=====================================
build.sh
=====================================
@@ -1,6 +1,6 @@
 # Build script
 # Version number
-PRUNENAME=gpsprune_25
+PRUNENAME=gpsprune_25.1
 # remove compile directory
 rm -rf compile
 # remove dist directory


=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+gpsprune (25.1-1) unstable; urgency=medium
+
+  * New upstream release.
+
+ -- Bas Couwenberg <sebastic at debian.org>  Sun, 02 Mar 2025 16:08:15 +0100
+
 gpsprune (25-1) unstable; urgency=medium
 
   * New upstream release.


=====================================
tim/prune/GpsPrune.java
=====================================
@@ -42,9 +42,9 @@ import tim.prune.gui.profile.ProfileChart;
 public class GpsPrune
 {
 	/** Version number of application, used in about screen and for version check */
-	public static final String VERSION_NUMBER = "25";
+	public static final String VERSION_NUMBER = "25.1";
 	/** Build number, just used for about screen */
-	public static final String BUILD_NUMBER = "424";
+	public static final String BUILD_NUMBER = "426";
 	/** Static reference to App object */
 	private static App APP = null;
 


=====================================
tim/prune/data/Altitude.java
=====================================
@@ -36,6 +36,17 @@ public class Altitude
 		_stringValue = "" + inValue;
 	}
 
+	/**
+	 * Constructor with another Altitude value
+	 */
+	public Altitude(Altitude inOther)
+	{
+		_value = inOther._value;
+		_unit = inOther._unit;
+		_valid = inOther._valid;
+		_stringValue = inOther._stringValue;
+	}
+
 	/**
 	 * Reset the altitude parameters to the same as the given object
 	 * @param inValue value to set as string


=====================================
tim/prune/data/DataPoint.java
=====================================
@@ -428,6 +428,16 @@ public class DataPoint
 		setModified(inIsUndo);
 	}
 
+	/**
+	 * Set the altitude from another altitude value
+	 */
+	public void setAltitude(Altitude inAltitude)
+	{
+		_altitude = new Altitude(inAltitude);
+		setFieldValue(Field.ALTITUDE, _altitude.getStringValue(null), false);
+		setModified(false);
+	}
+
 	/**
 	 * Set the photo for this data point
 	 * @param inPhoto Photo object


=====================================
tim/prune/function/ProjectRange.java
=====================================
@@ -235,7 +235,13 @@ public class ProjectRange extends GenericFunction
 			// Create point and append to track
 			DataPoint currPoint = track.getPoint(pointNum);
 			DataPoint point = PointUtils.projectPoint(currPoint, inBearingRads, inDistanceRads);
-			point.setSegmentStart(pointNum == inStartIndex);
+			point.setSegmentStart(pointNum == inStartIndex || currPoint.getSegmentStart());
+			if (currPoint.isWaypoint()) {
+				point.setWaypointName(currPoint.getWaypointName() + "'");
+			}
+			if (currPoint.hasAltitude()) {
+				point.setAltitude(currPoint.getAltitude());
+			}
 			points.add(point);
 		}
 


=====================================
tim/prune/function/comparesegments/CompareSegmentsFunction.java
=====================================
@@ -8,6 +8,7 @@ import tim.prune.config.Config;
 import tim.prune.config.TimezoneHelper;
 import tim.prune.data.DataPoint;
 import tim.prune.data.Distance;
+import tim.prune.data.NumberUtils;
 import tim.prune.data.Track;
 import tim.prune.data.Unit;
 import tim.prune.data.UnitSet;
@@ -16,6 +17,8 @@ import tim.prune.gui.BoxPanel;
 import tim.prune.gui.WizardLayout;
 
 import javax.swing.*;
+import javax.swing.table.DefaultTableCellRenderer;
+
 import java.awt.*;
 import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
@@ -77,6 +80,21 @@ public class CompareSegmentsFunction extends GenericFunction
 		}
 	}
 
+	/** Custom cell renderer using padding on right side */
+	private static class RightPaddedRenderer extends DefaultTableCellRenderer
+	{
+		public Component getTableCellRendererComponent(JTable inTable, Object inValue, boolean inSelected,
+			boolean inHasFocus, int inRow, int inColumn)
+		{
+			JLabel label = (JLabel) super.getTableCellRendererComponent(inTable, inValue, inSelected, inHasFocus, inRow, inColumn);
+			label.setHorizontalAlignment(SwingConstants.RIGHT);
+			label.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 24));
+			label.setText(NumberUtils.formatNumberLocal((Double) inValue, 3));
+			return label;
+		}
+	}
+
+
 	/**
 	 * Constructor
 	 */
@@ -119,6 +137,8 @@ public class CompareSegmentsFunction extends GenericFunction
 		Unit distanceUnits = getConfig().getUnitSet().getDistanceUnit();
 		_segmentModel.init(segments, timezone, distanceUnits);
 		_segmentTable.clearSelection();
+		_segmentTable.getColumnModel().getColumn(2).setCellRenderer(new RightPaddedRenderer());
+
 		_compareButton.setEnabled(segments.size() == 2);
 		setDialogTitle(segments.size() == 2);
 		if (segments.size() == 2) {
@@ -189,7 +209,7 @@ public class CompareSegmentsFunction extends GenericFunction
 		_topLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
 		selectionPanel.add(_topLabel, BorderLayout.NORTH);
 
-		// First table for 'from point'
+		// Table to show segments found
 		_segmentTable = new JTable(_segmentModel);
 		_segmentTable.getSelectionModel().addListSelectionListener(e -> checkSelection());
 		_segmentTable.setRowSelectionAllowed(true);


=====================================
tim/prune/function/comparesegments/SegmentTableModel.java
=====================================
@@ -98,10 +98,10 @@ public class SegmentTableModel extends AbstractTableModel
 	public String getColumnName(int inColIndex)
 	{
 		if (inColIndex == 0) {
-			return I18nManager.getText("fieldname.date");
+			return I18nManager.getText("dialog.comparesegments.startdate");
 		}
 		if (inColIndex == 1) {
-			return I18nManager.getText("fieldname.time");
+			return I18nManager.getText("dialog.comparesegments.starttime");
 		}
 		if (inColIndex == 2)
 		{


=====================================
tim/prune/gui/DetailsDisplay.java
=====================================
@@ -30,6 +30,7 @@ import tim.prune.data.AudioClip;
 import tim.prune.data.Coordinate;
 import tim.prune.data.DataPoint;
 import tim.prune.data.Field;
+import tim.prune.data.FieldList;
 import tim.prune.data.Photo;
 import tim.prune.data.RangeStats;
 import tim.prune.data.Selection;
@@ -52,10 +53,12 @@ public class DetailsDisplay extends GenericDisplay
 	private JLabel _latLabel = null, _longLabel = null;
 	private JLabel _altLabel = null;
 	private JLabel _ptDateLabel = null, _ptTimeLabel = null;
-	private JLabel _descLabel = null;
+	private JLabel _descLabel = null, _commentLabel = null;
 	private JLabel _speedLabel = null, _vSpeedLabel = null;
 	private JLabel _nameLabel = null, _typeLabel = null;
 	private JLabel _filenameLabel = null;
+	private static final int NUM_EXTENSION_LABELS = 5;
+	private final JLabel[] _ptExtensionLabels = new JLabel[NUM_EXTENSION_LABELS];
 
 	// Range details
 	private JLabel _rangeLabel = null;
@@ -146,6 +149,8 @@ public class DetailsDisplay extends GenericDisplay
 		pointDetailsPanel.add(_ptTimeLabel);
 		_descLabel = new JLabel("");
 		pointDetailsPanel.add(_descLabel);
+		_commentLabel = new JLabel("");
+		pointDetailsPanel.add(_commentLabel);
 		_speedLabel = new JLabel("");
 		pointDetailsPanel.add(_speedLabel);
 		_vSpeedLabel = new JLabel("");
@@ -156,6 +161,10 @@ public class DetailsDisplay extends GenericDisplay
 		pointDetailsPanel.add(_typeLabel);
 		_filenameLabel = new JLabel("");
 		pointDetailsPanel.add(_filenameLabel);
+		for (int i=0; i<NUM_EXTENSION_LABELS; i++) {
+			_ptExtensionLabels[i] = new JLabel("example");
+			pointDetailsPanel.add(_ptExtensionLabels[i]);
+		}
 
 		// range details panel
 		JPanel rangeDetailsPanel = makeDetailsPanel("details.rangedetails", biggerFont);
@@ -258,7 +267,8 @@ public class DetailsDisplay extends GenericDisplay
 		// Make dropdown for distance units
 		_distUnitsDropdown = new JComboBox<String>();
 		final UnitSet currUnits = _config.getUnitSet();
-		for (int i=0; i<UnitSetLibrary.getNumUnitSets(); i++) {
+		for (int i=0; i<UnitSetLibrary.getNumUnitSets(); i++)
+		{
 			_distUnitsDropdown.addItem(I18nManager.getText(UnitSetLibrary.getUnitSet(i).getDistanceUnit().getNameKey()));
 			if (UnitSetLibrary.getUnitSet(i) == currUnits) {
 				_distUnitsDropdown.setSelectedIndex(i);
@@ -307,11 +317,13 @@ public class DetailsDisplay extends GenericDisplay
 			_ptDateLabel.setText("");
 			_ptTimeLabel.setText("");
 			_descLabel.setText("");
+			_commentLabel.setText("");
 			_nameLabel.setText("");
 			_typeLabel.setText("");
 			_speedLabel.setText("");
 			_vSpeedLabel.setText("");
 			_filenameLabel.setText("");
+			clearPointExtensionLabels();
 		}
 		else
 		{
@@ -400,6 +412,7 @@ public class DetailsDisplay extends GenericDisplay
 				_filenameLabel.setText("");
 				_filenameLabel.setToolTipText("");
 			}
+			setPointExtensionLabels(currentPoint);
 		}
 
 		// Update range details
@@ -526,39 +539,67 @@ public class DetailsDisplay extends GenericDisplay
 		_playAudioPanel.setVisible(currentAudio != null);
 	}
 
+	private void clearPointExtensionLabels()
+	{
+		for (JLabel label : _ptExtensionLabels) {
+			label.setText("");
+		}
+	}
+
+	private void setPointExtensionLabels(DataPoint inPoint)
+	{
+		int labelIndex = 0;
+		FieldList fields = inPoint.getFieldList();
+		for (int i=0; i<fields.getNumFields(); i++)
+		{
+			Field field = fields.getField(i);
+			if (field.isBuiltIn() || labelIndex >= NUM_EXTENSION_LABELS) {
+				continue;
+			}
+			String value = inPoint.getFieldValue(field);
+			if (value != null && !value.isEmpty() && !field.isBuiltIn())
+			{
+				_ptExtensionLabels[labelIndex].setText(field.getName() + ": " + value);
+				labelIndex++;
+			}
+		}
+		// Clear the ones afterwards
+		while (labelIndex < NUM_EXTENSION_LABELS)
+		{
+			_ptExtensionLabels[labelIndex].setText("");
+			labelIndex++;
+		}
+	}
+
 	/** Set either the description or comment from the current point */
 	private void showDescriptionOrComment(DataPoint inPoint)
 	{
 		String desc = inPoint.getFieldValue(Field.DESCRIPTION);
-		if (desc != null && !desc.isEmpty()) {
-			showDescriptionOrComment(LABEL_POINT_DESCRIPTION, desc);
-			return;
-		}
+		showDescriptionOrComment(_descLabel, LABEL_POINT_DESCRIPTION, desc);
 		String comment = inPoint.getFieldValue(Field.COMMENT);
-		if (comment != null && !comment.isEmpty()) {
-			showDescriptionOrComment(LABEL_POINT_COMMENT, comment);
-			return;
+		if (comment == null || comment.isEmpty() || comment.equals(desc)) {
+			comment = "";
 		}
-		showDescriptionOrComment("", "");
+		showDescriptionOrComment(_commentLabel, LABEL_POINT_COMMENT, comment);
 	}
 
-	/** Set the description label and its tooltip */
-	private void showDescriptionOrComment(String inPrefix, String inValue)
+	/** Set the description or comment label and its tooltip */
+	private void showDescriptionOrComment(JLabel inLabel, String inPrefix, String inValue)
 	{
-		if (inPrefix.isEmpty() || inValue.isEmpty())
+		if (inPrefix.isEmpty() || inValue == null || inValue.isEmpty())
 		{
-			_descLabel.setText("");
-			_descLabel.setToolTipText("");
+			inLabel.setText("");
+			inLabel.setToolTipText("");
 		}
 		else
 		{
 			if (inValue.length() < 10) {
-				_descLabel.setText(inPrefix + inValue);
+				inLabel.setText(inPrefix + inValue);
 			}
 			else {
-				_descLabel.setText(shortenString(inValue));
+				inLabel.setText(shortenString(inValue));
 			}
-			_descLabel.setToolTipText(inPrefix + inValue);
+			inLabel.setToolTipText(inPrefix + inValue);
 		}
 	}
 


=====================================
tim/prune/lang/prune-texts_it.properties
=====================================
@@ -76,6 +76,7 @@ shortcut.menu.track.undo=Z
 shortcut.menu.track.compress=C
 shortcut.menu.range.all=T
 shortcut.menu.point.edit=E
+shortcut.menu.view.details=I
 shortcut.menu.help.help=H
 
 # Functions
@@ -96,9 +97,11 @@ function.deleterange=Cancella la serie
 function.croptrack=Cima la traccia
 function.reverserange=Inverti la serie
 function.interpolate=Interpola i punti
+function.interpolatetimestamps=Interpolare le informazioni temporali
 function.deletebydate=Cancella punti secondo la data
 function.addtimeoffset=Aggiungi uno scarto temporale
 function.addaltitudeoffset=Aggiungi uno scarto di altitudine
+function.projectrange=Proiettare l'intervallo
 function.rearrangewaypoints=Riorganizza waypoint
 function.dedupewaypoints=Cancella i waypoints duplicati
 function.deletefieldvalues=Cancella i valori del campo
@@ -119,12 +122,14 @@ function.selectsegment=Seleziona segmento corrente
 function.splitsegments=Dividi traccia in segmenti
 function.sewsegments=Riorganizza segmenti insieme
 function.createmarkerwaypoints=Crea marcatori
+function.comparesegments=Confrontare due segmenti
 function.lookupsrtm=Ottieni quote da SRTM
 function.configuresrtmsources=Configura le fonti SRTM
 function.getwikipedia=Ottieni i punti Wikipedia nelle vicinanze
 function.searchwikipedianames=Cerca il nome in Wikipedia
 function.searchosmpois=Ottieni i punti OSM nelle vicinanze
 function.searchopencachingde=Cerca OpenCaching.de
+function.opengeocachepage=Pagina web su questa geocache
 function.downloadosm=Scarica dati OSM dell'area
 function.truncatecoords=Tronca le coordinate
 function.duplicatepoint=Duplica punto corrente in coda
@@ -258,11 +263,15 @@ dialog.exportkml.imagesize=Dimensione immagine
 dialog.exportkml.trackcolour=Colore della traccia
 dialog.exportgpx.name=Nome
 dialog.exportgpx.desc=Descrizione
+dialog.exportgpx.extensions=Estensioni xml
 dialog.exportgpx.includetimestamps=Includi dati temporali
 dialog.exportgpx.descriptionstocomments=Copiare le descrizioni nei commenti
 dialog.exportgpx.encoding=Codifica caratteri
 dialog.exportgpx.encoding.system=Impostazione di diffetto
 dialog.exportgpx.encoding.utf8=UTF-8
+dialog.exportgpx.version10withextensions=Gpx 1.0 con estensioni
+dialog.exportgpx.version11withextensions=Gpx 1.1 con estensioni
+dialog.exportxml.version=Versione
 dialog.exportpov.text=Per favore inserisci i parametri per l'esportazione in POV
 dialog.exportpov.font=Font
 dialog.exportpov.camerax=Camera X
@@ -322,6 +331,7 @@ dialog.addtimeoffset.hours=Ore
 dialog.addtimeoffset.minutes=Minuti
 dialog.addtimeoffset.seconds=Secondi
 dialog.addtimeoffset.notimestamps=Non posso aggiungere uno scarto temporale a questa selezione perch\u00e9 non contiene informazioni temporali
+dialog.addtimeoffset.confirm=La modifica di questi timestamp potrebbe rendere i punti fuori sequenza.\nSiete sicuri di volerlo fare?
 dialog.findwaypoint.intro=Inserisci parte del nome del waypoint
 dialog.findwaypoint.search=Cerca
 dialog.saveexif.title=Salva Exif
@@ -523,6 +533,9 @@ dialog.colourer.type.bydate=Per data
 dialog.colourer.start=Colore iniziale
 dialog.colourer.end=Colore finale
 dialog.colourer.maxcolours=Numero massimo di colori
+dialog.colourer.huesmode=Interpolazione della tonalit\u00e0
+dialog.colourer.huesmode.narrow=Stretta
+dialog.colourer.huesmode.wide=Ampia
 dialog.setlanguage.firstintro=Puoi selezionare una delle lingue incluse,<p>oppure selezionare un file di testo.
 dialog.setlanguage.secondintro=Devi salvare le impostazioni e<p> riavviare GpsPrune per cambiare la lingua.
 dialog.setlanguage.language=Lingua
@@ -617,6 +630,9 @@ dialog.markers.half.descent=Met\u00e0 della discesa
 dialog.projectpoint.desc=Inserire l'azimut e la distanza per la proiezione
 dialog.projectpoint.bearing=Azimut (gradi da nord)
 dialog.projectcircle.desc=Inserire il raggio del cerchio
+dialog.projectrange.desc=Immettere la direzione e la distanza per proiettare ciascun punto.
+dialog.projectrange.createcopies=Creare nuovi punti
+dialog.projectrange.editexisting=Spostare i punti esistenti
 dialog.configuresrtm.intro1=Valori di altitudine possono provenire dai dati a bassa risoluzione senza login,
 dialog.configuresrtm.intro2=sia dai dati ad alta risoluzione con registrazione alla NASA
 dialog.configuresrtm.threesecond=Dati a bassa risoluzione (tre arcsecondi)
@@ -632,7 +648,7 @@ dialog.findfile.dir=Cartella da ricercare
 dialog.findfile.searchtext=Testo
 dialog.findfile.daterange=Intervallo di date
 dialog.findfile.locationfilter=Filtro di posizione
-dialog.findfile.resultscolumn.file=
+dialog.findfile.resultscolumn.file=File
 dialog.findfile.resultscolumn.contents=Contenuti
 dialog.findfile.filepath.none=Non \u00e8 stato selezionato alcun file
 dialog.findfile.filepath.single=Il file selezionato: %s
@@ -666,6 +682,20 @@ dialog.locationfilter.distance=Distanza
 dialog.locationfilter.frompoint=dal punto
 dialog.locationfilter.describe=Entro %s dal %s
 dialog.migrateconfig.confirm=Si consiglia di spostare il file delle impostazioni\nda "%s"\na "%s".\nSpostare questo file ora?
+dialog.comparesegments.intro=Scegliete due di questi segmenti da confrontare tra loro:
+dialog.comparesegments.introtwosegments=Questi due segmenti sono stati trovati:
+dialog.comparesegments.comparing=Confronto dei segmenti ...
+dialog.comparesegments.results=Ecco i risultati:
+dialog.comparesegments.segments=Segmenti
+dialog.comparesegments.startdate=Data di inizio
+dialog.comparesegments.starttime=Tempo all'inizio
+dialog.comparesegments.matches=Corrispondenze
+dialog.comparesegments.nummatches=Numero di corrispondenze
+dialog.comparesegments.data.distancematches=Corrispondenze in base alla distanza
+dialog.comparesegments.data.timematches=Corrispondenze in base al tempo
+dialog.comparesegments.data.secsahead=Secondi in anticipo
+dialog.comparesegments.data.distahead=Distanza in anticipo
+dialog.comparesegments.data.speeddiff=Aumento della velocit\u00e0
 
 # 3d window
 dialog.3d.title=Visione GpsPrune in 3D
@@ -690,6 +720,7 @@ confirm.sewsegments=%d segmenti sono stati raggruppati
 confirm.cutandmove=Selezione spostata
 confirm.pointadded=Aggiungi 1 punto
 confirm.pointsadded=Aggiungi %d punti
+confirm.pointsedited=%d punti sono stati modificati
 confirm.saveexif.ok=Salvato %d foto
 confirm.undo.single=operazione annullate
 confirm.undo.multi=%d operazioni annullate
@@ -760,8 +791,11 @@ button.apply=Applica
 button.allow=Consentire
 button.block=Declinare
 button.search=Cercare
+button.compareselected=Confrontare i selezionati
+button.exportdata=Esportare i dati
+button.chart=Mostrare il grafico
 
-# File types
+# File types for filtering
 filetypefilter.txt=File TXT
 filetypefilter.jpeg=File JPG
 filetypefilter.kmlkmz=File KML, KMZ
@@ -776,6 +810,7 @@ filetype.text=File testo
 filetype.gpx=File GPX
 filetype.kml=File KML
 filetype.nmea=File NMEA
+filetype.gpsbabel=Importato dal GPSBabel
 filetype.json=File JSON
 
 # Display components
@@ -827,6 +862,8 @@ details.audiodetails=Dettagli ripresa audio
 details.noaudio=Nessuna ripresa audio selezionata
 details.audio.file=Ripresa audio
 details.audio.playing=Riproduzione...
+details.filedetails=Dettagli del file
+details.nofileloaded=Non \u00e8 stato caricato alcun file
 map.overzoom=Mappa non disponibile a questo livello di zoom
 
 # Field names
@@ -852,6 +889,11 @@ fieldname.comment=Commento
 fieldname.symbol=Simbolo
 fieldname.photo=Foto
 fieldname.audio=Audio
+fieldname.heartrate=Frequenza cardiaca
+fieldname.cadence=Cadenza
+fieldname.power=Potenza
+fieldname.course=Rotta
+fieldname.bearing=Azimut
 
 # Measurement units
 units.original=Originale
@@ -976,3 +1018,6 @@ error.sewsegments.nothingdone.single=Non \u00e8 stato possibile riorganizzare ne
 error.findfile.nofilesfound=Non \u00e8 stato possibile trovare alcun file in questa cartella.
 error.migrateconfig.couldnotcreatedirectory=Impossibile creare la cartella %s.\nNon \u00e8 stato possibile migrare le impostazioni.
 error.migrateconfig.couldnotdeletefile=Non \u00e8 stato possibile eliminare il file %s.\nEliminare il file manualmente.
+error.interpolatetimestamps.notpossible=Non \u00e8 riuscito a interpolare le informazioni temporali
+error.comparesegments.needtwosegments=Questa funzione richiede almeno due segmenti con timestamp.\nProvare a caricare pi\u00f9 tracce.
+error.comparesegments.notenoughintersections=Non sono state trovate abbastanza intersezioni tra questi due segmenti.\nProvare a selezionare segmenti simili.


=====================================
tim/prune/lang/prune-texts_nl.properties
=====================================
@@ -78,6 +78,7 @@ shortcut.menu.track.undo=Z
 shortcut.menu.track.compress=C
 shortcut.menu.range.all=A
 shortcut.menu.point.edit=W
+shortcut.menu.view.details=I
 shortcut.menu.help.help=H
 
 # Functions
@@ -98,6 +99,7 @@ function.deleterange=Verwijder reeks
 function.croptrack=Route bijknippen
 function.reverserange=Reeks omkeren
 function.interpolate=Interpoleer punten
+function.interpolatetimestamps=Interpoleer de tijdstempels
 function.deletebydate=Verwijder punten op datum
 function.addtimeoffset=Tijdsverschil toevoegen
 function.addaltitudeoffset=Hoogteverschil toevoegen
@@ -121,12 +123,14 @@ function.selectsegment=Selecteer huidige segment
 function.splitsegments=Splits route in segmenten
 function.sewsegments=Voeg segmenten samen
 function.createmarkerwaypoints=Maak waypoints voor markering
+function.comparesegments=Twee segmenten vergelijken
 function.lookupsrtm=Hoogtes van SRTM ophalen
 function.configuresrtmsources=SRTM bronnen configureren
 function.getwikipedia=Wikipedia artikelen uit de buurt ophalen
 function.searchwikipedianames=Wikipedia zoeken op naam
 function.searchosmpois=Haal nabije OSM punten op
 function.searchopencachingde=Doorzoek OpenCaching.de
+function.opengeocachepage=Webpagina voor deze geocache
 function.downloadosm=Downloaden OSM data voor gebied
 function.truncatecoords=Coordinaten afronden
 function.duplicatepoint=Dupliceer punt
@@ -260,11 +264,15 @@ dialog.exportkml.imagesize=Afbeeldinggrootte
 dialog.exportkml.trackcolour=Routekleur
 dialog.exportgpx.name=Naam
 dialog.exportgpx.desc=Omschrijving
+dialog.exportgpx.extensions=Xml-uitbreidingen
 dialog.exportgpx.includetimestamps=Tijden meenemen
 dialog.exportgpx.descriptionstocomments=Kopieer beschrijvingen naar opmerkingen
 dialog.exportgpx.encoding=Coderen
 dialog.exportgpx.encoding.system=Systeem
 dialog.exportgpx.encoding.utf8=UTF-8
+dialog.exportgpx.version10withextensions=Gpx 1.0 met uitbreidingen
+dialog.exportgpx.version11withextensions=Gpx 1.1 met uitbreidingen
+dialog.exportxml.version=Versie
 dialog.exportpov.text=Geef parameters voor POV export
 dialog.exportpov.font=Lettertype
 dialog.exportpov.camerax=Camera X
@@ -525,6 +533,9 @@ dialog.colourer.type.bydate=Op datum
 dialog.colourer.start=Beginkleur
 dialog.colourer.end=Eindkleur
 dialog.colourer.maxcolours=Maximum aantal kleuren
+dialog.colourer.huesmode=Interpolatie van de tint
+dialog.colourer.huesmode.narrow=Smal
+dialog.colourer.huesmode.wide=Breed
 dialog.setlanguage.firstintro=U kunt kiezen uit \u00e9\u00e9n van de meegeleverde talen,<p>of selecteer een tekstbestand.
 dialog.setlanguage.secondintro=U dient uw instellingen op te slaan en<p>GpsPrune te herstarten om de taal te kunnen wijzigen
 dialog.setlanguage.language=Taal
@@ -620,6 +631,8 @@ dialog.markers.half.descent=Halve afdaling
 dialog.projectpoint.desc=Geef de richting en afstand om dit punt te berekenen
 dialog.projectpoint.bearing=Richting (graden Noord)
 dialog.projectcircle.desc=Geef afstand tussen punt en omliggende cirkel
+dialog.projectrange.createcopies=Nieuwe punten aanmaken
+dialog.projectrange.editexisting=Bestaande punten verplaatsen
 dialog.configuresrtm.intro1=Hoogtes uit SRTM zijn in lage resolutie zonder inlog
 dialog.configuresrtm.intro2=of hoge resolutie indien geregistreerd bij NASA
 dialog.configuresrtm.threesecond=Lage resolutie data (3 boogseconden)
@@ -669,6 +682,10 @@ dialog.locationfilter.distance=Op afstand
 dialog.locationfilter.frompoint=Van punt
 dialog.locationfilter.describe=Tussen %s van %s
 dialog.migrateconfig.confirm=Het wordt aanbevolen om uw instellingenbestand\nvan "%sh naar "%s" te verplaatsen.\nDit bestand nu verplaatsen?
+dialog.comparesegments.comparing=Vergelijken van de segmenten...
+dialog.comparesegments.segments=Segmenten
+dialog.comparesegments.matches=Correspondenties
+dialog.comparesegments.nummatches=Aantal correspondenties
 
 # 3d window
 dialog.3d.title=GpsPrune in 3D
@@ -693,6 +710,7 @@ confirm.sewsegments=Er zijn %d samenvoegingen gemaakt
 confirm.cutandmove=Selectie verplaatst
 confirm.pointadded=punt toegevoegd
 confirm.pointsadded=%d punten toegevoegd
+confirm.pointsedited=%d punten bewerkt
 confirm.saveexif.ok=Opgeslagen %d foto bestanden
 confirm.undo.single=Actie geannuleerd
 confirm.undo.multi=%d acties geannuleerd
@@ -763,8 +781,11 @@ button.apply=Toepassen
 button.allow=Toestaan
 button.block=Blokkeren
 button.search=Zoeken
+button.compareselected=Geselecteerde vergelijken
+button.exportdata=Gegevens exporteren
+button.chart=Grafiek weergeven
 
-# File types
+# File types for filtering
 filetypefilter.txt=TXT bestanden
 filetypefilter.jpeg=JPG bestanden
 filetypefilter.kmlkmz=KML, KMZ bestanden
@@ -779,6 +800,7 @@ filetype.text=Tekst bestand
 filetype.gpx=GPX bestand
 filetype.kml=KML bestand
 filetype.nmea=NMEA bestand
+filetype.gpsbabel=Ge\u00efmporteerd uit GPSBabel
 filetype.json=JSON bestand
 
 # Display components
@@ -790,6 +812,9 @@ details.trackdetails=Route details
 details.notrack=Geen route geladen
 details.track.points=Punten
 details.track.file=Bestand
+details.track.filepath=Pad naar het bestand
+details.track.filetype=Type bestand
+details.track.fileversion=Versie van het bestand
 details.track.numfiles=Aantal bestanden
 details.pointdetails=Puntdetails
 details.index.selected=Index
@@ -827,6 +852,8 @@ details.audiodetails=Audio details
 details.noaudio=Geen audiobestand geselecteerd
 details.audio.file=Audiobestand
 details.audio.playing=Afspelen...
+details.filedetails=Details van het bestand
+details.nofileloaded=Er is geen bestand geladen
 map.overzoom=Geen kaarten beschikbaar op dit zoom-niveau
 
 # Field names
@@ -852,6 +879,7 @@ fieldname.comment=Commentaar
 fieldname.symbol=Symbool
 fieldname.photo=Foto
 fieldname.audio=Audio
+fieldname.heartrate=Hartslag
 
 # Measurement units
 units.original=Oorspronkelijke


=====================================
tim/prune/lang/prune-texts_no.properties
=====================================
@@ -468,6 +468,7 @@ dialog.checkversion.newversion=En ny versjon av GpsPrune er n\u00e5 tilgjengelig
 dialog.checkversion.releasedate=Denne nye versjonen ble utgitt %s.
 dialog.checkversion.download=For \u00e5 laste ned den nye versjonen, g\u00e5 til https://gpsprune.activityworkshop.net/download.html.
 dialog.keys.intro=Du kan bruke de f\u00f8lgende tastesnarveiene istedenfor \u00e5 bruke musen
+dialog.keys.keylist=<table><tr><td>Piltaster</td><td>Panorer kart venstre h\u00f8yre, opp, ned</td></tr><tr><td>Ctrl + venstre, h\u00f8yre-pil</td><td>Velg forrige eller neste punkt</td></tr><tr><td>Ctrl + opp, ned-pil</td><td>Zoom inn eller ut</td></tr><tr><td>Ctrl + PgUp, PgDown</td><td>Velg forrige, neste segment</td></tr><tr><td>Ctrl + Home, End</td><td>Velg f\u00f8rste, siste punkt</td></tr><tr><td>Del</td><td>Slett gjeldende punkt</td></tr></table>
 dialog.keys.normalmodifier=Ctrl
 dialog.paths.prune.gnuplotpath=Bane til Gnuplot
 dialog.paths.prune.gpsbabelpath=Bane til GPSBabel
@@ -475,6 +476,7 @@ dialog.paths.prune.exiftoolpath=Bane til ExifTool
 dialog.setpaths.intro=Om du beh\u00f8ver, kan du velge banene til de eksterne programmene:
 dialog.setpaths.found=Bane funnet?
 dialog.addaltitude.desc=H\u00f8ydeforskyvning \u00e5 legge til
+dialog.setcolours.intro=Klikk p\u00e5 en farge for \u00e5 endre den
 dialog.setcolours.background=Bakgrunn
 dialog.setcolours.borders=Kanter
 dialog.setcolours.lines=Linjer
@@ -593,6 +595,7 @@ dialog.configuresrtm.threesecond=Lavoppl\u00f8sningsdata (tre buesekunder)
 dialog.configuresrtm.threesecond.desc=Data med lav oppl\u00f8sning er alltid aktivert uten registrering eller p\u00e5logging
 dialog.configuresrtm.onesecond=H\u00f8yoppl\u00f8sningsdata (ett buesekund)
 dialog.configuresrtm.onesecond.desc1=Data med h\u00f8y oppl\u00f8sning krever registrering og innlogging p\u00e5 NASA Earthdata.
+dialog.configuresrtm.onesecond.desc2=Opprett en konto p\u00e5 https://urs.earthdata.nasa.gov/users/new
 dialog.findfile.dir=S\u00f8k mappe
 dialog.findfile.searchtext=Tekst
 dialog.findfile.daterange=Datointervall


=====================================
tim/prune/lang/prune-texts_pt.properties
=====================================
@@ -120,6 +120,7 @@ function.selectsegment=Selecionar segmento atual
 function.splitsegments=Dividir rota em segmentos
 function.sewsegments=Reunir segmentos em rota
 function.createmarkerwaypoints=Criar marcadores de intervalo
+function.comparesegments=Comparar dois segmentos
 function.lookupsrtm=Obter altitudes a partir do SRTM
 function.configuresrtmsources=Configurar as fontes para SRTM
 function.getwikipedia=Obter artigos da Wikip\u00e9dia das redondezas
@@ -591,6 +592,7 @@ dialog.weather.wind=Vento
 dialog.weather.temp=Temp
 dialog.weather.humidity=Umidade
 dialog.weather.creditnotice=Estes dados foram disponibilizados por openweathermap.org. A p\u00e1gina Web possui mais detalhes.
+dialog.deletebydate.onlyonedate=Os pontos foram todos registrados na mesma data.
 dialog.deletebydate.nodate=Sem carimbo de hora
 dialog.deletebydate.column.keep=Guardar
 dialog.deletebydate.column.delete=Remover
@@ -609,6 +611,8 @@ dialog.markers.half.distance=Metade da dist\u00e2ncia
 dialog.markers.half.climb=Metade da subida
 dialog.markers.half.descent=Metade da descida
 dialog.projectpoint.bearing=Azimute (graus de N)
+dialog.projectrange.createcopies=Criar novos pontos
+dialog.projectrange.editexisting=Mover os pontos existentes
 dialog.configuresrtm.threesecond=Dados de baixa resolu\u00e7\u00e3o (3 segundos de arco)
 dialog.configuresrtm.onesecond=Dados de alta resolu\u00e7\u00e3o (1 arco-segundo)
 dialog.configuresrtm.userid=Nome de utilizador em NASA Earthdata
@@ -649,8 +653,11 @@ dialog.locationfilter.distance=Por dist\u00e2ncia
 dialog.locationfilter.describe=A menos de %s de %s
 dialog.comparesegments.comparing=Comparando os segmentos ...
 dialog.comparesegments.segments=Segmentos
+dialog.comparesegments.startdate=Data no in\u00edcio
+dialog.comparesegments.starttime=Tempo no in\u00edcio
 dialog.comparesegments.matches=Correspond\u00eancias
 dialog.comparesegments.nummatches=N\u00famero de correspond\u00eancias
+dialog.comparesegments.data.speeddiff=Aumento da velocidade
 
 # 3d window
 dialog.3d.title=Vista 3D do GpsPrune
@@ -742,6 +749,7 @@ button.apply=Aplicar
 button.allow=Permitir
 button.block=Proibir
 button.search=Pesquisar
+button.compareselected=Compare os selecionados
 button.exportdata=Exportar os dados
 button.chart=Mostrar o gr\u00e1fico
 
@@ -842,7 +850,7 @@ fieldname.audio=\u00c1udio
 fieldname.heartrate=Frequ\u00eancia card\u00edaca
 fieldname.cadence=Pedalagem
 fieldname.power=Pot\u00eancia
-fieldname.course=Rota
+fieldname.course=Curso
 fieldname.bearing=Rumo
 
 # Measurement units
@@ -965,3 +973,6 @@ error.tracksplit.nosplit=A rota n\u00e3o pode ser dividida.
 error.sewsegments.nothingdone=Os segmentos n\u00e3o puderam ser reunidos.\nExistem agora %d segmentos na rota.
 error.sewsegments.nothingdone.single=Os segmentos n\u00e3o puderam ser reunidos.\nExiste apenas um segmento na rota.
 error.findfile.nofilesfound=Nenhum arquivo foi encontrado.
+error.migrateconfig.couldnotcreatedirectory=Falha ao criar o diret\u00f3rio %s.\nAs configura\u00e7\u00f5es n\u00e3o puderam ser migradas.
+error.migrateconfig.couldnotdeletefile=Falha ao excluir o arquivo %s.\nExclua esse arquivo manualmente.
+error.interpolatetimestamps.notpossible=Falha ao interpolar os registros de data e hora.


=====================================
tim/prune/load/xml/GpxHandler.java
=====================================
@@ -199,7 +199,7 @@ public class GpxHandler extends XmlHandler
 		}
 		else if (_insideExtensions)
 		{
-			String value = _currentTag.getValue().trim();
+			String value = _currentTag.getValue();
 			_extensionTags.pop();
 			if (!value.isEmpty())
 			{
@@ -213,7 +213,7 @@ public class GpxHandler extends XmlHandler
 		}
 		else if (_gpxField != null)
 		{
-			String value = _currentTag.getValue().trim();
+			String value = _currentTag.getValue();
 			if (!value.isEmpty())
 			{
 				if (!hasField(_gpxField)) {
@@ -226,9 +226,9 @@ public class GpxHandler extends XmlHandler
 		}
 		else if (_insidePoint && _currentTag != null && getFileVersion().equals("1.0"))
 		{
-			String value = _currentTag.getValue().trim();
+			String value = _currentTag.getValue();
 			String tagNamespace = getNamespace(tag);
-			if (tagNamespace != null)
+			if (tagNamespace != null && !value.isEmpty())
 			{
 				String id = this.getExtensionInfo().getNamespaceName(tagNamespace);
 				if (id != null)


=====================================
tim/prune/load/xml/GpxTag.java
=====================================
@@ -23,6 +23,6 @@ public class GpxTag
 	 * @return value
 	 */
 	public String getValue() {
-		return _value;
+		return _value == null ? "" : _value.trim();
 	}
 }


=====================================
tim/prune/readme.txt
=====================================
@@ -1,5 +1,5 @@
-GpsPrune version 25
-===================
+GpsPrune version 25.1
+=====================
 
 GpsPrune is an application for viewing, editing and managing coordinate data from GPS systems,
 including format conversion, charting, 3d visualisation, audio and photo correlation, and online resource lookup.
@@ -17,7 +17,7 @@ Running
 =======
 
 To run GpsPrune from the jar file, simply call it from a command prompt or shell:
-   java -jar gpsprune_25.jar
+   java -jar gpsprune_25.1.jar
 
 If the jar file is saved in a different directory, you will need to include the path.
 Depending on your system settings, you may be able to click or double-click on the jar file
@@ -25,9 +25,18 @@ in a file manager window to execute it.  A shortcut, menu item, alias, desktop i
 or other link can of course be made should you wish.
 
 To specify a language other than the default, use an additional parameter, eg:
-   java -jar gpsprune_25.jar --lang=DE
+   java -jar gpsprune_25.1.jar --lang=DE
 
 
+New with version 25.1
+=====================
+The following fixes and additions were made since version 25:
+  - Fix bug with exporting images to kmz (Issue #111)
+  - Tweak appearance of segment table in comparison function (Issue #110)
+  - Display of Gpx extension fields (Issue #75)
+  - Fix bug from parsing empty Gpx extension fields
+  - Respect segment breaks and altitudes when projecting a range with copy
+
 New with version 25
 ===================
 The following fixes and additions were made since version 24:


=====================================
tim/prune/save/xml/KmlExporter.java
=====================================
@@ -414,8 +414,7 @@ public class KmlExporter extends GenericFunction
 				if (exportImages)
 				{
 					// Get entered value for image size, store in config
-					int thumbSize = _imageSizeField.getValue();
-					if (thumbSize < DEFAULT_THUMBNAIL_WIDTH) {thumbSize = DEFAULT_THUMBNAIL_WIDTH;}
+					final int thumbSize = Math.max(DEFAULT_THUMBNAIL_WIDTH, _imageSizeField.getValue());
 					getConfig().setConfigInt(Config.KEY_KMZ_IMAGE_SIZE, thumbSize);
 
 					// Create thumbnails of each photo in turn and add to zip as images/image<n>.jpg


=====================================
tim/prune/save/xml/KmlWriter.java
=====================================
@@ -319,13 +319,15 @@ public abstract class KmlWriter
 		// Check selection checkbox
 		final boolean justSelection = _exportOptions.getExportJustSelection();
 		int selStart = -1, selEnd = -1;
-		if (justSelection) {
+		if (justSelection)
+		{
 			selStart = _trackInfo.getSelection().getStart();
 			selEnd = _trackInfo.getSelection().getEnd();
 		}
 
 		final Track track = _trackInfo.getTrack();
 		final int numPoints = track.getNumPoints();
+		_imageDimensions = new Dimension[numPoints];
 		int photoNum = 0;
 		// Loop over all points in track
 		for (int i=0; i<numPoints && !_cancelPressed; i++)



View it on GitLab: https://salsa.debian.org/debian-gis-team/gpsprune/-/compare/3947bbb2d15af4630fa5431bec4dd05af4fbee84...d5f2db74e4ea43ddf5988716cab62157c7ac823d

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/gpsprune/-/compare/3947bbb2d15af4630fa5431bec4dd05af4fbee84...d5f2db74e4ea43ddf5988716cab62157c7ac823d
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20250302/bbb1da36/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list