gui.dialogs.about_dialog

 1from PySide6.QtWidgets import (
 2    QDialog, QVBoxLayout, QHBoxLayout, QLabel, QPushButton,
 3)
 4from PySide6.QtCore import Qt
 5
 6from lib import __version__ as _VERSION, APPIMAGE_VARIANT
 7from lib.i18n import _
 8
 9_AUTHOR   = 'David Vaquero'
10_REPO_URL = 'https://gitlab.com/pepesan/temario-app'
11_WEB_URL  = 'https://temario.app'
12
13
14class AboutDialog(QDialog):
15    def __init__(self, parent=None):
16        super().__init__(parent)
17        self.setWindowTitle(_('Acerca de Temario'))
18        self.setFixedWidth(360)
19        self.setModal(True)
20        self._build_ui()
21
22    def _build_ui(self) -> None:
23        layout = QVBoxLayout(self)
24        layout.setSpacing(10)
25        layout.setContentsMargins(24, 24, 24, 20)
26
27        title = QLabel('<b style="font-size:17px">Temario</b>')
28        title.setAlignment(Qt.AlignmentFlag.AlignCenter)
29        layout.addWidget(title)
30
31        ver = QLabel(f'v{_VERSION}')
32        ver.setObjectName('file_label')
33        ver.setAlignment(Qt.AlignmentFlag.AlignCenter)
34        layout.addWidget(ver)
35
36        if APPIMAGE_VARIANT == 'full':
37            variant_lbl = QLabel(_('AppImage · LibreOffice incluido'))
38            variant_lbl.setObjectName('file_label')
39            variant_lbl.setAlignment(Qt.AlignmentFlag.AlignCenter)
40            layout.addWidget(variant_lbl)
41        elif APPIMAGE_VARIANT == 'slim':
42            variant_lbl = QLabel(_('AppImage · requiere libreoffice del sistema'))
43            variant_lbl.setObjectName('file_label')
44            variant_lbl.setAlignment(Qt.AlignmentFlag.AlignCenter)
45            layout.addWidget(variant_lbl)
46
47        layout.addSpacing(6)
48
49        desc = QLabel(_('Generador de presentaciones ODP/PDF\na partir de ficheros YAML.'))
50        desc.setAlignment(Qt.AlignmentFlag.AlignCenter)
51        desc.setWordWrap(True)
52        layout.addWidget(desc)
53
54        layout.addSpacing(10)
55
56        for html in (
57            f'{_("Desarrollador:")} <b>{_AUTHOR}</b>',
58            f'<a href="{_REPO_URL}">{_("Repositorio GitLab")}</a>',
59            f'<a href="{_WEB_URL}">{_WEB_URL}</a>',
60        ):
61            lbl = QLabel(html)
62            lbl.setOpenExternalLinks(True)
63            lbl.setAlignment(Qt.AlignmentFlag.AlignCenter)
64            layout.addWidget(lbl)
65
66        layout.addSpacing(14)
67
68        btn = QPushButton(_('Cerrar'))
69        btn.setDefault(True)
70        btn.clicked.connect(self.accept)
71        hlay = QHBoxLayout()
72        hlay.addStretch()
73        hlay.addWidget(btn)
74        hlay.addStretch()
75        layout.addLayout(hlay)
class AboutDialog(PySide6.QtWidgets.QDialog):
15class AboutDialog(QDialog):
16    def __init__(self, parent=None):
17        super().__init__(parent)
18        self.setWindowTitle(_('Acerca de Temario'))
19        self.setFixedWidth(360)
20        self.setModal(True)
21        self._build_ui()
22
23    def _build_ui(self) -> None:
24        layout = QVBoxLayout(self)
25        layout.setSpacing(10)
26        layout.setContentsMargins(24, 24, 24, 20)
27
28        title = QLabel('<b style="font-size:17px">Temario</b>')
29        title.setAlignment(Qt.AlignmentFlag.AlignCenter)
30        layout.addWidget(title)
31
32        ver = QLabel(f'v{_VERSION}')
33        ver.setObjectName('file_label')
34        ver.setAlignment(Qt.AlignmentFlag.AlignCenter)
35        layout.addWidget(ver)
36
37        if APPIMAGE_VARIANT == 'full':
38            variant_lbl = QLabel(_('AppImage · LibreOffice incluido'))
39            variant_lbl.setObjectName('file_label')
40            variant_lbl.setAlignment(Qt.AlignmentFlag.AlignCenter)
41            layout.addWidget(variant_lbl)
42        elif APPIMAGE_VARIANT == 'slim':
43            variant_lbl = QLabel(_('AppImage · requiere libreoffice del sistema'))
44            variant_lbl.setObjectName('file_label')
45            variant_lbl.setAlignment(Qt.AlignmentFlag.AlignCenter)
46            layout.addWidget(variant_lbl)
47
48        layout.addSpacing(6)
49
50        desc = QLabel(_('Generador de presentaciones ODP/PDF\na partir de ficheros YAML.'))
51        desc.setAlignment(Qt.AlignmentFlag.AlignCenter)
52        desc.setWordWrap(True)
53        layout.addWidget(desc)
54
55        layout.addSpacing(10)
56
57        for html in (
58            f'{_("Desarrollador:")} <b>{_AUTHOR}</b>',
59            f'<a href="{_REPO_URL}">{_("Repositorio GitLab")}</a>',
60            f'<a href="{_WEB_URL}">{_WEB_URL}</a>',
61        ):
62            lbl = QLabel(html)
63            lbl.setOpenExternalLinks(True)
64            lbl.setAlignment(Qt.AlignmentFlag.AlignCenter)
65            layout.addWidget(lbl)
66
67        layout.addSpacing(14)
68
69        btn = QPushButton(_('Cerrar'))
70        btn.setDefault(True)
71        btn.clicked.connect(self.accept)
72        hlay = QHBoxLayout()
73        hlay.addStretch()
74        hlay.addWidget(btn)
75        hlay.addStretch()
76        layout.addLayout(hlay)

QDialog(self, /, parent: PySide6.QtWidgets.QWidget | None = None, f: PySide6.QtCore.Qt.WindowType = Default(Qt.WindowFlags), *, sizeGripEnabled: bool | None = None, modal: bool | None = None) -> None

AboutDialog(parent=None)
16    def __init__(self, parent=None):
17        super().__init__(parent)
18        self.setWindowTitle(_('Acerca de Temario'))
19        self.setFixedWidth(360)
20        self.setModal(True)
21        self._build_ui()
staticMetaObject = PySide6.QtCore.QMetaObject("AboutDialog" inherits "QDialog": )