From: activityworkshop Date: Sun, 15 Feb 2015 09:52:59 +0000 (+0100) Subject: Version 12.1, December 2010 X-Git-Tag: v19.2~23 X-Git-Url: http://gitweb.fperrin.net/?p=GpsPrune.git;a=commitdiff_plain;h=eebbb64b5d63f9eea43a0dff908c30361a376768 Version 12.1, December 2010 --- diff --git a/tim/prune/GpsPruner.java b/tim/prune/GpsPruner.java index 217d7d4..0028093 100644 --- a/tim/prune/GpsPruner.java +++ b/tim/prune/GpsPruner.java @@ -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; diff --git a/tim/prune/gui/map/MapCanvas.java b/tim/prune/gui/map/MapCanvas.java index 2308fac..acac7a1 100644 --- a/tim/prune/gui/map/MapCanvas.java +++ b/tim/prune/gui/map/MapCanvas.java @@ -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(); + } } /** diff --git a/tim/prune/lang/prune-texts_zh.properties b/tim/prune/lang/prune-texts_zh.properties index 9c8d7b2..4dfc88a 100644 --- a/tim/prune/lang/prune-texts_zh.properties +++ b/tim/prune/lang/prune-texts_zh.properties @@ -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 diff --git a/tim/prune/save/GpxExporter.java b/tim/prune/save/GpxExporter.java index d57d5f9..fd4c869 100644 --- a/tim/prune/save/GpxExporter.java +++ b/tim/prune/save/GpxExporter.java @@ -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