Exemplo n.º 1
0
    def loadNote(self, focusTo=None) -> None:
        if not self.note:
            return

        data = [(fld, self.mw.col.media.escape_media_filenames(val))
                for fld, val in self.note.items()]
        self.widget.show()
        self.updateTags()

        def oncallback(arg):
            if not self.note:
                return
            self.setupForegroundButton()
            self.checkValid()
            if focusTo is not None:
                self.web.setFocus()
            gui_hooks.editor_did_load_note(self)

        js = "setFields(%s); setFonts(%s); focusField(%s); setNoteId(%s)" % (
            json.dumps(data),
            json.dumps(self.fonts()),
            json.dumps(focusTo),
            json.dumps(self.note.id),
        )
        js = gui_hooks.editor_will_load_note(js, self.note, self)
        self.web.evalWithCallback(js, oncallback)
Exemplo n.º 2
0
    def loadNote(self, focusTo: Optional[int] = None) -> None:
        if not self.note:
            return

        data = [(fld, self.mw.col.media.escape_media_filenames(val))
                for fld, val in self.note.items()]
        self.widget.show()
        self.updateTags()

        dupe_status = self.note.duplicate_or_empty()

        def oncallback(arg: Any) -> None:
            if not self.note:
                return
            self.setupForegroundButton()
            # we currently do this synchronously to ensure we load before the
            # sidebar on browser startup
            self._update_duplicate_display(dupe_status)
            if focusTo is not None:
                self.web.setFocus()
            gui_hooks.editor_did_load_note(self)

        js = "setFields(%s); setFonts(%s); focusField(%s); setNoteId(%s);" % (
            json.dumps(data),
            json.dumps(self.fonts()),
            json.dumps(focusTo),
            json.dumps(self.note.id),
        )

        if self.addMode:
            sticky = [field["sticky"] for field in self.note.model()["flds"]]
            js += " setSticky(%s);" % json.dumps(sticky)

        js = gui_hooks.editor_will_load_note(js, self.note, self)
        self.web.evalWithCallback(js, oncallback)
Exemplo n.º 3
0
    def loadNote(self, focusTo: Optional[int] = None) -> None:
        if not self.note:
            return

        data = [(fld, self.mw.col.media.escape_media_filenames(val))
                for fld, val in self.note.items()]
        self.widget.show()
        self.updateTags()

        def oncallback(arg: Any) -> None:
            if not self.note:
                return
            self.setupForegroundButton()
            self.checkValid()
            if focusTo is not None:
                self.web.setFocus()
            gui_hooks.editor_did_load_note(self)

        js = "setFields(%s); setFonts(%s); focusField(%s); setNoteId(%s);" % (
            json.dumps(data),
            json.dumps(self.fonts()),
            json.dumps(focusTo),
            json.dumps(self.note.id),
        )

        if self.addMode:
            sticky = [field["sticky"] for field in self.note.model()["flds"]]
            js += " setSticky(%s);" % json.dumps(sticky)

        js = gui_hooks.editor_will_load_note(js, self.note, self)
        self.web.evalWithCallback(js, oncallback)
Exemplo n.º 4
0
    def loadNote(self, focusTo: int | None = None) -> None:
        if not self.note:
            return

        data = [(fld, self.mw.col.media.escape_media_filenames(val))
                for fld, val in self.note.items()]

        flds = self.note.note_type()["flds"]
        descriptions = [fld.get("description", "") for fld in flds]

        self.widget.show()

        note_fields_status = self.note.fields_check()

        def oncallback(arg: Any) -> None:
            if not self.note:
                return
            self.setupForegroundButton()
            # we currently do this synchronously to ensure we load before the
            # sidebar on browser startup
            self._update_duplicate_display(note_fields_status)
            if focusTo is not None:
                self.web.setFocus()
            gui_hooks.editor_did_load_note(self)

        text_color = self.mw.pm.profile.get("lastTextColor", "#00f")
        highlight_color = self.mw.pm.profile.get("lastHighlightColor", "#00f")

        js = "setFields({}); setDescriptions({}); setFonts({}); focusField({}); setNoteId({}); setColorButtons({}); setTags({}); ".format(
            json.dumps(data),
            json.dumps(descriptions),
            json.dumps(self.fonts()),
            json.dumps(focusTo),
            json.dumps(self.note.id),
            json.dumps([text_color, highlight_color]),
            json.dumps(self.note.tags),
        )

        if self.addMode:
            sticky = [
                field["sticky"] for field in self.note.note_type()["flds"]
            ]
            js += " setSticky(%s);" % json.dumps(sticky)

        js = gui_hooks.editor_will_load_note(js, self.note, self)
        self.web.evalWithCallback(f"noteEditorPromise.then(() => {{ {js} }})",
                                  oncallback)
Exemplo n.º 5
0
def set_pitch_dialog(editor):
    # get user input
    hira = getOnlyText('Enter the reading to be set. (Example: はな)')
    LH_patt = getOnlyText(
        ('Enter the pitch accent pattern as a sequence of \'H\'s and \'L\'s. '
         '(Example: LHL)'))

    # get note data
    data = [(fld, editor.mw.col.media.escapeImages(val))
            for fld, val in editor.note.items()]

    # remove existing patt
    acc_patt = re.compile(
        r'<!-- (user_)?accent_start -->.+<!-- (user_)?accent_end -->', re.S)
    old_field_val = data[editor.web.editor.currentField][1]
    old_field_val_clean = re.sub(acc_patt, '', old_field_val)

    # generate SVG
    svg = pitch_svg(hira, LH_patt)
    if len(old_field_val_clean) > 0:
        separator = '<br><hr><br>'
    else:
        separator = ''
    new_field_val = (
        '{}<!-- user_accent_start -->{}{}<!-- user_accent_end -->').format(
            old_field_val_clean, separator, svg)
    if hira == '' and LH_patt == '':
        new_field_val = old_field_val_clean

    # add new patt
    data[editor.web.editor.currentField] = (
        data[editor.web.editor.currentField][0],  # leave field name as is
        new_field_val  # update field value
    )
    js = 'setFields(%s); setFonts(%s); focusField(%s); setNoteId(%s)' % (
        json.dumps(data), json.dumps(editor.fonts()),
        json.dumps(editor.web.editor.currentField), json.dumps(editor.note.id))
    js = gui_hooks.editor_will_load_note(js, editor.note, editor)
    editor.web.eval(js)