From mboxrd@z Thu Jan 1 00:00:00 1970 From: Torsten Wagner Subject: Re: Drag images from Firefox to org-mode Date: Wed, 16 Oct 2013 15:48:58 +0200 Message-ID: References: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=089e01634d06878bea04e8dbf6f3 Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:52842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWRTB-00081l-BV for emacs-orgmode@gnu.org; Wed, 16 Oct 2013 09:49:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VWRT9-0000RR-KK for emacs-orgmode@gnu.org; Wed, 16 Oct 2013 09:49:01 -0400 Received: from mail-ea0-x235.google.com ([2a00:1450:4013:c01::235]:57499) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWRT9-0000RL-9U for emacs-orgmode@gnu.org; Wed, 16 Oct 2013 09:48:59 -0400 Received: by mail-ea0-f181.google.com with SMTP id d10so375173eaj.40 for ; Wed, 16 Oct 2013 06:48:58 -0700 (PDT) In-Reply-To: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Oleh Cc: org mode --089e01634d06878bea04e8dbf6f3 Content-Type: text/plain; charset=ISO-8859-1 This looks like a nice feature! Maybe you could add to save the address and date the picture was taken, thus, one could easily refer to the image origin. That is sometimes of importance. Thanks for sharing Torsten On 16 October 2013 12:04, Oleh wrote: > Hi all, > > Here's a little hack that I use to make my life easier: > > (require 'async) > (eval-when-compile > (require 'cl)) > (defun org-store-image (link basedir) > (async-start > `(lambda() (shell-command > ,(format "wget \"%s\" -P \"%s\"" > link > (expand-file-name basedir)))) > (lexical-let ((cur-buf (current-buffer))) > (lambda(x) > (with-current-buffer cur-buf > (org-display-inline-images)))))) > > (defun org-store-image-clipboard (link) > "Save image at address LINK to current directory's subdirectory DIR. > DIR is the name of the current level 0 heading." > (interactive (list (current-kill 0))) > (let ((filename (car (last (split-string link "/")))) > (dir (save-excursion > (org-up-heading-all (1- (org-current-level))) > (substring-no-properties > (org-get-heading))))) > (if (null (image-type-from-file-name filename)) > (message "not an image URL") > (unless (file-exists-p (expand-file-name filename dir)) > (org-store-image link dir)) > (insert (format "[[./%s/%s]]" dir filename)) > (org-display-inline-images)))) > > (setcdr (assoc "^\\(https?\\|ftp\\|file\\|nfs\\)://" dnd-protocol-alist) > 'dnd-org-insert) > > (defun dnd-org-insert (uri action) > (org-store-image-clipboard uri)) > > When it's a plain image, I can just drag it from the browser to org-mode. > It will be downloaded in async to a subdirectory of the current directory > and the link will be inserted > at point. > For stubborn images that are links I can right click to copy image > location and call > `org-store-image-clipboard' interactively. > > I hope it's useful to someone and that I'm not re-implementing standard > functionality. > > regards, > Oleh > > regards, > Oleh > --089e01634d06878bea04e8dbf6f3 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
This looks like a nice feature!
Ma= ybe you could add to save the address and date the picture was taken, thus,= one could easily refer to the image origin. That is sometimes of importanc= e.
=A0
Thanks for sharing

Torsten



On 16 October 2013 12:= 04, Oleh <ohwoeowho@gmail.com> wrote:
Hi all,

= Here's a little hack that I use to make my life easier:

<= /div>
(require 'async)
(eval-when-compile
=A0 (= require 'cl))
(defun org-store-image (link basedir)
=A0 (async-start
= =A0 =A0`(lambda() (shell-command
=A0 =A0 =A0 =A0 =A0 ,(format &qu= ot;wget \"%s\" -P \"%s\""
=A0 =A0 =A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0link
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(expand-file-name basedir))))
=A0 =A0(lexical-let ((cur-buf (current-buffer)))
=A0 =A0= =A0(lambda(x)
=A0 =A0 =A0 =A0(with-current-buffer cur-buf
<= div>=A0 =A0 =A0 =A0 =A0(org-display-inline-images))))))

(defun org-store-image-clipboard (link)
=A0 &= quot;Save image at address LINK to current directory's subdirectory DIR= .
DIR is the name of the current level 0 heading."
=A0 (interactive (list (current-kill 0)))
=A0 (let ((filename (ca= r (last (split-string link "/"))))
=A0 =A0 =A0 =A0 (dir= (save-excursion
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(org-up-heading-a= ll (1- (org-current-level)))
=A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0(substring-no-properties
=A0 = =A0 =A0 =A0 =A0 =A0 =A0 =A0 (org-get-heading)))))
=A0 =A0 (if (nu= ll (image-type-from-file-name filename))
=A0 =A0 =A0 =A0 (message= "not an image URL")
=A0 =A0 =A0 (unless (file-exists-p (expand-file-name filename dir))
=A0 =A0 =A0 =A0 (org-store-image link dir))
=A0 =A0 =A0 (inser= t (format "[[./%s/%s]]" dir filename))
=A0 =A0 =A0 (org= -display-inline-images))))

(setcdr (assoc "^\\(https?\\|ftp\\|file\\|nfs\\):/= /" dnd-protocol-alist) 'dnd-org-insert)

(= defun dnd-org-insert (uri action)
=A0 (org-store-image-clipboard = uri))

When it's a plain image, I can just drag it f= rom the browser to org-mode.=A0
It will be downloaded in async to= a subdirectory of the current directory and the link will be inserted=A0
at point.=A0
For stubborn images that are links I can right = click to copy image location and call
`org-store-image-clipboard&= #39; interactively.

I hope it's useful to some= one and that I'm not re-implementing standard functionality.

regards,
Oleh

regard= s,
Oleh

--089e01634d06878bea04e8dbf6f3--