1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-11 09:20:51 +00:00

image-dired: New defgroup and section for gallery support

* lisp/image-dired.el: Add new section header "Gallery support" to
improve file organization.  Move relevant TODO:s there.

(image-dired-gallery): New defgroup.
(image-dired-gallery-dir, image-dired-gallery-image-root-url)
(image-dired-gallery-thumb-image-root-url)
(image-dired-gallery-hidden-tags): Add options to above new defgroup.

(image-dired-add-to-file-comment-list)
(image-dired-create-gallery-lists)
(image-dired-add-to-tag-file-lists, image-dired-hidden-p): Rename to...
(image-dired--add-to-file-comment-list)
(image-dired--create-gallery-lists)
(image-dired--add-to-tag-file-lists, image-dired--hidden-p):
...this, to make it more clear that these functions are internal.
Make the old names obsolete function aliases.
(image-dired-add-to-tag-file-list): Make unused function obsolete.
This commit is contained in:
Stefan Kangas 2021-11-05 00:47:00 +01:00
parent 2bcc2160c9
commit b5420c46c2

View File

@ -103,9 +103,6 @@
;; TODO ;; TODO
;; ==== ;; ====
;; ;;
;; * Support gallery creation when using per-directory thumbnail
;; storage.
;;
;; * Some sort of auto-rotate function based on rotate info in the ;; * Some sort of auto-rotate function based on rotate info in the
;; EXIF data. ;; EXIF data.
;; ;;
@ -138,9 +135,6 @@
;; respectively. Update: This is partly done; some bindings have ;; respectively. Update: This is partly done; some bindings have
;; now been added to Dired. ;; now been added to Dired.
;; ;;
;; * Enhanced gallery creation with basic CSS-support and pagination
;; of tag pages with many pictures.
;;
;; * In some way keep track of buffers and windows and stuff so that ;; * In some way keep track of buffers and windows and stuff so that
;; it works as the user expects. ;; it works as the user expects.
;; ;;
@ -222,30 +216,7 @@ https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html
"Database file where file names and their associated tags are stored." "Database file where file names and their associated tags are stored."
:type 'file) :type 'file)
(defcustom image-dired-gallery-dir
(expand-file-name ".image-dired_gallery" image-dired-dir)
"Directory to store generated gallery html pages.
This path needs to be \"shared\" to the public so that it can access
the index.html page that image-dired creates."
:type 'directory)
(defcustom image-dired-gallery-image-root-url
"https://example.org/image-diredpics"
"URL where the full size images are to be found on your web server.
Note that this path has to be configured on your web server.
Image-Dired expects to find pictures in this directory.
This is used by `image-dired-gallery-generate'."
:type 'string
:version "29.1")
(defcustom image-dired-gallery-thumb-image-root-url
"https://example.org/image-diredthumbs"
"URL where the thumbnail images are to be found on your web server.
Note that this path has to be configured on your web server.
Image-Dired expects to find pictures in this directory.
This is used by `image-dired-gallery-generate'."
:type 'string
:version "29.1")
(defcustom image-dired-cmd-create-thumbnail-program (defcustom image-dired-cmd-create-thumbnail-program
(if (executable-find "gm") "gm" "convert") (if (executable-find "gm") "gm" "convert")
@ -390,12 +361,6 @@ which is replaced by the tag value."
:version "26.1" :version "26.1"
:type '(repeat (string :tag "Argument"))) :type '(repeat (string :tag "Argument")))
(defcustom image-dired-gallery-hidden-tags
(list "private" "hidden" "pending")
"List of \"hidden\" tags.
Used by `image-dired-gallery-generate' to leave out \"hidden\" images."
:type '(repeat string))
(defcustom image-dired-thumb-size (defcustom image-dired-thumb-size
(cond (cond
((eq 'standard image-dired-thumbnail-storage) 128) ((eq 'standard image-dired-thumbnail-storage) 128)
@ -2380,6 +2345,52 @@ Track this in associated Dired buffer if
props props
comment))))) comment)))))
;;;; Gallery support
;; TODO:
;; * Support gallery creation when using per-directory thumbnail
;; storage.
;; * Enhanced gallery creation with basic CSS-support and pagination
;; of tag pages with many pictures.
(defgroup image-dired-gallery nil
"Image-Dired support for generating a HTML gallery."
:prefix "image-dired-"
:group 'image-dired
:version "29.1")
(defcustom image-dired-gallery-dir
(expand-file-name ".image-dired_gallery" image-dired-dir)
"Directory to store generated gallery html pages.
This path needs to be \"shared\" to the public so that it can access
the index.html page that image-dired creates."
:type 'directory)
(defcustom image-dired-gallery-image-root-url
"https://example.org/image-diredpics"
"URL where the full size images are to be found on your web server.
Note that this path has to be configured on your web server.
Image-Dired expects to find pictures in this directory.
This is used by `image-dired-gallery-generate'."
:type 'string
:version "29.1")
(defcustom image-dired-gallery-thumb-image-root-url
"https://example.org/image-diredthumbs"
"URL where the thumbnail images are to be found on your web server.
Note that this path has to be configured on your web server.
Image-Dired expects to find pictures in this directory.
This is used by `image-dired-gallery-generate'."
:type 'string
:version "29.1")
(defcustom image-dired-gallery-hidden-tags
(list "private" "hidden" "pending")
"List of \"hidden\" tags.
Used by `image-dired-gallery-generate' to leave out \"hidden\" images."
:type '(repeat string))
(defvar image-dired-tag-file-list nil (defvar image-dired-tag-file-list nil
"List to store tag-file structure.") "List to store tag-file structure.")
@ -2389,19 +2400,8 @@ Track this in associated Dired buffer if
(defvar image-dired-file-comment-list nil (defvar image-dired-file-comment-list nil
"List to store file comments.") "List to store file comments.")
(defun image-dired-add-to-tag-file-list (tag file) (defun image-dired--add-to-tag-file-lists (tag file)
"Add relation between TAG and FILE." "Helper function used from `image-dired--create-gallery-lists'.
(let (curr)
(if image-dired-tag-file-list
(if (setq curr (assoc tag image-dired-tag-file-list))
(if (not (member file curr))
(setcdr curr (cons file (cdr curr))))
(setcdr image-dired-tag-file-list
(cons (list tag file) (cdr image-dired-tag-file-list))))
(setq image-dired-tag-file-list (list (list tag file))))))
(defun image-dired-add-to-tag-file-lists (tag file)
"Helper function used from `image-dired-create-gallery-lists'.
Add TAG to FILE in one list and FILE to TAG in the other. Add TAG to FILE in one list and FILE to TAG in the other.
@ -2435,8 +2435,8 @@ image-dired-tag-file-list:
(cons (list tag file) (cdr image-dired-tag-file-list)))) (cons (list tag file) (cdr image-dired-tag-file-list))))
(setq image-dired-tag-file-list (list (list tag file)))))) (setq image-dired-tag-file-list (list (list tag file))))))
(defun image-dired-add-to-file-comment-list (file comment) (defun image-dired--add-to-file-comment-list (file comment)
"Helper function used from `image-dired-create-gallery-lists'. "Helper function used from `image-dired--create-gallery-lists'.
For FILE, add COMMENT to list. For FILE, add COMMENT to list.
@ -2454,7 +2454,7 @@ image-dired-file-comment-list:
(cdr image-dired-file-comment-list)))) (cdr image-dired-file-comment-list))))
(setq image-dired-file-comment-list (list (cons file comment))))) (setq image-dired-file-comment-list (list (cons file comment)))))
(defun image-dired-create-gallery-lists () (defun image-dired--create-gallery-lists ()
"Create temporary lists used by `image-dired-gallery-generate'." "Create temporary lists used by `image-dired-gallery-generate'."
(image-dired-sane-db-file) (image-dired-sane-db-file)
(image-dired--with-db-file (image-dired--with-db-file
@ -2475,15 +2475,15 @@ image-dired-file-comment-list:
(setq file (car row-tags)) (setq file (car row-tags))
(dolist (x (cdr row-tags)) (dolist (x (cdr row-tags))
(if (not (string-match "^comment:\\(.*\\)" x)) (if (not (string-match "^comment:\\(.*\\)" x))
(image-dired-add-to-tag-file-lists x file) (image-dired--add-to-tag-file-lists x file)
(image-dired-add-to-file-comment-list file (match-string 1 x))))))) (image-dired--add-to-file-comment-list file (match-string 1 x)))))))
;; Sort tag-file list ;; Sort tag-file list
(setq image-dired-tag-file-list (setq image-dired-tag-file-list
(sort image-dired-tag-file-list (sort image-dired-tag-file-list
(lambda (x y) (lambda (x y)
(string< (car x) (car y)))))) (string< (car x) (car y))))))
(defun image-dired-hidden-p (file) (defun image-dired--hidden-p (file)
"Return t if image FILE has a \"hidden\" tag." "Return t if image FILE has a \"hidden\" tag."
(cl-loop for tag in (cdr (assoc file image-dired-file-tag-list)) (cl-loop for tag in (cdr (assoc file image-dired-file-tag-list))
if (member tag image-dired-gallery-hidden-tags) return t)) if (member tag image-dired-gallery-hidden-tags) return t))
@ -2497,7 +2497,7 @@ it easier to generate, then HTML-files are created in
(if (eq 'per-directory image-dired-thumbnail-storage) (if (eq 'per-directory image-dired-thumbnail-storage)
(error "Currently, gallery generation is not supported \ (error "Currently, gallery generation is not supported \
when using per-directory thumbnail file storage")) when using per-directory thumbnail file storage"))
(image-dired-create-gallery-lists) (image-dired--create-gallery-lists)
(let ((tags image-dired-tag-file-list) (let ((tags image-dired-tag-file-list)
(index-file (format "%s/index.html" image-dired-gallery-dir)) (index-file (format "%s/index.html" image-dired-gallery-dir))
count tag tag-file count tag tag-file
@ -2579,6 +2579,9 @@ when using per-directory thumbnail file storage"))
(insert " </body>\n") (insert " </body>\n")
(insert "</html>")))) (insert "</html>"))))
;;;; Tag support
(defvar image-dired-widget-list nil (defvar image-dired-widget-list nil
"List to keep track of meta data in edit buffer.") "List to keep track of meta data in edit buffer.")
@ -2923,8 +2926,28 @@ Dired."
(image-dired-display-image file)) (image-dired-display-image file))
(error "No original file name at point")))) (error "No original file name at point"))))
(defun image-dired-add-to-tag-file-list (tag file)
"Add relation between TAG and FILE."
(declare (obsolete nil "29.1"))
(let (curr)
(if image-dired-tag-file-list
(if (setq curr (assoc tag image-dired-tag-file-list))
(if (not (member file curr))
(setcdr curr (cons file (cdr curr))))
(setcdr image-dired-tag-file-list
(cons (list tag file) (cdr image-dired-tag-file-list))))
(setq image-dired-tag-file-list (list (list tag file))))))
(define-obsolete-function-alias 'image-dired-create-display-image-buffer (define-obsolete-function-alias 'image-dired-create-display-image-buffer
#'ignore "29.1") #'ignore "29.1")
(define-obsolete-function-alias 'image-dired-create-gallery-lists
#'image-dired--create-gallery-lists "29.1")
(define-obsolete-function-alias 'image-dired-add-to-file-comment-list
#'image-dired--add-to-file-comment-list "29.1")
(define-obsolete-function-alias 'image-dired-add-to-tag-file-lists
#'image-dired--add-to-tag-file-lists "29.1")
(define-obsolete-function-alias 'image-dired-hidden-p
#'image-dired--hidden-p "29.1")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;; TEST-SECTION ;;;;;;;;;;; ;;;;;;;;; TEST-SECTION ;;;;;;;;;;;