From c5e05cdb2eaadbd934a3024e3207cf1d4f7db1d2 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 13 Jul 2014 15:56:14 +0530 Subject: [PATCH] Edit Book: Add in-context help for HTML and CSS Now, you can right click on any HTML/OPF/NCX tag name or CSS property and the editor will open some help for that item in your browser. --- resources/editor-help/css.json | 340 ++++++++++++++++++ resources/editor-help/html.json | 140 ++++++++ resources/editor-help/mathml.json | 42 +++ resources/editor-help/opf2.json | 36 ++ resources/editor-help/opf3.json | 22 ++ resources/editor-help/svg.json | 82 +++++ src/calibre/ebooks/oeb/polish/container.py | 8 + src/calibre/gui2/__init__.py | 2 + .../gui2/tweak_book/editor/__init__.py | 2 + src/calibre/gui2/tweak_book/editor/help.py | 129 +++++++ .../gui2/tweak_book/editor/syntax/css.py | 21 +- .../gui2/tweak_book/editor/syntax/html.py | 6 +- src/calibre/gui2/tweak_book/editor/widget.py | 12 +- 13 files changed, 834 insertions(+), 8 deletions(-) create mode 100644 resources/editor-help/css.json create mode 100644 resources/editor-help/html.json create mode 100644 resources/editor-help/mathml.json create mode 100644 resources/editor-help/opf2.json create mode 100644 resources/editor-help/opf3.json create mode 100644 resources/editor-help/svg.json create mode 100644 src/calibre/gui2/tweak_book/editor/help.py diff --git a/resources/editor-help/css.json b/resources/editor-help/css.json new file mode 100644 index 0000000000..048baad85e --- /dev/null +++ b/resources/editor-help/css.json @@ -0,0 +1,340 @@ +{ + "::after": "https://developer.mozilla.org/docs/Web/CSS/::after", + "::before": "https://developer.mozilla.org/docs/Web/CSS/::before", + "::choices": "https://developer.mozilla.org/docs/Web/CSS/::choices", + "::first-letter": "https://developer.mozilla.org/docs/Web/CSS/::first-letter", + "::first-line": "https://developer.mozilla.org/docs/Web/CSS/::first-line", + "::repeat-index": "https://developer.mozilla.org/docs/Web/CSS/::repeat-index", + "::repeat-item": "https://developer.mozilla.org/docs/Web/CSS/::repeat-item", + "::selection": "https://developer.mozilla.org/docs/Web/CSS/::selection", + "::value": "https://developer.mozilla.org/docs/Web/CSS/::value", + ":active": "https://developer.mozilla.org/docs/Web/CSS/:active", + ":checked": "https://developer.mozilla.org/docs/Web/CSS/:checked", + ":default": "https://developer.mozilla.org/docs/Web/CSS/:default", + ":dir": "https://developer.mozilla.org/docs/Web/CSS/:dir", + ":disabled": "https://developer.mozilla.org/docs/Web/CSS/:disabled", + ":empty": "https://developer.mozilla.org/docs/Web/CSS/:empty", + ":enabled": "https://developer.mozilla.org/docs/Web/CSS/:enabled", + ":first": "https://developer.mozilla.org/docs/Web/CSS/:first", + ":first-child": "https://developer.mozilla.org/docs/Web/CSS/:first-child", + ":first-of-type": "https://developer.mozilla.org/docs/Web/CSS/:first-of-type", + ":focus": "https://developer.mozilla.org/docs/Web/CSS/:focus", + ":fullscreen": "https://developer.mozilla.org/docs/Web/CSS/:fullscreen", + ":hover": "https://developer.mozilla.org/docs/Web/CSS/:hover", + ":in-range": "https://developer.mozilla.org/docs/Web/CSS/:in-range", + ":indeterminate": "https://developer.mozilla.org/docs/Web/CSS/:indeterminate", + ":invalid": "https://developer.mozilla.org/docs/Web/CSS/:invalid", + ":lang": "https://developer.mozilla.org/docs/Web/CSS/:lang", + ":last-child": "https://developer.mozilla.org/docs/Web/CSS/:last-child", + ":last-of-type": "https://developer.mozilla.org/docs/Web/CSS/:last-of-type", + ":left": "https://developer.mozilla.org/docs/Web/CSS/:left", + ":link": "https://developer.mozilla.org/docs/Web/CSS/:link", + ":not": "https://developer.mozilla.org/docs/Web/CSS/:not", + ":nth-child": "https://developer.mozilla.org/docs/Web/CSS/:nth-child", + ":nth-last-child": "https://developer.mozilla.org/docs/Web/CSS/:nth-last-child", + ":nth-last-of-type": "https://developer.mozilla.org/docs/Web/CSS/:nth-last-of-type", + ":nth-of-type": "https://developer.mozilla.org/docs/Web/CSS/:nth-of-type", + ":only-child": "https://developer.mozilla.org/docs/Web/CSS/:only-child", + ":only-of-type": "https://developer.mozilla.org/docs/Web/CSS/:only-of-type", + ":optional": "https://developer.mozilla.org/docs/Web/CSS/:optional", + ":out-of-range": "https://developer.mozilla.org/docs/Web/CSS/:out-of-range", + ":read-only": "https://developer.mozilla.org/docs/Web/CSS/:read-only", + ":read-write": "https://developer.mozilla.org/docs/Web/CSS/:read-write", + ":required": "https://developer.mozilla.org/docs/Web/CSS/:required", + ":right": "https://developer.mozilla.org/docs/Web/CSS/:right", + ":root": "https://developer.mozilla.org/docs/Web/CSS/:root", + ":scope": "https://developer.mozilla.org/docs/Web/CSS/:scope", + ":target": "https://developer.mozilla.org/docs/Web/CSS/:target", + ":valid": "https://developer.mozilla.org/docs/Web/CSS/:valid", + ":visited": "https://developer.mozilla.org/docs/Web/CSS/:visited", + "": "https://developer.mozilla.org/docs/Web/CSS/", + "@charset": "https://developer.mozilla.org/docs/Web/CSS/@charset", + "@counter-style": "https://developer.mozilla.org/docs/Web/CSS/@counter-style", + "@document": "https://developer.mozilla.org/docs/Web/CSS/@document", + "@font-face": "https://developer.mozilla.org/docs/Web/CSS/@font-face", + "@font-feature-values": "https://developer.mozilla.org/docs/Web/CSS/@font-feature-values", + "@import": "https://developer.mozilla.org/docs/Web/CSS/@import", + "@keyframes": "https://developer.mozilla.org/docs/Web/CSS/@keyframes", + "@media": "https://developer.mozilla.org/docs/Web/CSS/@media", + "@namespace": "https://developer.mozilla.org/docs/Web/CSS/@namespace", + "@page": "https://developer.mozilla.org/docs/Web/CSS/@page", + "@supports": "https://developer.mozilla.org/docs/Web/CSS/@supports", + "@viewport": "https://developer.mozilla.org/docs/Web/CSS/@viewport", + "align-content": "https://developer.mozilla.org/docs/Web/CSS/align-content", + "align-items": "https://developer.mozilla.org/docs/Web/CSS/align-items", + "align-self": "https://developer.mozilla.org/docs/Web/CSS/align-self", + "all": "https://developer.mozilla.org/docs/Web/CSS/all", + "angle": "https://developer.mozilla.org/docs/Web/CSS/angle", + "animation": "https://developer.mozilla.org/docs/Web/CSS/animation", + "animation-delay": "https://developer.mozilla.org/docs/Web/CSS/animation-delay", + "animation-direction": "https://developer.mozilla.org/docs/Web/CSS/animation-direction", + "animation-duration": "https://developer.mozilla.org/docs/Web/CSS/animation-duration", + "animation-fill-mode": "https://developer.mozilla.org/docs/Web/CSS/animation-fill-mode", + "animation-iteration-count": "https://developer.mozilla.org/docs/Web/CSS/animation-iteration-count", + "animation-name": "https://developer.mozilla.org/docs/Web/CSS/animation-name", + "animation-play-state": "https://developer.mozilla.org/docs/Web/CSS/animation-play-state", + "animation-timing-function": "https://developer.mozilla.org/docs/Web/CSS/animation-timing-function", + "attr": "https://developer.mozilla.org/docs/Web/CSS/attr", + "auto": "https://developer.mozilla.org/docs/Web/CSS/auto", + "backface-visibility": "https://developer.mozilla.org/docs/Web/CSS/backface-visibility", + "background": "https://developer.mozilla.org/docs/Web/CSS/background", + "background-attachment": "https://developer.mozilla.org/docs/Web/CSS/background-attachment", + "background-blend-mode": "https://developer.mozilla.org/docs/Web/CSS/background-blend-mode", + "background-clip": "https://developer.mozilla.org/docs/Web/CSS/background-clip", + "background-color": "https://developer.mozilla.org/docs/Web/CSS/background-color", + "background-image": "https://developer.mozilla.org/docs/Web/CSS/background-image", + "background-origin": "https://developer.mozilla.org/docs/Web/CSS/background-origin", + "background-position": "https://developer.mozilla.org/docs/Web/CSS/background-position", + "background-repeat": "https://developer.mozilla.org/docs/Web/CSS/background-repeat", + "background-size": "https://developer.mozilla.org/docs/Web/CSS/background-size", + "blend-mode": "https://developer.mozilla.org/docs/Web/CSS/blend-mode", + "border": "https://developer.mozilla.org/docs/Web/CSS/border", + "border-bottom": "https://developer.mozilla.org/docs/Web/CSS/border-bottom", + "border-bottom-color": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-color", + "border-bottom-left-radius": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-left-radius", + "border-bottom-right-radius": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-right-radius", + "border-bottom-style": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-style", + "border-bottom-width": "https://developer.mozilla.org/docs/Web/CSS/border-bottom-width", + "border-collapse": "https://developer.mozilla.org/docs/Web/CSS/border-collapse", + "border-color": "https://developer.mozilla.org/docs/Web/CSS/border-color", + "border-image": "https://developer.mozilla.org/docs/Web/CSS/border-image", + "border-image-outset": "https://developer.mozilla.org/docs/Web/CSS/border-image-outset", + "border-image-repeat": "https://developer.mozilla.org/docs/Web/CSS/border-image-repeat", + "border-image-slice": "https://developer.mozilla.org/docs/Web/CSS/border-image-slice", + "border-image-source": "https://developer.mozilla.org/docs/Web/CSS/border-image-source", + "border-image-width": "https://developer.mozilla.org/docs/Web/CSS/border-image-width", + "border-left": "https://developer.mozilla.org/docs/Web/CSS/border-left", + "border-left-color": "https://developer.mozilla.org/docs/Web/CSS/border-left-color", + "border-left-style": "https://developer.mozilla.org/docs/Web/CSS/border-left-style", + "border-left-width": "https://developer.mozilla.org/docs/Web/CSS/border-left-width", + "border-radius": "https://developer.mozilla.org/docs/Web/CSS/border-radius", + "border-right": "https://developer.mozilla.org/docs/Web/CSS/border-right", + "border-right-color": "https://developer.mozilla.org/docs/Web/CSS/border-right-color", + "border-right-style": "https://developer.mozilla.org/docs/Web/CSS/border-right-style", + "border-right-width": "https://developer.mozilla.org/docs/Web/CSS/border-right-width", + "border-spacing": "https://developer.mozilla.org/docs/Web/CSS/border-spacing", + "border-style": "https://developer.mozilla.org/docs/Web/CSS/border-style", + "border-top": "https://developer.mozilla.org/docs/Web/CSS/border-top", + "border-top-color": "https://developer.mozilla.org/docs/Web/CSS/border-top-color", + "border-top-left-radius": "https://developer.mozilla.org/docs/Web/CSS/border-top-left-radius", + "border-top-right-radius": "https://developer.mozilla.org/docs/Web/CSS/border-top-right-radius", + "border-top-style": "https://developer.mozilla.org/docs/Web/CSS/border-top-style", + "border-top-width": "https://developer.mozilla.org/docs/Web/CSS/border-top-width", + "border-width": "https://developer.mozilla.org/docs/Web/CSS/border-width", + "bottom": "https://developer.mozilla.org/docs/Web/CSS/bottom", + "box-decoration-break": "https://developer.mozilla.org/docs/Web/CSS/box-decoration-break", + "box-shadow": "https://developer.mozilla.org/docs/Web/CSS/box-shadow", + "box-sizing": "https://developer.mozilla.org/docs/Web/CSS/box-sizing", + "break-after": "https://developer.mozilla.org/docs/Web/CSS/break-after", + "break-before": "https://developer.mozilla.org/docs/Web/CSS/break-before", + "break-inside": "https://developer.mozilla.org/docs/Web/CSS/break-inside", + "calc": "https://developer.mozilla.org/docs/Web/CSS/calc", + "caption-side": "https://developer.mozilla.org/docs/Web/CSS/caption-side", + "clear": "https://developer.mozilla.org/docs/Web/CSS/clear", + "clip": "https://developer.mozilla.org/docs/Web/CSS/clip", + "clip-path": "https://developer.mozilla.org/docs/Web/CSS/clip-path", + "color": "https://developer.mozilla.org/docs/Web/CSS/color", + "color_value": "https://developer.mozilla.org/docs/Web/CSS/color_value", + "column-count": "https://developer.mozilla.org/docs/Web/CSS/column-count", + "column-fill": "https://developer.mozilla.org/docs/Web/CSS/column-fill", + "column-gap": "https://developer.mozilla.org/docs/Web/CSS/column-gap", + "column-rule": "https://developer.mozilla.org/docs/Web/CSS/column-rule", + "column-rule-color": "https://developer.mozilla.org/docs/Web/CSS/column-rule-color", + "column-rule-style": "https://developer.mozilla.org/docs/Web/CSS/column-rule-style", + "column-rule-width": "https://developer.mozilla.org/docs/Web/CSS/column-rule-width", + "column-span": "https://developer.mozilla.org/docs/Web/CSS/column-span", + "column-width": "https://developer.mozilla.org/docs/Web/CSS/column-width", + "columns": "https://developer.mozilla.org/docs/Web/CSS/columns", + "content": "https://developer.mozilla.org/docs/Web/CSS/content", + "counter": "https://developer.mozilla.org/docs/Web/CSS/counter", + "counter-increment": "https://developer.mozilla.org/docs/Web/CSS/counter-increment", + "counter-reset": "https://developer.mozilla.org/docs/Web/CSS/counter-reset", + "cross-fade": "https://developer.mozilla.org/docs/Web/CSS/cross-fade", + "cursor": "https://developer.mozilla.org/docs/Web/CSS/cursor", + "custom-ident": "https://developer.mozilla.org/docs/Web/CSS/custom-ident", + "cycle": "https://developer.mozilla.org/docs/Web/CSS/cycle", + "direction": "https://developer.mozilla.org/docs/Web/CSS/direction", + "display": "https://developer.mozilla.org/docs/Web/CSS/display", + "element": "https://developer.mozilla.org/docs/Web/CSS/element", + "empty-cells": "https://developer.mozilla.org/docs/Web/CSS/empty-cells", + "filter": "https://developer.mozilla.org/docs/Web/CSS/filter", + "flex": "https://developer.mozilla.org/docs/Web/CSS/flex", + "flex-basis": "https://developer.mozilla.org/docs/Web/CSS/flex-basis", + "flex-direction": "https://developer.mozilla.org/docs/Web/CSS/flex-direction", + "flex-flow": "https://developer.mozilla.org/docs/Web/CSS/flex-flow", + "flex-grow": "https://developer.mozilla.org/docs/Web/CSS/flex-grow", + "flex-shrink": "https://developer.mozilla.org/docs/Web/CSS/flex-shrink", + "flex-wrap": "https://developer.mozilla.org/docs/Web/CSS/flex-wrap", + "float": "https://developer.mozilla.org/docs/Web/CSS/float", + "font": "https://developer.mozilla.org/docs/Web/CSS/font", + "font-family": "https://developer.mozilla.org/docs/Web/CSS/font-family", + "font-feature-settings": "https://developer.mozilla.org/docs/Web/CSS/font-feature-settings", + "font-kerning": "https://developer.mozilla.org/docs/Web/CSS/font-kerning", + "font-language-override": "https://developer.mozilla.org/docs/Web/CSS/font-language-override", + "font-size": "https://developer.mozilla.org/docs/Web/CSS/font-size", + "font-size-adjust": "https://developer.mozilla.org/docs/Web/CSS/font-size-adjust", + "font-stretch": "https://developer.mozilla.org/docs/Web/CSS/font-stretch", + "font-style": "https://developer.mozilla.org/docs/Web/CSS/font-style", + "font-synthesis": "https://developer.mozilla.org/docs/Web/CSS/font-synthesis", + "font-variant": "https://developer.mozilla.org/docs/Web/CSS/font-variant", + "font-variant-alternates": "https://developer.mozilla.org/docs/Web/CSS/font-variant-alternates", + "font-variant-caps": "https://developer.mozilla.org/docs/Web/CSS/font-variant-caps", + "font-variant-east-asian": "https://developer.mozilla.org/docs/Web/CSS/font-variant-east-asian", + "font-variant-ligatures": "https://developer.mozilla.org/docs/Web/CSS/font-variant-ligatures", + "font-variant-numeric": "https://developer.mozilla.org/docs/Web/CSS/font-variant-numeric", + "font-variant-position": "https://developer.mozilla.org/docs/Web/CSS/font-variant-position", + "font-weight": "https://developer.mozilla.org/docs/Web/CSS/font-weight", + "frequency": "https://developer.mozilla.org/docs/Web/CSS/frequency", + "gradient": "https://developer.mozilla.org/docs/Web/CSS/gradient", + "grid": "https://developer.mozilla.org/docs/Web/CSS/grid", + "grid-area": "https://developer.mozilla.org/docs/Web/CSS/grid-area", + "grid-auto-columns": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-columns", + "grid-auto-flow": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-flow", + "grid-auto-position": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-position", + "grid-auto-rows": "https://developer.mozilla.org/docs/Web/CSS/grid-auto-rows", + "grid-column": "https://developer.mozilla.org/docs/Web/CSS/grid-column", + "grid-column-end": "https://developer.mozilla.org/docs/Web/CSS/grid-column-end", + "grid-column-start": "https://developer.mozilla.org/docs/Web/CSS/grid-column-start", + "grid-row": "https://developer.mozilla.org/docs/Web/CSS/grid-row", + "grid-row-end": "https://developer.mozilla.org/docs/Web/CSS/grid-row-end", + "grid-row-start": "https://developer.mozilla.org/docs/Web/CSS/grid-row-start", + "grid-template": "https://developer.mozilla.org/docs/Web/CSS/grid-template", + "grid-template-areas": "https://developer.mozilla.org/docs/Web/CSS/grid-template-areas", + "grid-template-columns": "https://developer.mozilla.org/docs/Web/CSS/grid-template-columns", + "grid-template-rows": "https://developer.mozilla.org/docs/Web/CSS/grid-template-rows", + "height": "https://developer.mozilla.org/docs/Web/CSS/height", + "hyphens": "https://developer.mozilla.org/docs/Web/CSS/hyphens", + "icon": "https://developer.mozilla.org/docs/Web/CSS/icon", + "image": "https://developer.mozilla.org/docs/Web/CSS/image", + "image()": "https://developer.mozilla.org/docs/Web/CSS/image()", + "image-orientation": "https://developer.mozilla.org/docs/Web/CSS/image-orientation", + "image-rendering": "https://developer.mozilla.org/docs/Web/CSS/image-rendering", + "image-resolution": "https://developer.mozilla.org/docs/Web/CSS/image-resolution", + "ime-mode": "https://developer.mozilla.org/docs/Web/CSS/ime-mode", + "inherit": "https://developer.mozilla.org/docs/Web/CSS/inherit", + "initial": "https://developer.mozilla.org/docs/Web/CSS/initial", + "integer": "https://developer.mozilla.org/docs/Web/CSS/integer", + "isolation": "https://developer.mozilla.org/docs/Web/CSS/isolation", + "justify-content": "https://developer.mozilla.org/docs/Web/CSS/justify-content", + "left": "https://developer.mozilla.org/docs/Web/CSS/left", + "length": "https://developer.mozilla.org/docs/Web/CSS/length", + "letter-spacing": "https://developer.mozilla.org/docs/Web/CSS/letter-spacing", + "line-break": "https://developer.mozilla.org/docs/Web/CSS/line-break", + "line-height": "https://developer.mozilla.org/docs/Web/CSS/line-height", + "linear-gradient": "https://developer.mozilla.org/docs/Web/CSS/linear-gradient", + "list-style": "https://developer.mozilla.org/docs/Web/CSS/list-style", + "list-style-image": "https://developer.mozilla.org/docs/Web/CSS/list-style-image", + "list-style-position": "https://developer.mozilla.org/docs/Web/CSS/list-style-position", + "list-style-type": "https://developer.mozilla.org/docs/Web/CSS/list-style-type", + "margin": "https://developer.mozilla.org/docs/Web/CSS/margin", + "margin-bottom": "https://developer.mozilla.org/docs/Web/CSS/margin-bottom", + "margin-left": "https://developer.mozilla.org/docs/Web/CSS/margin-left", + "margin-right": "https://developer.mozilla.org/docs/Web/CSS/margin-right", + "margin-top": "https://developer.mozilla.org/docs/Web/CSS/margin-top", + "marks": "https://developer.mozilla.org/docs/Web/CSS/marks", + "mask": "https://developer.mozilla.org/docs/Web/CSS/mask", + "mask-type": "https://developer.mozilla.org/docs/Web/CSS/mask-type", + "max-height": "https://developer.mozilla.org/docs/Web/CSS/max-height", + "max-width": "https://developer.mozilla.org/docs/Web/CSS/max-width", + "min-height": "https://developer.mozilla.org/docs/Web/CSS/min-height", + "min-width": "https://developer.mozilla.org/docs/Web/CSS/min-width", + "minmax": "https://developer.mozilla.org/docs/Web/CSS/minmax", + "mix-blend-mode": "https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode", + "nav-down": "https://developer.mozilla.org/docs/Web/CSS/nav-down", + "nav-index": "https://developer.mozilla.org/docs/Web/CSS/nav-index", + "nav-left": "https://developer.mozilla.org/docs/Web/CSS/nav-left", + "nav-right": "https://developer.mozilla.org/docs/Web/CSS/nav-right", + "nav-up": "https://developer.mozilla.org/docs/Web/CSS/nav-up", + "none": "https://developer.mozilla.org/docs/Web/CSS/none", + "normal": "https://developer.mozilla.org/docs/Web/CSS/normal", + "number": "https://developer.mozilla.org/docs/Web/CSS/number", + "object-fit": "https://developer.mozilla.org/docs/Web/CSS/object-fit", + "object-position": "https://developer.mozilla.org/docs/Web/CSS/object-position", + "opacity": "https://developer.mozilla.org/docs/Web/CSS/opacity", + "order": "https://developer.mozilla.org/docs/Web/CSS/order", + "orphans": "https://developer.mozilla.org/docs/Web/CSS/orphans", + "outline": "https://developer.mozilla.org/docs/Web/CSS/outline", + "outline-color": "https://developer.mozilla.org/docs/Web/CSS/outline-color", + "outline-offset": "https://developer.mozilla.org/docs/Web/CSS/outline-offset", + "outline-style": "https://developer.mozilla.org/docs/Web/CSS/outline-style", + "outline-width": "https://developer.mozilla.org/docs/Web/CSS/outline-width", + "overflow": "https://developer.mozilla.org/docs/Web/CSS/overflow", + "overflow-clip-box": "https://developer.mozilla.org/docs/Web/CSS/overflow-clip-box", + "overflow-wrap": "https://developer.mozilla.org/docs/Web/CSS/overflow-wrap", + "overflow-x": "https://developer.mozilla.org/docs/Web/CSS/overflow-x", + "overflow-y": "https://developer.mozilla.org/docs/Web/CSS/overflow-y", + "padding": "https://developer.mozilla.org/docs/Web/CSS/padding", + "padding-bottom": "https://developer.mozilla.org/docs/Web/CSS/padding-bottom", + "padding-left": "https://developer.mozilla.org/docs/Web/CSS/padding-left", + "padding-right": "https://developer.mozilla.org/docs/Web/CSS/padding-right", + "padding-top": "https://developer.mozilla.org/docs/Web/CSS/padding-top", + "page-break-after": "https://developer.mozilla.org/docs/Web/CSS/page-break-after", + "page-break-before": "https://developer.mozilla.org/docs/Web/CSS/page-break-before", + "page-break-inside": "https://developer.mozilla.org/docs/Web/CSS/page-break-inside", + "percentage": "https://developer.mozilla.org/docs/Web/CSS/percentage", + "perspective": "https://developer.mozilla.org/docs/Web/CSS/perspective", + "perspective-origin": "https://developer.mozilla.org/docs/Web/CSS/perspective-origin", + "pointer-events": "https://developer.mozilla.org/docs/Web/CSS/pointer-events", + "position": "https://developer.mozilla.org/docs/Web/CSS/position", + "position_value": "https://developer.mozilla.org/docs/Web/CSS/position_value", + "quotes": "https://developer.mozilla.org/docs/Web/CSS/quotes", + "radial-gradient": "https://developer.mozilla.org/docs/Web/CSS/radial-gradient", + "ratio": "https://developer.mozilla.org/docs/Web/CSS/ratio", + "repeat": "https://developer.mozilla.org/docs/Web/CSS/repeat", + "repeating-linear-gradient": "https://developer.mozilla.org/docs/Web/CSS/repeating-linear-gradient", + "repeating-radial-gradient": "https://developer.mozilla.org/docs/Web/CSS/repeating-radial-gradient", + "resize": "https://developer.mozilla.org/docs/Web/CSS/resize", + "resolution": "https://developer.mozilla.org/docs/Web/CSS/resolution", + "right": "https://developer.mozilla.org/docs/Web/CSS/right", + "shape": "https://developer.mozilla.org/docs/Web/CSS/shape", + "shape-image-threshold": "https://developer.mozilla.org/docs/Web/CSS/shape-image-threshold", + "shape-margin": "https://developer.mozilla.org/docs/Web/CSS/shape-margin", + "shape-outside": "https://developer.mozilla.org/docs/Web/CSS/shape-outside", + "string": "https://developer.mozilla.org/docs/Web/CSS/string", + "tab-size": "https://developer.mozilla.org/docs/Web/CSS/tab-size", + "table-layout": "https://developer.mozilla.org/docs/Web/CSS/table-layout", + "text-align": "https://developer.mozilla.org/docs/Web/CSS/text-align", + "text-align-last": "https://developer.mozilla.org/docs/Web/CSS/text-align-last", + "text-combine-horizontal": "https://developer.mozilla.org/docs/Web/CSS/text-combine-horizontal", + "text-decoration": "https://developer.mozilla.org/docs/Web/CSS/text-decoration", + "text-decoration-color": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-color", + "text-decoration-line": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-line", + "text-decoration-style": "https://developer.mozilla.org/docs/Web/CSS/text-decoration-style", + "text-indent": "https://developer.mozilla.org/docs/Web/CSS/text-indent", + "text-orientation": "https://developer.mozilla.org/docs/Web/CSS/text-orientation", + "text-overflow": "https://developer.mozilla.org/docs/Web/CSS/text-overflow", + "text-rendering": "https://developer.mozilla.org/docs/Web/CSS/text-rendering", + "text-shadow": "https://developer.mozilla.org/docs/Web/CSS/text-shadow", + "text-transform": "https://developer.mozilla.org/docs/Web/CSS/text-transform", + "text-underline-position": "https://developer.mozilla.org/docs/Web/CSS/text-underline-position", + "time": "https://developer.mozilla.org/docs/Web/CSS/time", + "timing-function": "https://developer.mozilla.org/docs/Web/CSS/timing-function", + "top": "https://developer.mozilla.org/docs/Web/CSS/top", + "touch-action": "https://developer.mozilla.org/docs/Web/CSS/touch-action", + "transform": "https://developer.mozilla.org/docs/Web/CSS/transform", + "transform-function": "https://developer.mozilla.org/docs/Web/CSS/transform-function", + "transform-origin": "https://developer.mozilla.org/docs/Web/CSS/transform-origin", + "transform-style": "https://developer.mozilla.org/docs/Web/CSS/transform-style", + "transition": "https://developer.mozilla.org/docs/Web/CSS/transition", + "transition-delay": "https://developer.mozilla.org/docs/Web/CSS/transition-delay", + "transition-duration": "https://developer.mozilla.org/docs/Web/CSS/transition-duration", + "transition-property": "https://developer.mozilla.org/docs/Web/CSS/transition-property", + "transition-timing-function": "https://developer.mozilla.org/docs/Web/CSS/transition-timing-function", + "unicode-bidi": "https://developer.mozilla.org/docs/Web/CSS/unicode-bidi", + "unicode-range": "https://developer.mozilla.org/docs/Web/CSS/unicode-range", + "unset": "https://developer.mozilla.org/docs/Web/CSS/unset", + "uri": "https://developer.mozilla.org/docs/Web/CSS/uri", + "user-ident": "https://developer.mozilla.org/docs/Web/CSS/user-ident", + "var": "https://developer.mozilla.org/docs/Web/CSS/var", + "vertical-align": "https://developer.mozilla.org/docs/Web/CSS/vertical-align", + "visibility": "https://developer.mozilla.org/docs/Web/CSS/visibility", + "white-space": "https://developer.mozilla.org/docs/Web/CSS/white-space", + "widows": "https://developer.mozilla.org/docs/Web/CSS/widows", + "width": "https://developer.mozilla.org/docs/Web/CSS/width", + "will-change": "https://developer.mozilla.org/docs/Web/CSS/will-change", + "word-break": "https://developer.mozilla.org/docs/Web/CSS/word-break", + "word-spacing": "https://developer.mozilla.org/docs/Web/CSS/word-spacing", + "word-wrap": "https://developer.mozilla.org/docs/Web/CSS/word-wrap", + "writing-mode": "https://developer.mozilla.org/docs/Web/CSS/writing-mode", + "z-index": "https://developer.mozilla.org/docs/Web/CSS/z-index" +} \ No newline at end of file diff --git a/resources/editor-help/html.json b/resources/editor-help/html.json new file mode 100644 index 0000000000..e96b37cd59 --- /dev/null +++ b/resources/editor-help/html.json @@ -0,0 +1,140 @@ +{ + "a": "https://developer.mozilla.org/docs/Web/HTML/Element/a", + "abbr": "https://developer.mozilla.org/docs/Web/HTML/Element/abbr", + "acronym": "https://developer.mozilla.org/docs/Web/HTML/Element/acronym", + "address": "https://developer.mozilla.org/docs/Web/HTML/Element/address", + "applet": "https://developer.mozilla.org/docs/Web/HTML/Element/applet", + "area": "https://developer.mozilla.org/docs/Web/HTML/Element/area", + "article": "https://developer.mozilla.org/docs/Web/HTML/Element/article", + "aside": "https://developer.mozilla.org/docs/Web/HTML/Element/aside", + "audio": "https://developer.mozilla.org/docs/Web/HTML/Element/audio", + "b": "https://developer.mozilla.org/docs/Web/HTML/Element/b", + "base": "https://developer.mozilla.org/docs/Web/HTML/Element/base", + "basefont": "https://developer.mozilla.org/docs/Web/HTML/Element/basefont", + "bdi": "https://developer.mozilla.org/docs/Web/HTML/Element/bdi", + "bdo": "https://developer.mozilla.org/docs/Web/HTML/Element/bdo", + "bgsound": "https://developer.mozilla.org/docs/Web/HTML/Element/bgsound", + "big": "https://developer.mozilla.org/docs/Web/HTML/Element/big", + "blink": "https://developer.mozilla.org/docs/Web/HTML/Element/blink", + "blockquote": "https://developer.mozilla.org/docs/Web/HTML/Element/blockquote", + "body": "https://developer.mozilla.org/docs/Web/HTML/Element/body", + "br": "https://developer.mozilla.org/docs/Web/HTML/Element/br", + "button": "https://developer.mozilla.org/docs/Web/HTML/Element/button", + "canvas": "https://developer.mozilla.org/docs/Web/HTML/Element/canvas", + "caption": "https://developer.mozilla.org/docs/Web/HTML/Element/caption", + "center": "https://developer.mozilla.org/docs/Web/HTML/Element/center", + "cite": "https://developer.mozilla.org/docs/Web/HTML/Element/cite", + "code": "https://developer.mozilla.org/docs/Web/HTML/Element/code", + "col": "https://developer.mozilla.org/docs/Web/HTML/Element/col", + "colgroup": "https://developer.mozilla.org/docs/Web/HTML/Element/colgroup", + "content": "https://developer.mozilla.org/docs/Web/HTML/Element/content", + "data": "https://developer.mozilla.org/docs/Web/HTML/Element/data", + "datalist": "https://developer.mozilla.org/docs/Web/HTML/Element/datalist", + "dd": "https://developer.mozilla.org/docs/Web/HTML/Element/dd", + "decorator": "https://developer.mozilla.org/docs/Web/HTML/Element/decorator", + "del": "https://developer.mozilla.org/docs/Web/HTML/Element/del", + "details": "https://developer.mozilla.org/docs/Web/HTML/Element/details", + "dfn": "https://developer.mozilla.org/docs/Web/HTML/Element/dfn", + "dialog": "https://developer.mozilla.org/docs/Web/HTML/Element/dialog", + "dir": "https://developer.mozilla.org/docs/Web/HTML/Element/dir", + "div": "https://developer.mozilla.org/docs/Web/HTML/Element/div", + "dl": "https://developer.mozilla.org/docs/Web/HTML/Element/dl", + "dt": "https://developer.mozilla.org/docs/Web/HTML/Element/dt", + "element": "https://developer.mozilla.org/docs/Web/HTML/Element/element", + "em": "https://developer.mozilla.org/docs/Web/HTML/Element/em", + "embed": "https://developer.mozilla.org/docs/Web/HTML/Element/embed", + "fieldset": "https://developer.mozilla.org/docs/Web/HTML/Element/fieldset", + "figcaption": "https://developer.mozilla.org/docs/Web/HTML/Element/figcaption", + "figure": "https://developer.mozilla.org/docs/Web/HTML/Element/figure", + "font": "https://developer.mozilla.org/docs/Web/HTML/Element/font", + "footer": "https://developer.mozilla.org/docs/Web/HTML/Element/footer", + "form": "https://developer.mozilla.org/docs/Web/HTML/Element/form", + "frame": "https://developer.mozilla.org/docs/Web/HTML/Element/frame", + "frameset": "https://developer.mozilla.org/docs/Web/HTML/Element/frameset", + "h1": "https://developer.mozilla.org/docs/Web/HTML/Element/h1", + "h2": "https://developer.mozilla.org/docs/Web/HTML/Element/h2", + "h3": "https://developer.mozilla.org/docs/Web/HTML/Element/h3", + "h4": "https://developer.mozilla.org/docs/Web/HTML/Element/h4", + "h5": "https://developer.mozilla.org/docs/Web/HTML/Element/h5", + "h6": "https://developer.mozilla.org/docs/Web/HTML/Element/h6", + "head": "https://developer.mozilla.org/docs/Web/HTML/Element/head", + "header": "https://developer.mozilla.org/docs/Web/HTML/Element/header", + "hgroup": "https://developer.mozilla.org/docs/Web/HTML/Element/hgroup", + "hr": "https://developer.mozilla.org/docs/Web/HTML/Element/hr", + "html": "https://developer.mozilla.org/docs/Web/HTML/Element/html", + "i": "https://developer.mozilla.org/docs/Web/HTML/Element/i", + "iframe": "https://developer.mozilla.org/docs/Web/HTML/Element/iframe", + "img": "https://developer.mozilla.org/docs/Web/HTML/Element/img", + "input": "https://developer.mozilla.org/docs/Web/HTML/Element/input", + "ins": "https://developer.mozilla.org/docs/Web/HTML/Element/ins", + "isindex": "https://developer.mozilla.org/docs/Web/HTML/Element/isindex", + "kbd": "https://developer.mozilla.org/docs/Web/HTML/Element/kbd", + "keygen": "https://developer.mozilla.org/docs/Web/HTML/Element/keygen", + "label": "https://developer.mozilla.org/docs/Web/HTML/Element/label", + "legend": "https://developer.mozilla.org/docs/Web/HTML/Element/legend", + "li": "https://developer.mozilla.org/docs/Web/HTML/Element/li", + "link": "https://developer.mozilla.org/docs/Web/HTML/Element/link", + "listing": "https://developer.mozilla.org/docs/Web/HTML/Element/listing", + "main": "https://developer.mozilla.org/docs/Web/HTML/Element/main", + "map": "https://developer.mozilla.org/docs/Web/HTML/Element/map", + "mark": "https://developer.mozilla.org/docs/Web/HTML/Element/mark", + "marquee": "https://developer.mozilla.org/docs/Web/HTML/Element/marquee", + "menu": "https://developer.mozilla.org/docs/Web/HTML/Element/menu", + "menuitem": "https://developer.mozilla.org/docs/Web/HTML/Element/menuitem", + "meta": "https://developer.mozilla.org/docs/Web/HTML/Element/meta", + "meter": "https://developer.mozilla.org/docs/Web/HTML/Element/meter", + "nav": "https://developer.mozilla.org/docs/Web/HTML/Element/nav", + "nobr": "https://developer.mozilla.org/docs/Web/HTML/Element/nobr", + "noframes": "https://developer.mozilla.org/docs/Web/HTML/Element/noframes", + "noscript": "https://developer.mozilla.org/docs/Web/HTML/Element/noscript", + "object": "https://developer.mozilla.org/docs/Web/HTML/Element/object", + "ol": "https://developer.mozilla.org/docs/Web/HTML/Element/ol", + "optgroup": "https://developer.mozilla.org/docs/Web/HTML/Element/optgroup", + "option": "https://developer.mozilla.org/docs/Web/HTML/Element/option", + "output": "https://developer.mozilla.org/docs/Web/HTML/Element/output", + "p": "https://developer.mozilla.org/docs/Web/HTML/Element/p", + "param": "https://developer.mozilla.org/docs/Web/HTML/Element/param", + "picture": "https://developer.mozilla.org/docs/Web/HTML/Element/picture", + "plaintext": "https://developer.mozilla.org/docs/Web/HTML/Element/plaintext", + "pre": "https://developer.mozilla.org/docs/Web/HTML/Element/pre", + "progress": "https://developer.mozilla.org/docs/Web/HTML/Element/progress", + "q": "https://developer.mozilla.org/docs/Web/HTML/Element/q", + "rp": "https://developer.mozilla.org/docs/Web/HTML/Element/rp", + "rt": "https://developer.mozilla.org/docs/Web/HTML/Element/rt", + "ruby": "https://developer.mozilla.org/docs/Web/HTML/Element/ruby", + "s": "https://developer.mozilla.org/docs/Web/HTML/Element/s", + "samp": "https://developer.mozilla.org/docs/Web/HTML/Element/samp", + "script": "https://developer.mozilla.org/docs/Web/HTML/Element/script", + "section": "https://developer.mozilla.org/docs/Web/HTML/Element/section", + "select": "https://developer.mozilla.org/docs/Web/HTML/Element/select", + "shadow": "https://developer.mozilla.org/docs/Web/HTML/Element/shadow", + "small": "https://developer.mozilla.org/docs/Web/HTML/Element/small", + "source": "https://developer.mozilla.org/docs/Web/HTML/Element/source", + "spacer": "https://developer.mozilla.org/docs/Web/HTML/Element/spacer", + "span": "https://developer.mozilla.org/docs/Web/HTML/Element/span", + "strike": "https://developer.mozilla.org/docs/Web/HTML/Element/strike", + "strong": "https://developer.mozilla.org/docs/Web/HTML/Element/strong", + "style": "https://developer.mozilla.org/docs/Web/HTML/Element/style", + "sub": "https://developer.mozilla.org/docs/Web/HTML/Element/sub", + "summary": "https://developer.mozilla.org/docs/Web/HTML/Element/summary", + "sup": "https://developer.mozilla.org/docs/Web/HTML/Element/sup", + "table": "https://developer.mozilla.org/docs/Web/HTML/Element/table", + "tbody": "https://developer.mozilla.org/docs/Web/HTML/Element/tbody", + "td": "https://developer.mozilla.org/docs/Web/HTML/Element/td", + "template": "https://developer.mozilla.org/docs/Web/HTML/Element/template", + "textarea": "https://developer.mozilla.org/docs/Web/HTML/Element/textarea", + "tfoot": "https://developer.mozilla.org/docs/Web/HTML/Element/tfoot", + "th": "https://developer.mozilla.org/docs/Web/HTML/Element/th", + "thead": "https://developer.mozilla.org/docs/Web/HTML/Element/thead", + "time": "https://developer.mozilla.org/docs/Web/HTML/Element/time", + "title": "https://developer.mozilla.org/docs/Web/HTML/Element/title", + "tr": "https://developer.mozilla.org/docs/Web/HTML/Element/tr", + "track": "https://developer.mozilla.org/docs/Web/HTML/Element/track", + "tt": "https://developer.mozilla.org/docs/Web/HTML/Element/tt", + "u": "https://developer.mozilla.org/docs/Web/HTML/Element/u", + "ul": "https://developer.mozilla.org/docs/Web/HTML/Element/ul", + "var": "https://developer.mozilla.org/docs/Web/HTML/Element/var", + "video": "https://developer.mozilla.org/docs/Web/HTML/Element/video", + "wbr": "https://developer.mozilla.org/docs/Web/HTML/Element/wbr", + "xmp": "https://developer.mozilla.org/docs/Web/HTML/Element/xmp" +} \ No newline at end of file diff --git a/resources/editor-help/mathml.json b/resources/editor-help/mathml.json new file mode 100644 index 0000000000..bb16b14cb3 --- /dev/null +++ b/resources/editor-help/mathml.json @@ -0,0 +1,42 @@ +{ + "maction": "https://developer.mozilla.org/docs/Web/MathML/Element/maction", + "maligngroup": "https://developer.mozilla.org/docs/Web/MathML/Element/maligngroup", + "malignmark": "https://developer.mozilla.org/docs/Web/MathML/Element/malignmark", + "math": "https://developer.mozilla.org/docs/Web/MathML/Element/math", + "menclose": "https://developer.mozilla.org/docs/Web/MathML/Element/menclose", + "merror": "https://developer.mozilla.org/docs/Web/MathML/Element/merror", + "mfenced": "https://developer.mozilla.org/docs/Web/MathML/Element/mfenced", + "mfrac": "https://developer.mozilla.org/docs/Web/MathML/Element/mfrac", + "mglyph": "https://developer.mozilla.org/docs/Web/MathML/Element/mglyph", + "mi": "https://developer.mozilla.org/docs/Web/MathML/Element/mi", + "mlabeledtr": "https://developer.mozilla.org/docs/Web/MathML/Element/mlabeledtr", + "mlongdiv": "https://developer.mozilla.org/docs/Web/MathML/Element/mlongdiv", + "mmultiscripts": "https://developer.mozilla.org/docs/Web/MathML/Element/mmultiscripts", + "mn": "https://developer.mozilla.org/docs/Web/MathML/Element/mn", + "mo": "https://developer.mozilla.org/docs/Web/MathML/Element/mo", + "mover": "https://developer.mozilla.org/docs/Web/MathML/Element/mover", + "mpadded": "https://developer.mozilla.org/docs/Web/MathML/Element/mpadded", + "mphantom": "https://developer.mozilla.org/docs/Web/MathML/Element/mphantom", + "mroot": "https://developer.mozilla.org/docs/Web/MathML/Element/mroot", + "mrow": "https://developer.mozilla.org/docs/Web/MathML/Element/mrow", + "ms": "https://developer.mozilla.org/docs/Web/MathML/Element/ms", + "mscarries": "https://developer.mozilla.org/docs/Web/MathML/Element/mscarries", + "mscarry": "https://developer.mozilla.org/docs/Web/MathML/Element/mscarry", + "msgroup": "https://developer.mozilla.org/docs/Web/MathML/Element/msgroup", + "msline": "https://developer.mozilla.org/docs/Web/MathML/Element/msline", + "mspace": "https://developer.mozilla.org/docs/Web/MathML/Element/mspace", + "msqrt": "https://developer.mozilla.org/docs/Web/MathML/Element/msqrt", + "msrow": "https://developer.mozilla.org/docs/Web/MathML/Element/msrow", + "mstack": "https://developer.mozilla.org/docs/Web/MathML/Element/mstack", + "mstyle": "https://developer.mozilla.org/docs/Web/MathML/Element/mstyle", + "msub": "https://developer.mozilla.org/docs/Web/MathML/Element/msub", + "msubsup": "https://developer.mozilla.org/docs/Web/MathML/Element/msubsup", + "msup": "https://developer.mozilla.org/docs/Web/MathML/Element/msup", + "mtable": "https://developer.mozilla.org/docs/Web/MathML/Element/mtable", + "mtd": "https://developer.mozilla.org/docs/Web/MathML/Element/mtd", + "mtext": "https://developer.mozilla.org/docs/Web/MathML/Element/mtext", + "mtr": "https://developer.mozilla.org/docs/Web/MathML/Element/mtr", + "munder": "https://developer.mozilla.org/docs/Web/MathML/Element/munder", + "munderover": "https://developer.mozilla.org/docs/Web/MathML/Element/munderover", + "semantics": "https://developer.mozilla.org/docs/MathML/Element/semantics" +} \ No newline at end of file diff --git a/resources/editor-help/opf2.json b/resources/editor-help/opf2.json new file mode 100644 index 0000000000..aae1ebc07b --- /dev/null +++ b/resources/editor-help/opf2.json @@ -0,0 +1,36 @@ +{ + "content": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "contributor": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.6", + "coverage": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.14", + "creator": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.2", + "date": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.7", + "description": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.4", + "docauthor": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "doctitle": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "format": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.9", + "guide": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.6", + "identifier": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.10", + "item": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.3", + "itemref": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4", + "language": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.12", + "manifest": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.3", + "metadata": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2", + "navlabel": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "navmap": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "navpoint": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "ncx": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "package": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.1", + "pagelist": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "pagetarget": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "publisher": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.5", + "reference": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.6", + "relation": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.13", + "rights": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.15", + "source": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.11", + "spine": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4", + "subject": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.3", + "text": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.4.1.2", + "title": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.1", + "tours": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.5", + "type": "http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#Section2.2.8" +} \ No newline at end of file diff --git a/resources/editor-help/opf3.json b/resources/editor-help/opf3.json new file mode 100644 index 0000000000..421baf0289 --- /dev/null +++ b/resources/editor-help/opf3.json @@ -0,0 +1,22 @@ +{ + "bindings": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-bindings-elem", + "collection": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-collection-elem", + "contributor": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-opf-dccontributor", + "creator": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-opf-dccreator", + "date": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-opf-dcdate", + "guide": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-guide-elem", + "identifier": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-identifier-elem", + "item": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-item-elem", + "itemref": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-itemref-elem", + "language": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-language-elem", + "link": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-link-elem", + "manifest": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-manifest-elem", + "mediatype": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-mediaType-elem", + "meta": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-meta-elem", + "metadata": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-metadata-elem", + "package": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-package-elem", + "source": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-opf-dcsource", + "spine": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-spine-elem", + "title": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-title-elem", + "type": "http://www.idpf.org/epub/301/spec/epub-publications.html#sec-opf-dctype" +} \ No newline at end of file diff --git a/resources/editor-help/svg.json b/resources/editor-help/svg.json new file mode 100644 index 0000000000..df120374d5 --- /dev/null +++ b/resources/editor-help/svg.json @@ -0,0 +1,82 @@ +{ + "a": "https://developer.mozilla.org/docs/Web/SVG/Element/a", + "altglyph": "https://developer.mozilla.org/docs/Web/SVG/Element/altGlyph", + "altglyphdef": "https://developer.mozilla.org/docs/Web/SVG/Element/altGlyphDef", + "altglyphitem": "https://developer.mozilla.org/docs/Web/SVG/Element/altGlyphItem", + "animate": "https://developer.mozilla.org/docs/Web/SVG/Element/animate", + "animatecolor": "https://developer.mozilla.org/docs/Web/SVG/Element/animateColor", + "animatemotion": "https://developer.mozilla.org/docs/Web/SVG/Element/animateMotion", + "animatetransform": "https://developer.mozilla.org/docs/Web/SVG/Element/animateTransform", + "circle": "https://developer.mozilla.org/docs/Web/SVG/Element/circle", + "clippath": "https://developer.mozilla.org/docs/Web/SVG/Element/clipPath", + "color-profile": "https://developer.mozilla.org/docs/Web/SVG/Element/color-profile", + "cursor": "https://developer.mozilla.org/docs/Web/SVG/Element/cursor", + "defs": "https://developer.mozilla.org/docs/Web/SVG/Element/defs", + "desc": "https://developer.mozilla.org/docs/Web/SVG/Element/desc", + "ellipse": "https://developer.mozilla.org/docs/Web/SVG/Element/ellipse", + "feblend": "https://developer.mozilla.org/docs/Web/SVG/Element/feBlend", + "fecolormatrix": "https://developer.mozilla.org/docs/Web/SVG/Element/feColorMatrix", + "fecomponenttransfer": "https://developer.mozilla.org/docs/Web/SVG/Element/feComponentTransfer", + "fecomposite": "https://developer.mozilla.org/docs/Web/SVG/Element/feComposite", + "feconvolvematrix": "https://developer.mozilla.org/docs/Web/SVG/Element/feConvolveMatrix", + "fediffuselighting": "https://developer.mozilla.org/docs/Web/SVG/Element/feDiffuseLighting", + "fedisplacementmap": "https://developer.mozilla.org/docs/Web/SVG/Element/feDisplacementMap", + "fedistantlight": "https://developer.mozilla.org/docs/Web/SVG/Element/feDistantLight", + "feflood": "https://developer.mozilla.org/docs/Web/SVG/Element/feFlood", + "fefunca": "https://developer.mozilla.org/docs/Web/SVG/Element/feFuncA", + "fefuncb": "https://developer.mozilla.org/docs/Web/SVG/Element/feFuncB", + "fefuncg": "https://developer.mozilla.org/docs/Web/SVG/Element/feFuncG", + "fefuncr": "https://developer.mozilla.org/docs/Web/SVG/Element/feFuncR", + "fegaussianblur": "https://developer.mozilla.org/docs/Web/SVG/Element/feGaussianBlur", + "feimage": "https://developer.mozilla.org/docs/Web/SVG/Element/feImage", + "femerge": "https://developer.mozilla.org/docs/Web/SVG/Element/feMerge", + "femergenode": "https://developer.mozilla.org/docs/Web/SVG/Element/feMergeNode", + "femorphology": "https://developer.mozilla.org/docs/Web/SVG/Element/feMorphology", + "feoffset": "https://developer.mozilla.org/docs/Web/SVG/Element/feOffset", + "fepointlight": "https://developer.mozilla.org/docs/Web/SVG/Element/fePointLight", + "fespecularlighting": "https://developer.mozilla.org/docs/Web/SVG/Element/feSpecularLighting", + "fespotlight": "https://developer.mozilla.org/docs/Web/SVG/Element/feSpotLight", + "fetile": "https://developer.mozilla.org/docs/Web/SVG/Element/feTile", + "feturbulence": "https://developer.mozilla.org/docs/Web/SVG/Element/feTurbulence", + "filter": "https://developer.mozilla.org/docs/Web/SVG/Element/filter", + "font": "https://developer.mozilla.org/docs/Web/SVG/Element/font", + "font-face": "https://developer.mozilla.org/docs/Web/SVG/Element/font-face", + "font-face-format": "https://developer.mozilla.org/docs/Web/SVG/Element/font-face-format", + "font-face-name": "https://developer.mozilla.org/docs/Web/SVG/Element/font-face-name", + "font-face-src": "https://developer.mozilla.org/docs/Web/SVG/Element/font-face-src", + "font-face-uri": "https://developer.mozilla.org/docs/Web/SVG/Element/font-face-uri", + "foreignobject": "https://developer.mozilla.org/docs/Web/SVG/Element/foreignObject", + "g": "https://developer.mozilla.org/docs/Web/SVG/Element/g", + "glyph": "https://developer.mozilla.org/docs/Web/SVG/Element/glyph", + "glyphref": "https://developer.mozilla.org/docs/Web/SVG/Element/glyphRef", + "hkern": "https://developer.mozilla.org/docs/Web/SVG/Element/hkern", + "image": "https://developer.mozilla.org/docs/Web/SVG/Element/image", + "line": "https://developer.mozilla.org/docs/Web/SVG/Element/line", + "lineargradient": "https://developer.mozilla.org/docs/Web/SVG/Element/linearGradient", + "marker": "https://developer.mozilla.org/docs/Web/SVG/Element/marker", + "mask": "https://developer.mozilla.org/docs/Web/SVG/Element/mask", + "metadata": "https://developer.mozilla.org/docs/Web/SVG/Element/metadata", + "missing-glyph": "https://developer.mozilla.org/docs/Web/SVG/Element/missing-glyph", + "mpath": "https://developer.mozilla.org/docs/Web/SVG/Element/mpath", + "path": "https://developer.mozilla.org/docs/Web/SVG/Element/path", + "pattern": "https://developer.mozilla.org/docs/Web/SVG/Element/pattern", + "polygon": "https://developer.mozilla.org/docs/Web/SVG/Element/polygon", + "polyline": "https://developer.mozilla.org/docs/Web/SVG/Element/polyline", + "radialgradient": "https://developer.mozilla.org/docs/Web/SVG/Element/radialGradient", + "rect": "https://developer.mozilla.org/docs/Web/SVG/Element/rect", + "script": "https://developer.mozilla.org/docs/Web/SVG/Element/script", + "set": "https://developer.mozilla.org/docs/Web/SVG/Element/set", + "stop": "https://developer.mozilla.org/docs/Web/SVG/Element/stop", + "style": "https://developer.mozilla.org/docs/Web/SVG/Element/style", + "svg": "https://developer.mozilla.org/docs/Web/SVG/Element/svg", + "switch": "https://developer.mozilla.org/docs/Web/SVG/Element/switch", + "symbol": "https://developer.mozilla.org/docs/Web/SVG/Element/symbol", + "text": "https://developer.mozilla.org/docs/Web/SVG/Element/text", + "textpath": "https://developer.mozilla.org/docs/Web/SVG/Element/textPath", + "title": "https://developer.mozilla.org/docs/Web/SVG/Element/title", + "tref": "https://developer.mozilla.org/docs/Web/SVG/Element/tref", + "tspan": "https://developer.mozilla.org/docs/Web/SVG/Element/tspan", + "use": "https://developer.mozilla.org/docs/Web/SVG/Element/use", + "view": "https://developer.mozilla.org/docs/Web/SVG/Element/view", + "vkern": "https://developer.mozilla.org/docs/Web/SVG/Element/vkern" +} \ No newline at end of file diff --git a/src/calibre/ebooks/oeb/polish/container.py b/src/calibre/ebooks/oeb/polish/container.py index 3e091d87e7..710cd0ce84 100644 --- a/src/calibre/ebooks/oeb/polish/container.py +++ b/src/calibre/ebooks/oeb/polish/container.py @@ -532,6 +532,14 @@ class Container(object): # {{{ return O(BytesIO(mi), basedir=self.opf_dir, unquote_urls=False, populate_spine=False).to_book_metadata() + @property + def opf_version(self): + ' The version set on the OPF\'s element ' + try: + return self.opf_xpath('//opf:package/@version')[0] + except IndexError: + return '' + @property def manifest_id_map(self): ' Mapping of manifest id to canonical names ' diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 6489b5412e..b6e356e950 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -1039,6 +1039,8 @@ class SanitizeLibraryPath(object): os.environ['LD_LIBRARY_PATH'] = self.orig def open_url(qurl): + if isinstance(qurl, basestring): + qurl = QUrl(qurl) with SanitizeLibraryPath(): QDesktopServices.openUrl(qurl) diff --git a/src/calibre/gui2/tweak_book/editor/__init__.py b/src/calibre/gui2/tweak_book/editor/__init__.py index 67f3ef1b23..39353cfaed 100644 --- a/src/calibre/gui2/tweak_book/editor/__init__.py +++ b/src/calibre/gui2/tweak_book/editor/__init__.py @@ -37,6 +37,8 @@ SYNTAX_PROPERTY = QTextCharFormat.UserProperty SPELL_PROPERTY = SYNTAX_PROPERTY + 1 SPELL_LOCALE_PROPERTY = SPELL_PROPERTY + 1 LINK_PROPERTY = SPELL_LOCALE_PROPERTY + 1 +TAG_NAME_PROPERTY = LINK_PROPERTY + 1 +CSS_PROPERTY = TAG_NAME_PROPERTY + 1 def syntax_text_char_format(*args): ans = QTextCharFormat(*args) diff --git a/src/calibre/gui2/tweak_book/editor/help.py b/src/calibre/gui2/tweak_book/editor/help.py new file mode 100644 index 0000000000..f6baa03734 --- /dev/null +++ b/src/calibre/gui2/tweak_book/editor/help.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python +# vim:fileencoding=utf-8 +from __future__ import (unicode_literals, division, absolute_import, + print_function) + +__license__ = 'GPL v3' +__copyright__ = '2014, Kovid Goyal ' + +import json +from functools import partial + +from lxml import html + +from calibre import browser +from calibre.ebooks.oeb.polish.container import OEB_DOCS +from calibre.ebooks.oeb.polish.utils import guess_type + +class URLMap(object): + + def __init__(self): + self.cache = {} + + def __getitem__(self, key): + try: + return self.cache[key] + except KeyError: + try: + self.cache[key] = ans = json.loads(P('editor-help/%s.json' % key, data=True)) + except EnvironmentError: + raise KeyError('The mapping %s is not available' % key) + return ans + +_url_map = URLMap() + +def help_url(item, item_type, doc_name, extra_data=None): + url = None + url_maps = () + item = item.lower() + if item_type == 'css_property': + url_maps = ('css',) + else: + mt = guess_type(doc_name) + if mt in OEB_DOCS: + url_maps = ('html', 'svg', 'mathml') + elif mt == guess_type('a.svg'): + url_maps = ('svg',) + elif mt == guess_type('a.opf'): + version = '3' if getattr(extra_data, 'startswith', lambda x: False)('3') else '2' + url_maps = (('opf' + version),) + elif mt == guess_type('a.svg'): + url_maps = ('svg',) + elif mt == guess_type('a.ncx'): + url_maps = ('opf2',) + + for umap in url_maps: + umap = _url_map[umap] + if item in umap: + url = umap[item] + break + item = item.partition(':')[-1] + if item and item in umap: + url = umap[item] + break + + return url + +def get_mdn_tag_index(category): + url = 'https://developer.mozilla.org/docs/Web/%s/Element' % category + if category == 'CSS': + url = url.replace('Element', 'Reference') + br = browser() + raw = br.open(url).read() + root = html.fromstring(raw) + ans = {} + if category == 'CSS': + xpath = '//div[@class="index"]/descendant::a[contains(@href, "/Web/CSS/")]/@href' + else: + xpath = '//a[contains(@href, "/%s/Element/")]/@href' % category + for href in root.xpath(xpath): + href = href.replace('/en-US/', '/') + ans[href.rpartition('/')[-1].lower()] = 'https://developer.mozilla.org' + href + return ans + +def get_opf2_tag_index(): + base = 'http://www.idpf.org/epub/20/spec/OPF_2.0.1_draft.htm#' + ans = {} + for i, tag in enumerate(('package', 'metadata', 'manifest', 'spine', 'tours', 'guide')): + ans[tag] = base + 'Section2.%d' % (i + 1) + for i, tag in enumerate(( + 'title', 'creator', 'subject', 'description', 'publisher', + 'contributor', 'date', 'type', 'format', 'identifier', 'source', + 'language', 'relation', 'coverage', 'rights')): + ans[tag] = base + 'Section2.2.%d' % (i + 1) + ans['item'] = ans['manifest'] + ans['itemref'] = ans['spine'] + ans['reference'] = ans['guide'] + for tag in ('ncx', 'docTitle', 'docAuthor', 'navMap', 'navPoint', 'navLabel', 'text', 'content', 'pageList', 'pageTarget'): + ans[tag.lower()] = base + 'Section2.4.1.2' + return ans + +def get_opf3_tag_index(): + base = 'http://www.idpf.org/epub/301/spec/epub-publications.html#' + ans = {} + for tag in ( + 'package', 'metadata', 'identifier', 'title', 'language', 'meta', + 'link', 'manifest', 'item', 'spine', 'itemref', 'guide', + 'bindings', 'mediaType', 'collection'): + ans[tag.lower()] = base + 'sec-%s-elem' % tag + for tag in ('contributor', 'creator', 'date', 'source', 'type',): + ans[tag.lower()] = base + 'sec-opf-dc' + tag + return ans + +def write_tag_help(): + base = 'editor-help/%s.json' + dump = partial(json.dumps, indent=2, sort_keys=True) + + for category in ('HTML', 'SVG', 'MathML', 'CSS'): + data = get_mdn_tag_index(category) + with open(P(base % category.lower()), 'wb') as f: + f.write(dump(data)) + + with open(P(base % 'opf2'), 'wb') as f: + f.write(dump(get_opf2_tag_index())) + + with open(P(base % 'opf3'), 'wb') as f: + f.write(dump(get_opf3_tag_index())) + +if __name__ == '__main__': + write_tag_help() diff --git a/src/calibre/gui2/tweak_book/editor/syntax/css.py b/src/calibre/gui2/tweak_book/editor/syntax/css.py index 64821fb036..0af0ad300d 100644 --- a/src/calibre/gui2/tweak_book/editor/syntax/css.py +++ b/src/calibre/gui2/tweak_book/editor/syntax/css.py @@ -11,7 +11,7 @@ import re from PyQt4.Qt import QTextBlockUserData from calibre.gui2.tweak_book import verify_link -from calibre.gui2.tweak_book.editor import syntax_text_char_format, LINK_PROPERTY +from calibre.gui2.tweak_book.editor import syntax_text_char_format, LINK_PROPERTY, CSS_PROPERTY from calibre.gui2.tweak_book.editor.syntax.base import SyntaxHighlighter space_pat = re.compile(r'[ \n\t\r\f]+') @@ -29,7 +29,9 @@ URL_TOKEN = 'url' content_tokens = [(re.compile(k), v, n) for k, v, n in [ (r'url\(.*?\)', 'string', URL_TOKEN), + (r'@\S+', 'preproc', 'at-rule'), + (r'(azimuth|background-attachment|background-color|' r'background-image|background-position|background-repeat|' r'background|border-bottom-color|border-bottom-style|' @@ -86,7 +88,8 @@ content_tokens = [(re.compile(k), v, n) for k, v, n in [ r'transparent|ultra-condensed|ultra-expanded|underline|' r'upper-alpha|upper-latin|upper-roman|uppercase|url|' r'visible|w-resize|wait|wider|x-fast|x-high|x-large|x-loud|' - r'x-low|x-small|x-soft|xx-large|xx-small|yes)\b', 'keyword', 'keyword'), + r'x-low|x-small|x-soft|xx-large|xx-small|yes|src)\b', 'keyword', 'keyword'), + (r'(indigo|gold|firebrick|indianred|yellow|darkolivegreen|' r'darkseagreen|mediumvioletred|mediumorchid|chartreuse|' r'mediumslateblue|black|springgreen|crimson|lightsalmon|brown|' @@ -112,13 +115,21 @@ content_tokens = [(re.compile(k), v, n) for k, v, n in [ r'lightslategray|lawngreen|lightgreen|tomato|hotpink|' r'lightyellow|lavenderblush|linen|mediumaquamarine|green|' r'blueviolet|peachpuff)\b', 'colorname', 'colorname'), + (r'\!important', 'preproc', 'important'), + (r'\#[a-zA-Z0-9]{1,6}', 'number', 'hexnumber'), + (r'[\.-]?[0-9]*[\.]?[0-9]+(em|px|pt|pc|in|mm|cm|ex|s|rem)\b', 'number', 'dimension'), + (r'[\.-]?[0-9]*[\.]?[0-9]+%(?=$|[ \n\t\f\r;}{()\[\]])', 'number', 'dimension'), + (r'-?[0-9]+', 'number', 'number'), + (r'[~\^\*!%&<>\|+=@:,./?-]+', 'operator', 'operator'), + (r'[\[\]();]+', 'bracket', 'bracket'), + (r'[a-zA-Z_][a-zA-Z0-9_]*', 'identifier', 'ident') ]] @@ -266,8 +277,6 @@ def create_formats(highlighter): 'comment': theme['Comment'], 'error': theme['Error'], 'string': theme['String'], - 'preproc': theme['PreProc'], - 'keyword': theme['Keyword'], 'colorname': theme['Constant'], 'number': theme['Number'], 'operator': theme['Function'], @@ -290,6 +299,10 @@ def create_formats(highlighter): formats['bad_link'] = syntax_text_char_format(theme['BadLink']) formats['bad_link'].setProperty(LINK_PROPERTY, True) formats['bad_link'].setToolTip(_('This link points to a file that is not present in the book')) + formats['preproc'] = f = syntax_text_char_format(theme['PreProc']) + f.setProperty(CSS_PROPERTY, True) + formats['keyword'] = f = syntax_text_char_format(theme['Keyword']) + f.setProperty(CSS_PROPERTY, True) return formats diff --git a/src/calibre/gui2/tweak_book/editor/syntax/html.py b/src/calibre/gui2/tweak_book/editor/syntax/html.py index 55d524fd78..cc340b4572 100644 --- a/src/calibre/gui2/tweak_book/editor/syntax/html.py +++ b/src/calibre/gui2/tweak_book/editor/syntax/html.py @@ -17,7 +17,8 @@ from calibre.spell.dictionary import parse_lang_code from calibre.spell.break_iterator import split_into_words_and_positions from calibre.gui2.tweak_book import dictionaries, tprefs, verify_link from calibre.gui2.tweak_book.editor import ( - syntax_text_char_format, SPELL_PROPERTY, SPELL_LOCALE_PROPERTY, store_locale, LINK_PROPERTY) + syntax_text_char_format, SPELL_PROPERTY, SPELL_LOCALE_PROPERTY, + store_locale, LINK_PROPERTY, TAG_NAME_PROPERTY) from calibre.gui2.tweak_book.editor.syntax.base import SyntaxHighlighter, run_loop from calibre.gui2.tweak_book.editor.syntax.css import ( create_formats as create_css_formats, state_map as css_state_map, CSSState, CSSUserData) @@ -504,7 +505,6 @@ def create_formats(highlighter, add_css=True): 'tag': t['Function'], 'end_tag': t['Function'], 'attr': t['Type'], - 'tag_name' : t['Statement'], 'entity': t['Special'], 'error': t['Error'], 'comment': t['Comment'], @@ -538,6 +538,8 @@ def create_formats(highlighter, add_css=True): formats['bad_link'] = syntax_text_char_format(t['BadLink']) formats['bad_link'].setProperty(LINK_PROPERTY, True) formats['bad_link'].setToolTip(_('This link points to a file that is not present in the book')) + formats['tag_name'] = f = syntax_text_char_format(t['Statement']) + f.setProperty(TAG_NAME_PROPERTY, True) return formats diff --git a/src/calibre/gui2/tweak_book/editor/widget.py b/src/calibre/gui2/tweak_book/editor/widget.py index 0afac2659a..f93c912b3d 100644 --- a/src/calibre/gui2/tweak_book/editor/widget.py +++ b/src/calibre/gui2/tweak_book/editor/widget.py @@ -16,9 +16,10 @@ from PyQt4.Qt import ( from calibre import prints from calibre.constants import DEBUG from calibre.ebooks.chardet import replace_encoding_declarations -from calibre.gui2 import error_dialog +from calibre.gui2 import error_dialog, open_url from calibre.gui2.tweak_book import actions, current_container, tprefs, dictionaries, editor_toolbar_actions, editor_name -from calibre.gui2.tweak_book.editor import SPELL_PROPERTY, LINK_PROPERTY +from calibre.gui2.tweak_book.editor import SPELL_PROPERTY, LINK_PROPERTY, TAG_NAME_PROPERTY, CSS_PROPERTY +from calibre.gui2.tweak_book.editor.help import help_url from calibre.gui2.tweak_book.editor.text import TextEdit from calibre.utils.icu import utf16_length @@ -443,6 +444,13 @@ class Editor(QMainWindow): href = self.editor.text_for_range(origc.block(), origr) m.addAction(_('Open %s') % href, partial(self.link_clicked.emit, href)) + if origr is not None and (origr.format.property(TAG_NAME_PROPERTY).toBool() or origr.format.property(CSS_PROPERTY).toBool()): + word = self.editor.text_for_range(origc.block(), origr) + item_type = 'tag_name' if origr.format.property(TAG_NAME_PROPERTY).toBool() else 'css_property' + url = help_url(word, item_type, self.editor.highlighter.doc_name, extra_data=current_container().opf_version) + if url is not None: + m.addAction(_('Show help for: %s') % word, partial(open_url, url)) + for x in ('undo', 'redo'): a(actions['editor-%s' % x]) m.addSeparator()