440 lines
13 KiB
Python
440 lines
13 KiB
Python
# -*- coding: utf-8 -*-
|
||
# gui/styles/inputs.py
|
||
|
||
"""Стили для полей ввода"""
|
||
|
||
INPUTS = {
|
||
|
||
"COORDINATE_INPUT": """
|
||
QDoubleSpinBox {
|
||
border: 1px solid palette(mid);
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: palette(base);
|
||
color: palette(text);
|
||
padding: 4px 8px;
|
||
}
|
||
QDoubleSpinBox:focus {
|
||
border: 2px solid palette(highlight);
|
||
outline: none;
|
||
}
|
||
""",
|
||
|
||
"COORDINATE_INPUT_DARK": """
|
||
QDoubleSpinBox {
|
||
border: 1px solid #5a5a5a;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #2e2e2e;
|
||
color: #f2f2f2;
|
||
padding: 4px 8px;
|
||
}
|
||
QDoubleSpinBox:focus {
|
||
border: 2px solid #3b82f6;
|
||
outline: none;
|
||
}
|
||
""",
|
||
|
||
"COORDINATE_INPUT_LIGHT": """
|
||
QDoubleSpinBox {
|
||
border: 1px solid #DFE1E6;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #FFFFFF;
|
||
color: #172B4D;
|
||
padding: 4px 8px;
|
||
}
|
||
QDoubleSpinBox:focus {
|
||
border: 2px solid #0C66E4;
|
||
outline: none;
|
||
}
|
||
""",
|
||
|
||
"COORDINATE_INPUT_DARK_ACTIVE": """
|
||
QDoubleSpinBox {
|
||
border: 2px solid #3b82f6;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #2e2e2e;
|
||
color: #f2f2f2;
|
||
padding: 4px 8px;
|
||
}
|
||
""",
|
||
|
||
"COORDINATE_INPUT_LIGHT_ACTIVE": """
|
||
QDoubleSpinBox {
|
||
border: 2px solid #0C66E4;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #FFFFFF;
|
||
color: #172B4D;
|
||
padding: 4px 8px;
|
||
}
|
||
""",
|
||
|
||
"ERROR_DIALOG_TEXT": """
|
||
QTextEdit {
|
||
background-color: white;
|
||
border: 1px solid #ccc;
|
||
border-radius: 0px;
|
||
font-family: monospace;
|
||
font-size: 12px;
|
||
}
|
||
""",
|
||
|
||
"FORM_WIDGET": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
}
|
||
QLabel {
|
||
color: palette(window-text);
|
||
font-size: 14px;
|
||
}
|
||
QLineEdit, QComboBox, QSpinBox, QDoubleSpinBox, QTextEdit {
|
||
border: 1px solid palette(mid);
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: palette(base);
|
||
color: palette(text);
|
||
padding: 4px 8px;
|
||
}
|
||
QRadioButton {
|
||
color: palette(window-text);
|
||
background-color: transparent;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: palette(base);
|
||
border: 1px solid palette(mid);
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: palette(base);
|
||
border: 2px solid palette(highlight);
|
||
border-radius: 0px;
|
||
}
|
||
QLineEdit:focus, QComboBox:focus, QSpinBox:focus, QDoubleSpinBox:focus, QTextEdit:focus {
|
||
border: 2px solid palette(highlight);
|
||
outline: none;
|
||
}
|
||
""",
|
||
|
||
"FORM_WIDGET_DARK": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
}
|
||
QLabel, QRadioButton {
|
||
color: #f2f2f2;
|
||
font-size: 14px;
|
||
}
|
||
QLineEdit, QComboBox, QSpinBox, QDoubleSpinBox, QTextEdit {
|
||
border: 1px solid #5a5a5a;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #2e2e2e;
|
||
color: #f2f2f2;
|
||
padding: 4px 8px;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: #2e2e2e;
|
||
border: 1px solid #7a7a7a;
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: #2e2e2e;
|
||
border: 2px solid #3b82f6;
|
||
border-radius: 0px;
|
||
}
|
||
QLineEdit:focus, QComboBox:focus, QSpinBox:focus, QDoubleSpinBox:focus, QTextEdit:focus {
|
||
border: 2px solid #3b82f6;
|
||
outline: none;
|
||
}
|
||
""",
|
||
|
||
"FORM_WIDGET_LIGHT": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
}
|
||
QLabel, QRadioButton {
|
||
color: #172B4D;
|
||
font-size: 14px;
|
||
}
|
||
QLineEdit, QComboBox, QSpinBox, QDoubleSpinBox, QTextEdit {
|
||
border: 1px solid #DFE1E6;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #FFFFFF;
|
||
color: #172B4D;
|
||
padding: 4px 8px;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: #FFFFFF;
|
||
border: 1px solid #DFE1E6;
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: #FFFFFF;
|
||
border: 2px solid #0C66E4;
|
||
border-radius: 0px;
|
||
}
|
||
QLineEdit:focus, QComboBox:focus, QSpinBox:focus, QDoubleSpinBox:focus, QTextEdit:focus {
|
||
border: 2px solid #0C66E4;
|
||
outline: none;
|
||
}
|
||
QLineEdit::placeholder {
|
||
color: #5E6C84;
|
||
}
|
||
""",
|
||
|
||
"FORM_WIDGET_DARK_ACTIVE": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
}
|
||
QLabel {
|
||
color: #ffffff;
|
||
font-size: 14px;
|
||
}
|
||
QLineEdit, QComboBox, QSpinBox, QDoubleSpinBox, QTextEdit {
|
||
border: 2px solid #0078d4;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #333;
|
||
color: #ffffff;
|
||
padding: 4px 8px;
|
||
}
|
||
QRadioButton {
|
||
color: #ffffff;
|
||
background-color: transparent;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: #666;
|
||
border: 1px solid #999;
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: #ffffff;
|
||
border: 1px solid #999;
|
||
border-radius: 0px;
|
||
}
|
||
""",
|
||
"FORM_WIDGET_LIGHT_ACTIVE": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
}
|
||
QLabel {
|
||
color: #172B4D;
|
||
font-size: 14px;
|
||
}
|
||
QLineEdit, QComboBox, QSpinBox, QDoubleSpinBox, QTextEdit {
|
||
border: 2px solid #0C66E4;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #FFFFFF;
|
||
color: #172B4D;
|
||
padding: 4px 8px;
|
||
}
|
||
QRadioButton {
|
||
color: #172B4D;
|
||
background-color: transparent;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: #FFFFFF;
|
||
border: 1px solid #DFE1E6;
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: #FFFFFF;
|
||
border: 2px solid #0C66E4;
|
||
border-radius: 0px;
|
||
}
|
||
""",
|
||
"TEXT_INPUT": """
|
||
QLineEdit {
|
||
border: 1px solid palette(mid);
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: palette(base);
|
||
color: palette(text);
|
||
padding: 4px 8px;
|
||
}
|
||
QLineEdit:focus {
|
||
border: 2px solid palette(highlight);
|
||
outline: none;
|
||
}
|
||
""",
|
||
|
||
"TEXT_INPUT_DARK": """
|
||
QLineEdit {
|
||
border: 1px solid #5a5a5a;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #2e2e2e;
|
||
color: #f2f2f2;
|
||
padding: 4px 8px;
|
||
}
|
||
QLineEdit:focus {
|
||
border: 2px solid #3b82f6;
|
||
outline: none;
|
||
}
|
||
""",
|
||
|
||
"TEXT_INPUT_LIGHT": """
|
||
QLineEdit {
|
||
border: 1px solid #DFE1E6;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #FFFFFF;
|
||
color: #172B4D;
|
||
padding: 4px 8px;
|
||
}
|
||
QLineEdit:focus {
|
||
border: 2px solid #0C66E4;
|
||
outline: none;
|
||
}
|
||
QLineEdit::placeholder {
|
||
color: #5E6C84;
|
||
}
|
||
""",
|
||
|
||
"TEXT_INPUT_DARK_ACTIVE": """
|
||
QLineEdit {
|
||
border: 2px solid #0078d4;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #333;
|
||
color: #ffffff;
|
||
padding: 4px 8px;
|
||
}
|
||
""",
|
||
|
||
"TEXT_INPUT_LIGHT_ACTIVE": """
|
||
QLineEdit {
|
||
border: 2px solid #0C66E4;
|
||
border-radius: 0px;
|
||
font-size: 14px;
|
||
background-color: #FFFFFF;
|
||
color: #172B4D;
|
||
padding: 4px 8px;
|
||
}
|
||
""",
|
||
|
||
"RADIO_BUTTON": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
border: none;
|
||
}
|
||
QRadioButton {
|
||
color: palette(window-text);
|
||
background-color: transparent;
|
||
border: none;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: palette(base);
|
||
border: 1px solid palette(mid);
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: palette(base);
|
||
border: 2px solid palette(highlight);
|
||
border-radius: 0px;
|
||
}
|
||
""",
|
||
|
||
"RADIO_BUTTON_DARK": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
border: none;
|
||
}
|
||
QRadioButton {
|
||
color: #f2f2f2;
|
||
background-color: transparent;
|
||
border: none;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: #2e2e2e;
|
||
border: 1px solid #7a7a7a;
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: #2e2e2e;
|
||
border: 2px solid #3b82f6;
|
||
border-radius: 0px;
|
||
}
|
||
""",
|
||
|
||
"RADIO_BUTTON_LIGHT": """
|
||
QWidget {
|
||
background-color: transparent;
|
||
border: none;
|
||
}
|
||
QRadioButton {
|
||
color: #172B4D;
|
||
background-color: transparent;
|
||
border: none;
|
||
}
|
||
QRadioButton::indicator:unchecked {
|
||
background-color: #FFFFFF;
|
||
border: 1px solid #DFE1E6;
|
||
border-radius: 0px;
|
||
}
|
||
QRadioButton::indicator:checked {
|
||
background-color: #FFFFFF;
|
||
border: 2px solid #0C66E4;
|
||
border-radius: 0px;
|
||
}
|
||
""",
|
||
}
|
||
|
||
|
||
|
||
|
||
# ---------------------------------------------------------------------------
|
||
# Module workflow notes
|
||
# ---------------------------------------------------------------------------
|
||
#
|
||
# 1) Назначение модуля:
|
||
# Определение QSS-стилей для полей ввода: координатные input'ы
|
||
# (QDoubleSpinBox), текстовые поля (QLineEdit), формы (QLineEdit +
|
||
# QComboBox + QSpinBox + QRadioButton + QTextEdit), радио-кнопки.
|
||
# Поддержка тем: стандартная (palette), dark, light, active-варианты.
|
||
#
|
||
# 2) Зависимости модуля:
|
||
# Импорты: нет
|
||
# Хост/базовый класс: нет (модуль-словарь)
|
||
# Внешние библиотеки: нет
|
||
#
|
||
# 3) Экспорт:
|
||
# Словарь INPUTS: dict[str, str] — ключ → QSS-строка.
|
||
# Ключи: COORDINATE_INPUT, COORDINATE_INPUT_DARK, COORDINATE_INPUT_LIGHT,
|
||
# ERROR_DIALOG_TEXT, FORM_WIDGET, FORM_WIDGET_DARK, FORM_WIDGET_LIGHT,
|
||
# FORM_WIDGET_DARK_ACTIVE, FORM_WIDGET_LIGHT_ACTIVE,
|
||
# TEXT_INPUT, TEXT_INPUT_DARK, TEXT_INPUT_LIGHT,
|
||
# TEXT_INPUT_DARK_ACTIVE, TEXT_INPUT_LIGHT_ACTIVE,
|
||
# RADIO_BUTTON, RADIO_BUTTON_DARK, RADIO_BUTTON_LIGHT.
|
||
#
|
||
# 4) Состояние (поля):
|
||
# INPUTS: dict[str, str] — единственный экспортируемый словарь.
|
||
#
|
||
# 5) Последовательность действий и вызовов:
|
||
# Нет вызовов; модуль содержит только декларативные QSS-строки.
|
||
# Импортируется в gui/styles/__init__.py → APP_STYLES.update(INPUTS).
|
||
#
|
||
# 6) Побочные эффекты:
|
||
# Нет побочных эффектов при импорте.
|
||
#
|
||
# 7) Границы ответственности:
|
||
# НЕ применяет стили — только хранит QSS-строки.
|
||
# НЕ содержит стили для кнопок, меток или контейнеров.
|
||
#
|
||
# 8) Обработка ошибок:
|
||
# Нет; модуль декларативный.
|
||
#
|
||
# 9) Инварианты и контракты:
|
||
# - Каждый ключ имеет варианты: базовый (palette), _DARK, _LIGHT.
|
||
# - Active-варианты имеют суффикс _DARK_ACTIVE / _LIGHT_ACTIVE.
|
||
# - Все QSS-строки — валидный Qt StyleSheet синтаксис.
|
||
#
|
||
# 10) Правило сопровождения:
|
||
# Новые стили полей ввода добавлять сюда, соблюдая паттерн
|
||
# KEY / KEY_DARK / KEY_LIGHT. Active-варианты — по необходимости.
|
||
# Не дублировать стили кнопок (→ buttons.py) или меток (→ labels.py).
|