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