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} """)
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}")
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}")
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, )
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, )
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, )
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();")