77 lines
3.1 KiB
Python
77 lines
3.1 KiB
Python
"""About dialog."""
|
||
|
||
# This file is part of ISO Scalpel.
|
||
# Copyright (C) 2025 Jeremy Anderson <info@dcos.net>
|
||
#
|
||
# This program is free software; you can redistribute it and/or modify
|
||
# it under the terms of the GNU General Public License as published by
|
||
# the Free Software Foundation; either version 2 of the License, or
|
||
# (at your option) any later version.
|
||
#
|
||
# This program is distributed in the hope that it will be useful,
|
||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
# GNU General Public License for more details.
|
||
#
|
||
# You should have received a copy of the GNU General Public License
|
||
# along with this program; if not, see <https://www.gnu.org/licenses/>
|
||
# or write to the Free Software Foundation, Inc., 51 Franklin Street,
|
||
# Fifth Floor, Boston, MA 02110-1301 USA.
|
||
|
||
from __future__ import annotations
|
||
|
||
from PySide6.QtCore import Qt
|
||
from PySide6.QtWidgets import QDialog, QHBoxLayout, QLabel, QPushButton, QVBoxLayout
|
||
|
||
from .. import __app_name__, __author__, __author_url__, __tagline__, __version__
|
||
|
||
|
||
class AboutDialog(QDialog):
|
||
def __init__(self, parent=None):
|
||
super().__init__(parent)
|
||
self.setWindowTitle(f"About {__app_name__}")
|
||
self.setMinimumWidth(440)
|
||
|
||
title = QLabel(f"<h2>{__app_name__}</h2>")
|
||
title.setTextFormat(Qt.RichText)
|
||
ver = QLabel(f"Version {__version__} — <i>{__tagline__}</i>")
|
||
ver.setTextFormat(Qt.RichText)
|
||
body = QLabel(
|
||
"<p>A disc-image editor built with <b>PySide6</b> (Qt 6) and "
|
||
"<b>pycdlib</b>.</p>"
|
||
"<p>Supported features:</p>"
|
||
"<ul>"
|
||
"<li>ISO9660 levels 1–3</li>" # noqa: RUF001 -- intentional en dash in UI copy
|
||
"<li>Rock Ridge (1.09 / 1.12) — Unix long names & permissions</li>"
|
||
"<li>Joliet (1 / 2 / 3) — Microsoft long names</li>"
|
||
"<li><b>UDF 2.50 / 2.60</b> — Universal Disk Format</li>"
|
||
"<li>El Torito boot images (BIOS / EFI)</li>"
|
||
"<li>Add / extract / rename / delete files & folders</li>"
|
||
"<li>Volume metadata editing</li>"
|
||
"<li>Filesystem diff between two images</li>"
|
||
"<li>Command-line interface (<code>cli.py</code>)</li>"
|
||
"<li>Split-navigation panes with tabs, breadcrumbs & filtering</li>"
|
||
"</ul>"
|
||
f"<p style='color:#666'>Copyright © 2025 {__author__}<br>"
|
||
f"<a href='{__author_url__}'>{__author_url__}</a></p>"
|
||
"<p style='color:#888'>Licensed under the GNU GPL v2.<br>"
|
||
"ISO Scalpel is an independent project; no source code from any "
|
||
"other ISO editing tool was used.</p>"
|
||
)
|
||
body.setTextFormat(Qt.RichText)
|
||
body.setWordWrap(True)
|
||
body.setOpenExternalLinks(True)
|
||
|
||
close = QPushButton("Close")
|
||
close.clicked.connect(self.accept)
|
||
|
||
layout = QVBoxLayout(self)
|
||
layout.addWidget(title)
|
||
layout.addWidget(ver)
|
||
layout.addWidget(body)
|
||
layout.addStretch(1)
|
||
row = QHBoxLayout()
|
||
row.addStretch(1)
|
||
row.addWidget(close)
|
||
layout.addLayout(row)
|