Ticket #11795: 11795.patch

File 11795.patch, 6.4 KB (added by simon04, 4 years ago)
  • scripts/taginfoextract.groovy

    diff --git a/scripts/taginfoextract.groovy b/scripts/taginfoextract.groovy
    index c61b46b..158d679 100644
    a b  
    66 *
    77 * groovy -cp dist/josm-custom.jar scripts/taginfoextract.groovy -t mappaint
    88 * groovy -cp dist/josm-custom.jar scripts/taginfoextract.groovy -t presets
     9 * groovy -cp dist/josm-custom.jar scripts/taginfoextract.groovy -t external_presets
    910 */
    1011import groovy.json.JsonBuilder
    11 
    12 import java.awt.image.BufferedImage
    13 import java.nio.file.FileSystems
    14 import java.nio.file.Files
    15 import java.nio.file.Path
    16 
    17 import javax.imageio.ImageIO
    18 
    1912import org.openstreetmap.josm.Main
    2013import org.openstreetmap.josm.data.Version
    2114import org.openstreetmap.josm.data.coor.LatLon
    import org.openstreetmap.josm.gui.NavigatableComponent 
    2821import org.openstreetmap.josm.gui.mappaint.AreaElemStyle
    2922import org.openstreetmap.josm.gui.mappaint.Environment
    3023import org.openstreetmap.josm.gui.mappaint.LineElemStyle
    31 import org.openstreetmap.josm.gui.mappaint.MultiCascade
    3224import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference
    33 import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource
     25import org.openstreetmap.josm.gui.mappaint.MultiCascade
    3426import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.SimpleKeyValueCondition
     27import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource
    3528import org.openstreetmap.josm.gui.mappaint.mapcss.Selector.GeneralSelector
    3629import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.MapCSSParser
     30import org.openstreetmap.josm.gui.preferences.map.TaggingPresetPreference
    3731import org.openstreetmap.josm.gui.tagging.TaggingPreset
    3832import org.openstreetmap.josm.gui.tagging.TaggingPresetItems
    3933import org.openstreetmap.josm.gui.tagging.TaggingPresetReader
    import org.openstreetmap.josm.gui.tagging.TaggingPresetType 
    4135import org.openstreetmap.josm.io.CachedFile
    4236import org.openstreetmap.josm.tools.Utils
    4337
     38import javax.imageio.ImageIO
     39import java.awt.image.BufferedImage
     40import java.nio.file.FileSystems
     41import java.nio.file.Files
     42import java.nio.file.Path
     43
    4444class taginfoextract {
    4545
    4646    static def options
    class taginfoextract { 
    186186            script.run()
    187187        } else if (options.t == 'presets') {
    188188            script.run_presets()
     189        } else if (options.t == 'external_presets') {
     190            script.run_external_presets()
    189191        } else {
    190192            System.err.println 'Invalid type ' + options.t
    191193            System.exit(1)
    class taginfoextract { 
    234236
    235237    void run_presets() {
    236238        init()
    237         def tags = []
    238239        def presets = TaggingPresetReader.readAll(input_file, true)
     240        def tags = convert_presets(presets. "", true)
     241        write_json("JOSM main presets", "Tags supported by the default presets in the OSM editor JOSM", tags)
     242    }
     243
     244    def convert_presets(Iterable<TaggingPreset> presets, String descriptionPrefix, boolean addImages) {
     245        def tags = []
    239246        for (TaggingPreset preset : presets) {
    240247            for (TaggingPresetItems.KeyedItem item : Utils.filteredCollection(preset.data, TaggingPresetItems.KeyedItem.class)) {
    241248                def values
    class taginfoextract { 
    246253                }
    247254                for (String value : values) {
    248255                    def tag = [
    249                             description: preset.name,
     256                            description: descriptionPrefix + preset.name,
    250257                            key: item.key,
    251258                            value: value,
    252259                            object_types: preset.types.collect {it == TaggingPresetType.CLOSEDWAY ? "area" : it.toString().toLowerCase()},
    253260                    ]
    254                     if (preset.iconName) tag += [icon_url: find_image_url(preset.iconName)]
     261                    if (addImages && preset.iconName) tag += [icon_url: find_image_url(preset.iconName)]
    255262                    tags += tag
    256263                }
    257264            }
    258265        }
     266        return tags
     267    }
    259268
    260         write_json("JOSM main presets", "Tags supported by the default presets in the OSM editor JOSM", tags)
     269    void run_external_presets() {
     270        init()
     271        def sources = new TaggingPresetPreference.TaggingPresetSourceEditor().loadAndGetAvailableSources()
     272        def tags = []
     273        for (def source : sources) {
     274            if (source.url.startsWith("resource")) {
     275                // default presets
     276                continue;
     277            }
     278            try {
     279                println "Loading ${source.url}"
     280                def presets = TaggingPresetReader.readAll(source.url, false)
     281                def t = convert_presets(presets, source.title + " ", false)
     282                println "Converting ${t.size()} presets of ${source.title}"
     283                tags += t
     284            } catch (Exception ex) {
     285                System.err.println("Skipping ${source.url} due to error")
     286                ex.printStackTrace()
     287            }
     288        }
     289        write_json("JOSM user presets", "Tags supported by the user contributed presets in the OSM editor JOSM", tags)
    261290    }
    262291
    263292    void run() {
    class taginfoextract { 
    324353     */
    325354    def init() {
    326355        Main.initApplicationPreferences()
     356        Main.determinePlatformHook()
    327357        Main.pref.enableSaveOnPut(false)
    328358        Main.setProjection(Projections.getProjectionByCode("EPSG:3857"))
    329359        Path tmpdir = Files.createTempDirectory(FileSystems.getDefault().getPath(base_dir), "pref")
  • src/org/openstreetmap/josm/gui/preferences/SourceEditor.java

    diff --git a/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java b/src/org/openstreetmap/josm/gui/preferences/SourceEditor.java
    index 4d550dc..76b5c60 100644
    a b public boolean hasActiveSourcesChanged() { 
    444444        return activeSourcesModel.getSources();
    445445    }
    446446
     447    /**
     448     * Synchronously loads available sources and returns the parsed list.
     449     */
     450    Collection<ExtendedSourceEntry> loadAndGetAvailableSources() {
     451        try {
     452            final SourceLoader loader = new SourceLoader(availableSourcesUrl, sourceProviders);
     453            loader.realRun();
     454            return loader.sources;
     455        } catch (Exception ex) {
     456            throw new RuntimeException(ex);
     457        }
     458    }
     459
    447460    public void removeSources(Collection<Integer> idxs) {
    448461        activeSourcesModel.removeIdxs(idxs);
    449462    }