Skip to content
More languages

Translate automatically from English. Screenshots and search terms remain English.

Google Translate loads after you choose a language.

English original

Source version and verified examples

The Enigma2 source snapshot is the technical reference for this handbook. The receiver supplies illustrative screenshots; its installation does not define the documented feature set.

The API catalogue uses OpenATV Enigma2 commit f4135659cb. Every API entry links to a line at that revision. The catalogue stores the full commit and SHA-256 of lib/python/skin.py, plus the hashes of indexed component modules.

The accompanying explanations were checked against skin.py, Screens/Screen.py, Tools/Directories.py, the relevant component classes and native widget headers. Native capabilities vary by concrete class; the central attribute list is not a list of attributes valid on every widget.

Twelve example screens were rendered on a test receiver with OpenATV 8.0.1, image build 20261009, an Enigma2 version string of 2026-10-10, English (en_US) and an OSD of 1280 × 720. The documentation examples declare the same design resolution.

Example What was visually checked
hello Static XML label plus named Python GUI component
coordinates Explicit, centred and right-relative child positions
alignment Left/centre/right and top/centre/bottom text alignment
wrapping Clipping, wrapping and ellipsis
fonts Three font sizes with adequate label geometry
colors Opaque, half-transparent and transparent blended rectangles
layers Reversed overlap after changing zPosition
pixmaps Original size, distortion under stretch, preserved aspect ratio
panels Local child coordinates in two different panel origins
data Shared StaticText plus ClockToText duration formatting
borders Square/rounded frame and vertical gradient
progress Label background painting versus transparent background

Images are native grab -o -d -p captures with no TV video plane. The same English image is used in both native handbook routes. These are demonstrations created by the handbook’s example plugin, not screenshots of the active skin’s production menus.

The shipped capture manifest binds each PNG to its exact XML hash. Visual review checks are recorded separately from successful capture execution. Font rendering and available newer attributes may differ in another image. No claim is made that all 125 attributes or every indexed converter was visually tested.

The repository keeps one editorial source under docs/developer-content/. node scripts/sync-developers.mjs writes the matching DE/EN routes and downloadable example files. CI verifies that those mirrors match their source. Both search indexes include the English developer content.

python scripts/import-skin-api.py ../enigma2 rebuilds the catalogue from a clean skin.py checkout. New names require explanatory metadata in data/skin-api-notes.json; normal website builds use the committed catalogue and do not need an Enigma2 checkout or a receiver.

The advanced unit adds InfoBar data chains, classic and modern ChannelSelection, template fields, reusable panel designs and icon fonts. Its nine additional native scenes share the same lab download and capture manifest. ChoiceBox and further specialised screens can build on these units later.

python scripts/import-widget-api.py ../enigma2 builds data/widget-api.json from the same clean source revision. It records 16 native widget classes, 41 matching renderer-folder classes, 63 matching converter-folder classes and 55 other core GUIComponent classes/helpers. The inventory includes base classes and non-visual helpers, which are identified separately from normal XML renderers/converters.

Native attribute counts are derived from all central handlers, public native setters and inherited declarations. Alternative solid/gradient dispatch and the incompatible list/slider orientation signatures are treated explicitly. Aliases count as names; no-op handlers and structural names do not. Native declarations establish API availability, not visual results for every value/content combination.

Python AST extraction records constructors, applySkin, creation methods, properties, source accesses and method signatures. C3 inheritance supplies inherited properties and methods. Attribute comparisons, match branches and legacy local-function dispatch expose Python-handled names; the full parsing code also documents nested and dynamic options. A source-access list is not a universal required-input schema.

The snapshot stores SHA-256 hashes of its indexed files. The catalogue can be rebuilt without importing Enigma2; normal website builds consume the committed JSON. These API additions reuse the existing native visual examples and do not claim new receiver tests for every indexed method or attribute.