{% if error is defined and error %} {{ error }} {% elif catalog_size is defined and catalog_size %}
Catalog loaded

{{ catalog_size }} decoder definition{{ "s" if catalog_size != 1 else "" }} available. {% if programmer_count %} {{ programmer_count }} programmer configuration{{ "s" if programmer_count != 1 else "" }} loaded. {% endif %}

{% if manufacturers %}

Manufacturers: {{ manufacturers | join(", ") }}

{% endif %} {% elif load_in_progress %} {# An autoload (from JMRI_DECODER_XML_ROOT) or a manual load is running in the background. Delegate to the progress fragment so the user sees the thermometer + polling widget instead of the stale "Catalog empty" hint — they'd otherwise be tempted to click Load again on top of the in-flight load. #} {% include "_programmer_catalog_progress.html" %} {% else %}
Catalog empty

Load a decoder XML directory below — typically <JMRI install>/xml/decoders. The programmer view for a roster entry is gated on this catalog being loaded.

{% endif %}