Exemplo n.º 1
0
    def setupWeb(self) -> None:
        self.web = EditorWebView(self.widget, self)
        self.web.allowDrops = True
        self.web.set_bridge_command(self.onBridgeCmd, self)
        self.outerLayout.addWidget(self.web, 1)

        bgcol = self.mw.app.palette().window().color().name()  # type: ignore
        # then load page
        self.web.stdHtml(
            _html % (bgcol, tr.editing_show_duplicates()),
            css=[
                "css/editor.css",
                "css/editor-toolbar.css",
            ],
            js=[
                "js/vendor/jquery.min.js",
                "js/vendor/protobuf.min.js",
                "js/editor.js",
                "js/editor-toolbar.js",
            ],
            context=self,
            default_css=False,
        )

        lefttopbtns: List[str] = []
        gui_hooks.editor_did_init_left_buttons(lefttopbtns, self)

        lefttopbtns_defs = [
            f"$editorToolbar.addButton({{ component: editorToolbar.RawButton, html: `{button}` }}, 'notetype');"
            for button in lefttopbtns
        ]
        lefttopbtns_js = "\n".join(lefttopbtns_defs)

        righttopbtns: List[str] = []
        gui_hooks.editor_did_init_buttons(righttopbtns, self)
        # legacy filter
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)

        righttopbtns_defs = "\n".join([
            f"{{ component: editorToolbar.RawButton, html: `{button}` }},"
            for button in righttopbtns
        ])
        righttopbtns_js = (f"""
$editorToolbar.addButtonGroup({{
  id: "addons",
  buttons: [ {righttopbtns_defs} ]
}});
""" if righttopbtns_defs else "")

        self.web.eval(f"""
$editorToolbar = document.getElementById("editorToolbar");
{lefttopbtns_js}
{righttopbtns_js}
""")
Exemplo n.º 2
0
    def setupWeb(self) -> None:
        self.web = EditorWebView(self.widget, self)
        self.web.allowDrops = True
        self.web.set_bridge_command(self.onBridgeCmd, self)
        self.outerLayout.addWidget(self.web, 1)

        # then load page
        self.web.stdHtml(
            _html % tr.editing_show_duplicates(),
            css=[
                "css/editor.css",
            ],
            js=[
                "js/vendor/jquery.min.js",
                "js/vendor/protobuf.min.js",
                "js/editor.js",
            ],
            context=self,
            default_css=True,
        )

        lefttopbtns: List[str] = []
        gui_hooks.editor_did_init_left_buttons(lefttopbtns, self)

        lefttopbtns_defs = [
            f"$editorToolbar.then(({{ notetypeButtons }}) => notetypeButtons.appendButton({{ component: editorToolbar.Raw, props: {{ html: {json.dumps(button)} }} }}, -1));"
            for button in lefttopbtns
        ]
        lefttopbtns_js = "\n".join(lefttopbtns_defs)

        righttopbtns: List[str] = []
        gui_hooks.editor_did_init_buttons(righttopbtns, self)
        # legacy filter
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)

        righttopbtns_defs = ", ".join([json.dumps(button) for button in righttopbtns])
        righttopbtns_js = (
            f"""
$editorToolbar.then(({{ toolbar }}) => toolbar.appendGroup({{
    component: editorToolbar.AddonButtons,
    id: "addons",
    props: {{ buttons: [ {righttopbtns_defs} ] }},
}}));
"""
            if len(righttopbtns) > 0
            else ""
        )

        self.web.eval(f"{lefttopbtns_js} {righttopbtns_js}")
Exemplo n.º 3
0
    def setupWeb(self) -> None:
        self.web = EditorWebView(self.widget, self)
        self.web.set_bridge_command(self.onBridgeCmd, self)
        self.outerLayout.addWidget(self.web, 1)

        if self.editorMode == EditorMode.ADD_CARDS:
            file = "note_creator"
        elif self.editorMode == EditorMode.BROWSER:
            file = "browser_editor"
        else:
            file = "reviewer_editor"

        # then load page
        self.web.stdHtml(
            "",
            css=[f"css/{file}.css"],
            js=[f"js/{file}.js"],
            context=self,
            default_css=False,
        )

        lefttopbtns: list[str] = []
        gui_hooks.editor_did_init_left_buttons(lefttopbtns, self)

        lefttopbtns_defs = [
            f"uiPromise.then((noteEditor) => noteEditor.toolbar.notetypeButtons.appendButton({{ component: editorToolbar.Raw, props: {{ html: {json.dumps(button)} }} }}, -1));"
            for button in lefttopbtns
        ]
        lefttopbtns_js = "\n".join(lefttopbtns_defs)

        righttopbtns: list[str] = []
        gui_hooks.editor_did_init_buttons(righttopbtns, self)
        # legacy filter
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)

        righttopbtns_defs = ", ".join(
            [json.dumps(button) for button in righttopbtns])
        righttopbtns_js = (f"""
uiPromise.then(noteEditor => noteEditor.toolbar.toolbar.appendGroup({{
    component: editorToolbar.AddonButtons,
    id: "addons",
    props: {{ buttons: [ {righttopbtns_defs} ] }},
}}));
""" if len(righttopbtns) > 0 else "")

        self.web.eval(f"{lefttopbtns_js} {righttopbtns_js}")
Exemplo n.º 4
0
    def setupWeb(self) -> None:
        self.web = EditorWebView(self.widget, self)
        self.web.allowDrops = True
        self.web.set_bridge_command(self.onBridgeCmd, self)
        self.outerLayout.addWidget(self.web, 1)

        lefttopbtns: List[str] = [
            self._addButton(
                None,
                "fields",
                tr(TR.EDITING_CUSTOMIZE_FIELDS),
                tr(TR.EDITING_FIELDS) + "...",
                disables=False,
                rightside=False,
            ),
            self._addButton(
                None,
                "cards",
                tr(TR.EDITING_CUSTOMIZE_CARD_TEMPLATES_CTRLANDL),
                tr(TR.EDITING_CARDS) + "...",
                disables=False,
                rightside=False,
            ),
        ]

        gui_hooks.editor_did_init_left_buttons(lefttopbtns, self)

        righttopbtns: List[str] = [
            self._addButton("text_bold",
                            "bold",
                            tr(TR.EDITING_BOLD_TEXT_CTRLANDB),
                            id="bold"),
            self._addButton(
                "text_italic",
                "italic",
                tr(TR.EDITING_ITALIC_TEXT_CTRLANDI),
                id="italic",
            ),
            self._addButton(
                "text_under",
                "underline",
                tr(TR.EDITING_UNDERLINE_TEXT_CTRLANDU),
                id="underline",
            ),
            self._addButton(
                "text_super",
                "super",
                tr(TR.EDITING_SUPERSCRIPT_CTRLANDAND),
                id="superscript",
            ),
            self._addButton("text_sub",
                            "sub",
                            tr(TR.EDITING_SUBSCRIPT_CTRLAND),
                            id="subscript"),
            self._addButton("text_clear", "clear",
                            tr(TR.EDITING_REMOVE_FORMATTING_CTRLANDR)),
            self._addButton(
                None,
                "colour",
                tr(TR.EDITING_SET_FOREGROUND_COLOUR_F7),
                """
<div id="forecolor"
     style="display: inline-block; background: #000; border-radius: 5px;"
     class="topbut"
>""",
            ),
            self._addButton(
                None,
                "changeCol",
                tr(TR.EDITING_CHANGE_COLOUR_F8),
                """
<div style="display: inline-block; border-radius: 5px;"
     class="topbut rainbow"
>""",
            ),
            self._addButton("text_cloze", "cloze",
                            tr(TR.EDITING_CLOZE_DELETION_CTRLANDSHIFTANDC)),
            self._addButton("paperclip", "attach",
                            tr(TR.EDITING_ATTACH_PICTURESAUDIOVIDEO_F3)),
            self._addButton("media-record", "record",
                            tr(TR.EDITING_RECORD_AUDIO_F5)),
            self._addButton("more", "more"),
        ]

        gui_hooks.editor_did_init_buttons(righttopbtns, self)
        # legacy filter
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)

        topbuts = """
            <div id="topbutsleft" style="float:left;">
                %(leftbts)s
            </div>
            <div id="topbutsright" style="float:right;">
                %(rightbts)s
            </div>
        """ % dict(
            leftbts="".join(lefttopbtns),
            rightbts="".join(righttopbtns),
        )
        bgcol = self.mw.app.palette().window().color().name()  # type: ignore
        # then load page
        self.web.stdHtml(
            _html % (bgcol, bgcol, topbuts, tr(TR.EDITING_SHOW_DUPLICATES)),
            css=["css/editor.css"],
            js=["js/vendor/jquery.min.js", "js/editor.js"],
            context=self,
        )
Exemplo n.º 5
0
    def setupWeb(self) -> None:
        self.web = EditorWebView(self.widget, self)
        self.web.allowDrops = True
        self.web.set_bridge_command(self.onBridgeCmd, self)
        self.outerLayout.addWidget(self.web, 1)

        righttopbtns: List[str] = [
            self._addButton("text_bold",
                            "bold",
                            _("Bold text (Ctrl+B)"),
                            id="bold"),
            self._addButton("text_italic",
                            "italic",
                            _("Italic text (Ctrl+I)"),
                            id="italic"),
            self._addButton("text_under",
                            "underline",
                            _("Underline text (Ctrl+U)"),
                            id="underline"),
            self._addButton("text_super",
                            "super",
                            _("Superscript (Ctrl++)"),
                            id="superscript"),
            self._addButton("text_sub",
                            "sub",
                            _("Subscript (Ctrl+=)"),
                            id="subscript"),
            self._addButton("text_clear", "clear",
                            _("Remove formatting (Ctrl+R)")),
        ]
        # The color selection buttons do not use an icon so the HTML must be specified manually
        tip = _("Set foreground colour (F7)")
        righttopbtns.append(""" <button tabindex=-1
                        class=linkb
                        title="{}"
                        type="button"
                        onclick="pycmd('colour'); return false;"
                >
                    <div id=forecolor
                         style="display:inline-block; background: #000;border-radius: 5px;"
                         class=topbut
                    >
                    </div>
                </button>""".format(tip))
        tip = _("Change colour (F8)")
        righttopbtns.extend([
            """<button tabindex=-1
                        class=linkb
                        title="{}"
                        type="button"
                        onclick="pycmd('changeCol');return false;"
                >
                    <div style="display:inline-block; border-radius: 5px;"
                         class="topbut rainbow"
                    >
                    </div>
                </button>""".format(tip),
            self._addButton("text_cloze", "cloze",
                            _("Cloze deletion (Ctrl+Shift+C)")),
            self._addButton("paperclip", "attach",
                            _("Attach pictures/audio/video (F3)")),
            self._addButton("media-record", "record", _("Record audio (F5)")),
            self._addButton("more", "more"),
        ])
        gui_hooks.editor_did_init_buttons(righttopbtns, self)
        # legacy filter
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)
        topbuts = """
            <div id="topbutsleft" style="float:left;">
                <button title='%(fldsTitle)s' onclick="pycmd('fields')">%(flds)s...</button>
                <button title='%(cardsTitle)s' onclick="pycmd('cards')">%(cards)s...</button>
            </div>
            <div id="topbutsright" style="float:right;">
                %(rightbts)s
            </div>
        """ % dict(
            flds=_("Fields"),
            cards=_("Cards"),
            rightbts="".join(righttopbtns),
            fldsTitle=_("Customize Fields"),
            cardsTitle=shortcut(_("Customize Card Templates (Ctrl+L)")),
        )
        bgcol = self.mw.app.palette().window().color().name()  # type: ignore
        # then load page
        self.web.stdHtml(
            _html % (bgcol, bgcol, topbuts, _("Show Duplicates")),
            css=["editor.css"],
            js=["jquery.js", "editor.js"],
            context=self,
        )
Exemplo n.º 6
0
    def setupWeb(self) -> None:
        self.web = EditorWebView(self.widget, self)
        self.web.allowDrops = True
        self.web.set_bridge_command(self.onBridgeCmd, self)
        self.outerLayout.addWidget(self.web, 1)

        lefttopbtns: List[str] = [
            self._addButton(
                None,
                "fields",
                _("Customize Fields"),
                _("Fields") + "...",
                disables=False,
                rightside=False,
            ),
            self._addButton(
                None,
                "cards",
                _("Customize Card Templates (Ctrl+L)"),
                _("Cards") + "...",
                disables=False,
                rightside=False,
            ),
        ]

        gui_hooks.editor_did_init_left_buttons(lefttopbtns, self)

        righttopbtns: List[str] = [
            self._addButton("text_bold",
                            "bold",
                            _("Bold text (Ctrl+B)"),
                            id="bold"),
            self._addButton("text_italic",
                            "italic",
                            _("Italic text (Ctrl+I)"),
                            id="italic"),
            self._addButton("text_under",
                            "underline",
                            _("Underline text (Ctrl+U)"),
                            id="underline"),
            self._addButton("text_super",
                            "super",
                            _("Superscript (Ctrl++)"),
                            id="superscript"),
            self._addButton("text_sub",
                            "sub",
                            _("Subscript (Ctrl+=)"),
                            id="subscript"),
            self._addButton("text_clear", "clear",
                            _("Remove formatting (Ctrl+R)")),
            self._addButton(
                None,
                "colour",
                _("Set foreground colour (F7)"),
                """
<div id="forecolor"
     style="display: inline-block; background: #000; border-radius: 5px;"
     class="topbut"
>""",
            ),
            self._addButton(
                None,
                "changeCol",
                _("Change colour (F8)"),
                """
<div style="display: inline-block; border-radius: 5px;"
     class="topbut rainbow"
>""",
            ),
            self._addButton("text_cloze", "cloze",
                            _("Cloze deletion (Ctrl+Shift+C)")),
            self._addButton("paperclip", "attach",
                            _("Attach pictures/audio/video (F3)")),
            self._addButton("media-record", "record", _("Record audio (F5)")),
            self._addButton("more", "more"),
        ]

        gui_hooks.editor_did_init_buttons(righttopbtns, self)
        # legacy filter
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)

        topbuts = """
            <div id="topbutsleft" style="float:left;">
                %(leftbts)s
            </div>
            <div id="topbutsright" style="float:right;">
                %(rightbts)s
            </div>
        """ % dict(
            leftbts="".join(lefttopbtns),
            rightbts="".join(righttopbtns),
        )
        bgcol = self.mw.app.palette().window().color().name()  # type: ignore
        # then load page
        self.web.stdHtml(
            _html % (bgcol, bgcol, topbuts, _("Show Duplicates")),
            css=["css/editor.css"],
            js=["js/vendor/jquery.js", "js/editor.js"],
            context=self,
        )
Exemplo n.º 7
0
Arquivo: editor.py Projeto: qwcbw/anki
    def setupWeb(self) -> None:
        self.web = EditorWebView(self.widget, self)
        self.web.allowDrops = True
        self.web.set_bridge_command(self.onBridgeCmd, self)
        self.outerLayout.addWidget(self.web, 1)

        lefttopbtns: List[str] = [
            self._addButton(
                None,
                "fields",
                tr.editing_customize_fields(),
                f"{tr.editing_fields()}...",
                disables=False,
                rightside=False,
            ),
            self._addButton(
                None,
                "cards",
                tr.editing_customize_card_templates_ctrlandl(),
                f"{tr.editing_cards()}...",
                disables=False,
                rightside=False,
            ),
        ]

        gui_hooks.editor_did_init_left_buttons(lefttopbtns, self)

        righttopbtns: List[str] = [
            self._addButton("text_bold",
                            "bold",
                            tr.editing_bold_text_ctrlandb(),
                            id="bold"),
            self._addButton(
                "text_italic",
                "italic",
                tr.editing_italic_text_ctrlandi(),
                id="italic",
            ),
            self._addButton(
                "text_under",
                "underline",
                tr.editing_underline_text_ctrlandu(),
                id="underline",
            ),
            self._addButton(
                "text_super",
                "super",
                tr.editing_superscript_ctrlandand(),
                id="superscript",
            ),
            self._addButton("text_sub",
                            "sub",
                            tr.editing_subscript_ctrland(),
                            id="subscript"),
            self._addButton("text_clear", "clear",
                            tr.editing_remove_formatting_ctrlandr()),
            self._addButton(
                None,
                "colour",
                tr.editing_set_foreground_colour_f7(),
                """
<span id="forecolor" class="topbut rounded" style="background: #000"></span>
""",
            ),
            self._addButton(
                None,
                "changeCol",
                tr.editing_change_colour_f8(),
                """
<span class="topbut rounded rainbow"></span>
""",
            ),
            self._addButton("text_cloze", "cloze",
                            tr.editing_cloze_deletion_ctrlandshiftandc()),
            self._addButton("paperclip", "attach",
                            tr.editing_attach_picturesaudiovideo_f3()),
            self._addButton("media-record", "record",
                            tr.editing_record_audio_f5()),
            self._addButton("more", "more"),
        ]

        gui_hooks.editor_did_init_buttons(righttopbtns, self)
        # legacy filter
        righttopbtns = runFilter("setupEditorButtons", righttopbtns, self)

        topbuts = """
            <div id="topbutsleft" class="topbuts">
                %(leftbts)s
            </div>
            <div id="topbutsright" class="topbuts">
                %(rightbts)s
            </div>
        """ % dict(
            leftbts="".join(lefttopbtns),
            rightbts="".join(righttopbtns),
        )
        bgcol = self.mw.app.palette().window().color().name()  # type: ignore
        # then load page
        self.web.stdHtml(
            _html % (bgcol, topbuts, tr.editing_show_duplicates()),
            css=[
                "css/vendor/bootstrap.min.css",
                "css/editor.css",
            ],
            js=[
                "js/vendor/jquery.min.js",
                "js/vendor/bootstrap.bundle.min.js",
                "js/editor.js",
            ],
            context=self,
        )
        self.web.eval("preventButtonFocus();")