Changeset 8681 in josm for trunk/scripts


Ignore:
Timestamp:
2015-08-22T21:35:05+02:00 (4 years ago)
Author:
simon04
Message:

see #11795 - taginfo-extract also external presets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/scripts/taginfoextract.groovy

    r8671 r8681  
    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
     
    2922import org.openstreetmap.josm.gui.mappaint.Environment
    3023import org.openstreetmap.josm.gui.mappaint.LineElemStyle
     24import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference
    3125import org.openstreetmap.josm.gui.mappaint.MultiCascade
    32 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.IconReference
     26import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.SimpleKeyValueCondition
    3327import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource
    34 import org.openstreetmap.josm.gui.mappaint.mapcss.Condition.SimpleKeyValueCondition
    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
     
    4135import org.openstreetmap.josm.io.CachedFile
    4236import org.openstreetmap.josm.tools.Utils
     37
     38import javax.imageio.ImageIO
     39import java.awt.image.BufferedImage
     40import java.nio.file.FileSystems
     41import java.nio.file.Files
     42import java.nio.file.Path
    4343
    4444class taginfoextract {
     
    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
     
    235237    void run_presets() {
    236238        init()
     239        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) {
    237245        def tags = []
    238         def presets = TaggingPresetReader.readAll(input_file, true)
    239246        for (TaggingPreset preset : presets) {
    240247            for (TaggingPresetItems.KeyedItem item : Utils.filteredCollection(preset.data, TaggingPresetItems.KeyedItem.class)) {
     
    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        }
    259 
    260         write_json("JOSM main presets", "Tags supported by the default presets in the OSM editor JOSM", tags)
     266        return tags
     267    }
     268
     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
     
    325354    def init() {
    326355        Main.initApplicationPreferences()
     356        Main.determinePlatformHook()
    327357        Main.pref.enableSaveOnPut(false)
    328358        Main.setProjection(Projections.getProjectionByCode("EPSG:3857"))
Note: See TracChangeset for help on using the changeset viewer.