Add Dispatch_V0.1.1

This commit is contained in:
2026-04-29 08:18:54 +04:00
commit a7ede6ded4
404 changed files with 39167 additions and 0 deletions

View File

@@ -0,0 +1,439 @@
# -*- 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).