[Git][debian-gis-team/gpsprune][upstream] New upstream version 24.4

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Sun Sep 1 19:29:06 BST 2024



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


Commits:
3dedd0ba by Bas Couwenberg at 2024-09-01T20:19:19+02:00
New upstream version 24.4
- - - - -


18 changed files:

- build.sh
- tim/prune/App.java
- tim/prune/GpsPrune.java
- tim/prune/config/Config.java
- tim/prune/correlate/AudioCorrelator.java
- tim/prune/correlate/PhotoCorrelator.java
- tim/prune/data/DataPoint.java
- tim/prune/function/CreateMarkerWaypointsFunction.java
- tim/prune/function/InterpolateFunction.java
- + tim/prune/function/PointUtils.java
- tim/prune/function/ProjectCircle.java
- tim/prune/function/ProjectPoint.java
- tim/prune/gui/WizardLayout.java
- tim/prune/gui/map/MapSourceLibrary.java
- tim/prune/lang/prune-texts_cy.properties
- tim/prune/lang/prune-texts_no.properties
- tim/prune/load/babel/InterpolateFilter.java
- tim/prune/readme.txt


Changes:

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


=====================================
tim/prune/App.java
=====================================
@@ -21,7 +21,6 @@ import tim.prune.gui.UndoManager;
 import tim.prune.gui.Viewport;
 import tim.prune.gui.colour.ColourerCaretaker;
 import tim.prune.gui.colour.PointColourer;
-import tim.prune.gui.map.MapSourceLibrary;
 import tim.prune.load.FileLoader;
 import tim.prune.load.ItemToLoad;
 import tim.prune.load.JpegLoader;
@@ -75,7 +74,6 @@ public class App
 		_colCaretaker = new ColourerCaretaker(this);
 		UpdateMessageBroker.addSubscriber(_colCaretaker);
 		_colCaretaker.setColourer(_config.getPointColourer());
-		MapSourceLibrary.init(_config);
 	}
 
 


=====================================
tim/prune/GpsPrune.java
=====================================
@@ -29,6 +29,7 @@ import tim.prune.gui.SidebarController;
 import tim.prune.gui.StatusBar;
 import tim.prune.gui.Viewport;
 import tim.prune.gui.map.MapCanvas;
+import tim.prune.gui.map.MapSourceLibrary;
 import tim.prune.gui.profile.ProfileChart;
 
 /**
@@ -41,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 = "24.3";
+	public static final String VERSION_NUMBER = "24.4";
 	/** Build number, just used for about screen */
-	public static final String BUILD_NUMBER = "417";
+	public static final String BUILD_NUMBER = "419";
 	/** Static reference to App object */
 	private static App APP = null;
 
@@ -127,12 +128,16 @@ public class GpsPrune
 			// Make sure Config holds chosen language
 			config.setConfigString(Config.KEY_LANGUAGE_CODE, localeCode);
 		}
-		else {
+		else
+		{
 			// Set locale according to Config's language property
 			String configLang = config.getConfigString(Config.KEY_LANGUAGE_CODE);
-			if (configLang != null) {
+			if (configLang != null)
+			{
 				Locale configLocale = getLanguage(configLang);
-				if (configLocale != null) {locale = configLocale;}
+				if (configLocale != null) {
+					locale = configLocale;
+				}
 			}
 		}
 		I18nManager.init(locale);
@@ -160,6 +165,8 @@ public class GpsPrune
 		}
 		catch (Exception e) {}
 
+		setupMaps(config);
+
 		// Set up the window and go
 		launch(config, dataFiles);
 
@@ -168,6 +175,29 @@ public class GpsPrune
 		}
 	}
 
+	/** Use the Config to initialise the MapSourceLibrary with the custom sources */
+	private static void setupMaps(Config inConfig)
+	{
+		MapSourceLibrary.init(inConfig.getConfigString(Config.KEY_MAPSOURCE_LIST));
+
+		// Adjust the index of the selected map
+		// (only required if config was loaded from a previous version of GpsPrune)
+		int sourceNum = inConfig.getConfigInt(Config.KEY_MAPSOURCE_INDEX);
+		int prevNumFixed = inConfig.getConfigInt(Config.KEY_NUM_FIXED_MAPS);
+		// Number of fixed maps not specified in version <=13, default to 6
+		if (prevNumFixed == 0) {
+			prevNumFixed = 6;
+		}
+		int currNumFixed = MapSourceLibrary.getNumFixedSources();
+		// Only need to do something if the number has changed
+		if (currNumFixed != prevNumFixed && (sourceNum >= prevNumFixed || sourceNum >= currNumFixed))
+		{
+			sourceNum += (currNumFixed - prevNumFixed);
+			inConfig.setConfigInt(Config.KEY_MAPSOURCE_INDEX, sourceNum);
+		}
+		inConfig.setConfigInt(Config.KEY_NUM_FIXED_MAPS, currNumFixed);
+	}
+
 
 	/**
 	 * Choose a locale based on the given code


=====================================
tim/prune/config/Config.java
=====================================
@@ -10,7 +10,6 @@ import tim.prune.data.UnitSet;
 import tim.prune.data.UnitSetLibrary;
 import tim.prune.gui.colour.ColourerFactory;
 import tim.prune.gui.colour.PointColourer;
-import tim.prune.gui.map.MapSourceLibrary;
 
 
 /**
@@ -152,8 +151,6 @@ public class Config
 		_pointColourer = ColourerFactory.createColourer(_configValues.getProperty(KEY_POINT_COLOURER));
 		_recentFiles = new RecentFileList(_configValues.getProperty(KEY_RECENT_FILES));
 		_unitSet = UnitSetLibrary.getUnitSet(_configValues.getProperty(KEY_UNITSET_KEY));
-		// Adjust map source index if necessary
-		adjustSelectedMap();
 		// Reset coord display format
 		setConfigString(KEY_COORD_DISPLAY_FORMAT, "NONE");
 
@@ -196,26 +193,6 @@ public class Config
 		return props;
 	}
 
-	/**
-	 * Adjust the index of the selected map
-	 * (only required if config was loaded from a previous version of GpsPrune)
-	 */
-	private void adjustSelectedMap()
-	{
-		int sourceNum = getConfigInt(Config.KEY_MAPSOURCE_INDEX);
-		int prevNumFixed = getConfigInt(Config.KEY_NUM_FIXED_MAPS);
-		// Number of fixed maps not specified in version <=13, default to 6
-		if (prevNumFixed == 0) prevNumFixed = 6;
-		int currNumFixed = MapSourceLibrary.getNumFixedSources();
-		// Only need to do something if the number has changed
-		if (currNumFixed != prevNumFixed && (sourceNum >= prevNumFixed || sourceNum >= currNumFixed))
-		{
-			sourceNum += (currNumFixed - prevNumFixed);
-			setConfigInt(Config.KEY_MAPSOURCE_INDEX, sourceNum);
-		}
-		setConfigInt(Config.KEY_NUM_FIXED_MAPS, currNumFixed);
-	}
-
 	/**
 	 * @param inString String to parse
 	 * @return int value of String, or 0 if unparseable


=====================================
tim/prune/correlate/AudioCorrelator.java
=====================================
@@ -22,6 +22,7 @@ import tim.prune.data.MediaObject;
 import tim.prune.data.TimeDifference;
 import tim.prune.data.Timestamp;
 import tim.prune.data.TimestampUtc;
+import tim.prune.function.PointUtils;
 
 /**
  * Class to manage the automatic correlation of audio clips to points
@@ -236,7 +237,7 @@ public class AudioCorrelator extends Correlator
 				else
 				{
 					// audio time falls between two points, so need to interpolate new one
-					DataPoint pointToAdd = DataPoint.interpolate(pair.getPointBefore(), pair.getPointAfter(), pair.getFraction());
+					DataPoint pointToAdd = PointUtils.interpolate(pair.getPointBefore(), pair.getPointAfter(), pair.getFraction());
 					pointToAdd.setSegmentStart(true);
 					inPointsToCreate.add(pointToAdd);
 					inPointAudioPairs.add(new PointAndMedia(pointToAdd, null, audioToLink));


=====================================
tim/prune/correlate/PhotoCorrelator.java
=====================================
@@ -16,6 +16,7 @@ import tim.prune.data.DataPoint;
 import tim.prune.data.MediaList;
 import tim.prune.data.Photo;
 import tim.prune.data.TimeDifference;
+import tim.prune.function.PointUtils;
 
 
 /**
@@ -165,7 +166,7 @@ public class PhotoCorrelator extends Correlator
 				else
 				{
 					// photo time falls between two points, so need to interpolate new one
-					DataPoint pointToAdd = DataPoint.interpolate(pair.getPointBefore(), pair.getPointAfter(), pair.getFraction());
+					DataPoint pointToAdd = PointUtils.interpolate(pair.getPointBefore(), pair.getPointAfter(), pair.getFraction());
 					pointToAdd.setSegmentStart(true);
 					inPointsToCreate.add(pointToAdd);
 					inPointPhotoPairs.add(new PointAndMedia(pointToAdd, photoToLink, null));


=====================================
tim/prune/data/DataPoint.java
=====================================
@@ -149,6 +149,11 @@ public class DataPoint
 		_timestamp = new TimestampUtc(null);
 	}
 
+	/** Simplified constructor just giving raw values for latitude and longitude */
+	public DataPoint(double inLatitude, double inLongitude) {
+		this(Latitude.make(inLatitude), Longitude.make(inLongitude), null);
+	}
+
 	/**
 	 * Get the value for the given field
 	 * @param inField field to interrogate
@@ -478,45 +483,6 @@ public class DataPoint
 		return mediaName;
 	}
 
-	/**
-	 * Interpolate a point between this one and the given one
-	 * @param inEndPoint end point of interpolation
-	 * @param inIndex the index of this interpolation (0 to inNumPoints-1)
-	 * @param inNumPoints number of points to generate
-	 * @return the interpolated DataPoint
-	 */
-	public DataPoint interpolate(DataPoint inEndPoint, int inIndex, int inNumPoints)
-	{
-		Coordinate latitude = Latitude.interpolate(_latitude, inEndPoint.getLatitude(), inIndex, inNumPoints);
-		Coordinate longitude = Longitude.interpolate(_longitude, inEndPoint.getLongitude(), inIndex, inNumPoints);
-		Altitude altitude = Altitude.interpolate(_altitude, inEndPoint.getAltitude(), inIndex, inNumPoints);
-		DataPoint point = new DataPoint(latitude, longitude, altitude);
-		if (hasTimestamp() && inEndPoint.hasTimestamp()) {
-			String value = TimestampUtc.interpolate(getTimestamp(), inEndPoint.getTimestamp(), inIndex, inNumPoints);
-			point.setFieldValue(Field.TIMESTAMP, value, false);
-		}
-		return point;
-	}
-
-	/**
-	 * Interpolate between the two given points
-	 * @param inStartPoint start point
-	 * @param inEndPoint end point
-	 * @param inFrac fractional distance from first point (0.0 to 1.0)
-	 * @return new DataPoint object between two given ones
-	 */
-	public static DataPoint interpolate(DataPoint inStartPoint, DataPoint inEndPoint, double inFrac)
-	{
-		if (inStartPoint == null || inEndPoint == null) {
-			return null;
-		}
-		return new DataPoint(
-			Latitude.interpolate(inStartPoint.getLatitude(), inEndPoint.getLatitude(), inFrac),
-			Longitude.interpolate(inStartPoint.getLongitude(), inEndPoint.getLongitude(), inFrac),
-			Altitude.interpolate(inStartPoint.getAltitude(), inEndPoint.getAltitude(), inFrac)
-		);
-	}
-
 	/**
 	 * Calculate the number of radians between two points (for distance calculation)
 	 * @param inPoint1 first point


=====================================
tim/prune/function/CreateMarkerWaypointsFunction.java
=====================================
@@ -150,7 +150,7 @@ public class CreateMarkerWaypointsFunction extends DistanceTimeLimitFunction
 			final double valueBeforeBreak = (m * inLimit) - inPrevValue;
 			final double valueAfterBreak = inCurrValue - (m * inLimit);
 			final double fractionFromPrev = valueBeforeBreak / (valueBeforeBreak + valueAfterBreak);
-			DataPoint marker = DataPoint.interpolate(inPrevPoint, inCurrPoint, fractionFromPrev);
+			DataPoint marker = PointUtils.interpolate(inPrevPoint, inCurrPoint, fractionFromPrev);
 			marker.setWaypointName(createLimitDescription(m));
 			_pointsToAdd.add(marker);
 		}
@@ -240,7 +240,7 @@ public class CreateMarkerWaypointsFunction extends DistanceTimeLimitFunction
 			final double valueBeforeBreak = inTargetValue - inPrevValue;
 			final double valueAfterBreak = inCurrValue - inTargetValue;
 			final double fractionFromPrev = valueBeforeBreak / (valueBeforeBreak + valueAfterBreak);
-			DataPoint marker = DataPoint.interpolate(inPrevPoint, inCurrPoint, fractionFromPrev);
+			DataPoint marker = PointUtils.interpolate(inPrevPoint, inCurrPoint, fractionFromPrev);
 			marker.setWaypointName(createHalfwayName(inType));
 			_pointsToAdd.add(marker);
 			return true;


=====================================
tim/prune/function/InterpolateFunction.java
=====================================
@@ -57,8 +57,8 @@ public class InterpolateFunction extends SingleNumericParameterFunction
 			int answer = JOptionPane.showConfirmDialog(_parentFrame,
 				I18nManager.getText("dialog.interpolate.betweenwaypoints"),
 				getName(), JOptionPane.YES_NO_OPTION);
-			if (answer == JOptionPane.NO_OPTION) {
-				// user said no, so nothing to do
+			if (answer != JOptionPane.YES_OPTION) {
+				// user said no (or cancel), so nothing to do
 				return;
 			}
 			betweenWaypoints = true;
@@ -67,8 +67,11 @@ public class InterpolateFunction extends SingleNumericParameterFunction
 		final int numToAdd = inParam;
 		final Track track = _app.getTrackInfo().getTrack();
 		InsertVariousPointsCmd command = makeCommand(track, startIndex, endIndex, numToAdd, betweenWaypoints);
-		if (_app.execute(command)) {
-			_app.getTrackInfo().getSelection().selectRange(startIndex, endIndex + command.getNumInserted());
+		if (_app.execute(command))
+		{
+			final int lastIndex = endIndex + command.getNumInserted();
+			_app.getTrackInfo().getSelection().selectRange(startIndex, lastIndex);
+			_app.getTrackInfo().selectPoint(lastIndex);
 		}
 	}
 
@@ -99,8 +102,13 @@ public class InterpolateFunction extends SingleNumericParameterFunction
 				|| (!currPoint.isWaypoint() && !prevPoint.isWaypoint() && !currPoint.getSegmentStart());
 			if (interpolate)
 			{
-				for (int j=0; j<inNumToAdd; j++) {
-					insertedPoints.add(prevPoint.interpolate(currPoint, j, inNumToAdd));
+				for (int j=0; j<inNumToAdd; j++)
+				{
+					DataPoint newPoint = PointUtils.interpolate(prevPoint, currPoint, j, inNumToAdd);
+					if (j == 0 && inBetweenWaypoints) {
+						newPoint.setSegmentStart(true);
+					}
+					insertedPoints.add(newPoint);
 					indexes.add(inTrack.getNumPoints() + insertedPoints.size() - 1);
 				}
 			}


=====================================
tim/prune/function/PointUtils.java
=====================================
@@ -0,0 +1,55 @@
+package tim.prune.function;
+
+import tim.prune.data.*;
+
+/** General utility methods for creating new DataPoint objects */
+public abstract class PointUtils
+{
+	/**
+	 * Project the given data point and create a new one in the calculated position
+	 */
+	public static DataPoint projectPoint(DataPoint inPoint, double inBearingRadians, double inDistanceRadians)
+	{
+		final double origLatRads = Math.toRadians(inPoint.getLatitude().getDouble());
+		final double origLonRads = Math.toRadians(inPoint.getLongitude().getDouble());
+
+		double lat2 = Math.asin(Math.sin(origLatRads) * Math.cos(inDistanceRadians)
+				+ Math.cos(origLatRads) * Math.sin(inDistanceRadians) * Math.cos(inBearingRadians));
+		double lon2 = origLonRads + Math.atan2(Math.sin(inBearingRadians) * Math.sin(inDistanceRadians) * Math.cos(origLatRads),
+				Math.cos(inDistanceRadians) - Math.sin(origLatRads) * Math.sin(lat2));
+
+		return new DataPoint(Math.toDegrees(lat2), Math.toDegrees(lon2));
+	}
+
+	/**
+	 * Interpolate between the two given points
+	 * @param inStartPoint start point
+	 * @param inEndPoint end point
+	 * @param inFrac fractional distance from first point (0.0 to 1.0)
+	 * @return new DataPoint object between two given ones
+	 */
+	public static DataPoint interpolate(DataPoint inStartPoint, DataPoint inEndPoint, double inFrac)
+	{
+		if (inStartPoint == null || inEndPoint == null) {
+			return null;
+		}
+		return new DataPoint(
+				Latitude.interpolate(inStartPoint.getLatitude(), inEndPoint.getLatitude(), inFrac),
+				Longitude.interpolate(inStartPoint.getLongitude(), inEndPoint.getLongitude(), inFrac),
+				Altitude.interpolate(inStartPoint.getAltitude(), inEndPoint.getAltitude(), inFrac)
+		);
+	}
+
+	/**
+	 * Interpolate a point between two points given an index and number of points
+	 * @param inEndPoint end point of interpolation
+	 * @param inIndex the index of this interpolation (0 to inNumPoints-1)
+	 * @param inNumPoints number of points to generate
+	 * @return the interpolated DataPoint
+	 */
+	public static DataPoint interpolate(DataPoint inStartPoint, DataPoint inEndPoint, int inIndex, int inNumPoints)
+	{
+		final double frac = 1.0 * (inIndex+1) / (inNumPoints + 1);
+		return interpolate(inStartPoint, inEndPoint, frac);
+	}
+}


=====================================
tim/prune/function/ProjectCircle.java
=====================================
@@ -22,8 +22,6 @@ import tim.prune.I18nManager;
 import tim.prune.cmd.AppendRangeCmd;
 import tim.prune.data.DataPoint;
 import tim.prune.data.Distance;
-import tim.prune.data.Latitude;
-import tim.prune.data.Longitude;
 import tim.prune.data.Unit;
 import tim.prune.data.UnitSetLibrary;
 import tim.prune.gui.DecimalNumberField;
@@ -168,22 +166,14 @@ public class ProjectCircle extends GenericFunction
 		DataPoint currPoint = _app.getTrackInfo().getCurrentPoint();
 		Unit distUnit = _distanceIsMetric ? UnitSetLibrary.UNITS_METRES : UnitSetLibrary.UNITS_FEET;
 		final double projectRads = Distance.convertDistanceToRadians(_distanceField.getValue(), distUnit);
-		final double origLatRads = Math.toRadians(currPoint.getLatitude().getDouble());
-		final double origLonRads = Math.toRadians(currPoint.getLongitude().getDouble());
 
 		final int NUM_POINTS_IN_CIRCLE = 24;
 		ArrayList<DataPoint> points = new ArrayList<>();
 		for (int pointNum=0; pointNum<=NUM_POINTS_IN_CIRCLE; pointNum++)
 		{
 			final double bearingRads = (pointNum % NUM_POINTS_IN_CIRCLE) * 2.0 * Math.PI / NUM_POINTS_IN_CIRCLE;
-
-			double lat2 = Math.asin(Math.sin(origLatRads) * Math.cos(projectRads)
-				+ Math.cos(origLatRads) * Math.sin(projectRads) * Math.cos(bearingRads));
-			double lon2 = origLonRads + Math.atan2(Math.sin(bearingRads) * Math.sin(projectRads) * Math.cos(origLatRads),
-				Math.cos(projectRads) - Math.sin(origLatRads) * Math.sin(lat2));
-
 			// Create point and append to track
-			DataPoint point = new DataPoint(Latitude.make(Math.toDegrees(lat2)), Longitude.make(Math.toDegrees(lon2)));
+			DataPoint point = PointUtils.projectPoint(currPoint, bearingRads, projectRads);
 			point.setSegmentStart(pointNum == 0);
 			points.add(point);
 		}


=====================================
tim/prune/function/ProjectPoint.java
=====================================
@@ -22,8 +22,6 @@ import tim.prune.I18nManager;
 import tim.prune.cmd.InsertPointCmd;
 import tim.prune.data.DataPoint;
 import tim.prune.data.Distance;
-import tim.prune.data.Latitude;
-import tim.prune.data.Longitude;
 import tim.prune.data.Unit;
 import tim.prune.data.UnitSetLibrary;
 import tim.prune.gui.DecimalNumberField;
@@ -186,20 +184,10 @@ public class ProjectPoint extends GenericFunction
 		DataPoint currPoint = _app.getTrackInfo().getCurrentPoint();
 		Unit distUnit = _distanceIsMetric ? UnitSetLibrary.UNITS_METRES : UnitSetLibrary.UNITS_FEET;
 		final double projectRads = Distance.convertDistanceToRadians(_distanceField.getValue(), distUnit);
-		final double origLatRads = Math.toRadians(currPoint.getLatitude().getDouble());
-		final double origLonRads = Math.toRadians(currPoint.getLongitude().getDouble());
 		final double bearingRads = Math.toRadians(_bearingField.getValue());
 
-		double lat2 = Math.asin(Math.sin(origLatRads) * Math.cos(projectRads)
-			+ Math.cos(origLatRads) * Math.sin(projectRads) * Math.cos(bearingRads));
-		double lon2 = origLonRads + Math.atan2(Math.sin(bearingRads) * Math.sin(projectRads) * Math.cos(origLatRads),
-			Math.cos(projectRads) - Math.sin(origLatRads) * Math.sin(lat2));
-
-		double finalLatDeg = Math.toDegrees(lat2);
-		double finalLonDeg = Math.toDegrees(lon2);
-
 		// Create point and append to track
-		DataPoint point = new DataPoint(Latitude.make(finalLatDeg), Longitude.make(finalLonDeg));
+		DataPoint point = PointUtils.projectPoint(currPoint, bearingRads, projectRads);
 		point.setWaypointName(_nameField.getText());
 		point.setSegmentStart(true);
 


=====================================
tim/prune/gui/WizardLayout.java
=====================================
@@ -44,34 +44,22 @@ public class WizardLayout extends CardLayout
 	/**
 	 * Go to the first card
 	 */
-	public void showFirstCard()
-	{
-		first(_panel);
-		_currentCard = 0;
+	public void showFirstCard() {
+		showCard(0);
 	}
 
 	/**
 	 * Go to the next card
 	 */
-	public void showNextCard()
-	{
-		if (_currentCard < (_numCards-1))
-		{
-			next(_panel);
-			_currentCard++;
-		}
+	public void showNextCard() {
+		showCard(_currentCard + 1);
 	}
 
 	/**
 	 * Go to the previous card
 	 */
-	public void showPreviousCard()
-	{
-		if (_currentCard > 0)
-		{
-			previous(_panel);
-			_currentCard--;
-		}
+	public void showPreviousCard() {
+		showCard(_currentCard - 1);
 	}
 
 	/**


=====================================
tim/prune/gui/map/MapSourceLibrary.java
=====================================
@@ -2,7 +2,6 @@ package tim.prune.gui.map;
 
 import java.util.ArrayList;
 
-import tim.prune.config.Config;
 
 /**
  * Class to hold a library for all the map sources
@@ -16,14 +15,14 @@ public abstract class MapSourceLibrary
 	private static int _numFixedSources = 0;
 
 	/**
-	 * @param inConfig config object
+	 * @param inConfigString string describing extra sources
 	 */
-	public static void init(Config inConfig)
+	public static void init(String inConfigString)
 	{
 		_sourceList = new ArrayList<>();
 		addFixedSources();
 		_numFixedSources = _sourceList.size();
-		addConfigSources(inConfig);
+		addConfigSources(inConfigString);
 	}
 
 	/** Private constructor to block instantiation */
@@ -53,24 +52,23 @@ public abstract class MapSourceLibrary
 
 	/**
 	 * Add custom sources from Config to the library
-	 * @param inConfig config object
+	 * @param inConfigString string describing custom sources
 	 */
-	private static void addConfigSources(Config inConfig)
+	private static void addConfigSources(String inConfigString)
 	{
-		String configString = inConfig.getConfigString(Config.KEY_MAPSOURCE_LIST);
-		if (configString != null && configString.length() > 10)
+		if (inConfigString != null && inConfigString.length() > 10)
 		{
 			// Loop over sources in string, separated by vertical bars
-			int splitPos = configString.indexOf('|');
+			int splitPos = inConfigString.indexOf('|');
 			while (splitPos > 0)
 			{
-				String sourceString = configString.substring(0, splitPos);
+				String sourceString = inConfigString.substring(0, splitPos);
 				MapSource source = OsmMapSource.fromConfig(sourceString);
 				if (source != null) {
 					_sourceList.add(source);
 				}
-				configString = configString.substring(splitPos+1);
-				splitPos = configString.indexOf('|');
+				inConfigString = inConfigString.substring(splitPos+1);
+				splitPos = inConfigString.indexOf('|');
 			}
 		}
 	}


=====================================
tim/prune/lang/prune-texts_cy.properties
=====================================
@@ -114,9 +114,6 @@ dialog.colourchooser.blue=Glas
 dialog.colourer.type.none=Dim
 dialog.colourer.start=Lliw dechreuol
 dialog.colourer.end=Lliw olaf
-dialog.colourer.huesmode=Rhyngosodiad rhwng arlliwiau
-dialog.colourer.huesmode.narrow=Cul
-dialog.colourer.huesmode.wide=Llydan
 dialog.setlanguage.language=Iaith
 dialog.diskcache.table.megabytes=Megabeitiau
 dialog.displaysettings.wpicon.ring=Cylch


=====================================
tim/prune/lang/prune-texts_no.properties
=====================================
@@ -569,16 +569,16 @@ button.block=Blokker
 button.search=S\u00f8k
 
 # File types for filtering
-filetypefilter.txt=TXT-filer
-filetypefilter.jpeg=JPG-filer
-filetypefilter.kmlkmz=KML-, KMZ-filer
-filetypefilter.kml=KML-filer
-filetypefilter.kmz=KMZ-filer
-filetypefilter.gpx=GPX-filer
-filetypefilter.pov=POV-filer
-filetypefilter.svg=SVG-filer
-filetypefilter.png=PNG-filer
-filetypefilter.audio=MP3-, OGG-, WAV-filer
+filetype.txt=TXT-filer
+filetype.jpeg=JPG-filer
+filetype.kmlkmz=KML-, KMZ-filer
+filetype.kml=KML-filer
+filetype.kmz=KMZ-filer
+filetype.gpx=GPX-filer
+filetype.pov=POV-filer
+filetype.svg=SVG-filer
+filetype.png=PNG-filer
+filetype.audio=MP3-, OGG-, WAV-filer
 
 # Display components
 display.nodata=Ingen data lastet
@@ -744,536 +744,3 @@ error.sewsegments.nothingdone.single=Ingen segmenter kan sys sammen.\nDet er bar
 error.findfile.nofilesfound=Ingen filer ble funnet i denne mappen.
 error.migrateconfig.couldnotcreatedirectory=Kunne ikke opprette mappen %s.\nInnstillinger kunne ikke migreres.
 error.migrateconfig.couldnotdeletefile=Kunne ikke slette filen %s.\nSlett denne filen manuelt.
-function.getweatherforecast=Hent v\u00e6rvarsel
-function.setaltitudetolerance=Still inn h\u00f8ydetoleranse
-function.selecttimezone=Still inn tidssone
-
-# Dialogs
-dialog.exit.confirm.title=Avslutt GpsPrune
-dialog.exit.unsaveddata.text=Dine data er ikke lagret. Er du sikker p\u00e5 at du vil avslutte?
-dialog.deletepoint.title=Slett punkt
-dialog.deletepoints.title=Slett punkter
-dialog.deletephoto.title=Slett foto
-dialog.load.table.field=Felt
-dialog.load.table.datatype=Datatype
-dialog.load.table.description=Beskrivelse
-dialog.delimiter.label=Feltskilletegn
-dialog.delimiter.comma=Komma ,
-dialog.delimiter.tab=Tabulator
-dialog.delimiter.space=Mellomrom
-dialog.delimiter.semicolon=Semikolon ;
-dialog.delimiter.other=Annet
-dialog.openoptions.deliminfo.fields=felt
-dialog.openoptions.altitudeunits=H\u00f8ydeenheter
-dialog.openoptions.speedunits=Hastighetsenheter
-dialog.openoptions.vertspeedunits=Vertikale hastighetsenheter
-dialog.open.contentsdoubled=Denne filen inneholder to kopier av hvert punkt.
-dialog.open.contentsdoubled.wayandtrack=Denne filen inneholder to kopier av hvert punkt,\nen gang som veipunkt og en gang som sporpunkt.
-dialog.open.includesubdirectories=Inkluder undermapper
-dialog.jpegload.loadjpegswithoutcoords=Inkluder bilder uten koordinater
-dialog.loadlinkedmedia.allowdomain=Tillate media fra '%s'?
-dialog.gpsload.nogpsbabel=Ikke noe GPSBabel-program ble funnet. Fortsette?
-dialog.gpsload.device=Enhetsnavn
-dialog.gpsload.format=Format
-dialog.gpsload.getwaypoints=Last veipunkter
-dialog.gpsload.gettracks=Last spor
-dialog.gpsload.save=Lagre til fil
-dialog.gpssend.sendwaypoints=Send veipunkter
-dialog.gpssend.sendtracks=Send spor
-dialog.gpssend.trackname=Spornavn
-dialog.gpsbabel.filters=Filtre
-dialog.addfilter.title=Legg til filter
-dialog.gpsbabel.filter.discard=Forkast
-dialog.gpsbabel.filter.simplify=Forenkle
-dialog.gpsbabel.filter.distance=Distanse
-dialog.gpsbabel.filter.interpolate=Interpolere
-dialog.gpsbabel.filter.discard.intro=Forkast punkter hvis
-dialog.gpsbabel.filter.discard.hdop=Hdop >
-dialog.gpsbabel.filter.discard.vdop=Vdop >
-dialog.gpsbabel.filter.discard.numsats=Antall satellitter <
-dialog.gpsbabel.filter.simplify.maxpoints=Antall punkter <
-dialog.gpsbabel.filter.simplify.length=lengdeforskjell
-dialog.gpsbabel.filter.simplify.relative=relativ til hdop
-dialog.gpsbabel.filter.distance.intro=Fjern punkter hvis n\u00e6r foreg\u00e5ende punkter
-dialog.gpsbabel.filter.distance.distance=Hvis distanse <
-dialog.gpsbabel.filter.distance.time=og tidsforskjell <
-dialog.gpsbabel.filter.interpolate.intro=Legg til ekstra punkter mellom sporpunkter
-dialog.gpsbabel.filter.interpolate.distance=Hvis distanse >
-dialog.gpsbabel.filter.interpolate.time=eller tidsforskjell >
-dialog.saveoptions.title=Lagre fil
-dialog.save.fieldstosave=Felter \u00e5 lagre
-dialog.save.table.field=Felt
-dialog.save.table.hasdata=Har data
-dialog.save.table.save=Lagre
-dialog.save.coordinateunits=Koordinatformat
-dialog.save.altitudeunits=H\u00f8ydeenheter
-dialog.save.timestampformat=Tidsstempelformat
-dialog.save.overwrite.title=Fil finnes allerede
-dialog.save.overwrite.text=Denne filen finnes allerede. Er du sikker p\u00e5 at du vil overskrive filen?
-dialog.exportkml.kmz=Komprimer for \u00e5 lage kmz-fil
-dialog.exportkml.exportimages=Eksporter miniatyrbilder til kmz
-dialog.exportkml.imagesize=Bildest\u00f8rrelse
-dialog.exportkml.trackcolour=Sporfarge
-dialog.exportgpx.name=Navn
-dialog.exportgpx.desc=Beskrivelse
-dialog.exportgpx.includetimestamps=Inkluder tidsstempler
-dialog.exportgpx.descriptionstocomments=Kopier beskrivelser til kommentarer
-dialog.exportgpx.encoding=Koding
-dialog.exportgpx.encoding.system=System
-dialog.exportgpx.encoding.utf8=UTF-8
-dialog.exportpov.text=Angi parametrene for POV-eksporten
-dialog.exportpov.font=Skrift
-dialog.exportpov.camerax=Kamera X
-dialog.exportpov.cameray=Kamera Y
-dialog.exportpov.cameraz=Kamera Z
-dialog.exportpov.modelstyle=Modellstil
-dialog.3d.useterrain=Vis terreng
-dialog.3d.terraingridsize=Rutenettst\u00f8rrelse
-dialog.baseimage.title=Kartbilde
-dialog.baseimage.useimage=Bruk bilde
-dialog.baseimage.mapsource=Kartkilde
-dialog.baseimage.zoom=Zoom-niv\u00e5
-dialog.baseimage.tiles=Fliser
-dialog.baseimage.size=Bildest\u00f8rrelse
-dialog.exportimage.drawtrack=Tegn spor p\u00e5 kart
-dialog.exportimage.drawtrackpoints=Tegn sporpunkter
-dialog.exportimage.textscalepercent=Tekstskaleringsfaktor (%)
-dialog.pointtype.desc=Lagre f\u00f8lgende punkttyper:
-dialog.pointtype.track=Sporpunkter
-dialog.pointtype.waypoint=Veipunkter
-dialog.pointtype.photo=Fotopunkter
-dialog.pointtype.audio=Lydpunkter
-dialog.undo.title=Angrehandling(er)
-dialog.undo.pretext=Velg handlingen(e) \u00e5 angre
-dialog.undo.none.title=Kan ikke angre
-dialog.undo.none.text=Ingen handlinger \u00e5 angre!
-dialog.clearundo.title=T\u00f8m angreliste
-dialog.clearundo.text=Er du sikker p\u00e5 at du vil t\u00f8mme angrelisten?\nAll angreinformasjon blir tapt!
-dialog.pointedit.title=Rediger punkt
-dialog.pointedit.intro=Velg hvert felt etter tur for \u00e5 vise og endre verdien
-dialog.pointedit.table.field=Felt
-dialog.pointedit.nofield=Ingen felt valgt
-dialog.pointedit.table.value=Verdi
-dialog.pointnameedit.name=Veipunktnavn
-dialog.pointnameedit.uppercase=STORE bokstaver
-dialog.pointnameedit.lowercase=sm\u00e5 bokstaver
-dialog.truncatecoords.intro=Velg koordinatformatet og antallet desimaler
-dialog.truncatecoords.numdigits=Antall desimaler
-dialog.truncatecoords.preview=Forh\u00e5ndsvisning
-dialog.addtimeoffset.add=Legg til tid
-dialog.addtimeoffset.subtract=Trekk fra tid
-dialog.addtimeoffset.weeks=Uker
-dialog.addtimeoffset.days=Dager
-dialog.addtimeoffset.hours=Timer
-dialog.addtimeoffset.minutes=Minutter
-dialog.addtimeoffset.notimestamps=Kan ikke legge til en tidsforskyvning ettersom dette markeringsomr\u00e5det ikke inneholder noen tidsstempelinformasjon
-dialog.findwaypoint.intro=Angi en del av veipunktnavnet
-dialog.findwaypoint.search=S\u00f8k
-dialog.saveexif.title=Lagre Exif
-dialog.saveexif.nothingtosave=Koordinatdata er uendret, ingenting \u00e5 lagre
-dialog.saveexif.noexiftool=Ikke noe ExifTool-program ble funnet. Fortsette?
-dialog.saveexif.table.photoname=Bildenavn
-dialog.saveexif.table.status=Status
-dialog.saveexif.table.save=Lagre
-dialog.saveexif.photostatus.modified=Endret
-dialog.saveexif.overwrite=Overskriv filer
-dialog.charts.xaxis=X-akse
-dialog.charts.yaxis=Y-akser
-dialog.charts.svgwidth=SVG-bredde
-dialog.charts.svgheight=SVG-h\u00f8yde
-dialog.charts.gnuplotnotfound=Fant ikke Gnuplot med den angitte banen
-dialog.distances.intro=Luftlinjeavstander mellom punkter
-dialog.distances.column.from=Fra punkt
-dialog.distances.column.to=Til punkt
-dialog.distances.currentpoint=Gjeldende punkt
-dialog.distances.toofewpoints=Denne funksjonen trenger veipunkter for \u00e5 kunne beregne avstandene mellom dem
-dialog.estimatetime.details=Detaljer
-dialog.estimatetime.gentle=Lett
-dialog.estimatetime.steep=Bratt
-dialog.estimatetime.climb=Oppstigning
-dialog.estimatetime.descent=Nedstigning
-dialog.estimatetime.parameters=Parametre
-dialog.estimatetime.parameters.timefor=Tid for
-dialog.estimatetime.results=Resultater
-dialog.estimatetime.results.estimatedtime=Beregnet tid
-dialog.estimatetime.results.actualtime=Faktisk tid
-dialog.learnestimationparams.averageerror=Gjennomsnittsfeil
-dialog.learnestimationparams.combine=Disse parameterne kan kombineres med de gjeldende verdiene
-dialog.learnestimationparams.combinedresults=Kombinerte resultater
-dialog.learnestimationparams.weight.100pccurrent=Behold gjeldende verdier
-dialog.learnestimationparams.weight.current=gjeldende
-dialog.learnestimationparams.weight.calculated=beregnet
-dialog.learnestimationparams.weight.50pc=Gjennomsnitt av gjeldende og beregnede verdier
-dialog.learnestimationparams.weight.100pccalculated=Bruk nye beregnede verdier
-dialog.setmapbg.intro=Velg en av kartkildene eller legg til en ny
-dialog.addmapsource.title=Legg til ny kartkilde
-dialog.addmapsource.maxzoom=Maksimum zoom-niv\u00e5
-dialog.addmapsource.noname=Navnl\u00f8s
-dialog.pointdownload.description=Beskrivelse
-dialog.pointdownload.nodescription=Ingen beskrivelse
-dialog.wikipedia.column.name=Artikkelnavn
-dialog.osmpois.column.name=Navn
-dialog.osmpois.column.type=Type
-dialog.osmpois.nonefound=Ingen punkter funnet
-dialog.correlate.select.photoname=Bildenavn
-dialog.correlate.select.timediff=Tidsforskjell
-dialog.correlate.options.offsetpanel=Tidsforskyvning
-dialog.correlate.options.offset.hours=timer,
-dialog.correlate.options.offset.minutes=minutter og
-dialog.correlate.options.offset.seconds=sekunder
-dialog.rearrangewaypoints.desc=Velg bestemmelsesstedet og sorteringsrekkef\u00f8lge for veipunktene
-dialog.rearrange.nosort=Ikke sorter
-dialog.rearrange.sortbyfilename=Sorter etter filnavn
-dialog.rearrange.sortbyname=Sorter etter navn
-dialog.rearrange.sortbytime=Sorter etter tid
-dialog.compress.duplicates.title=Duplikatfjerning
-dialog.compress.summarylabel=Punkter \u00e5 slette
-dialog.compress.confirm=%d punkter har blitt markerte.\nSlette disse markerte punktene n\u00e5?
-dialog.compress.confirmnone=ingen punkter har blitt markert
-dialog.deletemarked.nonefound=Ingen datapunkter kunne fjernes
-dialog.dedupewaypoints.nonefound=Ingen duplikatveipunkter ble funnet
-dialog.pastecoordinates.desc=Skriv inn eller lim inn koordinatene her
-dialog.pastecoordinates.coords=Koordinater
-dialog.pastecoordinates.nothingfound=Sjekk koordinatene og pr\u00f8v igjen
-dialog.pastecoordinatelist.desc=Angi koordinatene for de nye punktene med ett punkt per linje
-dialog.about.version=Versjon
-dialog.about.languages=Tilgjengelige spr\u00e5k
-dialog.about.translatedby=Norsk oversettelse av:
-dialog.about.systeminfo=System-info
-dialog.about.systeminfo.os=Operativsystem
-dialog.about.systeminfo.java=Java Runtime
-dialog.about.systeminfo.java3d=Java3d installert
-dialog.about.systeminfo.exiftool=ExifTool installert
-dialog.about.systeminfo.gpsbabel=GPSBabel installert
-dialog.about.systeminfo.gnuplot=Gnuplot installert
-dialog.about.yes=Ja
-dialog.about.no=Nei
-dialog.keys.normalmodifier=Ctrl
-dialog.paths.prune.gnuplotpath=Bane til Gnuplot
-dialog.paths.prune.gpsbabelpath=Bane til GPSBabel
-dialog.paths.prune.exiftoolpath=Bane til ExifTool
-dialog.setpaths.intro=Hvis du trenger det, kan du velge banene til de eksterne programmene:
-dialog.setpaths.found=Bane funnet?
-dialog.addaltitude.desc=H\u00f8ydeforskyvning \u00e5 legge til
-dialog.setcolours.background=Bakgrunn
-dialog.setcolours.borders=Kanter
-dialog.setcolours.lines=Linjer
-dialog.setcolours.primary=Prim\u00e6r
-dialog.setcolours.secondary=Sekund\u00e6r
-dialog.setcolours.point=Punkter
-dialog.setcolours.selection=Markering
-dialog.setcolours.text=Tekst
-dialog.colourchooser.title=Velg farge
-dialog.colourchooser.red=R\u00f8d
-dialog.colourchooser.green=Gr\u00f8nn
-dialog.colourchooser.blue=Bl\u00e5
-dialog.colourer.start=Startfarge
-dialog.colourer.end=Sluttfarge
-dialog.colourer.maxcolours=Maksimalt antall farger
-dialog.setlanguage.firstintro=Du kan enten velge ett av de inkluderte spr\u00e5kene,<p>eller velg en tekstfil \u00e5 bruke isteden.
-dialog.setlanguage.secondintro=Innstillingene dine m\u00e5 lagres og s\u00e5<p>start GpsPrune p\u00e5 nytt for \u00e5 endre spr\u00e5ket.
-dialog.setlanguage.language=Spr\u00e5k
-dialog.setlanguage.languagefile=Spr\u00e5kfil
-dialog.setlanguage.endmessage=Lagre innstillingene dine og start GpsPrune p\u00e5 nytt\nfor at spr\u00e5kendringen skal tre i kraft.
-dialog.setlanguage.endmessagewithautosave=Start GpsPrune p\u00e5 nytt for at spr\u00e5kendringen skal tre i kraft.
-dialog.diskcache.save=Lagre kartbilder p\u00e5 disk
-dialog.diskcache.dir=Hurtiglagermappe
-dialog.diskcache.createdir=Opprett mappe
-dialog.diskcache.nocreate=Hurtiglagermappe ikke opprettet
-dialog.diskcache.cannotwrite=Kartfliser kan ikke lagres i den valgte mappen
-dialog.diskcache.table.path=Bane
-dialog.diskcache.table.usedby=Brukt av
-dialog.diskcache.table.zoom=Zoom
-dialog.diskcache.table.tiles=Fliser
-dialog.diskcache.table.megabytes=Megabyte
-dialog.diskcache.deleteold=Slett gamle fliser
-dialog.diskcache.maximumage=Maksimal alder (dager)
-dialog.diskcache.deleteall=Slett alle fliser
-dialog.diskcache.deleted=Slettet %d filer fra hurtiglageret
-dialog.displaysettings.linewidth=Linjetykkelse for sporene (1-4)
-dialog.displaysettings.antialias=Bruk kantutjevning
-dialog.displaysettings.allowosscaling=Tillat OS \u00e5 skalere kart
-dialog.displaysettings.doublesizedicons=Gj\u00f8r ikoner dobbelt s\u00e5 store
-dialog.displaysettings.waypointicons=Veipunktikoner
-dialog.displaysettings.wpicon.default=Standard
-dialog.displaysettings.wpicon.plectrum=Plektrum
-dialog.displaysettings.wpicon.ring=Ring
-dialog.displaysettings.size.small=Sm\u00e5
-dialog.displaysettings.size.medium=Middels
-dialog.displaysettings.size.large=Store
-dialog.displaysettings.windowstyle.default=Standard
-dialog.displaysettings.windowstyle.nimbus=Nimbus
-dialog.displaysettings.windowstyle.gtk=GTK
-dialog.downloadosm.desc=Bekreft for \u00e5 laste ned OSM-r\u00e5data for det angitte omr\u00e5det:
-dialog.searchwikipedianames.search=S\u00f8k etter:
-dialog.weather.location=Sted
-dialog.weather.update=Varsel oppdatert
-dialog.weather.sunrise=Soloppgang
-dialog.weather.sunset=Solnedgang
-dialog.weather.temperatureunits=Temperaturer
-dialog.weather.currentforecast=Gjeldende v\u00e6r
-dialog.weather.dailyforecast=Daglig varsel
-dialog.weather.3hourlyforecast=Tretimers varsel
-dialog.weather.day.now=Gjeldende v\u00e6r
-dialog.weather.day.today=I dag
-dialog.weather.day.tomorrow=I morgen
-dialog.weather.day.monday=Mandag
-dialog.weather.day.tuesday=Tirsdag
-dialog.weather.day.wednesday=Onsdag
-dialog.weather.day.thursday=Torsdag
-dialog.weather.day.friday=Fredag
-dialog.weather.day.saturday=L\u00f8rdag
-dialog.weather.day.sunday=S\u00f8ndag
-dialog.weather.wind=Vind
-dialog.weather.temp=Temp
-dialog.weather.humidity=Fuktighet
-dialog.weather.creditnotice=Disse dataene er gjort tilgjengelige av openweathermap.org. Nettstedet deres har flere detaljer.
-dialog.deletebydate.nodate=Ingen tidsstempel
-dialog.deletebydate.column.keep=Behold
-dialog.deletebydate.column.delete=Slett
-dialog.setaltitudetolerance.text.metres=Grense (i meter) under hvilken sm\u00e5 stigninger og nedstigninger blir ignorert
-dialog.setaltitudetolerance.text.feet=Grense (i fot) under hvilken sm\u00e5 stigninger og nedstigninger blir ignorert
-dialog.settimezone.system=Bruk systemets tidssone
-dialog.settimezone.custom=Bruk f\u00f8lgende tidssone:
-dialog.settimezone.list.toomany=For mange \u00e5 velge mellom
-dialog.settimezone.selectedzone=Valgt tidssone
-dialog.settimezone.offsetfromutc=Forskjell fra UTC
-dialog.autoplay.rewind=Tilbake til begynnelsen
-dialog.autoplay.pause=Pause
-dialog.autoplay.play=Spill av
-dialog.findfile.dir=S\u00f8k mappe
-dialog.findfile.searchtext=Tekst
-dialog.findfile.resultscolumn.file=Fil
-dialog.findfile.resultscolumn.contents=Innhold
-dialog.editdaterange.yearmonthday=\u00c5r/M\u00e5ned/Dag
-dialog.editdaterange.daterange=Start- og sluttdato
-dialog.editdaterange.month.all=Helt \u00e5r
-dialog.editdaterange.month.jan=Januar
-dialog.editdaterange.month.feb=Februar
-dialog.editdaterange.month.mar=Mars
-dialog.editdaterange.month.apr=April
-dialog.editdaterange.month.may=Mai
-dialog.editdaterange.month.jun=Juni
-dialog.editdaterange.month.jul=Juli
-dialog.editdaterange.month.aug=August
-dialog.editdaterange.month.sep=September
-dialog.editdaterange.month.oct=Oktober
-dialog.editdaterange.month.nov=November
-dialog.editdaterange.month.dec=Desember
-dialog.editdaterange.year=\u00c5r
-dialog.editdaterange.month=M\u00e5ned
-dialog.editdaterange.day=Dag
-dialog.editdaterange.to=til
-dialog.editdaterange.result=Resultat
-dialog.locationfilter.nofilter=Ingen filter
-dialog.locationfilter.distance=Etter distanse
-dialog.locationfilter.frompoint=fra punkt
-
-# Confirm messages
-confirm.loadfile=Data lastet fra fil
-confirm.save.ok1=Lagret
-confirm.save.ok2=punkter til filen
-confirm.deletepoint.single=datapunkt ble fjernet
-confirm.deletepoint.multi=%d datapunkter ble fjernet
-confirm.point.edit=punkt redigert
-confirm.addtimeoffset=Tidsforskyvning lagt til
-confirm.addaltitudeoffset=H\u00f8ydeforskyvning lagt til
-confirm.pointadded=punkt lagt til
-confirm.pointsadded=%d punkter lagt til
-confirm.saveexif.ok=Lagret %d foto-filer
-confirm.jpegload.single=1 foto ble lagt til
-confirm.media.removed=%s ble fjernet
-confirm.createpoint=punkt opprettet
-confirm.rotatephoto=foto rotert
-confirm.lookupsrtm=Fant %d h\u00f8ydeverdier
-confirm.deletefieldvalues=Feltverdier slettet
-confirm.audiosloaded.single=1 lydfil lagt til
-confirm.audiosloaded=%d lydfiler lagt til
-
-# Buttons
-button.ok=OK
-button.back=Tilbake
-button.next=Neste
-button.finish=Fullf\u00f8r
-button.cancel=Avbryt
-button.overwrite=Overskriv
-button.moveup=Flytt opp
-button.movedown=Flytt ned
-button.edit=Rediger
-button.exit=Avslutt
-button.close=Lukk
-button.continue=Fortsett
-button.yes=Ja
-button.no=Nei
-button.always=Alltid
-button.select=Velg
-button.selectall=Velg alle
-button.selectnone=Velg ingen
-button.preview=Forh\u00e5ndsvis
-button.load=Last
-button.showwebpage=Vis nettside
-button.resettodefaults=Tilbakestill til standard
-button.browse=Bla gjennom...
-button.addnew=Legg til ny
-button.delete=Slett
-button.apply=Bruk
-button.allow=Tillat
-button.block=Blokker
-button.search=S\u00f8k
-
-# File types
-filetype.txt=TXT-filer
-filetype.jpeg=JPG-filer
-filetype.kmlkmz=KML-, KMZ-filer
-filetype.kml=KML-filer
-filetype.kmz=KMZ-filer
-filetype.gpx=GPX-filer
-filetype.pov=POV-filer
-filetype.svg=SVG-filer
-filetype.png=PNG-filer
-filetype.audio=MP3-, OGG-, WAV-filer
-
-# Display components
-display.nodata=Ingen data lastet
-display.noaltitudes=Spordata inkluder ikke h\u00f8yde
-display.notimestamps=Spordata inkluder ikke tidsstempler
-display.novalues=Spordata inkluder ikke verdier for dette feltet
-details.trackdetails=Spordetaljer
-details.notrack=Ingen spor lastet
-details.track.points=Punkter
-details.track.file=Fil
-details.track.numfiles=Antall filer
-details.pointdetails=Punktdetaljer
-details.index.selected=Indeks
-details.index.of=av
-details.range.to=til
-details.altitude.to=til
-details.range.climb=Oppstigning
-details.range.descent=Nedstigning
-details.coordformat=Koordinatformat
-details.distanceunits=Distanseenheter
-display.range.time.secs=s
-display.range.time.mins=m
-display.range.time.hours=t
-display.range.time.days=d
-details.range.avespeed=Gj. hastighet
-details.range.maxspeed=Maks. hastighet
-details.range.numsegments=Antall segmenter
-details.range.pace=Tempo
-details.lists.waypoints=Veipunkter
-details.lists.photos=Foto
-details.lists.audio=Lyd
-details.photodetails=Fotodetaljer
-details.photo.loading=Laster
-details.photo.bearing=Retning
-details.media.fullpath=Full bane
-details.audiodetails=Lyddetaljer
-details.noaudio=Ingen lydklipp valgt
-details.audio.file=Lydfil
-details.audio.playing=spiller...
-map.overzoom=Ingen kart tilgjengelige p\u00e5 dette zoom-niv\u00e5et
-
-# Field names
-fieldname.latitude=Breddegrad
-fieldname.longitude=Lengdegrad
-fieldname.coordinates=Koordinater
-fieldname.altitude=H\u00f8yde
-fieldname.timestamp=Tid
-fieldname.time=Tid
-fieldname.date=Dato
-fieldname.waypointname=Navn
-fieldname.waypointtype=Type
-fieldname.newsegment=Segment
-fieldname.custom=Tilpasset
-fieldname.prefix=Felt
-fieldname.distance=Distanse
-fieldname.duration=Varighet
-fieldname.speed=Hastighet
-fieldname.verticalspeed=Vertikal hastighet
-fieldname.description=Beskrivelse
-fieldname.comment=Kommentar
-fieldname.symbol=Symbol
-fieldname.photo=Foto
-fieldname.audio=Lyd
-
-# Measurement units
-units.default=Standard
-units.metres=Meter
-units.metres.short=m
-units.feet=Fot
-units.feet.short=ft
-units.kilometres=Kilometer
-units.kilometres.short=km
-units.kilometresperhour=km i timen
-units.kilometresperhour.short=km/t
-units.nauticalmiles=Nautiske mil
-units.nauticalmiles.short=N.m.
-units.nauticalmilesperhour.short=kn
-units.metrespersec=meter per sekund
-units.metrespersec.short=m/s
-units.feetpersec=fot per sekund
-units.feetpersec.short=ft/s
-units.hours=timer
-units.minutes=minutter
-units.seconds=sekunder
-units.degminsec=Grad-min-sek
-units.degmin=Grad-min
-units.deg=Grader
-units.iso8601=ISO 8601
-units.degreescelsius=Celsius
-units.degreescelsius.short=\u00b0C
-units.degreesfahrenheit=Fahrenheit
-units.degreesfahrenheit.short=\u00b0F
-
-# How to combine conditions, such as filters
-logic.and=og
-logic.or=eller
-
-# External urls and services
-wikipedia.lang=no
-openweathermap.lang=no
-
-# Cardinals for 3d plots
-cardinal.n=N
-cardinal.s=S
-cardinal.e=\u00d8
-cardinal.w=V
-
-# Undo operations
-undo.loadfile=Last fil %s
-undo.loadpoints=Last %d punkter
-undo.editpoint=Rediger punkt
-undo.editpoint.withname=Rediger punkt '%s'
-undo.deletepoint=Slett punkt
-undo.deletepoint.withname=Slett punkt '%s'
-undo.deletepoints=Slett %d punkter
-undo.createpoint=Opprett punkt
-undo.applytimestamps=Bruk tidsstempler
-
-# Error messages
-error.save.dialogtitle=Feil ved lagring av data
-error.save.nodata=Ingen data \u00e5 lagre
-error.save.failed=Kunne ikke lagre dataene til fil
-error.load.dialogtitle=Feil ved lasting av data
-error.load.noread=Kan ikke lese fil
-error.load.nopoints=Ingen koordinatinformasjon funnet i filen
-error.load.unknownxml=Ikke gjenkjent xml-format:
-error.load.noxmlinzip=Ingen xml-fil funnet i zip-filen
-error.load.othererror=Feil ved lesing av fil:
-error.load.nopointsintext=Ingen koordinatinformasjon funnet
-error.jpegload.dialogtitle=Feil ved lasting av bilder
-error.jpegload.nofilesfound=Ingen filer funnet
-error.jpegload.nojpegsfound=Ingen jpeg-filer funnet
-error.jpegload.nogpsfound=Ingen GPS-informasjon funnet
-error.audioload.nofilesfound=Ingen lydklipp funnet
-error.gpsload.unknown=Ukjent feil
-error.undofailed.title=Angre mislyktes
-error.language.wrongfile=Den valgte filen ser ikke ut til \u00e5 v\u00e6re en spr\u00e5kfil for GpsPrune
-error.lookupsrtm.nonefound=Ingen h\u00f8ydeverdier tilgjengelige for disse punktene
-error.cache.notthere=Flishurtiglager-mappen ble ikke funnet
-error.cache.empty=Flishurtiglager-mappen er tom
-error.cache.cannotdelete=Ingen fliser kunne slettes
-error.tracksplit.nosplit=Sporet kunne ikke deles
-error.findfile.nofilesfound=Ingen filer ble funnet i denne mappen.
-error.migrateconfig.couldnotcreatedirectory=Kunne ikke opprette mappen %s.\nInnstillinger kunne ikke migreres.
-error.migrateconfig.couldnotdeletefile=Kunne ikke slette filen %s.\nSlett denne filen manuelt.


=====================================
tim/prune/load/babel/InterpolateFilter.java
=====================================
@@ -71,8 +71,8 @@ public final class InterpolateFilter extends FilterDefinition
 	 */
 	public boolean isFilterValid()
 	{
-		final boolean distGiven = _distField.getText() != null && _distField.getText().trim().length() > 0;
-		final boolean timeGiven = _secondsField.getText() != null && _secondsField.getText().trim().length() > 0;
+		final boolean distGiven = !_distField.isEmpty();
+		final boolean timeGiven = !_secondsField.isEmpty();
 		if ((!distGiven && !timeGiven) || (distGiven && timeGiven)) {
 			return false; // either one or the other, not both
 		}


=====================================
tim/prune/readme.txt
=====================================
@@ -1,4 +1,4 @@
-GpsPrune version 24.3
+GpsPrune version 24.4
 =====================
 
 GpsPrune is an application for viewing, editing and managing coordinate data from GPS systems,
@@ -17,7 +17,7 @@ Running
 =======
 
 To run GpsPrune from the jar file, simply call it from a command prompt or shell:
-   java -jar gpsprune_24.3.jar
+   java -jar gpsprune_24.4.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,17 @@ 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_24.3.jar --lang=DE
+   java -jar gpsprune_24.4.jar --lang=DE
 
 
+New with version 24.4
+=====================
+The following fixes were made since version 24.3:
+  - Bugfix for range selection after interpolation
+  - Bugfix for interpolation when you don't say Yes or No to interpolation between waypoints
+  - Bugfix for GPSBabel interpolation filter
+  - Bugfix for saving of selected map source in the settings
+
 New with version 24.3
 =====================
 The following fixes were made since version 24.2:



View it on GitLab: https://salsa.debian.org/debian-gis-team/gpsprune/-/commit/3dedd0ba412418e3b410ce70831ff2bd6428247c

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/gpsprune/-/commit/3dedd0ba412418e3b410ce70831ff2bd6428247c
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/20240901/02f9f7bc/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list