Add Dispatch_V0.1.1
This commit is contained in:
123
Dispatch_V0.1.1/gui/components/springs.py
Normal file
123
Dispatch_V0.1.1/gui/components/springs.py
Normal file
@@ -0,0 +1,123 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# gui/components/springs.py
|
||||
"""Простые пружины для компоновок."""
|
||||
|
||||
from PySide6.QtWidgets import QWidget, QSizePolicy
|
||||
|
||||
|
||||
class VSpring(QWidget):
|
||||
"""Вертикальная пружина."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Expanding)
|
||||
|
||||
def set_enabled(self, enabled: bool) -> None:
|
||||
self.setEnabled(enabled)
|
||||
|
||||
def set_min_width(self, width: int) -> None:
|
||||
self.setMinimumWidth(width)
|
||||
|
||||
def set_min_height(self, height: int) -> None:
|
||||
self.setMinimumHeight(height)
|
||||
|
||||
def set_max_width(self, width: int) -> None:
|
||||
self.setMaximumWidth(width)
|
||||
|
||||
def set_max_height(self, height: int) -> None:
|
||||
self.setMaximumHeight(height)
|
||||
|
||||
def set_fixed_size(self, width: int, height: int) -> None:
|
||||
self.setMinimumSize(width, height)
|
||||
self.setMaximumSize(width, height)
|
||||
|
||||
def set_tooltip(self, text: str) -> None:
|
||||
self.setToolTip(text)
|
||||
|
||||
def set_size_policy(self, horizontal, vertical) -> None:
|
||||
self.setSizePolicy(horizontal, vertical)
|
||||
|
||||
|
||||
class HSpring(QWidget):
|
||||
"""Горизонтальная пружина."""
|
||||
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
|
||||
|
||||
def set_enabled(self, enabled: bool) -> None:
|
||||
self.setEnabled(enabled)
|
||||
|
||||
def set_min_width(self, width: int) -> None:
|
||||
self.setMinimumWidth(width)
|
||||
|
||||
def set_min_height(self, height: int) -> None:
|
||||
self.setMinimumHeight(height)
|
||||
|
||||
def set_max_width(self, width: int) -> None:
|
||||
self.setMaximumWidth(width)
|
||||
|
||||
def set_max_height(self, height: int) -> None:
|
||||
self.setMaximumHeight(height)
|
||||
|
||||
def set_fixed_size(self, width: int, height: int) -> None:
|
||||
self.setMinimumSize(width, height)
|
||||
self.setMaximumSize(width, height)
|
||||
|
||||
def set_tooltip(self, text: str) -> None:
|
||||
self.setToolTip(text)
|
||||
|
||||
def set_size_policy(self, horizontal, vertical) -> None:
|
||||
self.setSizePolicy(horizontal, vertical)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Module workflow notes
|
||||
# ---------------------------------------------------------------------------
|
||||
#
|
||||
# 1) Назначение модуля:
|
||||
# Простые пружины (spacer-виджеты) для вертикальной и горизонтальной
|
||||
# компоновки: VSpring растягивается вертикально, HSpring — горизонтально.
|
||||
#
|
||||
# 2) Зависимости модуля:
|
||||
# Импорты: QWidget, QSizePolicy (PySide6.QtWidgets)
|
||||
# Хост-класс / базовый класс: QWidget (не SContainer!)
|
||||
# Внешние библиотеки: PySide6 (обязательна)
|
||||
#
|
||||
# 3) Экспорт:
|
||||
# Класс VSpring — вертикальная пружина (Minimum × Expanding).
|
||||
# Класс HSpring — горизонтальная пружина (Expanding × Minimum).
|
||||
# Оба класса предоставляют стандартный API размеров:
|
||||
# set_enabled(), set_min/max_width/height(), set_fixed_size(),
|
||||
# set_tooltip(), set_size_policy().
|
||||
#
|
||||
# 4) Состояние (поля):
|
||||
# Нет собственных полей. Только наследованные от QWidget.
|
||||
#
|
||||
# 5) Последовательность действий и вызовов:
|
||||
# __init__(parent=None)
|
||||
# -> super().__init__(parent)
|
||||
# -> setSizePolicy(Minimum, Expanding) для VSpring
|
||||
# -> setSizePolicy(Expanding, Minimum) для HSpring
|
||||
#
|
||||
# 6) Побочные эффекты:
|
||||
# Нет — чистые пустые виджеты-распорки.
|
||||
#
|
||||
# 7) Границы ответственности:
|
||||
# Только распорка в layout. Не рисует, не обрабатывает события,
|
||||
# не подключается к theme_bus, не имеет стилей.
|
||||
#
|
||||
# 8) Обработка ошибок:
|
||||
# Нет обработки ошибок. Виджет пассивен.
|
||||
#
|
||||
# 9) Инварианты и контракты:
|
||||
# - VSpring всегда Expanding по вертикали, Minimum по горизонтали.
|
||||
# - HSpring всегда Expanding по горизонтали, Minimum по вертикали.
|
||||
#
|
||||
# 10) Правило сопровождения:
|
||||
# Не наследовать от SContainer — пружины должны быть максимально
|
||||
# лёгкими. Использовать для заполнения свободного пространства
|
||||
# в VContainer/HContainer.
|
||||
Reference in New Issue
Block a user