Add Dispatch_V0.1.1
This commit is contained in:
970
Dispatch_V0.1.1/gui/styles/buttons.py
Normal file
970
Dispatch_V0.1.1/gui/styles/buttons.py
Normal file
@@ -0,0 +1,970 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# gui/styles/buttons.py
|
||||
"""Стили для всех видов кнопок"""
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
LIGHT_TEXT_PRIMARY = "#172B4D"
|
||||
LIGHT_TEXT_SECONDARY = "#5E6C84"
|
||||
LIGHT_TEXT_DISABLED = "#A5ADBA"
|
||||
LIGHT_PANEL = "#FFFFFF"
|
||||
LIGHT_BORDER = "#DFE1E6"
|
||||
LIGHT_HOVER = "#EBECF0"
|
||||
LIGHT_PRESSED = "#DFE1E6"
|
||||
LIGHT_ACCENT_SOFT = "#DEEBFF"
|
||||
LIGHT_ACCENT_BORDER = "#85B8FF"
|
||||
|
||||
BUTTONS = {
|
||||
|
||||
"BUTTON_PRIMARY": """
|
||||
QPushButton {
|
||||
background-color: palette(highlight);
|
||||
color: #ffffff;
|
||||
border: 1px solid palette(highlight);
|
||||
border-radius: 0px;
|
||||
padding: 8px 14px;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #0747A6;
|
||||
border-color: #0747A6;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #043A7D;
|
||||
border-color: #043A7D;
|
||||
}
|
||||
QPushButton:disabled {
|
||||
background-color: palette(mid);
|
||||
color: #42526E;
|
||||
border-color: palette(mid);
|
||||
}
|
||||
""",
|
||||
|
||||
"BUTTON_SECONDARY": """
|
||||
QPushButton {
|
||||
background-color: palette(button);
|
||||
color: palette(button-text);
|
||||
border: 1px solid palette(mid);
|
||||
border-radius: 0px;
|
||||
padding: 4px 8px;
|
||||
font-size: 12px;
|
||||
min-width: 100px;
|
||||
min-height: 30px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #EBECF0;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #DFE1E6;
|
||||
}
|
||||
""",
|
||||
|
||||
"BUTTON_SMALL": """
|
||||
QPushButton {
|
||||
background-color: palette(button);
|
||||
color: palette(button-text);
|
||||
border: 1px solid palette(mid);
|
||||
border-radius: 0px;
|
||||
padding: 6px 12px;
|
||||
font-size: 12px;
|
||||
min-width: 80px;
|
||||
min-height: 30px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #EBECF0;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #DFE1E6;
|
||||
}
|
||||
QPushButton:checked {
|
||||
background-color: palette(highlight);
|
||||
color: #ffffff;
|
||||
border-color: palette(highlight);
|
||||
}
|
||||
""",
|
||||
|
||||
"MEASURE_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/measure_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"MEASURE_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/measure_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
"MEASURE_TEXT_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 0px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextOnly;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"MEASURE_TEXT_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 0px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextOnly;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"CREATE_ZONE_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_zone_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"CREATE_ZONE_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_zone_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"DELETE_ZONE_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/delete_zone_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"DELETE_ZONE_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/delete_zone_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"SELECT_ZONE_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/select_zone_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"SELECT_ZONE_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/select_zone_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
"EDIT_ZONE_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/edit_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"EDIT_ZONE_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/edit_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"CREATE_NEW_MESH_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_mesh_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"CREATE_NEW_MESH_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_mesh_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"USE_CURRENT_MESH_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/use_current_mesh_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"USE_CURRENT_MESH_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/use_current_mesh_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"START_POINT_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/start_point_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"START_POINT_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/start_point_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"CREATE_MESH_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_mesh_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"CREATE_MESH_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_mesh_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
"REMEMBER_POINT_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/remember_point_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"REMEMBER_POINT_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/remember_point_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"SET_GRID_STEP_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/set_step_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"SET_GRID_STEP_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/set_step_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"CREATE_VOLUME_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_volume_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"CREATE_VOLUME_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/create_volume_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
|
||||
"REMEMBER_VOLUME_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/accept_wolume_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"REMEMBER_VOLUME_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 16px;
|
||||
padding-left: 6px;
|
||||
qproperty-icon: url("gui/components/icons/accept_wolume_white.png");
|
||||
qproperty-iconSize: 18px 18px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
"MODEL_TOGGLE": """
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
color: white;
|
||||
border: 1px solid #555555;
|
||||
font-size: 14px;
|
||||
padding-left: 6px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:disabled {
|
||||
background-color: #1f1f1f;
|
||||
color: #7a7a7a;
|
||||
border: 1px solid #2a2a2a;
|
||||
}
|
||||
QToolButton:hover { background-color: #4a4a4a; }
|
||||
QToolButton:pressed { background-color: #5a5a5a; }
|
||||
""",
|
||||
|
||||
"MODEL_TOGGLE_ACTIVE": """
|
||||
QToolButton {
|
||||
background-color: rgba(255, 255, 255, 0.3);
|
||||
color: white;
|
||||
border: 1px solid #cfcfcf;
|
||||
font-size: 14px;
|
||||
padding-left: 6px;
|
||||
qproperty-toolButtonStyle: ToolButtonTextBesideIcon;
|
||||
}
|
||||
QToolButton:hover { background-color: #6a6a6a; }
|
||||
QToolButton:pressed { background-color: #7a7a7a; }
|
||||
""",
|
||||
"STANDARD_BUTTON_DARK_THEME": """
|
||||
QPushButton {
|
||||
background-color: #3c3c3c;
|
||||
color: white;
|
||||
border: none;
|
||||
font-size: 16px;
|
||||
text-align: left;
|
||||
border-radius: 0px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
QPushButton:hover { background-color: #4a4a4a; }
|
||||
QPushButton:pressed { background-color: #5a5a5a; }
|
||||
QPushButton:disabled {
|
||||
background-color: #2e2e2e;
|
||||
color: #606060;
|
||||
border: none;
|
||||
}
|
||||
""",
|
||||
|
||||
"STANDARD_BUTTON_DARK_THEME_ACTIVE": """
|
||||
QPushButton {
|
||||
background-color: #5a5a5a;
|
||||
color: white;
|
||||
border: none;
|
||||
font-size: 16px;
|
||||
text-align: left;
|
||||
border-radius: 0px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
QPushButton:hover { background-color: #6a6a6a; }
|
||||
QPushButton:pressed { background-color: #7a7a7a; }
|
||||
QPushButton:disabled {
|
||||
background-color: #2e2e2e;
|
||||
color: #606060;
|
||||
border: none;
|
||||
}
|
||||
""",
|
||||
|
||||
"STANDARD_BUTTON_LIGHT_THEME": """
|
||||
QPushButton {
|
||||
background-color: #FFFFFF;
|
||||
color: #172B4D;
|
||||
border: 1px solid #DFE1E6;
|
||||
font-size: 16px;
|
||||
border-radius: 0px;
|
||||
text-align: left;
|
||||
padding-left: 10px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #EBECF0;
|
||||
border-color: #DFE1E6;
|
||||
}
|
||||
QPushButton:pressed { background-color: #DFE1E6; }
|
||||
QPushButton:disabled {
|
||||
background-color: #F4F5F7;
|
||||
color: #B3BAC5;
|
||||
border: 1px solid #EBECF0;
|
||||
}
|
||||
""",
|
||||
|
||||
"STANDARD_BUTTON_LIGHT_THEME_ACTIVE": """
|
||||
QPushButton {
|
||||
background-color: #FFFFFF;
|
||||
color: #0C66E4;
|
||||
border: 1px solid #85B8FF;
|
||||
font-size: 16px;
|
||||
border-radius: 0px;
|
||||
font-weight: 600;
|
||||
text-align: left;
|
||||
padding-left: 10px;
|
||||
}
|
||||
QPushButton:hover { background-color: #EBECF0; }
|
||||
QPushButton:pressed { background-color: #DFE1E6; }
|
||||
QPushButton:disabled {
|
||||
background-color: #F4F5F7;
|
||||
color: #B3BAC5;
|
||||
border: 1px solid #EBECF0;
|
||||
font-weight: normal;
|
||||
}
|
||||
""",
|
||||
|
||||
"TAB_BUTTON_ACTIVE": """
|
||||
QPushButton {
|
||||
background-color: #5a5a5a;
|
||||
color: white;
|
||||
border: 1px solid #6A6A6A;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
border-radius: 0px;
|
||||
margin 10px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #6a6a6a;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #7a7a7a;
|
||||
}
|
||||
QPushButton:disabled {
|
||||
background-color: #2e2e2e;
|
||||
color: #606060;
|
||||
border: 1px solid #333333;
|
||||
}
|
||||
""",
|
||||
|
||||
"TAB_BUTTON_NORMAL": """
|
||||
QPushButton {
|
||||
background-color: #3c3c3c;
|
||||
color: #DCDCDC;
|
||||
border: 1px solid #3A3A3A;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
border-radius: 0px;
|
||||
margin 10px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #4a4a4a;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #5a5a5a;
|
||||
}
|
||||
QPushButton:disabled {
|
||||
background-color: #2e2e2e;
|
||||
color: #606060;
|
||||
border: 1px solid #333333;
|
||||
}
|
||||
""",
|
||||
|
||||
"VISUALIZATION_BUTTON_ACTIVE": """
|
||||
QPushButton {
|
||||
background-color: #0078d4;
|
||||
color: #ffffff;
|
||||
border: 1px solid #0078d4;
|
||||
border-radius: 0px;
|
||||
padding: 4px 8px;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #106ebe;
|
||||
border-color: #106ebe;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #005a9e;
|
||||
}
|
||||
""",
|
||||
|
||||
"VISUALIZATION_BUTTON_FILL": """
|
||||
QPushButton {
|
||||
background-color: palette(button);
|
||||
color: palette(button-text);
|
||||
border: 1px solid palette(mid);
|
||||
border-radius: 0px;
|
||||
padding: 4px 8px;
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
QPushButton:hover {
|
||||
border-color: palette(highlight);
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: palette(light);
|
||||
}
|
||||
""",
|
||||
"TAB_BUTTON_ACTIVE_LIGHT": """
|
||||
QPushButton {
|
||||
background-color: #FFFFFF;
|
||||
color: #0C66E4;
|
||||
border: 1px solid #85B8FF;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
border-radius: 0px;
|
||||
margin 10px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #EBECF0;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #DFE1E6;
|
||||
}
|
||||
QPushButton:disabled {
|
||||
background-color: #F4F5F7;
|
||||
color: #B3BAC5;
|
||||
border: 1px solid #EBECF0;
|
||||
}
|
||||
""",
|
||||
|
||||
"TAB_BUTTON_NORMAL_LIGHT": """
|
||||
QPushButton {
|
||||
background-color: #FFFFFF;
|
||||
color: #172B4D;
|
||||
border: 1px solid #DFE1E6;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
border-radius: 0px;
|
||||
margin 10px;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #EBECF0;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #DFE1E6;
|
||||
}
|
||||
QPushButton:disabled {
|
||||
background-color: #F4F5F7;
|
||||
color: #B3BAC5;
|
||||
border: 1px solid #EBECF0;
|
||||
}
|
||||
""",
|
||||
|
||||
"RACK_TAB_BUTTON_ACTIVE": """
|
||||
QPushButton {
|
||||
background-color: #5F738A;
|
||||
color: #FFFFFF;
|
||||
border: 1px solid #6F8298;
|
||||
border-radius: 3px;
|
||||
padding: 2px 8px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #6A7F97;
|
||||
border-color: #7A8FA6;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #52657A;
|
||||
border-color: #62778D;
|
||||
}
|
||||
""",
|
||||
|
||||
"RACK_TAB_BUTTON_NORMAL": """
|
||||
QPushButton {
|
||||
background-color: #3A3F45;
|
||||
color: #D9DEE3;
|
||||
border: 1px solid #4A5058;
|
||||
border-radius: 3px;
|
||||
padding: 2px 8px;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #434A53;
|
||||
border-color: #5A616A;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #4D5661;
|
||||
border-color: #636D78;
|
||||
}
|
||||
""",
|
||||
|
||||
"RACK_TAB_BUTTON_ACTIVE_LIGHT": """
|
||||
QPushButton {
|
||||
background-color: #DCEBFF;
|
||||
color: #0C66E4;
|
||||
border: 1px solid #85B8FF;
|
||||
border-radius: 3px;
|
||||
padding: 2px 8px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
text-align: center;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #CFE1FF;
|
||||
border-color: #6FA8FF;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #BFD6FF;
|
||||
border-color: #5D9BFF;
|
||||
}
|
||||
""",
|
||||
|
||||
"RACK_TAB_BUTTON_NORMAL_LIGHT": """
|
||||
QPushButton {
|
||||
background-color: #FFFFFF;
|
||||
color: #172B4D;
|
||||
border: 1px solid #DFE1E6;
|
||||
border-radius: 3px;
|
||||
padding: 2px 8px;
|
||||
font-size: 13px;
|
||||
font-weight: 500;
|
||||
text-align: center;
|
||||
}
|
||||
QPushButton:hover {
|
||||
background-color: #F4F5F7;
|
||||
border-color: #CDD4DD;
|
||||
}
|
||||
QPushButton:pressed {
|
||||
background-color: #EBECF0;
|
||||
border-color: #C1C7D0;
|
||||
}
|
||||
""",
|
||||
}
|
||||
|
||||
_ICONS_DIR = Path(__file__).resolve().parents[1] / "components" / "icons"
|
||||
|
||||
|
||||
def _replace_white_icons_with_black(style_text: str) -> str:
|
||||
"""Заменить *_white.png на *_black.png, только если файл чёрной иконки существует."""
|
||||
pattern = re.compile(r'([a-z0-9_]+)_white\.png', re.IGNORECASE)
|
||||
|
||||
def _swap(match):
|
||||
icon_base = match.group(1)
|
||||
black_name = f"{icon_base}_black.png"
|
||||
if (_ICONS_DIR / black_name).exists():
|
||||
return black_name
|
||||
return match.group(0)
|
||||
|
||||
return pattern.sub(_swap, style_text)
|
||||
|
||||
|
||||
def _make_light_toggle_style(style_text: str, is_active: bool = False) -> str:
|
||||
"""Построить читаемый вариант светлой темы для стилей QToolButton панели инструментов зон."""
|
||||
result = _replace_white_icons_with_black(style_text)
|
||||
replacements = [
|
||||
("color: white;", f"color: {LIGHT_TEXT_PRIMARY};"),
|
||||
("color: #ffffff;", f"color: {LIGHT_TEXT_PRIMARY};"),
|
||||
("border: 1px solid #555555;", f"border: 1px solid {LIGHT_BORDER};"),
|
||||
("QToolButton:hover { background-color: #4a4a4a; }", f"QToolButton:hover {{ background-color: {LIGHT_HOVER}; }}"),
|
||||
("QToolButton:pressed { background-color: #5a5a5a; }", f"QToolButton:pressed {{ background-color: {LIGHT_PRESSED}; }}"),
|
||||
("background-color: #1f1f1f;", f"background-color: {LIGHT_PANEL};"),
|
||||
("color: #7a7a7a;", f"color: {LIGHT_TEXT_SECONDARY};"),
|
||||
("border: 1px solid #2a2a2a;", f"border: 1px solid {LIGHT_BORDER};"),
|
||||
]
|
||||
for old, new in replacements:
|
||||
result = result.replace(old, new)
|
||||
|
||||
if is_active:
|
||||
result = result.replace(
|
||||
"background-color: rgba(255, 255, 255, 0.3);",
|
||||
f"background-color: {LIGHT_ACCENT_SOFT};",
|
||||
)
|
||||
result = result.replace("border: 1px solid #cfcfcf;", f"border: 1px solid {LIGHT_ACCENT_BORDER};")
|
||||
result = result.replace("QToolButton:hover { background-color: #6a6a6a; }", "QToolButton:hover { background-color: #CFE1FF; }")
|
||||
result = result.replace("QToolButton:pressed { background-color: #7a7a7a; }", "QToolButton:pressed { background-color: #B3D4FF; }")
|
||||
else:
|
||||
result = result.replace("background-color: transparent;", f"background-color: {LIGHT_PANEL};")
|
||||
result = result.replace("color: #9a9a9a;", f"color: {LIGHT_TEXT_DISABLED};")
|
||||
result = result.replace("color: #1a1a1a;", f"color: {LIGHT_TEXT_PRIMARY};")
|
||||
return result
|
||||
|
||||
|
||||
_ZONE_TOOL_TOGGLE_KEYS = (
|
||||
"MEASURE_TEXT_TOGGLE",
|
||||
"MEASURE_TEXT_TOGGLE_ACTIVE",
|
||||
"CREATE_ZONE_TOGGLE",
|
||||
"CREATE_ZONE_TOGGLE_ACTIVE",
|
||||
"DELETE_ZONE_TOGGLE",
|
||||
"DELETE_ZONE_TOGGLE_ACTIVE",
|
||||
"SELECT_ZONE_TOGGLE",
|
||||
"SELECT_ZONE_TOGGLE_ACTIVE",
|
||||
"EDIT_ZONE_TOGGLE",
|
||||
"EDIT_ZONE_TOGGLE_ACTIVE",
|
||||
"CREATE_NEW_MESH_TOGGLE",
|
||||
"CREATE_NEW_MESH_TOGGLE_ACTIVE",
|
||||
"USE_CURRENT_MESH_TOGGLE",
|
||||
"USE_CURRENT_MESH_TOGGLE_ACTIVE",
|
||||
"START_POINT_TOGGLE",
|
||||
"START_POINT_TOGGLE_ACTIVE",
|
||||
"REMEMBER_POINT_TOGGLE",
|
||||
"REMEMBER_POINT_TOGGLE_ACTIVE",
|
||||
"SET_GRID_STEP_TOGGLE",
|
||||
"SET_GRID_STEP_TOGGLE_ACTIVE",
|
||||
"CREATE_VOLUME_TOGGLE",
|
||||
"CREATE_VOLUME_TOGGLE_ACTIVE",
|
||||
"REMEMBER_VOLUME_TOGGLE",
|
||||
"REMEMBER_VOLUME_TOGGLE_ACTIVE",
|
||||
"MODEL_TOGGLE",
|
||||
"MODEL_TOGGLE_ACTIVE",
|
||||
)
|
||||
|
||||
for _key in _ZONE_TOOL_TOGGLE_KEYS:
|
||||
_style = BUTTONS.get(_key)
|
||||
if _style:
|
||||
BUTTONS[f"{_key}_LIGHT"] = _make_light_toggle_style(
|
||||
_style,
|
||||
is_active=_key.endswith("_ACTIVE"),
|
||||
)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Module workflow notes
|
||||
# ---------------------------------------------------------------------------
|
||||
#
|
||||
# 1) Назначение модуля:
|
||||
# Определение всех стилей (QSS) для кнопок приложения: primary, secondary,
|
||||
# standard, tab, visualization, toggle-кнопки инструментов (measure, zone,
|
||||
# mesh, volume, model и др.) в тёмной и светлой темах. Содержит автогенерацию
|
||||
# светлых вариантов toggle-стилей через _make_light_toggle_style().
|
||||
#
|
||||
# 2) Зависимости модуля:
|
||||
# Импорты: Path (pathlib), re
|
||||
# Хост/базовый класс: нет (модуль-словарь)
|
||||
# Внешние библиотеки: нет (стандартная библиотека)
|
||||
#
|
||||
# 3) Экспорт:
|
||||
# Словарь BUTTONS: dict[str, str] — ключ → QSS-строка.
|
||||
# Константы цветов светлой темы: LIGHT_TEXT_PRIMARY, LIGHT_TEXT_SECONDARY,
|
||||
# LIGHT_TEXT_DISABLED, LIGHT_PANEL, LIGHT_BORDER, LIGHT_HOVER,
|
||||
# LIGHT_PRESSED, LIGHT_ACCENT_SOFT, LIGHT_ACCENT_BORDER.
|
||||
#
|
||||
# 4) Состояние (поля):
|
||||
# BUTTONS : dict[str, str] — основной реестр стилей кнопок.
|
||||
# _ICONS_DIR : Path — путь к gui/components/icons/ (для подстановки иконок).
|
||||
# _ZONE_TOOL_TOGGLE_KEYS: tuple[str] — ключи toggle-стилей для автогенерации.
|
||||
#
|
||||
# 5) Последовательность действий и вызовов:
|
||||
# 1. Определение словаря BUTTONS с тёмными стилями.
|
||||
# 2. _ICONS_DIR = Path → gui/components/icons/
|
||||
# 3. _replace_white_icons_with_black(style_text) — regex-замена *_white.png
|
||||
# на *_black.png, если файл существует.
|
||||
# 4. _make_light_toggle_style(style_text, is_active) — построение светлого
|
||||
# варианта toggle-стилей: замена цветов, бордюров, hover/pressed.
|
||||
# 5. Цикл по _ZONE_TOOL_TOGGLE_KEYS: для каждого ключа создаётся
|
||||
# BUTTONS["{key}_LIGHT"] через _make_light_toggle_style().
|
||||
#
|
||||
# 6) Побочные эффекты:
|
||||
# Мутирует словарь BUTTONS при импорте модуля — добавляет *_LIGHT ключи.
|
||||
# Проверяет наличие файлов иконок через Path.exists() на этапе импорта.
|
||||
#
|
||||
# 7) Границы ответственности:
|
||||
# НЕ применяет стили к виджетам — только хранит QSS-строки.
|
||||
# НЕ взаимодействует с theme_bus — переключение темы в StylableMixin.
|
||||
# НЕ содержит стили для не-кнопочных виджетов.
|
||||
#
|
||||
# 8) Обработка ошибок:
|
||||
# _replace_white_icons_with_black: если чёрная иконка не найдена —
|
||||
# оригинальное имя сохраняется (fallback).
|
||||
# Нет исключений при отсутствии ключей в BUTTONS.get().
|
||||
#
|
||||
# 9) Инварианты и контракты:
|
||||
# - Каждый toggle-стиль имеет пару: KEY и KEY_ACTIVE.
|
||||
# - Автогенерированные светлые стили имеют суффикс _LIGHT.
|
||||
# - Все QSS-строки — валидный Qt StyleSheet синтаксис.
|
||||
#
|
||||
# 10) Правило сопровождения:
|
||||
# Новые toggle-стили добавлять в BUTTONS + в _ZONE_TOOL_TOGGLE_KEYS
|
||||
# для автогенерации светлого варианта. Иконки _white.png и _black.png
|
||||
# должны существовать парами в gui/components/icons/. При добавлении
|
||||
# non-toggle стилей — добавлять *_LIGHT вариант вручную.
|
||||
Reference in New Issue
Block a user