import textwrap import PySide6 from PySide6.QtCore import Qt from PySide6.QtGui import QFont, QPixmap from PySide6.QtWidgets import * import constants from label import Label from raven.ui.vbox import VBox from raven.i18n import _ class AboutDialog(QDialog): """Dialog for showing info about RavenLog""" def __init__(self, parent=None): super(AboutDialog, self).__init__(parent) self.setWindowTitle(_("About RavenLog")) self.setModal(True) self.layout = QVBoxLayout(self) heading_app_name = QLabel(_("RavenLog")) heading_app_name.setAlignment(Qt.AlignmentFlag.AlignLeft) heading_app_name.setFont(QFont("default", 25)) heading_app_name.setTextInteractionFlags(Qt.TextInteractionFlag.TextSelectableByMouse) version = QLabel(_("Version: {0}".format(self._version()))) version.setAlignment(Qt.AlignmentFlag.AlignLeft) app_icon = QLabel() app_icon.setPixmap(QPixmap(constants.raven_icon)) heading = QWidget(self) hbox = QHBoxLayout(heading) hbox.addWidget(app_icon) hbox.addWidget(VBox(heading_app_name, version)) hbox.addSpacerItem(QSpacerItem(1, 1, hData=QSizePolicy.Policy.Expanding)) heading.layout = hbox self.layout.addWidget(heading) tabs = QTabWidget() tabs.addTab(self._about(), _("About")) tabs.addTab(self._license(), _("License")) self.layout.addWidget(tabs) buttons = QDialogButtonBox(self) buttons.setStandardButtons(QDialogButtonBox.StandardButton.Close) buttons.rejected.connect(self.close) self.layout.addWidget(buttons) def _about(self) -> QWidget: result = QWidget() result.layout = QVBoxLayout(result) label = Label(_(textwrap.dedent(""" Log file viewer
(c) 2022 Open Text Corporation
License: LGPL v3"""))) result.layout.addWidget(label) return result def _license(self) -> QWidget: dependencies = """ """.format(pyside=PySide6.__version__, qt=PySide6.QtCore.__version__) label = _(textwrap.dedent(dependencies)) result = QWidget() result.layout = QVBoxLayout(result) result.layout.addWidget(Label(label)) return result def _version(self): with open('VERSION.info', "rt") as f: line = f.readline() version = line.strip() return version