Has anyone played much with class QClipboard? I did a couple of trivial
experiments but I must be misunderstanding something.
for instance, QClipboard.image() returns a non-null value even if the
clipboard does not contain an image.
J^n
On Monday, March 11, 2024 at 4:33:23 PM UTC [email protected] wrote:
> It turns out that to get the relative path conversion w have to remove any
> quotation marks around the path before running os.relpath(). So the script
> becomes:
>
> """Insert RsT code at cursor to display an image.
>
> The path to the image file will come from a file dialog.
> This action is undoable.
> """
> PATH = g.app.gui.runOpenFileDialog(c,
> title="Import File",
> filetypes=[("All files", "*"),],
> defaultextension=".*",
> multiple=False)
>
> if PATH:
> from os.path import relpath
> PATH = PATH.replace('"', '').replace("'", '')
> PATH = relpath(PATH)
> PATH = PATH.replace('\\', '/')
>
> IMAGE_TEMPLATE = f'''
>
> .. figure:: {PATH}
> :scale: 50%
>
> '''
>
> w = c.frame.body.wrapper
> p = c.p
> s = p.b
> u = c.undoer
>
> start, _ = w.getSelectionRange()
>
> undoType = 'insert-rst-image-code'
> undoData = u.beforeChangeNodeContents(p)
>
> head, tail = s[:start], s[start:]
> p.b = head + IMAGE_TEMPLATE + tail
>
> c.setChanged()
> p.setDirty()
> u.afterChangeNodeContents(p, undoType, undoData)
> c.redraw()
>
> On Saturday, March 9, 2024 at 2:04:19 PM UTC-5 Thomas Passin wrote:
>
>> We can't directly insert an image into a standard Leo node because they
>> are text-only. I find this very annoying sometimes, especially when I am
>> writing a note and want to include an image.
>>
>> But we can do the next best thing - insert an ReStructuredText (RsT)
>> instruction to display an image so that we can view it with the
>> viewrendered3 plugin (VR3). The instruction is short and easy, but it's
>> still annoying to type and I usually forget the exact details. I have a
>> button that toggles VR3 on and off so that it's easy to view an embedded
>> image once the RsT instruction is there. An embedding command would make
>> embedding with Leo as easy as embedding an image in a word processor.
>> Aha, this is Leo, let's write a script!
>>
>> Here is a script that pops up a file dialog and inserts a relative path
>> to the chosen file. There are several small variations which I discuss
>> after the code.
>>
>> """Insert RsT code at cursor to display an image.
>>
>> The path to the image file will come from a file dialog.
>> This action is undoable.
>> """
>> PATH = g.app.gui.runOpenFileDialog(c,
>> title="Import File",
>> filetypes=[("All files", "*"),],
>> defaultextension=".*",
>> multiple=False)
>>
>> if PATH:
>> from os.path import relpath
>> PATH = relpath(PATH)
>> PATH = PATH.replace('\\', '/').replace('"', '').replace("'", '')
>> IMAGE_TEMPLATE = f'''
>>
>> .. figure:: {PATH}
>> :scale: 50%
>>
>> '''
>> w = c.frame.body.wrapper
>> p = c.p
>> s = p.b
>> u = c.undoer
>>
>> start, _ = w.getSelectionRange()
>>
>> undoType = 'insert-rst-image-code'
>> undoData = u.beforeChangeNodeContents(p)
>>
>> head, tail = s[:start], s[start:]
>> p.b = head + IMAGE_TEMPLATE + tail
>>
>> c.setChanged()
>> p.setDirty()
>> u.afterChangeNodeContents(p, undoType, undoData)
>> c.redraw()
>>
>> Variations:
>> 1. If you want an absolute path instead of a relative path, delete the
>> lines
>> from os.path import relpath
>> PATH = relpath(PATH)
>> with
>>
>> 2. If you want to get the path from the clipboard instead of a file
>> dialog, replace the lines
>>
>> PATH = g.app.gui.runOpenFileDialog(c,
>> title="Import File",
>> filetypes=[("All files", "*"),],
>> defaultextension=".*",
>> multiple=False)
>>
>> with the line
>>
>> PATH = g.app.gui.getTextFromClipboard()
>>
>> 3. If you want the embedded image to be full width instead of 50%, delete
>> the line
>>
>> :scale: 50%
>>
>> 4. You can make this work with Markdown or Asciidoc by using their
>> embedding instruction in the TEMPLATE instead of the RsT one.
>>
>> I have added the command to my own local menu. VR3 can open in a tab in
>> the log pane; the command for toggling in a tab is *vr3-toggle-tab. * I
>> usually like opening it in the log pane instead of in its own separate pane.
>>
>> If you would like to create a local menu of your own and don't know how,
>> it's easy. Just ask and I'll show what to add to myLeoSettings,leo.
>>
>
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/leo-editor/f753abeb-9c3f-4f93-a462-54101e9be527n%40googlegroups.com.