manuskript/manuskript/ui/style.py

393 lines
11 KiB
Python
Raw Normal View History

#!/usr/bin/env python
# --!-- coding: utf8 --!--
# default window color (linux):
2016-04-12 01:14:24 +12:00
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QColor, QPalette
from PyQt5.QtWidgets import qApp
2016-04-12 01:14:24 +12:00
from manuskript import settings
2017-11-15 02:48:28 +13:00
from manuskript import functions as F
2016-04-12 01:14:24 +12:00
# Loading palette colors.
# Manuskript as to restart to reload
p = qApp.palette()
2016-04-12 09:54:47 +12:00
# window = "#d6d2d0" #"#eee" / #eff0f1
window = p.color(QPalette.Window).name() # General background
windowText = p.color(QPalette.WindowText).name() # General foreground
base = p.color(QPalette.Base).name() # Other background
2017-11-15 02:48:28 +13:00
alternateBase = p.color(QPalette.AlternateBase).name() # Other background
text = p.color(QPalette.Text).name() # Base Text
brightText = p.color(QPalette.BrightText).name() # Contrast Text
2017-11-14 23:23:18 +13:00
button = p.color(QPalette.Button).name() # Button background
buttonText = p.color(QPalette.ButtonText).name() # Button Text
highlight = p.color(QPalette.Highlight).name() # Other background
highlightedText = p.color(QPalette.HighlightedText).name() # Base Text
link = p.color(QPalette.Link).name() # Link
linkVisited = p.color(QPalette.LinkVisited).name() # Link visited
2017-11-14 23:23:18 +13:00
light = p.color(QPalette.Light).name() # Lighter than Button color
midlight = p.color(QPalette.Midlight).name() # Between Button and Light
mid = p.color(QPalette.Mid).name() # Between Button and Dark
dark = p.color(QPalette.Dark).name() # Darker than Button
2017-11-14 23:23:18 +13:00
shadow = p.color(QPalette.Shadow).name() # A very dark color
2017-11-15 02:48:28 +13:00
highlightLight = F.mixColors(highlight, window, .3)
highlightedTextDark = F.mixColors(highlight, text, .3)
highlightedTextLight = F.mixColors(highlight, highlightedText)
midlighter = F.mixColors(mid, window, .4)
textLight = F.mixColors(window, text)
2017-12-01 05:18:53 +13:00
textLighter = F.mixColors(window, text, .85)
2017-11-15 02:48:28 +13:00
#from manuskript.ui import style as S
#QColor(S.highlightedTextDark)
#QColor(S.highlightLight)
2017-11-14 23:23:18 +13:00
def mainWindowSS():
return """
QMenuBar#menubar{{border:none;}}
QToolButton{{
background: none;
border: none;
}}
QPushButton:flat:hover, QToolButton:hover{{
2017-11-15 02:48:28 +13:00
border: 1px solid {borderHover};
border-radius: 3px;
2017-11-15 02:48:28 +13:00
background: {backgroundHover};
}}
""".format(
2017-11-15 02:48:28 +13:00
backgroundHover=highlightLight,
borderHover=mid
)
def styleMainWindow(mw):
mw.setStyleSheet(mainWindowSS())
mw.lstTabs.verticalScrollBar().setStyleSheet(simpleScrollBarV())
# Custom palette?
2017-11-15 02:48:28 +13:00
#qApp.setPalette(appPalette())
mw.treeRedacOutline.setStyleSheet("""
QTreeView{
background: transparent;
margin-top: 30px;
2017-11-15 02:48:28 +13:00
}""" + simpleScrollBarV())
mw.lstTabs.setStyleSheet("""
QListView {{
show-decoration-selected: 0;
outline: none;
background-color: transparent;
}}
QListView::item:selected {{
background: {highlight};
color: {textSelected}
}}
QListView::item:hover {{
background: {hover};
}}
""".format(
hover=highlight,
highlight=highlightLight,
textSelected=text,
))
def appPalette():
p = qApp.palette()
c = p.color(p.Window)
# p.setColor(p.Window, QColor(window))
# p.setColor(p.Base, c.lighter(115))
# p.setColor(p.Base, QColor("#FFF"))
return p
2016-04-12 01:14:24 +12:00
# dark_palette = QPalette()
# dark_palette.setColor(QPalette.Window, QColor(53, 53, 53))
# dark_palette.setColor(QPalette.WindowText, Qt.white)
# dark_palette.setColor(QPalette.Base, QColor(25, 25, 25))
# dark_palette.setColor(QPalette.AlternateBase, QColor(53, 53, 53))
# dark_palette.setColor(QPalette.ToolTipBase, Qt.white)
# dark_palette.setColor(QPalette.ToolTipText, Qt.white)
# dark_palette.setColor(QPalette.Text, Qt.white)
# dark_palette.setColor(QPalette.Button, QColor(53, 53, 53))
# dark_palette.setColor(QPalette.ButtonText, Qt.white)
# dark_palette.setColor(QPalette.BrightText, Qt.red)
# dark_palette.setColor(QPalette.Link, QColor(42, 130, 218))
# dark_palette.setColor(QPalette.Highlight, QColor(42, 130, 218))
# dark_palette.setColor(QPalette.HighlightedText, Qt.black)
# qApp.setStyleSheet("QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }")
#
# return dark_palette
def collapsibleGroupBoxButton():
s1 = """
2017-11-15 02:48:28 +13:00
QPushButton{{
background-color: #BBB;
border: none;
padding: 2px;
2017-11-15 02:48:28 +13:00
}}
QPushButton:checked, QPushButton:hover{{
font-style:italic;
2017-11-15 02:48:28 +13:00
background-color:{bg};
}}""".format(bg=highlightLight)
s2 = """
QPushButton{{
background-color: transparent;
border: none;
2017-11-15 02:48:28 +13:00
border-top: 1px solid {border};
padding: 4px 0px;
font-weight: bold;
}}
QPushButton:hover{{
2017-11-15 02:48:28 +13:00
background-color:{hover};
}}
""".format(
2017-11-15 02:48:28 +13:00
hover=highlightLight,
border=mid,
)
return s2
def mainEditorTabSS():
2017-11-14 23:23:18 +13:00
if not settings.textEditor["backgroundTransparent"]:
SS = """
QTabWidget::pane{{
2017-12-01 05:18:53 +13:00
margin-top: -{bw}px;
border: {bw}px solid {borderColor};
2017-11-14 23:23:18 +13:00
}}
QTabWidget::tab-bar{{
left:50px;
}}
QTabBar{{
2017-12-01 05:18:53 +13:00
background: {bgColor};
2017-11-14 23:23:18 +13:00
border-radius: 0;
border: 0px;
}}
QTabBar::tab{{
padding: 2px 9px;
2017-12-01 05:18:53 +13:00
border: {bw}px solid {borderColor};
2017-11-14 23:23:18 +13:00
border-bottom: 0px;
}}
QTabBar::tab:selected{{
2017-12-01 05:18:53 +13:00
border: {bw}px solid {borderColor};
background: {bgColorSelected};
2017-11-14 23:23:18 +13:00
border-bottom: 0px;
color: {foreground};
}}
QTabBar::tab:!selected:hover{{
background:{highlight};
color: {highlightedText};
}}
""".format(
2017-12-01 05:18:53 +13:00
bgColor=textLighter,
bgColorSelected=settings.textEditor["background"],
2017-11-14 23:23:18 +13:00
foreground=settings.textEditor["fontColor"],
borderColor=mid,
highlight=highlight,
highlightedText=highlightedText,
2017-12-01 05:18:53 +13:00
bw=0,
2017-11-14 23:23:18 +13:00
)
else:
# Transparent text view
SS = """
QTabWidget::pane{{
2017-12-01 05:18:53 +13:00
margin-top: -{bw}px;
2017-11-14 23:23:18 +13:00
border: none;
}}
QTabWidget::tab-bar{{
left:50px;
}}
QTabBar{{
2017-12-01 05:18:53 +13:00
background: {bgColor};
2017-11-14 23:23:18 +13:00
border: 0px;
}}
QTabBar::tab{{
padding: 2px 9px;
2017-12-01 05:18:53 +13:00
border: {bw}px solid {borderColor};
2017-11-14 23:23:18 +13:00
}}
QTabBar::tab:selected{{
2017-12-01 05:18:53 +13:00
border: {bw}px solid {borderColor};
2017-11-14 23:23:18 +13:00
background: {highlight};
2017-11-15 02:48:28 +13:00
color: {highlightedText};
2017-11-14 23:23:18 +13:00
}}
QTabBar::tab:!selected:hover{{
background:{highlight};
color: {highlightedText};
}}
""".format(
2017-12-01 05:18:53 +13:00
bgColor=textLighter,
highlight=highlightLight,
highlightedText=text,
2017-11-14 23:23:18 +13:00
text=text,
borderColor=mid,
2017-12-01 05:18:53 +13:00
bw=0,
2017-11-14 23:23:18 +13:00
)
# Add scrollbar
2017-11-15 02:48:28 +13:00
SS += simpleScrollBarV(handle=mid, width=10)
2017-11-14 23:23:18 +13:00
return SS
def toolBarSS():
return """
2017-11-15 02:48:28 +13:00
QToolBar{{
background:transparent;
2017-12-01 05:18:53 +13:00
border:none;
spacing: 0px;
2017-12-01 05:18:53 +13:00
margin-top:40px;
2017-11-15 02:48:28 +13:00
}}
QToolBar:separator{{
border: none;
2017-11-15 02:48:28 +13:00
}}
""".format(
border=midlighter,
)
def verticalToolButtonSS():
return """
QToolButton{{
2017-12-01 05:18:53 +13:00
border: 0;
border-radius: 0px;
background: transparent;
margin: 0px;
padding: 4px 8px;
}}
QToolButton:checked{{
border: 0px solid {borderColor};
background: {bgChecked};
}}
QToolButton:hover{{
border: 0px solid {borderColor};
background: {bgHover};
}}
""".format(
2017-11-15 02:48:28 +13:00
borderColor=mid,
2017-12-01 05:18:53 +13:00
bgChecked=textLighter,
2017-11-15 02:48:28 +13:00
bgHover=highlightLight,
)
def dockSS():
2017-11-15 02:48:28 +13:00
return """
2016-04-12 09:54:47 +12:00
QDockWidget::title {{
text-align: left; /* align the text to the left */
2017-11-15 02:48:28 +13:00
background: {header};
2016-04-12 09:54:47 +12:00
padding: 5px;
}}
QDockWidget::close-button, QDockWidget::float-button {{
2017-11-15 02:48:28 +13:00
background: {header};
2016-04-12 09:54:47 +12:00
}}
""".format(
2017-11-15 02:48:28 +13:00
header=highlightLight,
button=button
2016-04-12 09:54:47 +12:00
)
def searchResultSS():
return """
QListWidget{{
background: {window};
}}
""".format(
window=window
)
def lineEditSS():
# return "border-radius: 6px;"
return """QLineEdit{{
border: none;
2017-11-15 02:48:28 +13:00
border-bottom: 1px solid {line};
2016-04-12 09:54:47 +12:00
background:{window};
}}
QLineEdit:focus{{
2017-11-15 02:48:28 +13:00
border-bottom: 1px solid {highlight};
2016-04-12 09:54:47 +12:00
}}
""".format(window=window,
2017-11-15 02:48:28 +13:00
line=mid,
highlight=highlight)
2016-04-12 09:54:47 +12:00
def transparentSS():
return """
QTextEdit{
background: transparent;
border:none;
}"""
2017-11-15 02:48:28 +13:00
def simpleScrollBarV(handle=None, width=8):
# system default is (i think): mid background, dark handle
default = midlighter
handle = handle or default
return """
2017-11-15 02:48:28 +13:00
QScrollBar:vertical {{
border: none;
2017-11-15 02:48:28 +13:00
background: {background};
width: {width}px;
}}
QScrollBar::handle {{
background: {handle};
}}
QScrollBar::add-line:vertical {{
width:0;
height: 0;
border: none;
background: none;
2017-11-15 02:48:28 +13:00
}}
QScrollBar::sub-line:vertical {{
width:0;
height: 0;
border: none;
background: none;
2017-11-15 02:48:28 +13:00
}}""".format(
background="transparent",
handle=handle,
width=width)
def toolBoxSS():
return """
QToolBox::tab{{
background-color: {background};
padding: 2px;
border: none;
}}
QToolBox::tab:selected, QToolBox::tab:hover{{
background-color:{backgroundHover};
color: {colorHover};
}}""".format(
background=highlightLight,
backgroundHover=highlight,
colorHover=highlightedText,
)
def titleLabelSS():
return """
QLabel{{
background-color:{bg};
border:none;
padding:10px;
color:{text};
font-size:16px;
font-weight:bold;
text-align:center;
}}""".format(
bg=highlightLight,
text=highlightedTextDark,
)