from PySide2 import QtGui
from pvp.alarm import AlarmSeverity
SUBWAY_COLORS = {
'blue': "#0039A6",
'ltblue': "#00A1DE",
'lime': "#6CBE45",
'gray': "A7A9AC",
'orange': "#FF6319",
'orange_darker': "#CC4E14",
'yellow': "#FCCC0A",
'yellow_darker': "#CCA408",
'red': "#EE352E",
'red_darker': "#B72722",
'green': "#00933C",
'purple': "#B933AD"
}
BACKGROUND_COLOR = "#111111"
BOX_BACKGROUND = "#333333"
TEXT_COLOR = "#EEEEEE"
TEXT_COLOR_DIM = "#BBBBBB"
TEXT_COLOR_DARK = BACKGROUND_COLOR
TEXT_COLOR_DARK_DIM = "#555555"
BORDER_COLOR = "palette(midlight)"
BOX_BORDERS = f"1px solid palette(midlight);"
BOX_BORDERS_LOCKED = f"3px solid {SUBWAY_COLORS['lime']}"
BOX_BORDERS_UNLOCKED = f"3px solid {SUBWAY_COLORS['red']}"
BOX_MARGINS = 4
GRAY_TEXT = BOX_BACKGROUND
CONTROL_BACKGROUND = "#DDDDDD"
CONTROL_BACKGROUND_LOCKED = "#DDDDDD"
CONTROL_SUBBOX_BACKGROUND = "#FFFFFF"
CONTROL_SUBBOX_BACKGROUND_LOCKED = "#DDDDDD"
CONTROL_TEXT = BACKGROUND_COLOR
CONTROL_TEXT_SECONDARY = "#333333"
CONTROL_TEXT_SECONDARY_SIZE = 10
CONTROL_SENSOR_BACKGROUND_LIGHT = CONTROL_BACKGROUND
CONTROL_SENSOR_BACKGROUND_DARK = BOX_BACKGROUND
SENSOR_BAR_COLOR= "#999999"
CONTROL_SENSOR_BAR_WIDTH = 50
HANDLE_HEIGHT = 10
SLIDER_WIDTH = 80
SLIDER_HEIGHT = 10 #50
INDICATOR_WIDTH = SLIDER_WIDTH/3
SLIDER_COLOR = TEXT_COLOR
INDICATOR_COLOR = SUBWAY_COLORS['blue']
ALARM_COLOR = "#FF0000"
MUTE_BUTTON_WIDTH = 100
LOGO_MAX_HEIGHT = 50
TOGGLE_MAX_WIDTH = 30
DISPLAY_MIN_HEIGHT = 100
DIVIDER_COLOR = "#FFFFFF"
DIVIDER_COLOR_DARK = BOX_BACKGROUND
VALUE_SIZE = 30 #30
VALUE_MINOR_SIZE = 10
NAME_SIZE = 26 #10
UNIT_SIZE = 18
TICK_SIZE = 12
CARD_TITLE_SIZE = 24
CARD_TIMESTAMP_SIZE = 12
ALARM_BAR_HEIGHT = 100
MIDLINE_MARGIN = 50
START_BUTTON_HEIGHT=80
BUTTON_MAX_HEIGHT = 100
LEFT_COLUMN_MAX_WIDTH = 300
MONITOR_UPDATE_INTERVAL = 0.5
"""
(float): inter-update interval (seconds) for :class:`~pvp.gui.widgets.monitor.Monitor`
"""
GLOBAL = f"""
QWidget {{
font-size: 20pt;
color: {TEXT_COLOR};
}}
"""
DISPLAY_DARK = f"""
QWidget[widgetClass="Display"] {{
border: 1px solid black;
}}
"""
DISPLAY_LIGHT = f"""
QWidget[widgetClass="Display"] {{
border: 1px solid black;
}}
"""
RANGE_SLIDER = f"""
QSlider {{
font-size : {TICK_SIZE}px;
}}
QSlider::groove:vertical {{
border: 1px solid #FFFFFF;
width: {SLIDER_WIDTH}px;
}}
QSlider::handle:vertical {{
height: {HANDLE_HEIGHT}px;
width: 20px;
margin: 0px -20px 0px px;
background-color: {SLIDER_COLOR};
}}
QSlider::groove:horizontal {{
margin: 0px, 0px, 30px, 0px;
}}
QSlider::handle:horizontal {{
}}
"""
MONITOR_BOX = f"""
QGroupBox {{
margin-top: {MIDLINE_MARGIN}px;
border-top-right-radius: 5px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top left;
color: {TEXT_COLOR};
left: 3px;
top: 5px;
}}
"""
DISPLAY_VALUE_DARK = """
QLabel {{
color: {textcolor};
font-size: {value_size}pt;
}}""".format(textcolor=TEXT_COLOR,
value_size=VALUE_SIZE)
DISPLAY_VALUE_LIGHT = """
QLabel {{
color: {textcolor};
font-size: {value_size}pt;
}}""".format(textcolor=BACKGROUND_COLOR,
value_size=VALUE_SIZE)
DISPLAY_VALUE_ALARM_LOW = f"""
QLabel {{
color: {SUBWAY_COLORS['yellow']};
font-size: {VALUE_SIZE}pt;
font-weight: bold;
}}"""
DISPLAY_VALUE_ALARM_MED = f"""
QLabel {{
color: {SUBWAY_COLORS['orange']};
font-size: {VALUE_SIZE}pt;
font-weight: bold;
}}"""
DISPLAY_VALUE_ALARM_HIGH = f"""
QLabel {{
color: {SUBWAY_COLORS['red']};
font-size: {VALUE_SIZE}pt;
font-weight: bold;
}}"""
DISPLAY_ALARM_STYLES = {
AlarmSeverity.LOW:DISPLAY_VALUE_ALARM_LOW,
AlarmSeverity.MEDIUM:DISPLAY_VALUE_ALARM_MED,
AlarmSeverity.HIGH:DISPLAY_VALUE_ALARM_HIGH
}
DISPLAY_NAME = """
QLabel {{
color: {textcolor};
font-size: {name_size}pt;
}}""".format(textcolor=TEXT_COLOR,
name_size=NAME_SIZE)
DISPLAY_NAME_ALARM = """
QLabel {{
color: #ff0000;
font-size: {name_size}pt;
}}""".format(name_size=NAME_SIZE)
DISPLAY_UNITS_DARK = f"""
QLabel {{
color: {TEXT_COLOR_DIM};
font-size: {UNIT_SIZE}pt;
}}"""
DISPLAY_UNITS_LIGHT = f"""
QLabel {{
color: {TEXT_COLOR_DARK_DIM};
font-size: {UNIT_SIZE}pt;
}}"""
DISPLAY_UNITS_ALARM = f"""
QLabel {{
color: #ff0000;
font-size: {UNIT_SIZE}pt;
}}"""
DISPLAY_WIDGET = """
border-bottom: 2px solid white;
"""
PRESSURE_PLOT_BOX = f"""
QGroupBox {{
background-color: {CONTROL_BACKGROUND};
border: 0px solid #000000;
border-left: {BOX_BORDERS};
border-top: {BOX_BORDERS};
border-bottom: {BOX_BORDERS};
margin-left: {BOX_MARGINS}px;
margin-bottom: {BOX_MARGINS}px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
margin-top: {MIDLINE_MARGIN}px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top left;
color: {TEXT_COLOR};
left: 3px;
top: 5px;
}}
"""
PRESSURE_PLOT_BOX_LOCKED = f"""
QGroupBox {{
background-color: {CONTROL_BACKGROUND_LOCKED};
border: 0px solid #000000;
border-left: {BOX_BORDERS_LOCKED};
border-top: {BOX_BORDERS_LOCKED};
border-bottom: {BOX_BORDERS_LOCKED};
margin-left: {BOX_MARGINS}px;
margin-bottom: {BOX_MARGINS}px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
margin-top: {MIDLINE_MARGIN}px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top left;
color: {TEXT_COLOR};
left: 3px;
top: 5px;
}}
"""
PRESSURE_PLOT_BOX_UNLOCKED = f"""
QGroupBox {{
background-color: {CONTROL_BACKGROUND};
border: 0px solid #000000;
border-left: {BOX_BORDERS_UNLOCKED};
border-top: {BOX_BORDERS_UNLOCKED};
border-bottom: {BOX_BORDERS_UNLOCKED};
margin-left: {BOX_MARGINS}px;
margin-bottom: {BOX_MARGINS}px;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
margin-top: {MIDLINE_MARGIN}px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top left;
color: {TEXT_COLOR};
left: 3px;
top: 5px;
}}
"""
PLOT_BOX = f"""
QGroupBox {{
background-color: {BOX_BACKGROUND};
border: 0px solid #000000;
border-right: 1px solid {BORDER_COLOR};
border-top: 1px solid {BORDER_COLOR};
border-bottom: 1px solid {BORDER_COLOR};
border-left: 1px solid {BORDER_COLOR};
margin-right: {BOX_MARGINS}px;
margin-left: {BOX_MARGINS}px;
border-top-left-radius: 5px;
border-top-right-radius: 5px;
margin-top: {MIDLINE_MARGIN}px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top left;
color: {TEXT_COLOR};
left: 3px;
top: 3px;
}}
"""
MONITOR_PLOT = f"""
QWidget {{
margin-right: {BOX_MARGINS}px;
}}
"""
CONTROL_LABEL = f"""
QLabel {{
font-size: 12px;
color: {BACKGROUND_COLOR};
}}
"""
CONTROL_VALUE_LIGHT = f"""
QLabel {{
color: {BACKGROUND_COLOR};
font-size: {VALUE_MINOR_SIZE}pt;
}}
QLineEdit {{
color: {TEXT_COLOR};
font-size: {VALUE_MINOR_SIZE}pt;
}}
"""
CONTROL_VALUE_DARK = f"""
QLabel {{
color: {TEXT_COLOR};
font-size: {VALUE_MINOR_SIZE}pt;
}}
QLineEdit {{
color: {TEXT_COLOR};
font-size: {VALUE_MINOR_SIZE}pt;
}}
"""
CONTROL_VALUE_REC = f"""
QLabel {{
color: {SUBWAY_COLORS['red']};
font-size: {VALUE_SIZE}pt;
}}
QLineEdit {{
color: {TEXT_COLOR};
font-size: {VALUE_SIZE}pt;
}}
"""
CONTROL_BOX = f"""
QGroupBox {{
background-color: {CONTROL_BACKGROUND};
border: 0px solid #000000;
border-top: {BOX_BORDERS};
border-right: {BOX_BORDERS};
border-bottom: {BOX_BORDERS};
border-left: {BOX_BORDERS};
border-top-left-radius: 5px;
margin-top: {MIDLINE_MARGIN}px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top right;
color: {TEXT_COLOR};
right: 7px;
top: 5px;
}}
"""
CONTROL_BOX_LOCKED = f"""
QGroupBox {{
background-color: {CONTROL_BACKGROUND_LOCKED};
border: 0px solid {SUBWAY_COLORS['lime']};
border-top: {BOX_BORDERS_LOCKED};
border-right: {BOX_BORDERS_LOCKED};
border-bottom: {BOX_BORDERS_LOCKED};
border-left: {BOX_BORDERS_LOCKED};
border-top-right-radius: 5px;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
border-top-left-radius: 5px;
margin-top: {MIDLINE_MARGIN}px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top right;
color: {TEXT_COLOR};
right: 7px;
top: 5px;
}}
"""
CONTROL_BOX_UNLOCKED = f"""
QGroupBox {{
background-color: {CONTROL_BACKGROUND};
border: 0px solid {SUBWAY_COLORS['red']};
border-top: {BOX_BORDERS_UNLOCKED};
border-right: {BOX_BORDERS_UNLOCKED};
border-bottom: {BOX_BORDERS_UNLOCKED};
border-left: {BOX_BORDERS_UNLOCKED};
border-top-right-radius: 5px;
border-top-left-radius: 5px;
border-bottom-right-radius: 5px;
border-bottom-left-radius: 5px;
margin-top: {MIDLINE_MARGIN}px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top right;
color: {TEXT_COLOR};
right: 7px;
top: 5px;
}}
"""
CONTROL_SUBBOX = f"""
QGroupBox {{
background-color: {CONTROL_SUBBOX_BACKGROUND};
border: 0px solid #000000;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
margin-left: 5px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top right;
right: 5px;
top: 5px;
color: {CONTROL_TEXT};
}}
QRadioButton {{
color: {CONTROL_TEXT_SECONDARY};
font-size: {CONTROL_TEXT_SECONDARY_SIZE}
}}
QLabel {{
color: {CONTROL_TEXT_SECONDARY};
}}
"""
CONTROL_SUBBOX_LOCKED = f"""
QGroupBox {{
background-color: {CONTROL_SUBBOX_BACKGROUND_LOCKED};
border: 0px solid #000000;
border-top-left-radius: 5px;
border-bottom-left-radius: 5px;
border-top-right-radius: 0px;
border-bottom-right-radius: 0px;
margin-left: 5px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top right;
right: 5px;
top: 5px;
color: {CONTROL_TEXT};
}}
QRadioButton {{
color: {CONTROL_TEXT_SECONDARY};
font-size: {CONTROL_TEXT_SECONDARY_SIZE}
}}
QLabel {{
color: {CONTROL_TEXT_SECONDARY};
}}
"""
CONTROL_NAME = f"""
QLabel {{
color: {BACKGROUND_COLOR};
font-size: {NAME_SIZE}pt;
}}"""
CONTROL_NAME_REC = f"""
QLabel {{
color: {SUBWAY_COLORS['red']};
font-size: {NAME_SIZE}pt;
}}"""
CONTROL_UNITS_REC = f"""
QLabel {{
color: {SUBWAY_COLORS['red']};
font-size: {UNIT_SIZE}pt;
}}"""
CONTROL_CYCLE_BOX = f"""
QGroupBox {{
color: {BACKGROUND_COLOR};
}}
QGroupBox QRadioButton {{
color: {BACKGROUND_COLOR};
}}
QRadioButton::indicator {{
width: 10px;
height: 10px;
border-radius: 7px;
}}
QRadioButton::indicator:checked {{
background-color: black;
border: 2px solid black;
}}
QRadioButton::indicator:unchecked {{
background-color: white;
border: 2px solid black;
}}
"""
PLOT_TITLE_STYLE = """
font-size: 16pt;
color: {text_color};
justify: left;
""".format(text_color=TEXT_COLOR)
PRESSURE_PLOT_TITLE_STYLE = f"""
font-size: 16pt;
color: {GRAY_TEXT};
justify: left;
"""
STATUS_NORMAL = f"""
QFrame {{
background-color: {BACKGROUND_COLOR};
color: {TEXT_COLOR};
}}
"""
STATUS_WARN = f"""
QFrame {{
background-color: {SUBWAY_COLORS['orange']};
color: {TEXT_COLOR};
}}
"""
STATUS_ALARM = f"""
QFrame {{
background-color: {SUBWAY_COLORS['red']};
color: {TEXT_COLOR};
}}
"""
ALARM_CARD_LOW = f"""
QFrame {{
border: 3px solid {SUBWAY_COLORS['yellow_darker']};
border-radius: 4px;
background-color: {SUBWAY_COLORS['yellow']};
}}
QFrame > QLabel {{
border: 0px;
border-radius: 0px;
color: {BACKGROUND_COLOR};
}}
"""
ALARM_CARD_MEDIUM = f"""
QFrame {{
border: 3px solid {SUBWAY_COLORS['orange_darker']};
border-radius: 4px;
background-color: {SUBWAY_COLORS['orange']};
}}
QFrame > QLabel {{
border: 0px;
border-radius: 0px;
color: {BACKGROUND_COLOR};
}}
"""
ALARM_CARD_HIGH = f"""
QFrame {{
border: 3px solid {SUBWAY_COLORS['red_darker']};
border-radius: 4px;
background-color: {SUBWAY_COLORS['red']};
}}
QFrame > QLabel {{
border: 0px;
border-radius: 0px;
color: {TEXT_COLOR};
}}
"""
ALARM_CARD_TITLE = f"""
QLabel {{
font-size: {CARD_TITLE_SIZE}pt;
font-weight: bold;
}}
"""
ALARM_CARD_TIMESTAMP = f"""
QLabel {{
font-size: {CARD_TIMESTAMP_SIZE}pt;
}}
"""
ALARM_CARD_BUTTON = f"""
QPushButton {{
font-size: 42pt;
color: {TEXT_COLOR};
}}
"""
ALARM_CARD_BUTTON_INACTIVE = f"""
QPushButton {{
font-size: 42pt;
color: {GRAY_TEXT};
}}
"""
ALARM_CARD_STYLES = {
AlarmSeverity.LOW: ALARM_CARD_LOW,
AlarmSeverity.MEDIUM: ALARM_CARD_MEDIUM,
AlarmSeverity.HIGH: ALARM_CARD_HIGH
}
HEARTBEAT_NORMAL = f"""
QRadioButton::indicator {{
background: qradialgradient(cx:0, cy:0, radius:1, fx:0.5, fy:0.5, stop:0 white, stop:1 {SUBWAY_COLORS['green']});
border-radius: 5px;
}}
QLabel {{
color: {TEXT_COLOR};
}}
"""
HEARTBEAT_ALARM = f"""
QRadioButton::indicator {{
background: qradialgradient(cx:0, cy:0, radius:1, fx:0.5, fy:0.5, stop:0 white, stop:1 {SUBWAY_COLORS['red']});
border-radius: 5px;
}}
QLabel {{
color: {SUBWAY_COLORS['red']};
}}
"""
HEARTBEAT_OFF = f"""
QRadioButton::indicator {{
background: qradialgradient(cx:0, cy:0, radius:1, fx:0.5, fy:0.5, stop:0 white, stop:1 #DDDDDD);
border-radius: 5px;
}}
QLabel {{
color: {TEXT_COLOR};
}}
"""
CONTROL_PANEL = f"""
QGroupBox {{
background-color: {BACKGROUND_COLOR};
border-radius: 5px;
}}
QGroupBox::title {{
subcontrol-origin: margin;
subcontrol-position: top left;
color: {TEXT_COLOR};
left: 3px;
top: 2px;
}}
"""
START_BUTTON_OFF = f"""
QToolButton {{
font-size: 48px;
font-style: bold;
color: {TEXT_COLOR};
text-align: center center;
}}
"""
START_BUTTON_ON = f"""
QToolButton {{
font-size: 48px;
font-style: bold;
color: {TEXT_COLOR};
}}
"""
START_BUTTON_ALARM = f"""
QToolButton {{
font-size: 48px;
font-style: bold;
color: {SUBWAY_COLORS['red']};
}}
"""
TOGGLE_BUTTON = f"""
QPushButton:checked {{
color: {SUBWAY_COLORS['lime']}
}}
"""
DARK_THEME = f"""
/*
adapted from https://github.com/gmarull/qtmodern/blob/master/qtmodern/resources/style.qss
*/
/*
* QGroupBox
*/
QGroupBox {{
background-color: palette(alternate-base);
border: 1px solid palette(midlight);
margin-top: 25px;
}}
QGroupBox::title {{
background-color: transparent;
}}
/*
* QToolBar
*/
QToolBar {{
border: none;
}}
/*
* QTabBar
*/
QTabBar{{
background-color: transparent;
}}
QTabBar::tab{{
padding: 4px 6px;
background-color: transparent;
border-bottom: 2px solid transparent;
}}
QTabBar::tab:selected, QTabBar::tab:hover {{
color: palette(text);
border-bottom: 2px solid palette(highlight);
}}
QTabBar::tab:selected:disabled {{
border-bottom: 2px solid palette(light);
}}
/*
* QScrollBar
*/
QScrollBar:vertical {{
background: palette(base);
border-top-right-radius: 2px;
border-bottom-right-radius: 2px;
width: 16px;
margin: 0px;
}}
QScrollBar::handle:vertical {{
background-color: palette(alternate-base);
border-radius: 2px;
min-height: 20px;
margin: 2px 4px 2px 4px;
}}
QScrollBar::handle:vertical:hover, QScrollBar::handle:horizontal:hover, QScrollBar::handle:vertical:pressed, QScrollBar::handle:horizontal:pressed {{
background-color:palette(midlight);
}}
QScrollBar::add-line:vertical {{
background: none;
height: 0px;
subcontrol-position: right;
subcontrol-origin: margin;
}}
QScrollBar::sub-line:vertical {{
background: none;
height: 0px;
subcontrol-position: left;
subcontrol-origin: margin;
}}
QScrollBar:horizontal{{
background: palette(base);
height: 16px;
margin: 0px;
}}
QScrollBar::handle:horizontal {{
background-color: palette(alternate-base);
border-radius: 2px;
min-width: 20px;
margin: 4px 2px 4px 2px;
}}
QScrollBar::add-line:horizontal {{
background: none;
width: 0px;
subcontrol-position: bottom;
subcontrol-origin: margin;
}}
QScrollBar::sub-line:horizontal {{
background: none;
width: 0px;
subcontrol-position: top;
subcontrol-origin: margin;
}}
/*
* QScrollArea
*/
QScrollArea {{
border-style: none;
}}
QScrollArea > QWidget > QWidget {{
background-color: palette(alternate-base);
}}
/*
* QSlider
*/
QSlider::handle:horizontal {{
border-radius: 5px;
background-color: palette(light);
max-height: 20px;
}}
QSlider::add-page:horizontal {{
background: palette(base);
}}
QSlider::sub-page:horizontal {{
background: palette(highlight);
}}
QSlider::sub-page:horizontal:disabled {{
background-color: palette(light);
}}
QTableView {{
background-color: palette(link-visited);
alternate-background-color: palette(midlight);
}}
QWidget {{
font-size: 20pt;
}}"""
[docs]def set_dark_palette(app):
""" Apply Dark Theme to the Qt application instance.
borrowed from https://github.com/gmarull/qtmodern/blob/master/qtmodern/styles.py
Args:
app (QApplication): QApplication instance.
"""
darkPalette = QtGui.QPalette()
# base
darkPalette.setColor(QtGui.QPalette.WindowText, QtGui.QColor(TEXT_COLOR))
darkPalette.setColor(QtGui.QPalette.Button, QtGui.QColor(50, 50, 50))
darkPalette.setColor(QtGui.QPalette.Light, QtGui.QColor(180, 180, 180))
darkPalette.setColor(QtGui.QPalette.Midlight, QtGui.QColor(90, 90, 90))
darkPalette.setColor(QtGui.QPalette.Dark, QtGui.QColor(35, 35, 35))
darkPalette.setColor(QtGui.QPalette.Text, QtGui.QColor(180, 180, 180))
darkPalette.setColor(QtGui.QPalette.BrightText, QtGui.QColor(180, 180, 180))
darkPalette.setColor(QtGui.QPalette.ButtonText, QtGui.QColor(180, 180, 180))
darkPalette.setColor(QtGui.QPalette.Base, QtGui.QColor(42, 42, 42))
darkPalette.setColor(QtGui.QPalette.Window, QtGui.QColor(BACKGROUND_COLOR))
darkPalette.setColor(QtGui.QPalette.Shadow, QtGui.QColor(20, 20, 20))
darkPalette.setColor(QtGui.QPalette.Highlight, QtGui.QColor(42, 130, 218))
darkPalette.setColor(QtGui.QPalette.HighlightedText, QtGui.QColor(180, 180, 180))
darkPalette.setColor(QtGui.QPalette.Link, QtGui.QColor(56, 252, 196))
darkPalette.setColor(QtGui.QPalette.AlternateBase, QtGui.QColor(BOX_BACKGROUND))
darkPalette.setColor(QtGui.QPalette.ToolTipBase, QtGui.QColor(53, 53, 53))
darkPalette.setColor(QtGui.QPalette.ToolTipText, QtGui.QColor(180, 180, 180))
darkPalette.setColor(QtGui.QPalette.LinkVisited, QtGui.QColor(80, 80, 80))
# disabled
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.WindowText,
QtGui.QColor(127, 127, 127))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.Text,
QtGui.QColor(127, 127, 127))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.ButtonText,
QtGui.QColor(127, 127, 127))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.Highlight,
QtGui.QColor(80, 80, 80))
darkPalette.setColor(QtGui.QPalette.Disabled, QtGui.QPalette.HighlightedText,
QtGui.QColor(127, 127, 127))
# active
# darkPalette.setColor(QtGui.QPalette.Highlight, QtGui.QPalette.Button,
# QtGui.QColor(BOX_BACKGROUND))
# darkPalette.setColor(QtGui.QPalette.Active, QtGui.QPalette.ButtonText,
# QtGui.QColor(SUBWAY_COLORS['green']))
app.setPalette(darkPalette)
return app