# -*- coding: utf-8 -*-
# gui/styles/widgets.py

"""Стили для контейнеров, диалогов, сплиттеров и т.д."""

WIDGETS = {

    "DIALOG": """
        QDialog {
            background-color: palette(window);
        }
    """,

    "DIALOG_BUTTON_BOX": """
        QDialogButtonBox {
            background-color: transparent;
        }
        QDialogButtonBox QPushButton {
            background-color: palette(button);
            color: palette(button-text);
            border: 1px solid palette(mid);
            border-radius: 0px;
            font-size: 14px;
            min-height: 32px;
            padding: 4px 10px;
        }
        QDialogButtonBox QPushButton:hover    { border-color: palette(highlight); }
        QDialogButtonBox QPushButton:pressed  { background-color: palette(light); }
        QDialogButtonBox QPushButton:disabled { color: palette(mid); border-color: palette(dark); }
    """,

    "GROUP_BOX": """
        QGroupBox {
            font-size: 14px;
            font-weight: 600;
            color: palette(window-text);
            border: 1px solid palette(mid);
            border-radius: 0px;
            margin-top: 6px;
            background-color: palette(base);
        }
        QGroupBox::title {
            subcontrol-origin: margin;
            subcontrol-position: top left;
            background-color: palette(base);
            color: palette(window-text);
            padding: 2px 5px 2px 9px;
        }
    """,

    "GROUP_BOX_DARK": """
        QGroupBox {
            font-size: 14px;
            font-weight: 600;
            color: #f2f2f2;
            border: 1px solid #5a5a5a;
            border-radius: 0px;
            margin-top: 6px;
            background-color: #2d2d2d;
        }
        QGroupBox::title {
            subcontrol-origin: margin;
            subcontrol-position: top left;
            background-color: #2d2d2d;
            color: #f2f2f2;
            padding: 2px 5px 2px 9px;
        }
    """,

    "GROUP_BOX_LIGHT": """
        QGroupBox {
            font-size: 14px;
            font-weight: 600;
            color: #172B4D;
            border: 1px solid #DFE1E6;
            border-radius: 0px;
            margin-top: 6px;
            background-color: #FFFFFF;
        }
        QGroupBox::title {
            subcontrol-origin: margin;
            subcontrol-position: top left;
            background-color: #FFFFFF;
            color: #172B4D;
            padding: 2px 5px 2px 9px;
        }
    """,

    "GROUP_BOX_CENTER_TITLE": """
        QGroupBox {
            font-size: 14px;
            font-weight: 600;
            color: palette(window-text);
            border: 1px solid palette(mid);
            border-radius: 0px;
            margin-top: 6px;
            background-color: palette(base);
        }
        QGroupBox::title {
            subcontrol-position: top center;
            background-color: transparent;
            color: palette(window-text);
            padding: 12px 5px 2px 9px;
        }
    """,

    "GROUP_BOX_CENTER_TITLE_DARK": """
        QGroupBox {
            font-size: 14px;
            font-weight: 600;
            color: #f2f2f2;
            border: 1px solid #5a5a5a;
            border-radius: 0px;
            margin-top: 6px;
            background-color: #2d2d2d;
        }
        QGroupBox::title {
            subcontrol-position: top center;
            background-color: transparent;
            color: #f2f2f2;
            padding: 12px 5px 2px 9px;
        }
    """,

    "GROUP_BOX_CENTER_TITLE_LIGHT": """
        QGroupBox {
            font-size: 14px;
            font-weight: 600;
            color: #172B4D;
            border: 1px solid #DFE1E6;
            border-radius: 0px;
            margin-top: 6px;
            background-color: #FFFFFF;
        }
        QGroupBox::title {
            subcontrol-position: top center;
            background-color: transparent;
            color: #172B4D;
            padding: 12px 5px 2px 9px;
        }
    """,

    "W": """
        background-color: rgba(255, 255, 255, 0.15);
        border: 1px solid #ffffff;
        border-radius: 0px;
        outline: 1px solid #007bff;
    """,

    "W_FRAME": """
        QWidget#main_container {
            background-color: rgba(255, 255, 255, 0.15);
            border: 1px solid #ffffff;
            border-radius: 0px;
            outline: 1px solid #007bff;
        }
    """,

    "B": """
        background-color: rgba(0, 0, 0, 0.15);
        border: 1px solid #000000;
        border-radius: 0px;
        outline: 1px solid #ff8400;
    """,

    "MODEL_VIEW_PANEL": """
        QWidget#model_view_panel {
            background-color: palette(base);
            border: 1px solid palette(mid);
            border-radius: 0px;
        }
    """,

    "SPLITTER": """
        QSplitter::handle {
            background-color: palette(mid);
            width: 4px;
        }
        QSplitter::handle:hover {
            background-color: palette(highlight);
        }
    """,
    "STACKED_WIDGET": """
        QStackedWidget {
            background-color: palette(window);
        }
    """,

    "SCROLL_CONTAINER": """
        QScrollArea {
            background-color: transparent;
            border: none;
        }
        QScrollArea > QWidget > QWidget {
            background-color: transparent;
            border: none;
        }
    """,

    "DEFAULT": """
        QWidget {
            background-color: transparent;
            border: none;
            border-radius: 0px;
        }
    """,

    "TOOLS_PANEL_CONTAINER": """
        QWidget {
            background-color: palette(base);
            border: 1px solid palette(mid);
        }
    """,

    "TOOLS_PANEL_CONTAINER_TRANSPARENT": """
        QWidget {
            background-color: transparent;
            border: 1px solid palette(mid);
            border-radius: 0px;
        }
    """,

    "TREE_WIDGET": """
        QTreeWidget {
            background-color: palette(base);
            border: 1px solid palette(mid);
            border-radius: 0px;
            font-size: 14px;
            color: palette(text);
        }
        QTreeWidget::item {
            color: palette(text);
        }
        QTreeWidget::item:selected {
            background-color: palette(highlight);
            color: palette(highlighted-text);
        }
        QHeaderView::section {
            background-color: palette(button);
            color: palette(button-text);
            border: 1px solid palette(mid);
        }
    """,
 
    "TREE_WIDGET_TOP_FLAT": """
        QTreeWidget {
            background-color: palette(base);
            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: 14px;
            color: palette(text);
        }
        QLabel#properties_body_label,
        QWidget#properties_body_label {
            background-color: palette(base);
            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;
            color: palette(text);
            font-size: 13px;
            font-weight: 600;
            
        }
        QTreeWidget::item {
            color: palette(text);
        }
        QTreeWidget::item:selected {
            background-color: palette(highlight);
            color: palette(highlighted-text);
        }
        QHeaderView::section {
            background-color: palette(button);
            color: palette(button-text);
            border: 1px solid palette(mid);
        }
    """,

    "TOPOLOGY_TREE_PANEL": """
        background-color: palette(base);
        border: 1px solid palette(mid);
        border-radius: 0px;

        QTreeWidget {
            background-color: #3C3C3C;
            border: 1px solid palette(mid);
            border-radius: 0px;
            font-size: 14px;
            color: palette(text);
        }
        QTreeWidget::item {
            background-color: #3C3C3C;
            color: palette(text);
        }
        QTreeWidget::item:selected {
            background-color: palette(highlight);
            color: palette(highlighted-text);
        }
        QHeaderView::section {
            background-color: #3C3C3C;
            color: palette(button-text);
            border: 1px solid palette(mid);
        }
    """,

    "VIEW_IMAGE_BACKGROUND": """
        background-color: palette(window);
    """,

    "VIEW_WIDGET_BACKGROUND": """
        background-color: palette(base);
        border: 1px solid palette(mid);
        border-radius: 0px;
    """,
    # Стили для модуля зонирования
    "ZONE_PROPERTIES_GROUP": """
            QGroupBox {
                font-weight: 600;
                border: 1px solid palette(mid);
                border-radius: 0px;
                margin-top: 12px;
                padding-top: 10px;
                background-color: palette(base);
                color: palette(window-text);
            }
            QGroupBox::title {
                subcontrol-origin: margin;
                left: 10px;
                padding: 0 5px 0 5px;
                color: palette(window-text);
            }
        """,

    "ZONE_PROPERTIES_PANEL": """
        QWidget {
            border: 1px solid palette(mid);
            background-color: palette(base);
        }
    """,

    "ZONE_PROPERTIES_HOST": """
        QWidget {
            border: none;
            background-color: palette(window);
        }
    """,

    "ZONE_PROPERTIES_WIDGET": """
        QWidget#zone_properties_widget {
            background-color: palette(window);
        }
    """,

    "MAIN_WINDOW_DARK": """
        QMainWindow { background-color: #2b2b2b; }
    """,

    "MAIN_WINDOW_LIGHT": """
        QMainWindow { background-color: #F4F5F7; }
    """,
}


# ---------------------------------------------------------------------------
# Module workflow notes
# ---------------------------------------------------------------------------
#
# 1) Назначение модуля:
#    Определение QSS-стилей для контейнеров, диалогов, сплиттеров,
#    group box'ов, scroll-контейнеров, tree widget'ов, панелей свойств
#    зон, модели вида и прочих составных виджетов. Поддержка тем:
#    база (palette), _DARK, _LIGHT варианты.
#
# 2) Зависимости модуля:
#    Импорты: нет
#    Хост/базовый класс: нет (модуль-словарь)
#    Внешние библиотеки: нет
#
# 3) Экспорт:
#    Словарь WIDGETS: dict[str, str] — ключ → QSS-строка.
#    Ключи: DIALOG, DIALOG_BUTTON_BOX, GROUP_BOX, GROUP_BOX_DARK,
#           GROUP_BOX_LIGHT, GROUP_BOX_CENTER_TITLE, GROUP_BOX_CENTER_TITLE_DARK,
#           GROUP_BOX_CENTER_TITLE_LIGHT, W, W_FRAME, B,
#           MODEL_VIEW_PANEL, SPLITTER, STACKED_WIDGET, SCROLL_CONTAINER,
#           DEFAULT, TOOLS_PANEL_CONTAINER, TOOLS_PANEL_CONTAINER_TRANSPARENT,
#           TREE_WIDGET, TREE_WIDGET_TOP_FLAT, TOPOLOGY_TREE_PANEL,
#           VIEW_IMAGE_BACKGROUND, VIEW_WIDGET_BACKGROUND,
#           ZONE_PROPERTIES_GROUP, ZONE_PROPERTIES_PANEL,
#           ZONE_PROPERTIES_HOST, ZONE_PROPERTIES_WIDGET.
#
# 4) Состояние (поля):
#    WIDGETS: dict[str, str] — единственный экспортируемый словарь.
#
# 5) Последовательность действий и вызовов:
#    Нет вызовов; модуль декларативный.
#    Импортируется в gui/styles/__init__.py → APP_STYLES.update(WIDGETS).
#
# 6) Побочные эффекты:
#    Нет побочных эффектов при импорте.
#
# 7) Границы ответственности:
#    НЕ применяет стили — только хранит QSS-строки.
#    НЕ содержит стили для кнопок (→ buttons.py), меток (→ labels.py)
#    или полей ввода (→ inputs.py).
#
# 8) Обработка ошибок:
#    Нет; модуль декларативный.
#
# 9) Инварианты и контракты:
#    - Тематические варианты: KEY / KEY_DARK / KEY_LIGHT.
#    - W и B — debug-стили с полупрозрачным фоном и outline.
#    - GROUP_BOX_CENTER_TITLE — вариант с центрированным заголовком.
#    - Все QSS-строки — валидный Qt StyleSheet синтаксис.
#
# 10) Правило сопровождения:
#     Новые стили контейнеров/диалогов/виджетов добавлять сюда.
#     Соблюдать паттерн KEY / KEY_DARK / KEY_LIGHT.
#     Debug-стили (W, B) не использовать в production коде.
