Fixes highlighter colors, should work in most themes

This commit is contained in:
Olivier Keshavjee 2017-11-23 18:14:04 +01:00
parent da62b823c7
commit c4d4f61702
4 changed files with 72 additions and 45 deletions

View file

@ -64,15 +64,15 @@ textEditor = {
"misspelled": "#F00",
"lineSpacing": 100,
"tabWidth": 20,
"indent": True,
"indent": False,
"spacingAbove": 5,
"spacingBelow": 5,
"textAlignment": 0, # 0: left, 1: center, 2: right, 3: justify
"cursorWidth": 1,
"cursorNotBlinking": False,
"maxWidth": 0,
"maxWidth": 600,
"marginsLR": 0,
"marginsTB": 0,
"marginsTB": 20,
"backgroundTransparent": False,
}
@ -185,6 +185,8 @@ def load(string, fromString=False, protocol=None):
#print("Loading:")
#pp.pprint(allSettings)
# FIXME: use dict.update(dict) to update settings in newer versions.
if "viewSettings" in allSettings:
global viewSettings
viewSettings = allSettings["viewSettings"]
@ -267,9 +269,9 @@ def load(string, fromString=False, protocol=None):
"textAlignment": 0, # Added in 0.5.0
"cursorWidth": 1,
"cursorNotBlinking": False, # Added in 0.6.0
"maxWidth": 0,
"maxWidth": 600,
"marginsLR": 0,
"marginsTB": 0,
"marginsTB": 20,
"backgroundTransparent": False, # Added in 0.6.0
}

View file

@ -174,18 +174,21 @@ class MarkdownHighlighter(BasicHighlighter):
def defaultTheme(self):
markup = self.markupColor
dark = qApp.palette().color(QPalette.Dark)
if dark == Qt.black:
dark = QColor(Qt.gray)
darker = dark.darker(150)
# Text background
# Colors
background = self.backgroundColor
text = self.defaultTextColor
lightBackground = F.mixColors(background, text, .4)
veryLightBackground = F.mixColors(background, text, .7)
light = F.mixColors(text, background, .75)
markup = F.mixColors(text, background, .5)
veryLight = F.mixColors(text, background, .25)
highlightedText = QColor(S.highlightedText)
highlightedTextDark = QColor(S.highlightedTextDark)
highlightedTextLight = QColor(S.highlightedTextLight)
highlight = QColor(S.highlight)
listToken = F.mixColors(highlight, background, .4)
link = self.linkColor
linkVisited = QColor(S.linkVisited)
theme = {
"markup": markup}
@ -208,49 +211,66 @@ class MarkdownHighlighter(BasicHighlighter):
#"super":True,
#"sub":True
# color = QColor(S.highlightedTextDark)
titleColor = highlight
titleMarkupColor = F.mixColors(titleColor, background, .3)
for i in MTT.TITLES:
theme[i] = {
"formatMarkup":True,
"bold": True,
"monospace": True,
# "monospace": True,
"markupColor": titleMarkupColor
}
color = QColor(S.highlightedTextDark)
theme[MTT.TokenAtxHeading1]["color"] = color
theme[MTT.TokenAtxHeading2]["color"] = F.mixColors(color, background, .9)
theme[MTT.TokenAtxHeading3]["color"] = F.mixColors(color, background, .8)
theme[MTT.TokenAtxHeading4]["color"] = F.mixColors(color, background, .7)
theme[MTT.TokenAtxHeading5]["color"] = F.mixColors(color, background, .6)
theme[MTT.TokenAtxHeading6]["color"] = F.mixColors(color, background, .5)
theme[MTT.TokenAtxHeading1]["color"] = titleColor
theme[MTT.TokenAtxHeading2]["color"] = F.mixColors(titleColor,
background, .9)
theme[MTT.TokenAtxHeading3]["color"] = F.mixColors(titleColor,
background, .8)
theme[MTT.TokenAtxHeading4]["color"] = F.mixColors(titleColor,
background, .7)
theme[MTT.TokenAtxHeading5]["color"] = F.mixColors(titleColor,
background, .6)
theme[MTT.TokenAtxHeading6]["color"] = F.mixColors(titleColor,
background, .5)
theme[MTT.TokenSetextHeading1Line1]["color"] = titleColor
theme[MTT.TokenSetextHeading2Line1]["color"] = F.mixColors(titleColor,
background,
.9)
for i in [MTT.TokenSetextHeading1Line1, MTT.TokenSetextHeading2Line1]:
theme[i]["monospace"] = True
for i in [MTT.TokenSetextHeading1Line2, MTT.TokenSetextHeading2Line2]:
theme[i] = {
"color": markup,
"color": titleMarkupColor,
"monospace":True}
# Beautifiers
theme[MTT.TokenEmphasis] = {
"italic":True,}
"italic":True}
theme[MTT.TokenStrong] = {
"bold":True}
theme[MTT.TokenStrikethrough] = {
"strike":True}
theme[MTT.TokenVerbatim] = {
"monospace":True,
"background": veryLightBackground,
"background": veryLight,
"formatMarkup": True,
"markupColor": markup}
"markupColor": markup,
"deltaSize": -1}
theme[MTT.TokenSuperScript] = {
"super":True,
"formatMarkup":True}
theme[MTT.TokenSubScript] = {
"sub":True,
"formatMarkup":True}
theme[MTT.TokenHtmlTag] = {
"color":Qt.red}
theme[MTT.TokenHtmlEntity] = {
"color":Qt.red}
"color": linkVisited}
theme[MTT.TokenHtmlEntity] = { #  
"color": linkVisited}
theme[MTT.TokenAutomaticLink] = {
"color": link}
theme[MTT.TokenInlineLink] = {
@ -260,15 +280,15 @@ class MarkdownHighlighter(BasicHighlighter):
theme[MTT.TokenReferenceDefinition] = {
"color": link}
theme[MTT.TokenImage] = {
"color": Qt.green}
"color": highlightedTextDark}
theme[MTT.TokenHtmlComment] = {
"color": dark}
"color": markup}
theme[MTT.TokenNumberedList] = {
"markupColor": QColor(Qt.red).lighter(),
"markupColor": listToken,
"markupBold": True,
"markupMonospace": True,}
theme[MTT.TokenBulletPointList] = {
"markupColor": QColor(Qt.red).lighter(),
"markupColor": listToken,
"markupBold": True,
"markupMonospace": True,}
theme[MTT.TokenHorizontalRule] = {
@ -279,13 +299,15 @@ class MarkdownHighlighter(BasicHighlighter):
theme[MTT.TokenLineBreak] = {
"background": markup}
theme[MTT.TokenBlockquote] = {
"color": darker,
"markupColor": lightBackground,
"markupBackground": lightBackground}
"color": light,
"markupColor": veryLight,
"markupBackground": veryLight}
theme[MTT.TokenCodeBlock] = {
"color": darker,
"markupBackground": veryLightBackground,
"monospace":True}
"color": light,
"markupBackground": veryLight,
"formatMarkup": True,
"monospace":True,
"deltaSize":-1}
theme[MTT.TokenGithubCodeFence] = {
"color": markup}
theme[MTT.TokenPandocCodeFence] = {
@ -294,7 +316,7 @@ class MarkdownHighlighter(BasicHighlighter):
"color": markup}
theme[MTT.TokenMention] = {} # FIXME
theme[MTT.TokenTableHeader] = {
"color": darker, "monospace":True}
"color": light, "monospace":True}
theme[MTT.TokenTableDivider] = {
"color": markup, "monospace":True}
theme[MTT.TokenTablePipe] = {
@ -362,9 +384,11 @@ class MarkdownHighlighter(BasicHighlighter):
if theme.get("color"):
format.setForeground(theme["color"])
if theme.get("deltaSize"):
f = format.font()
f.setPointSize(format.font().pointSize() + theme["deltaSize"])
format.setFont(f)
size = self.editor._defaultFontSize + theme["deltaSize"]
if size >= 0:
f = format.font()
f.setPointSize(size)
format.setFont(f)
if theme.get("background"):
format.setBackground(theme["background"])
if theme.get("monospace"):

View file

@ -29,8 +29,8 @@ linkVisited = p.color(QPalette.LinkVisited).name() # Link visited
light = p.color(QPalette.Light).name() # Lighter than Button color
midlight = p.color(QPalette.Midlight).name() # Between Button and Light
dark = p.color(QPalette.Dark).name() # Darker than Button
mid = p.color(QPalette.Mid).name() # Between Button and Dark
dark = p.color(QPalette.Dark).name() # Darker than Button
shadow = p.color(QPalette.Shadow).name() # A very dark color
highlightLight = F.mixColors(highlight, window, .3)

View file

@ -230,6 +230,7 @@ class textEditView(QTextEdit):
maxWidth = "max-width: {}px;".format(opt["maxWidth"]) if opt["maxWidth"] else "",
)
)
self._defaultFontSize = f.pointSize()
# We set the parent background to the editor's background in case
# there are margins. We check that the parent class is a QWidget because