Files
2026-04-29 08:18:54 +04:00

271 lines
8.5 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
# gui/styles/labels.py
"""Стили для QLabel и текстовых меток"""
LABELS = {
"ERROR_LABEL": """
color: #c0392b;
font-weight: bold;
""",
"INFO_LABEL": """
QLabel {
font-size: 22px;
font-weight: 600;
color: palette(window-text);
background-color: transparent;
}
""",
"INFO_LABEL_LIGHT": """
QLabel {
font-size: 22px;
font-weight: 600;
color: #172B4D;
background-color: transparent;
}
""",
"INFO_NOTE_LABEL": """
color: #42526E;
font-size: 12px;
""",
"INFO_TEXT_BORDERED": """
QLabel {
font-size: 14px;
font-weight: 600;
color: palette(window-text);
background-color: palette(base);
border: 1px solid palette(mid);
border-radius: 0px;
padding: 4px 8px;
qproperty-alignment: 'AlignVCenter | AlignLeft';
}
""",
"INFO_TEXT_BORDERED_LIGHT": """
QLabel {
font-size: 14px;
font-weight: 600;
color: #172B4D;
background-color: #FFFFFF;
border: 1px solid #DFE1E6;
border-radius: 0px;
padding: 4px 8px;
qproperty-alignment: 'AlignVCenter | AlignLeft';
}
""",
"INFO_TEXT_GRAY": """
QLabel {
font-size: 14px;
font-weight: 600;
color: palette(window-text);
border: none;
qproperty-alignment: 'AlignBottom | AlignLeft';
}
""",
"INFO_TEXT_GRAY_SMALL": """
QLabel {
font-size: 12px;
font-weight: 600;
color: palette(window-text);
border: none;
qproperty-alignment: 'AlignBottom | AlignLeft';
}
""",
"INFO_TEXT": """
QLabel {
font-size: 14px;
font-weight: 600;
color: palette(window-text);
border: none;
padding: 8px 0px;
qproperty-alignment: 'AlignBottom | AlignLeft';
}
""",
"MODULE_TITLE": """
QLabel {
font-size: 32px;
font-weight: bold;
color: palette(window-text);
margin-bottom: 10px;
background-color: transparent;
}
""",
"MODULE_TITLE_LIGHT": """
QLabel {
font-size: 32px;
font-weight: bold;
color: #172B4D;
margin-bottom: 10px;
background-color: transparent;
}
""",
"PROJECT_TREE_LABEL": """
QLabel {
font-size: 14px;
font-weight: 600;
color: palette(window-text);
background-color: palette(base);
border: 1px solid palette(mid);
border-radius: 0px;
min-width: 400px;
min-height: 200px;
}
""",
"STATUS_LABEL": """
QLabel {
font-size: 14px;
color: palette(window-text);
background-color: palette(base);
border: 1px solid palette(mid);
border-radius: 0px;
padding: 2px 8px;
}
""",
"STATUS_LABEL_LIGHT": """
QLabel {
font-size: 14px;
color: #172B4D;
background-color: #FFFFFF;
border: 1px solid #DFE1E6;
border-radius: 0px;
padding: 2px 8px;
}
""",
"TITLE_BAR": """
QLabel {
background-color: #3C3C3C;
color: palette(button-text);
border: 1px solid palette(mid);
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
font-size: 16px;
text-align: center;
}
""",
"TITLE_BAR_LIGHT": """
QLabel {
background-color: #FFFFFF;
color: #172B4D;
border: 1px solid #DFE1E6;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
font-size: 16px;
text-align: center;
}
""",
"WIDGET_LABEL": """
QLabel {
font-size: 48px;
font-weight: bold;
color: palette(window-text);
background-color: palette(base);
border: 1px solid palette(mid);
border-radius: 0px;
min-width: 400px;
min-height: 200px;
}
""",
"ZONE_PROPERTIES_TITLE": """
QLabel {
background-color: #3C3C3C;
color: palette(button-text);
border-left: 0px;
border-right: 0px;
border-top: 0px;
border-bottom: 1px solid palette(mid);
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
font-size: 16px;
text-align: center;
}
""",
"ZONE_PROPERTIES_TITLE_LIGHT": """
QLabel {
background-color: #F4F5F7;
color: #172B4D;
border-left: 0px;
border-right: 0px;
border-top: 0px;
border-bottom: 1px solid #DFE1E6;
border-top-left-radius: 0px;
border-top-right-radius: 0px;
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
font-size: 16px;
text-align: center;
}
""",
}
# ---------------------------------------------------------------------------
# Module workflow notes
# ---------------------------------------------------------------------------
#
# 1) Назначение модуля:
# Определение QSS-стилей для QLabel и текстовых меток: заголовки модулей,
# информационные метки, статусные строки, title bar'ы, зонные заголовки
# свойств, метки проектного дерева и стилизованные виджет-метки.
# Поддержка тем: стандартная (palette) и _LIGHT-варианты.
#
# 2) Зависимости модуля:
# Импорты: нет
# Хост/базовый класс: нет (модуль-словарь)
# Внешние библиотеки: нет
#
# 3) Экспорт:
# Словарь LABELS: dict[str, str] — ключ → QSS-строка.
# Ключи: ERROR_LABEL, INFO_LABEL, INFO_LABEL_LIGHT, INFO_NOTE_LABEL,
# INFO_TEXT_BORDERED, INFO_TEXT_BORDERED_LIGHT, INFO_TEXT_GRAY,
# INFO_TEXT_GRAY_SMALL, INFO_TEXT, MODULE_TITLE, MODULE_TITLE_LIGHT,
# PROJECT_TREE_LABEL, STATUS_LABEL, STATUS_LABEL_LIGHT,
# TITLE_BAR, TITLE_BAR_LIGHT, WIDGET_LABEL,
# ZONE_PROPERTIES_TITLE, ZONE_PROPERTIES_TITLE_LIGHT.
#
# 4) Состояние (поля):
# LABELS: dict[str, str] — единственный экспортируемый словарь.
#
# 5) Последовательность действий и вызовов:
# Нет вызовов; модуль декларативный.
# Импортируется в gui/styles/__init__.py → APP_STYLES.update(LABELS).
#
# 6) Побочные эффекты:
# Нет побочных эффектов при импорте.
#
# 7) Границы ответственности:
# НЕ применяет стили — только хранит QSS-строки.
# НЕ содержит стили для кнопок (→ buttons.py) или полей ввода (→ inputs.py).
#
# 8) Обработка ошибок:
# Нет; модуль декларативный.
#
# 9) Инварианты и контракты:
# - Каждый ключ с поддержкой светлой темы имеет суффикс _LIGHT.
# - Все QSS-строки — валидный Qt StyleSheet синтаксис.
# - ERROR_LABEL использует inline-стиль (без селектора QLabel {}).
#
# 10) Правило сопровождения:
# Новые стили меток добавлять сюда по паттерну KEY / KEY_LIGHT.
# Для стилей с qproperty-alignment использовать строковые значения
# Qt ('AlignVCenter | AlignLeft'). Не смешивать стили кнопок и меток.