# aura-demo

Eine eigenständige, interaktive Galerie des AURA-Frameworks. Benötigt keine externe Anwendung, keinen Server im Internet und keine angeschlossenen Geräte.

```sh
cmake --preset dev
cmake --build build/dev --target aura-demo
build/dev/examples/demo/aura-demo
```


```sh
aura-demo --page media
aura-demo --language en                   # gesamte Galerie auf Englisch
aura-demo --dynamic                       # gleiche Seiten aus .aura statt generiertem C++
aura-demo --render-all /tmp/aura-demo      # acht PNGs, ohne Fenster oder GPU
aura-demo --page motion --animate --wait 500 --render /tmp/motion.png
aura-demo --remote 8808                   # nur 127.0.0.1, /remote/screenshot.png usw.
```

Die Seitennamen zeigt `--list`. Mit `AURA_EXAMPLES=OFF` wird das Beispiel nicht gebaut. `aura-net`, `aura-script` und WebView werden entsprechend den bestehenden Buildoptionen eingebunden. Fehlende Module werden auf der Netzwerkseite angezeigt; die zugehörigen Tasten sind deaktiviert. WebView braucht `AURA_WITH_WEBVIEW=ON` und CEF. Standardmäßig wird kein Fernsteuerungsserver gestartet. Der HTTP-Test auf der Netzwerkseite verwendet einen eigenen lokalen Server mit freiem Port.

| Seite | Beispiele |
|---|---|
| Widgets | Button, deaktivierter Zustand, CheckBox, Switch, RadioButton, ComboBox, Slider, ProgressBar, direkte Element-Bindungen |
| Texteingabe | TextField, UTF-8, Fokus, maskierte Eingabe, Zeichenfilter, Maximallänge, Enter, drei echte Keyboard-Layouts |
| Grafik & Text | Rect, Gradient, Rahmen, individuelle Ecken, Skalierung/Rotation/Transparenz, Textumbruch, fit, Schriftgewicht, Unterstreichung, Zeichenabstand, RichText, Html, vier Image-Füllmodi, Svg, QrCode, Context-Übersetzung |
| Layouts & Daten | Item, Column, Row, Grid, grow/stretch, Anker, RTL, Umbruch, horizontales/vertikales Scrollen, Records, repeat, if, LazyRepeat mit 2.000 Einträgen |
| Animationen | state/when, Bindungen, animate, enter/exit, loop, spin, pressSink, glow, Ripple, Popover |
| Medien | VP9/WebM über VideoPlayer/VideoNode, echte Rive-Animation, Rasterbild/SVG, EAN-13 und QR |
| Laufzeit & Geräte | TaskRunner/latest/Abbruch, Timer/Pause, Property/Subscription, JSON/YAML/XML, TAR-Roundtrip, Kindprozess mit Timeout, Datum/Zeit, Systemdaten, UeventMonitor, SCSI-MediumWatcher und usbmuxd-Beobachtung |
| Netz & Skripte | HttpClient, Server/WebApp, HTTPS mit temporärer eigener CA (mit/ohne Vertrauen), Session-Zugriff, SHA-256, AES-GCM und Manipulationsprüfung, JS/Lua mit gemeinsamer nativer Funktion und Zeitlimit, optional WebView/WebChannel; Remote-Controller über `--remote` |

Die Sprachfunktionen Komponenten, Signale, Zustands-Properties und Theme/Context werden durchgängig verwendet. Der Szenenbaum und die Eingaben sind über die Fernsteuerung inspizierbar (`nodes.json`, `actions.json`, `keypress.json`, `click.json`, `screen.mjpg`). Headless-Tests bedienen echte Widgets und prüfen asynchrone Antworten in kompiliertem und dynamischem Modus. Hardwarebeobachtung startet erst über die Taste; es werden keine Medien gemountet, ausgeworfen oder beschrieben. Ohne Geräte bleiben die übrigen Beispiele nutzbar. Das Beispiel zeigt die Modulgruppen, nicht jede Überladung jeder C++-Hilfsfunktion.

## Quellen

- Darstellung: `ui/*.aura`, wiederverwendbare Bausteine in `common.aura`.
- Anwendung und Navigation: `demo.cpp`, `demo_context.h`, `main.cpp`.
- Reaktionen/API-Beispiele: `controls.cpp`, `showcase.cpp`, `runtime.cpp`, `network.cpp`.
- Lokale Assets: `assets/`; Herkunft und Lizenzen in `assets/NOTICE`. Die DejaVu-Testschrift stammt aus `../../tests/fonts` mit dortiger Lizenz.
- Tests: `smoke.cpp`, CTest `aura_demo_compiled` und `aura_demo_dynamic`.

Die Sprachumschaltung übersetzt Navigation, Seiten und Statusmeldungen über `assets/en.json`. Sie baut die aktuelle Beispielseite neu auf und setzt deren Demonstrationszustand zurück. Worker erhalten einen unveränderlichen Übersetzungs-Snapshot.
