Danil Iarosh 4ce9eb7689 Switch to standard OS windows, resizable dialogs, and channel-aware pixel test
- Удален кастомный безрамочный режим (FramelessWindowHint) главного окна и диалогов.
- Внедрено нативное управление окнами операционной системы (изменение размеров, максимизация, минимизация).
- Добавлено применение QPalette под выбранную тему (темную/свелую) и акцент для покраски системных элементов окон.
- Внутреннее содержимое диалогов (StyledDialog) обернуто в QScrollArea с автоскроллом и ограничением по высоте до 720px во избежание выхода окон за пределы экрана.
- TitleBar упрощен до простой верхней панели вкладок (sub-header/tabs).
- В диалог теста подсветки добавлен выбор номера ленты (1..4) при тесте пикселя виртуальной матрицы, обновлена логика генерации и отправки тестовой команды.
- Раздел "Бродяга морей" переименован в "Бродяги морей".
2026-07-01 14:58:11 +03:00

43 lines
1.5 KiB
Python

from __future__ import annotations
from PySide6.QtCore import Qt
from PySide6.QtWidgets import (
QHBoxLayout,
QWidget,
)
class TitleBar(QWidget):
"""Верхняя панель вкладок, отображаемая под системным заголовком главного окна."""
def __init__(self, window: QWidget) -> None:
super().__init__(window)
self._window = window
self.setObjectName("TitleBar")
self.setAttribute(Qt.WidgetAttribute.WA_StyledBackground, True)
self.setAutoFillBackground(True)
self.setFixedHeight(38)
layout = QHBoxLayout(self)
layout.setContentsMargins(10, 4, 10, 4)
layout.setSpacing(8)
self._layout = layout
self.tabs_container = QWidget(self)
self.tabs_container.setObjectName("TitleTabsContainer")
self.tabs_layout = QHBoxLayout(self.tabs_container)
self.tabs_layout.setContentsMargins(0, 0, 0, 0)
self.tabs_layout.setSpacing(0)
layout.addWidget(self.tabs_container, 1)
def set_tabs_widget(self, widget: QWidget) -> None:
"""Встроить виджет вкладок в панель."""
while self.tabs_layout.count():
item = self.tabs_layout.takeAt(0)
if item is not None:
old_widget = item.widget()
if old_widget is not None:
old_widget.setParent(None)
self.tabs_layout.addWidget(widget)