QtWebEngine: Basic settings support
This commit is contained in:
parent
2ee95df9e7
commit
cae7eead6f
@ -367,6 +367,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[false]+
|
Default: +pass:[false]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[general-developer-extras]]
|
[[general-developer-extras]]
|
||||||
=== developer-extras
|
=== developer-extras
|
||||||
Enable extra tools for Web developers.
|
Enable extra tools for Web developers.
|
||||||
@ -380,6 +382,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[false]+
|
Default: +pass:[false]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[general-print-element-backgrounds]]
|
[[general-print-element-backgrounds]]
|
||||||
=== print-element-backgrounds
|
=== print-element-backgrounds
|
||||||
Whether the background color and images are also drawn when the page is printed.
|
Whether the background color and images are also drawn when the page is printed.
|
||||||
@ -391,6 +395,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[general-xss-auditing]]
|
[[general-xss-auditing]]
|
||||||
=== xss-auditing
|
=== xss-auditing
|
||||||
Whether load requests should be monitored for cross-site scripting attempts.
|
Whether load requests should be monitored for cross-site scripting attempts.
|
||||||
@ -415,6 +421,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[general-default-encoding]]
|
[[general-default-encoding]]
|
||||||
=== default-encoding
|
=== default-encoding
|
||||||
Default encoding to use for websites.
|
Default encoding to use for websites.
|
||||||
@ -449,6 +457,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[debug]+
|
Default: +pass:[debug]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[general-save-session]]
|
[[general-save-session]]
|
||||||
=== save-session
|
=== save-session
|
||||||
Whether to always save the open pages.
|
Whether to always save the open pages.
|
||||||
@ -557,6 +567,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[false]+
|
Default: +pass:[false]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[ui-frame-flattening]]
|
[[ui-frame-flattening]]
|
||||||
=== frame-flattening
|
=== frame-flattening
|
||||||
Whether to expand each subframe to its contents.
|
Whether to expand each subframe to its contents.
|
||||||
@ -570,18 +582,24 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[false]+
|
Default: +pass:[false]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[ui-user-stylesheet]]
|
[[ui-user-stylesheet]]
|
||||||
=== user-stylesheet
|
=== user-stylesheet
|
||||||
User stylesheet to use (absolute filename, filename relative to the config directory or CSS string). Will expand environment variables.
|
User stylesheet to use (absolute filename, filename relative to the config directory or CSS string). Will expand environment variables.
|
||||||
|
|
||||||
Default: +pass:[::-webkit-scrollbar { width: 0px; height: 0px; }]+
|
Default: +pass:[::-webkit-scrollbar { width: 0px; height: 0px; }]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[ui-css-media-type]]
|
[[ui-css-media-type]]
|
||||||
=== css-media-type
|
=== css-media-type
|
||||||
Set the CSS media type.
|
Set the CSS media type.
|
||||||
|
|
||||||
Default: empty
|
Default: empty
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[ui-smooth-scrolling]]
|
[[ui-smooth-scrolling]]
|
||||||
=== smooth-scrolling
|
=== smooth-scrolling
|
||||||
Whether to enable smooth scrolling for webpages.
|
Whether to enable smooth scrolling for webpages.
|
||||||
@ -685,12 +703,16 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-accept-language]]
|
[[network-accept-language]]
|
||||||
=== accept-language
|
=== accept-language
|
||||||
Value to send in the `accept-language` header.
|
Value to send in the `accept-language` header.
|
||||||
|
|
||||||
Default: +pass:[en-US,en]+
|
Default: +pass:[en-US,en]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-referer-header]]
|
[[network-referer-header]]
|
||||||
=== referer-header
|
=== referer-header
|
||||||
Send the Referer header
|
Send the Referer header
|
||||||
@ -703,12 +725,16 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[same-domain]+
|
Default: +pass:[same-domain]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-user-agent]]
|
[[network-user-agent]]
|
||||||
=== user-agent
|
=== user-agent
|
||||||
User agent to send. Empty to send the default.
|
User agent to send. Empty to send the default.
|
||||||
|
|
||||||
Default: empty
|
Default: empty
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-proxy]]
|
[[network-proxy]]
|
||||||
=== proxy
|
=== proxy
|
||||||
The proxy to use.
|
The proxy to use.
|
||||||
@ -722,6 +748,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[system]+
|
Default: +pass:[system]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-proxy-dns-requests]]
|
[[network-proxy-dns-requests]]
|
||||||
=== proxy-dns-requests
|
=== proxy-dns-requests
|
||||||
Whether to send DNS requests over the configured proxy.
|
Whether to send DNS requests over the configured proxy.
|
||||||
@ -733,6 +761,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-ssl-strict]]
|
[[network-ssl-strict]]
|
||||||
=== ssl-strict
|
=== ssl-strict
|
||||||
Whether to validate SSL handshakes.
|
Whether to validate SSL handshakes.
|
||||||
@ -745,6 +775,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[ask]+
|
Default: +pass:[ask]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-dns-prefetch]]
|
[[network-dns-prefetch]]
|
||||||
=== dns-prefetch
|
=== dns-prefetch
|
||||||
Whether to try to pre-fetch DNS entries to speed up browsing.
|
Whether to try to pre-fetch DNS entries to speed up browsing.
|
||||||
@ -756,12 +788,16 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[network-custom-headers]]
|
[[network-custom-headers]]
|
||||||
=== custom-headers
|
=== custom-headers
|
||||||
Set custom headers for qutebrowser HTTP requests.
|
Set custom headers for qutebrowser HTTP requests.
|
||||||
|
|
||||||
Default: empty
|
Default: empty
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
== completion
|
== completion
|
||||||
Options related to completion and command history.
|
Options related to completion and command history.
|
||||||
|
|
||||||
@ -1224,6 +1260,8 @@ For more information about the feature, please refer to: http://webkit.org/blog/
|
|||||||
|
|
||||||
Default: empty
|
Default: empty
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[storage-object-cache-capacities]]
|
[[storage-object-cache-capacities]]
|
||||||
=== object-cache-capacities
|
=== object-cache-capacities
|
||||||
The capacities for the global memory cache for dead objects such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, cacheMaxDead, totalCapacity.
|
The capacities for the global memory cache for dead objects such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, cacheMaxDead, totalCapacity.
|
||||||
@ -1236,18 +1274,24 @@ _totalCapacity_ specifies the maximum number of bytes that the cache should cons
|
|||||||
|
|
||||||
Default: empty
|
Default: empty
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[storage-offline-storage-default-quota]]
|
[[storage-offline-storage-default-quota]]
|
||||||
=== offline-storage-default-quota
|
=== offline-storage-default-quota
|
||||||
Default quota for new offline storage databases.
|
Default quota for new offline storage databases.
|
||||||
|
|
||||||
Default: empty
|
Default: empty
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[storage-offline-web-application-cache-quota]]
|
[[storage-offline-web-application-cache-quota]]
|
||||||
=== offline-web-application-cache-quota
|
=== offline-web-application-cache-quota
|
||||||
Quota for the offline web application cache.
|
Quota for the offline web application cache.
|
||||||
|
|
||||||
Default: empty
|
Default: empty
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[storage-offline-storage-database]]
|
[[storage-offline-storage-database]]
|
||||||
=== offline-storage-database
|
=== offline-storage-database
|
||||||
Whether support for the HTML 5 offline storage feature is enabled.
|
Whether support for the HTML 5 offline storage feature is enabled.
|
||||||
@ -1259,6 +1303,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[storage-offline-web-application-storage]]
|
[[storage-offline-web-application-storage]]
|
||||||
=== offline-web-application-storage
|
=== offline-web-application-storage
|
||||||
Whether support for the HTML 5 web application cache feature is enabled.
|
Whether support for the HTML 5 web application cache feature is enabled.
|
||||||
@ -1274,6 +1320,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[storage-local-storage]]
|
[[storage-local-storage]]
|
||||||
=== local-storage
|
=== local-storage
|
||||||
Whether support for the HTML 5 local storage feature is enabled.
|
Whether support for the HTML 5 local storage feature is enabled.
|
||||||
@ -1351,6 +1399,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[content-hyperlink-auditing]]
|
[[content-hyperlink-auditing]]
|
||||||
=== hyperlink-auditing
|
=== hyperlink-auditing
|
||||||
Enable or disable hyperlink auditing (<a ping>).
|
Enable or disable hyperlink auditing (<a ping>).
|
||||||
@ -1408,6 +1458,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[false]+
|
Default: +pass:[false]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[content-javascript-can-access-clipboard]]
|
[[content-javascript-can-access-clipboard]]
|
||||||
=== javascript-can-access-clipboard
|
=== javascript-can-access-clipboard
|
||||||
Whether JavaScript programs can read or write to the clipboard.
|
Whether JavaScript programs can read or write to the clipboard.
|
||||||
@ -1476,6 +1528,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[no-3rdparty]+
|
Default: +pass:[no-3rdparty]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[content-cookies-store]]
|
[[content-cookies-store]]
|
||||||
=== cookies-store
|
=== cookies-store
|
||||||
Whether to store cookies.
|
Whether to store cookies.
|
||||||
@ -1487,6 +1541,8 @@ Valid values:
|
|||||||
|
|
||||||
Default: +pass:[true]+
|
Default: +pass:[true]+
|
||||||
|
|
||||||
|
This setting is only available with the QtWebKit backend.
|
||||||
|
|
||||||
[[content-host-block-lists]]
|
[[content-host-block-lists]]
|
||||||
=== host-block-lists
|
=== host-block-lists
|
||||||
List of URLs of lists which contain hosts to block.
|
List of URLs of lists which contain hosts to block.
|
||||||
@ -1638,7 +1694,7 @@ Valid values:
|
|||||||
* +javascript+: Better but slower
|
* +javascript+: Better but slower
|
||||||
* +python+: Slightly worse but faster
|
* +python+: Slightly worse but faster
|
||||||
|
|
||||||
Default: +pass:[javascript]+
|
Default: +pass:[python]+
|
||||||
|
|
||||||
== searchengines
|
== searchengines
|
||||||
Definitions of search engines which can be used via the address bar.
|
Definitions of search engines which can be used via the address bar.
|
||||||
|
178
qutebrowser/browser/webengine/webenginesettings.py
Normal file
178
qutebrowser/browser/webengine/webenginesettings.py
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et:
|
||||||
|
|
||||||
|
# Copyright 2016 Florian Bruhin (The Compiler) <mail@qutebrowser.org>
|
||||||
|
#
|
||||||
|
# This file is part of qutebrowser.
|
||||||
|
#
|
||||||
|
# qutebrowser is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# qutebrowser is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with qutebrowser. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
"""Bridge from QWebEngineSettings to our own settings.
|
||||||
|
|
||||||
|
Module attributes:
|
||||||
|
ATTRIBUTES: A mapping from internal setting names to QWebEngineSetting enum
|
||||||
|
constants.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
from PyQt5.QtWebEngineWidgets import QWebEngineSettings
|
||||||
|
|
||||||
|
from qutebrowser.config import config, websettings
|
||||||
|
from qutebrowser.utils import standarddir, objreg
|
||||||
|
|
||||||
|
|
||||||
|
class Attribute(websettings.Attribute):
|
||||||
|
|
||||||
|
GLOBAL_SETTINGS = QWebEngineSettings.globalSettings()
|
||||||
|
ENUM_BASE = QWebEngineSettings
|
||||||
|
|
||||||
|
|
||||||
|
class Setter(websettings.Setter):
|
||||||
|
|
||||||
|
GLOBAL_SETTINGS = QWebEngineSettings.globalSettings()
|
||||||
|
|
||||||
|
|
||||||
|
class NullStringSetter(websettings.NullStringSetter):
|
||||||
|
|
||||||
|
GLOBAL_SETTINGS = QWebEngineSettings.globalSettings()
|
||||||
|
|
||||||
|
|
||||||
|
class StaticSetter(websettings.StaticSetter):
|
||||||
|
|
||||||
|
GLOBAL_SETTINGS = QWebEngineSettings.globalSettings()
|
||||||
|
|
||||||
|
|
||||||
|
def update_settings(section, option):
|
||||||
|
"""Update global settings when qwebsettings changed."""
|
||||||
|
websettings.update_mappings(MAPPINGS, section, option)
|
||||||
|
|
||||||
|
|
||||||
|
def init():
|
||||||
|
"""Initialize the global QWebSettings."""
|
||||||
|
# FIXME:qtwebengine set paths in profile
|
||||||
|
websettings.init_mappings(MAPPINGS)
|
||||||
|
objreg.get('config').changed.connect(update_settings)
|
||||||
|
|
||||||
|
|
||||||
|
# Missing QtWebEngine attributes:
|
||||||
|
# - ErrorPageEnabled (should not be exposed, but set)
|
||||||
|
# - FullScreenSupportEnabled
|
||||||
|
# - ScreenCaptureEnabled
|
||||||
|
# - Accelerated2dCanvasEnabled
|
||||||
|
# - AutoLoadIconsForPage
|
||||||
|
# - TouchIconsEnabled
|
||||||
|
#
|
||||||
|
# Missing QtWebEngine fonts:
|
||||||
|
# - FantasyFont
|
||||||
|
# - PictographFont
|
||||||
|
#
|
||||||
|
# TODO settings on profile:
|
||||||
|
# - cachePath
|
||||||
|
# - httpAcceptLanguage
|
||||||
|
# - httpCacheMaximumSize
|
||||||
|
# - httpUserAgent
|
||||||
|
# - persistentCookiesPolicy
|
||||||
|
# - offTheRecord
|
||||||
|
# - persistentStoragePath
|
||||||
|
#
|
||||||
|
# TODO settings elsewhere:
|
||||||
|
# - proxy
|
||||||
|
# - custom headers
|
||||||
|
# - ssl-strict
|
||||||
|
|
||||||
|
MAPPINGS = {
|
||||||
|
'content': {
|
||||||
|
'allow-images':
|
||||||
|
Attribute(QWebEngineSettings.AutoLoadImages),
|
||||||
|
'allow-javascript':
|
||||||
|
Attribute(QWebEngineSettings.JavascriptEnabled),
|
||||||
|
'javascript-can-open-windows':
|
||||||
|
Attribute(QWebEngineSettings.JavascriptCanOpenWindows),
|
||||||
|
'javascript-can-access-clipboard':
|
||||||
|
Attribute(QWebEngineSettings.JavascriptCanAccessClipboard),
|
||||||
|
'allow-plugins':
|
||||||
|
Attribute(QWebEngineSettings.PluginsEnabled),
|
||||||
|
'webgl':
|
||||||
|
Attribute(QWebEngineSettings.WebGLEnabled),
|
||||||
|
'hyperlink-auditing':
|
||||||
|
Attribute(QWebEngineSettings.HyperlinkAuditingEnabled),
|
||||||
|
'local-content-can-access-remote-urls':
|
||||||
|
Attribute(QWebEngineSettings.LocalContentCanAccessRemoteUrls),
|
||||||
|
'local-content-can-access-file-urls':
|
||||||
|
Attribute(QWebEngineSettings.LocalContentCanAccessFileUrls),
|
||||||
|
},
|
||||||
|
'input': {
|
||||||
|
'spatial-navigation':
|
||||||
|
Attribute(QWebEngineSettings.SpatialNavigationEnabled),
|
||||||
|
'links-included-in-focus-chain':
|
||||||
|
Attribute(QWebEngineSettings.LinksIncludedInFocusChain),
|
||||||
|
},
|
||||||
|
'fonts': {
|
||||||
|
'web-family-standard':
|
||||||
|
Setter(getter=QWebEngineSettings.fontFamily,
|
||||||
|
setter=QWebEngineSettings.setFontFamily,
|
||||||
|
args=[QWebEngineSettings.StandardFont]),
|
||||||
|
'web-family-fixed':
|
||||||
|
Setter(getter=QWebEngineSettings.fontFamily,
|
||||||
|
setter=QWebEngineSettings.setFontFamily,
|
||||||
|
args=[QWebEngineSettings.FixedFont]),
|
||||||
|
'web-family-serif':
|
||||||
|
Setter(getter=QWebEngineSettings.fontFamily,
|
||||||
|
setter=QWebEngineSettings.setFontFamily,
|
||||||
|
args=[QWebEngineSettings.SerifFont]),
|
||||||
|
'web-family-sans-serif':
|
||||||
|
Setter(getter=QWebEngineSettings.fontFamily,
|
||||||
|
setter=QWebEngineSettings.setFontFamily,
|
||||||
|
args=[QWebEngineSettings.SansSerifFont]),
|
||||||
|
'web-family-cursive':
|
||||||
|
Setter(getter=QWebEngineSettings.fontFamily,
|
||||||
|
setter=QWebEngineSettings.setFontFamily,
|
||||||
|
args=[QWebEngineSettings.CursiveFont]),
|
||||||
|
'web-family-fantasy':
|
||||||
|
Setter(getter=QWebEngineSettings.fontFamily,
|
||||||
|
setter=QWebEngineSettings.setFontFamily,
|
||||||
|
args=[QWebEngineSettings.FantasyFont]),
|
||||||
|
'web-size-minimum':
|
||||||
|
Setter(getter=QWebEngineSettings.fontSize,
|
||||||
|
setter=QWebEngineSettings.setFontSize,
|
||||||
|
args=[QWebEngineSettings.MinimumFontSize]),
|
||||||
|
'web-size-minimum-logical':
|
||||||
|
Setter(getter=QWebEngineSettings.fontSize,
|
||||||
|
setter=QWebEngineSettings.setFontSize,
|
||||||
|
args=[QWebEngineSettings.MinimumLogicalFontSize]),
|
||||||
|
'web-size-default':
|
||||||
|
Setter(getter=QWebEngineSettings.fontSize,
|
||||||
|
setter=QWebEngineSettings.setFontSize,
|
||||||
|
args=[QWebEngineSettings.DefaultFontSize]),
|
||||||
|
'web-size-default-fixed':
|
||||||
|
Setter(getter=QWebEngineSettings.fontSize,
|
||||||
|
setter=QWebEngineSettings.setFontSize,
|
||||||
|
args=[QWebEngineSettings.DefaultFixedFontSize]),
|
||||||
|
},
|
||||||
|
'ui': {
|
||||||
|
'smooth-scrolling':
|
||||||
|
Attribute(QWebEngineSettings.ScrollAnimatorEnabled),
|
||||||
|
},
|
||||||
|
'storage': {
|
||||||
|
'local-storage':
|
||||||
|
Attribute(QWebEngineSettings.LocalStorageEnabled),
|
||||||
|
},
|
||||||
|
'general': {
|
||||||
|
'xss-auditing':
|
||||||
|
Attribute(QWebEngineSettings.XSSAuditingEnabled),
|
||||||
|
'default-encoding':
|
||||||
|
Setter(getter=QWebEngineSettings.defaultTextEncoding,
|
||||||
|
setter=QWebEngineSettings.setDefaultTextEncoding),
|
||||||
|
}
|
||||||
|
}
|
@ -180,12 +180,7 @@ class Command:
|
|||||||
QWebSettings.JavascriptEnabled):
|
QWebSettings.JavascriptEnabled):
|
||||||
raise cmdexc.PrerequisitesError(
|
raise cmdexc.PrerequisitesError(
|
||||||
"{}: This command needs javascript enabled.".format(self.name))
|
"{}: This command needs javascript enabled.".format(self.name))
|
||||||
|
used_backend = usertypes.arg2backend[objreg.get('args').backend]
|
||||||
backend_mapping = {
|
|
||||||
'webkit': usertypes.Backend.QtWebKit,
|
|
||||||
'webengine': usertypes.Backend.QtWebEngine,
|
|
||||||
}
|
|
||||||
used_backend = backend_mapping[objreg.get('args').backend]
|
|
||||||
if self.backend is not None and used_backend != self.backend:
|
if self.backend is not None and used_backend != self.backend:
|
||||||
raise cmdexc.PrerequisitesError(
|
raise cmdexc.PrerequisitesError(
|
||||||
"{}: Only available with {} "
|
"{}: Only available with {} "
|
||||||
|
@ -771,11 +771,18 @@ class ConfigManager(QObject):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
raise configexc.NoSectionError(sectname)
|
raise configexc.NoSectionError(sectname)
|
||||||
mapping = {key: val.value() for key, val in sect.values.items()}
|
mapping = {key: val.value() for key, val in sect.values.items()}
|
||||||
|
|
||||||
if validate:
|
if validate:
|
||||||
interpolated = self._interpolation.before_get(
|
interpolated = self._interpolation.before_get(
|
||||||
self, sectname, optname, value, mapping)
|
self, sectname, optname, value, mapping)
|
||||||
|
allowed_backends = sect.values[optname].backends
|
||||||
|
used_backend = usertypes.arg2backend[objreg.get('args').backend]
|
||||||
|
if (allowed_backends is not None and
|
||||||
|
used_backend not in allowed_backends):
|
||||||
|
raise configexc.BackendError(used_backend)
|
||||||
else:
|
else:
|
||||||
interpolated = None
|
interpolated = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
sect.setv(layer, optname, value, interpolated)
|
sect.setv(layer, optname, value, interpolated)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
@ -35,6 +35,7 @@ from qutebrowser.config import configtypes as typ
|
|||||||
from qutebrowser.config import sections as sect
|
from qutebrowser.config import sections as sect
|
||||||
from qutebrowser.config.value import SettingValue
|
from qutebrowser.config.value import SettingValue
|
||||||
from qutebrowser.utils.qtutils import MAXVALS
|
from qutebrowser.utils.qtutils import MAXVALS
|
||||||
|
from qutebrowser.utils import usertypes
|
||||||
|
|
||||||
|
|
||||||
FIRST_COMMENT = r"""
|
FIRST_COMMENT = r"""
|
||||||
@ -169,18 +170,21 @@ def data(readonly=False):
|
|||||||
"Encoding to use for editor."),
|
"Encoding to use for editor."),
|
||||||
|
|
||||||
('private-browsing',
|
('private-browsing',
|
||||||
SettingValue(typ.Bool(), 'false'),
|
SettingValue(typ.Bool(), 'false',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Do not record visited pages in the history or store web page "
|
"Do not record visited pages in the history or store web page "
|
||||||
"icons."),
|
"icons."),
|
||||||
|
|
||||||
('developer-extras',
|
('developer-extras',
|
||||||
SettingValue(typ.Bool(), 'false'),
|
SettingValue(typ.Bool(), 'false',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Enable extra tools for Web developers.\n\n"
|
"Enable extra tools for Web developers.\n\n"
|
||||||
"This needs to be enabled for `:inspector` to work and also adds "
|
"This needs to be enabled for `:inspector` to work and also adds "
|
||||||
"an _Inspect_ entry to the context menu."),
|
"an _Inspect_ entry to the context menu."),
|
||||||
|
|
||||||
('print-element-backgrounds',
|
('print-element-backgrounds',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether the background color and images are also drawn when the "
|
"Whether the background color and images are also drawn when the "
|
||||||
"page is printed."),
|
"page is printed."),
|
||||||
|
|
||||||
@ -193,7 +197,8 @@ def data(readonly=False):
|
|||||||
"have an impact on performance."),
|
"have an impact on performance."),
|
||||||
|
|
||||||
('site-specific-quirks',
|
('site-specific-quirks',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Enable workarounds for broken sites."),
|
"Enable workarounds for broken sites."),
|
||||||
|
|
||||||
('default-encoding',
|
('default-encoding',
|
||||||
@ -229,7 +234,7 @@ def data(readonly=False):
|
|||||||
('none', "Don't log messages."),
|
('none', "Don't log messages."),
|
||||||
('debug', "Log messages with debug level."),
|
('debug', "Log messages with debug level."),
|
||||||
('info', "Log messages with info level.")
|
('info', "Log messages with info level.")
|
||||||
)), 'debug'),
|
)), 'debug', backends=[usertypes.Backend.QtWebKit]),
|
||||||
"How to log javascript console messages."),
|
"How to log javascript console messages."),
|
||||||
|
|
||||||
('save-session',
|
('save-session',
|
||||||
@ -284,25 +289,29 @@ def data(readonly=False):
|
|||||||
"Whether to confirm quitting the application."),
|
"Whether to confirm quitting the application."),
|
||||||
|
|
||||||
('zoom-text-only',
|
('zoom-text-only',
|
||||||
SettingValue(typ.Bool(), 'false'),
|
SettingValue(typ.Bool(), 'false',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether the zoom factor on a frame applies only to the text or "
|
"Whether the zoom factor on a frame applies only to the text or "
|
||||||
"to all content."),
|
"to all content."),
|
||||||
|
|
||||||
('frame-flattening',
|
('frame-flattening',
|
||||||
SettingValue(typ.Bool(), 'false'),
|
SettingValue(typ.Bool(), 'false',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether to expand each subframe to its contents.\n\n"
|
"Whether to expand each subframe to its contents.\n\n"
|
||||||
"This will flatten all the frames to become one scrollable "
|
"This will flatten all the frames to become one scrollable "
|
||||||
"page."),
|
"page."),
|
||||||
|
|
||||||
('user-stylesheet',
|
('user-stylesheet',
|
||||||
SettingValue(typ.UserStyleSheet(none_ok=True),
|
SettingValue(typ.UserStyleSheet(none_ok=True),
|
||||||
'::-webkit-scrollbar { width: 0px; height: 0px; }'),
|
'::-webkit-scrollbar { width: 0px; height: 0px; }',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"User stylesheet to use (absolute filename, filename relative to "
|
"User stylesheet to use (absolute filename, filename relative to "
|
||||||
"the config directory or CSS string). Will expand environment "
|
"the config directory or CSS string). Will expand environment "
|
||||||
"variables."),
|
"variables."),
|
||||||
|
|
||||||
('css-media-type',
|
('css-media-type',
|
||||||
SettingValue(typ.String(none_ok=True), ''),
|
SettingValue(typ.String(none_ok=True), '',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Set the CSS media type."),
|
"Set the CSS media type."),
|
||||||
|
|
||||||
('smooth-scrolling',
|
('smooth-scrolling',
|
||||||
@ -362,11 +371,13 @@ def data(readonly=False):
|
|||||||
|
|
||||||
('network', sect.KeyValue(
|
('network', sect.KeyValue(
|
||||||
('do-not-track',
|
('do-not-track',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Value to send in the `DNT` header."),
|
"Value to send in the `DNT` header."),
|
||||||
|
|
||||||
('accept-language',
|
('accept-language',
|
||||||
SettingValue(typ.String(none_ok=True), 'en-US,en'),
|
SettingValue(typ.String(none_ok=True), 'en-US,en',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Value to send in the `accept-language` header."),
|
"Value to send in the `accept-language` header."),
|
||||||
|
|
||||||
('referer-header',
|
('referer-header',
|
||||||
@ -378,33 +389,39 @@ def data(readonly=False):
|
|||||||
('same-domain', "Only send for the same domain."
|
('same-domain', "Only send for the same domain."
|
||||||
" This will still protect your privacy, but"
|
" This will still protect your privacy, but"
|
||||||
" shouldn't break any sites.")
|
" shouldn't break any sites.")
|
||||||
)), 'same-domain'),
|
)), 'same-domain', backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Send the Referer header"),
|
"Send the Referer header"),
|
||||||
|
|
||||||
('user-agent',
|
('user-agent',
|
||||||
SettingValue(typ.UserAgent(none_ok=True), ''),
|
SettingValue(typ.UserAgent(none_ok=True), '',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"User agent to send. Empty to send the default."),
|
"User agent to send. Empty to send the default."),
|
||||||
|
|
||||||
('proxy',
|
('proxy',
|
||||||
SettingValue(typ.Proxy(), 'system'),
|
SettingValue(typ.Proxy(), 'system',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"The proxy to use.\n\n"
|
"The proxy to use.\n\n"
|
||||||
"In addition to the listed values, you can use a `socks://...` "
|
"In addition to the listed values, you can use a `socks://...` "
|
||||||
"or `http://...` URL."),
|
"or `http://...` URL."),
|
||||||
|
|
||||||
('proxy-dns-requests',
|
('proxy-dns-requests',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether to send DNS requests over the configured proxy."),
|
"Whether to send DNS requests over the configured proxy."),
|
||||||
|
|
||||||
('ssl-strict',
|
('ssl-strict',
|
||||||
SettingValue(typ.BoolAsk(), 'ask'),
|
SettingValue(typ.BoolAsk(), 'ask',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether to validate SSL handshakes."),
|
"Whether to validate SSL handshakes."),
|
||||||
|
|
||||||
('dns-prefetch',
|
('dns-prefetch',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether to try to pre-fetch DNS entries to speed up browsing."),
|
"Whether to try to pre-fetch DNS entries to speed up browsing."),
|
||||||
|
|
||||||
('custom-headers',
|
('custom-headers',
|
||||||
SettingValue(typ.HeaderDict(none_ok=True), ''),
|
SettingValue(typ.HeaderDict(none_ok=True), '',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Set custom headers for qutebrowser HTTP requests."),
|
"Set custom headers for qutebrowser HTTP requests."),
|
||||||
|
|
||||||
readonly=readonly
|
readonly=readonly
|
||||||
@ -673,7 +690,8 @@ def data(readonly=False):
|
|||||||
|
|
||||||
('maximum-pages-in-cache',
|
('maximum-pages-in-cache',
|
||||||
SettingValue(
|
SettingValue(
|
||||||
typ.Int(none_ok=True, minval=0, maxval=MAXVALS['int']), ''),
|
typ.Int(none_ok=True, minval=0, maxval=MAXVALS['int']), '',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"The maximum number of pages to hold in the global memory page "
|
"The maximum number of pages to hold in the global memory page "
|
||||||
"cache.\n\n"
|
"cache.\n\n"
|
||||||
"The Page Cache allows for a nicer user experience when "
|
"The Page Cache allows for a nicer user experience when "
|
||||||
@ -685,7 +703,8 @@ def data(readonly=False):
|
|||||||
('object-cache-capacities',
|
('object-cache-capacities',
|
||||||
SettingValue(
|
SettingValue(
|
||||||
typ.List(typ.WebKitBytes(maxsize=MAXVALS['int'],
|
typ.List(typ.WebKitBytes(maxsize=MAXVALS['int'],
|
||||||
none_ok=True), none_ok=True, length=3), ''),
|
none_ok=True), none_ok=True, length=3), '',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"The capacities for the global memory cache for dead objects "
|
"The capacities for the global memory cache for dead objects "
|
||||||
"such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, "
|
"such as stylesheets or scripts. Syntax: cacheMinDeadCapacity, "
|
||||||
"cacheMaxDead, totalCapacity.\n\n"
|
"cacheMaxDead, totalCapacity.\n\n"
|
||||||
@ -699,21 +718,25 @@ def data(readonly=False):
|
|||||||
|
|
||||||
('offline-storage-default-quota',
|
('offline-storage-default-quota',
|
||||||
SettingValue(typ.WebKitBytes(maxsize=MAXVALS['int64'],
|
SettingValue(typ.WebKitBytes(maxsize=MAXVALS['int64'],
|
||||||
none_ok=True), ''),
|
none_ok=True), '',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Default quota for new offline storage databases."),
|
"Default quota for new offline storage databases."),
|
||||||
|
|
||||||
('offline-web-application-cache-quota',
|
('offline-web-application-cache-quota',
|
||||||
SettingValue(typ.WebKitBytes(maxsize=MAXVALS['int64'],
|
SettingValue(typ.WebKitBytes(maxsize=MAXVALS['int64'],
|
||||||
none_ok=True), ''),
|
none_ok=True), '',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Quota for the offline web application cache."),
|
"Quota for the offline web application cache."),
|
||||||
|
|
||||||
('offline-storage-database',
|
('offline-storage-database',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether support for the HTML 5 offline storage feature is "
|
"Whether support for the HTML 5 offline storage feature is "
|
||||||
"enabled."),
|
"enabled."),
|
||||||
|
|
||||||
('offline-web-application-storage',
|
('offline-web-application-storage',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether support for the HTML 5 web application cache feature is "
|
"Whether support for the HTML 5 web application cache feature is "
|
||||||
"enabled.\n\n"
|
"enabled.\n\n"
|
||||||
"An application cache acts like an HTTP cache in some sense. For "
|
"An application cache acts like an HTTP cache in some sense. For "
|
||||||
@ -756,7 +779,8 @@ def data(readonly=False):
|
|||||||
"Enables or disables WebGL."),
|
"Enables or disables WebGL."),
|
||||||
|
|
||||||
('css-regions',
|
('css-regions',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Enable or disable support for CSS regions."),
|
"Enable or disable support for CSS regions."),
|
||||||
|
|
||||||
('hyperlink-auditing',
|
('hyperlink-auditing',
|
||||||
@ -771,17 +795,13 @@ def data(readonly=False):
|
|||||||
SettingValue(typ.BoolAsk(), 'ask'),
|
SettingValue(typ.BoolAsk(), 'ask'),
|
||||||
"Allow websites to show notifications."),
|
"Allow websites to show notifications."),
|
||||||
|
|
||||||
#('allow-java',
|
|
||||||
# SettingValue(typ.Bool(), 'true'),
|
|
||||||
# "Enables or disables Java applets. Currently Java applets are "
|
|
||||||
# "not supported"),
|
|
||||||
|
|
||||||
('javascript-can-open-windows',
|
('javascript-can-open-windows',
|
||||||
SettingValue(typ.Bool(), 'false'),
|
SettingValue(typ.Bool(), 'false'),
|
||||||
"Whether JavaScript programs can open new windows."),
|
"Whether JavaScript programs can open new windows."),
|
||||||
|
|
||||||
('javascript-can-close-windows',
|
('javascript-can-close-windows',
|
||||||
SettingValue(typ.Bool(), 'false'),
|
SettingValue(typ.Bool(), 'false',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether JavaScript programs can close windows."),
|
"Whether JavaScript programs can close windows."),
|
||||||
|
|
||||||
('javascript-can-access-clipboard',
|
('javascript-can-access-clipboard',
|
||||||
@ -817,11 +837,12 @@ def data(readonly=False):
|
|||||||
"the same origin only, unless a cookie is "
|
"the same origin only, unless a cookie is "
|
||||||
"already set for the domain."),
|
"already set for the domain."),
|
||||||
('never', "Don't accept cookies at all.")
|
('never', "Don't accept cookies at all.")
|
||||||
)), 'no-3rdparty'),
|
)), 'no-3rdparty', backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Control which cookies to accept."),
|
"Control which cookies to accept."),
|
||||||
|
|
||||||
('cookies-store',
|
('cookies-store',
|
||||||
SettingValue(typ.Bool(), 'true'),
|
SettingValue(typ.Bool(), 'true',
|
||||||
|
backends=[usertypes.Backend.QtWebKit]),
|
||||||
"Whether to store cookies."),
|
"Whether to store cookies."),
|
||||||
|
|
||||||
('host-block-lists',
|
('host-block-lists',
|
||||||
|
@ -27,6 +27,15 @@ class Error(Exception):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class BackendError(Error):
|
||||||
|
|
||||||
|
"""Raised when this setting is unavailable with the current backend."""
|
||||||
|
|
||||||
|
def __init__(self, backend):
|
||||||
|
super().__init__("This setting is not available with the {} "
|
||||||
|
"backend!".format(backend.name))
|
||||||
|
|
||||||
|
|
||||||
class ValidationError(Error):
|
class ValidationError(Error):
|
||||||
|
|
||||||
"""Raised when a value for a config type was invalid.
|
"""Raised when a value for a config type was invalid.
|
||||||
|
@ -35,17 +35,20 @@ class SettingValue:
|
|||||||
most significant layer first.
|
most significant layer first.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, typ, default=None):
|
def __init__(self, typ, default=None, *, backends=None):
|
||||||
"""Constructor.
|
"""Constructor.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
typ: The BaseType to use.
|
typ: The BaseType to use.
|
||||||
default: Raw value to set.
|
default: Raw value to set.
|
||||||
|
backend: A list of usertypes.Backend enum members to mark this
|
||||||
|
setting as unsupported with other backends.
|
||||||
"""
|
"""
|
||||||
self.typ = typ
|
self.typ = typ
|
||||||
self.values = collections.OrderedDict.fromkeys(
|
self.values = collections.OrderedDict.fromkeys(
|
||||||
['temp', 'conf', 'default'])
|
['temp', 'conf', 'default'])
|
||||||
self.values['default'] = default
|
self.values['default'] = default
|
||||||
|
self.backends = backends
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
"""Get raw string value."""
|
"""Get raw string value."""
|
||||||
|
@ -262,9 +262,8 @@ def update_mappings(mappings, section, option):
|
|||||||
def init():
|
def init():
|
||||||
"""Initialize all QWeb(Engine)Settings."""
|
"""Initialize all QWeb(Engine)Settings."""
|
||||||
if objreg.get('args').backend == 'webengine':
|
if objreg.get('args').backend == 'webengine':
|
||||||
# from qutebrowser.browser.webengine import webenginesettings
|
from qutebrowser.browser.webengine import webenginesettings
|
||||||
# webenginesettings.init()
|
webenginesettings.init()
|
||||||
log.stub('with QtWebEngine')
|
|
||||||
else:
|
else:
|
||||||
from qutebrowser.browser.webkit import webkitsettings
|
from qutebrowser.browser.webkit import webkitsettings
|
||||||
webkitsettings.init()
|
webkitsettings.init()
|
||||||
|
@ -254,6 +254,10 @@ LoadStatus = enum('LoadStatus', ['none', 'success', 'success_https', 'error',
|
|||||||
|
|
||||||
# Backend of a tab
|
# Backend of a tab
|
||||||
Backend = enum('Backend', ['QtWebKit', 'QtWebEngine'])
|
Backend = enum('Backend', ['QtWebKit', 'QtWebEngine'])
|
||||||
|
arg2backend = {
|
||||||
|
'webkit': Backend.QtWebKit,
|
||||||
|
'webengine': Backend.QtWebEngine,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# Where a download should be saved
|
# Where a download should be saved
|
||||||
|
@ -40,7 +40,7 @@ from scripts import asciidoc2html, utils
|
|||||||
from qutebrowser import qutebrowser
|
from qutebrowser import qutebrowser
|
||||||
from qutebrowser.commands import cmdutils, argparser
|
from qutebrowser.commands import cmdutils, argparser
|
||||||
from qutebrowser.config import configdata
|
from qutebrowser.config import configdata
|
||||||
from qutebrowser.utils import docutils
|
from qutebrowser.utils import docutils, usertypes
|
||||||
|
|
||||||
|
|
||||||
class UsageFormatter(argparse.HelpFormatter):
|
class UsageFormatter(argparse.HelpFormatter):
|
||||||
@ -357,6 +357,7 @@ def _generate_setting_section(f, sectname, sect):
|
|||||||
f.write("=== {}".format(optname) + "\n")
|
f.write("=== {}".format(optname) + "\n")
|
||||||
f.write(sect.descriptions[optname] + "\n")
|
f.write(sect.descriptions[optname] + "\n")
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
|
|
||||||
valid_values = option.typ.get_valid_values()
|
valid_values = option.typ.get_valid_values()
|
||||||
if valid_values is not None:
|
if valid_values is not None:
|
||||||
f.write("Valid values:\n")
|
f.write("Valid values:\n")
|
||||||
@ -368,12 +369,25 @@ def _generate_setting_section(f, sectname, sect):
|
|||||||
except KeyError:
|
except KeyError:
|
||||||
f.write(" * +{}+".format(val) + "\n")
|
f.write(" * +{}+".format(val) + "\n")
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
|
|
||||||
if option.default():
|
if option.default():
|
||||||
f.write("Default: +pass:[{}]+\n".format(html.escape(
|
f.write("Default: +pass:[{}]+\n".format(html.escape(
|
||||||
option.default())))
|
option.default())))
|
||||||
else:
|
else:
|
||||||
f.write("Default: empty\n")
|
f.write("Default: empty\n")
|
||||||
|
|
||||||
|
if option.backends is None:
|
||||||
|
pass
|
||||||
|
elif option.backends == [usertypes.Backend.QtWebKit]:
|
||||||
|
f.write("\nThis setting is only available with the QtWebKit "
|
||||||
|
"backend.\n")
|
||||||
|
elif option.backends == [usertypes.Backend.QtWebEngine]:
|
||||||
|
f.write("\nThis setting is only available with the QtWebEngine "
|
||||||
|
"backend.\n")
|
||||||
|
else:
|
||||||
|
raise ValueError("Invalid value {!r} for option.backends".format(
|
||||||
|
option.backends))
|
||||||
|
|
||||||
|
|
||||||
def generate_settings(filename):
|
def generate_settings(filename):
|
||||||
"""Generate the complete settings section."""
|
"""Generate the complete settings section."""
|
||||||
|
Loading…
Reference in New Issue
Block a user