| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- # -*- coding: utf-8 -*-
- """
- F5: Nutzungsvereinbarung — Markdown-Anzeige + Akzeptieren-Checkbox.
- """
- from __future__ import annotations
- from pathlib import Path
- from textual.widgets import Checkbox, Label, Markdown, Static
- from .base import InstallerView
- class AgreementView(InstallerView):
- """Nutzungsvereinbarung (F5)."""
- TITLE = "Vereinbarung"
- VIEW_ID = "agreement"
- MODES = ["server", "client", "standalone", "config"]
- def compose(self):
- yield Static("── Nutzungsvereinbarung ──", classes="section-header")
- # Markdown laden
- agreement_path = Path(__file__).parent.parent / "agreement.md"
- if agreement_path.is_file():
- content = agreement_path.read_text(encoding="utf-8")
- else:
- content = "*Vereinbarungstext nicht gefunden.*"
- yield Markdown(content, id="agreement-text")
- yield Label("")
- yield Checkbox(
- "Ich akzeptiere die Nutzungsbedingungen",
- value=self._config.agreement_accepted,
- id="cb-agreement",
- )
- def on_checkbox_changed(self, event: Checkbox.Changed) -> None:
- if event.checkbox.id == "cb-agreement":
- self._config.agreement_accepted = event.value
- def validate(self) -> str | None:
- if not self._config.agreement_accepted:
- return "Nutzungsbedingungen muessen akzeptiert werden"
- return None
|