271 lines
8.5 KiB
Python
271 lines
8.5 KiB
Python
# -*- 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'). Не смешивать стили кнопок и меток.
|