]> gitweb.fperrin.net Git - GpsPrune.git/commitdiff
Version 12.1, December 2010
authoractivityworkshop <mail@activityworkshop.net>
Sun, 15 Feb 2015 09:52:59 +0000 (10:52 +0100)
committeractivityworkshop <mail@activityworkshop.net>
Sun, 15 Feb 2015 09:52:59 +0000 (10:52 +0100)
tim/prune/GpsPruner.java
tim/prune/gui/map/MapCanvas.java
tim/prune/lang/prune-texts_zh.properties
tim/prune/save/GpxExporter.java

index 217d7d429ceee7036d72058d6987527e63b27758..0028093a3e3412d8a0a51d613d5e61d65d6d19d8 100644 (file)
@@ -35,9 +35,9 @@ import tim.prune.gui.profile.ProfileChart;
 public class GpsPruner
 {
        /** Version number of application, used in about screen and for version check */
-       public static final String VERSION_NUMBER = "12";
+       public static final String VERSION_NUMBER = "12.1";
        /** Build number, just used for about screen */
-       public static final String BUILD_NUMBER = "223";
+       public static final String BUILD_NUMBER = "224";
        /** Static reference to App object */
        private static App APP = null;
 
index 2308facb099668175044103480110e81b605574f..acac7a186dc6d923f1fec056479ae893dd015511 100644 (file)
@@ -276,6 +276,7 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                zoomInItem.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e)
                        {
+                               panMap((_popupMenuX - getWidth()/2)/2, (_popupMenuY - getHeight()/2)/2);
                                zoomIn();
                        }});
                _popup.add(zoomInItem);
@@ -283,6 +284,7 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
                zoomOutItem.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e)
                        {
+                               panMap(-(_popupMenuX - getWidth()/2), -(_popupMenuY - getHeight()/2));
                                zoomOut();
                        }});
                _popup.add(zoomOutItem);
@@ -1090,10 +1092,14 @@ public class MapCanvas extends JPanel implements MouseListener, MouseMotionListe
        public void mouseWheelMoved(MouseWheelEvent inE)
        {
                int clicks = inE.getWheelRotation();
-               if (clicks < 0)
+               if (clicks < 0) {
+                       panMap((inE.getX() - getWidth()/2)/2, (inE.getY() - getHeight()/2)/2);
                        zoomIn();
-               else if (clicks > 0)
+               }
+               else if (clicks > 0) {
+                       panMap(-(inE.getX() - getWidth()/2), -(inE.getY() - getHeight()/2));
                        zoomOut();
+               }
        }
 
        /**
index 9c8d7b2b285815df984ba3b5b1f94844c2aeea5f..4dfc88a02824453d1ccd536df507792105df65bf 100644 (file)
@@ -30,9 +30,7 @@ menu.point.editpoint=\u7f16\u8f91\u8f68\u8ff9\u70b9
 menu.point.deletepoint=\u5220\u9664\u8f68\u8ff9\u70b9
 menu.photo=\u76f8\u7247
 menu.photo.saveexif=\u5750\u6807\u4fdd\u5b58\u81f3Exif
-function.connecttopoint=\u94fe\u63a5\u76f8\u7247
-function.disconnectfrompoint=\u64a4\u9500\u94fe\u63a5
-function.removephoto=\u5220\u9664\u7167\u7247
+menu.audio=\u58f0\u97f3
 menu.view=\u67e5\u770b
 menu.view.showsidebars=\u663e\u793a\u8fb9\u6846
 menu.view.browser=\u5728\u6d4f\u89c8\u5668\u4e2d\u6253\u5f00\u5730\u56fe
@@ -49,6 +47,7 @@ menu.map.zoomin=\u653e\u5927
 menu.map.zoomout=\u7f29\u5c0f
 menu.map.zoomfull=\u539f\u5c3a\u5bf8
 menu.map.newpoint=\u65b0\u5efa\u8f68\u8ff9\u70b9
+menu.map.drawpoints=\u65b0\u5efa\u8f68\u591a\u4e2a\u8ff9\u70b9
 menu.map.connect=\u8fde\u63a5\u8f68\u8ff9\u70b9
 menu.map.autopan=\u81ea\u52a8\u7f29\u653e
 menu.map.showmap=\u663e\u793a\u5730\u56fe
@@ -80,14 +79,27 @@ function.setpaths=\u8bbe\u7f6e\u7a0b\u5e8f\u8def\u5f84
 function.getgpsies=Gpsies\u8f68\u8ff9
 function.uploadgpsies=\u8f68\u8ff9\u4e0a\u4f20\u5230 Gpsies
 function.lookupsrtm=\u4eceSRTM\u83b7\u5f97\u9ad8\u5ea6\u4fe1\u606f
+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.duplicatepoint=\u590d\u5236\u70b9
 function.setcolours=\u8bbe\u7f6e\u989c\u8272
+function.setlinewidth=\u8bbe\u7f6e\u7ebf\u4f53\u5bbd\u5ea6
 function.setlanguage=\u8bbe\u7f6e\u8bed\u8a00
+function.connecttopoint=\u94fe\u63a5\u76f8\u7247
+function.disconnectfrompoint=\u64a4\u9500\u94fe\u63a5
+function.removephoto=\u5220\u9664\u7167\u7247
 function.correlatephotos=\u94fe\u63a5\u76f8\u7247
 function.rearrangephotos=\u91cd\u6392\u76f8\u7247
 function.rotatephotoleft=\u5de6\u65cb\u8f6c
 function.rotatephotoright=\u53f3\u65cb\u8f6c
+function.photopopup=\u663e\u793a\u5f39\u51fa\u7167\u7247
 function.ignoreexifthumb=\u5ffd\u7565Exif\u7f29\u7565\u56fe
+function.loadaudio=\u6dfb\u52a0\u58f0\u97f3\u6587\u4ef6
+function.removeaudio=\u5220\u9664\u58f0\u97f3\u6587\u4ef6
+function.correlateaudios=\u5173\u8054\u58f0\u97f3\u6587\u4ef6
+function.playaudio=\u64ad\u653e\u58f0\u97f3\u6587\u4ef6
+function.stopaudio=\u505c\u6b62\u64ad\u653e
 function.help=\u5e2e\u52a9
 function.showkeys=\u663e\u793a\u5feb\u6377\u952e
 function.about=\u5173\u4e8ePrune
@@ -174,6 +186,7 @@ dialog.pointtype.desc=\u4fdd\u5b58\u4e0b\u5217\u70b9\uff1a
 dialog.pointtype.track=\u8f68\u8ff9\u70b9
 dialog.pointtype.waypoint=\u822a\u70b9
 dialog.pointtype.photo=\u76f8\u7247\u70b9
+dialog.pointtype.audio=\u5e26\u58f0\u97f3\u7684\u822a\u70b9
 dialog.pointtype.selection=\u4ec5\u5df2\u9009\u62e9\u822a\u6bb5
 dialog.confirmreversetrack.title=\u786e\u8ba4\u53cd\u5411
 dialog.confirmreversetrack.text=\u8f68\u8ff9\u5305\u542b\u65f6\u95f4\u4fe1\u606f\uff0c\u53cd\u5411\u540e\u53ef\u80fd\u4e22\u5931\n\u662f\u5426\u7ee7\u7eed\uff1f
@@ -259,6 +272,8 @@ dialog.gpsies.activity.motorbiking=\u7535\u52a8\u81ea\u884c\u8f66
 dialog.gpsies.activity.snowshoe=\u96ea\u978b\u5065\u884c
 dialog.gpsies.activity.sailing=\u5e06\u8239
 dialog.gpsies.activity.skating=\u6ed1\u51b0
+dialog.wikipedia.column.name=\u6587\u7ae0\u9898\u76ee
+dialog.wikipedia.column.distance=\u8ddd\u79bb
 dialog.correlate.notimestamps=\u6570\u636e\u70b9\u4e2d\u65e0\u65f6\u95f4\u4fe1\u606f\uff0c\u76f8\u7247\u65e0\u6cd5\u94fe\u63a5
 dialog.correlate.nouncorrelatedphotos=\u6240\u6709\u76f8\u7247\u5df2\u94fe\u63a5\n\u7ee7\u7eed\uff1f
 dialog.correlate.photoselect.intro=\u9009\u62e9\u5df2\u94fe\u63a5\u76f8\u7247\u4f5c\u4e3a\u65f6\u95f4\u504f\u79fb
@@ -274,6 +289,8 @@ dialog.correlate.options.offset.minutes=\u5206\u949f
 dialog.correlate.options.offset.seconds=\u79d2
 dialog.correlate.options.photolater=\u76f8\u7247\u6ede\u540e\u4e8e\u8f68\u8ff9\u70b9
 dialog.correlate.options.pointlaterphoto=\u8f68\u8ff9\u70b9\u6ede\u540e\u4e8e\u76f8\u7247
+dialog.correlate.options.audiolater=\u58f0\u97f3\u6bd4\u822a\u70b9\u6ede\u540e
+dialog.correlate.options.pointlateraudio=\u58f0\u97f3\u6bd4\u822a\u70b9\u8d85\u524d
 dialog.correlate.options.limitspanel=\u94fe\u63a5\u9650\u5236
 dialog.correlate.options.notimelimit=\u65e0\u65f6\u95f4\u9650\u5236
 dialog.correlate.options.timelimit=\u65f6\u95f4\u9650\u5236
@@ -281,6 +298,15 @@ dialog.correlate.options.nodistancelimit=\u65e0\u8ddd\u79bb\u9650\u5236
 dialog.correlate.options.distancelimit=\u8ddd\u79bb\u9650\u5236
 dialog.correlate.options.correlate=\u94fe\u63a5
 dialog.correlate.alloutsiderange=\u65e0\u6cd5\u94fe\u63a5\uff0c\u6240\u6709\u76f8\u7247\u8d85\u51fa\u8f68\u8ff9\u65f6\u95f4\u8303\u56f4\n\u8bf7\u6539\u53d8\u65f6\u95f4\u504f\u79fb\u6216\u624b\u52a8\u94fe\u63a5\u81f3\u5c11\u4e00\u5f20\u76f8\u7247
+dialog.correlate.filetimes=\u6587\u4ef6\u65f6\u95f4\u8868\u793a\u58f0\u97f3\u7684\uff1a
+dialog.correlate.filetimes2=
+dialog.correlate.correltimes=\u5982\u8981\u5173\u8054\uff0c\u8bf7\u4f7f\u7528\uff1a
+dialog.correlate.timestamp.beginning=\u5f00\u59cb
+dialog.correlate.timestamp.middle=\u4e2d\u95f4
+dialog.correlate.timestamp.end=\u7ed3\u675f
+dialog.correlate.audioselect.intro=\u9009\u62e9\u4ee5\u4e0b\u58f0\u97f3\u6587\u4ef6\u4f5c\u4e3a\u65f6\u95f4\u504f\u5dee
+dialog.correlate.select.audioname=\u58f0\u97f3\u6587\u4ef6\u540d\u5b57
+dialog.correlate.select.audiolater=\u58f0\u97f3\u5ef6\u8fdf
 dialog.rearrangephotos.desc=\u9009\u62e9\u76ee\u7684\u5730\u53ca\u6392\u76f8\u7247\u70b9
 dialog.rearrangephotos.tostart=\u79fb\u5230\u5f00\u59cb
 dialog.rearrangephotos.toend=\u79fb\u5230\u672b\u5c3e
@@ -361,6 +387,7 @@ dialog.saveconfig.prune.diskcache=\u5b58\u50a8\u8def\u5f84
 dialog.saveconfig.prune.kmzimagewidth=KMZ\u56fe\u50cf\u5bbd\u5ea6
 dialog.saveconfig.prune.kmzimageheight=KMZ\u56fe\u50cf\u9ad8\u5ea6
 dialog.saveconfig.prune.colourscheme=\u989c\u8272
+dialog.saveconfig.prune.linewidth=\u7ebf\u4f53\u5bbd\u5ea6
 dialog.saveconfig.prune.kmltrackcolour=KML\u8f68\u8ff9\u989c\u8272
 dialog.setpaths.intro=\u82e5\u9700\u8981\uff0c\u53ef\u8bbe\u5b9a\u5916\u6302\u7a0b\u5e8f\u8def\u5f84
 dialog.setpaths.found=\u627e\u5230\u8def\u5f84\uff1f
@@ -390,9 +417,13 @@ dialog.diskcache.dir=\u4fdd\u5b58\u8def\u5f84
 dialog.diskcache.createdir=\u65b0\u5efa\u8def\u5f84
 dialog.diskcache.nocreate=\u672a\u65b0\u5efa\u8def\u5f84
 dialog.deletefieldvalues.intro=\u9009\u62e9\u5f53\u524d\u8303\u56f4\u5185\u8981\u5220\u9664\u7684\u533a\u57df
+dialog.setlinewidth.text=\u8f93\u5165\u8f68\u8ff9\u7ebf\u5bbd\u50cf\u7d20\u503c\uff081-4\uff09
+dialog.downloadosm.desc=\u786e\u8ba4\u4eceOSM\u4e0b\u8f7d\u8be5\u5730\u533a\u539f\u59cb\u6570\u636e
+dialog.searchwikipedianames.search=\u67e5\u627e
 
 # 3d window
 dialog.3d.title=Prune 3D \u663e\u793a
+dialog.3d.altitudefactor=\u9ad8\u5ea6\u653e\u5927\u7cfb\u6570
 dialog.3dlines.title=Prune \u7f51\u683c\u7ebf
 dialog.3dlines.empty=\u65e0\u6cd5\u663e\u793a\u7f51\u683c\u7ebf
 dialog.3dlines.intro=3D \u7f51\u683c\u7ebf
@@ -418,7 +449,10 @@ confirm.undo.single=\u5df2\u64a4\u9500\u7684\u64cd\u4f5c
 confirm.undo.multi=\u5df2\u64a4\u9500\u7684\u64cd\u4f5c
 confirm.jpegload.single=\u5df2\u52a0\u5165\u76f8\u7247
 confirm.jpegload.multi=\u5df2\u52a0\u5165\u76f8\u7247
+confirm.media.connect=\u5a92\u4f53\u5df2\u5173\u8054
 confirm.photo.disconnect=\u76f8\u7247\u672a\u94fe\u63a5
+confirm.audio.disconnect=\u58f0\u97f3\u65ad\u5f00
+confirm.media.removed=\u5df2\u5220\u9664
 confirm.correlatephotos.single=\u76f8\u7247\u5df2\u94fe\u63a5
 confirm.correlatephotos.multi=\u76f8\u7247\u5df2\u94fe\u63a5
 confirm.createpoint=\u5df2\u521b\u5efa\u70b9
@@ -426,6 +460,10 @@ confirm.rotatephoto=\u76f8\u7247\u5df2\u65cb\u8f6c
 confirm.running=\u8bf7\u7a0d\u7b49...
 confirm.lookupsrtm1=\u627e\u5230
 confirm.lookupsrtm2=\u9ad8\u5ea6\u503c
+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.correlateaudios.multi=\u58f0\u97f3\u5df2\u5173\u8054
 
 # Buttons
 button.ok=\u786e\u5b9a
@@ -450,6 +488,7 @@ button.selectall=\u5168\u9009
 button.selectnone=\u5168\u4e0d\u9009
 button.preview=\u9884\u89c8
 button.load=\u5bfc\u5165
+button.upload=\u4e0a\u8f7d
 button.guessfields=\u731c\u4f30\u533a\u57df\u5185\u5bb9
 button.showwebpage=\u663e\u793a\u7f51\u9875
 button.check=\u68c0\u67e5
@@ -504,10 +543,15 @@ details.range.pace=\u6b65\u901f
 details.range.gradient=\u5761\u5ea6
 details.lists.waypoints=\u822a\u70b9
 details.lists.photos=\u76f8\u7247
+details.lists.audio=\u58f0\u97f3
 details.photodetails=\u76f8\u7247\u4fe1\u606f
 details.nophoto=\u65e0\u76f8\u7247\u88ab\u9009\u4e2d
 details.photo.loading=\u6b63\u5bfc\u5165
 details.media.connected=\u5df2\u94fe\u63a5
+details.audiodetails=\u8be6\u7ec6\u4fe1\u606f
+details.noaudio=\u672a\u9009\u62e9\u58f0\u97f3\u6587\u4ef6
+details.audio.file=\u58f0\u97f3\u6587\u4ef6
+details.audio.playing=\u6b63\u5728\u64ad\u653e
 map.overzoom=\u5728\u6b64\u653e\u5927\u5c3a\u5bf8\u4e0b\u65e0\u5730\u56fe\u8d44\u6599
 
 # Field names
@@ -561,9 +605,11 @@ cardinal.w=W
 # Undo operations
 undo.load=\u5bfc\u5165\u6570\u636e
 undo.loadphotos=\u5bfc\u5165\u76f8\u7247
+undo.loadaudios=\u8f7d\u5165\u58f0\u97f3\u6587\u4ef6
 undo.editpoint=\u7f16\u8f91\u8f68\u8ff9\u70b9
 undo.deletepoint=\u5220\u9664\u8f68\u8ff9\u70b9
 undo.removephoto=\u5220\u9664\u76f8\u7247
+undo.removeaudio=\u5220\u9664\u58f0\u97f3\u6587\u4ef6
 undo.deleterange=\u5220\u9664\u6bb5
 undo.compress=\u538b\u7f29\u8f68\u8ff9
 undo.insert=\u63d2\u5165\u822a\u70b9
@@ -573,14 +619,16 @@ undo.addtimeoffset=\u6dfb\u52a0\u65f6\u95f4\u504f\u79fb
 undo.addaltitudeoffset=\u52a0\u5165\u9ad8\u5ea6\u504f\u79fb
 undo.rearrangewaypoints=\u91cd\u65b0\u914d\u7f6e\u822a\u70b9
 undo.cutandmove=\u79fb\u52a8\u6bb5
-undo.connect=\u94fe\u63a5\u76f8\u7247
-undo.disconnect=\u65ad\u5f00\u94fe\u63a5
+undo.connect=\u94fe\u63a5
+undo.disconnect=\u65ad\u5f00
 undo.correlatephotos=\u94fe\u63a5\u76f8\u7247
 undo.rearrangephotos=\u91cd\u62cd\u76f8\u7247
 undo.createpoint=\u521b\u5efa\u8f68\u8ff9\u70b9
 undo.rotatephoto=\u65cb\u8f6c\u76f8\u7247
 undo.convertnamestotimes=\u540d\u79f0\u8f6c\u4e3a\u65f6\u95f4
 undo.lookupsrtm=\u4eceSRTM\u67e5\u627e\u9ad8\u5ea6
+undo.deletefieldvalues=\u5220\u9664\u533a\u57df\u6570\u636e
+undo.correlateaudios=\u5173\u8054\u58f0\u97f3
 
 # Error messages
 error.save.dialogtitle=\u4fdd\u5b58\u6570\u636e\u9519\u8bef
@@ -604,6 +652,7 @@ error.jpegload.nofilesfound=\u627e\u4e0d\u5230\u6587\u4ef6
 error.jpegload.nojpegsfound=\u627e\u4e0d\u5230Jpeg\u6587\u4ef6
 error.jpegload.nogpsfound=\u627e\u4e0d\u5230GPS\u4fe1\u606f
 error.jpegload.exifreadfailed=Exif\u8bfb\u53d6\u9519\u8bef\u3002\u9700\u8981\u5185\u90e8\n\u6216\u8005\u5916\u90e8\u5e93\u624d\u80fd\u8bfb\u53d6
+error.audioload.nofilesfound=\u672a\u627e\u5230\u58f0\u97f3\u6587\u4ef6
 error.gpsload.unknown=\u672a\u77e5\u9519\u8bef
 error.undofailed.title=\u64a4\u9500\u5931\u8d25
 error.undofailed.text=\u64a4\u9500\u64cd\u4f5c\u5931\u8d25
@@ -621,3 +670,4 @@ error.lookupsrtm.nonefound=\u65e0\u9ad8\u5ea6\u4fe1\u606f
 error.lookupsrtm.nonerequired=\u6240\u6709\u70b9\u5747\u542b\u9ad8\u5ea6\u4fe1\u606f
 error.gpsies.uploadnotok=gpsies\u670d\u52a1\u5668\u8fd4\u56de\u4fe1\u606f\uff1a
 error.gpsies.uploadfailed=\u4e0a\u4f20\u51fa\u9519\u5931\u8d25
+error.playaudiofailed=\u65e0\u6cd5\u64ad\u653e\u58f0\u97f3\u6587\u4ef6
index d57d5f9b69f020d407e2ed5257f9244704144c85..fd4c869c03fac79608b194eb17ca3ffdf0720b08 100644 (file)
@@ -407,7 +407,6 @@ public class GpxExporter extends GenericFunction implements Runnable
                                if ((point.getPhoto()==null && inExportTrackpoints) || (point.getPhoto()!=null && inExportPhotos)
                                        || (point.getAudio()!=null && inExportAudios))
                                {
-                                       if (point.getPhoto() != null) System.out.println("Writetrackpoints: Point has photo " + point.getPhoto().getFile().getName());
                                        // get the source from the point (if any)
                                        String pointSource = getPointSource(inCachers, point);
                                        // Clear point source if it's the wrong type of point (eg changed from waypoint or route point)
@@ -420,7 +419,6 @@ public class GpxExporter extends GenericFunction implements Runnable
                                                }
                                                if (numSaved == 0) {inWriter.write(inStartTag);}
                                                if (pointSource != null) {
-                                                       if (point.getPhoto() != null) System.out.println("Point has photo but using source");
                                                        inWriter.write(pointSource);
                                                        inWriter.write('\n');
                                                }
@@ -645,7 +643,6 @@ public class GpxExporter extends GenericFunction implements Runnable
                boolean inExportPhoto, boolean inExportAudio)
                throws IOException
        {
-               if (inPoint.getPhoto() != null) System.out.println("Point has photo " + inPoint.getPhoto().getFile().getName());
                inWriter.write("\t\t<trkpt lat=\"");
                inWriter.write(inPoint.getLatitude().output(Coordinate.FORMAT_DECIMAL_FORCE_POINT));
                inWriter.write("\" lon=\"");