]> gitweb.fperrin.net Git - GpsPrune.git/commitdiff
Version 20.1, December 2020
authoractivityworkshop <mail@activityworkshop.net>
Thu, 31 Dec 2020 15:49:40 +0000 (16:49 +0100)
committeractivityworkshop <mail@activityworkshop.net>
Thu, 31 Dec 2020 15:49:40 +0000 (16:49 +0100)
49 files changed:
.gitignore
src/tim/prune/FunctionLibrary.java
src/tim/prune/GpsPrune.java
src/tim/prune/config/Config.java
src/tim/prune/data/Field.java
src/tim/prune/function/AboutScreen.java
src/tim/prune/function/DiskCacheConfig.java
src/tim/prune/function/ShowFullDetails.java
src/tim/prune/function/settings/SaveConfig.java
src/tim/prune/function/settings/SetDisplaySettings.java
src/tim/prune/function/srtm/DownloadSrtmFunction.java [deleted file]
src/tim/prune/function/srtm/LookupSrtmFunction.java
src/tim/prune/function/srtm/SrtmTile.java
src/tim/prune/function/srtm/TileDownloader.java [new file with mode: 0644]
src/tim/prune/function/srtm/TileFinder.java
src/tim/prune/gui/DisplayUtils.java
src/tim/prune/gui/MenuManager.java
src/tim/prune/gui/images/wpicon_ring_l.png
src/tim/prune/gui/images/wpicon_ring_m.png
src/tim/prune/gui/map/CacheFailure.java [new file with mode: 0644]
src/tim/prune/gui/map/DiskTileCacher.java
src/tim/prune/gui/map/MapCanvas.java
src/tim/prune/gui/map/MapPosition.java
src/tim/prune/gui/map/MapTileManager.java
src/tim/prune/gui/map/TileConsumer.java
src/tim/prune/lang/prune-texts_af.properties
src/tim/prune/lang/prune-texts_cy.properties
src/tim/prune/lang/prune-texts_cz.properties
src/tim/prune/lang/prune-texts_de.properties
src/tim/prune/lang/prune-texts_de_CH.properties
src/tim/prune/lang/prune-texts_en.properties
src/tim/prune/lang/prune-texts_es.properties
src/tim/prune/lang/prune-texts_fi.properties
src/tim/prune/lang/prune-texts_fr.properties
src/tim/prune/lang/prune-texts_hu.properties
src/tim/prune/lang/prune-texts_it.properties
src/tim/prune/lang/prune-texts_nl.properties
src/tim/prune/lang/prune-texts_no.properties
src/tim/prune/lang/prune-texts_pl.properties
src/tim/prune/lang/prune-texts_pt.properties
src/tim/prune/lang/prune-texts_ro.properties
src/tim/prune/lang/prune-texts_ru.properties
src/tim/prune/lang/prune-texts_sv.properties
src/tim/prune/lang/prune-texts_uk.properties
src/tim/prune/lang/prune-texts_zh.properties
src/tim/prune/load/xml/GpxHandler.java
src/tim/prune/readme.txt
src/tim/prune/save/GpxExporter.java
src/tim/prune/save/MapGrouter.java

index 8e9e79486342529033b2eb09b83e85aab4dff345..a57e45f28ff0735e61249aa5a4ca8322d35b1db0 100644 (file)
@@ -1,2 +1,3 @@
 *.class
 *.jar
 *.class
 *.jar
+/bin/
index 68303ed95946466daf23cf1adc5b15aa24f31786..a1cb9edc6addb71fb8505f50b7e65f04b28ae685 100644 (file)
@@ -59,7 +59,6 @@ import tim.prune.function.settings.SetMapBgFunction;
 import tim.prune.function.settings.SetPathsFunction;
 import tim.prune.function.sew.SewTrackSegmentsFunction;
 import tim.prune.function.sew.SplitSegmentsFunction;
 import tim.prune.function.settings.SetPathsFunction;
 import tim.prune.function.sew.SewTrackSegmentsFunction;
 import tim.prune.function.sew.SplitSegmentsFunction;
-import tim.prune.function.srtm.DownloadSrtmFunction;
 import tim.prune.function.srtm.LookupSrtmFunction;
 import tim.prune.function.weather.GetWeatherForecastFunction;
 import tim.prune.load.AudioLoader;
 import tim.prune.function.srtm.LookupSrtmFunction;
 import tim.prune.function.weather.GetWeatherForecastFunction;
 import tim.prune.load.AudioLoader;
@@ -102,7 +101,6 @@ public abstract class FunctionLibrary
        public static GenericFunction FUNCTION_DELETE_BY_DATE = null;
        public static SingleNumericParameterFunction FUNCTION_INTERPOLATE = null;
        public static GenericFunction FUNCTION_LOOKUP_SRTM = null;
        public static GenericFunction FUNCTION_DELETE_BY_DATE = null;
        public static SingleNumericParameterFunction FUNCTION_INTERPOLATE = null;
        public static GenericFunction FUNCTION_LOOKUP_SRTM = null;
-       public static GenericFunction FUNCTION_DOWNLOAD_SRTM = null;
        public static GenericFunction FUNCTION_NEARBY_WIKIPEDIA = null;
        public static GenericFunction FUNCTION_SEARCH_WIKIPEDIA = null;
        public static GenericFunction FUNCTION_SEARCH_OSMPOIS = null;
        public static GenericFunction FUNCTION_NEARBY_WIKIPEDIA = null;
        public static GenericFunction FUNCTION_SEARCH_WIKIPEDIA = null;
        public static GenericFunction FUNCTION_SEARCH_OSMPOIS = null;
@@ -180,7 +178,6 @@ public abstract class FunctionLibrary
                FUNCTION_DELETE_BY_DATE = new DeleteByDateFunction(inApp);
                FUNCTION_INTERPOLATE = new InterpolateFunction(inApp);
                FUNCTION_LOOKUP_SRTM = new LookupSrtmFunction(inApp);
                FUNCTION_DELETE_BY_DATE = new DeleteByDateFunction(inApp);
                FUNCTION_INTERPOLATE = new InterpolateFunction(inApp);
                FUNCTION_LOOKUP_SRTM = new LookupSrtmFunction(inApp);
-               FUNCTION_DOWNLOAD_SRTM = new DownloadSrtmFunction(inApp);
                FUNCTION_NEARBY_WIKIPEDIA = new GetWikipediaFunction(inApp);
                FUNCTION_SEARCH_WIKIPEDIA = new SearchWikipediaNames(inApp);
                FUNCTION_SEARCH_OSMPOIS = new SearchOsmPoisFunction(inApp);
                FUNCTION_NEARBY_WIKIPEDIA = new GetWikipediaFunction(inApp);
                FUNCTION_SEARCH_WIKIPEDIA = new SearchWikipediaNames(inApp);
                FUNCTION_SEARCH_OSMPOIS = new SearchOsmPoisFunction(inApp);
index 874ece5a7b7dce6314c5179525b516cf88e31e56..a7e0f49e5da016441c2caf494d4f1ac7917f708c 100644 (file)
@@ -38,9 +38,9 @@ import tim.prune.gui.profile.ProfileChart;
 public class GpsPrune
 {
        /** Version number of application, used in about screen and for version check */
 public class GpsPrune
 {
        /** Version number of application, used in about screen and for version check */
-       public static final String VERSION_NUMBER = "20";
+       public static final String VERSION_NUMBER = "20.1";
        /** Build number, just used for about screen */
        /** Build number, just used for about screen */
-       public static final String BUILD_NUMBER = "378";
+       public static final String BUILD_NUMBER = "382";
        /** Static reference to App object */
        private static App APP = null;
 
        /** Static reference to App object */
        private static App APP = null;
 
index 8c6eefec498706d0c789ad1ae3b4302a8e4022ac..a5226b37fe2f5cb272f683f975788b58928f167a 100644 (file)
@@ -109,6 +109,8 @@ public abstract class Config
        public static final String KEY_WAYPOINT_ICON_SIZE = "prune.waypointiconsize";
        /** Id of selected timezone */
        public static final String KEY_TIMEZONE_ID = "prune.timezoneid";
        public static final String KEY_WAYPOINT_ICON_SIZE = "prune.waypointiconsize";
        /** Id of selected timezone */
        public static final String KEY_TIMEZONE_ID = "prune.timezoneid";
+       /** Last used latlon range */
+       public static final String KEY_LATLON_RANGE = "prune.latlonrange";
 
 
        /** Initialise the default properties */
 
 
        /** Initialise the default properties */
@@ -194,14 +196,14 @@ public abstract class Config
                props.put(KEY_GPS_DEVICE, "usb:");
                props.put(KEY_GPS_FORMAT, "garmin");
                props.put(KEY_POVRAY_FONT, "crystal.ttf"); // alternative: DejaVuSans-Bold.ttf
                props.put(KEY_GPS_DEVICE, "usb:");
                props.put(KEY_GPS_FORMAT, "garmin");
                props.put(KEY_POVRAY_FONT, "crystal.ttf"); // alternative: DejaVuSans-Bold.ttf
-               props.put(KEY_SHOW_MAP, "0"); // hide by default
+               props.put(KEY_SHOW_MAP, "1"); // show by default
                props.put(KEY_EXIFTOOL_PATH, "exiftool");
                props.put(KEY_GNUPLOT_PATH, "gnuplot");
                props.put(KEY_GPSBABEL_PATH, "gpsbabel");
                props.put(KEY_IMPORT_FILE_FORMAT, "-1"); // no file format selected
                props.put(KEY_KMZ_IMAGE_SIZE, "240");
                props.put(KEY_ANTIALIAS, "1"); // antialias on by default
                props.put(KEY_EXIFTOOL_PATH, "exiftool");
                props.put(KEY_GNUPLOT_PATH, "gnuplot");
                props.put(KEY_GPSBABEL_PATH, "gpsbabel");
                props.put(KEY_IMPORT_FILE_FORMAT, "-1"); // no file format selected
                props.put(KEY_KMZ_IMAGE_SIZE, "240");
                props.put(KEY_ANTIALIAS, "1"); // antialias on by default
-               props.put(KEY_AUTOSAVE_SETTINGS, "0"); // autosave false by default
+               props.put(KEY_AUTOSAVE_SETTINGS, "1"); // autosave by default
                props.put(KEY_UNITSET_KEY, "unitset.kilometres"); // metric by default
                props.put(KEY_COORD_DISPLAY_FORMAT, "0"); // original
                props.put(KEY_HEIGHT_EXAGGERATION, "100"); // 100%, no exaggeration
                props.put(KEY_UNITSET_KEY, "unitset.kilometres"); // metric by default
                props.put(KEY_COORD_DISPLAY_FORMAT, "0"); // original
                props.put(KEY_HEIGHT_EXAGGERATION, "100"); // 100%, no exaggeration
index 7b9d77925c1f39fbd4a1d842d63539245fe93b5b..399d931b5397ddfe4ae43cbcbdbf0a5f33588cea 100644 (file)
@@ -18,6 +18,7 @@ public class Field
        public static final Field WAYPT_NAME = new Field("fieldname.waypointname", true);
        public static final Field WAYPT_TYPE = new Field("fieldname.waypointtype", true);
        public static final Field DESCRIPTION = new Field("fieldname.description", true);
        public static final Field WAYPT_NAME = new Field("fieldname.waypointname", true);
        public static final Field WAYPT_TYPE = new Field("fieldname.waypointtype", true);
        public static final Field DESCRIPTION = new Field("fieldname.description", true);
+       public static final Field COMMENT = new Field("fieldname.comment", true);
        public static final Field NEW_SEGMENT = new Field("fieldname.newsegment", true);
 
        public static final Field SPEED          = new Field("fieldname.speed", true);
        public static final Field NEW_SEGMENT = new Field("fieldname.newsegment", true);
 
        public static final Field SPEED          = new Field("fieldname.speed", true);
@@ -66,8 +67,9 @@ public class Field
         */
        public String getName()
        {
         */
        public String getName()
        {
-               if (_labelKey != null)
+               if (_labelKey != null) {
                        return I18nManager.getText(_labelKey);
                        return I18nManager.getText(_labelKey);
+               }
                return _customLabel;
        }
 
                return _customLabel;
        }
 
index 518b10e1568fbb29a2407f61cfee3682cf568b8f..c8044b431cffccac56ae91d5f51d73f8411ca32e 100644 (file)
@@ -196,7 +196,7 @@ public class AboutScreen extends GenericFunction
                        new JLabel(" Gy\u00F6rgy, HooAU, Sergey, P\u00E9ter, serhijdubyk, Peter, Cristian,"),
                        1, 6);
                addToGridBagPanel(creditsPanel, gridBag, constraints,
                        new JLabel(" Gy\u00F6rgy, HooAU, Sergey, P\u00E9ter, serhijdubyk, Peter, Cristian,"),
                        1, 6);
                addToGridBagPanel(creditsPanel, gridBag, constraints,
-                       new JLabel(" Roman, Erkki"),
+                       new JLabel(" Roman, Erkki, Carlos, Tche333"),
                        1, 7);
                addToGridBagPanel(creditsPanel, gridBag, constraints,
                        new JLabel(I18nManager.getText("dialog.about.credits.translations") + " : "),
                        1, 7);
                addToGridBagPanel(creditsPanel, gridBag, constraints,
                        new JLabel(I18nManager.getText("dialog.about.credits.translations") + " : "),
index 915bed1041bd6fdc7342c390ed70ab4575d4868c..2e2fa06d5f7e1f4a4ce08a40ecf26299232c76db 100644 (file)
@@ -9,6 +9,7 @@ import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
 import java.io.File;
 
 import java.awt.event.KeyEvent;
 import java.io.File;
 
+import javax.swing.BorderFactory;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JDialog;
 import javax.swing.JButton;
 import javax.swing.JCheckBox;
 import javax.swing.JDialog;
@@ -17,6 +18,7 @@ import javax.swing.JLabel;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
 import javax.swing.JTextField;
+import javax.swing.border.EtchedBorder;
 
 import tim.prune.App;
 import tim.prune.DataSubscriber;
 
 import tim.prune.App;
 import tim.prune.DataSubscriber;
@@ -62,6 +64,9 @@ public class DiskCacheConfig extends GenericFunction
        private Component makeContents()
        {
                JPanel dialogPanel = new JPanel();
        private Component makeContents()
        {
                JPanel dialogPanel = new JPanel();
+               dialogPanel.setBorder(BorderFactory.createCompoundBorder(
+                       BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(4, 4, 4, 4))
+               );
                dialogPanel.setLayout(new BorderLayout(0, 5));
                // top panel
                JPanel topPanel = new JPanel();
                dialogPanel.setLayout(new BorderLayout(0, 5));
                // top panel
                JPanel topPanel = new JPanel();
index 8f8289e4e0eb38b9523dcd4a8fcdb7549e37fb76..8bba3d0cb65b3e8a53b4146e8ebbe4942467b987 100644 (file)
@@ -239,6 +239,8 @@ public class ShowFullDetails extends GenericFunction
 
                addTextPair(result, "fieldname.description", point.getFieldValue(Field.DESCRIPTION));
 
 
                addTextPair(result, "fieldname.description", point.getFieldValue(Field.DESCRIPTION));
 
+               addTextPair(result, "fieldname.comment", point.getFieldValue(Field.COMMENT));
+
                addTextPair(result, "fieldname.waypointtype", point.getFieldValue(Field.WAYPT_TYPE));
 
                // Speed can come from either timestamps and distances, or speed values in data
                addTextPair(result, "fieldname.waypointtype", point.getFieldValue(Field.WAYPT_TYPE));
 
                // Speed can come from either timestamps and distances, or speed values in data
index b737bd2671cb98d22efe0e63d0742dd15c682915..ca88174011ae7f028c57b71eee4f7cb1a1b134db 100644 (file)
@@ -11,6 +11,8 @@ import tim.prune.App;
 import tim.prune.GenericFunction;
 import tim.prune.I18nManager;
 import tim.prune.config.Config;
 import tim.prune.GenericFunction;
 import tim.prune.I18nManager;
 import tim.prune.config.Config;
+import tim.prune.data.DoubleRange;
+import tim.prune.data.Track;
 
 /**
  * Class to provide the function to save the config settings
 
 /**
  * Class to provide the function to save the config settings
@@ -86,6 +88,12 @@ public class SaveConfig extends GenericFunction
                        + currBounds.width + "x" + currBounds.height;
                Config.setConfigString(Config.KEY_WINDOW_BOUNDS, windowBounds);
 
                        + currBounds.width + "x" + currBounds.height;
                Config.setConfigString(Config.KEY_WINDOW_BOUNDS, windowBounds);
 
+               final String latlonString = createLatLonStringForConfig();
+               if (latlonString != null)
+               {
+                       Config.setConfigString(Config.KEY_LATLON_RANGE, latlonString);
+               }
+
                FileOutputStream outStream = null;
                try
                {
                FileOutputStream outStream = null;
                try
                {
@@ -103,4 +111,30 @@ public class SaveConfig extends GenericFunction
                // Remember where it was saved to
                Config.setConfigFile(inSaveFile);
        }
                // Remember where it was saved to
                Config.setConfigFile(inSaveFile);
        }
+
+       /**
+        * @return semicolon-separated string containing the four values, or null
+        */
+       private String createLatLonStringForConfig()
+       {
+               Track track = _app.getTrackInfo().getTrack();
+               if (track.getNumPoints() >= 2)
+               {
+                       final DoubleRange latRange = track.getLatRange();
+                       final DoubleRange lonRange = track.getLonRange();
+                       if (latRange.getRange() > 0.0 && lonRange.getRange() > 0.0)
+                       {
+                               StringBuffer buffer = new StringBuffer();
+                               buffer.append(Double.toString(latRange.getMinimum()));
+                               buffer.append(';');
+                               buffer.append(Double.toString(latRange.getMaximum()));
+                               buffer.append(';');
+                               buffer.append(Double.toString(lonRange.getMinimum()));
+                               buffer.append(';');
+                               buffer.append(Double.toString(lonRange.getMaximum()));
+                               return buffer.toString();
+                       }
+               }
+               return null;
+       }
 }
 }
index fd15a5097399cacd20ff8640954746889c045504..0a9efd985cd7734b54a8599d0f28ddb57d4e3e57 100644 (file)
@@ -97,6 +97,7 @@ public class SetDisplaySettings extends GenericFunction
        private JButton _okButton = null;
 
        private static final String STYLEKEY_NIMBUS = "javax.swing.plaf.nimbus.NimbusLookAndFeel";
        private JButton _okButton = null;
 
        private static final String STYLEKEY_NIMBUS = "javax.swing.plaf.nimbus.NimbusLookAndFeel";
+       private static final String STYLEKEY_GTK = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel";
 
 
        /**
 
 
        /**
@@ -188,14 +189,17 @@ public class SetDisplaySettings extends GenericFunction
                windowStylePanel.add(new JLabel(I18nManager.getText("dialog.displaysettings.windowstyle")));
                windowStylePanel.add(Box.createHorizontalStrut(10));
                ButtonGroup styleGroup = new ButtonGroup();
                windowStylePanel.add(new JLabel(I18nManager.getText("dialog.displaysettings.windowstyle")));
                windowStylePanel.add(Box.createHorizontalStrut(10));
                ButtonGroup styleGroup = new ButtonGroup();
-               final String[] styleKeys = {"default", "nimbus"};
-               _windowStyleRadios = new JRadioButton[2];
-               for (int i=0; i<2; i++)
+               final String[] styleKeys = {"default", "nimbus", "gtk"};
+               _windowStyleRadios = new JRadioButton[3];
+               for (int i=0; i<3; i++)
                {
                        _windowStyleRadios[i] = new JRadioButton(
                                I18nManager.getText("dialog.displaysettings.windowstyle." + styleKeys[i]));
                        styleGroup.add(_windowStyleRadios[i]);
                {
                        _windowStyleRadios[i] = new JRadioButton(
                                I18nManager.getText("dialog.displaysettings.windowstyle." + styleKeys[i]));
                        styleGroup.add(_windowStyleRadios[i]);
-                       windowStylePanel.add(_windowStyleRadios[i]);
+                       if (i != 2 || platformHasPlaf(STYLEKEY_GTK))
+                       {
+                               windowStylePanel.add(_windowStyleRadios[i]);
+                       }
                }
                midPanel.add(windowStylePanel);
                mainPanel.add(midPanel, BorderLayout.CENTER);
                }
                midPanel.add(windowStylePanel);
                mainPanel.add(midPanel, BorderLayout.CENTER);
@@ -223,6 +227,19 @@ public class SetDisplaySettings extends GenericFunction
                return mainPanel;
        }
 
                return mainPanel;
        }
 
+       /**
+        * @return true if the specified style name is available on this platform
+        */
+       private static boolean platformHasPlaf(String styleName)
+       {
+               for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels())
+               {
+                       if (info.getClassName().equals(styleName)) {
+                               return true;
+                       }
+               }
+               return false;
+       }
 
        /**
         * Show window
 
        /**
         * Show window
@@ -274,6 +291,10 @@ public class SetDisplaySettings extends GenericFunction
                {
                        selectedRadio = 1;
                }
                {
                        selectedRadio = 1;
                }
+               else if (inValue != null && inValue.equals(STYLEKEY_GTK) && _windowStyleRadios[2] != null)
+               {
+                       selectedRadio = 2;
+               }
                _windowStyleRadios[selectedRadio].setSelected(true);
        }
 
                _windowStyleRadios[selectedRadio].setSelected(true);
        }
 
@@ -292,6 +313,20 @@ public class SetDisplaySettings extends GenericFunction
                return 1; // default is medium
        }
 
                return 1; // default is medium
        }
 
+       /**
+        * @return the style string according to the selected radio button
+        */
+       private String getSelectedStyleString()
+       {
+               if (_windowStyleRadios[1].isSelected()) {
+                       return STYLEKEY_NIMBUS;
+               }
+               if (_windowStyleRadios[2] != null && _windowStyleRadios[2].isSelected()) {
+                       return STYLEKEY_GTK;
+               }
+               return null;
+       }
+
        /**
         * Save settings and close
         */
        /**
         * Save settings and close
         */
@@ -304,8 +339,7 @@ public class SetDisplaySettings extends GenericFunction
                Config.setConfigBoolean(Config.KEY_ANTIALIAS, _antialiasCheckbox.isSelected());
                Config.setConfigInt(Config.KEY_WAYPOINT_ICONS, _wpIconCombobox.getSelectedIndex());
                Config.setConfigInt(Config.KEY_WAYPOINT_ICON_SIZE, getSelectedIconSize());
                Config.setConfigBoolean(Config.KEY_ANTIALIAS, _antialiasCheckbox.isSelected());
                Config.setConfigInt(Config.KEY_WAYPOINT_ICONS, _wpIconCombobox.getSelectedIndex());
                Config.setConfigInt(Config.KEY_WAYPOINT_ICON_SIZE, getSelectedIconSize());
-               final String styleString = (_windowStyleRadios[1].isSelected() ? STYLEKEY_NIMBUS : null);
-               Config.setConfigString(Config.KEY_WINDOW_STYLE, styleString);
+               Config.setConfigString(Config.KEY_WINDOW_STYLE, getSelectedStyleString());
                // refresh display
                UpdateMessageBroker.informSubscribers(DataSubscriber.MAPSERVER_CHANGED);
                _dialog.dispose();
                // refresh display
                UpdateMessageBroker.informSubscribers(DataSubscriber.MAPSERVER_CHANGED);
                _dialog.dispose();
diff --git a/src/tim/prune/function/srtm/DownloadSrtmFunction.java b/src/tim/prune/function/srtm/DownloadSrtmFunction.java
deleted file mode 100644 (file)
index 0350ce3..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-package tim.prune.function.srtm;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-
-import javax.swing.JOptionPane;
-
-import tim.prune.App;
-import tim.prune.GenericFunction;
-import tim.prune.GpsPrune;
-import tim.prune.I18nManager;
-import tim.prune.config.Config;
-import tim.prune.data.DoubleRange;
-import tim.prune.gui.ProgressDialog;
-
-/**
- * Class to provide a download function for the Space Shuttle's SRTM data files.
- * HGT files are downloaded into memory via HTTP and stored in the map cache.
- */
-public class DownloadSrtmFunction extends GenericFunction implements Runnable
-{
-       /** Progress dialog */
-       private ProgressDialog _progress = null;
-       /** Flag to check whether this function is currently running or not */
-       private boolean _running = false;
-
-
-       /**
-        * Constructor
-        * @param inApp  App object
-        */
-       public DownloadSrtmFunction(App inApp) {
-               super(inApp);
-       }
-
-       /** @return name key */
-       public String getNameKey() {
-               return "function.downloadsrtm";
-       }
-
-       /**
-        * Begin the download
-        */
-       public void begin()
-       {
-               _running = true;
-               if (_progress == null) {
-                       _progress = new ProgressDialog(_parentFrame, getNameKey());
-               }
-               _progress.show();
-               // start new thread for time-consuming part
-               new Thread(this).start();
-       }
-
-       /**
-        * Run method using separate thread
-        */
-       public void run()
-       {
-               // Compile list of tiles to get
-               ArrayList<SrtmTile> tileList = new ArrayList<SrtmTile>();
-
-               // First, loop to see which tiles are needed
-               DoubleRange lonRange = _app.getTrackInfo().getTrack().getLonRange();
-               DoubleRange latRange = _app.getTrackInfo().getTrack().getLatRange();
-               final int minLon = (int) Math.floor(lonRange.getMinimum());
-               final int maxLon = (int) Math.floor(lonRange.getMaximum());
-               final int minLat = (int) Math.floor(latRange.getMinimum());
-               final int maxLat = (int) Math.floor(latRange.getMaximum());
-
-               for (int lon=minLon; lon<= maxLon; lon++)
-               {
-                       for (int lat=minLat; lat <= maxLat; lat++)
-                       {
-                               SrtmTile tile = new SrtmTile(lat, lon);
-                               boolean alreadyGot = false;
-                               for (int t = 0; t < tileList.size(); t++)
-                               {
-                                       if (tileList.get(t).equals(tile)) {
-                                               alreadyGot = true;
-                                       }
-                               }
-                               if (!alreadyGot) {tileList.add(tile);}
-                       }
-               }
-
-               downloadTiles(tileList);
-               // Finished
-               _running = false;
-       }
-
-
-       /**
-        * Download the tiles of SRTM data
-        * @param inTileList list of tiles to get
-        */
-       private void downloadTiles(ArrayList<SrtmTile> inTileList)
-       {
-               // Update progress bar
-               if (_progress != null)
-               {
-                       _progress.setMaximum(inTileList.size());
-                       _progress.setValue(0);
-               }
-
-               String errorMessage = null;
-
-               // Check the cache is ok
-               final String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE);
-               if (diskCachePath != null)
-               {
-                       File srtmDir = new File(diskCachePath, "srtm");
-                       if (!srtmDir.exists() && !srtmDir.mkdir()) {
-                               // can't create the srtm directory
-                               errorMessage = I18nManager.getText("error.downloadsrtm.nocache");
-                       }
-               }
-               else {
-                       // no cache set up
-                       errorMessage = I18nManager.getText("error.downloadsrtm.nocache");
-               }
-
-               // Get urls for each tile
-               URL[] urls = TileFinder.getUrls(inTileList);
-               int numDownloaded = 0;
-               for (int t=0; t<inTileList.size() && !_progress.isCancelled(); t++)
-               {
-                       if (urls[t] != null)
-                       {
-                               // Define streams
-                               FileOutputStream outStream = null;
-                               InputStream inStream = null;
-                               try
-                               {
-                                       // Set progress
-                                       _progress.setValue(t);
-                                       // See if we've already got this tile or not
-                                       File outputFile = getFileToWrite(urls[t]);
-                                       if (outputFile != null)
-                                       {
-                                               // System.out.println("Download: Need to download: " + urls[t]);
-                                               outStream = new FileOutputStream(outputFile);
-                                               URLConnection conn = urls[t].openConnection();
-                                               conn.setRequestProperty("User-Agent", "GpsPrune v" + GpsPrune.VERSION_NUMBER);
-                                               inStream = conn.getInputStream();
-                                               // Copy all the bytes to the file
-                                               int c;
-                                               while ((c = inStream.read()) != -1)
-                                               {
-                                                       outStream.write(c);
-                                               }
-
-                                               numDownloaded++;
-                                       }
-                                       // else System.out.println("Don't need to download: " + urls[t].getFile());
-                               }
-                               catch (IOException ioe) {errorMessage = ioe.getClass().getName() + " - " + ioe.getMessage();
-                               }
-                               // Make sure streams are closed
-                               try {inStream.close();} catch (Exception e) {}
-                               try {outStream.close();} catch (Exception e) {}
-                       }
-               }
-
-               _progress.dispose();
-               if (_progress.isCancelled()) {
-                       return;
-               }
-
-               if (errorMessage != null) {
-                       _app.showErrorMessageNoLookup(getNameKey(), errorMessage);
-               }
-               else if (numDownloaded == 1)
-               {
-                       JOptionPane.showMessageDialog(_parentFrame, I18nManager.getTextWithNumber("confirm.downloadsrtm.1", numDownloaded),
-                               I18nManager.getText(getNameKey()), JOptionPane.INFORMATION_MESSAGE);
-               }
-               else if (numDownloaded > 1)
-               {
-                       JOptionPane.showMessageDialog(_parentFrame, I18nManager.getTextWithNumber("confirm.downloadsrtm", numDownloaded),
-                               I18nManager.getText(getNameKey()), JOptionPane.INFORMATION_MESSAGE);
-               }
-               else if (inTileList.size() > 0) {
-                       _app.showErrorMessage(getNameKey(), "confirm.downloadsrtm.none");
-               }
-       }
-
-       /**
-        * See whether the SRTM file is already available locally
-        * @param inUrl URL for online resource
-        * @return file object to write to, or null if already there
-        */
-       private static File getFileToWrite(URL inUrl)
-       {
-               String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE);
-               if (diskCachePath != null)
-               {
-                       File srtmDir = new File(diskCachePath, "srtm");
-                       if (srtmDir.exists() && srtmDir.isDirectory() && srtmDir.canRead())
-                       {
-                               File srtmFile = new File(srtmDir, new File(inUrl.getFile()).getName());
-                               if (!srtmFile.exists() || !srtmFile.canRead() || srtmFile.length() <= 400) {
-                                       return srtmFile;
-                               }
-                       }
-               }
-               return null;
-       }
-
-       /**
-        * @return true if a thread is currently running
-        */
-       public boolean isRunning()
-       {
-               return _running;
-       }
-}
index c48af016b889f0df84a094de2df84db0db0ef272..c5986dba48710517b5432d8a9776370764857ac5 100644 (file)
@@ -4,7 +4,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.URL;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.net.URL;
-import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
 
@@ -40,6 +40,8 @@ public class LookupSrtmFunction extends GenericFunction implements Runnable
        private boolean _normalTrack = true;
        /** Flag set when any tiles had to be downloaded (rather than just loaded locally) */
        private boolean _hadToDownload = false;
        private boolean _normalTrack = true;
        /** Flag set when any tiles had to be downloaded (rather than just loaded locally) */
        private boolean _hadToDownload = false;
+       /** Count the number of tiles downloaded and cached */
+       private int _numCached = 0;
        /** Flag to check whether this function is currently running or not */
        private boolean _running = false;
 
        /** Flag to check whether this function is currently running or not */
        private boolean _running = false;
 
@@ -100,8 +102,6 @@ public class LookupSrtmFunction extends GenericFunction implements Runnable
         */
        public void run()
        {
         */
        public void run()
        {
-               // Compile list of tiles to get
-               ArrayList<SrtmTile> tileList = new ArrayList<SrtmTile>();
                boolean hasZeroAltitudePoints = false;
                boolean hasNonZeroAltitudePoints = false;
                // First, loop to see what kind of points we have
                boolean hasZeroAltitudePoints = false;
                boolean hasNonZeroAltitudePoints = false;
                // First, loop to see what kind of points we have
@@ -128,64 +128,63 @@ public class LookupSrtmFunction extends GenericFunction implements Runnable
                }
 
                // Now loop again to extract the required tiles
                }
 
                // Now loop again to extract the required tiles
+               HashSet<SrtmTile> tileSet = new HashSet<SrtmTile>();
                for (int i = 0; i < _track.getNumPoints(); i++)
                {
                        // Consider points which don't have altitudes or have zero values
                        if (!_track.getPoint(i).hasAltitude()
                                || (overwriteZeros && _track.getPoint(i).getAltitude().getValue() == 0))
                        {
                for (int i = 0; i < _track.getNumPoints(); i++)
                {
                        // Consider points which don't have altitudes or have zero values
                        if (!_track.getPoint(i).hasAltitude()
                                || (overwriteZeros && _track.getPoint(i).getAltitude().getValue() == 0))
                        {
-                               SrtmTile tile = new SrtmTile(_track.getPoint(i));
-                               boolean alreadyGot = false;
-                               for (int t = 0; t < tileList.size(); t++)
-                               {
-                                       if (tileList.get(t).equals(tile)) {
-                                               alreadyGot = true;
-                                       }
-                               }
-                               if (!alreadyGot) {tileList.add(tile);}
+                               tileSet.add(new SrtmTile(_track.getPoint(i)));
                        }
                }
                        }
                }
-               lookupValues(tileList, overwriteZeros);
+               lookupValues(tileSet, overwriteZeros);
                // Finished
                _running = false;
                // Show tip if lots of online lookups were necessary
                if (_hadToDownload) {
                        _app.showTip(TipManager.Tip_DownloadSrtm);
                }
                // Finished
                _running = false;
                // Show tip if lots of online lookups were necessary
                if (_hadToDownload) {
                        _app.showTip(TipManager.Tip_DownloadSrtm);
                }
+               else if (_numCached > 0) {
+                       showConfirmMessage(_numCached);
+               }
        }
 
 
        /**
         * Lookup the values from SRTM data
        }
 
 
        /**
         * Lookup the values from SRTM data
-        * @param inTileList list of tiles to get
+        * @param inTileSet set of tiles to get
         * @param inOverwriteZeros true to overwrite zero altitude values
         */
         * @param inOverwriteZeros true to overwrite zero altitude values
         */
-       private void lookupValues(ArrayList<SrtmTile> inTileList, boolean inOverwriteZeros)
+       private void lookupValues(HashSet<SrtmTile> inTileSet, boolean inOverwriteZeros)
        {
                UndoLookupSrtm undo = new UndoLookupSrtm(_app.getTrackInfo());
                int numAltitudesFound = 0;
        {
                UndoLookupSrtm undo = new UndoLookupSrtm(_app.getTrackInfo());
                int numAltitudesFound = 0;
+               TileFinder tileFinder = new TileFinder();
+               String errorMessage = null;
+               final int numTiles = inTileSet.size();
+
                // Update progress bar
                if (_progress != null)
                {
                // Update progress bar
                if (_progress != null)
                {
-                       _progress.setMaximum(inTileList.size());
+                       _progress.setMaximum(numTiles);
                        _progress.setValue(0);
                }
                        _progress.setValue(0);
                }
-               String errorMessage = null;
-               // Get urls for each tile
-               URL[] urls = TileFinder.getUrls(inTileList);
-               for (int t=0; t<inTileList.size() && !_progress.isCancelled() && urls != null; t++)
+               int currentTileIndex = 0;
+               _numCached = 0;
+               for (SrtmTile tile : inTileSet)
                {
                {
-                       if (urls[t] != null)
+                       URL url = tileFinder.getUrl(tile);
+                       if (url != null)
                        {
                        {
-                               SrtmTile tile = inTileList.get(t);
                                try
                                {
                                        // Set progress
                                try
                                {
                                        // Set progress
-                                       _progress.setValue(t);
+                                       _progress.setValue(currentTileIndex++);
                                        final int ARRLENGTH = 1201 * 1201;
                                        int[] heights = new int[ARRLENGTH];
                                        // Open zipinputstream on url and check size
                                        final int ARRLENGTH = 1201 * 1201;
                                        int[] heights = new int[ARRLENGTH];
                                        // Open zipinputstream on url and check size
-                                       ZipInputStream inStream = getStreamToHgtFile(urls[t]);
+                                       ZipInputStream inStream = getStreamToSrtmData(url);
                                        boolean entryOk = false;
                                        if (inStream != null)
                                        {
                                        boolean entryOk = false;
                                        if (inStream != null)
                                        {
@@ -238,7 +237,7 @@ public class LookupSrtmFunction extends GenericFunction implements Runnable
                else if (errorMessage != null) {
                        _app.showErrorMessageNoLookup(getNameKey(), errorMessage);
                }
                else if (errorMessage != null) {
                        _app.showErrorMessageNoLookup(getNameKey(), errorMessage);
                }
-               else if (inTileList.size() > 0) {
+               else if (numTiles > 0) {
                        _app.showErrorMessage(getNameKey(), "error.lookupsrtm.nonefound");
                }
                else {
                        _app.showErrorMessage(getNameKey(), "error.lookupsrtm.nonefound");
                }
                else {
@@ -251,7 +250,45 @@ public class LookupSrtmFunction extends GenericFunction implements Runnable
         * @param inUrl URL for online resource
         * @return ZipInputStream either on the local file or on the downloaded zip file
         */
         * @param inUrl URL for online resource
         * @return ZipInputStream either on the local file or on the downloaded zip file
         */
-       private ZipInputStream getStreamToHgtFile(URL inUrl)
+       private ZipInputStream getStreamToSrtmData(URL inUrl)
+       throws IOException
+       {
+               ZipInputStream localData = null;
+               try {
+                       localData = getStreamToLocalHgtFile(inUrl);
+               }
+               catch (IOException ioe) {
+                       localData = null;
+               }
+               if (localData != null)
+               {
+                       return localData;
+               }
+               // try to download to cache
+               TileDownloader cacher = new TileDownloader();
+               TileDownloader.Result result = cacher.downloadTile(inUrl);
+               System.out.println("Result: " + result);
+               if (result == TileDownloader.Result.DOWNLOADED)
+               {
+                       _numCached++;
+                       return getStreamToLocalHgtFile(inUrl);
+               }
+               // If we don't have a cache, we may be able to download it temporarily
+               if (result != TileDownloader.Result.DOWNLOAD_FAILED)
+               {
+                       _hadToDownload = true;
+                       return new ZipInputStream(inUrl.openStream());
+               }
+               // everything failed
+               return null;
+       }
+
+       /**
+        * Get the SRTM file from the local cache, if available
+        * @param inUrl URL for online resource
+        * @return ZipInputStream on the local file or null if not there
+        */
+       private ZipInputStream getStreamToLocalHgtFile(URL inUrl)
        throws IOException
        {
                String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE);
        throws IOException
        {
                String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE);
@@ -270,10 +307,7 @@ public class LookupSrtmFunction extends GenericFunction implements Runnable
                                }
                        }
                }
                                }
                        }
                }
-               // System.out.println("Lookup: Trying online: " + inUrl.toString());
-               _hadToDownload = true;
-               // MAYBE: Only download if we're in online mode?
-               return new ZipInputStream(inUrl.openStream());
+               return null;
        }
 
        /**
        }
 
        /**
@@ -399,4 +433,18 @@ public class LookupSrtmFunction extends GenericFunction implements Runnable
        {
                return _running;
        }
        {
                return _running;
        }
+
+       private void showConfirmMessage(int numDownloaded)
+       {
+               if (numDownloaded == 1)
+               {
+                       JOptionPane.showMessageDialog(_parentFrame, I18nManager.getTextWithNumber("confirm.downloadsrtm.1", numDownloaded),
+                               I18nManager.getText(getNameKey()), JOptionPane.INFORMATION_MESSAGE);
+               }
+               else if (numDownloaded > 1)
+               {
+                       JOptionPane.showMessageDialog(_parentFrame, I18nManager.getTextWithNumber("confirm.downloadsrtm", numDownloaded),
+                               I18nManager.getText(getNameKey()), JOptionPane.INFORMATION_MESSAGE);
+               }
+       }
 }
 }
index 301bbaf2ccb7849f1378a6f910999c188965a12a..058132c9470b9721f82b058f822d4ab602f99020 100644 (file)
@@ -36,14 +36,25 @@ public class SrtmTile
                _longitude = inLongitude;
        }
 
                _longitude = inLongitude;
        }
 
+       @Override
+       public int hashCode()
+       {
+               return _latitude * 1000 + _longitude;
+       }
+
        /**
         * Check for equality
         * @param inOther other tile object
         * @return true if both represent same tile
         */
        /**
         * Check for equality
         * @param inOther other tile object
         * @return true if both represent same tile
         */
-       public boolean equals(SrtmTile inOther)
+       @Override
+       public boolean equals(Object inOther)
        {
        {
-               return (_latitude == inOther._latitude) && (_longitude == inOther._longitude);
+               if (inOther == null || inOther.getClass() != getClass()) {
+                       return false;
+               }
+               SrtmTile otherTile = (SrtmTile) inOther;
+               return (_latitude == otherTile._latitude) && (_longitude == otherTile._longitude);
        }
 
        /** @return latitude as int */
        }
 
        /** @return latitude as int */
diff --git a/src/tim/prune/function/srtm/TileDownloader.java b/src/tim/prune/function/srtm/TileDownloader.java
new file mode 100644 (file)
index 0000000..831d4dd
--- /dev/null
@@ -0,0 +1,107 @@
+package tim.prune.function.srtm;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+
+import tim.prune.GpsPrune;
+import tim.prune.config.Config;
+
+/**
+ * Class to provide a download function for the Space Shuttle's SRTM data files.
+ * HGT files are downloaded into memory via HTTP and stored in the map cache.
+ */
+public class TileDownloader
+{
+       /** Possible results of the download */
+       public enum Result {DOWNLOADED, NOTHING_TO_DO, DOWNLOAD_FAILED, CACHE_FAILED};
+
+       /**
+        * Download a single tile of SRTM data
+        * @param inUrl remote URL to get
+        */
+       public Result downloadTile(URL inUrl)
+       {
+               if (inUrl == null) {
+                       return Result.NOTHING_TO_DO;
+               }
+
+               // Check the cache is ok
+               final String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE);
+               if (diskCachePath != null)
+               {
+                       File srtmDir = new File(diskCachePath, "srtm");
+                       if (srtmDir.exists() && !srtmDir.isDirectory()) {
+                               // exists but isn't a directory - can't be used
+                               return Result.CACHE_FAILED;
+                       }
+                       if (!srtmDir.exists() && !srtmDir.mkdir()) {
+                               // can't create the srtm directory
+                               return Result.CACHE_FAILED;
+                       }
+               }
+               else {
+                       // no cache set up
+                       return Result.CACHE_FAILED;
+               }
+
+               // Define streams
+               FileOutputStream outStream = null;
+               InputStream inStream = null;
+               Result result = Result.NOTHING_TO_DO;
+               try
+               {
+                       // See if we've already got this tile or not
+                       File outputFile = getFileToWrite(inUrl);
+                       if (outputFile != null)
+                       {
+                               System.out.println("Download: Need to download: " + inUrl);
+                               outStream = new FileOutputStream(outputFile);
+                               URLConnection conn = inUrl.openConnection();
+                               conn.setRequestProperty("User-Agent", "GpsPrune v" + GpsPrune.VERSION_NUMBER);
+                               inStream = conn.getInputStream();
+                               // Copy all the bytes to the file
+                               int c;
+                               while ((c = inStream.read()) != -1)
+                               {
+                                       outStream.write(c);
+                               }
+                               result = Result.DOWNLOADED;
+                       }
+               }
+               catch (IOException ioe) {
+                       System.err.println(ioe.getClass().getName() + " - " + ioe.getMessage());
+                       result = Result.DOWNLOAD_FAILED;
+               }
+               // Make sure streams are closed
+               try {inStream.close();} catch (Exception e) {}
+               try {outStream.close();} catch (Exception e) {}
+
+               return result;
+       }
+
+       /**
+        * See whether the SRTM file is already available locally
+        * @param inUrl URL for online resource
+        * @return file object to write to, or null if already there
+        */
+       private static File getFileToWrite(URL inUrl)
+       {
+               String diskCachePath = Config.getConfigString(Config.KEY_DISK_CACHE);
+               if (diskCachePath != null)
+               {
+                       File srtmDir = new File(diskCachePath, "srtm");
+                       if (srtmDir.exists() && srtmDir.isDirectory() && srtmDir.canRead())
+                       {
+                               File srtmFile = new File(srtmDir, new File(inUrl.getFile()).getName());
+                               if (!srtmFile.exists() || !srtmFile.canRead() || srtmFile.length() <= 400) {
+                                       return srtmFile;
+                               }
+                       }
+               }
+               return null;
+       }
+}
index 5ada68ca1b65e5428c3d6f961db1086e6b8086db..e2b01fa166dbd9b607f9e13890f0a12a7f5b7302 100644 (file)
@@ -3,15 +3,17 @@ package tim.prune.function.srtm;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
 
 
 /**
  * Class to get the URLs of the SRTM tiles
  * using the srtmtiles.dat file
  */
 
 
 /**
  * Class to get the URLs of the SRTM tiles
  * using the srtmtiles.dat file
  */
-public abstract class TileFinder
+public class TileFinder
 {
 {
+       /** tile data loaded from file */
+       private byte[] _tileData = null;
+
        /** URL prefix for all tiles */
        private static final String URL_PREFIX = "https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/";
        /** Directory names for each continent */
        /** URL prefix for all tiles */
        private static final String URL_PREFIX = "https://dds.cr.usgs.gov/srtm/version2_1/SRTM3/";
        /** Directory names for each continent */
@@ -24,33 +26,33 @@ public abstract class TileFinder
         * @param inTiles list of Tiles to get
         * @return array of URLs
         */
         * @param inTiles list of Tiles to get
         * @return array of URLs
         */
-       public static URL[] getUrls(ArrayList<SrtmTile> inTiles)
+       public URL getUrl(SrtmTile inTile)
        {
        {
-               if (inTiles == null || inTiles.size() < 1) {return null;}
-               URL[] urls = new URL[inTiles.size()];
-               // Read dat file into array
-               byte[] lookup = readDatFile();
-               if (lookup == null)
-               {
-                       System.err.println("Build error: resource srtmtiles.dat missing!");
-                       return null;
-               }
-               for (int t=0; t<inTiles.size(); t++)
+               if (inTile == null) {return null;}
+               if (_tileData == null)
                {
                {
-                       SrtmTile tile = inTiles.get(t);
-                       // Get byte from lookup array
-                       int idx = (tile.getLatitude() + 59)*360 + (tile.getLongitude() + 180);
-                       try
+                       _tileData = readDatFile();
+                       if (_tileData == null)
                        {
                        {
-                               int dir = lookup[idx];
-                               if (dir > 0) {
-                                       try {
-                                               urls[t] = new URL(URL_PREFIX + CONTINENTS[dir] + "/" + tile.getTileName());
-                                       } catch (MalformedURLException e) {} // ignore error, url stays null
-                               }
-                       } catch (ArrayIndexOutOfBoundsException e) {} // ignore error, url stays null
+                               System.err.println("Build error: resource srtmtiles.dat missing!");
+                               return null;
+                       }
                }
                }
-               return urls;
+
+               URL url = null;
+               // Get byte from lookup array
+               int idx = (inTile.getLatitude() + 59)*360 + (inTile.getLongitude() + 180);
+               try
+               {
+                       int dir = _tileData[idx];
+                       if (dir > 0) {
+                               try {
+                                       url = new URL(URL_PREFIX + CONTINENTS[dir] + "/" + inTile.getTileName());
+                               } catch (MalformedURLException e) {} // ignore error, url stays null
+                       }
+               } catch (ArrayIndexOutOfBoundsException e) {} // ignore error, url stays null
+
+               return url;
        }
 
        /**
        }
 
        /**
index 25640d8e5072bfc2e70acfc3e26c7de208a494e3..2300296760fa1febfeb8f2dc59d393ca35bb639a 100644 (file)
@@ -36,7 +36,8 @@ public abstract class DisplayUtils
                if (inNumSecs < 86400L) return "" + (inNumSecs / 60 / 60) + I18nManager.getText("display.range.time.hours")
                        + " " + ((inNumSecs / 60) % 60) + I18nManager.getText("display.range.time.mins");
                if (inNumSecs < 432000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days")
                if (inNumSecs < 86400L) return "" + (inNumSecs / 60 / 60) + I18nManager.getText("display.range.time.hours")
                        + " " + ((inNumSecs / 60) % 60) + I18nManager.getText("display.range.time.mins");
                if (inNumSecs < 432000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days")
-                       + " " + (inNumSecs / 60 / 60) % 24 + I18nManager.getText("display.range.time.hours");
+                       + " " + (inNumSecs / 60 / 60) % 24 + I18nManager.getText("display.range.time.hours")
+                       + " " + ((inNumSecs / 60) % 60) + I18nManager.getText("display.range.time.mins");
                if (inNumSecs < 86400000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days");
                return "big";
        }
                if (inNumSecs < 86400000L) return "" + (inNumSecs / 86400L) + I18nManager.getText("display.range.time.days");
                return "big";
        }
index d289b7828fca0086eacf58a6ce74275b1471c786..d87f459851fe62f3906c508a374fad6438e10c73 100644 (file)
@@ -96,7 +96,6 @@ public class MenuManager implements DataSubscriber
        private JMenuItem _routingGraphHopperItem = null;
        private JMenuItem _chartItem = null;
        private JMenuItem _lookupSrtmItem = null;
        private JMenuItem _routingGraphHopperItem = null;
        private JMenuItem _chartItem = null;
        private JMenuItem _lookupSrtmItem = null;
-       private JMenuItem _downloadSrtmItem = null;
        private JMenuItem _nearbyWikipediaItem = null;
        private JMenuItem _nearbyOsmPoiItem = null;
        private JMenuItem _showPeakfinderItem = null;
        private JMenuItem _nearbyWikipediaItem = null;
        private JMenuItem _nearbyOsmPoiItem = null;
        private JMenuItem _showPeakfinderItem = null;
@@ -260,8 +259,6 @@ public class MenuManager implements DataSubscriber
                // SRTM
                _lookupSrtmItem = makeMenuItem(FunctionLibrary.FUNCTION_LOOKUP_SRTM, false);
                onlineMenu.add(_lookupSrtmItem);
                // SRTM
                _lookupSrtmItem = makeMenuItem(FunctionLibrary.FUNCTION_LOOKUP_SRTM, false);
                onlineMenu.add(_lookupSrtmItem);
-               _downloadSrtmItem = makeMenuItem(FunctionLibrary.FUNCTION_DOWNLOAD_SRTM, false);
-               onlineMenu.add(_downloadSrtmItem);
 
                onlineMenu.addSeparator();
                // browser submenu
 
                onlineMenu.addSeparator();
                // browser submenu
@@ -894,8 +891,6 @@ public class MenuManager implements DataSubscriber
                _downloadOsmItem.setEnabled(hasData);
                _getWeatherItem.setEnabled(hasData);
                _findWaypointItem.setEnabled(hasData && _track.hasWaypoints());
                _downloadOsmItem.setEnabled(hasData);
                _getWeatherItem.setEnabled(hasData);
                _findWaypointItem.setEnabled(hasData && _track.hasWaypoints());
-               // have we got a cache?
-               _downloadSrtmItem.setEnabled(hasData && Config.getConfigString(Config.KEY_DISK_CACHE) != null);
                // have we got any timestamps?
                _deleteByDateItem.setEnabled(hasData && _track.hasData(Field.TIMESTAMP));
 
                // have we got any timestamps?
                _deleteByDateItem.setEnabled(hasData && _track.hasData(Field.TIMESTAMP));
 
@@ -1003,6 +998,7 @@ public class MenuManager implements DataSubscriber
                        }
                        else
                        {
                        }
                        else
                        {
+                               rfl.verifyAll();
                                // Rebuild menus
                                _recentFileMenu.removeAll();
                                for (int i=0; i<rfl.getSize(); i++)
                                // Rebuild menus
                                _recentFileMenu.removeAll();
                                for (int i=0; i<rfl.getSize(); i++)
index 66b190d576a491b8f4d94a908bdd179490de4bc7..c26d5842c33b5fa3fe39c4f109437c56b85fde13 100644 (file)
Binary files a/src/tim/prune/gui/images/wpicon_ring_l.png and b/src/tim/prune/gui/images/wpicon_ring_l.png differ
index 3ae352b757942ac9f3b5187cdb875f55d0ef4f3e..9e7f1713c3ec8a235432115f5deb6cc596fcea2c 100644 (file)
Binary files a/src/tim/prune/gui/images/wpicon_ring_m.png and b/src/tim/prune/gui/images/wpicon_ring_m.png differ
diff --git a/src/tim/prune/gui/map/CacheFailure.java b/src/tim/prune/gui/map/CacheFailure.java
new file mode 100644 (file)
index 0000000..6f9ac28
--- /dev/null
@@ -0,0 +1,8 @@
+package tim.prune.gui.map;
+
+/**
+ * Exception thrown to indicate a failure to cache map tiles
+ */
+public class CacheFailure extends Exception
+{
+}
index 875fcc3b7feb5d0bbad49f55774ba257369f0451..9be7841372299894abd9a26ca85ea149ee9ad8fa 100644 (file)
@@ -38,6 +38,8 @@ public class DiskTileCacher implements Runnable
        private static int NUMBER_ACTIVE_THREADS = 0;
        /** Flag to remember whether any server connection is possible */
        private static boolean CONNECTION_ACTIVE = true;
        private static int NUMBER_ACTIVE_THREADS = 0;
        /** Flag to remember whether any server connection is possible */
        private static boolean CONNECTION_ACTIVE = true;
+       /** Flag to remember whether we have already tried to create the base path */
+       private static boolean TRIED_TO_CREATE_BASEPATH = false;
 
 
        /**
 
 
        /**
@@ -86,16 +88,17 @@ public class DiskTileCacher implements Runnable
         * @param inBasePath base path to disk cache
         * @param inTilePath relative path to this tile
         * @param inObserver observer to inform when load complete
         * @param inBasePath base path to disk cache
         * @param inTilePath relative path to this tile
         * @param inObserver observer to inform when load complete
+        * @throws CacheFailure if tile could not be saved
         */
         */
-       public static void saveTile(URL inUrl, String inBasePath, String inTilePath, ImageObserver inObserver)
+       public static void saveTile(URL inUrl, String inBasePath, String inTilePath, ImageObserver inObserver) throws CacheFailure
        {
                if (inBasePath == null || inTilePath == null) {return;}
                // save file if possible
                File basePath = new File(inBasePath);
        {
                if (inBasePath == null || inTilePath == null) {return;}
                // save file if possible
                File basePath = new File(inBasePath);
-               if (!basePath.exists() || !basePath.isDirectory() || !basePath.canWrite())
+               if (!checkBasePath(basePath))
                {
                        // Can't write to base path
                {
                        // Can't write to base path
-                       return;
+                       throw new CacheFailure();
                }
                File tileFile = new File(basePath, inTilePath);
 
                }
                File tileFile = new File(basePath, inTilePath);
 
@@ -113,6 +116,21 @@ public class DiskTileCacher implements Runnable
                }
        }
 
                }
        }
 
+       /**
+        * Check the given base path, and try (once) to create it if necessary
+        * @return true if base path can be written to
+        */
+       private static boolean checkBasePath(File inBasePath)
+       {
+               if (!inBasePath.exists() && !TRIED_TO_CREATE_BASEPATH)
+               {
+                       TRIED_TO_CREATE_BASEPATH = true;
+                       System.out.println("Base path '" + inBasePath.getAbsolutePath() + "' does not exist, trying to create");
+                       return inBasePath.mkdirs();
+               }
+               return inBasePath.exists() && inBasePath.isDirectory() && inBasePath.canWrite();
+       }
+
        /**
         * Start downloading the configured tile
         */
        /**
         * Start downloading the configured tile
         */
@@ -218,12 +236,14 @@ public class DiskTileCacher implements Runnable
                        {
                                success = true;
                        }
                        {
                                success = true;
                        }
+                       else if (_file.delete() && tempFile.renameTo(_file))
+                       {
+                               success = true;
+                       }
                        else
                        {
                        else
                        {
-                               // File couldn't be moved - delete both to be sure
                                System.out.println("Failed to rename temp file: " + tempFile.getAbsolutePath());
                                tempFile.delete();
                                System.out.println("Failed to rename temp file: " + tempFile.getAbsolutePath());
                                tempFile.delete();
-                               _file.delete();
                        }
                }
 
                        }
                }
 
index d305d1c4f7bd3b9dae59066bf4f32423b9426c39..a469e99d014c4254d3c5529402589baa58ab05df 100644 (file)
@@ -85,7 +85,7 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
        /** coordinates of popup menu */
        private int _popupMenuX = -1, _popupMenuY = -1;
        /** Flag to prevent showing too often the error message about loading maps */
        /** coordinates of popup menu */
        private int _popupMenuX = -1, _popupMenuY = -1;
        /** Flag to prevent showing too often the error message about loading maps */
-       private boolean _shownOsmErrorAlready = false;
+       private boolean _shownMapLoadErrorAlready = false;
        /** Current drawing mode */
        private int _drawMode = MODE_DEFAULT;
        /** Current waypoint icon definition */
        /** Current drawing mode */
        private int _drawMode = MODE_DEFAULT;
        /** Current waypoint icon definition */
@@ -339,8 +339,16 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
         */
        private void zoomToFit()
        {
         */
        private void zoomToFit()
        {
-               _latRange = _track.getLatRange();
-               _lonRange = _track.getLonRange();
+               if (_track.getNumPoints() > 0)
+               {
+                       _latRange = _track.getLatRange();
+                       _lonRange = _track.getLonRange();
+               }
+               if (_latRange == null || _lonRange == null
+                       || !_latRange.hasData() || !_lonRange.hasData())
+               {
+                       setDefaultLatLonRange();
+               }
                _xRange = new DoubleRange(MapUtils.getXFromLongitude(_lonRange.getMinimum()),
                        MapUtils.getXFromLongitude(_lonRange.getMaximum()));
                _yRange = new DoubleRange(MapUtils.getYFromLatitude(_latRange.getMinimum()),
                _xRange = new DoubleRange(MapUtils.getXFromLongitude(_lonRange.getMinimum()),
                        MapUtils.getXFromLongitude(_lonRange.getMaximum()));
                _yRange = new DoubleRange(MapUtils.getYFromLatitude(_latRange.getMinimum()),
@@ -349,6 +357,37 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                        getWidth(), getHeight());
        }
 
                        getWidth(), getHeight());
        }
 
+       /**
+        * Track data is empty, so find a default area on the map to show
+        */
+       private void setDefaultLatLonRange()
+       {
+               String storedRange = Config.getConfigString(Config.KEY_LATLON_RANGE);
+               // Parse it into four latlon values
+               try
+               {
+                       String[] values = storedRange.split(";");
+                       if (values.length == 4)
+                       {
+                               final double lat1 = Double.valueOf(values[0]);
+                               final double lat2 = Double.valueOf(values[1]);
+                               if (lat1 >= -90.0 && lat1 <= 90.0 && lat2 >= -90.0 && lat2 <= 90.0 && lat1 != lat2)
+                               {
+                                       _latRange = new DoubleRange(lat1, lat2);
+                                       final double lon1 = Double.valueOf(values[2]);
+                                       final double lon2 = Double.valueOf(values[3]);
+                                       if (lon1 >= -180.0 && lon1 <= 180.0 && lon2 >= -180.0 && lon2 <= 180.0 && lon1 != lon2)
+                                       {
+                                               _lonRange = new DoubleRange(lon1, lon2);
+                                               return;
+                                       }
+                               }
+                       }
+               }
+               catch (Exception e) {}
+               _latRange = new DoubleRange(45.8, 47.9);
+               _lonRange = new DoubleRange(5.9, 10.6);
+       }
 
        /**
         * Paint method
 
        /**
         * Paint method
@@ -360,7 +399,9 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                if (_mapImage != null && (_mapImage.getWidth() != getWidth() || _mapImage.getHeight() != getHeight())) {
                        _mapImage = null;
                }
                if (_mapImage != null && (_mapImage.getWidth() != getWidth() || _mapImage.getHeight() != getHeight())) {
                        _mapImage = null;
                }
-               if (_track.getNumPoints() > 0)
+               final boolean showMap = Config.getConfigBoolean(Config.KEY_SHOW_MAP);
+               final boolean showSomething = _track.getNumPoints() > 0 || showMap;
+               if (showSomething)
                {
                        // Check for autopan if enabled / necessary
                        if (_autopanCheckBox.isSelected())
                {
                        // Check for autopan if enabled / necessary
                        if (_autopanCheckBox.isSelected())
@@ -373,6 +414,14 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                                _prevSelectedPoint = selectedPoint;
                        }
 
                                _prevSelectedPoint = selectedPoint;
                        }
 
+                       // Recognise empty map position, if no data has been loaded
+                       if (_mapPosition.isEmpty())
+                       {
+                               // Set to some default area
+                               zoomToFit();
+                               _recalculate = true;
+                       }
+
                        // Draw the map contents if necessary
                        if (_mapImage == null || _recalculate)
                        {
                        // Draw the map contents if necessary
                        if (_mapImage == null || _recalculate)
                        {
@@ -425,6 +474,9 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                        inG.drawString(I18nManager.getText("display.nodata"), 50, getHeight()/2);
                        _scaleBar.updateScale(-1, 0);
                }
                        inG.drawString(I18nManager.getText("display.nodata"), 50, getHeight()/2);
                        _scaleBar.updateScale(-1, 0);
                }
+               // enable or disable panels
+               _topPanel.setVisible(showSomething);
+               _sidePanel.setVisible(showSomething);
                // Draw slider etc on top
                paintChildren(inG);
        }
                // Draw slider etc on top
                paintChildren(inG);
        }
@@ -503,7 +555,7 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                }
 
                // reset error message
                }
 
                // reset error message
-               if (!showMap) {_shownOsmErrorAlready = false;}
+               if (!showMap) {_shownMapLoadErrorAlready = false;}
                _recalculate = false;
                // Only get map tiles if selected
                if (showMap)
                _recalculate = false;
                // Only get map tiles if selected
                if (showMap)
@@ -941,9 +993,9 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                synchronized(this)
                {
                        // Show message if loading failed (but not too many times)
                synchronized(this)
                {
                        // Show message if loading failed (but not too many times)
-                       if (!inIsOk && !_shownOsmErrorAlready && _mapCheckBox.isSelected())
+                       if (!inIsOk && !_shownMapLoadErrorAlready && _mapCheckBox.isSelected())
                        {
                        {
-                               _shownOsmErrorAlready = true;
+                               _shownMapLoadErrorAlready = true;
                                // use separate thread to show message about failing to load osm images
                                new Thread(new Runnable() {
                                        public void run() {
                                // use separate thread to show message about failing to load osm images
                                new Thread(new Runnable() {
                                        public void run() {
@@ -957,6 +1009,15 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                }
        }
 
                }
        }
 
+       /**
+        * Inform that a cache failure occurred
+        */
+       public void reportCacheFailure()
+       {
+               // Cache can't be used, so disable it - user will be reminded to set it up by the tips
+               Config.setConfigString(Config.KEY_DISK_CACHE, null);
+       }
+
        /**
         * Zoom out, if not already at minimum zoom
         */
        /**
         * Zoom out, if not already at minimum zoom
         */
@@ -1074,15 +1135,17 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
         */
        public void mouseClicked(MouseEvent inE)
        {
         */
        public void mouseClicked(MouseEvent inE)
        {
-               if (_track != null && _track.getNumPoints() > 0)
+               final boolean showMap = Config.getConfigBoolean(Config.KEY_SHOW_MAP);
+               final boolean hasPoints = _track != null && _track.getNumPoints() > 0;
+               if (showMap || hasPoints)
                {
                        // select point if it's a left-click
                        if (!inE.isMetaDown())
                        {
                                if (inE.getClickCount() == 1)
                                {
                {
                        // select point if it's a left-click
                        if (!inE.isMetaDown())
                        {
                                if (inE.getClickCount() == 1)
                                {
-                                       // single click
-                                       if (_drawMode == MODE_DEFAULT)
+                                       // single left click
+                                       if (_drawMode == MODE_DEFAULT && hasPoints)
                                        {
                                                int pointIndex = _clickedPoint;
                                                if (pointIndex == INDEX_UNKNOWN)
                                        {
                                                int pointIndex = _clickedPoint;
                                                if (pointIndex == INDEX_UNKNOWN)
@@ -1408,10 +1471,6 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                        }
                }
                repaint();
                        }
                }
                repaint();
-               // enable or disable components
-               boolean hasData = _track.getNumPoints() > 0;
-               _topPanel.setVisible(hasData);
-               _sidePanel.setVisible(hasData);
                // grab focus for the key presses
                this.requestFocus();
        }
                // grab focus for the key presses
                this.requestFocus();
        }
index 25f05fc1a2a238370d8888ea4b807b7d3f5f8adb..a62d7821c6b1d54db906b73949449b4ef26a39a2 100644 (file)
@@ -17,6 +17,8 @@ public class MapPosition
        private int _zoom = 12;
        /** Factor to zoom by, 2 to the power of zoom */
        private int _zoomFactor = 1 << _zoom;
        private int _zoom = 12;
        /** Factor to zoom by, 2 to the power of zoom */
        private int _zoomFactor = 1 << _zoom;
+       /** Flag to mark if this position has ever been set */
+       private boolean _empty = true;
        /** Maximum zoom level */
        private static final int MAX_ZOOM = 21;
 
        /** Maximum zoom level */
        private static final int MAX_ZOOM = 21;
 
@@ -47,10 +49,12 @@ public class MapPosition
                        }
                }
                if (requiredZoom < 2) requiredZoom = 2;
                        }
                }
                if (requiredZoom < 2) requiredZoom = 2;
+               else if (requiredZoom > 18) requiredZoom = 18;
                // Set position
                setZoom(requiredZoom);
                _xPosition = transformToPixels((inMinX + inMaxX) / 2.0);
                _yPosition = transformToPixels((inMinY + inMaxY) / 2.0);
                // Set position
                setZoom(requiredZoom);
                _xPosition = transformToPixels((inMinX + inMaxX) / 2.0);
                _yPosition = transformToPixels((inMinY + inMaxY) / 2.0);
+               _empty = false;
        }
 
        /**
        }
 
        /**
@@ -61,6 +65,7 @@ public class MapPosition
        {
                _zoom = inZoom;
                _zoomFactor = 1 << _zoom;
        {
                _zoom = inZoom;
                _zoomFactor = 1 << _zoom;
+               _empty = false;
        }
 
        /**
        }
 
        /**
@@ -93,6 +98,7 @@ public class MapPosition
                // Set position
                _xPosition = (_xPosition - inWidth/2 + (inMinX + inMaxX) / 2) * multFactor;
                _yPosition = (_yPosition - inHeight/2 + (inMinY + inMaxY) / 2) * multFactor;
                // Set position
                _xPosition = (_xPosition - inWidth/2 + (inMinX + inMaxX) / 2) * multFactor;
                _yPosition = (_yPosition - inHeight/2 + (inMinY + inMaxY) / 2) * multFactor;
+               _empty = false;
        }
 
        /**
        }
 
        /**
@@ -277,4 +283,12 @@ public class MapPosition
                _xPosition += inDeltaX;
                _yPosition += inDeltaY;
        }
                _xPosition += inDeltaX;
                _yPosition += inDeltaY;
        }
+
+       /**
+        * @return true if this position has never been set
+        */
+       public boolean isEmpty()
+       {
+               return _empty;
+       }
 }
 }
index 8c2c6eed9e3f7e70ccf251ba91e01ebe4f550be9..03b364aa66ca919fe4557ae75c19fee495cf3e91 100644 (file)
@@ -210,6 +210,9 @@ public class MapTileManager implements ImageObserver
                                }
                        }
                        catch (MalformedURLException urle) {} // ignore
                                }
                        }
                        catch (MalformedURLException urle) {} // ignore
+                       catch (CacheFailure cf) {
+                               _consumer.reportCacheFailure();
+                       }
                }
                return tileImage;
        }
                }
                return tileImage;
        }
index 35a557e5556bf5582f88971bfe911276f660dc84..a2de40a78bce3d62c2e143f33ff0d92b4fdae901 100644 (file)
@@ -7,4 +7,7 @@ public interface TileConsumer
 {
        /** Let the consumer know that the tiles have been updated */
        public void tilesUpdated(boolean inIsOk);
 {
        /** Let the consumer know that the tiles have been updated */
        public void tilesUpdated(boolean inIsOk);
+
+       /** Let the consume know that a cache failure occurred */
+       public void reportCacheFailure();
 }
 }
index e12df2c1362834ccc79a69df9248012ca3631d67..03acf63bb8c824f19c88b3f2d5e7deeceae6d480 100644 (file)
@@ -109,7 +109,6 @@ function.selectsegment=Selekteer huidige segment
 function.splitsegments=Verdeel baan in segmente
 function.sewsegments=Naai baan segmente aanmekaar
 function.lookupsrtm=Kry hoogtes vanaf SRTM
 function.splitsegments=Verdeel baan in segmente
 function.sewsegments=Naai baan segmente aanmekaar
 function.lookupsrtm=Kry hoogtes vanaf SRTM
-function.downloadsrtm=Laai SRTM te\u00ebls af
 function.getwikipedia=Kry nabye Wikipedia artikels
 function.searchwikipedianames=Soek Wikiepdia volgens naam
 function.searchopencachingde=Soek OpenCaching.de
 function.getwikipedia=Kry nabye Wikipedia artikels
 function.searchwikipedianames=Soek Wikiepdia volgens naam
 function.searchopencachingde=Soek OpenCaching.de
@@ -582,7 +581,6 @@ confirm.running=Besig om te loop...
 confirm.lookupsrtm=%d hoogte waardes gevind
 confirm.downloadsrtm=%d leers afgelaai na data stoor
 confirm.downloadsrtm.1=%d leer afgelaai na data stoor
 confirm.lookupsrtm=%d hoogte waardes gevind
 confirm.downloadsrtm=%d leers afgelaai na data stoor
 confirm.downloadsrtm.1=%d leer afgelaai na data stoor
-confirm.downloadsrtm.none=Geen leers afgelaai, hulle was alreeds in the data stoor
 confirm.deletefieldvalues=Veld waardes verwyder
 confirm.audioload=Klank leers bygevoeg
 confirm.correlateaudios.single=klankgreep was gekorreleer
 confirm.deletefieldvalues=Veld waardes verwyder
 confirm.audioload=Klank leers bygevoeg
 confirm.correlateaudios.single=klankgreep was gekorreleer
index 1c2d752c63184c65f1202bd4321aebfce7d36407..50ef3a20e82baca7c89da57e4b9b2baf99b11688 100644 (file)
@@ -14,6 +14,9 @@ menu.audio=Awdio
 menu.view=Golygu
 menu.settings=Dewisiadau
 menu.help=Cymorth
 menu.view=Golygu
 menu.settings=Dewisiadau
 menu.help=Cymorth
+# Popup menu for map
+menu.map.zoomin=Chwyddo i mewn
+menu.map.zoomout=Chwyddo allan
 
 # Alt keys for menus
 altkey.menu.file=F
 
 # Alt keys for menus
 altkey.menu.file=F
@@ -35,6 +38,7 @@ function.exportpov=Cadw POV
 function.exportimage=Cadw llun
 function.charts=Siartiau
 function.distances=Pellterau
 function.exportimage=Cadw llun
 function.charts=Siartiau
 function.distances=Pellterau
+function.viewfulldetails=Manylion
 function.help=Cymorth
 function.about=Ynghylych GpsPrune
 
 function.help=Cymorth
 function.about=Ynghylych GpsPrune
 
@@ -83,7 +87,12 @@ details.track.file=Ffeil
 details.lists.audio=Awdio
 
 # Field names
 details.lists.audio=Awdio
 
 # Field names
+fieldname.latitude=Lledred
+fieldname.longitude=Hydred
+fieldname.coordinates=Cyfesurynnau
 fieldname.waypointname=Enw
 fieldname.waypointname=Enw
+fieldname.distance=Pellter
+fieldname.comment=Sylw
 
 # How to combine conditions, such as filters
 logic.and=a
 
 # How to combine conditions, such as filters
 logic.and=a
@@ -93,4 +102,3 @@ logic.or=neu
 url.googlemaps=maps.google.co.uk
 wikipedia.lang=cy
 openweathermap.lang=en
 url.googlemaps=maps.google.co.uk
 wikipedia.lang=cy
 openweathermap.lang=en
-
index 4d4b5c01fb0e74c9023d148d9ccff7d8226f3cbb..96956d9927deb5d18e4e1296c5c2f6762004d4c8 100644 (file)
@@ -106,7 +106,6 @@ function.setpaths=Nastavit cestu k program\u016fm
 function.splitsegments=Rozd\u011blit stopu na \u010d\u00e1sti
 function.sewsegments=Spojit \u010d\u00e1sti stopy
 function.lookupsrtm=Na\u010d\u00edst nadm. v\u00fd\u0161ku ze SRTM
 function.splitsegments=Rozd\u011blit stopu na \u010d\u00e1sti
 function.sewsegments=Spojit \u010d\u00e1sti stopy
 function.lookupsrtm=Na\u010d\u00edst nadm. v\u00fd\u0161ku ze SRTM
-function.downloadsrtm=St\u00e1hnout dla\u017edice ze SRTM
 function.getwikipedia=Hledat na Wikipedii podle vzd\u00e1lenosti
 function.searchwikipedianames=Hledat na Wikipedii podle jm\u00e9na
 function.searchopencachingde=Hledat na OpenCaching.de
 function.getwikipedia=Hledat na Wikipedii podle vzd\u00e1lenosti
 function.searchwikipedianames=Hledat na Wikipedii podle jm\u00e9na
 function.searchopencachingde=Hledat na OpenCaching.de
@@ -572,7 +571,6 @@ confirm.running=Prob\u00edh\u00e1 ...
 confirm.lookupsrtm=Nalezeno %d v\u00fd\u0161kov\u00fdch hodnot
 confirm.downloadsrtm=Do cache bylo sta\u017eeno %d soubor\u016f
 confirm.downloadsrtm.1=Do cache bylo sta\u017eeno %d soubor\u016f
 confirm.lookupsrtm=Nalezeno %d v\u00fd\u0161kov\u00fdch hodnot
 confirm.downloadsrtm=Do cache bylo sta\u017eeno %d soubor\u016f
 confirm.downloadsrtm.1=Do cache bylo sta\u017eeno %d soubor\u016f
-confirm.downloadsrtm.none=\u017d\u00e1dn\u00fd soubor nebylo t\u0159eba stahovat, v\u0161e u\u017e je v cachi.
 confirm.deletefieldvalues=Hodnoty pole smaz\u00e1ny
 confirm.audioload=Audionahr\u00e1vky p\u0159id\u00e1ny
 confirm.correlateaudios.single=Audionahr\u00e1vka slad\u011bna
 confirm.deletefieldvalues=Hodnoty pole smaz\u00e1ny
 confirm.audioload=Audionahr\u00e1vky p\u0159id\u00e1ny
 confirm.correlateaudios.single=Audionahr\u00e1vka slad\u011bna
@@ -582,7 +580,7 @@ confirm.correlateaudios.multi=Audionahr\u00e1vky slad\u011bny
 tip.title=Tip
 tip.useamapcache=Kdy\u017e nastav\u00edte odkl\u00e1dac\u00ed prostor na disku \u010dili cache (Nastaven\u00ed -> Ulo\u017eit mapy na disk),\nzrychl\u00ed se zobrazov\u00e1n\u00ed a zmen\u0161\u00ed se mno\u017estv\u00ed p\u0159en\u00e1\u0161en\u00fdch dat.
 tip.learntimeparams=V\u00fdsledky budou p\u0159esn\u011bj\u0161\u00ed, kdy\u017e na na\u010dten\u00e9 stopy pou\u017eijete funkci\nAnal\u00fdza stopy pro odhad \u010dasu.
 tip.title=Tip
 tip.useamapcache=Kdy\u017e nastav\u00edte odkl\u00e1dac\u00ed prostor na disku \u010dili cache (Nastaven\u00ed -> Ulo\u017eit mapy na disk),\nzrychl\u00ed se zobrazov\u00e1n\u00ed a zmen\u0161\u00ed se mno\u017estv\u00ed p\u0159en\u00e1\u0161en\u00fdch dat.
 tip.learntimeparams=V\u00fdsledky budou p\u0159esn\u011bj\u0161\u00ed, kdy\u017e na na\u010dten\u00e9 stopy pou\u017eijete funkci\nAnal\u00fdza stopy pro odhad \u010dasu.
-tip.downloadsrtm=Na\u010d\u00edt\u00e1n\u00ed nadmo\u0159sk\u00fdch v\u00fd\u0161ek bude rychlej\u0161\u00ed, pokud st\u00e1hnete dla\u017edice do cache pomoc\u00ed\nOnline -> St\u00e1hnout dla\u017edice ze SRTM.
+tip.downloadsrtm=Na\u010d\u00edt\u00e1n\u00ed nadmo\u0159sk\u00fdch v\u00fd\u0161ek bude rychlej\u0161\u00ed,\npokud st\u00e1hnete dla\u017edice do cache.
 tip.usesrtmfor3d=Tato stopa neobsahuje informaci o nadmo\u0159sk\u00e9 v\u00fd\u0161ce.\nPro na\u010dten\u00ed p\u0159ibli\u017en\u00fdch nadmo\u0159sk\u00fdch v\u00fd\u0161ek pot\u0159ebn\u00fdch\nna trojrozm\u011brn\u00e9 zobrazen\u00ed m\u016f\u017eete pou\u017e\u00edt funkce SRTM.
 tip.manuallycorrelateone=Kdy\u017e ru\u010dn\u011b slad\u00edte aspo\u0148 jednu fotografii, \u010dasov\u00fd posun bude vypo\u010d\u00edtat za v\u00e1s.
 
 tip.usesrtmfor3d=Tato stopa neobsahuje informaci o nadmo\u0159sk\u00e9 v\u00fd\u0161ce.\nPro na\u010dten\u00ed p\u0159ibli\u017en\u00fdch nadmo\u0159sk\u00fdch v\u00fd\u0161ek pot\u0159ebn\u00fdch\nna trojrozm\u011brn\u00e9 zobrazen\u00ed m\u016f\u017eete pou\u017e\u00edt funkce SRTM.
 tip.manuallycorrelateone=Kdy\u017e ru\u010dn\u011b slad\u00edte aspo\u0148 jednu fotografii, \u010dasov\u00fd posun bude vypo\u010d\u00edtat za v\u00e1s.
 
index d1f6976ac07aa891535aa05092754c87984d2d4e..ffc031dccb29d1eec26f56d75de872fd9a845972 100644 (file)
@@ -113,7 +113,6 @@ function.splitsegments=In Trackabschnitte schneiden
 function.sewsegments=Trackabschnitte zusammenf\u00fcgen
 function.createmarkerwaypoints=Wegpunkte im bestimmten Abstand kreieren
 function.lookupsrtm=H\u00f6hendaten von SRTM nachschlagen
 function.sewsegments=Trackabschnitte zusammenf\u00fcgen
 function.createmarkerwaypoints=Wegpunkte im bestimmten Abstand kreieren
 function.lookupsrtm=H\u00f6hendaten von SRTM nachschlagen
-function.downloadsrtm=SRTM Dateien herunterladen
 function.getwikipedia=Wikipediaartikel in der N\u00e4he nachschlagen
 function.searchwikipedianames=Wikipedia nach Namen durchsuchen
 function.searchosmpois=OpenStreetMap nach Punkten durchsuchen
 function.getwikipedia=Wikipediaartikel in der N\u00e4he nachschlagen
 function.searchwikipedianames=Wikipedia nach Namen durchsuchen
 function.searchosmpois=OpenStreetMap nach Punkten durchsuchen
@@ -638,7 +637,6 @@ confirm.running=In Bearbeitung ...
 confirm.lookupsrtm=Es wurden %d H\u00f6henwerte gefunden
 confirm.downloadsrtm=Es wurden %d Dateien heruntergeladen
 confirm.downloadsrtm.1=Es wurde %d Datei heruntergeladen
 confirm.lookupsrtm=Es wurden %d H\u00f6henwerte gefunden
 confirm.downloadsrtm=Es wurden %d Dateien heruntergeladen
 confirm.downloadsrtm.1=Es wurde %d Datei heruntergeladen
-confirm.downloadsrtm.none=Keine Dateien heruntergeladen, alle waren schon gespeichert.
 confirm.deletefieldvalues=Feldwerte gel\u00f6scht
 confirm.audioload=Audiodateien geladen
 confirm.correlateaudios.single=Audio wurde korreliert
 confirm.deletefieldvalues=Feldwerte gel\u00f6scht
 confirm.audioload=Audiodateien geladen
 confirm.correlateaudios.single=Audio wurde korreliert
@@ -648,7 +646,7 @@ confirm.correlateaudios.multi=Audios wurden korreliert
 tip.title=Tipp
 tip.useamapcache=Mit lokal-gespeicherten Kartenkacheln (Einstellungen -> Karten auf Festplatte speichern)\nk\u00f6nnen Sie die Darstellung beschleunigen und Netzwerkverkehr reduzieren.
 tip.learntimeparams=Wenn Sie Track -> Zeitparameter erlernen mit Ihren Tracks benutzen\ndann werden die berechneten Werte genauer.
 tip.title=Tipp
 tip.useamapcache=Mit lokal-gespeicherten Kartenkacheln (Einstellungen -> Karten auf Festplatte speichern)\nk\u00f6nnen Sie die Darstellung beschleunigen und Netzwerkverkehr reduzieren.
 tip.learntimeparams=Wenn Sie Track -> Zeitparameter erlernen mit Ihren Tracks benutzen\ndann werden die berechneten Werte genauer.
-tip.downloadsrtm=Sie k\u00f6nnen diese Funktion beschleunigen indem Sie\nOnline -> SRTM Dateien herunterladen aufrufen\num die Daten lokal zu speichern.
+tip.downloadsrtm=Sie k\u00f6nnen diese Funktion beschleunigen indem Sie\ndie SRTM Daten lokal im Kartenspeicher speichern.
 tip.usesrtmfor3d=Dieser Track hat keine H\u00f6heninformation.\nSie k\u00f6nnen die SRTM Funktionen verwenden, um\nH\u00f6henwerte abzusch\u00e4tzen.
 tip.manuallycorrelateone=Mit mindestens einem manuell verbundenen Element kann die Zeitdifferenz automatisch berechnet werden.
 
 tip.usesrtmfor3d=Dieser Track hat keine H\u00f6heninformation.\nSie k\u00f6nnen die SRTM Funktionen verwenden, um\nH\u00f6henwerte abzusch\u00e4tzen.
 tip.manuallycorrelateone=Mit mindestens einem manuell verbundenen Element kann die Zeitdifferenz automatisch berechnet werden.
 
index e2172ee69f5b430879f3298ef20a39553ff2d75c..555390e08ea5d6d4d161b88ff7d977146fb6373b 100644 (file)
@@ -111,7 +111,6 @@ function.splitsegments=In Tracksegm\u00e4nte schniide
 function.sewsegments=Tracksegm\u00e4nte z\u00e4mef\u00fcge
 function.createmarkerwaypoints=Waypoints inem bestimmten Abstand kreiere
 function.lookupsrtm=H\u00f6hendate vonem SRTM hole
 function.sewsegments=Tracksegm\u00e4nte z\u00e4mef\u00fcge
 function.createmarkerwaypoints=Waypoints inem bestimmten Abstand kreiere
 function.lookupsrtm=H\u00f6hendate vonem SRTM hole
-function.downloadsrtm=SRTM Files abalade
 function.getwikipedia=Im Wikipedia in dr N\u00f6chi naaluege
 function.searchwikipedianames=Wikipedia nachem Namen durasueche
 function.searchosmpois=OpenStreetMap na P\u00fcnkt durasueche
 function.getwikipedia=Im Wikipedia in dr N\u00f6chi naaluege
 function.searchwikipedianames=Wikipedia nachem Namen durasueche
 function.searchosmpois=OpenStreetMap na P\u00fcnkt durasueche
@@ -633,7 +632,6 @@ confirm.running=Am Laufe ...
 confirm.lookupsrtm=Es sin %d H\u00f6henwerte gfunde
 confirm.downloadsrtm=Es sin %d Files abeglade
 confirm.downloadsrtm.1=Sisch %d File abeglade
 confirm.lookupsrtm=Es sin %d H\u00f6henwerte gfunde
 confirm.downloadsrtm=Es sin %d Files abeglade
 confirm.downloadsrtm.1=Sisch %d File abeglade
-confirm.downloadsrtm.none=Kei Files abeglade, die sin alli scho da gsi.
 confirm.deletefieldvalues=Feldw\u00e4rte gl\u00f6scht worde
 confirm.audioload=Audiofiles glade worde
 confirm.media.removed=entf\u00e4rnt
 confirm.deletefieldvalues=Feldw\u00e4rte gl\u00f6scht worde
 confirm.audioload=Audiofiles glade worde
 confirm.media.removed=entf\u00e4rnt
@@ -644,7 +642,7 @@ confirm.correlateaudios.multi=Audiofiles sin korreliert worde
 tip.title=Tipp
 tip.useamapcache=Mit lokali Kartekachle (Iistellige -> Karten uufem Disk speichere)\nk\u00f6nnet Sie d Darstellig bschleunige und Netzwerkverkehr reduziere.
 tip.learntimeparams=Wenn Sie Track -> Ziitparameter erlerne mit Ihren Tracks benutze\ndann werdet d ber\u00e4chneti Werte gnauer.
 tip.title=Tipp
 tip.useamapcache=Mit lokali Kartekachle (Iistellige -> Karten uufem Disk speichere)\nk\u00f6nnet Sie d Darstellig bschleunige und Netzwerkverkehr reduziere.
 tip.learntimeparams=Wenn Sie Track -> Ziitparameter erlerne mit Ihren Tracks benutze\ndann werdet d ber\u00e4chneti Werte gnauer.
-tip.downloadsrtm=Sie k\u00f6nnet d Funktion beschleunige indem Sie\nOnline -> SRTM Files abalade uufrufe\num d Date lokal z'speichere.
+tip.downloadsrtm=Sie k\u00f6nnet d Funktion beschluunige\nindem Sie Kartekachle lokal speichere\nund d H\u00f6chidate au d\u00f6t speichere.
 tip.usesrtmfor3d=Dere Track h\u00e4t kei H\u00f6chiinformation.\nSie k\u00f6nnet d SRTM Funktione verw\u00e4nde, um\nH\u00f6chiwerte abz'sch\u00e4tze.
 tip.manuallycorrelateone=Mit mindeschtens einem verbundenen Elem\u00e4nt chann die Ziitdiffer\u00e4nz automatisch ber\u00e4chnet werd\u00e4.
 
 tip.usesrtmfor3d=Dere Track h\u00e4t kei H\u00f6chiinformation.\nSie k\u00f6nnet d SRTM Funktione verw\u00e4nde, um\nH\u00f6chiwerte abz'sch\u00e4tze.
 tip.manuallycorrelateone=Mit mindeschtens einem verbundenen Elem\u00e4nt chann die Ziitdiffer\u00e4nz automatisch ber\u00e4chnet werd\u00e4.
 
index dbc4be4a59d3cff49a9dbea409a07beab1dca1cc..ad0d8db8e14083b34d5f49754b007e3b5e530460 100644 (file)
@@ -113,7 +113,6 @@ function.splitsegments=Split track into segments
 function.sewsegments=Sew track segments together
 function.createmarkerwaypoints=Create marker waypoints
 function.lookupsrtm=Get altitudes from SRTM
 function.sewsegments=Sew track segments together
 function.createmarkerwaypoints=Create marker waypoints
 function.lookupsrtm=Get altitudes from SRTM
-function.downloadsrtm=Download SRTM tiles
 function.getwikipedia=Get nearby Wikipedia articles
 function.searchwikipedianames=Search Wikipedia by name
 function.searchosmpois=Get nearby OSM points
 function.getwikipedia=Get nearby Wikipedia articles
 function.searchwikipedianames=Search Wikipedia by name
 function.searchosmpois=Get nearby OSM points
@@ -553,6 +552,7 @@ dialog.displaysettings.size.large=Large
 dialog.displaysettings.windowstyle=Window style (requires restart)
 dialog.displaysettings.windowstyle.default=Default
 dialog.displaysettings.windowstyle.nimbus=Nimbus
 dialog.displaysettings.windowstyle=Window style (requires restart)
 dialog.displaysettings.windowstyle.default=Default
 dialog.displaysettings.windowstyle.nimbus=Nimbus
+dialog.displaysettings.windowstyle.gtk=GTK
 dialog.downloadosm.desc=Confirm to download the raw OSM data for the specified area:
 dialog.searchwikipedianames.search=Search for:
 dialog.weather.location=Location
 dialog.downloadosm.desc=Confirm to download the raw OSM data for the specified area:
 dialog.searchwikipedianames.search=Search for:
 dialog.weather.location=Location
@@ -641,7 +641,6 @@ confirm.running=Running ...
 confirm.lookupsrtm=Found %d altitude values
 confirm.downloadsrtm=Downloaded %d files to the cache
 confirm.downloadsrtm.1=Downloaded %d file to the cache
 confirm.lookupsrtm=Found %d altitude values
 confirm.downloadsrtm=Downloaded %d files to the cache
 confirm.downloadsrtm.1=Downloaded %d file to the cache
-confirm.downloadsrtm.none=No files downloaded, they were already in the cache
 confirm.deletefieldvalues=Field values deleted
 confirm.audioload=Audio files added
 confirm.correlateaudios.single=audio was correlated
 confirm.deletefieldvalues=Field values deleted
 confirm.audioload=Audio files added
 confirm.correlateaudios.single=audio was correlated
@@ -651,7 +650,7 @@ confirm.correlateaudios.multi=audios were correlated
 tip.title=Tip
 tip.useamapcache=By setting up a disk cache (Settings -> Save maps to disk)\nyou can speed up the display and reduce network traffic.
 tip.learntimeparams=The results will be more accurate if you use\nTrack -> Learn time estimation parameters\non your recorded tracks.
 tip.title=Tip
 tip.useamapcache=By setting up a disk cache (Settings -> Save maps to disk)\nyou can speed up the display and reduce network traffic.
 tip.learntimeparams=The results will be more accurate if you use\nTrack -> Learn time estimation parameters\non your recorded tracks.
-tip.downloadsrtm=You can speed this up by calling\nOnline -> Download SRTM tiles\nto save the data in your map cache.
+tip.downloadsrtm=You can speed this up by setting up a disk cache\nto save the SRTM data locally.
 tip.usesrtmfor3d=This track doesn't have altitudes.\nYou can use the SRTM functions to get approximate\naltitudes for the 3d view.
 tip.manuallycorrelateone=By manually connecting at least one item, the time offset can be calculated for you.
 
 tip.usesrtmfor3d=This track doesn't have altitudes.\nYou can use the SRTM functions to get approximate\naltitudes for the 3d view.
 tip.manuallycorrelateone=By manually connecting at least one item, the time offset can be calculated for you.
 
index e4676f684a2c61730722ab78fbdd5a6418a22dd8..6d6b76ed4e65242a778060e5f071a491a8234f6b 100644 (file)
@@ -12,7 +12,6 @@ menu.track=Track
 menu.track.undo=Deshacer
 menu.track.clearundo=Despejar la lista de deshacer
 menu.track.markrectangle=Marcar puntos dentro de un rect\u00e1ngulo
 menu.track.undo=Deshacer
 menu.track.clearundo=Despejar la lista de deshacer
 menu.track.markrectangle=Marcar puntos dentro de un rect\u00e1ngulo
-function.deletemarked=Eliminar puntos marcados
 menu.range=Rango
 menu.range.all=Seleccionar todo
 menu.range.none=No seleccionar nada
 menu.range=Rango
 menu.range.all=Seleccionar todo
 menu.range.none=No seleccionar nada
@@ -36,9 +35,10 @@ menu.view.browser.openstreetmap=Openstreetmap
 menu.view.browser.mapquest=Mapquest
 menu.view.browser.yahoo=Mapas Yahoo
 menu.view.browser.bing=Mapas Bing
 menu.view.browser.mapquest=Mapquest
 menu.view.browser.yahoo=Mapas Yahoo
 menu.view.browser.bing=Mapas Bing
+menu.view.browser.inlinemap=Mapa en l\u00ednea
+menu.view.browser.graphhopper=GraphHopper
 menu.settings=Preferencias
 menu.settings.onlinemode=Cargar mapas de Internet
 menu.settings=Preferencias
 menu.settings.onlinemode=Cargar mapas de Internet
-dialog.displaysettings.antialias=Usar antialiasing
 menu.settings.autosave=Auto Guardar
 menu.help=Ayuda
 
 menu.settings.autosave=Auto Guardar
 menu.help=Ayuda
 
@@ -87,6 +87,7 @@ function.exportpov=Exportar POV
 function.exportimage=Exportar imagen
 function.editwaypointname=Editar nombre de waypoint
 function.compress=Comprimir track
 function.exportimage=Exportar imagen
 function.editwaypointname=Editar nombre de waypoint
 function.compress=Comprimir track
+function.deletemarked=Eliminar puntos marcados
 function.marklifts=Marcar telef\u00e9ricos
 function.deleterange=Eliminar rango
 function.croptrack=Truncar track
 function.marklifts=Marcar telef\u00e9ricos
 function.deleterange=Eliminar rango
 function.croptrack=Truncar track
@@ -98,7 +99,9 @@ function.rearrangewaypoints=Reorganizar waypoints
 function.convertnamestotimes=Convertir los nombres de los "waypoints" a tiempo
 function.deletefieldvalues=Borrar valores del campo
 function.findwaypoint=Buscar waypoint
 function.convertnamestotimes=Convertir los nombres de los "waypoints" a tiempo
 function.deletefieldvalues=Borrar valores del campo
 function.findwaypoint=Buscar waypoint
-function.pastecoordinates=Insertar nuevas coordenadas
+function.pastecoordinates=Insertar coordenadas de un nuevo punto
+function.pastecoordinatelist=Ingrese lista de coordenadas
+function.enterpluscode=Insertar c\u00f3digo plus
 function.charts=Diagramas
 function.show3d=Mostrar en 3-D
 function.distances=Distancias
 function.charts=Diagramas
 function.show3d=Mostrar en 3-D
 function.distances=Distancias
@@ -111,8 +114,8 @@ function.setpaths=Configurar rutas del programas
 function.selectsegment=Seleccionar segmento actual
 function.splitsegments=Segmentar el track
 function.sewsegments=Ensamblar los segmentos
 function.selectsegment=Seleccionar segmento actual
 function.splitsegments=Segmentar el track
 function.sewsegments=Ensamblar los segmentos
+function.createmarkerwaypoints=Crear waypoints marcadores
 function.lookupsrtm=Obtener altitudes de SRTM
 function.lookupsrtm=Obtener altitudes de SRTM
-function.downloadsrtm=Descargar datos de SRTM
 function.getwikipedia=Obtener art\u00edculos de Wikipedia cercanos
 function.searchwikipedianames=Buscar en Wikipedia por nombre
 function.searchosmpois=Buscar en OSM cercanos
 function.getwikipedia=Obtener art\u00edculos de Wikipedia cercanos
 function.searchwikipedianames=Buscar en Wikipedia por nombre
 function.searchosmpois=Buscar en OSM cercanos
@@ -120,7 +123,9 @@ function.searchopencachingde=Buscar en OpenCaching.de
 function.mapillary=Buscar en Mapillary
 function.downloadosm=Descargar datos OSM del \u00e1rea
 function.duplicatepoint=Duplicar punto
 function.mapillary=Buscar en Mapillary
 function.downloadosm=Descargar datos OSM del \u00e1rea
 function.duplicatepoint=Duplicar punto
+function.projectpoint=Proyectar punto
 function.setcolours=Establecer color
 function.setcolours=Establecer color
+function.setdisplaysettings=Establecer opciones para la visualizaci\u00f3n
 function.setlanguage=Establecer lenguaje
 function.connecttopoint=Conectar con punto
 function.disconnectfrompoint=Desconectar de punto
 function.setlanguage=Establecer lenguaje
 function.connecttopoint=Conectar con punto
 function.disconnectfrompoint=Desconectar de punto
@@ -145,6 +150,7 @@ function.diskcache=Guardar mapas en disco
 function.managetilecache=Administrar cache de mapas
 function.getweatherforecast=Obtener pron\u00f3stico del tiempo
 function.setaltitudetolerance=Establecer la tolerancia de altitud
 function.managetilecache=Administrar cache de mapas
 function.getweatherforecast=Obtener pron\u00f3stico del tiempo
 function.setaltitudetolerance=Establecer la tolerancia de altitud
+function.selecttimezone=Seleccionar la zona horaria
 
 ## Dialogs
 dialog.exit.confirm.title=Salir de GpsPrune
 
 ## Dialogs
 dialog.exit.confirm.title=Salir de GpsPrune
@@ -244,10 +250,6 @@ dialog.exportgpx.copysource=Copiar la fuente
 dialog.exportgpx.encoding=Codificaci\u00f3n
 dialog.exportgpx.encoding.system=Sistema
 dialog.exportgpx.encoding.utf8=UTF-8
 dialog.exportgpx.encoding=Codificaci\u00f3n
 dialog.exportgpx.encoding.system=Sistema
 dialog.exportgpx.encoding.utf8=UTF-8
-dialog.3d.useterrain=Terreno
-dialog.3d.terraingridsize=Dimensi\u00f3n de la cuadr\u00edcula
-dialog.exportpov.cannotmakebaseimage=Fallo al guardar la imagen
-dialog.exportpov.baseimage=Imagen de mapa
 dialog.exportpov.text=Introduca los par\u00e1metros para exportar
 dialog.exportpov.font=Fuente
 dialog.exportpov.camerax=C\u00e1mara X
 dialog.exportpov.text=Introduca los par\u00e1metros para exportar
 dialog.exportpov.font=Fuente
 dialog.exportpov.camerax=C\u00e1mara X
@@ -268,6 +270,7 @@ dialog.baseimage.zoom=Zoom
 dialog.baseimage.incomplete=Imagen incompleta
 dialog.baseimage.tiles=Recuadros
 dialog.baseimage.size=Tama\u00f1o de la imagen
 dialog.baseimage.incomplete=Imagen incompleta
 dialog.baseimage.tiles=Recuadros
 dialog.baseimage.size=Tama\u00f1o de la imagen
+dialog.exportimage.noimagepossible=Las im\u00e1genes de mapas deben ser guardadas para poder usarlas para una exportaci\u00f3n.
 dialog.exportimage.drawtrack=Dibujar track
 dialog.exportimage.drawtrackpoints=Dibujar puntos del track
 dialog.exportimage.textscalepercent=Agrandamiento del texto (%)
 dialog.exportimage.drawtrack=Dibujar track
 dialog.exportimage.drawtrackpoints=Dibujar puntos del track
 dialog.exportimage.textscalepercent=Agrandamiento del texto (%)
@@ -345,8 +348,11 @@ dialog.estimatetime.parameters.timefor=Duraci\u00f3n para
 dialog.estimatetime.results=Resultados
 dialog.estimatetime.results.estimatedtime=Duraci\u00f3n estimada
 dialog.estimatetime.results.actualtime=Duraci\u00f3n real
 dialog.estimatetime.results=Resultados
 dialog.estimatetime.results.estimatedtime=Duraci\u00f3n estimada
 dialog.estimatetime.results.actualtime=Duraci\u00f3n real
+dialog.estimatetime.error.nodistance=Las estimaciones de tiempo necesitan puntos de v\u00eda conectados, para dar una distancia
 dialog.estimatetime.error.noaltitudes=Los rangos seleccionados no contienen altitudes
 dialog.estimatetime.error.noaltitudes=Los rangos seleccionados no contienen altitudes
+dialog.learnestimationparams.intro=Estos son los par\u00e1metros calculados a partir del track
 dialog.learnestimationparams.averageerror=Error medio
 dialog.learnestimationparams.averageerror=Error medio
+dialog.learnestimationparams.combine=Estos par\u00e1metros se pueden combinar con los valores actuales
 dialog.learnestimationparams.combinedresults=Resultados combinados
 dialog.learnestimationparams.weight.100pccurrent=Mantener datos actuales
 dialog.learnestimationparams.weight.current=actuales
 dialog.learnestimationparams.combinedresults=Resultados combinados
 dialog.learnestimationparams.weight.100pccurrent=Mantener datos actuales
 dialog.learnestimationparams.weight.current=actuales
@@ -407,8 +413,8 @@ dialog.correlate.timestamp.end=Final
 dialog.correlate.audioselect.intro=Seleccione uno de estos audios correlacionados para usarlo como margen temporal.
 dialog.correlate.select.audioname=Nombre del audio
 dialog.correlate.select.audiolater=Audio m\u00e1s adelante
 dialog.correlate.audioselect.intro=Seleccione uno de estos audios correlacionados para usarlo como margen temporal.
 dialog.correlate.select.audioname=Nombre del audio
 dialog.correlate.select.audiolater=Audio m\u00e1s adelante
-dialog.rearrangephotos.desc=Seleccionar el destino y orden de los puntos de las fotos
 dialog.rearrangewaypoints.desc=Seleccionar el destino y orden de los waypoints
 dialog.rearrangewaypoints.desc=Seleccionar el destino y orden de los waypoints
+dialog.rearrangephotos.desc=Seleccionar el destino y orden de los puntos de las fotos
 dialog.rearrange.tostart=Mover al comienzo
 dialog.rearrange.toend=Mover al final
 dialog.rearrange.tonearest=Mover al punto m\u00e1s pr\u00f3ximo
 dialog.rearrange.tostart=Mover al comienzo
 dialog.rearrange.toend=Mover al final
 dialog.rearrange.tonearest=Mover al punto m\u00e1s pr\u00f3ximo
@@ -432,6 +438,10 @@ dialog.deletemarked.nonefound=Ning\u00fan punto eliminado
 dialog.pastecoordinates.desc=Ingresar o pegar las coordenadas aqu\u00ed
 dialog.pastecoordinates.coords=Coordenadas
 dialog.pastecoordinates.nothingfound=Por favor verificar las coordenadas e intentar nuevamente
 dialog.pastecoordinates.desc=Ingresar o pegar las coordenadas aqu\u00ed
 dialog.pastecoordinates.coords=Coordenadas
 dialog.pastecoordinates.nothingfound=Por favor verificar las coordenadas e intentar nuevamente
+dialog.pastecoordinatelist.desc=Introducir las coordenadas de los nuevos puntos con un punto por l\u00ednea
+dialog.pluscode.desc=Introduzca o pegue el c\u00f3digo plus aqu\u00ed
+dialog.pluscode.code=C\u00f3digo plus
+dialog.pluscode.nothingfound=Por favor, compruebe el c\u00f3digo e int\u00e9ntelo de nuevo
 dialog.help.help=Por favor, ver\n https://gpsprune.activityworkshop.net/\npara m\u00e1s informaci\u00f3n y gu\u00edas del usuario.
 dialog.about.version=Versi\u00f3n
 dialog.about.build=Construcci\u00f3n
 dialog.help.help=Por favor, ver\n https://gpsprune.activityworkshop.net/\npara m\u00e1s informaci\u00f3n y gu\u00edas del usuario.
 dialog.about.version=Versi\u00f3n
 dialog.about.build=Construcci\u00f3n
@@ -530,12 +540,20 @@ dialog.diskcache.deleted=Borrado %d archivos del cache
 dialog.deletefieldvalues.intro=Seleccionar el campo a eliminar para el rango actual
 dialog.deletefieldvalues.nofields=No hay campos a eliminar para el rango actual
 dialog.displaysettings.linewidth=Anchura de las l\u00edneas para los recorridos (1-4)
 dialog.deletefieldvalues.intro=Seleccionar el campo a eliminar para el rango actual
 dialog.deletefieldvalues.nofields=No hay campos a eliminar para el rango actual
 dialog.displaysettings.linewidth=Anchura de las l\u00edneas para los recorridos (1-4)
+dialog.displaysettings.antialias=Usar antialiasing
 dialog.displaysettings.waypointicons=Iconos de los waypoints
 dialog.displaysettings.waypointicons=Iconos de los waypoints
+dialog.displaysettings.wpicon.default=Por defecto
+dialog.displaysettings.wpicon.ringpt=Marcador redondeado
 dialog.displaysettings.wpicon.plectrum=Plectro
 dialog.displaysettings.wpicon.ring=Anillo
 dialog.displaysettings.wpicon.plectrum=Plectro
 dialog.displaysettings.wpicon.ring=Anillo
+dialog.displaysettings.wpicon.pin=Chincheta
 dialog.displaysettings.size.small=Peque\u00f1os
 dialog.displaysettings.size.medium=Medianos
 dialog.displaysettings.size.large=Grandes
 dialog.displaysettings.size.small=Peque\u00f1os
 dialog.displaysettings.size.medium=Medianos
 dialog.displaysettings.size.large=Grandes
+dialog.displaysettings.windowstyle=Estilo de la ventana
+dialog.displaysettings.windowstyle.default=Por defecto
+dialog.displaysettings.windowstyle.nimbus=Nimbus
+dialog.displaysettings.windowstyle.gtk=GTK
 dialog.downloadosm.desc=Confirmar la descarga de datos en bruto de OSM para el \u00e1rea especificada.
 dialog.searchwikipedianames.search=Buscar:
 dialog.weather.location=Localidad
 dialog.downloadosm.desc=Confirmar la descarga de datos en bruto de OSM para el \u00e1rea especificada.
 dialog.searchwikipedianames.search=Buscar:
 dialog.weather.location=Localidad
@@ -559,17 +577,31 @@ dialog.weather.day.sunday=Domingo
 dialog.weather.wind=Viento
 dialog.weather.temp=Temp
 dialog.weather.humidity=Humedad
 dialog.weather.wind=Viento
 dialog.weather.temp=Temp
 dialog.weather.humidity=Humedad
+dialog.weather.creditnotice=Estos datos est\u00e1n disponibles en openweathermap.org. Su sitio web tiene m\u00e1s detalles.
+dialog.deletebydate.onlyonedate=Todos los puntos se registraron en la misma fecha.
+dialog.deletebydate.intro=Para cada fecha del track, puede elegir entre borrar o mantener los puntos
 dialog.deletebydate.nodate=Sin marcas de tiempo
 dialog.deletebydate.column.keep=Mantener
 dialog.deletebydate.column.delete=Eliminar
 dialog.setaltitudetolerance.text.metres=Limite (en metros) por debajo de cual peque\u00f1as subidas o bajadas ser\u00e1n ignoradas
 dialog.setaltitudetolerance.text.feet=Limite (en pies) por debajo de cual peque\u00f1as subidas o bajadas ser\u00e1n ignoradas
 dialog.deletebydate.nodate=Sin marcas de tiempo
 dialog.deletebydate.column.keep=Mantener
 dialog.deletebydate.column.delete=Eliminar
 dialog.setaltitudetolerance.text.metres=Limite (en metros) por debajo de cual peque\u00f1as subidas o bajadas ser\u00e1n ignoradas
 dialog.setaltitudetolerance.text.feet=Limite (en pies) por debajo de cual peque\u00f1as subidas o bajadas ser\u00e1n ignoradas
+dialog.settimezone.intro=Aqu\u00ed se puede seleccionar la zona horaria para mostrar las marcas de tiempo de los puntos
 dialog.settimezone.system=Zona horaria del sistema
 dialog.settimezone.system=Zona horaria del sistema
+dialog.settimezone.custom=Usar la siguiente zona horaria:
+dialog.settimezone.list.toomany=Demasiados por elegir
+dialog.settimezone.selectedzone=Zona horaria seleccionada
+dialog.settimezone.offsetfromutc=Compensaci\u00f3n respecto a UTC
 dialog.autoplay.duration=Duraci\u00f3n (seg)
 dialog.autoplay.usetimestamps=Usar informaci\u00f3n de tiempo
 dialog.autoplay.rewind=Rebobinar
 dialog.autoplay.pause=Pausar
 dialog.autoplay.play=Jugar
 dialog.autoplay.duration=Duraci\u00f3n (seg)
 dialog.autoplay.usetimestamps=Usar informaci\u00f3n de tiempo
 dialog.autoplay.rewind=Rebobinar
 dialog.autoplay.pause=Pausar
 dialog.autoplay.play=Jugar
+dialog.markers.halves=Puntos medios
+dialog.markers.half.distance=Media distancia
+dialog.markers.half.climb=Mitad de cuesta
+dialog.markers.half.descent=Mitad de descenso
+dialog.projectpoint.desc=Introduzca la direcci\u00f3n y la distancia para proyectar este punto
+dialog.projectpoint.bearing=Azimut (grados desde el Norte)
 
 ## 3d window
 dialog.3d.title=GpsPrune vista 3-D
 
 ## 3d window
 dialog.3d.title=GpsPrune vista 3-D
@@ -617,6 +649,10 @@ confirm.correlateaudios.multi=Los audios fueron correlacionados
 
 ## Tips, shown just once when appropriate
 tip.title=Sugerencia
 
 ## Tips, shown just once when appropriate
 tip.title=Sugerencia
+tip.useamapcache=Configurando una cach\u00e9 de disco (Preferencias -> Guardar mapas en disco)\npuede acelerar la visualizaci\u00f3n y reducir el tr\u00e1fico de la red.
+tip.learntimeparams=Los resultados ser\u00e1n m\u00e1s precisos si utiliza\nTrack -> Aprender par\u00e1metros de estimaci\u00f3n de tiempo\nen sus pistas grabadas.
+tip.downloadsrtm=Puede acelerar esto si guarda los datos en su cach\u00e9 de mapas.
+tip.usesrtmfor3d=Esta pista no tiene altitudes.\nPuede utilizar las funciones del SRTM\npara obtener altitudes aproximadas para la vista 3d.
 tip.manuallycorrelateone=Correlacionando al menos una foto manualmente, el margen de tiempo se calcula autom\u00e1ticamente.
 
 ## Buttons
 tip.manuallycorrelateone=Correlacionando al menos una foto manualmente, el margen de tiempo se calcula autom\u00e1ticamente.
 
 ## Buttons
@@ -730,6 +766,7 @@ fieldname.duration=Duraci\u00f3n
 fieldname.speed=Velocidad
 fieldname.verticalspeed=Velocidad vertical
 fieldname.description=Descripci\u00f3n
 fieldname.speed=Velocidad
 fieldname.verticalspeed=Velocidad vertical
 fieldname.description=Descripci\u00f3n
+fieldname.comment=Comentario
 fieldname.mediafilename=Archivo
 
 ## Measurement units
 fieldname.mediafilename=Archivo
 
 ## Measurement units
@@ -829,6 +866,7 @@ error.load.nopoints=No se encuentra ninguna informaci\u00f3n de coordenadas en e
 error.load.unknownxml=Formato xml no reconocido:
 error.load.noxmlinzip=No se encuentra ning\u00fan archivo xml en el archivo zip
 error.load.othererror=Fallo al cargar datos:
 error.load.unknownxml=Formato xml no reconocido:
 error.load.noxmlinzip=No se encuentra ning\u00fan archivo xml en el archivo zip
 error.load.othererror=Fallo al cargar datos:
+error.load.nopointsintext=No se encuentra ninguna informaci\u00f3n de coordenadas
 error.jpegload.dialogtitle=Error cargando fotos
 error.jpegload.nofilesfound=No se encuentra ning\u00fan archivo
 error.jpegload.nojpegsfound=No se encuentra ning\u00fan archivo jpeg
 error.jpegload.dialogtitle=Error cargando fotos
 error.jpegload.nofilesfound=No se encuentra ning\u00fan archivo
 error.jpegload.nojpegsfound=No se encuentra ning\u00fan archivo jpeg
@@ -856,32 +894,7 @@ error.playaudiofailed=Fallo reproduciendo archivo de audio
 error.cache.notthere=No se encontr\u00f3 la carpeta del cache de recuadros
 error.cache.empty=La carpeta del cache de recuadros esta vac\u00edo
 error.cache.cannotdelete=No se pudieron borrar recuadros
 error.cache.notthere=No se encontr\u00f3 la carpeta del cache de recuadros
 error.cache.empty=La carpeta del cache de recuadros esta vac\u00edo
 error.cache.cannotdelete=No se pudieron borrar recuadros
+error.learnestimationparams.failed=No puede aprender los par\u00e1metros de esta pista.\nIntente cargar m\u00e1s pistas.
 error.tracksplit.nosplit=Imposible segmentar el track
 error.downloadsrtm.nocache=Imposible guardar los archivos.\nPor favor, compruebe el cache.
 error.sewsegments.nothingdone=Imposible ensamblar los segmentos.\nEl track tiene ahora %d segmentos.
 error.tracksplit.nosplit=Imposible segmentar el track
 error.downloadsrtm.nocache=Imposible guardar los archivos.\nPor favor, compruebe el cache.
 error.sewsegments.nothingdone=Imposible ensamblar los segmentos.\nEl track tiene ahora %d segmentos.
-
-dialog.exportimage.noimagepossible=Las im\u00e1genes de mapas deben ser guardadas para poder usarlas para una exportaci\u00f3n.
-dialog.estimatetime.error.nodistance=Las estimaciones de tiempo necesitan puntos de v\u00eda conectados, para dar una distancia
-dialog.learnestimationparams.intro=Estos son los par\u00e1metros calculados a partir del track
-dialog.learnestimationparams.combine=Estos par\u00e1metros se pueden combinar con los valores actuales
-dialog.weather.creditnotice=Estos datos est\u00e1n disponibles en openweathermap.org. Su sitio web tiene m\u00e1s detalles.
-dialog.deletebydate.onlyonedate=Todos los puntos se registraron en la misma fecha.
-dialog.deletebydate.intro=Para cada fecha del track, puede elegir entre borrar o mantener los puntos
-confirm.downloadsrtm.none=No se descargaron archivos, ya estaban en la cache
-tip.useamapcache=Configurando una cach\u00e9 de disco (Preferencias -> Guardar mapas en disco)\npuede acelerar la visualizaci\u00f3n y reducir el tr\u00e1fico de la red.
-tip.learntimeparams=Los resultados ser\u00e1n m\u00e1s precisos si utiliza\nTrack -> Aprender par\u00e1metros de estimaci\u00f3n de tiempo\nen sus pistas grabadas.
-tip.downloadsrtm=Puede acelerar esto si llama a\nOnline -> Descargar datos de SRTM\npara guardar los datos en su cach\u00e9 de mapas.
-tip.usesrtmfor3d=Esta pista no tiene altitudes.\nPuede utilizar las funciones del SRTM\npara obtener altitudes aproximadas para la vista 3d.
-error.learnestimationparams.failed=No puede aprender los par\u00e1metros de esta pista.\nIntente cargar m\u00e1s pistas.
-function.enterpluscode=Insertar c\u00f3digo plus
-function.projectpoint=Proyectar punto
-dialog.pastecoordinatelist.desc=Introducir las coordenadas de los nuevos puntos con un punto por l\u00ednea
-dialog.pluscode.desc=Introduzca o pegue el c\u00f3digo plus aqu\u00ed
-dialog.pluscode.code=C\u00f3digo plus
-dialog.pluscode.nothingfound=Por favor, compruebe el c\u00f3digo e int\u00e9ntelo de nuevo
-dialog.displaysettings.windowstyle=Estilo de la ventana
-dialog.projectpoint.desc=Introduzca la direcci\u00f3n y la distancia para proyectar este punto
-dialog.projectpoint.bearing=Azimut (grados desde el Norte)
-fieldname.comment=Comentario
-dialog.settimezone.selectedzone=Zona horaria seleccionada
-function.selecttimezone=Seleccionar la zona horaria
index 8b54aa65bc4c0993229655f5c790446b4344042c..226a84b7a9ad9ae819177a2ee2d073d627f5d711 100644 (file)
@@ -108,7 +108,6 @@ function.splitsegments=Pilko reitti lohkoihin
 function.sewsegments=Yhdist\u00e4 reittilohkot
 function.createmarkerwaypoints=Luo merkityt kohdepisteet
 function.lookupsrtm=Lue korkeysk\u00e4yr\u00e4t SRTM:st\u00e4
 function.sewsegments=Yhdist\u00e4 reittilohkot
 function.createmarkerwaypoints=Luo merkityt kohdepisteet
 function.lookupsrtm=Lue korkeysk\u00e4yr\u00e4t SRTM:st\u00e4
-function.downloadsrtm=Lataa SRTM-palat
 function.getwikipedia=Hae likeiset Wikipedia-artikkelit
 function.searchwikipedianames=Etsi nimell\u00e4 Wikipedia:sta...
 function.searchosmpois=Etsi l\u00e4heiset OSM-pisteet
 function.getwikipedia=Hae likeiset Wikipedia-artikkelit
 function.searchwikipedianames=Etsi nimell\u00e4 Wikipedia:sta...
 function.searchosmpois=Etsi l\u00e4heiset OSM-pisteet
@@ -596,7 +595,6 @@ confirm.running=Running ...
 confirm.lookupsrtm=L\u00f6ytyi %d korkeusarvoa
 confirm.downloadsrtm=Ladattu %d tiedostoa v\u00e4limuistiin
 confirm.downloadsrtm.1=Ladattu %d tiedosto v\u00e4limuistiin
 confirm.lookupsrtm=L\u00f6ytyi %d korkeusarvoa
 confirm.downloadsrtm=Ladattu %d tiedostoa v\u00e4limuistiin
 confirm.downloadsrtm.1=Ladattu %d tiedosto v\u00e4limuistiin
-confirm.downloadsrtm.none=Tiedostoja ei ladattu, koska ne olivat jo v\u00e4limuistissa
 confirm.deletefieldvalues=Kentt\u00e4arvot poistettu
 confirm.audioload=\u00c4\u00e4nitiedostot lis\u00e4tty
 confirm.correlateaudios.single=\u00e4\u00e4ni oli korreloitu
 confirm.deletefieldvalues=Kentt\u00e4arvot poistettu
 confirm.audioload=\u00c4\u00e4nitiedostot lis\u00e4tty
 confirm.correlateaudios.single=\u00e4\u00e4ni oli korreloitu
@@ -606,7 +604,6 @@ confirm.correlateaudios.multi=\u00e4\u00e4net olivat korreloidut
 tip.title=Vihje
 tip.useamapcache=Jos tallennutat karttapalat v\u00e4limuistina toimivaan hakemistoon levylle\n    Valikko: Asetukset -> Talleta kartat hakemistoon,\nn\u00e4yt\u00f6n toiminta nopeutuu ja verkkoliikenne v\u00e4hentyy.
 tip.learntimeparams=Tuloset voivat olla tarkempia, jos suoritutat toiminnon\n    Valikko: Reitti -> Opi aika-arvion parametrit\ntallentamillesi reiteille.
 tip.title=Vihje
 tip.useamapcache=Jos tallennutat karttapalat v\u00e4limuistina toimivaan hakemistoon levylle\n    Valikko: Asetukset -> Talleta kartat hakemistoon,\nn\u00e4yt\u00f6n toiminta nopeutuu ja verkkoliikenne v\u00e4hentyy.
 tip.learntimeparams=Tuloset voivat olla tarkempia, jos suoritutat toiminnon\n    Valikko: Reitti -> Opi aika-arvion parametrit\ntallentamillesi reiteille.
-tip.downloadsrtm=Voit nopeututtaa t\u00e4t\u00e4 suorituttamalla toiminnon\n    Valikko: Online -> Lataa SRTM-palat\nkarttojen v\u00e4limuistihakemistoon.
 tip.usesrtmfor3d=T\u00e4ss\u00e4 reitiss\u00e4 ei ole korkeustietoja.\nVoit k\u00e4ytt\u00e4\u00e4 SRTM-toimintoja saadaksesi likim\u00e4\u00e4r\u00e4iset\nkorkeusarvot 3D-n\u00e4kym\u00e4\u00e4 varten.
 tip.manuallycorrelateone=Jos korjaat v\u00e4hint\u00e4\u00e4n yhden kohteen aikatiedot, ohjelma voi laskea aikapoikkeamat puolestasi.
 
 tip.usesrtmfor3d=T\u00e4ss\u00e4 reitiss\u00e4 ei ole korkeustietoja.\nVoit k\u00e4ytt\u00e4\u00e4 SRTM-toimintoja saadaksesi likim\u00e4\u00e4r\u00e4iset\nkorkeusarvot 3D-n\u00e4kym\u00e4\u00e4 varten.
 tip.manuallycorrelateone=Jos korjaat v\u00e4hint\u00e4\u00e4n yhden kohteen aikatiedot, ohjelma voi laskea aikapoikkeamat puolestasi.
 
index 9c0f85a460b5bbf533012c907d1873402546a107..26981e4d01055efd691d752f3b317fcc41a58578 100644 (file)
@@ -86,6 +86,7 @@ function.exportpov=Exporter en POV
 function.exportimage=Exporter une image
 function.editwaypointname=\u00c9diter le nom du point
 function.compress=Compresser la trace
 function.exportimage=Exporter une image
 function.editwaypointname=\u00c9diter le nom du point
 function.compress=Compresser la trace
+function.marklifts=Marquer les remont\u00e9es m\u00e9caniques
 function.deleterange=Supprimer l'\u00e9tendue
 function.croptrack=Recadrer l'\u00e9tendue
 function.interpolate=Interpoler les points
 function.deleterange=Supprimer l'\u00e9tendue
 function.croptrack=Recadrer l'\u00e9tendue
 function.interpolate=Interpoler les points
@@ -109,17 +110,17 @@ function.autoplay=Jouer la trace
 function.selectsegment=S\u00e9lectionner le segment courant
 function.splitsegments=S\u00e9pare les segments
 function.sewsegments=R\u00e9unis les segments
 function.selectsegment=S\u00e9lectionner le segment courant
 function.splitsegments=S\u00e9pare les segments
 function.sewsegments=R\u00e9unis les segments
+function.createmarkerwaypoints=Cr\u00e9ation de points de rep\u00e8re
 function.lookupsrtm=R\u00e9cup\u00e9rer les altitudes depuis SRTM
 function.lookupsrtm=R\u00e9cup\u00e9rer les altitudes depuis SRTM
-function.downloadsrtm=T\u00e9l\u00e9charger les donn\u00e9es SRTM
 function.getwikipedia=Obtenir les articles de Wikip\u00e9dia \u00e0 proximit\u00e9
 function.searchwikipedianames=Rechercher dans Wikip\u00e9dia par nom
 function.getwikipedia=Obtenir les articles de Wikip\u00e9dia \u00e0 proximit\u00e9
 function.searchwikipedianames=Rechercher dans Wikip\u00e9dia par nom
-function.searchosmpois=Rechercher dans OSM \u00e0 proximit\u00e9
+function.searchosmpois=Rechercher de marques OSM \u00e0 proximit\u00e9
 function.searchopencachingde=Rechercher dans OpenCaching.de
 function.mapillary=Rechercher dans Mapillary
 function.downloadosm=T\u00e9l\u00e9charger les donn\u00e9es OSM de la zone
 function.duplicatepoint=Dupliquer le point
 function.setcolours=Choisir les couleurs
 function.searchopencachingde=Rechercher dans OpenCaching.de
 function.mapillary=Rechercher dans Mapillary
 function.downloadosm=T\u00e9l\u00e9charger les donn\u00e9es OSM de la zone
 function.duplicatepoint=Dupliquer le point
 function.setcolours=Choisir les couleurs
-function.setdisplaysettings=Pr\u00e9f\u00e9rences graphiques
+function.setdisplaysettings=Pr\u00e9f\u00e9rences d'affichage
 function.setlanguage=Choisir la langue
 function.connecttopoint=Relier au point
 function.disconnectfrompoint=D\u00e9tacher du point
 function.setlanguage=Choisir la langue
 function.connecttopoint=Relier au point
 function.disconnectfrompoint=D\u00e9tacher du point
@@ -431,7 +432,7 @@ dialog.about.summarytext1=GpsPrune est un programme pour charger, afficher et \u
 dialog.about.summarytext2=Distribu\u00e9 sous license Gnu GPL pour un usage et une am\u00e9lioration libres, ouverts et mondiaux.<br>La copie, la redistribution et la modification sont autoris\u00e9es et encourag\u00e9es<br>selon les conditions d\u00e9taill\u00e9es dans le fichier <code>license.txt</code> inclus.
 dialog.about.summarytext3=Consultez la page <code style="font-weight:bold">https://activityworkshop.net/</code> pour plus de d\u00e9tails et des manuels utilisateur.
 dialog.about.languages=Langues disponibles
 dialog.about.summarytext2=Distribu\u00e9 sous license Gnu GPL pour un usage et une am\u00e9lioration libres, ouverts et mondiaux.<br>La copie, la redistribution et la modification sont autoris\u00e9es et encourag\u00e9es<br>selon les conditions d\u00e9taill\u00e9es dans le fichier <code>license.txt</code> inclus.
 dialog.about.summarytext3=Consultez la page <code style="font-weight:bold">https://activityworkshop.net/</code> pour plus de d\u00e9tails et des manuels utilisateur.
 dialog.about.languages=Langues disponibles
-dialog.about.translatedby=Texte en fran\u00e7ais par Petrovsk, theYinYeti, R\u00e9mi et jmr.
+dialog.about.translatedby=Texte en fran\u00e7ais par Petrovsk, theYinYeti, R\u00e9mi, jmr et Tche333.
 dialog.about.systeminfo=Info Syst\u00e8me
 dialog.about.systeminfo.os=Syst\u00e8me d'exploitation
 dialog.about.systeminfo.java=Java Runtime
 dialog.about.systeminfo=Info Syst\u00e8me
 dialog.about.systeminfo.os=Syst\u00e8me d'exploitation
 dialog.about.systeminfo.java=Java Runtime
@@ -598,7 +599,6 @@ confirm.running=En cours...
 confirm.lookupsrtm=Trouv\u00e9 %d valeurs d'altitude
 confirm.downloadsrtm=%d fichiers ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9s
 confirm.downloadsrtm.1=%d fichier a \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9
 confirm.lookupsrtm=Trouv\u00e9 %d valeurs d'altitude
 confirm.downloadsrtm=%d fichiers ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9s
 confirm.downloadsrtm.1=%d fichier a \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9
-confirm.downloadsrtm.none=Pas de fichiers ont \u00e9t\u00e9 t\u00e9l\u00e9charg\u00e9s, ils sont d\u00e9j\u00e0 l\u00e0
 confirm.deletefieldvalues=Valeurs effac\u00e9es
 confirm.audioload=Fichiers audio ajout\u00e9s
 confirm.correlateaudios.single=fichier audio a \u00e9t\u00e9 corr\u00e9l\u00e9
 confirm.deletefieldvalues=Valeurs effac\u00e9es
 confirm.audioload=Fichiers audio ajout\u00e9s
 confirm.correlateaudios.single=fichier audio a \u00e9t\u00e9 corr\u00e9l\u00e9
@@ -608,7 +608,6 @@ confirm.correlateaudios.multi=fichiers audio ont \u00e9t\u00e9 corr\u00e9l\u00e9
 tip.title=Astuce
 tip.useamapcache=By setting up a disk cache (Pr\u00e9f\u00e9rences -> Enregistrer les cartes sur le disque)\nyou can speed up the display and reduce network traffic.
 tip.learntimeparams=The results will be more accurate if you use\nTrace -> Apprentissage de l'estimation\non your recorded tracks.
 tip.title=Astuce
 tip.useamapcache=By setting up a disk cache (Pr\u00e9f\u00e9rences -> Enregistrer les cartes sur le disque)\nyou can speed up the display and reduce network traffic.
 tip.learntimeparams=The results will be more accurate if you use\nTrace -> Apprentissage de l'estimation\non your recorded tracks.
-tip.downloadsrtm=You can speed this up by calling\nEn ligne -> T\u00e9l\u00e9charger les donn\u00e9es SRTM\nto save the data in your map cache.
 tip.manuallycorrelateone=En corr\u00e9lant manuellement au moins une photo, le d\u00e9calage de temps peut \u00eatre calcul\u00e9 pour vous.
 
 # Buttons
 tip.manuallycorrelateone=En corr\u00e9lant manuellement au moins une photo, le d\u00e9calage de temps peut \u00eatre calcul\u00e9 pour vous.
 
 # Buttons
index 021db5302dc8cbe002440f74130370f422bc36f5..82398652143e853cf526ce5fd8f707e9cca556f7 100644 (file)
@@ -35,6 +35,8 @@ menu.view.browser.openstreetmap=OpenStreetMap
 menu.view.browser.mapquest=Mapquest
 menu.view.browser.yahoo=Yahoo! Maps
 menu.view.browser.bing=Bing Maps
 menu.view.browser.mapquest=Mapquest
 menu.view.browser.yahoo=Yahoo! Maps
 menu.view.browser.bing=Bing Maps
+menu.view.browser.inlinemap=Inlinemap.net
+menu.view.browser.graphhopper=GraphHopper
 menu.settings=Be\u00e1ll\u00edt\u00e1sok
 menu.settings.onlinemode=T\u00e9rk\u00e9pek bet\u00f6lt\u00e9se internetr\u0151l
 menu.settings.autosave=Be\u00e1ll\u00edt\u00e1sok automatikus ment\u00e9se kil\u00e9p\u00e9skor
 menu.settings=Be\u00e1ll\u00edt\u00e1sok
 menu.settings.onlinemode=T\u00e9rk\u00e9pek bet\u00f6lt\u00e9se internetr\u0151l
 menu.settings.autosave=Be\u00e1ll\u00edt\u00e1sok automatikus ment\u00e9se kil\u00e9p\u00e9skor
@@ -71,6 +73,7 @@ shortcut.menu.file.save=S
 shortcut.menu.track.undo=Z
 shortcut.menu.track.compress=C
 shortcut.menu.range.all=A
 shortcut.menu.track.undo=Z
 shortcut.menu.track.compress=C
 shortcut.menu.range.all=A
+shortcut.menu.point.edit=E
 shortcut.menu.help.help=H
 
 # Functions
 shortcut.menu.help.help=H
 
 # Functions
@@ -97,9 +100,12 @@ function.convertnamestotimes=\u00datpontok neveinek konvert\u00e1l\u00e1sa id\u0
 function.deletefieldvalues=Mez\u0151 \u00e9rt\u00e9keinek t\u00f6rl\u00e9se
 function.findwaypoint=\u00datpont keres\u00e9se
 function.pastecoordinates=\u00daj koordin\u00e1t\u00e1k megad\u00e1sa
 function.deletefieldvalues=Mez\u0151 \u00e9rt\u00e9keinek t\u00f6rl\u00e9se
 function.findwaypoint=\u00datpont keres\u00e9se
 function.pastecoordinates=\u00daj koordin\u00e1t\u00e1k megad\u00e1sa
+function.pastecoordinatelist=Adja meg a koordin\u00e1t\u00e1k list\u00e1j\u00e1t
+function.enterpluscode=Pluszk\u00f3d megad\u00e1sa
 function.charts=Diagramok
 function.show3d=3D n\u00e9zet
 function.distances=T\u00e1vols\u00e1gok
 function.charts=Diagramok
 function.show3d=3D n\u00e9zet
 function.distances=T\u00e1vols\u00e1gok
+function.viewfulldetails=\u00d6sszes r\u00e9szlet
 function.estimatetime=Becs\u00fclt id\u0151
 function.learnestimationparams=Id\u0151becsl\u00e9s tanul\u00e1s\u00e1nak param\u00e9terei
 function.autoplay=Nyomvonal lej\u00e1tsz\u00e1sa
 function.estimatetime=Becs\u00fclt id\u0151
 function.learnestimationparams=Id\u0151becsl\u00e9s tanul\u00e1s\u00e1nak param\u00e9terei
 function.autoplay=Nyomvonal lej\u00e1tsz\u00e1sa
@@ -118,6 +124,7 @@ function.searchopencachingde=Keres\u00e9s az OpenCaching.de-n
 function.mapillary=F\u00e9nyk\u00e9pek keres\u00e9se Mapillary-n
 function.downloadosm=OSM adatok let\u00f6lt\u00e9se a ter\u00fcletr\u0151l
 function.duplicatepoint=Pont kett\u0151z\u00e9se
 function.mapillary=F\u00e9nyk\u00e9pek keres\u00e9se Mapillary-n
 function.downloadosm=OSM adatok let\u00f6lt\u00e9se a ter\u00fcletr\u0151l
 function.duplicatepoint=Pont kett\u0151z\u00e9se
+function.projectpoint=Pont vet\u00edt\u00e9se
 function.setcolours=Sz\u00ednek be\u00e1ll\u00edt\u00e1sa
 function.setdisplaysettings=Megjelen\u00edt\u00e9s be\u00e1ll\u00edt\u00e1sa
 function.setlanguage=Nyelv be\u00e1ll\u00edt\u00e1sa
 function.setcolours=Sz\u00ednek be\u00e1ll\u00edt\u00e1sa
 function.setdisplaysettings=Megjelen\u00edt\u00e9s be\u00e1ll\u00edt\u00e1sa
 function.setlanguage=Nyelv be\u00e1ll\u00edt\u00e1sa
@@ -431,6 +438,10 @@ dialog.deletemarked.nonefound=Nem t\u00e1vol\u00edthat\u00f3 el adatpont
 dialog.pastecoordinates.desc=Adja meg vagy illessze be a koordin\u00e1t\u00e1kat ide
 dialog.pastecoordinates.coords=Koordin\u00e1t\u00e1k
 dialog.pastecoordinates.nothingfound=Ellen\u0151rizze a koordin\u00e1t\u00e1kat, \u00e9s pr\u00f3b\u00e1lja \u00fajra
 dialog.pastecoordinates.desc=Adja meg vagy illessze be a koordin\u00e1t\u00e1kat ide
 dialog.pastecoordinates.coords=Koordin\u00e1t\u00e1k
 dialog.pastecoordinates.nothingfound=Ellen\u0151rizze a koordin\u00e1t\u00e1kat, \u00e9s pr\u00f3b\u00e1lja \u00fajra
+dialog.pastecoordinatelist.desc=Adja meg az \u00faj pontok koordin\u00e1t\u00e1it, soronk\u00e9nt egy pont\u00e9t
+dialog.pluscode.desc=Adja meg, vagy m\u00e1soja ide a pluszk\u00f3dot
+dialog.pluscode.code=Pluszk\u00f3d
+dialog.pluscode.nothingfound=Ellen\u0151rizze a k\u00f3dot, vagy pr\u00f3b\u00e1lja \u00fajra
 dialog.help.help=Tov\u00e1bbi inform\u00e1ci\u00f3k\u00e9rt \u00e9s kezel\u00e9si \u00fatmutat\u00f3\u00e9rt l\u00e1sd a \n https://gpsprune.activityworkshop.net/\nwebhelyet.
 dialog.about.version=Verzi\u00f3
 dialog.about.build=Build
 dialog.help.help=Tov\u00e1bbi inform\u00e1ci\u00f3k\u00e9rt \u00e9s kezel\u00e9si \u00fatmutat\u00f3\u00e9rt l\u00e1sd a \n https://gpsprune.activityworkshop.net/\nwebhelyet.
 dialog.about.version=Verzi\u00f3
 dialog.about.build=Build
@@ -539,6 +550,10 @@ dialog.displaysettings.wpicon.pin=Gombost\u0171
 dialog.displaysettings.size.small=Kicsi
 dialog.displaysettings.size.medium=K\u00f6zepes
 dialog.displaysettings.size.large=Nagy
 dialog.displaysettings.size.small=Kicsi
 dialog.displaysettings.size.medium=K\u00f6zepes
 dialog.displaysettings.size.large=Nagy
+dialog.displaysettings.windowstyle=Ablak st\u00edlus (\u00fajraind\u00edt\u00e1st ig\u00e9nyel)
+dialog.displaysettings.windowstyle.default=Alap\u00e9rtelmezett
+dialog.displaysettings.windowstyle.nimbus=Nimbus
+dialog.displaysettings.windowstyle.gtk=GTK
 dialog.downloadosm.desc=Nyers OSM adatok let\u00f6lt\u00e9s\u00e9nek meger\u0151s\u00edt\u00e9se a megadott ter\u00fcletre:
 dialog.searchwikipedianames.search=Keres\u00e9s erre:
 dialog.weather.location=Helysz\u00edn
 dialog.downloadosm.desc=Nyers OSM adatok let\u00f6lt\u00e9s\u00e9nek meger\u0151s\u00edt\u00e9se a megadott ter\u00fcletre:
 dialog.searchwikipedianames.search=Keres\u00e9s erre:
 dialog.weather.location=Helysz\u00edn
@@ -574,11 +589,19 @@ dialog.settimezone.intro=Kiv\u00e1laszthatja, hogy az \u00fatvonalpontok id\u015
 dialog.settimezone.system=Rendszer id\u0151z\u00f3na haszn\u00e1lata
 dialog.settimezone.custom=Az al\u00e1bbi id\u0151z\u00f3na haszn\u00e1lata
 dialog.settimezone.list.toomany=T\u00fal sok lehet\u0151s\u00e9g
 dialog.settimezone.system=Rendszer id\u0151z\u00f3na haszn\u00e1lata
 dialog.settimezone.custom=Az al\u00e1bbi id\u0151z\u00f3na haszn\u00e1lata
 dialog.settimezone.list.toomany=T\u00fal sok lehet\u0151s\u00e9g
+dialog.settimezone.selectedzone=Kiv\u00e1lasztott id\u0151z\u00f3na
+dialog.settimezone.offsetfromutc=Elt\u00e9r\u00e9s az UTC-t\u0151l
 dialog.autoplay.duration=Id\u0151tartam (mp)
 dialog.autoplay.usetimestamps=Nyompontok id\u0151b\u00e9lyege alapj\u00e1n
 dialog.autoplay.rewind=Vissza az elej\u00e9re
 dialog.autoplay.pause=Sz\u00fcnet
 dialog.autoplay.play=Lej\u00e1tsz\u00e1s
 dialog.autoplay.duration=Id\u0151tartam (mp)
 dialog.autoplay.usetimestamps=Nyompontok id\u0151b\u00e9lyege alapj\u00e1n
 dialog.autoplay.rewind=Vissza az elej\u00e9re
 dialog.autoplay.pause=Sz\u00fcnet
 dialog.autoplay.play=Lej\u00e1tsz\u00e1s
+dialog.markers.halves=F\u00e9l\u00fat pontok
+dialog.markers.half.distance=F\u00e9lt\u00e1v
+dialog.markers.half.climb=F\u00e9l\u00fat a m\u00e1sz\u00e1sban
+dialog.markers.half.descent=F\u00e9l\u00fat az ereszked\u00e9sben
+dialog.projectpoint.desc=A pont vet\u00edt\u00e9s\u00e9hez adjon meg egy ir\u00e1nyt \u00e9s t\u00e1vols\u00e1got
+dialog.projectpoint.bearing=Ir\u00e1nysz\u00f6g (fok \u00e9szakt\u00f3l)
 
 # 3d window
 dialog.3d.title=GpsPrune 3D n\u00e9zet
 
 # 3d window
 dialog.3d.title=GpsPrune 3D n\u00e9zet
@@ -729,6 +752,7 @@ map.overzoom=Nem \u00e9rhet\u0151 el t\u00e9rk\u00e9p ezen a nagy\u00edt\u00e1si
 # Field names
 fieldname.latitude=Sz\u00e9less\u00e9g
 fieldname.longitude=Hossz\u00fas\u00e1g
 # Field names
 fieldname.latitude=Sz\u00e9less\u00e9g
 fieldname.longitude=Hossz\u00fas\u00e1g
+fieldname.coordinates=Koordin\u00e1t\u00e1k
 fieldname.altitude=Magass\u00e1g
 fieldname.timestamp=Id\u0151
 fieldname.time=Id\u0151
 fieldname.altitude=Magass\u00e1g
 fieldname.timestamp=Id\u0151
 fieldname.time=Id\u0151
@@ -743,6 +767,7 @@ fieldname.duration=Id\u0151tartam
 fieldname.speed=Sebess\u00e9g
 fieldname.verticalspeed=F\u00fcgg\u0151leges sebess\u00e9g
 fieldname.description=Le\u00edr\u00e1s
 fieldname.speed=Sebess\u00e9g
 fieldname.verticalspeed=F\u00fcgg\u0151leges sebess\u00e9g
 fieldname.description=Le\u00edr\u00e1s
+fieldname.comment=Megjegyz\u00e9s
 fieldname.mediafilename=F\u00e1jln\u00e9v
 
 # Measurement units
 fieldname.mediafilename=F\u00e1jln\u00e9v
 
 # Measurement units
@@ -842,6 +867,7 @@ error.load.nopoints=Nem tal\u00e1lhat\u00f3 koordin\u00e1tainform\u00e1ci\u00f3
 error.load.unknownxml=Ismeretlen xml form\u00e1tum:
 error.load.noxmlinzip=Nem tal\u00e1lhat\u00f3 xml f\u00e1jl a zip f\u00e1jlon bel\u00fcl
 error.load.othererror=Hiba a f\u00e1jl olvas\u00e1sa sor\u00e1n:
 error.load.unknownxml=Ismeretlen xml form\u00e1tum:
 error.load.noxmlinzip=Nem tal\u00e1lhat\u00f3 xml f\u00e1jl a zip f\u00e1jlon bel\u00fcl
 error.load.othererror=Hiba a f\u00e1jl olvas\u00e1sa sor\u00e1n:
+error.load.nopointsintext=Nincs benne koordin\u00e1ta inform\u00e1ci\u00f3
 error.jpegload.dialogtitle=Hiba a k\u00e9pek bet\u00f6lt\u00e9sekor
 error.jpegload.nofilesfound=Nem tal\u00e1lhat\u00f3 f\u00e1jl
 error.jpegload.nojpegsfound=Nem tal\u00e1lhat\u00f3 jpeg f\u00e1jl
 error.jpegload.dialogtitle=Hiba a k\u00e9pek bet\u00f6lt\u00e9sekor
 error.jpegload.nofilesfound=Nem tal\u00e1lhat\u00f3 f\u00e1jl
 error.jpegload.nojpegsfound=Nem tal\u00e1lhat\u00f3 jpeg f\u00e1jl
index bc5a7b33defb0108ce424cfc9a49316c5c1a9ab3..2e7b3aa860bea6ead5aff3ea9f3743dd7ec89c6b 100644 (file)
@@ -113,7 +113,6 @@ function.splitsegments=Dividi traccia in segmenti
 function.sewsegments=Riorganizza segmenti insieme
 function.createmarkerwaypoints=Crea marcatori
 function.lookupsrtm=Ottieni quote da SRTM
 function.sewsegments=Riorganizza segmenti insieme
 function.createmarkerwaypoints=Crea marcatori
 function.lookupsrtm=Ottieni quote da SRTM
-function.downloadsrtm=Scarica file da 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.getwikipedia=Ottieni i punti Wikipedia nelle vicinanze
 function.searchwikipedianames=Cerca il nome in Wikipedia
 function.searchosmpois=Ottieni i punti OSM nelle vicinanze
@@ -638,7 +637,6 @@ confirm.running=Operazione in corso...
 confirm.lookupsrtm=Trovato %d valori di quota
 confirm.downloadsrtm=Scarica %d file nella cache
 confirm.downloadsrtm.1=Scarica %d file nella cache
 confirm.lookupsrtm=Trovato %d valori di quota
 confirm.downloadsrtm=Scarica %d file nella cache
 confirm.downloadsrtm.1=Scarica %d file nella cache
-confirm.downloadsrtm.none=Nessun file scaricato, erano gi\u00e0 presenti nella cache
 confirm.deletefieldvalues=Valori del campo cancellati
 confirm.audioload=Ripresa audio aggiunta
 confirm.correlateaudios.single=la ripresa audio era correlata
 confirm.deletefieldvalues=Valori del campo cancellati
 confirm.audioload=Ripresa audio aggiunta
 confirm.correlateaudios.single=la ripresa audio era correlata
@@ -648,7 +646,7 @@ confirm.correlateaudios.multi=le riprese audio erano correlate
 tip.title=Consiglio
 tip.useamapcache=Usando una cache della mappa (Preferenze -> Salva mappe su disco)\npuoi accelerare la visualizzazione e ridurre il traffico.
 tip.learntimeparams=I risultati saranno pi\u00f9 precisi usando\nTraccia -> Apprendi parametri di stima\ncon le tue tracce.
 tip.title=Consiglio
 tip.useamapcache=Usando una cache della mappa (Preferenze -> Salva mappe su disco)\npuoi accelerare la visualizzazione e ridurre il traffico.
 tip.learntimeparams=I risultati saranno pi\u00f9 precisi usando\nTraccia -> Apprendi parametri di stima\ncon le tue tracce.
-tip.downloadsrtm=Puoi accelerare questa funzione usando\nOnline -> Scarica file da SRTM\nper salvare i dati nella cache.
+tip.downloadsrtm=Puoi accelerare questa funzione salvare i dati nella cache.
 tip.usesrtmfor3d=La traccia non include informazioni sull'altitudine.\nPuoi utilizzare la funzione SRTM per ottenere le altitudini\nper la visione 3D.
 tip.manuallycorrelateone=Con il collegamento manuale di almeno una foto, lo scarto di orario viene calcolato per te
 
 tip.usesrtmfor3d=La traccia non include informazioni sull'altitudine.\nPuoi utilizzare la funzione SRTM per ottenere le altitudini\nper la visione 3D.
 tip.manuallycorrelateone=Con il collegamento manuale di almeno una foto, lo scarto di orario viene calcolato per te
 
index cde8d6ea4b1cdd2baabe5b0da649efc66cc3ea01..c757ccf44d3fcad74f61adc11cf2a174a8fdb9cb 100644 (file)
@@ -116,7 +116,6 @@ function.splitsegments=Splits route in segmenten
 function.sewsegments=Voeg segmenten samen
 function.createmarkerwaypoints=aak waypoints voor markering
 function.lookupsrtm=Hoogtes van SRTM ophalen
 function.sewsegments=Voeg segmenten samen
 function.createmarkerwaypoints=aak waypoints voor markering
 function.lookupsrtm=Hoogtes van SRTM ophalen
-function.downloadsrtm=Downloaden SRTM tegels
 function.getwikipedia=Wikipedia artikelen uit de buurt ophalen
 function.searchwikipedianames=Wikipedia zoeken op naam
 function.searchosmpois=Haal nabije OSM punten op
 function.getwikipedia=Wikipedia artikelen uit de buurt ophalen
 function.searchwikipedianames=Wikipedia zoeken op naam
 function.searchosmpois=Haal nabije OSM punten op
@@ -641,7 +640,6 @@ confirm.running=Bezig...
 confirm.lookupsrtm=Gevonden %d hoote waarden
 confirm.downloadsrtm=Er zijn %d bestanden gedownload nar de cache
 confirm.downloadsrtm.1=Er zijn %d bestanden gedownload nar de cache
 confirm.lookupsrtm=Gevonden %d hoote waarden
 confirm.downloadsrtm=Er zijn %d bestanden gedownload nar de cache
 confirm.downloadsrtm.1=Er zijn %d bestanden gedownload nar de cache
-confirm.downloadsrtm.none=Geen bestanden gedownload, waren al aanwezig in de cache.
 confirm.deletefieldvalues=Veldwaarden gewist
 confirm.audioload=Audiobestanden toegevoegd
 confirm.correlateaudios.single=audiobestand gecorreleerd
 confirm.deletefieldvalues=Veldwaarden gewist
 confirm.audioload=Audiobestanden toegevoegd
 confirm.correlateaudios.single=audiobestand gecorreleerd
@@ -651,7 +649,7 @@ confirm.correlateaudios.multi=audiobestanden gecorreleerd
 tip.title=Tip
 tip.useamapcache=Door het instellen van een schijfcache (Instellingen -> Kaart opslaan op schijf)\nkan je de afbeeldsnelheid verbeteren en het netwerkverkeer verminderen.
 tip.learntimeparams=De resultaten zullen nauwkeuriger zijn als je \nRoute -> Parameters voor geschatte tijd\ngebruikt op je opgenomen routes.
 tip.title=Tip
 tip.useamapcache=Door het instellen van een schijfcache (Instellingen -> Kaart opslaan op schijf)\nkan je de afbeeldsnelheid verbeteren en het netwerkverkeer verminderen.
 tip.learntimeparams=De resultaten zullen nauwkeuriger zijn als je \nRoute -> Parameters voor geschatte tijd\ngebruikt op je opgenomen routes.
-tip.downloadsrtm=Je kan dit versnellen door hier\nOnline -> Download SRTM tegels\nde data in je kaartcache op te slaan.
+tip.downloadsrtm=Je kan dit versnellen door de data in je kaartcache op te slaan.
 tip.usesrtmfor3d=Deze route heeft geen hoogten.\nJe kan de SRTM functies gebruiken om een geschatte hoogte\nop te halen voor het 3d beeld.
 tip.manuallycorrelateone=Door handmatig een foto te koppelen kan het tijdsverschil voor u berekend worden.
 
 tip.usesrtmfor3d=Deze route heeft geen hoogten.\nJe kan de SRTM functies gebruiken om een geschatte hoogte\nop te halen voor het 3d beeld.
 tip.manuallycorrelateone=Door handmatig een foto te koppelen kan het tijdsverschil voor u berekend worden.
 
index 86aac6f28ef8c8d947bf635d7cea8b6489c2aa12..b83cc0c7fc985050869ee77e2bdbc746b80b5395 100644 (file)
@@ -7,8 +7,6 @@ menu.file.addphotos=Legg til bilder
 menu.file.recentfiles=Nyeste filer
 menu.file.save=Lagre som tekst
 menu.file.exit=Avslutt
 menu.file.recentfiles=Nyeste filer
 menu.file.save=Lagre som tekst
 menu.file.exit=Avslutt
-menu.online=
-menu.track=
 menu.track.undo=Angre
 menu.track.clearundo=Nullstill angreliste
 menu.track.markrectangle=Marker punkter i rektangel
 menu.track.undo=Angre
 menu.track.clearundo=Nullstill angreliste
 menu.track.markrectangle=Marker punkter i rektangel
@@ -54,7 +52,6 @@ menu.map.editmode=Redigeringsmodus
 
 # Alt keys for menus
 altkey.menu.file=F
 
 # Alt keys for menus
 altkey.menu.file=F
-altkey.menu.online=
 altkey.menu.track=S
 altkey.menu.range=I
 altkey.menu.point=P
 altkey.menu.track=S
 altkey.menu.range=I
 altkey.menu.point=P
@@ -66,7 +63,6 @@ altkey.menu.help=H
 
 # Ctrl shortcuts for menu items
 shortcut.menu.file.open=\u00c5
 
 # Ctrl shortcuts for menu items
 shortcut.menu.file.open=\u00c5
-shortcut.menu.file.load=
 shortcut.menu.file.save=L
 shortcut.menu.track.undo=g
 shortcut.menu.track.compress=K
 shortcut.menu.file.save=L
 shortcut.menu.track.undo=g
 shortcut.menu.track.compress=K
@@ -82,16 +78,13 @@ function.sendtogps=Overf\u00f8r data til GPS
 function.exportkml=Eksporter KML
 function.exportgpx=Eksporter GPX
 function.exportpov=Eksporter POV
 function.exportkml=Eksporter KML
 function.exportgpx=Eksporter GPX
 function.exportpov=Eksporter POV
-function.exportimage=
 function.editwaypointname=Endre waypoint-navn
 function.compress=Komprimer spor
 function.deleterange=Fjern valgt intervall
 function.croptrack=Beskj\u00e6r sporet
 function.interpolate=Interpoler punkter
 function.editwaypointname=Endre waypoint-navn
 function.compress=Komprimer spor
 function.deleterange=Fjern valgt intervall
 function.croptrack=Beskj\u00e6r sporet
 function.interpolate=Interpoler punkter
-function.deletebydate=
 function.addtimeoffset=Legg til tidsinkrement
 function.addaltitudeoffset=Legg til h\u00f8ideinkrement
 function.addtimeoffset=Legg til tidsinkrement
 function.addaltitudeoffset=Legg til h\u00f8ideinkrement
-function.rearrangewaypoints=
 function.convertnamestotimes=Les waypoint-navn som tidspunkter
 function.deletefieldvalues=Slett feltets verdier
 function.findwaypoint=Finn waypoint
 function.convertnamestotimes=Les waypoint-navn som tidspunkter
 function.deletefieldvalues=Slett feltets verdier
 function.findwaypoint=Finn waypoint
@@ -100,18 +93,11 @@ function.charts=Grafer
 function.show3d=3-D visning
 function.distances=Avstander
 function.viewfulldetails=Vis alle detaljer
 function.show3d=3-D visning
 function.distances=Avstander
 function.viewfulldetails=Vis alle detaljer
-function.estimatetime=
-function.learnestimationparams=
 function.setmapbg=Velg grunnlagskart
 function.setpaths=Angi plassering av programmer
 function.setmapbg=Velg grunnlagskart
 function.setpaths=Angi plassering av programmer
-function.selectsegment=
-function.splitsegments=
-function.sewsegments=
 function.lookupsrtm=Hent h\u00f8yde fra SRTM
 function.lookupsrtm=Hent h\u00f8yde fra SRTM
-function.downloadsrtm=
 function.getwikipedia=Vis Wikipedia info for omegn
 function.searchwikipedianames=S\u00f8k Wikipedia
 function.getwikipedia=Vis Wikipedia info for omegn
 function.searchwikipedianames=S\u00f8k Wikipedia
-function.searchopencachingde=
 function.downloadosm=Last ned OSM data for omr\u00e5det
 function.duplicatepoint=Dupliser punkt
 function.setcolours=Velg farger
 function.downloadosm=Last ned OSM data for omr\u00e5det
 function.duplicatepoint=Dupliser punkt
 function.setcolours=Velg farger
index d3b72e775c26c25fc7be63b65ee4dbca76040b25..75bfc804d42f85ecff6cb508491c50a30d894364 100644 (file)
@@ -111,7 +111,6 @@ function.splitsegments=Podziel \u015bcie\u017ck\u0119 na fragmenty
 function.sewsegments=Po\u0142\u0105cz fragmenty
 function.createmarkerwaypoints=Stw\u00f3rz markery podzia\u0142u
 function.lookupsrtm=Pobierz wysoko\u015bci z SRTM
 function.sewsegments=Po\u0142\u0105cz fragmenty
 function.createmarkerwaypoints=Stw\u00f3rz markery podzia\u0142u
 function.lookupsrtm=Pobierz wysoko\u015bci z SRTM
-function.downloadsrtm=Zapisz dane z SRTM
 function.getwikipedia=Szukaj w Wikipedii o okolicy
 function.searchwikipedianames=Szukaj nazwy w Wikipedii
 function.searchopencachingde=Szukaj w OpenCaching.de
 function.getwikipedia=Szukaj w Wikipedii o okolicy
 function.searchwikipedianames=Szukaj nazwy w Wikipedii
 function.searchopencachingde=Szukaj w OpenCaching.de
@@ -608,7 +607,6 @@ confirm.running=Przetwarzam dane ...
 confirm.lookupsrtm=Znaleziono %d warto\u015bci wysoko\u015bci
 confirm.downloadsrtm=Pobrano %d plik\u00f3w do kesza
 confirm.downloadsrtm.1=Pobrano %d plik do kesza
 confirm.lookupsrtm=Znaleziono %d warto\u015bci wysoko\u015bci
 confirm.downloadsrtm=Pobrano %d plik\u00f3w do kesza
 confirm.downloadsrtm.1=Pobrano %d plik do kesza
-confirm.downloadsrtm.none=Nie pobrano \u017cadnych plik\u00f3w, wszystkie by\u0142y ju\u017c w keszu
 confirm.deletefieldvalues=Warto\u015bci p\u00f3l usuni\u0119to
 confirm.audioload=dodano pliki audio
 confirm.correlateaudios.single=audio zosta\u0142o po\u0142\u0105czone
 confirm.deletefieldvalues=Warto\u015bci p\u00f3l usuni\u0119to
 confirm.audioload=dodano pliki audio
 confirm.correlateaudios.single=audio zosta\u0142o po\u0142\u0105czone
@@ -618,7 +616,7 @@ confirm.correlateaudios.multi=audio zosta\u0142y po\u0142\u0105czone
 tip.title=Porada
 tip.useamapcache=Konfiguruj\u0105c kesz dyskowy (Ustawienia -> Zapisz mapy na dysk)\nprzyspieszasz wy\u015bwietlanie i ograniczasz ruch sieciowy
 tip.learntimeparams=Resultat b\u0119dzie dok\u0142adniejszy je\u015bli u\u017cyjesz
 tip.title=Porada
 tip.useamapcache=Konfiguruj\u0105c kesz dyskowy (Ustawienia -> Zapisz mapy na dysk)\nprzyspieszasz wy\u015bwietlanie i ograniczasz ruch sieciowy
 tip.learntimeparams=Resultat b\u0119dzie dok\u0142adniejszy je\u015bli u\u017cyjesz
-tip.downloadsrtm=Mo\u017cesz przyspieszy\u0107 operacj\u0119 wywo\u0142uj\u0105c polecenie
+tip.downloadsrtm=Mo\u017cesz przyspieszy\u0107 operacj\u0119 konfiguruj\u0105c kesz dyskowy
 tip.usesrtmfor3d=\u015acie\u017cka nie zawiera danych o wysoko\u015bciach\nMo\u017cesz u\u017cy\u0107 funkcji SRTM by pobrac przybli\u017cone dane\no wysko\u015bciach w trybie widoku 3D.
 tip.manuallycorrelateone=Gdy powi\u0105\u017cesz r\u0119cznie przynajmniej jedno zdj\u0119cie, r\u00f3\u017cnica czasowa zostanie policzona automatycznie.
 
 tip.usesrtmfor3d=\u015acie\u017cka nie zawiera danych o wysoko\u015bciach\nMo\u017cesz u\u017cy\u0107 funkcji SRTM by pobrac przybli\u017cone dane\no wysko\u015bciach w trybie widoku 3D.
 tip.manuallycorrelateone=Gdy powi\u0105\u017cesz r\u0119cznie przynajmniej jedno zdj\u0119cie, r\u00f3\u017cnica czasowa zostanie policzona automatycznie.
 
@@ -718,6 +716,7 @@ map.overzoom=Brak map dla danego powi\u0119kszenia
 # Field names
 fieldname.latitude=Szeroko\u015b\u0107
 fieldname.longitude=D\u0142ugo\u015b\u0107
 # Field names
 fieldname.latitude=Szeroko\u015b\u0107
 fieldname.longitude=D\u0142ugo\u015b\u0107
+fieldname.coordinates=Wsp\u00f3\u0142rz\u0119dne
 fieldname.altitude=Wysoko\u015b\u0107
 fieldname.timestamp=Czas
 fieldname.time=Czas
 fieldname.altitude=Wysoko\u015b\u0107
 fieldname.timestamp=Czas
 fieldname.time=Czas
@@ -732,6 +731,7 @@ fieldname.duration=Czas trwania
 fieldname.speed=Pr\u0119dko\u015b\u0107
 fieldname.verticalspeed=Pr\u0119dko\u015b\u0107 pionowa
 fieldname.description=Opis
 fieldname.speed=Pr\u0119dko\u015b\u0107
 fieldname.verticalspeed=Pr\u0119dko\u015b\u0107 pionowa
 fieldname.description=Opis
+fieldname.comment=Komentarz
 fieldname.mediafilename=Nazwa pliku
 
 # Measurement units
 fieldname.mediafilename=Nazwa pliku
 
 # Measurement units
index fd785bf94773d6d04666b76b873a7ba8c32b8544..55f60fa11d86d3ea1368d5d193d43765bfafb7cb 100644 (file)
@@ -108,7 +108,6 @@ function.selectsegment=Selecionar segmento atual
 function.splitsegments=Dividir rota em segmentos
 function.sewsegments=Reunir segmentos em rota
 function.lookupsrtm=Obter altitudes a partir do SRTM
 function.splitsegments=Dividir rota em segmentos
 function.sewsegments=Reunir segmentos em rota
 function.lookupsrtm=Obter altitudes a partir do SRTM
-function.downloadsrtm=Baixar arquivos SRTM
 function.getwikipedia=Obter artigos da Wikip\u00e9dia das redondezas
 function.searchwikipedianames=Procurar na Wikip\u00e9dia por nome
 function.searchopencachingde=Procurar na OpenCaching.de
 function.getwikipedia=Obter artigos da Wikip\u00e9dia das redondezas
 function.searchwikipedianames=Procurar na Wikip\u00e9dia por nome
 function.searchopencachingde=Procurar na OpenCaching.de
@@ -575,7 +574,6 @@ confirm.running=Rodando...
 confirm.lookupsrtm=Encontrado %d valores de altitude
 confirm.downloadsrtm=%d arquivos baixados para a cache
 confirm.downloadsrtm.1=%d arquivo baixados para a cache
 confirm.lookupsrtm=Encontrado %d valores de altitude
 confirm.downloadsrtm=%d arquivos baixados para a cache
 confirm.downloadsrtm.1=%d arquivo baixados para a cache
-confirm.downloadsrtm.none=Nenhum arquivo baixado, pois j\u00e1 est\u00e3o na cache.
 confirm.deletefieldvalues=Valores do campo removidos
 confirm.audioload=Arquivos de \u00e1udio adicionados
 confirm.correlateaudios.single=\u00e1udio foi correlacionado
 confirm.deletefieldvalues=Valores do campo removidos
 confirm.audioload=Arquivos de \u00e1udio adicionados
 confirm.correlateaudios.single=\u00e1udio foi correlacionado
@@ -585,7 +583,6 @@ confirm.correlateaudios.multi=\u00e1udios foram correlacionados
 tip.title=Dica
 tip.useamapcache=Configurando a cache de disco (Configura\u00e7\u00f5es -> Salvar mapas para disco)\nvoc\u00ea pode acelerar a exibi\u00e7\u00e3o e reduzir o tr\u00e1fego de rede.
 tip.learntimeparams=Os resultados ser\u00e3o mais precisos se voc\u00ea usar\nRota -> Aprender os par\u00e2metros para estimativa de tempo\nde suas rotas gravadas.
 tip.title=Dica
 tip.useamapcache=Configurando a cache de disco (Configura\u00e7\u00f5es -> Salvar mapas para disco)\nvoc\u00ea pode acelerar a exibi\u00e7\u00e3o e reduzir o tr\u00e1fego de rede.
 tip.learntimeparams=Os resultados ser\u00e3o mais precisos se voc\u00ea usar\nRota -> Aprender os par\u00e2metros para estimativa de tempo\nde suas rotas gravadas.
-tip.downloadsrtm=Voc\u00ea pode acelerar chamando\nOnline -> Baixar ladrilhos SRTM\npara obter as altitudes\naproximadas para a vis\u00e3o 3D.
 tip.usesrtmfor3d=Esta rota n\u00e3o possui altitudes.\nVoc\u00ea pode usar as fun\u00e7\u00f5es SRTM para obter as altitudes\naproximadas para a vis\u00e3o 3D.
 tip.manuallycorrelateone=Correlacionando pelo menos uma foto manualmente, a diferen\u00e7a de tempo pode ser calculada para voc\u00ea.
 
 tip.usesrtmfor3d=Esta rota n\u00e3o possui altitudes.\nVoc\u00ea pode usar as fun\u00e7\u00f5es SRTM para obter as altitudes\naproximadas para a vis\u00e3o 3D.
 tip.manuallycorrelateone=Correlacionando pelo menos uma foto manualmente, a diferen\u00e7a de tempo pode ser calculada para voc\u00ea.
 
index 70ceab6c9ff2df677bbb34a6b93b21a50998095b..e3a5610410c74c72104902c01ae485f7533c14b3 100644 (file)
@@ -39,6 +39,12 @@ menu.view.browser.bing=Harta Bing
 menu.settings=Set\u0103ri
 menu.settings.onlinemode=\u00cencarc\u0103 h\u0103r\u021bi
 dialog.displaysettings.antialias=Folose\u0219te antialiasing
 menu.settings=Set\u0103ri
 menu.settings.onlinemode=\u00cencarc\u0103 h\u0103r\u021bi
 dialog.displaysettings.antialias=Folose\u0219te antialiasing
+dialog.displaysettings.wpicon.plectrum=Plectru
+dialog.displaysettings.wpicon.ring=Inel
+dialog.displaysettings.size.small=Mic
+dialog.displaysettings.size.medium=Mediu
+dialog.displaysettings.size.large=Mare
+dialog.displaysettings.windowstyle=Stilul ferestrei (este necesar\u0103 o repornire)
 menu.settings.autosave=Salveaz\u0103 set\u0103rile automat la ie\u0219ire
 menu.help=Ajutor
 
 menu.settings.autosave=Salveaz\u0103 set\u0103rile automat la ie\u0219ire
 menu.help=Ajutor
 
@@ -99,6 +105,7 @@ function.convertnamestotimes=Converte\u0219te numele waypoint-urilor \u00een tim
 function.deletefieldvalues=\u0218terge valorile c\u00e2mpurilor
 function.findwaypoint=G\u0103se\u0219te waypoint
 function.pastecoordinates=Introdu coordonate noi
 function.deletefieldvalues=\u0218terge valorile c\u00e2mpurilor
 function.findwaypoint=G\u0103se\u0219te waypoint
 function.pastecoordinates=Introdu coordonate noi
+function.pastecoordinatelist=Introdu o list\u0103 de coordonate
 function.charts=Grafice
 function.show3d=Vizualizare 3D
 function.distances=Distan\u0163e
 function.charts=Grafice
 function.show3d=Vizualizare 3D
 function.distances=Distan\u0163e
@@ -112,7 +119,6 @@ function.selectsegment=Selecteaz\u0103 segment curent
 function.splitsegments=Divizeaz\u0103 traseul \u00een segmente
 function.sewsegments=Combin\u0103 segmentele traseului
 function.lookupsrtm=Descarc\u0103 date SRTM \u00een cache
 function.splitsegments=Divizeaz\u0103 traseul \u00een segmente
 function.sewsegments=Combin\u0103 segmentele traseului
 function.lookupsrtm=Descarc\u0103 date SRTM \u00een cache
-function.downloadsrtm=Descarc\u0103 date SRTM
 function.getwikipedia=Caut\u0103 articole Wikipedia din proximitate
 function.searchwikipedianames=Caut\u0103 Wikipedia dup\u0103 nume
 function.searchopencachingde=Caut\u0103 OpenCaching.de
 function.getwikipedia=Caut\u0103 articole Wikipedia din proximitate
 function.searchwikipedianames=Caut\u0103 Wikipedia dup\u0103 nume
 function.searchopencachingde=Caut\u0103 OpenCaching.de
@@ -144,6 +150,7 @@ function.diskcache=Salvare harti
 function.managetilecache=Administreaz\u0103 imaginile salvate
 function.getweatherforecast=Prognoz\u0103 meteo
 function.setaltitudetolerance=Alege toleran\u021ba varia\u021biei altitudinii
 function.managetilecache=Administreaz\u0103 imaginile salvate
 function.getweatherforecast=Prognoz\u0103 meteo
 function.setaltitudetolerance=Alege toleran\u021ba varia\u021biei altitudinii
+function.selecttimezone=Selecta\u021Bi fusul orar
 
 # Dialogs
 dialog.exit.confirm.title=Ie\u015fire din programul GpsPrune
 
 # Dialogs
 dialog.exit.confirm.title=Ie\u015fire din programul GpsPrune
@@ -601,7 +608,6 @@ confirm.running=Executare ...
 confirm.lookupsrtm=Au fost g\u0103site %d valori de altitudine
 confirm.downloadsrtm=S-au desc\u0103rcat %d fi\u015fiere
 confirm.downloadsrtm.1=S-au desc\u0103rcat %d fi\u015fier
 confirm.lookupsrtm=Au fost g\u0103site %d valori de altitudine
 confirm.downloadsrtm=S-au desc\u0103rcat %d fi\u015fiere
 confirm.downloadsrtm.1=S-au desc\u0103rcat %d fi\u015fier
-confirm.downloadsrtm.none=Niciun fi\u0219ier nu a fost desc\u0103rcat, ele erau deja prezente \u00een cache
 confirm.deletefieldvalues=Valorile c\u00e2mpurilor au fost \u0219terse
 confirm.audioload=Fi\u0219iere audio au fost ad\u0103ugate
 confirm.correlateaudios.single=clipul audio a fost corelat
 confirm.deletefieldvalues=Valorile c\u00e2mpurilor au fost \u0219terse
 confirm.audioload=Fi\u0219iere audio au fost ad\u0103ugate
 confirm.correlateaudios.single=clipul audio a fost corelat
@@ -611,7 +617,6 @@ confirm.correlateaudios.multi=clipurile audio au fost corelate
 tip.title=Indiciu
 tip.useamapcache=Prin configurarea unui cache pe disc (Set\u0103ri -> Salvare h\u0103r\u021bi)\npute\u021bi \u00eembun\u0103t\u0103\u021bi viteza de afi\u0219are \u0219i reduce traficul de re\u021bea
 tip.learntimeparams=Rezultatele vor fi mai corecte dac\u0103 folosi\u021bi\nTraseu -> \u00cenva\u021b\u0103 parametri pentru estim\u0103ri de timp\npe traseele deja \u00eenregistrate.
 tip.title=Indiciu
 tip.useamapcache=Prin configurarea unui cache pe disc (Set\u0103ri -> Salvare h\u0103r\u021bi)\npute\u021bi \u00eembun\u0103t\u0103\u021bi viteza de afi\u0219are \u0219i reduce traficul de re\u021bea
 tip.learntimeparams=Rezultatele vor fi mai corecte dac\u0103 folosi\u021bi\nTraseu -> \u00cenva\u021b\u0103 parametri pentru estim\u0103ri de timp\npe traseele deja \u00eenregistrate.
-tip.downloadsrtm=Pute\u021bi \u00eembun\u0103t\u0103\u021bi viteza prin folosirea\nInternet -> Descarc\u0103 date SRTM
 tip.usesrtmfor3d=Acest traseu nu are valori de altitudine.\nPute\u021bi folosi func\u021biile SRTM pentru a aproxima altitudinile \u00een vederea 3D.
 tip.manuallycorrelateone=Decalajul de timp poate fi calculat dac\u0103 cel pu\u021bin un element e conectat.
 
 tip.usesrtmfor3d=Acest traseu nu are valori de altitudine.\nPute\u021bi folosi func\u021biile SRTM pentru a aproxima altitudinile \u00een vederea 3D.
 tip.manuallycorrelateone=Decalajul de timp poate fi calculat dac\u0103 cel pu\u021bin un element e conectat.
 
@@ -711,6 +716,7 @@ map.overzoom=Nu exist\u0103 h\u0103r\u021bi la acest nivel de apropiere
 # Field names
 fieldname.latitude=Latitudine
 fieldname.longitude=Longitudine
 # Field names
 fieldname.latitude=Latitudine
 fieldname.longitude=Longitudine
+fieldname.coordinates=Coordonate
 fieldname.altitude=Altitudine
 fieldname.timestamp=Timp
 fieldname.time=Timp
 fieldname.altitude=Altitudine
 fieldname.timestamp=Timp
 fieldname.time=Timp
@@ -725,6 +731,7 @@ fieldname.duration=Durat\u0103
 fieldname.speed=Vitez\u0103
 fieldname.verticalspeed=Vitez\u0103 vertical\u0103
 fieldname.description=Descriere
 fieldname.speed=Vitez\u0103
 fieldname.verticalspeed=Vitez\u0103 vertical\u0103
 fieldname.description=Descriere
+fieldname.comment=Comentariu
 fieldname.mediafilename=Fi\u0219ier
 
 # Measurement units
 fieldname.mediafilename=Fi\u0219ier
 
 # Measurement units
index 6f99f0f952aa669053c1ca4c981bdb557f6a3a6d..b1fe18064303b417686f4040b450765eada2384f 100644 (file)
@@ -114,7 +114,6 @@ function.splitsegments=\u0420\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u
 function.sewsegments=\u0421\u043a\u043b\u0435\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u0442\u0440\u0435\u043a\u0430 \u0432\u043e\u0435\u0434\u0438\u043d\u043e
 function.createmarkerwaypoints=\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u043f\u0443\u0442\u0435\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a
 function.lookupsrtm=\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u0442\u0443 \u0438\u0437 SRTM
 function.sewsegments=\u0421\u043a\u043b\u0435\u0438\u0442\u044c \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u044b \u0442\u0440\u0435\u043a\u0430 \u0432\u043e\u0435\u0434\u0438\u043d\u043e
 function.createmarkerwaypoints=\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u043c\u0430\u0440\u043a\u0435\u0440\u044b \u043f\u0443\u0442\u0435\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a
 function.lookupsrtm=\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u0441\u043e\u0442\u0443 \u0438\u0437 SRTM
-function.downloadsrtm=\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c SRTM-\u0442\u0430\u0439\u043b\u044b
 function.getwikipedia=\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432 \u0412\u0438\u043a\u0438
 function.searchwikipedianames=\u041f\u043e\u0438\u0441\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0432 \u0412\u0438\u043a\u0438 \u043f\u043e \u0438\u043c\u0435\u043d\u0438
 function.searchosmpois=\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 OSM
 function.getwikipedia=\u0421\u0442\u0430\u0442\u044c\u044f \u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0435\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432 \u0412\u0438\u043a\u0438
 function.searchwikipedianames=\u041f\u043e\u0438\u0441\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0432 \u0412\u0438\u043a\u0438 \u043f\u043e \u0438\u043c\u0435\u043d\u0438
 function.searchosmpois=\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u0442\u043e\u0447\u043a\u0438 OSM
@@ -439,6 +438,7 @@ dialog.pastecoordinates.coords=\u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\
 dialog.pastecoordinates.nothingfound=\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437
 dialog.pastecoordinatelist.desc=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043d\u0430 \u043f\u0440\u044f\u043c\u043e\u0439
 dialog.pluscode.desc=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043b\u044e\u0441-\u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c
 dialog.pastecoordinates.nothingfound=\u041f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0435 \u0440\u0430\u0437
 dialog.pastecoordinatelist.desc=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0434\u043b\u044f \u043d\u043e\u0432\u044b\u0445 \u0442\u043e\u0447\u0435\u043a \u043f\u043e \u043e\u0434\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u043d\u0430 \u043f\u0440\u044f\u043c\u043e\u0439
 dialog.pluscode.desc=\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0438\u043b\u0438 \u0432\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u043f\u043b\u044e\u0441-\u043a\u043e\u0434 \u0437\u0434\u0435\u0441\u044c
+dialog.pluscode.code=\u041f\u043b\u044e\u0441-\u043a\u043e\u0434
 dialog.pluscode.nothingfound=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u0434 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437
 dialog.help.help=\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443\nhttps://gpsprune.activityworkshop.net/
 dialog.about.version=\u0412\u0435\u0440\u0441\u0438\u044f
 dialog.pluscode.nothingfound=\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u043a\u043e\u0434 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437
 dialog.help.help=\u0414\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443\nhttps://gpsprune.activityworkshop.net/
 dialog.about.version=\u0412\u0435\u0440\u0441\u0438\u044f
@@ -638,7 +638,6 @@ confirm.running=\u0420\u0430\u0431\u043e\u0442\u0430\u044e...
 confirm.lookupsrtm=\u041d\u0430\u0439\u0434\u0435\u043d\u043e %d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u0442\u044b
 confirm.downloadsrtm=\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e %d \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u044d\u0448
 confirm.downloadsrtm.1=\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e %d \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u044d\u0448
 confirm.lookupsrtm=\u041d\u0430\u0439\u0434\u0435\u043d\u043e %d \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432\u044b\u0441\u043e\u0442\u044b
 confirm.downloadsrtm=\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e %d \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u044d\u0448
 confirm.downloadsrtm.1=\u0417\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043e %d \u0444\u0430\u0439\u043b\u043e\u0432 \u0432 \u043a\u044d\u0448
-confirm.downloadsrtm.none=\u0412\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0443\u0436\u0435 \u0432 \u043a\u044d\u0448\u0435
 confirm.deletefieldvalues=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u044b
 confirm.audioload=\u0424\u0430\u0439\u043b\u044b \u0437\u0432\u0443\u043a\u043e\u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b
 confirm.correlateaudios.single=\u0417\u0432\u0443\u043a\u043e\u0437\u0430\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430
 confirm.deletefieldvalues=\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u044b
 confirm.audioload=\u0424\u0430\u0439\u043b\u044b \u0437\u0432\u0443\u043a\u043e\u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b
 confirm.correlateaudios.single=\u0417\u0432\u0443\u043a\u043e\u0437\u0430\u043f\u0438\u0441\u044c \u0431\u044b\u043b\u0430 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430
@@ -648,7 +647,7 @@ confirm.correlateaudios.multi=\u0417\u0432\u0443\u043a\u043e\u0437\u0430\u043f\u
 tip.title=\u0421\u043e\u0432\u0435\u0442
 tip.useamapcache=\u041f\u0443\u0442\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u044d\u0448\u0430 \u0434\u0438\u0441\u043a\u0430 (\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 -> \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u0434\u0438\u0441\u043a\u00bb)\n\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a.
 tip.learntimeparams=\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u043c\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\n\u0422\u0440\u0435\u043a->\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\n\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0442\u0440\u0435\u043a\u0438.
 tip.title=\u0421\u043e\u0432\u0435\u0442
 tip.useamapcache=\u041f\u0443\u0442\u0435\u043c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043a\u044d\u0448\u0430 \u0434\u0438\u0441\u043a\u0430 (\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 -> \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u044b \u043d\u0430 \u0434\u0438\u0441\u043a\u00bb)\n\u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0438 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0442\u0440\u0430\u0444\u0438\u043a.
 tip.learntimeparams=\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u0431\u043e\u043b\u0435\u0435 \u0442\u043e\u0447\u043d\u044b\u043c\u0438, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435\n\u0422\u0440\u0435\u043a->\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0433\u043d\u043e\u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438\n\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0435 \u0432\u0430\u043c\u0438 \u0442\u0440\u0435\u043a\u0438.
-tip.downloadsrtm=\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u044d\u0442\u043e, \u0432\u044b\u0437\u043e\u0432\u043e\u043c\n\u041e\u043d\u043b\u0430\u0439\u043d-> \u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c SRTM-\u0442\u0430\u0439\u043b\u044b\n\u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u044d\u0448\u0435 \u043a\u0430\u0440\u0442\u044b.
+tip.downloadsrtm=\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0432\u0430\u0448\u0435\u043c \u043a\u044d\u0448\u0435 \u043a\u0430\u0440\u0442\u044b.
 tip.usesrtmfor3d=\u042d\u0442\u043e\u0442 \u0442\u0440\u0435\u043a \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u044b\u0441\u043e\u0442.\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 SRTM, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u0442 \u0434\u043b\u044f \u0432\u0438\u0434\u0430 3D.
 tip.manuallycorrelateone=\u041f\u0440\u0438 \u0440\u0443\u0447\u043d\u043e\u043c \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u0440\u0430\u0439\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043c\u0435\u0442\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.
 
 tip.usesrtmfor3d=\u042d\u0442\u043e\u0442 \u0442\u0440\u0435\u043a \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0432\u044b\u0441\u043e\u0442.\n\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 SRTM, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432\u044b\u0441\u043e\u0442 \u0434\u043b\u044f \u0432\u0438\u0434\u0430 3D.
 tip.manuallycorrelateone=\u041f\u0440\u0438 \u0440\u0443\u0447\u043d\u043e\u043c \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u043a\u0440\u0430\u0439\u043d\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043c\u0435\u0442\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.
 
index e2115aac56fdf23fb4d013d0dd92bd8432c277c8..f7ed52e8efd26e06cdf6489373d20ebd64e531b0 100644 (file)
@@ -1,5 +1,5 @@
 # Text entries for the GpsPrune application
 # Text entries for the GpsPrune application
-# Swedish entries
+# Swedish entries thanks to erikiiofph7
 
 # Menu entries
 menu.file=Arkiv
 
 # Menu entries
 menu.file=Arkiv
@@ -17,7 +17,7 @@ menu.range.all=V\u00e4lj alla
 menu.range.none=V\u00e4lj ingen
 menu.range.start=S\u00e4tt till b\u00f6rjan av intervall
 menu.range.end=S\u00e4tt till slutet av intervall
 menu.range.none=V\u00e4lj ingen
 menu.range.start=S\u00e4tt till b\u00f6rjan av intervall
 menu.range.end=S\u00e4tt till slutet av intervall
-menu.range.average=Medelv\u00e4rdesval
+menu.range.average=Skapa medelv\u00e4rdespunkt
 menu.range.reverse=V\u00e4nd intervall
 menu.range.mergetracksegments=Sl\u00e5 ihop sp\u00e5rsegment
 menu.range.cutandmove=Klipp och flytta urval
 menu.range.reverse=V\u00e4nd intervall
 menu.range.mergetracksegments=Sl\u00e5 ihop sp\u00e5rsegment
 menu.range.cutandmove=Klipp och flytta urval
@@ -35,6 +35,8 @@ menu.view.browser.openstreetmap=Openstreetmap
 menu.view.browser.mapquest=Mapquest
 menu.view.browser.yahoo=Yahoo maps
 menu.view.browser.bing=Bing maps
 menu.view.browser.mapquest=Mapquest
 menu.view.browser.yahoo=Yahoo maps
 menu.view.browser.bing=Bing maps
+menu.view.browser.inlinemap=Inline map
+menu.view.browser.graphhopper=GraphHopper
 menu.settings=Inst\u00e4llningar
 menu.settings.onlinemode=H\u00e4mta kartor fr\u00e5n Internet
 menu.settings.autosave=Autospara inst\u00e4llningar vid avslut
 menu.settings=Inst\u00e4llningar
 menu.settings.onlinemode=H\u00e4mta kartor fr\u00e5n Internet
 menu.settings.autosave=Autospara inst\u00e4llningar vid avslut
@@ -71,6 +73,7 @@ shortcut.menu.file.save=S
 shortcut.menu.track.undo=Z
 shortcut.menu.track.compress=K
 shortcut.menu.range.all=A
 shortcut.menu.track.undo=Z
 shortcut.menu.track.compress=K
 shortcut.menu.range.all=A
+shortcut.menu.point.edit=E
 shortcut.menu.help.help=H
 
 # Functions
 shortcut.menu.help.help=H
 
 # Functions
@@ -96,13 +99,16 @@ function.rearrangewaypoints=Ordna waypoints
 function.convertnamestotimes=Omvandla waypointnamn till tidpunkter
 function.deletefieldvalues=Ta bort f\u00e4lt-v\u00e4rden
 function.findwaypoint=S\u00f6k waypoint
 function.convertnamestotimes=Omvandla waypointnamn till tidpunkter
 function.deletefieldvalues=Ta bort f\u00e4lt-v\u00e4rden
 function.findwaypoint=S\u00f6k waypoint
-function.pastecoordinates=Infoga koordinater
+function.pastecoordinates=Skapa punkt via koordinater
+function.pastecoordinatelist=Skapa punkter via en koordinat-lista
+function.enterpluscode=Skapa punkt(er) via pluss-kod
 function.charts=Diagram
 function.show3d=3D-vy
 function.distances=Avst\u00e5nd
 function.viewfulldetails=Alla detaljer
 function.estimatetime=Uppskatta tid
 function.learnestimationparams=L\u00e4r upp tidsuppskattningsparametrar
 function.charts=Diagram
 function.show3d=3D-vy
 function.distances=Avst\u00e5nd
 function.viewfulldetails=Alla detaljer
 function.estimatetime=Uppskatta tid
 function.learnestimationparams=L\u00e4r upp tidsuppskattningsparametrar
+function.autoplay=Spela upp sp\u00e5ret
 function.setmapbg=V\u00e4lj bakgrundskarta
 function.setpaths=V\u00e4lj s\u00f6kv\u00e4gar f\u00f6r program
 function.selectsegment=Markera aktuellt segment
 function.setmapbg=V\u00e4lj bakgrundskarta
 function.setpaths=V\u00e4lj s\u00f6kv\u00e4gar f\u00f6r program
 function.selectsegment=Markera aktuellt segment
@@ -110,7 +116,6 @@ function.splitsegments=Dela upp sp\u00e5ret i segment
 function.sewsegments=Sy ihop sp\u00e5r-segment
 function.createmarkerwaypoints=Skapa markerings-waypoints
 function.lookupsrtm=H\u00e4mta h\u00f6jddata fr\u00e5n SRTM
 function.sewsegments=Sy ihop sp\u00e5r-segment
 function.createmarkerwaypoints=Skapa markerings-waypoints
 function.lookupsrtm=H\u00e4mta h\u00f6jddata fr\u00e5n SRTM
-function.downloadsrtm=Ladda ner SRTM-h\u00f6jddata
 function.getwikipedia=H\u00e4mta n\u00e4rliggande Wikipedia-artiklar
 function.searchwikipedianames=S\u00f6k i Wikipedia p\u00e5 namn
 function.searchosmpois=H\u00e4mta n\u00e4rliggande OSM-punkter
 function.getwikipedia=H\u00e4mta n\u00e4rliggande Wikipedia-artiklar
 function.searchwikipedianames=S\u00f6k i Wikipedia p\u00e5 namn
 function.searchosmpois=H\u00e4mta n\u00e4rliggande OSM-punkter
@@ -118,6 +123,7 @@ function.searchopencachingde=S\u00f6k p\u00e5 OpenCaching.de
 function.mapillary=S\u00f6k efter foton i Mapillary
 function.downloadosm=Ladda ner OSM-data f\u00f6r omr\u00e5det
 function.duplicatepoint=Duplicera punkt
 function.mapillary=S\u00f6k efter foton i Mapillary
 function.downloadosm=Ladda ner OSM-data f\u00f6r omr\u00e5det
 function.duplicatepoint=Duplicera punkt
+function.projectpoint=Projicera punkt
 function.setcolours=V\u00e4lj f\u00e4rger
 function.setdisplaysettings=V\u00e4lj visningsalternativ
 function.setlanguage=V\u00e4lj spr\u00e5k
 function.setcolours=V\u00e4lj f\u00e4rger
 function.setdisplaysettings=V\u00e4lj visningsalternativ
 function.setlanguage=V\u00e4lj spr\u00e5k
@@ -162,7 +168,9 @@ dialog.load.table.field=F\u00e4lt
 dialog.load.table.datatype=Datatyp
 dialog.load.table.description=Beskrivning
 dialog.delimiter.comma=Komma ,
 dialog.load.table.datatype=Datatyp
 dialog.load.table.description=Beskrivning
 dialog.delimiter.comma=Komma ,
+dialog.delimiter.tab=Tabb
 dialog.delimiter.space=Mellanslag
 dialog.delimiter.space=Mellanslag
+dialog.delimiter.semicolon=Semikolon ;
 dialog.delimiter.other=Annat
 dialog.openoptions.altitudeunits=H\u00f6jdenhet
 dialog.openoptions.speedunits=Hastighetsenheter
 dialog.delimiter.other=Annat
 dialog.openoptions.altitudeunits=H\u00f6jdenhet
 dialog.openoptions.speedunits=Hastighetsenheter
@@ -178,6 +186,7 @@ dialog.jpegload.loadjpegsoutsidearea=Inkludera foton utanf\u00f6r aktuellt omr\u
 dialog.jpegload.progress.title=Laddar in foton
 dialog.jpegload.progress=V\u00e4nta medan foton s\u00f6ks
 dialog.gpsload.nogpsbabel=Inget GPSBabel-program kunde hittas. Forts\u00e4tt \u00e4nd\u00e5?
 dialog.jpegload.progress.title=Laddar in foton
 dialog.jpegload.progress=V\u00e4nta medan foton s\u00f6ks
 dialog.gpsload.nogpsbabel=Inget GPSBabel-program kunde hittas. Forts\u00e4tt \u00e4nd\u00e5?
+dialog.gpsload.device=Enhetsnamn
 dialog.gpsload.format=Format
 dialog.gpsload.getwaypoints=Ladda in waypoints
 dialog.gpsload.gettracks=Ladda in sp\u00e5r
 dialog.gpsload.format=Format
 dialog.gpsload.getwaypoints=Ladda in waypoints
 dialog.gpsload.gettracks=Ladda in sp\u00e5r
@@ -329,9 +338,212 @@ dialog.estimatetime.results.actualtime=Faktisk tid
 dialog.estimatetime.error.nodistance=Tidsuppskattningen kr\u00e4ver kopplade sp\u00e5rpunkter f\u00f6r att f\u00e5 avst\u00e5nd
 dialog.estimatetime.error.noaltitudes=Intervallet har ingen h\u00f6jd-data
 dialog.learnestimationparams.intro=Detta \u00e4r parametrarna ber\u00e4knade fr\u00e5n detta sp\u00e5ret
 dialog.estimatetime.error.nodistance=Tidsuppskattningen kr\u00e4ver kopplade sp\u00e5rpunkter f\u00f6r att f\u00e5 avst\u00e5nd
 dialog.estimatetime.error.noaltitudes=Intervallet har ingen h\u00f6jd-data
 dialog.learnestimationparams.intro=Detta \u00e4r parametrarna ber\u00e4knade fr\u00e5n detta sp\u00e5ret
-dialog.rearrange.tostart=Alla till b\u00f6rjan av fil
-dialog.rearrange.toend=Alla till slut av fil
+dialog.learnestimationparams.averageerror=Medel-avvikelse
+dialog.learnestimationparams.combine=Dessa parametrar kan kombineras med nuvarande v\u00e4rden
+dialog.learnestimationparams.combinedresults=Kombinerat resultat
+dialog.learnestimationparams.weight.100pccurrent=Beh\u00e5ll nuvarande v\u00e4rden
+dialog.learnestimationparams.weight.current=nuvarande
+dialog.learnestimationparams.weight.calculated=ber\u00e4knat
+dialog.learnestimationparams.weight.50pc=Medel av nuvarande v\u00e4rden och ber\u00e4knade v\u00e4rden
+dialog.learnestimationparams.weight.100pccalculated=Anv\u00e4nd dom ber\u00e4knade v\u00e4rdena
+dialog.setmapbg.intro=V\u00e4lj en av kartorna, eller l\u00e4gg till en egen
+dialog.addmapsource.title=L\u00e4gg till en ny karta
+dialog.addmapsource.sourcename=Kartans namn
+dialog.addmapsource.layer1url=URL f\u00f6r f\u00f6rsta lagret
+dialog.addmapsource.layer2url=URL f\u00f6r andra lagret
+dialog.addmapsource.maxzoom=Max zoom-niv\u00e5
+dialog.addmapsource.noname=Namnl\u00f6s
+dialog.gpsies.column.name=Sp\u00e5rnamn
+dialog.gpsies.column.length=L\u00e4ngd
+dialog.gpsies.description=Beskrivning
+dialog.gpsies.nodescription=Ingen beskrivning
+dialog.gpsies.nonefound=Inga sp\u00e5r funna
+dialog.mapillary.nonefound=Inga foton funna
+dialog.wikipedia.column.name=Artikelnamn
+dialog.wikipedia.column.distance=Avst\u00e5nd
+dialog.wikipedia.nonefound=Inga punkter hittade p\u00e5 Wikipedia
+dialog.wikipedia.gallery=Galleri
+dialog.osmpois.column.name=Namn
+dialog.osmpois.column.type=Typ
+dialog.osmpois.nonefound=Inga punkter hittade
+dialog.correlate.photoselect.intro=V\u00e4lj en av dessa korrelerade foton att anv\u00e4nda som tids-offset
+dialog.correlate.select.photoname=Fotonamn
+dialog.correlate.select.timediff=Tidsskillnad
+dialog.correlate.select.photolater=Foto senare
+dialog.correlate.options.intro=V\u00e4lj inst\u00e4llningar f\u00f6r automatisk korrelation
+dialog.correlate.options.offsetpanel=tids-offset
+dialog.correlate.options.offset=Offset
+dialog.correlate.options.offset.hours=timmar,
+dialog.correlate.options.offset.minutes=minuter och
+dialog.correlate.options.offset.seconds=sekunder
+dialog.correlate.options.photolater=Foto senare \u00e4n punkt
+dialog.correlate.options.pointlaterphoto=Punkt senare \u00e4n foto
+dialog.correlate.options.audiolater=Ljud senare \u00e4n punkt
+dialog.correlate.options.pointlateraudio=Punkt senare \u00e4n ljud
+dialog.correlate.options.limitspanel=Korrelationsbegr\u00e4nsningar
+dialog.correlate.options.notimelimit=Ingen tidsbegr\u00e4nsning
+dialog.correlate.options.timelimit=Tidsbegr\u00e4nsning
+dialog.correlate.options.nodistancelimit=Ingen avst\u00e5ndsbegr\u00e4nsning
+dialog.correlate.options.distancelimit=Avst\u00e5ndsbegr\u00e4nsning
+dialog.correlate.options.correlate=Korrelera
+dialog.correlate.alloutsiderange=Alla objekt \u00e4r utanf\u00f6r tidsomf\u00e5nget f\u00f6r sp\u00e5ret, s\u00e5 inga kan korreleras.\nF\u00f6rs\u00f6k att \u00e4ndra offset eller manuellt korrelera \u00e5tminstone ett av objekten.
+dialog.correlate.filetimes=Filens tidsst\u00e4mpel markerar:
+dialog.correlate.filetimes2=av ljudklippet
+dialog.correlate.correltimes=F\u00f6r korrelering, anv\u00e4nd
+dialog.correlate.timestamp.beginning=B\u00f6rjan
+dialog.correlate.timestamp.middle=Mitten
+dialog.correlate.timestamp.end=Slutet
+dialog.correlate.audioselect.intro=V\u00e4lj en av dessa korrelerade ljud att anv\u00e4nda som tids-offset
+dialog.correlate.select.audioname=Ljudnamn
+dialog.correlate.select.audiolater=Ljud senare
+dialog.rearrangewaypoints.desc=V\u00e4lj vart och i vilken ordning waypoints ska hamna
+dialog.rearrangephotos.desc=V\u00e4lj vart och i vilken ordning foto-punkterna ska hamna
+dialog.rearrange.tostart=Alla till b\u00f6rjan
+dialog.rearrange.toend=Alla till slutet
 dialog.rearrange.tonearest=Varje till n\u00e4rmaste sp\u00e5rpunkt
 dialog.rearrange.tonearest=Varje till n\u00e4rmaste sp\u00e5rpunkt
+dialog.rearrange.nosort=Sortera inte
+dialog.rearrange.sortbyfilename=Sortera p\u00e5 filnamn
+dialog.rearrange.sortbyname=Sortera p\u00e5 namn
+dialog.rearrange.sortbytime=Sortera p\u00e5 tid
+dialog.compress.closepoints.title=Ta bort punkter f\u00f6r n\u00e4ra varandra
+dialog.compress.closepoints.paramdesc=Spannfaktor
+dialog.compress.wackypoints.title=Ta bort avvikande punkter
+dialog.compress.wackypoints.paramdesc=Avst\u00e5ndsfaktor
+dialog.compress.singletons.title=Ta bort Singletons
+dialog.compress.singletons.paramdesc=Avst\u00e5ndsfaktor
+dialog.compress.duplicates.title=Ta bort dubbletter
+dialog.compress.douglaspeucker.title=Douglas-Peucker-komprimering
+dialog.compress.douglaspeucker.paramdesc=Spannfaktor
+dialog.compress.summarylabel=Punkter att ta bort
+dialog.compress.confirm=%d punkter har markerats.\nVill du ta bort de markerade punkterna?
+dialog.compress.confirmnone=inga punkter har markerats
+dialog.deletemarked.nonefound=Inga datapunkter kunde tas bort
+dialog.pastecoordinates.desc=Fyll i koordinaterna h\u00e4r
+dialog.pastecoordinates.coords=Koordinater
+dialog.pastecoordinates.nothingfound=V\u00e4nligen kontrollera koordinaterna och f\u00f6rs\u00f6k igen
+dialog.pastecoordinatelist.desc=Fyll i koordinaterna f\u00f6r dom nya punkterna, en punkt per rad
+dialog.pluscode.desc=Fyll i pluss-koden (Open Location Code) h\u00e4r
+dialog.pluscode.code=Pluss-kod
+dialog.help.help=L\u00e4s\n https://gpsprune.activityworkshop.net/\nf\u00f6r mer information och tips,\ninklusive en PDF-anv\u00e4ndarhandbok som man kan k\u00f6pa.
+dialog.about.version=Version
+dialog.about.build=Build
+dialog.about.summarytext1=GpsPrune \u00e4r ett program f\u00f6r att ladda in, visa och redigera data fr\u00e5n GPS-mottagare.
+dialog.about.summarytext2=Det \u00e4r publicerat under Gnu GPL f\u00f6r fri, \u00f6ppen, v\u00e4rldsomsp\u00e4nnande anv\u00e4ndning och f\u00f6rb\u00e4ttring.<br>Kopiering, \u00e5terutgivning och modifieringar \u00e4r till\u00e5tna och uppmuntras<br>enligt villkoren i den inkluderade filen <code>license.txt</code>.
+dialog.about.summarytext3=Bes\u00f6k <code style="font-weight:bold">https://activityworkshop.net/</code> f\u00f6r mer information och tips, inklusive<br>en PDF-anv\u00e4ndarhandbok som du kan k\u00f6pa.
+dialog.about.languages=Tillg\u00e4ngliga spr\u00e5k
+dialog.about.translatedby=\u00d6versatt till svenska av erikiiofph7.
+dialog.about.systeminfo=System-info
+dialog.about.systeminfo.os=Operativsystem
+dialog.about.systeminfo.java=Java Runtime
+dialog.about.systeminfo.java3d=Java3d installerat
+dialog.about.systeminfo.povray=Povray installerat
+dialog.about.systeminfo.exiftool=Exiftool installerat
+dialog.about.systeminfo.gpsbabel=Gpsbabel installerat
+dialog.about.systeminfo.gnuplot=Gnuplot installerat
+dialog.about.yes=Ja
+dialog.about.no=Nej
+dialog.about.credits=Tillk\u00e4nnagivanden
+dialog.about.credits.code=GpsPune:s kod skriven av
+dialog.about.credits.exifcode=Exif:s kad skriven av
+dialog.about.credits.icons=N\u00e5gra ikoner tagna fr\u00e5n
+dialog.about.credits.translators=\u00d6vers\u00e4ttare
+dialog.about.credits.translations=\u00d6vers\u00e4ttningar hj\u00e4lpta av
+dialog.about.credits.devtools=Utvecklingsverktyg
+dialog.about.credits.othertools=\u00d6vriga verktyg
+dialog.about.credits.thanks=Tack till
+dialog.about.readme=L\u00e4sMig
+dialog.checkversion.error=Versionsnummret kunde inte kollas upp.\nVar god kontrollera din internetuppkoppling.
+dialog.checkversion.uptodate=Du anv\u00e4nder den senaste versionen av GpsPrune.
+dialog.checkversion.newversion1=En ny version av GpsPrune finns nu tillg\u00e4nglig! Den senaste versionen \u00e4r
+dialog.checkversion.newversion2=.
+dialog.checkversion.releasedate1=Denna nya version sl\u00e4pptes
+dialog.checkversion.releasedate2=.
+dialog.checkversion.download=F\u00f6r att ladda ner den nya versionen g\u00e5 till https://gpsprune.activityworkshop.net/download.html.
+dialog.keys.intro=Du kan anv\u00e4nda dessa snabbkommandon ist\u00e4llet f\u00f6r att anv\u00e4nda musen
+dialog.keys.keylist=<table><tr><td>Piltangenter</td><td>Panorera kartan \u00e5t v\u00e4nster, h\u00f6ger, upp, ner</td></tr><tr><td>Ctrl + v\u00e4nster, h\u00f6ger piltangent</td><td>Markera f\u00f6reg\u00e5ende eller n\u00e4sta punkt</td></tr><tr><td>Ctrl + pil upp, pil ner</td><td>Zooma in eller ut</td></tr><tr><td>Ctrl + PgUp, PgDown</td><td>Markera f\u00f6reg\u00e5ende, n\u00e4sta segment</td></tr><tr><td>Ctrl + Home, End</td><td>Markera f\u00f6rsta, sista punkt</td></tr><tr><td>Del</td><td>Radera markerad punkt</td></tr></table>
+dialog.keys.normalmodifier=Ctrl
+dialog.keys.macmodifier=Command
+dialog.paths.prune.gnuplotpath=S\u00f6kv\u00e4g till gnuplot
+dialog.paths.prune.gpsbabelpath=S\u00f6kv\u00e4g till gpsbabel
+dialog.paths.prune.exiftoolpath=S\u00f6kv\u00e4g till exiftool
+dialog.setpaths.intro=Om du beh\u00f6ver kan du ange s\u00f6kv\u00e4gar till dom externa programmen:
+dialog.setpaths.found=S\u00f6kv\u00e4g hittad?
+dialog.addaltitude.noaltitudes=Det valda intervallet inneh\u00e5ller ingen h\u00f6jddata
+dialog.addaltitude.desc=H\u00f6jd-offset att addera
+dialog.lookupsrtm.overwritezeros=Skriva \u00f6ver h\u00f6jd-v\u00e4rden som \u00e4r noll?
+dialog.setcolours.intro=Klicka p\u00e5 en f\u00e4rg-ruta f\u00f6r att \u00e4ndra f\u00e4rg
+dialog.setcolours.background=Bakgrund
+dialog.setcolours.borders=Kanter
+dialog.setcolours.lines=Linjer
+dialog.setcolours.primary=Prim\u00e4r
+dialog.setcolours.secondary=Sekund\u00e4r
+dialog.setcolours.point=Punkter
+dialog.setcolours.selection=Markering
+dialog.setcolours.text=Text
+dialog.colourchooser.title=V\u00e4lj f\u00e4rg
+dialog.colourchooser.red=R\u00f6d
+dialog.colourchooser.green=Gr\u00f6n
+dialog.colourchooser.blue=Bl\u00e5
+dialog.colourer.intro=En punkt-m\u00e5lare kan ge sp\u00e5rpunkter olika f\u00e4rg
+dialog.colourer.type=M\u00e5lar-typ
+dialog.colourer.type.none=Ingen
+dialog.colourer.type.byfile=Efter fil
+dialog.colourer.type.bysegment=Efter segment
+dialog.colourer.type.byaltitude=Efter h\u00f6jd
+dialog.colourer.type.byspeed=Efter hastighet
+dialog.colourer.type.byvertspeed=Efter vertikal hastighet
+dialog.colourer.type.bygradient=Efter gradient
+dialog.colourer.type.bydate=Efter datum
+dialog.colourer.start=Start-f\u00e4rg
+dialog.colourer.end=Slut-f\u00e4rg
+dialog.colourer.maxcolours=Max antal f\u00e4rger
+dialog.setlanguage.firstintro=Du kan antingen v\u00e4lja ett av dom inkluderade spr\u00e5ken<p>eller v\u00e4lja att anv\u00e4nda en text-fil ist\u00e4llet.
+dialog.setlanguage.secondintro=Du m\u00e5ste spara dina inst\u00e4llningar och sedan<p>starta om GpsPrune f\u00f6r att \u00e4ndringarna ska verkst\u00e4llas.
+dialog.setlanguage.language=Spr\u00e5k
+dialog.setlanguage.languagefile=Spr\u00e5k-fil
+dialog.setlanguage.endmessage=Spara dina inst\u00e4llningar nu och starta om GpsPrune\nf\u00f6r att \u00e4ndringarna ska verkst\u00e4llas.
+dialog.setlanguage.endmessagewithautosave=Var god starta om GpsPrune f\u00f6r att bytet av spr\u00e5k ska ske.
+dialog.diskcache.save=Spara kartbilder till h\u00e5rddisk
+dialog.diskcache.dir=Cache-mapp
+dialog.diskcache.createdir=Skapa mapp
+dialog.diskcache.nocreate=Ingen cache-mapp skapad
+dialog.diskcache.cannotwrite=Kart-rutor ("tiles") kan inte sparas i den valda mappen
+dialog.diskcache.table.path=Mapp
+dialog.diskcache.table.usedby=Anv\u00e4nds av
+dialog.diskcache.table.zoom=Zoom
+dialog.diskcache.table.tiles=Kart-rutor ("tiles")
+dialog.diskcache.table.megabytes=Megabytes
+dialog.diskcache.tileset=Upps\u00e4ttning kart-rutor ("tiles")
+dialog.diskcache.tileset.multiple=multipla
+dialog.weather.sunrise=Soluppg\u00e5ng
+dialog.weather.sunset=Solnedg\u00e5ng
+dialog.weather.temperatureunits=Temperaturer
+dialog.weather.currentforecast=Nuvarande v\u00e4der
+dialog.weather.dailyforecast=Flerdygnsprognos
+dialog.weather.day.now=Nuvarande v\u00e4der
+dialog.weather.day.today=Idag
+dialog.weather.day.tomorrow=Imorgon
+dialog.weather.day.monday=M\u00e5ndag
+dialog.weather.day.tuesday=Tisdag
+dialog.weather.day.wednesday=Onsdag
+dialog.weather.day.thursday=Torsdag
+dialog.weather.day.friday=Fredag
+dialog.weather.day.saturday=L\u00f6rdag
+dialog.weather.day.sunday=S\u00f6ndag
+dialog.weather.wind=Vind
+dialog.weather.temp=Temp
+dialog.weather.humidity=Fuktighet
+dialog.deletebydate.nodate=Ingen tidsst\u00e4mpel
+dialog.deletebydate.column.keep=Beh\u00e5ll
+dialog.deletebydate.column.delete=Ta bort
+dialog.settimezone.system=Anv\u00e4nd systemets tidszon
+dialog.settimezone.custom=Anv\u00e4nd f\u00f6ljande tidszon:
+dialog.settimezone.selectedzone=Vald tidszon
+dialog.settimezone.offsetfromutc=Offset fr\u00e5n UTC
+dialog.autoplay.usetimestamps=Anv\u00e4nd tidsst\u00e4mplar fr\u00e5n punkter
+dialog.autoplay.rewind=Tillbaka till b\u00f6rjan
+dialog.autoplay.pause=Paus
+dialog.autoplay.play=Spela upp
 
 # Buttons
 button.ok=OK
 
 # Buttons
 button.ok=OK
@@ -349,9 +561,9 @@ button.no=Nej
 button.yestoall=Ja till alla
 button.notoall=Nej till alla
 button.always=Alltid
 button.yestoall=Ja till alla
 button.notoall=Nej till alla
 button.always=Alltid
-button.select=Markera
-button.selectall=Markera alla
-button.selectnone=Markera inget
+button.select=V\u00e4lj
+button.selectall=V\u00e4lj alla
+button.selectnone=V\u00e4lj ingen
 button.preview=F\u00f6rhandsvisa
 button.load=Ladda in
 button.guessfields=Gissa f\u00e4lt
 button.preview=F\u00f6rhandsvisa
 button.load=Ladda in
 button.guessfields=Gissa f\u00e4lt
@@ -385,8 +597,8 @@ details.range.to=till
 details.altitude.to=till
 details.range.climb=Uppf\u00f6r
 details.range.descent=Nedf\u00f6r
 details.altitude.to=till
 details.range.climb=Uppf\u00f6r
 details.range.descent=Nedf\u00f6r
-details.coordformat=Koortinat-format
-details.distanceunits=Distans-enhet
+details.coordformat=Koordinatformat
+details.distanceunits=Distansenhet
 display.range.time.secs=s
 display.range.time.mins=m
 display.range.time.hours=h
 display.range.time.secs=s
 display.range.time.mins=m
 display.range.time.hours=h
@@ -410,5 +622,62 @@ details.audio.file=Ljudfil
 details.audio.playing=spelar...
 map.overzoom=Inga kartor tillg\u00e4ngliga p\u00e5 denna zoom-niv\u00e5
 
 details.audio.playing=spelar...
 map.overzoom=Inga kartor tillg\u00e4ngliga p\u00e5 denna zoom-niv\u00e5
 
+# Field names
+fieldname.latitude=Latitud
+fieldname.longitude=Longitud
+fieldname.coordinates=Koordinaterna
+fieldname.altitude=Altitud
+fieldname.timestamp=Tidpunkt
+fieldname.time=Tid
+fieldname.date=Datum
+fieldname.waypointname=Namn
+fieldname.waypointtype=Typ
+fieldname.newsegment=Segment
+fieldname.prefix=F\u00e4lt
+fieldname.distance=Distans
+fieldname.speed=Hastighet
+fieldname.verticalspeed=Vertikal hastighet
+fieldname.description=Beskrivning
+fieldname.comment=Kommentar
+fieldname.mediafilename=Filnamn
+
+# Measurement units
+units.original=Original
+units.default=Default
+units.metres=Meter
+units.metres.short=m
+units.feet=Fot
+units.feet.short=fot
+units.kilometres=Kilometer
+units.kilometres.short=km
+units.kilometresperhour=km per timme
+units.kilometresperhour.short=km/h
+units.miles=Miles
+units.miles.short=mi
+units.milesperhour=miles per timme
+units.milesperhour.short=mph
+units.nauticalmiles=Nautiska mil
+units.nauticalmiles.short=N.m.
+units.nauticalmilesperhour.short=knop
+units.metrespersec=meter per sekund
+units.metrespersec.short=m/s
+units.feetpersec=fot per sekund
+units.feetpersec.short=fot/s
+units.hours=timmar
+units.minutes=minuter
+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=och
+logic.or=eller
+
 # External urls and services
 openweathermap.lang=se
 # External urls and services
 openweathermap.lang=se
index 43ef43d6b54a34a922b3f6e9da3ea70c4bc87957..8e82e11ea284092c640651e56a335661cc5df77d 100644 (file)
@@ -106,7 +106,6 @@ function.selectsegment=\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u043f\u043e\u
 function.splitsegments=\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u0442\u0440\u0435\u043a \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438
 function.sewsegments=\u0417\u0448\u0438\u0442\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438 \u0442\u0440\u0435\u043a\u0456\u0432 \u0440\u0430\u0437\u043e\u043c
 function.lookupsrtm=\u041e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0432\u0438\u0441\u043e\u0442\u0438 \u0437 SRTM
 function.splitsegments=\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u0442\u0440\u0435\u043a \u043d\u0430 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438
 function.sewsegments=\u0417\u0448\u0438\u0442\u0438 \u0441\u0435\u0433\u043c\u0435\u043d\u0442\u0438 \u0442\u0440\u0435\u043a\u0456\u0432 \u0440\u0430\u0437\u043e\u043c
 function.lookupsrtm=\u041e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u0432\u0438\u0441\u043e\u0442\u0438 \u0437 SRTM
-function.downloadsrtm=\u0417\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 SRTM-\u0442\u0430\u0439\u043b\u0438
 function.getwikipedia=\u041e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0443 \u0441\u0442\u0430\u0442\u0442\u044e \u0437 \u0412\u0456\u043a\u0456\u043f\u0435\u0434\u0456\u0457
 function.searchwikipedianames=\u041f\u043e\u0448\u0443\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0437 \u0412\u0456\u043a\u0456\u043f\u0435\u0434\u0456\u0457 \u0437\u0430 \u043d\u0430\u0437\u0432\u043e\u044e
 function.downloadosm=\u0417\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 OSM-\u0434\u0430\u043d\u0456 \u043d\u0430 \u0442\u0435\u0440\u0438\u0442\u043e\u0440\u0456\u044e
 function.getwikipedia=\u041e\u0442\u0440\u0438\u043c\u0430\u0442\u0438 \u043d\u0430\u0439\u0431\u043b\u0438\u0436\u0447\u0443 \u0441\u0442\u0430\u0442\u0442\u044e \u0437 \u0412\u0456\u043a\u0456\u043f\u0435\u0434\u0456\u0457
 function.searchwikipedianames=\u041f\u043e\u0448\u0443\u043a \u0441\u0442\u0430\u0442\u0435\u0439 \u0437 \u0412\u0456\u043a\u0456\u043f\u0435\u0434\u0456\u0457 \u0437\u0430 \u043d\u0430\u0437\u0432\u043e\u044e
 function.downloadosm=\u0417\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 OSM-\u0434\u0430\u043d\u0456 \u043d\u0430 \u0442\u0435\u0440\u0438\u0442\u043e\u0440\u0456\u044e
index eba2b714906cc5f9e6cbb5f4d16562d222b9305c..d915629508ca5685d584579a7f57ff69ed76a03a 100644 (file)
@@ -106,7 +106,6 @@ function.selectsegment=\u9009\u4e2d\u5f53\u524d\u8f68\u8ff9\u6bb5
 function.splitsegments=\u5206\u5272\u8f68\u8ff9
 function.sewsegments=\u63a5\u5408\u8f68\u8ff9\u7247\u6bb5
 function.lookupsrtm=\u4eceSRTM\u83b7\u5f97\u9ad8\u5ea6\u4fe1\u606f
 function.splitsegments=\u5206\u5272\u8f68\u8ff9
 function.sewsegments=\u63a5\u5408\u8f68\u8ff9\u7247\u6bb5
 function.lookupsrtm=\u4eceSRTM\u83b7\u5f97\u9ad8\u5ea6\u4fe1\u606f
-function.downloadsrtm=\u4e0b\u8f7dSRTM\u6570\u636e
 function.getwikipedia=\u7ef4\u57fa\u767e\u79d1\u6709\u5173\u672c\u5730\u6587\u7ae0
 function.searchwikipedianames=\u6309\u540d\u5b57\u4ece\u7ef4\u57fa\u767e\u79d1\u67e5\u627e
 function.downloadosm=\u4e0b\u8f7d\u6b64\u5730OSM\u6570\u636e
 function.getwikipedia=\u7ef4\u57fa\u767e\u79d1\u6709\u5173\u672c\u5730\u6587\u7ae0
 function.searchwikipedianames=\u6309\u540d\u5b57\u4ece\u7ef4\u57fa\u767e\u79d1\u67e5\u627e
 function.downloadosm=\u4e0b\u8f7d\u6b64\u5730OSM\u6570\u636e
@@ -584,7 +583,6 @@ confirm.running=\u8bf7\u7a0d\u7b49...
 confirm.lookupsrtm=\u627e\u5230 %d \u9ad8\u5ea6\u503c
 confirm.downloadsrtm=\u4e0b\u8f7d %d \u9ad8\u5ea6\u6587\u4ef6\u5230\u7f13\u5b58\u4e2d
 confirm.downloadsrtm.1=\u4e0b\u8f7d %d \u9ad8\u5ea6\u6587\u4ef6\u5230\u7f13\u5b58\u4e2d
 confirm.lookupsrtm=\u627e\u5230 %d \u9ad8\u5ea6\u503c
 confirm.downloadsrtm=\u4e0b\u8f7d %d \u9ad8\u5ea6\u6587\u4ef6\u5230\u7f13\u5b58\u4e2d
 confirm.downloadsrtm.1=\u4e0b\u8f7d %d \u9ad8\u5ea6\u6587\u4ef6\u5230\u7f13\u5b58\u4e2d
-confirm.downloadsrtm.none=\u65e0\u9700\u4e0b\u8f7d\uff0c\u6587\u4ef6\u5df2\u5b58\u50a8\u5728\u7f13\u5b58\u4e2d
 confirm.deletefieldvalues=\u533a\u57df\u6570\u636e\u5df2\u5220\u9664
 confirm.audioload=\u5df2\u6dfb\u52a0\u58f0\u97f3\u6587\u4ef6
 confirm.correlateaudios.single=\u58f0\u97f3\u5df2\u5173\u8054
 confirm.deletefieldvalues=\u533a\u57df\u6570\u636e\u5df2\u5220\u9664
 confirm.audioload=\u5df2\u6dfb\u52a0\u58f0\u97f3\u6587\u4ef6
 confirm.correlateaudios.single=\u58f0\u97f3\u5df2\u5173\u8054
@@ -594,7 +592,6 @@ confirm.correlateaudios.multi=\u58f0\u97f3\u5df2\u5173\u8054
 tip.title=\u63d0\u793a
 tip.useamapcache=\u542f\u7528\u78c1\u76d8\u7f13\u5b58 (\u8bbe\u7f6e -> \u4fdd\u5b58\u5730\u56fe)\n\u53ef\u4ee5\u63d0\u9ad8\u663e\u793a\u901f\u5ea6\uff0c\u51cf\u5c11\u7f51\u7edc\u6d41\u91cf
 tip.learntimeparams=\u5bf9\u8bb0\u5f55\u7684\u8f68\u8ff9\u542f\u7528 \u8f68\u8ff9 -> \u4f7f\u7528\u5f53\u524d\u8f68\u8ff9\u53c2\u6570\u4f30\u8ba1\u65f6\u95f4\n\u5c06\u4f7f\u7ed3\u679c\u66f4\u52a0\u7cbe\u786e
 tip.title=\u63d0\u793a
 tip.useamapcache=\u542f\u7528\u78c1\u76d8\u7f13\u5b58 (\u8bbe\u7f6e -> \u4fdd\u5b58\u5730\u56fe)\n\u53ef\u4ee5\u63d0\u9ad8\u663e\u793a\u901f\u5ea6\uff0c\u51cf\u5c11\u7f51\u7edc\u6d41\u91cf
 tip.learntimeparams=\u5bf9\u8bb0\u5f55\u7684\u8f68\u8ff9\u542f\u7528 \u8f68\u8ff9 -> \u4f7f\u7528\u5f53\u524d\u8f68\u8ff9\u53c2\u6570\u4f30\u8ba1\u65f6\u95f4\n\u5c06\u4f7f\u7ed3\u679c\u66f4\u52a0\u7cbe\u786e
-tip.downloadsrtm=\u53ef\u4ee5\u70b9\u51fb \u8054\u7f51 -> \u4e0b\u8f7dSRTM\u6570\u636e\n\u5c06\u6570\u636e\u4fdd\u5b58\u5230\u78c1\u76d8\u7f13\u5b58\u4ee5\u63d0\u9ad8\u901f\u5ea6
 tip.usesrtmfor3d=\u6b64\u8f68\u8ff9\u6ca1\u6709\u9ad8\u5ea6\u4fe1\u606f\n\u53ef\u4ee5\u901a\u8fc7SRTM\u83b7\u53d6\u5927\u81f4\u9ad8\u5ea6\u4ee5\u663e\u793a3D\u89c6\u56fe
 tip.manuallycorrelateone=\u63d0\u793a\uff1a\u624b\u52a8\u94fe\u63a5\u81f3\u5c11\u4e00\u5f20\u7167\u7247\uff0c\u53ef\u81ea\u52a8\u8ba1\u7b97\u65f6\u95f4\u504f\u79fb
 
 tip.usesrtmfor3d=\u6b64\u8f68\u8ff9\u6ca1\u6709\u9ad8\u5ea6\u4fe1\u606f\n\u53ef\u4ee5\u901a\u8fc7SRTM\u83b7\u53d6\u5927\u81f4\u9ad8\u5ea6\u4ee5\u663e\u793a3D\u89c6\u56fe
 tip.manuallycorrelateone=\u63d0\u793a\uff1a\u624b\u52a8\u94fe\u63a5\u81f3\u5c11\u4e00\u5f20\u7167\u7247\uff0c\u53ef\u81ea\u52a8\u8ba1\u7b97\u65f6\u95f4\u504f\u79fb
 
index 6f63080ceb98461a89ada946fda0d9f35b4fc6f4..ebd106ab59cd77657a7ce7ec1b1943f863146679 100644 (file)
@@ -24,7 +24,7 @@ public class GpxHandler extends XmlHandler
        private String _latitude = null, _longitude = null;
        private GpxTag _elevation = new GpxTag(), _time = new GpxTag();
        private GpxTag _type = new GpxTag(), _description = new GpxTag();
        private String _latitude = null, _longitude = null;
        private GpxTag _elevation = new GpxTag(), _time = new GpxTag();
        private GpxTag _type = new GpxTag(), _description = new GpxTag();
-       private GpxTag _link = new GpxTag();
+       private GpxTag _link = new GpxTag(), _comment = new GpxTag();
        private GpxTag _currentTag = null;
        private ArrayList<String[]> _pointList = new ArrayList<String[]>();
        private ArrayList<String> _linkList = new ArrayList<String>();
        private GpxTag _currentTag = null;
        private ArrayList<String[]> _pointList = new ArrayList<String[]>();
        private ArrayList<String> _linkList = new ArrayList<String>();
@@ -58,6 +58,7 @@ public class GpxHandler extends XmlHandler
                        _type.setValue(null);
                        _link.setValue(null);
                        _description.setValue(null);
                        _type.setValue(null);
                        _link.setValue(null);
                        _description.setValue(null);
+                       _comment.setValue(null);
                }
                else if (tag.equals("ele")) {
                        _currentTag = _elevation;
                }
                else if (tag.equals("ele")) {
                        _currentTag = _elevation;
@@ -84,6 +85,9 @@ public class GpxHandler extends XmlHandler
                else if (tag.equals("description") || tag.equals("desc")) {
                        _currentTag = _description;
                }
                else if (tag.equals("description") || tag.equals("desc")) {
                        _currentTag = _description;
                }
+               else if (tag.equals("cmt")) {
+                       _currentTag = _comment;
+               }
                else if (tag.equals("link")) {
                        _link.setValue(attributes.getValue("href"));
                }
                else if (tag.equals("link")) {
                        _link.setValue(attributes.getValue("href"));
                }
@@ -153,7 +157,7 @@ public class GpxHandler extends XmlHandler
        private void processPoint()
        {
                // Put the values into a String array matching the order in getFieldArray()
        private void processPoint()
        {
                // Put the values into a String array matching the order in getFieldArray()
-               String[] values = new String[8];
+               String[] values = new String[9];
                values[0] = _latitude;
                values[1] = _longitude;
                values[2] = _elevation.getValue();
                values[0] = _latitude;
                values[1] = _longitude;
                values[2] = _elevation.getValue();
@@ -166,6 +170,7 @@ public class GpxHandler extends XmlHandler
                }
                values[6] = _type.getValue();
                values[7] = _description.getValue();
                }
                values[6] = _type.getValue();
                values[7] = _description.getValue();
+               values[8] = _comment.getValue();
                _pointList.add(values);
                _trackNameList.addPoint(_trackNum, _trackName.getValue(), _isTrackPoint);
                _linkList.add(_link.getValue());
                _pointList.add(values);
                _trackNameList.addPoint(_trackNum, _trackName.getValue(), _isTrackPoint);
                _linkList.add(_link.getValue());
@@ -179,7 +184,7 @@ public class GpxHandler extends XmlHandler
        {
                final Field[] fields = {Field.LATITUDE, Field.LONGITUDE, Field.ALTITUDE,
                        Field.WAYPT_NAME, Field.TIMESTAMP, Field.NEW_SEGMENT,
        {
                final Field[] fields = {Field.LATITUDE, Field.LONGITUDE, Field.ALTITUDE,
                        Field.WAYPT_NAME, Field.TIMESTAMP, Field.NEW_SEGMENT,
-                       Field.WAYPT_TYPE, Field.DESCRIPTION};
+                       Field.WAYPT_TYPE, Field.DESCRIPTION, Field.COMMENT};
                return fields;
        }
 
                return fields;
        }
 
index 0023c7426ed68dcb0527af98b360bac6cdd67036..405a5366e37528360b3cacc7fe1c0f71d6309d28 100644 (file)
@@ -1,5 +1,5 @@
-GpsPrune version 20
-===================
+GpsPrune version 20.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.
 
 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:
 =======
 
 To run GpsPrune from the jar file, simply call it from a command prompt or shell:
-   java -jar gpsprune_20.jar
+   java -jar gpsprune_20.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
 
 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,11 +25,24 @@ 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:
 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_20.jar --lang=DE
+   java -jar gpsprune_20.1.jar --lang=DE
 
 
 
 
-New with version 20
+New with version 20.1
 =====================
 =====================
+The following fixes and additions were made since version 20:
+  - Starting with an empty map (fperrin)
+  - Reading and writing <cmt> tags from gpx files (Willy)
+  - Add option to use GTK look-and-feel (fperrin)
+  - Translation updates (Carlos, Tche333)
+  - Solve issue #29/973910 regarding missing tile cache (Peter Gervai)
+  - Remove "Download SRTM" function and just do it automatically
+  - Tweak waypoint icons
+  - Fix problem with a recently-used file which has disappeared
+  - Fix problem with moving / renaming downloaded tile files
+
+New with version 20
+===================
 The following fixes and additions were made since version 19:
   - Add option to use Nimbus look-and-feel (wishlist 77)
   - Extend the marker waypoints function to include half the distance, half the climb and half the descent
 The following fixes and additions were made since version 19:
   - Add option to use Nimbus look-and-feel (wishlist 77)
   - Extend the marker waypoints function to include half the distance, half the climb and half the descent
index 88ac7914c29a1b92a235ff426e782f07ca4fcae3..8bfd0905f857b5c744ca8a25c9455da656dbd516 100644 (file)
@@ -583,6 +583,7 @@ public class GpxExporter extends GenericFunction implements Runnable
                        }
                        source = replaceGpxTags(source, "<desc>", "</desc>",
                                XmlUtils.fixCdata(inPoint.getFieldValue(Field.DESCRIPTION)));
                        }
                        source = replaceGpxTags(source, "<desc>", "</desc>",
                                XmlUtils.fixCdata(inPoint.getFieldValue(Field.DESCRIPTION)));
+                       source = replaceGpxTags(source, "<cmt>", "</cmt>", inPoint.getFieldValue(Field.COMMENT));
                }
                // photo / audio links
                if (source != null && (inPoint.hasMedia() || source.indexOf("</link>") > 0)) {
                }
                // photo / audio links
                if (source != null && (inPoint.hasMedia() || source.indexOf("</link>") > 0)) {
@@ -733,13 +734,21 @@ public class GpxExporter extends GenericFunction implements Runnable
                inWriter.write(XmlUtils.fixCdata(inPoint.getWaypointName().trim()));
                inWriter.write("</name>\n");
                // description, if any
                inWriter.write(XmlUtils.fixCdata(inPoint.getWaypointName().trim()));
                inWriter.write("</name>\n");
                // description, if any
-               String desc = XmlUtils.fixCdata(inPoint.getFieldValue(Field.DESCRIPTION));
+               final String desc = XmlUtils.fixCdata(inPoint.getFieldValue(Field.DESCRIPTION));
                if (desc != null && !desc.equals(""))
                {
                        inWriter.write("\t\t<desc>");
                        inWriter.write(desc);
                        inWriter.write("</desc>\n");
                }
                if (desc != null && !desc.equals(""))
                {
                        inWriter.write("\t\t<desc>");
                        inWriter.write(desc);
                        inWriter.write("</desc>\n");
                }
+               // comment, if any
+               final String comment = XmlUtils.fixCdata(inPoint.getFieldValue(Field.COMMENT));
+               if (comment != null && !comment.equals(""))
+               {
+                       inWriter.write("\t\t<cmt>");
+                       inWriter.write(comment);
+                       inWriter.write("</cmt>\n");
+               }
                // Media links, if any
                if (inSettings.getExportPhotoPoints() && inPoint.getPhoto() != null)
                {
                // Media links, if any
                if (inSettings.getExportPhotoPoints() && inPoint.getPhoto() != null)
                {
index 263a3067f4902b5916c2b5e43d63bfeccdb21c5c..28b65ea0dddacd1b731eda3fdc9e7f8b80b5b7c4 100644 (file)
@@ -108,14 +108,11 @@ public class MapGrouter implements TileConsumer
                                                // Wait until tile is available (loaded asynchronously)
                                                while (tile.getWidth(null) < 0 && !inDownload)
                                                {
                                                // Wait until tile is available (loaded asynchronously)
                                                while (tile.getWidth(null) < 0 && !inDownload)
                                                {
-                                                       // System.out.println("Wait for tile width");
                                                        try {
                                                        try {
-                                                               Thread.sleep(inDownload ? 500 : 100);
+                                                               Thread.sleep(100);
                                                        }
                                                        catch (InterruptedException ie) {}
                                                }
                                                        }
                                                        catch (InterruptedException ie) {}
                                                }
-                                               // work out where to copy it to, paint it
-                                               // System.out.println("Painting tile " + x + "," + y + " at " + xOffset + "," + yOffset);
                                                numTilesUsed++;
                                                g.drawImage(tile, xOffset, yOffset, null);
                                        }
                                                numTilesUsed++;
                                                g.drawImage(tile, xOffset, yOffset, null);
                                        }
@@ -177,4 +174,10 @@ public class MapGrouter implements TileConsumer
        {
                // Doesn't need any action
        }
        {
                // Doesn't need any action
        }
+
+       /** React to cache problem */
+       public void reportCacheFailure()
+       {
+               // Doesn't need any action
+       }
 }
 }