Modify

Opened 8 years ago

Closed 7 years ago

#13815 closed enhancement (needinfo)

[patch] Open geotagged image in external viewer

Reported by: Adrian Owned by: team
Priority: normal Milestone:
Component: Core image mapping Version:
Keywords: Cc:

Description

Please consider adding a button to the image viewer window. This button would open the currently displayed image in an external viewer. I would use it to view panoramas in a panorama viewer. There would need to be an option somewhere to select the external application to be used.

A possible further enhancement would be to add an option on the geotagged images layer, so that when you click on the camera icon or thumbnail, the image is opened immediately in the external viewer.

Attachments (4)

13815.zip (4.8 KB ) - added by Adrian 7 years ago.
SetExternalViewerAction.java (2.9 KB ) - added by Adrian 7 years ago.
Updated version of source file
13815.patch (11.3 KB ) - added by Adrian 7 years ago.
13815_v2.patch (11.3 KB ) - added by Adrian 7 years ago.

Download all attachments as: .zip

Change History (15)

by Adrian, 7 years ago

Attachment: 13815.zip added

comment:1 by Adrian, 7 years ago

(I tried to register but my registration was rejected as spam, even though I entered two captchas correctly.)

I have developed a patch to do what I requested above. I have little experience of Java programming, so I make no claims about the quality of my code. As you will see, I have not set up a full development environment. I have used the version of diff that was already installed on my computer, with option --normal, and the files to be differenced as arguments. I don't know whether this produces a standard-format diff. I have tested on Mac OS X with Java 8. All the source files I refer to are in folder src/org/openstreetmap/josm/gui/layer/geoimage. In the attached 13815.zip, 13815_diff1 is to be applied to GeoImageLayer.java, 13815_diff2 is to be applied to ImageViewerDialog.java, and SetExternalViewerAction.java and UseExternalViewerAction.java are to be added to the folder.

Adrian

{{{
URL:http://josm.openstreetmap.de/svn/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2016-09-06 00:16:07 +0200 (Tue, 06 Sep 2016)
Build-Date:2016-09-05 22:21:00
Revision:10966
Relative:URL: ^/trunk

Identification: JOSM/1.5 (10966 en) Mac OS X 10.9.5
Memory Usage: 475 MB / 3641 MB (300 MB allocated, but free)
Java version: 1.8.0_102-b14, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
Screen: Display 725375437 1920x1200
Maximum Screen Size: 1920x1200

Plugins:
+ ImportImagePlugin (32699)
+ InfoMode (32789)
+ PicLayer (32796)
+ apache-commons (32699)
+ cadastre-fr (32796)
+ download_along (32946)
+ editgpx (32699)
+ ejml (32680)
+ geotools (32813)
+ imagery_offset_db (32796)
+ jts (32699)
+ log4j (32699)
+ measurement (32936)
+ opendata (32898)
+ poly (32699)
+ reverter (32796)
+ turnrestrictions (32796)
+ undelete (32699)
+ utilsplugin2 (32815)
+ waydownloader (32699)

Last errors/warnings:
- W: Update plugins - org.openstreetmap.josm.plugins.PluginHandler$UpdatePluginsMessagePanel[,0,0,0x0,invalid,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]

adjust.max.zoom=1.787
audio.leadin=0
cache.bing.attribution.xml=1477506632
cache.capabilities-131030235=1384288089
cache.capabilities1637351842=1477432852
cache.geoimage-thumbnails.expire=-1
cache.geoimage-thumbnails.maxsize=120
cache.motd.html=1477937092
cache.motd.html.java=1.8.0_102
cache.motd.html.lang=En:
cache.motd.html.version=10966
cache.wmsplugin.expire=2419200
cache.wmsplugin.maxsize=150
cadastregrab.shortcut.warn=true
cadastrewms.autosourcing=false
cadastrewms.brightness=1.0
cadastrewms.cacheSize=60
cadastrewms.codeDepartement=034
cadastrewms.drawBoundaries=true
cadastrewms.enableCaching=false
cadastrewms.location=AGDE
cadastrewms.source=cadastre-dgi-fr source : Direction Générale des Impôts - Cadastre. Mise à jour : 2016
color.gps.marker=#E04040
color.gps.point=#E04040
color.layer Downloaded GPX Data=#FF2000
commandstack.visible=true
conflictresolutiondialog.width=699
conflictresolutiondialog.y=22
coordinates=DECIMAL_DEGREES
createcircle.nodecount=20
curves.circlearc.angle-separation=23
customsettings.lastDirectory=${HOME}/.
download.gps=true
download.osm=false
download.overpass.servers=[http://overpass.osm.rambler.ru/cgi/, https://overpass-api.de/api/]
downloadprimitive.full=false
downloadprimitive.lasttype=2
downloadprimitive.referrers=false
draw.data.area_outline_only=true
draw.rawgps.large=true
draw.rawgps.max-line-length.local=500
expert=true
external.viewer.lastdirectory=/Applications
external.viewer.path=/Applications/Preview.app
file-open.history=[/Volumes/Docs & Apps/Downloads/OSM data/Tracklogs/20160831.gpx, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/Quai Courpouron.osm, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/Agde 23.10.osm.gz, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/3.44_43.26_3.54_43.33.osm, /Volumes/Docs & Apps/Downloads/OSM data/Tracklogs/20160831wpt.gpx, /Volumes/Docs & Apps/Downloads/OSM data/Tracklogs/20160910ubx.gpx, /Volumes/Docs & Apps/Downloads/OSM data/Tracklogs/20160909ubx.gpx, /Volumes/Docs & Apps/Downloads/OSM data/Tracklogs/20150909.gpx, /Volumes/Docs & Apps/Downloads/OSM data/34/Agde SW Feb16/osm/034-Agde-FC003-chemin.osm, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/Sep 16 photos.jos, /Volumes/Docs & Apps/Downloads/OSM data/34/Agde SW Feb16/osm/034-Agde-FC003.osm, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/Data Layer 1.osm, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/3.44_43.26_3.54_43.33(14).osm.gz, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/To be checked 16.osm, /Volumes/Docs & Apps/Downloads/OSM data/Edit 16/3.44_43.26_3.54_43.33(12).osm.gz]
filters.entries=[{version=1, text=natural=coastline, mode=replace, enable=false, hiding=true, inverted=false}, {version=1, text=natural=beach, mode=replace, enable=false, hiding=true, inverted=false}, {version=1, text=building=yes, mode=replace, enable=false, hiding=false, inverted=false}, {version=1, text=landuse=*, mode=replace, enable=false, hiding=true, inverted=false}, {version=1, text=amenity=parking, mode=replace, enable=false, hiding=true, inverted=false}, {version=1, text=highway=cycleway, mode=replace, enable=false, hiding=true, inverted=false}, {version=1, text=natural=water, mode=replace, enable=false, hiding=true, inverted=false}, {version=1, text=boundary=*, mode=add, enable=false, hiding=false, inverted=false}, {version=1, text= selected , mode=add, enable=false, hiding=true, inverted=false}, {version=1, text=natural=cliff, mode=replace, enable=false, hiding=false, inverted=false}, {version=1, text=barrier=*, mode=add, enable=false, hiding=true, inverted=false}, {version=1, text=selected , mode=replace, enable=false, hiding=false, inverted=true}, {version=1, text=waterway=riverbank, mode=add, enable=false, hiding=true, inverted=false}]
filters.filter.0=1;natural=coastline;replace;false;false;legacy;false;true;true;false
geoimage.docked=false
geoimage.geometry=x=1336,y=706,width=580,height=494
geoimage.lastdirectory=/Volumes/Docs & Apps/Documents/DCIM/Sep 16
geoimage.timezone=+0:00
geoimage.timezoneid=Africa/Accra
geoimage.visible=true
gpx.traces.maxtime=1370352193000
gpx.traces.mintime=1370341863000
gui.geometry=x=0,y=22,width=1439,height=877
imagery.entries=[{name=Bing aerial imagery, id=Bing, type=bing, url=http://www.bing.com/maps/, max-zoom=22, icon=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAAAdVBMVEX/phX/04r/////6cX/zXz/7Mz/vFD/u0z/1I7/tT3/yXH/uEX/v1f/rCT/2pz/vlP/qRz/4a//yG3/xmn//Pj/9eb/+/T/897/t0H/wl7/sTL//vv/+O3/2Jn/7dD/+vH/9+n/3KT/tDr/9OL/8Nf/26D/ynSCVQVOAAAAkklEQVR4Xq3R1w7DIBQD0NiQne69d///E3tvBYVU6UsVPyEdCYycIOlOv5AB004Aaf6DCpLtF4yxp8tkFMGCkiEkKyGz9qCxrkxuhLIAeaijMvAwi/vMycJDuyi5/AVUaPwTPik5UdCDiWCjtd5Q70TK+KKD26M+6o+tdGxwIlmFPeyZn1yuraFKFOnt/sCz/81f+9UEaf1lPCAAAAAASUVORK5CYII=, noTileHeaders={"X-VE-Tile-Info":["no-tile"]}, metadataHeaders={"X-VE-TILEMETA-CaptureDatesRange":"Capture Date"}}, {name=Géolittoral V2 - Orthophotos 2010-2012, type=wms, url=http://geolittoral.application.developpement-durable.gouv.fr/wms2/metropole?language=fre&FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=ortholittorale_v2_rvb&STYLES=&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}, projections=EPSG:4326,EPSG:27582,EPSG:27581,EPSG:3035,EPSG:3034,CRS:84,EPSG:2154,EPSG:27562,EPSG:4171,EPSG:27561,EPSG:27564,EPSG:27563,EPSG:23032,EPSG:3942,EPSG:23031,EPSG:23030,EPSG:4275,EPSG:32632,EPSG:27583,EPSG:32631,EPSG:27584,EPSG:32630,EPSG:27593,EPSG:27592,EPSG:4258,EPSG:27591,EPSG:3044,EPSG:3947,EPSG:3948,EPSG:3043,EPSG:3949,EPSG:3042,EPSG:3943,EPSG:27571,EPSG:3944,EPSG:3945,EPSG:3857,EPSG:3946,EPSG:4807,EPSG:27574,EPSG:3950,EPSG:27573,EPSG:27572,EPSG:900913,EPSG:27594}, {name=Landsat, type=wms, url=http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&layers=global_mosaic&styles=&format=image/jpeg&SRS={proj}&WIDTH={width}&height={height}&BBOX={bbox}}, {name=Landsat (mirror), type=wms, url=http://irs.gis-lab.info/?layers=landsat&SRS={proj}&WIDTH={width}&height={height}&BBOX={bbox}}, {name=Mapbox Satellite, id=Mapbox, type=tms, url=http://{switch:a,b,c}.tiles.mapbox.com/v4/openstreetmap.map-inh7ifmo/{zoom}/{x}/{y}.png?access_token=pk.eyJ1Ijoib3BlbnN0cmVldG1hcCIsImEiOiJncjlmd0t3In0.DmZsIeOW-3x-C5eX-wAqTw, max-zoom=19, icon=data:image/png;base64,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YmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuMS4yIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NzE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NjA8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6Q29tcHJlc3Npb24+NTwvdGlmZjpDb21wcmVzc2lvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+NzI8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFjb3JuIHZlcnNpb24gMy41PC94bXA6Q3JlYXRvclRvb2w+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgqb9JbbAAAGd0lEQVRIDX1We4xVRxn/zZzXfd9l9+7efcCy9LqsYFtAAVHTFaQtrba1plltDKVRUfoHxeCDBE0FTI3+gTXWxkRNUVpNWtbExDSUlhQW2kKjDZWHCyzsdndZdvfC3ru79577OOeec8ZvDpx100S/ZM7MfDPzPX7f980cCCHw0bZXCI5Dh5R5fH37uwOPbTp87pRsckxrerAu98ozwXx+z+QkoH379vG9y5cz0dPjBrznLow+dHLS3D5mWhtrqq7anoew6zhL4sZbqxtjL+xe0f5asJf19ip7+/vFnj17vDnebQVsQ1+f0rdhg0tzX+PvLo51Hh6d3TpRsZ52YnVhxywirXN0xAxcMm3MqGHUW2Yloau/Wb0g/OKetXcMSKGMaP3x48rx9eulkYLJJlEKNPYN32z+y2h++7/y5S2mGlpUrFRxb1PU3dCaZFcKFfbdT7TBEZ7Y9vaguFp2lGQkjKhbuZaJh1/a2lX3wprGxslAFmNgaiA8m81Gd56femCoaO+YNqLdltCwqU4VKzNpkdRULjfnqjU0hjR5nm1sTYoLF8Y9XThsSjEWTZr48fnT1+/JRG48v/+u1JF0Ol2SslW5e9c/hx84O2XuHDGr91t6FB/ntnj8zkbvyc40p2X+9KlB/G0kh/aYjjNTJvUGTt8oMk1hTAUTn0tobtFx+Hkn1D0zY3Z/48zNN1ekKr/6+ZqOI0r44S3JE9niwVwsdU+dZ2NbZoHzszUdfG1jXAonCIHhYhUfkOCqK3A2b+KVoSl8SDzbE7i7PsoOfn4pfzzTCM2tuUOlGs/HU5mpfH7ZpWLpVfVYzjQmy1XNdXLYtTztfL2zSQkEXytZOJsrYXUqhk83xXH0+gwpAzzyPaorGDYtxHUVnPt2sKeWtSj1uuo8cz6rVmq2NlT2dLVBD3nDqNU452iLGXNWS8uvzFbw/fcGsWnhAmztakaVLD6XLyFBwi3y5pMNMdzXlpRbA2KtUYNzhUPUWC1shD0/BvA84gCm46e/zCjfpC+01mH/ugwFVsW6pgT+Pponj0xM2y4WRgwc6F6KjrgRCJe9KNQcPyUZBK+VSxSjgEgkxSyYzfUPt9ejRIp3nB7EsfEZJAmSMYJuRUPEFz5RtnGjUiOPPKwlGOtoXVoY5P0tBRKY/0P7zozg0NBNNEd0X1lzWMeWzjROTRaw5eQAbBK+oj6KP61fipqYK2Jfoq+AEyISHO22B+9OzqKFhN2RCOOX58bwyuAUWmmuUZxcz4VNQb48U0G2YkFiSzWB3SvbUbAdHBjI+oJDFPgBqv45iGQl1Ruaf/HtfG8IYZXjU5Q9JyYKiGkKwcdRoyBTySFfdTBO0Dy1rBUPtaeQSYTm/JcQucKlBtQT1wdHI+gl+tfLlrxL8KNVi3ycZb5LLKUyuqSgkPBCzcWXFtfje3e1IUL8+cKllkfaG8gY+PtbYnHwCXJDVxUvRKn12/5xnBifZo8uTuErHSnKd5DVnm+FtMSTDKIHKW3/B/lZIj8CzNMiUcHzNU3CqBI4sjrFt965Kra9cwWbP9aE/WuXIEHwmGS1Ks0iYqTj1siffvQjaq4nPDKKSC3O5BTeFY9Z5KmjxBKIkRTHE66EbCUV0ebOJjy7usOHSKajLFgZg78O59A3PouDFNBBujIC+sfNovvipUmmxZMUN+Y08pil/PulX1tHxvI5r1xa50YSdVTRvDmkeKvqo0Lm/JJ4iH02nUDOcjBRskkB92P1xtg0Dl+bBl0nokFXxYErWfGLS1NKVqiswSqMtoT0Z/58f9cHcy/as+9/2PV+vvTEDct5oqCG2xPCwaNtCZfuF0aPCiPP2ZeP9uNqoYoFdFWYLoXdY0K+UFxTFVvREbJLo4tjkZe7W+pe3nV362XpGVU0PTj/LTzsePvq8vGK/ZORqv21GW5giS7wZCblyUr94+UsK1JVU0L4T5THVS6MEDSrjIVh7dVVDdGf7l7V3h9ARogy3wM5QC+46PHrTa4b+y+MfPHkdfPbI6a1yQ5HOatWEGLCk8VG+cp5KAKlUvIIzjfWtcT+8IM7Fx+mc5Y8/NVeKL09fhLK5/JW6t1a6FV6aTDv0Q/98PTgg+fy5e/MOs59PJqQVzmUsukmDfXo0kTo9899JvM6sfxIy0e/hyaH5v00+JUrlcxvPfQbQvt85bf5xjePXXxs42tnj9xLbfPRi/K3xQjOyL3yTDCf3/8H+UFA5Uwbuc8AAAAASUVORK5CYII=, noTileHeaders={"ETag":["\"067736a547cafe90014b4e59b6510abe\"|\"ee1f6802b0234046b553cbbc672ac7d9\"|\"9f5a2f1d7cc131e58befc2052c71c827\""]}, noTileChecksums={"MD5":["811bb5f56a0e672f674a2a820d340c61"]}}, {name=MapQuest Open Aerial, type=tms, url=http://oatile1.mqcdn.com/naip/{zoom}/{x}/{y}.png}, {name=MapQuest Open Aerial, type=tms, url=http://oatile{switch:1,2,3,4}.mqcdn.com/naip/{zoom}/{x}/{y}.png}, {name=MapQuest Open Aerial, id=mapquest-oa, type=tms, url=http://oatile{switch:1,2,3,4}.mqcdn.com/tiles/1.0.0/sat/{zoom}/{x}/{y}.png, attribution-text=Tiles Courtesy of MapQuest. Portions Courtesy NASA/JPL-Caltech and U.S. Depart. of Agriculture, Farm Service Agency, attribution-url=http://open.mapquest.com/, icon=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD9QTFRFAAAAi8ZBi8ZBi8ZBi8ZBkslMmc1YoNBkqNRwr9d8ttuIvd6UxeKgzOar0+m32u3D4vDP6fTb8Pfn9/vz////1BI4LwAAAAR0Uk5TAF+fzylxRuMAAADBSURBVDjLxZPRDoMgDEVVClRlgML/f+tKUTLNgGV72H0okXskLbTD8IFGAW8lxuxPUNXE/0ND6QzRAgQB0NS3gEbEBjDvkRSWGoDx0FwB3An4CrCRZ0wiKkC27oDSOX0F4MlyNqVZAMmfVvNi7JmDK4CPrypJbvIA1MWPATdeYlwPgAvPmxw1SEQpnTtPMFzzg68mEXh/iwwYtvyfgIU2d5kAy8AKJlwAKor6I0UNKsfl15a7AN227w5Od/T6w9vWE6pGGxHVqV03AAAAAElFTkSuQmCC, noTileHeaders={"ETag":[".*?:OC4CjEZcEJv8Az5u7fOqgEP\\+NpkA\""]}}, {name=OpenStreetMap, type=tms, url=http://tile.openstreetmap.org/{zoom}/{x}/{y}.png, attribution-text=osm, attribution-url=osm, terms-of-use-url=osm}, {name=OpenStreetMap (Mapnik Black & White), id=osm-mapnik-black_and_white, type=tms, url=https://tiles.wmflabs.org/bw-mapnik/{zoom}/{x}/{y}.png, attribution-text=© OpenStreetMap contributors, CC-BY-SA, attribution-url=https://openstreetmap.org/, max-zoom=18, icon=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAQAAABKfvVzAAADJElEQVR4Xo2SS2hcZRSAv/+//70zkzszeU+okVqaaGLjI0akTRGl3ehGdCEiutO6c6PgwoWCSMUXdRFaCurGTRGVUtqNraKmTDA1KtIQzat3TKczSW0mznTuzNznL1zoxo1+q3PgwPnOA8cufVU647y+PnYps6Wq9lbfxvTiqdnzs+/PH7re/bY6nV7tqT5UmanOkUDJcN5w9BW9phcuXDtW/bqy7ejfdVH/qhd0cfXsO9998VN5Xq/qTffaAwACnGl9VvcHePSiaOMidSzWdb+wsRG0CLmhc8E9r/YcbyNgqZA6w4E6ETksoI3gIofIYCCT3KPD39z49OkjIGHf9aikyWFyE4EgzwoHyJFBoQmxsAmQyH1TAyABrMDCJIvCI2Ibk24kYGCTIwXksbD3P3sYDCjtMV8xhsACJHXK5BjCRBMQ0CbAxUdpQ27Xrp5XYI7oEYgQ+IBHjKBDkOiZSJqESGLSZMYOWrJEPK67NDEtIhpoTAQxMRDSpE4H0AgUSkhkaPmTAaGGJiYWWSxCOmgU0CaEpI9Bmmj1+0AthnvXMwRCEBPSh4ekSh8dBNBFAChSZESD8i9LsXxKr/wRNWWy/XTi2sO3rBGjk2lMUqSTLa3+eHJuzJIwX/bLApOYiE4y/F18xNUkInG3iFjxi5/vVJSU6FMld9NHYLCDxqPKEoqPuUQjubLLNgtsmIcnXB1HCso1qyYJiMmzwSdY9PIww2zRhUEOjYsgJ8zhXtnyFXzT218IscizzHHcROsxdhPzFzdxsBDkGYjW13bcQqhgdCS+s0MWhxPUCTCZIotAspeYCgoPqZve5SKtZSQ0RrwhmyvMUMFF8TjTFPBJ4REyiEaAiN2jP6BBzqjOhMEi7+HQIstzyada9BFqQ9u4eFpphe+wCaAMM9q1HB41POGzixe4H7d18cJAauJgd75JiIkpDOq1y1+SAAa3vXvkrcZ4PFZ7bf3k7Itvsp9hbufBl14+fe7nP8/NfXDi0ee5l25uUUTc8eFnT/42esx+gmEMbiGxGUyO/G+mcnseue+ZycmpDP+PAneb4+lRA2D3f9T+A2BEVdbaZSWbAAAAAElFTkSuQmCC, valid-georeference=true}, {name=OpenStreetMap (Mapnik), id=MAPNIK, type=tms, url=https://{switch:a,b,c}.tile.openstreetmap.org/{zoom}/{x}/{y}.png, attribution-text=© OpenStreetMap contributors, CC-BY-SA, attribution-url=https://openstreetmap.org/, max-zoom=19, icon=data:image/png;base64,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}, {name=SPOTMaps (France), type=wms, url=http://spotmaps.youmapps.org/cgi-bin/mapserv?map=/home/ortho/ortho.map&service=wms&version=1.1.1&SRS={proj(EPSG:4326)}&request=GetMap&layers=spotmaps4osm&format=image/jpeg&FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&Layers=demo&WIDTH={width}&height={height}&BBOX={bbox}, projections=EPSG:4326}, {name=Yahoo Sat, id=yahoo_sat, type=html, url=http://josm.openstreetmap.de/wmsplugin/YahooDirect.html?SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}, projections=EPSG:4326}, {name=OS OpenData StreetView, id=OS-OpenData_StreetView, type=tms, url=http://os.openstreetmap.org/sv/{zoom}/{x}/{y}.png, country-code=GB, max-zoom=18, min-zoom=1, bounds=49.8673563,-8.7163482,60.9103862,1.8333912, shapes=50.0229734,-5.8292886,50.254819,-5.8292886,50.254819,-5.373356,50.3530588,-5.373356,50.3530588,-5.1756021,50.5925406,-5.1756021,50.5925406,-4.9970743,50.6935617,-4.9970743,50.6935617,-4.7965738,50.7822112,-4.7965738,50.7822112,-4.6949503,50.9607371,-4.6949503,50.9607371,-4.6043131,51.0692066,-4.6043131,51.0692066,-4.3792215,51.2521782,-4.3792215,51.2521782,-3.9039346,51.2916998,-3.9039346,51.2916998,-3.7171671,51.2453014,-3.7171671,51.2453014,-3.1486246,51.362067,-3.1486246,51.362067,-3.7446329,51.4340386,-3.7446329,51.4340386,-3.8297769,51.5298246,-3.8297769,51.5298246,-4.0852091,51.4939284,-4.0852091,51.4939284,-4.3792215,51.5427168,-4.3792215,51.5427168,-5.1444195,51.6296003,-5.1444195,51.6296003,-5.7387103,51.774037,-5.7387103,51.774037,-5.5095393,51.9802596,-5.5095393,51.9802596,-5.198799,52.0973358,-5.198799,52.0973358,-4.8880588,52.1831557,-4.8880588,52.1831557,-4.4957492,52.2925739,-4.4957492,52.2925739,-4.3015365,52.3685318,-4.3015365,52.3685318,-4.1811246,52.7933685,-4.1811246,52.7933685,-4.4413696,52.7369614,-4.4413696,52.7369614,-4.8569847,52.9317255,-4.8569847,52.9317255,-4.7288044,53.5038599,-4.7288044,53.5038599,-4.1578191,53.4113498,-4.1578191,53.4113498,-3.3110518,53.5038599,-3.3110518,53.5038599,-3.2333667,54.0159169,-3.2333667,54.0159169,-3.3926211,54.1980953,-3.3926211,54.1980953,-3.559644,54.433732,-3.559644,54.433732,-3.7188984,54.721897,-3.7188984,54.721897,-4.3015365,54.6140739,-4.3015365,54.6140739,-5.0473132,54.7532915,-5.0473132,54.7532915,-5.2298731,55.2190799,-5.2298731,55.2190799,-5.6532567,55.250088,-5.6532567,55.250088,-5.8979647,55.4822462,-5.8979647,55.4822462,-6.5933212,56.3013441,-6.5933212,56.3013441,-7.1727691,56.5601822,-7.1727691,56.5601822,-6.8171722,56.6991713,-6.8171722,56.6991713,-6.5315276,56.9066964,-6.5315276,56.9066964,-6.811679,57.3716613,-6.811679,57.3716613,-6.8721038,57.5518893,-6.8721038,57.5518893,-7.0973235,57.2411085,-7.0973235,57.2411085,-7.1742278,56.9066964,-7.1742278,56.9066964,-7.3719817,56.8075885,-7.3719817,56.8075885,-7.5202972,56.7142479,-7.5202972,56.7142479,-7.8306806,56.8994605,-7.8306806,56.8994605,-7.6494061,57.4739617,-7.6494061,57.4739617,-7.8306806,57.7915584,-7.8306806,57.7915584,-7.4736249,58.086063,-7.4736249,58.086063,-7.1879804,58.367197,-7.1879804,58.367197,-6.8034589,58.4155786,-6.8034589,58.4155786,-6.638664,58.4673277,-6.638664,58.4673277,-6.5178143,58.5625632,-6.5178143,58.5625632,-6.0536224,58.1568843,-6.0536224,58.1568843,-6.1470062,58.1105865,-6.1470062,58.1105865,-6.2799798,57.7122664,-6.2799798,57.7122664,-6.1591302,57.6667563,-6.1591302,57.6667563,-5.9339104,57.8892524,-5.9339104,57.8892524,-5.80643,57.9621767,-5.80643,57.9621767,-5.6141692,58.0911236,-5.6141692,58.0911236,-5.490819,58.3733281,-5.490819,58.3733281,-5.3199118,58.75015,-5.3199118,58.75015,-3.5719977,59.2091788,-3.5719977,59.2091788,-3.1944501,59.4759216,-3.1944501,59.4759216,-2.243583,59.1388749,-2.243583,59.1388749,-2.4611012,58.8185938,-2.4611012,58.8185938,-2.7407675,58.5804743,-2.7407675,58.5804743,-2.9116746,58.1157523,-2.9116746,58.1157523,-3.4865441,57.740386,-3.4865441,57.740386,-1.7153245,57.2225558,-1.7153245,57.2225558,-1.9794538,56.8760742,-1.9794538,56.8760742,-2.1658979,56.6333186,-2.1658979,56.6333186,-2.3601106,56.0477521,-2.3601106,56.0477521,-1.9794538,55.8650949,-1.9794538,55.8650949,-1.4745008,55.2499926,-1.4745008,55.2499926,-1.3221997,54.8221737,-1.3221997,54.8221737,-1.0550014,54.6746628,-1.0550014,54.6746628,-0.6618765,54.5527463,-0.6618765,54.5527463,-0.3247617,54.2865195,-0.3247617,54.2865195,0.0092841,53.7938518,0.0092841,53.7938518,0.2081962,53.5217726,0.2081962,53.5217726,0.4163548,53.0298851,0.4163548,53.0298851,1.4273388,52.92021,1.4273388,52.92021,1.8333912,52.042488,1.8333912,52.042488,1.5235504,51.8261335,1.5235504,51.8261335,1.2697049,51.6967453,1.2697049,51.6967453,1.116651,51.440346,1.116651,51.440346,1.5235504,51.3331831,1.5235504,51.3331831,1.4507565,51.0207553,1.4507565,51.0207553,1.0699883,50.9008416,1.0699883,50.9008416,0.7788126,50.729843,0.7788126,50.729843,-0.7255952,50.7038437,-0.7255952,50.7038437,-1.0074383,50.5736307,-1.0074383,50.5736307,-2.3625252,50.4846421,-2.3625252,50.4846421,-2.4987805,50.5736307,-2.4987805,50.5736307,-3.4096378,50.2057837,-3.4096378,50.2057837,-3.6922446,50.1347737,-3.6922446,50.1347737,-5.005468,49.9474456,-5.005468,49.9474456,-5.2839506,50.0229734,-5.2839506;49.8673563,-6.4580707,49.9499935,-6.4580707,49.9499935,-6.3978807,50.0053797,-6.3978807,50.0053797,-6.1799606,49.9168614,-6.1799606,49.9168614,-6.2540201,49.8673563,-6.2540201;49.932156,-5.8343165,49.9754641,-5.8343165,49.9754641,-5.7683254,49.932156,-5.7683254;60.6885737,-1.9483797,60.3058841,-1.9483797,60.3058841,-1.7543149,60.1284428,-1.7543149,60.1284428,-1.5754914,59.797917,-1.5754914,59.797917,-1.0316959,60.0354518,-1.0316959,60.0354518,-0.6626918,60.9103862,-0.6626918,60.9103862,-1.1034395,60.8040022,-1.1034395,60.8040022,-1.3506319,60.6885737,-1.3506319;60.1968568,-2.203381,60.0929443,-2.203381,60.0929443,-1.9864011,60.1968568,-1.9864011;59.5698289,-1.7543149,59.4639383,-1.7543149,59.4639383,-1.5373349,59.5698289,-1.5373349;59.1370518,-4.5585981,58.9569099,-4.5585981,58.9569099,-4.2867004,59.1370518,-4.2867004;59.2025744,-6.2787732,59.0227769,-6.2787732,59.0227769,-5.6650612,59.2025744,-5.6650612;57.9440556,-8.7163482,57.7305936,-8.7163482,57.7305936,-8.3592926,57.9440556,-8.3592926;50.4021026,-7.6077005,50.2688657,-7.6077005,50.2688657,-7.3907205,50.4021026,-7.3907205;58.3579902,-7.7304303,58.248313,-7.7304303,58.248313,-7.5134503,58.3579902,-7.5134503}]
imagery.layers.0=[Bing Sat, bing:bing, , , , , , , ]
imagery.layers.1=[Landsat, wms:http://onearth.jpl.nasa.gov/wms.cgi?request=GetMap&layers=global_mosaic&styles=&format=image/jpeg&, , , , , , , ]
imagery.layers.2=[Landsat (mirror), wms:http://irs.gis-lab.info/?layers=landsat&, , , , , , , ]
imagery.layers.3=[MapQuest Open Aerial, tms:http://oatile1.mqcdn.com/naip/{zoom}/{x}/{y}.png, , , , , , , ]
imagery.layers.4=[OS StreetView, wms:http://os.openstreetmap.org/wms/map.php?source=sv&, , , , , , , ]
imagery.layers.5=[OpenStreetMap, tms:http://tile.openstreetmap.org/, , , , osm, osm, , osm]
imagery.layers.6=[SPOTMaps (France), wms:http://spotmaps.youmapps.org/cgi-bin/mapserv?map=/home/ortho/ortho.map&service=wms&version=1.1.1&srs=EPSG:4326&request=GetMap&layers=spotmaps4osm&format=image/jpeg&FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&Layers=demo&, , , , , , , ]
imagery.layers.7=[Yahoo Sat, html:http://josm.openstreetmap.de/wmsplugin/YahooDirect.html?, , , , , , , ]
imagery.layers.addedIds=[Bing, MAPNIK, Mapbox, OS-OpenData_StreetView, SIG_LR-Orthophotographie-2012, mapquest-oa, osm-mapnik-black_and_white, yahoo_sat]
imagery.layers.default=[http://oatile{switch:1,2,3,4}.mqcdn.com/tiles/1.0.0/sat/{zoom}/{x}/{y}.png, http://www.bing.com/maps/, http://{switch:a,b,c}.tiles.mapbox.com/v3/openstreetmap.map-4wvf9l0l/{zoom}/{x}/{y}.png, http://{switch:a,b,c}.tiles.mapbox.com/v4/openstreetmap.map-inh7ifmo/{zoom}/{x}/{y}.png?access_token=pk.eyJ1Ijoib3BlbnN0cmVldG1hcCIsImEiOiJhNVlHd29ZIn0.ti6wATGDWOmCnCYen-Ip7Q, http://{switch:a,b,c}.tiles.mapbox.com/v4/openstreetmap.map-inh7ifmo/{zoom}/{x}/{y}.png?access_token=pk.eyJ1Ijoib3BlbnN0cmVldG1hcCIsImEiOiJncjlmd0t3In0.DmZsIeOW-3x-C5eX-wAqTw, http://{switch:a,b,c}.www.toolserver.org/tiles/bw-mapnik/{zoom}/{x}/{y}.png, https://tiles.wmflabs.org/bw-mapnik/{zoom}/{x}/{y}.png, https://{switch:a,b,c}.tile.openstreetmap.org/{zoom}/{x}/{y}.png]
imagery.tms.autoload=true
imagery.tms.autozoom=true
imagery.wms.alpha_channel=false
iodb.modify.toolbar=false
iodb.offset.message=true
iodb.stored.offsets=[tiles.mapbox.com/v3/openstreetmap.map-4wvf9l0l:43.258099999999985:3.5018999999999996:0.0:0.0, geolittoral.application.developpement-durable.gouv.fr/wms2/metropole?language=fre&layers=ortholittorale_v2_rvb:43.298255130266845:3.4713091950460955:-0.3:0.0, wms.siglr.org/wmsortho2012?layers=ortho20cm_LR:43.30495961327758:3.4871844029817116:-0.3:0.0, geolittoral.application.developpement-durable.gouv.fr/wms2/metropole?layers=ortholittorale_v2_rvb:43.31773300855291:3.4718587473300433:0.0:0.0, bing:43.29113307415633:3.4466622385350547:-0.6:1.5]
josm.version=10966
lastAddAuthor=false
lastDirectory=/Volumes/Docs & Apps/Downloads/OSM data/Edit 16
layerlist.buttonhiding=ALWAYS_SHOWN
mappaint.clone-style.lastDirectory=${HOME}/.josm
mappaint.node.virtual-size=0
mappaint.renderer-class-name=org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer
mappaint.style.entries=[{title=JOSM default (MapCSS), active=true, ptoken=standard, url=resource://styles/standard/elemstyles.mapcss}, {title=Potlatch 2, active=false, ptoken=standard, url=resource://styles/standard/potlatch2.mapcss}]
mappaint.style.known-defaults=[resource://styles/standard/elemstyles.mapcss, resource://styles/standard/potlatch2.mapcss]
mappaint.style.sources-list=[[resource://styles/standard/elemstyles.xml, standard, JOSM Internal Style, true], [resource://styles/standard/potlatch2.mapcss, standard, Potlatch 2, false]]
marker.audiofromstart=false
marker.audiofromuntimedwaypoints=false
markers.lastaudiodirectory=/Volumes/Docs & Apps/Documents/Downloads/Garmin/OSM data/VOICE
message.download.suggest-imagery-layer=false
message.download.suggest-imagery-layer.value=1
message.imagery.nagPanel.http://geolittoral.application.developpement-durable.gouv.fr/wms2/metropole?FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=ortholittorale_v2_rvb&STYLES=&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}=false
message.imagery.nagPanel.http://geolittoral.application.developpement-durable.gouv.fr/wms2/metropole?language=fre&FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=ortholittorale_v2_rvb&STYLES=&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}=false
message.imagery.nagPanel.http://proxy-ign.openstreetmap.fr/bdortho/{zoom}/{x}/{y}.jpg=false
message.imagery.nagPanel.http://wms.siglr.org/wmsortho2012?FORMAT=image/jpeg&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&LAYERS=ortho20cm_LR&STYLES=&SRS={proj}&WIDTH={width}&HEIGHT={height}&BBOX={bbox}=false
message.imagery.nagPanel.http://www.bing.com/maps/=false
message.imagery.nagPanel.http://{switch:a,b,c}.layers.openstreetmap.fr/bano/{zoom}/{x}/{y}.png=false
message.imagery.nagPanel.http://{switch:a,b,c}.tiles.mapbox.com/v3/openstreetmap.map-4wvf9l0l/{zoom}/{x}/{y}.png=false
message.imagery.nagPanel.http://{switch:a,b,c}.tiles.mapbox.com/v4/openstreetmap.map-inh7ifmo/{zoom}/{x}/{y}.png?access_token=pk.eyJ1Ijoib3BlbnN0cmVldG1hcCIsImEiOiJncjlmd0t3In0.DmZsIeOW-3x-C5eX-wAqTw=false
message.imagery.nagPanel.https://{switch:a,b,c}.tile.openstreetmap.org/{zoom}/{x}/{y}.png=false
message.movedManyElements.value=1
message.notifier.enabled=false
message.upload_comment_is_empty_or_very_short.value=3
mirror.${HOME}/.josm/cache/images.http://nls.tileserver.com/nls70-nq8.png=[1417927528767, ${HOME}/.josm/cache/images/mirror_http___nls.tileserver.com_nls70-nq8.png]
mirror.<josm.cache>/images.http://nls.tileserver.com/nls70-nq8.png=[1471281795872, <josm.cache>/images/mirror_http___nls.tileserver.com_nls70-nq8.png]
mirror.<josm.cache>/images.http://svn.openstreetmap.org/applications/editors/josm/plugins/cadastre-fr/images/cadastre_small.png=[1477433394991, <josm.cache>/images/mirror_http___svn.openstreetmap.org_applications_editors_josm_plugins_cadastre-fr_images_cadastre_small.png]
mirror.http://josm.openstreetmap.de/maps=[1384288090228, ${HOME}/.josm/cache/mirror_http___josm.openstreetmap.de_maps]
mirror.http://josm.openstreetmap.de/presets=1301796537038;${HOME}/.josm/mirror_http___josm.openstreetmap.de_presets
mirror.http://josm.openstreetmap.de/styles=1301796526055;${HOME}/.josm/mirror_http___josm.openstreetmap.de_styles
mirror.http://planet.openstreetmap.org/users_agreed/users_agreed.txt=[1339980808526, ${HOME}/.josm/cache/mirror_http___planet.openstreetmap.org_users_agreed_users_agreed.txt]
mirror.http://planet.openstreetmap.org/users_agreed/users_disagreed.txt=[1339980809017, ${HOME}/.josm/cache/mirror_http___planet.openstreetmap.org_users_agreed_users_disagreed.txt]
mirror.http://svn.openstreetmap.org/applications/editors/josm/plugins/validator/ignoretags.cfg=1296356603662;${HOME}/.josm/plugins/validator/mirror_http___svn.openstreetmap.org_applications_editors_josm_plugins_validator_ignoretags.cfg
mirror.http://svn.openstreetmap.org/applications/editors/josm/plugins/validator/tagchecker.cfg=1296356603666;${HOME}/.josm/plugins/validator/mirror_http___svn.openstreetmap.org_applications_editors_josm_plugins_validator_tagchecker.cfg
mirror.http://svn.openstreetmap.org/applications/editors/josm/plugins/wmsplugin/sources.cfg=1296356603306;${HOME}/.josm/plugins/wmsplugin/mirror_http___svn.openstreetmap.org_applications_editors_josm_plugins_wmsplugin_sources.cfg
mirror.http://svn.openstreetmap.org/applications/utils/planet.osm/java/speller/words.cfg=1296356603658;${HOME}/.josm/plugins/validator/mirror_http___svn.openstreetmap.org_applications_utils_planet.osm_java_speller_words.cfg
mirror.https://josm.openstreetmap.de/maps=[1477937093431, <josm.cache>/mirror_https___josm.openstreetmap.de_maps]
mirror.https://josm.openstreetmap.de/presets=[1425701692677, <josm.cache>/mirror_https___josm.openstreetmap.de_presets]
mirror.https://josm.openstreetmap.de/rules=[1461014707748, <josm.cache>/mirror_https___josm.openstreetmap.de_rules]
mirror.https://josm.openstreetmap.de/styles=[1451851125465, <josm.cache>/mirror_https___josm.openstreetmap.de_styles]
org.openstreetmap.josm.actions.DownloadPrimitiveAction.primitivesHistory=[159660892,159660894,159660895,159660898, 128129669]
org.openstreetmap.josm.actions.SessionSaveAsAction$SessionSaveAsDialog.geometry=x=544,y=222,width=350,height=450
org.openstreetmap.josm.gui.actionsupport.DeleteFromRelationConfirmationDialog.geometry=x=520,y=361,width=400,height=200
org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog.geometry=x=420,y=261,width=600,height=400
org.openstreetmap.josm.gui.conflict.tags.TagConflictResolver.showTagsWithConflictsOnly=true
org.openstreetmap.josm.gui.dialogs.ConflictResolutionDialog.geometry=x=312,y=215,width=703,height=446
org.openstreetmap.josm.gui.dialogs.DeleteFromRelationConfirmationDialog.geometry=x=519,y=347,width=400,height=200
org.openstreetmap.josm.gui.dialogs.InspectPrimitiveDialog.geometry=x=298,y=218,width=750,height=550
org.openstreetmap.josm.gui.dialogs.LatLonDialog.geometry=x=425,y=182,width=589,height=530
org.openstreetmap.josm.gui.dialogs.properties.TagEditHelper$AddTagsDialog.geometry=x=104,y=299,width=416,height=442
org.openstreetmap.josm.gui.dialogs.properties.TagEditHelper$EditTagDialog.geometry=x=0,y=323,width=1362,height=192
org.openstreetmap.josm.gui.dialogs.relation.GenericRelationEditor.geometry=x=1219,y=539,width=697,height=660
org.openstreetmap.josm.gui.download.DownloadDialog.geometry=x=218,y=164,width=1000,height=600
org.openstreetmap.josm.gui.download.DownloadObjectDialog.primitivesHistory=[3854048, r2720050 r2810674, 610737338]
org.openstreetmap.josm.gui.help.HelpBrowser.geometry=x=0,y=22,width=997,height=878
org.openstreetmap.josm.gui.history.HistoryBrowserDialogManager.geometry=x=1023,y=700,width=850,height=500
org.openstreetmap.josm.gui.io.CloseChangesetDialog.geometry=x=568,y=301,width=300,height=300
org.openstreetmap.josm.gui.io.UploadDialog.geometry=x=501,y=145,width=600,height=623
org.openstreetmap.josm.gui.io.UploadSelectionDialog.geometry=x=438,y=185,width=413,height=539
org.openstreetmap.josm.gui.layer.GpxLayer$ChooseTrackVisibilityAction.geometry=x=218,y=211,width=1000,height=500
org.openstreetmap.josm.gui.layer.gpx.ChooseTrackVisibilityAction.geometry=x=733,y=512,width=1000,height=500
org.openstreetmap.josm.gui.oauth.OAuthAuthorizationWizard.geometry=x=495,y=191,width=450,height=540
org.openstreetmap.josm.gui.preferences.PreferenceDialog.geometry=x=376,y=22,width=769,height=746
org.openstreetmap.josm.gui.preferences.advanced.ListEditor.geometry=x=585,y=285,width=442,height=350
org.openstreetmap.josm.gui.preferences.advanced.ListListEditor.geometry=x=485,y=220,width=500,height=350
org.openstreetmap.josm.gui.preferences.advanced.MapListEditor.geometry=x=485,y=220,width=500,height=350
osm-download.bounds=43.2753123;3.4771663;43.2775536;3.4810465
osm-primitives.showid=true
osm-server.atomic-upload=false
osm-server.auth-method=basic
osm-server.upload-strategy=chunked
osm-server.upload-strategy.chunk-size=300
piclayer.autoloadcal=yes
piclayer.lastdir=/Volumes/Docs & Apps/Downloads/Satellite/A
piclayer.zoom-on-load=0
pluginmanager.lastupdate=1473328679649
pluginmanager.version=10966
plugins=[ImportImagePlugin, InfoMode, PicLayer, apache-commons, cadastre-fr, download_along, editgpx, ejml, geotools, imagery_offset_db, jts, log4j, measurement, opendata, poly, reverter, turnrestrictions, undelete, utilsplugin2, waydownloader]
plugins.importimage.importpath=/Volumes/Docs & Apps/Downloads/Satellite/F
projection.custom.value.history=[+proj=somerc +ellps=WGS84 +datum=WGS84 +lat_0=0 +bounds=-180,-85,180,85, +proj=somerc +ellps=WGS84 +datum=WGS84 +bounds=-180,-85,180,85, , +proj=lonlat +ellps=WGS84 +datum=WGS84 +bounds=-180,-90,180,90, +proj=tmerc +lat_0=0 +lon_0=9 +k_0=1 +x_0=3500000 +y_0=0 +ellps=bessel +nadgrids=BETA2007.gsb]
projection.sub=[]
projection.sub.Lambert=[3]
projection.sub.LambertCC9Zones=[2]
projection.sub.core:custom=[+proj=somerc +ellps=WGS84 +datum=WGS84 +lat_0=0 +bounds=-180,-85,180,85]
projection.sub.core:lambert=[3]
projection.sub.core:lambert93=[]
projection.sub.core:lambertcc9=[2]
projection.sub.core:mercator=[]
projection.sub.core:wgs84=[]
properties.recent-tags=[addr:postcode, 34300, addr:housenumber, 2, addr:street, Quai Antoine Fonquerle, name, Police municipale, name, Office de Tourisme, amenity, townhall, name, Mairie annexe, source, http://www.ville-agde.fr/, name, info, name, tree, name, recycling, name, light, name, shelter, name, toilets, name, bus stop, name, crossing, highway, service, motor_vehicle, private, barrier, bollard, bollard, rising, amenity, toilets, source, survey, barrier, height_restrictor, crossing, uncontrolled, highway, crossing, source, Ortho SIG L-R 2012, source, Ortho SIG L-R 2012; Bing (with offset corrected), alt_name, Rue Jean Jaurès prolongée, network, Cap'bus, recycling_type, container]
propertiesdialog.buttonhiding=ALWAYS_SHOWN
proxy.policy=no-proxy
relation.editor.generic.lastrole=forward
relationlist.visible=false
resource://styles/standard/elemstyles.mapcss:boolean:highway_labels=false
reverter.ChangesetIdQuery.changesetsHistory=[37960589, 24347126, 37338712]
search.history=[D type=route, R modified, D user:"Adrian 2", R timestamp:2016-10-21/, S public_transport=stop_area, S public_transport=platform, R user:"Adrian 2", RC Cap'Bus, RC Cap'bus, R Cap'bus, R parent selected, S parent selected, R public_transport=platform]
selectionlist.buttonhiding=ALWAYS_SHOWN
selectionlist.geometry=
shortcut.entry.toolbar:movenode=[Toolbar: Move Node..., 65535, 5000, 77, 320, false, true]
shortcut.groups.1=128
shortcut.groups.10=64
shortcut.groups.11=576
shortcut.groups.12=64
shortcut.groups.13=512
shortcut.groups.15=640
shortcut.groups.16=768
shortcut.groups.17=576
shortcut.groups.18=512
shortcut.groups.19=576
shortcut.groups.2=256
shortcut.groups.20=512
shortcut.groups.3=0
shortcut.groups.4=512
shortcut.groups.5=0
shortcut.groups.6=512
shortcut.groups.8=192
shortcut.groups.9=320
shortcut.groups.configured=true
sidetoolbar.always-visible=false
sidetoolbar.hidden.dialogs/minimap=true
sidetoolbar.hidden.mapmode/move/move=false
sidetoolbar.hidden.org.openstreetmap.josm.plugins.piclayer.actions.transform.MovePictureAction=false
sidetoolbar.hidden.org.openstreetmap.josm.plugins.piclayer.actions.transform.ScaleXYPictureAction=false
simplify-way.max-error=0.08
smedplugin.IALA=A
sourcetag.value=survey
statusbar.always-visible=false
taggingpreset.entries=[{title=Internal Preset, url=resource://data/defaultpresets.xml}]
taggingpreset.sources-list=[[resource://data/defaultpresets.xml, Internal Preset]]
toggleDialogs.width=400
toolbar=[open, save, download, upload, |, undo, redo, |, dialogs/search(searchExpression=), preference, |, splitway, combineway, wayflip, movenode, |, tagginggroup_Highways/Streets, tagginggroup_Highways/Ways, tagginggroup_Highways/Waypoints, tagginggroup_Highways/Barriers, |, tagginggroup_Transport/Car, tagginggroup_Transport/Public Transport, |, |, |, getoffset]
turnrestrictions.edit-shortcut=shift ctrl pressed T
undelete.newlayer=false
undelete.osmid=w291671074
upload.changeset.close=false
upload.comment.history=[Bus route updated, POIs added and updated, geometry improved - Agde, Highways added, name updated, geometry improved - Agde, Highways added, geometry improved, oneways updated - Agde, Highways added, geometry improved - Agde, Oneways added, highways added, geometry improved, names corrected - Agde, Oneways, highways and POIs added, POI updated, names added, updated and corrected - Agde, Corrections including names, geometry improvements, one-ways added - Agde, Square retagged, paths added - Agde, Geometry improved, corrections - Agde, Corrections including names, POIs added, geometry and road network improved - Agde, Some roads reclassified tertiary to improve road network, names corrected, geometry improved - Agde, Tagging of bus stops  improved, names corrected, geometry improved - Agde, Oneway added, overlapping highways corrected - Agde, Recovered some of the history lost in changeset 37338712, geometry improvements, highways added - Agde, Highways added, names corrected, geometry improvements - Agde]
upload.comment.last-used=1477525254
upload.source.history=[Ortho SIG L-R 2012, Bing (with offset corrected), survey: see individual objects, Ortho SIG L-R 2012, survey, Ortho SIG L-R 2012, Ortho SIG L-R 2012, Bing (with offset corrected), survey, survey, Survey, Cadastre, Ortho Sig L-R 2012: see individual objects, survey, Bing (with offset corrected), Ortho SIG L-R 2012, Bing (with offset corrected), Cadastre, Ortho SIG L-R 2012, Cadastre, Ortho SIG L-R 2012, Bing (with offset corrected), Cadastre, local knowledge, Ortho SIG L-R 2012, Bing (with offset corrected), Survey, Ortho SIG L-R 2012, Bing (with offset corrected), Cadastre: see individual objects, Cadastre, survey, Ortho Sig L-R 2012, Bing (with offset corrected), Cadastre, Ortho SIG L-R 2012, survey, Celtipharm, Min de la Santé]
use.native.file.dialog=false
utilsplugin2.urlHistory=[Wikipedia, http://en.wikipedia.org/w/index.php?search={name}&fulltext=Search, Wikipedia RU, http://osm.mapki.com/history/{#type}.php?id={#id}, LatLon buildings, http://latlon.org/buildings?zoom=17&lat={#lat}&lon={#lon}&layers=B, AMDMi3 Russian streets, http://addresses.amdmi3.ru/?zoom=11&lat={#lat}&lon={#lon}&layers=B00, Mapki - More  History with CT, http://osm.mapki.com/history/{#type}.php?id={#id}, Element history [demo, =Ctrl-Shift-H], http://www.openstreetmap.org/browse/{#type}/{#id}/history, Browse element [demo, =Ctrl-Shift-I], http://www.openstreetmap.org/browse/{#type}/{#id}]
validator.ignore=false
validator.org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker.entries=[{active=true, title=Addresses, url=resource://data/validator/addresses.mapcss}, {active=true, title=Tag combinations, url=resource://data/validator/combinations.mapcss}, {active=true, title=Deprecated features, url=resource://data/validator/deprecated.mapcss}, {active=true, title=Geometry, url=resource://data/validator/geometry.mapcss}, {active=true, title=Highways, url=resource://data/validator/highway.mapcss}, {active=true, title=Multiple values, url=resource://data/validator/multiple.mapcss}, {active=true, title=Numeric values, url=resource://data/validator/numeric.mapcss}, {active=true, title=Religion, url=resource://data/validator/religion.mapcss}, {active=true, title=Relations, url=resource://data/validator/relation.mapcss}, {active=true, title=Unnecessary tags, url=resource://data/validator/unnecessary.mapcss}, {active=true, title=Wikipedia, url=resource://data/validator/wikipedia.mapcss}]
validator.other=true
validator.skip=[]
validator.skipBeforeUpload=[]
zoom.ratio=1.4142135623730951
}}}

by Adrian, 7 years ago

Updated version of source file

comment:2 by Adrian, 7 years ago

With r10966, my code always invoked the non-native file chooser, unaffected by the preference setting. With the changes made to the native file chooser in r11223, my code now invokes the native or non-native file chooser, according to the preference. There is a difference in the behaviour of the native and non-native file choosers in Mac OS X. To choose a .app, the non-native file chooser requires "files only" but the native file chooser requires "directories only". This requires a change to the added file SetExternalViewerAction.java. I have attached the new version of this file.

comment:3 by bastiK, 7 years ago

Summary: Open geotagged image in external viewer[patch] Open geotagged image in external viewer

Please see DevelopersGuide/PatchGuide. I would strongly recommend you check out the code with subversion and use svn diff to create the patch.

by Adrian, 7 years ago

Attachment: 13815.patch added

comment:4 by Adrian, 7 years ago

I have attached a patch as requested. I had already used svn co to obtain the source code. When I first tried svn diff, the patch did not include the new files and it took me some time to find out that I needed to use svn add before using svn diff.

comment:5 by bastiK, 7 years ago

Thanks, I've tested your patch. There is still considerable work needed, before this can be merged. For starters, it only works on Mac OS. We would also need implementations for Windows and Linux. There should also be a different icon as the current one suggests opening a (image-)file, not an application.

Idea: What would be nice here, is a split button (see SideButton.createArrow) where a list of possible applications is shown in a popup. (+ one entry other application ...)

comment:6 by Adrian, 7 years ago

Thank you for looking at my patch.

From the documentation which I found, my code should work on Windows. I am disappointed to learn that it doesn't.

Unfortunately there is a significant snag - I prefer to spend my time mapping rather than coding. I have already spent much longer than I had planned to spend on this patch. I thought I would share what I have done, rather than keeping it to myself. With regret, I do not wish to spend any more time on this patch. I was already building my own custom version of JOSM because of some other changes which the development team did not wish to incorporate into JOSM. I will simply include this patch in my custom version.

Shall I leave this ticket open or close it with wontfix?

in reply to:  6 comment:7 by bastiK, 7 years ago

Replying to ar2988-os@…:

Thank you for looking at my patch.

From the documentation which I found, my code should work on Windows. I am disappointed to learn that it doesn't.

I just tested on Linux. Your patch seemed tailored for Mac OS, but I only had a quick look.

Unfortunately there is a significant snag - I prefer to spend my time mapping rather than coding. I have already spent much longer than I had planned to spend on this patch. I thought I would share what I have done, rather than keeping it to myself. With regret, I do not wish to spend any more time on this patch. I was already building my own custom version of JOSM because of some other changes which the development team did not wish to incorporate into JOSM. I will simply include this patch in my custom version.

Fair enough. Btw., there is usually less scrutiny if you contribute to plugins or create your own plugin.

Shall I leave this ticket open or close it with wontfix?

Can be closed.

comment:8 by Adrian, 7 years ago

Thank you.

Perhaps I should have provided some instructions, as follows: Open the context menu of the Geotagged Images layer. Click on "Set external viewer" to choose the app to be used as the external image viewer. (The other item I have added to that menu, allows you to launch the external viewer by clicking on the camera icon or thumbnail.)

I have now had the opportunity to try my patch on Windows, on a friend's computer. It works, if you first follow the instructions above (Windows 10, Java 8u111.) It doesn't work for me on Mac OS (now on 10.11.6 and Java 8u112) without following the instructions above.

I have just discovered a subtle bug in the native Mac file chooser, which has an effect on my patch. I will investigate further and report back.

comment:9 by Adrian, 7 years ago

The bug was not in the native Mac file chooser but in my code, and I have now fixed it. The attached 13815_v2.patch has been modified in three respects.

  1. Bugfix.
  2. Some missing tr() have been added.
  3. Updated to apply cleanly to r11427.

by Adrian, 7 years ago

Attachment: 13815_v2.patch added

in reply to:  8 comment:10 by bastiK, 7 years ago

Thanks for the update, still the patch is not ready to be applied. The major problem is the GUI design. For any button, either it is disabled or something must happen, if clicked.

Replying to ar2988-os@…:

Perhaps I should have provided some instructions, as follows: Open the context menu of the Geotagged Images layer. Click on "Set external viewer" to choose the app to be used as the external image viewer. (The other item I have added to that menu, allows you to launch the external viewer by clicking on the camera icon or thumbnail.)

This is not very intuitive. If it is a global (rather than per-layer) setting, it should be in the preferences dialog. (Or accessed by clicking the launcher button.)

I have now had the opportunity to try my patch on Windows, on a friend's computer. It works, if you first follow the instructions above (Windows 10, Java 8u111.) It doesn't work for me on Mac OS (now on 10.11.6 and Java 8u112) without following the instructions above.

What would be really nice is to figure out the list of applications that are registered to open an image (as would be presented by right clicking an image file in a file browser). Of course this is platform dependent and may be tricky.

Please let me know, if you are planning to work on this, otherwise the ticket can be closed.

comment:11 by bastiK, 7 years ago

Resolution: needinfo
Status: newclosed

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.