I would expect that to be somewhat os-dependant (I mostly use Linux), but perhaps it is there. I will try to take a look for clipboard-paste functions.
On Saturday, March 9, 2024 at 8:22:44 PM UTC tbp1...@gmail.com wrote: > I seem to remember that somewhere in the code base, Leo code to capture > the screen has already been worked out. If that's the case we're in clover. > > On Saturday, March 9, 2024 at 3:09:24 PM UTC-5 jkn wrote: > >> The way I have been using the Obsidian feature is to paste image bytes >> (eg. from a screen region capture). So Obsidian saves a file: >> >> /path/to/attachments/ >> >> Pasted image 20240228230106.png >> >> >> Where /path/to/attachments is an Obsidian setting, and the name of the >> file is clearly a timestamp. >> >> >> Obsidian only uses markdown, so it inserts >> >> >> ![[Pasted image 20240228230106.png]] >> >> >> into the 'node being edited' >> >> >> I think you can also drag and drop files into a 'node'. >> >> >> There would clearly have to be some work to make this generally useful in >> a Leo context... >> >> >> >> On Saturday, March 9, 2024 at 7:35:15 PM UTC tbp1...@gmail.com wrote: >> >>> Shouldn't be hard. What would be on the clipboard? Image bytes? Or an >>> image filename? I often select an image in a file manager window, copy it >>> to an "images" subdirectory of the current outline, then write the >>> embedding code into and "images" child node. That would be easy to write a >>> script for. >>> >>> On Saturday, March 9, 2024 at 2:14:41 PM UTC-5 jkn wrote: >>> >>>> This looks interesting and useful, thanks Thomas. I confess I >>>> rarely/never use Leo with images, I really should experiment a little. >>>> >>>> Recently I have been using Obsidian as a note-taking app (Joplin is >>>> similar). Neither are as capable as Leo, in many ways, but they have their >>>> niceties. >>>> One that is handy when note-taking is the ability to paste *from the >>>> clipboard*. You can setup an area (directory0 in an Obsidian 'vault' - >>>> then >>>> 'paste from clipboard' will >>>> (a) create a unique filename within the image directory, and put the >>>> clipboard contents in there as eg. a .png file >>>> (b) add a (markdown) reference to the new image in the 'note' that you >>>> are in. >>>> >>>> It'd be nice to have something similar in Leo... ;-) >>>> >>>> Regards, Jon N >>>> >>>> On Saturday, March 9, 2024 at 7:04:19 PM UTC tbp1...@gmail.com 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 leo-editor+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/d72dead0-3e79-49ca-8a5b-4b2cacbcc0ebn%40googlegroups.com.