Fix user-stylesheet setting with an empty value.
This commit is contained in:
parent
8b9f323f41
commit
56d844aff8
@ -29,13 +29,12 @@ Module attributes:
|
|||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
from PyQt5.QtWebKit import QWebSettings
|
from PyQt5.QtWebKit import QWebSettings
|
||||||
from PyQt5.QtCore import QStandardPaths
|
from PyQt5.QtCore import QStandardPaths, QUrl
|
||||||
|
|
||||||
from qutebrowser.config import config
|
from qutebrowser.config import config
|
||||||
from qutebrowser.utils import usertypes, standarddir, objreg
|
from qutebrowser.utils import usertypes, standarddir, objreg
|
||||||
|
|
||||||
MapType = usertypes.enum('MapType', ['attribute', 'setter', 'setter_none',
|
MapType = usertypes.enum('MapType', ['attribute', 'setter', 'static_setter'])
|
||||||
'static_setter'])
|
|
||||||
|
|
||||||
|
|
||||||
MAPPINGS = {
|
MAPPINGS = {
|
||||||
@ -71,23 +70,29 @@ MAPPINGS = {
|
|||||||
},
|
},
|
||||||
'fonts': {
|
'fonts': {
|
||||||
'web-family-standard':
|
'web-family-standard':
|
||||||
(MapType.setter_none, lambda qws, v:
|
(MapType.setter, lambda qws, v:
|
||||||
qws.setFontFamily(QWebSettings.StandardFont, v)),
|
qws.setFontFamily(QWebSettings.StandardFont, v),
|
||||||
|
""),
|
||||||
'web-family-fixed':
|
'web-family-fixed':
|
||||||
(MapType.setter_none, lambda qws, v:
|
(MapType.setter, lambda qws, v:
|
||||||
qws.setFontFamily(QWebSettings.FixedFont, v)),
|
qws.setFontFamily(QWebSettings.FixedFont, v),
|
||||||
|
""),
|
||||||
'web-family-serif':
|
'web-family-serif':
|
||||||
(MapType.setter_none, lambda qws, v:
|
(MapType.setter, lambda qws, v:
|
||||||
qws.setFontFamily(QWebSettings.SerifFont, v)),
|
qws.setFontFamily(QWebSettings.SerifFont, v),
|
||||||
|
""),
|
||||||
'web-family-sans-serif':
|
'web-family-sans-serif':
|
||||||
(MapType.setter_none, lambda qws, v:
|
(MapType.setter, lambda qws, v:
|
||||||
qws.setFontFamily(QWebSettings.SansSerifFont, v)),
|
qws.setFontFamily(QWebSettings.SansSerifFont, v),
|
||||||
|
""),
|
||||||
'web-family-cursive':
|
'web-family-cursive':
|
||||||
(MapType.setter_none, lambda qws, v:
|
(MapType.setter, lambda qws, v:
|
||||||
qws.setFontFamily(QWebSettings.CursiveFont, v)),
|
qws.setFontFamily(QWebSettings.CursiveFont, v),
|
||||||
|
""),
|
||||||
'web-family-fantasy':
|
'web-family-fantasy':
|
||||||
(MapType.setter_none, lambda qws, v:
|
(MapType.setter, lambda qws, v:
|
||||||
qws.setFontFamily(QWebSettings.FantasyFont, v)),
|
qws.setFontFamily(QWebSettings.FantasyFont, v),
|
||||||
|
""),
|
||||||
'web-size-minimum':
|
'web-size-minimum':
|
||||||
(MapType.setter, lambda qws, v:
|
(MapType.setter, lambda qws, v:
|
||||||
qws.setFontSize(QWebSettings.MinimumFontSize, v)),
|
qws.setFontSize(QWebSettings.MinimumFontSize, v)),
|
||||||
@ -107,9 +112,12 @@ MAPPINGS = {
|
|||||||
'frame-flattening':
|
'frame-flattening':
|
||||||
(MapType.attribute, QWebSettings.FrameFlatteningEnabled),
|
(MapType.attribute, QWebSettings.FrameFlatteningEnabled),
|
||||||
'user-stylesheet':
|
'user-stylesheet':
|
||||||
(MapType.setter_none, lambda qws, v: qws.setUserStyleSheetUrl(v)),
|
(MapType.setter, lambda qws, v:
|
||||||
|
qws.setUserStyleSheetUrl(v),
|
||||||
|
QUrl()),
|
||||||
'css-media-type':
|
'css-media-type':
|
||||||
(MapType.setter, lambda qws, v: qws.setCSSMediaType(v)),
|
(MapType.setter, lambda qws, v:
|
||||||
|
qws.setCSSMediaType(v)),
|
||||||
#'accelerated-compositing':
|
#'accelerated-compositing':
|
||||||
# (MapType.attribute, QWebSettings.AcceleratedCompositingEnabled),
|
# (MapType.attribute, QWebSettings.AcceleratedCompositingEnabled),
|
||||||
#'tiled-backing-store':
|
#'tiled-backing-store':
|
||||||
@ -148,34 +156,39 @@ MAPPINGS = {
|
|||||||
'site-specific-quirks':
|
'site-specific-quirks':
|
||||||
(MapType.attribute, QWebSettings.SiteSpecificQuirksEnabled),
|
(MapType.attribute, QWebSettings.SiteSpecificQuirksEnabled),
|
||||||
'default-encoding':
|
'default-encoding':
|
||||||
(MapType.setter_none, lambda qws, v:
|
(MapType.setter, lambda qws, v: qws.setDefaultTextEncoding(v), ""),
|
||||||
qws.setDefaultTextEncoding(v)),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
settings = None
|
settings = None
|
||||||
|
UNSET = object()
|
||||||
|
|
||||||
|
|
||||||
def _set_setting(typ, arg, value):
|
def _set_setting(typ, arg, default=UNSET, value=UNSET):
|
||||||
"""Set a QWebSettings setting.
|
"""Set a QWebSettings setting.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
typ: The type of the item.
|
typ: The type of the item.
|
||||||
arg: The argument (attribute/handler)
|
arg: The argument (attribute/handler)
|
||||||
|
default: The value to use if the user set an empty string.
|
||||||
value: The value to set.
|
value: The value to set.
|
||||||
"""
|
"""
|
||||||
if not isinstance(typ, MapType):
|
if not isinstance(typ, MapType):
|
||||||
raise TypeError("Type {} is no MapType member!".format(typ))
|
raise TypeError("Type {} is no MapType member!".format(typ))
|
||||||
|
if value is UNSET:
|
||||||
|
raise TypeError("No value given!")
|
||||||
|
if value is None:
|
||||||
|
if default is UNSET:
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
value = default
|
||||||
|
|
||||||
if typ == MapType.attribute:
|
if typ == MapType.attribute:
|
||||||
settings.setAttribute(arg, value)
|
settings.setAttribute(arg, value)
|
||||||
elif typ == MapType.setter_none:
|
elif typ == MapType.setter:
|
||||||
if value is None:
|
|
||||||
value = ""
|
|
||||||
arg(settings, value)
|
arg(settings, value)
|
||||||
elif typ == MapType.setter and value is not None:
|
elif typ == MapType.static_setter:
|
||||||
arg(settings, value)
|
|
||||||
elif typ == MapType.static_setter and value is not None:
|
|
||||||
arg(value)
|
arg(value)
|
||||||
|
|
||||||
|
|
||||||
@ -194,17 +207,17 @@ def init():
|
|||||||
global settings
|
global settings
|
||||||
settings = QWebSettings.globalSettings()
|
settings = QWebSettings.globalSettings()
|
||||||
for sectname, section in MAPPINGS.items():
|
for sectname, section in MAPPINGS.items():
|
||||||
for optname, (typ, arg) in section.items():
|
for optname, mapping in section.items():
|
||||||
value = config.get(sectname, optname)
|
value = config.get(sectname, optname)
|
||||||
_set_setting(typ, arg, value)
|
_set_setting(*mapping, value=value)
|
||||||
objreg.get('config').changed.connect(update_settings)
|
objreg.get('config').changed.connect(update_settings)
|
||||||
|
|
||||||
|
|
||||||
def update_settings(section, option):
|
def update_settings(section, option):
|
||||||
"""Update global settings when qwebsettings changed."""
|
"""Update global settings when qwebsettings changed."""
|
||||||
try:
|
try:
|
||||||
typ, arg = MAPPINGS[section][option]
|
mapping = MAPPINGS[section][option]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return
|
return
|
||||||
value = config.get(section, option)
|
value = config.get(section, option)
|
||||||
_set_setting(typ, arg, value)
|
_set_setting(*mapping, value=value)
|
||||||
|
Loading…
Reference in New Issue
Block a user