2026-09-09 16:46:15 +00:00
committed by gitea-admin
co-authored by duylh19
parent 13e2c22067
commit 1b8429e33a
147 changed files with 20993 additions and 461 deletions
+60
View File
@@ -0,0 +1,60 @@
"""Mục "Giới thiệu" trong Cài đặt.
Dòng ghi công tác giả trước đây nằm cố định ở góc dưới phải cửa sổ, dưới dạng
widget thường trực của thanh trạng thái. Chỗ đó chiếm một góc màn hình trên MỌI
màn hình, suốt cả phiên làm việc, cho một thông tin người dùng chỉ cần đọc một
lần. Chuyển vào Cài đặt: vẫn tra được bất cứ lúc nào, nhưng không còn đứng
thường trực trong tầm mắt.
Cùng nhóm widget với bốn mục kia của Cài đặt (``general``/``provider``/
``parameter``/``routing``) nên nó tự là một trang, không cần lắp ráp riêng.
"""
from __future__ import annotations
from PySide6.QtCore import Qt
from PySide6.QtWidgets import QLabel, QVBoxLayout, QWidget
from ... import DISPLAY_NAME, __version__
from ...i18n import tr
class AboutSettingsWidget(QWidget):
"""Nhóm "Giới thiệu": tên ứng dụng và dòng ghi công tác giả."""
def __init__(self, ctx=None, parent: QWidget | None = None) -> None:
"""Trang Giới thiệu. ``ctx`` không dùng tới, giữ cho khớp chữ ký của
bốn widget Cài đặt còn lại."""
super().__init__(parent)
self.ctx = ctx
layout = QVBoxLayout(self)
layout.setContentsMargins(4, 4, 4, 4)
layout.setSpacing(8)
# Tên sản phẩm là danh từ riêng, không dịch — lấy thẳng từ gốc gói,
# cùng nguồn với tiêu đề cửa sổ (main_window.py:90) nên hai chỗ không lệch.
self.app_label = QLabel(f"{DISPLAY_NAME} v{__version__}")
# Không đặt màu ở đây: cỡ chữ là khác biệt duy nhất cần thiết, còn màu
# do theme quyết định (xem theme/__init__.py — ngoài theme/ không file
# nào được đặt tên một màu).
font = self.app_label.font()
font.setPointSize(font.pointSize() + 4)
font.setBold(True)
self.app_label.setFont(font)
layout.addWidget(self.app_label)
self.version_label = QLabel(tr("app.version", v=__version__))
self.version_label.setObjectName("faint")
self.version_label.setTextInteractionFlags(Qt.TextSelectableByMouse)
layout.addWidget(self.version_label)
layout.addStretch(1)
def apply_to(self, data: dict) -> None:
"""Không có thiết lập nào để ghi — mục này chỉ hiển thị.
Vẫn khai để khớp giao diện chung của các trang Cài đặt: ``_save`` gọi
``apply_to`` trên từng trang, nên một trang thiếu hàm này sẽ là
``AttributeError`` ngay lần đầu ai đó thêm nó vào vòng lặp.
"""
return