annotate lisp/thumbs.el @ 68409:7ca2eae4cee2

(thumbs-do-thumbs-insertion): Suppress message when there are no more images to display. (thumbs-mark, thumbs-unmark): Revert change so that they move to the next image.
author Nick Roberts <nickrob@snap.net.nz>
date Thu, 26 Jan 2006 23:03:17 +0000
parents 3bff02a6d438
children 6511ba48ed7a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
1 ;;; thumbs.el --- Thumbnails previewer for images files
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64718
diff changeset
3 ;; Copyright (C) 2004, 2005 Free Software Foundation, Inc.
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
4
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
5 ;; Author: Jean-Philippe Theberge <jphiltheberge@videotron.ca>
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
6 ;; Maintainer: FSF
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
7 ;; Keywords: Multimedia
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
8
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
10
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
14 ;; any later version.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
15
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
20
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63313
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63313
diff changeset
24 ;; Boston, MA 02110-1301, USA.
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
25
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
26 ;;; Commentary:
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
27
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
28 ;; This package create two new modes: thumbs-mode and thumbs-view-image-mode.
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
29 ;; It is used for basic browsing and viewing of images from within Emacs.
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
30 ;; Minimal image manipulation functions are also available via external
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
31 ;; programs. If you want to do more complex tasks like categorise and tag
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
32 ;; your images, use tumme.el
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
33 ;;
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
34 ;; The 'convert' program from 'ImageMagick'
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
35 ;; [URL:http://www.imagemagick.org/] is required.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
36 ;;
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
37 ;; Thanks: Alex Schroeder <alex@gnu.org> for maintaining the package at some
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
38 ;; time. The peoples at #emacs@freenode.net for numerous help. RMS
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
39 ;; for emacs and the GNU project.
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
40 ;;
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
41 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
42 ;;
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
43 ;; CHANGELOG
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
44 ;;
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
45 ;; This is version 2.0
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
46 ;;
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
47 ;; USAGE
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
48 ;;
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
49 ;; Type M-x thumbs RET DIR RET to view the directory DIR in Thumbs mode.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
50 ;; That should be a directory containing image files.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
51 ;; from dired, C-t m enter in thumbs-mode with all marked files
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
52 ;; C-t a enter in thumbs-mode with all files in current-directory
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
53 ;; In thumbs-mode, pressing <return> on a image will bring you in image view
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
54 ;; mode for that image. C-h m will give you a list of available keybinding.
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
55
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
56 ;;; History:
55206
c2c29cafaa74 (time-less-p): Remove.
Juanma Barranquero <lekktu@gmail.com>
parents: 54193
diff changeset
57 ;;
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
58
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
59 ;;; Code:
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
60
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
61 (require 'dired)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
62
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
63 ;; CUSTOMIZATIONS
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
64
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
65 (defgroup thumbs nil
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
66 "Thumbnails previewer."
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 57831
diff changeset
67 :version "22.1"
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
68 :group 'multimedia)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
69
66568
624edd899d32 * thumbs.el (thumbs-thumbsdir): Default to ~/.emacs.d/thumbs.
Chong Yidong <cyd@stupidchicken.com>
parents: 66413
diff changeset
70 (defcustom thumbs-thumbsdir "~/.emacs.d/thumbs"
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
71 "*Directory to store thumbnails."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
72 :type 'directory
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
73 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
74
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
75 (defcustom thumbs-geometry "100x100"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
76 "*Size of thumbnails."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
77 :type 'string
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
78 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
79
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
80 (defcustom thumbs-per-line 4
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
81 "Number of thumbnails per line to show in directory."
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
82 :type 'integer
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
83 :group 'thumbs)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
84
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
85 (defcustom thumbs-max-image-number 16
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
86 "Maximum number of images initially displayed in thumbs buffer."
63313
2d9ef16c13be (thumbs-per-line, thumbs-thumbsdir-max-size)
Eli Zaretskii <eliz@gnu.org>
parents: 63280
diff changeset
87 :type 'integer
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
88 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
89
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
90 (defcustom thumbs-thumbsdir-max-size 50000000
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
91 "Maximum size for thumbnails directory.
63078
2d7151e2c3ee (thumbs-thumbsdir-max-size, thumbs-image-resizing-step,
Juanma Barranquero <lekktu@gmail.com>
parents: 62927
diff changeset
92 When it reaches that size (in bytes), a warning is sent."
63313
2d9ef16c13be (thumbs-per-line, thumbs-thumbsdir-max-size)
Eli Zaretskii <eliz@gnu.org>
parents: 63280
diff changeset
93 :type 'integer
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
94 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
95
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
96 (defcustom thumbs-conversion-program
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
97 (if (eq system-type 'windows-nt)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
98 "convert.exe"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
99 (or (executable-find "convert")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
100 "/usr/X11R6/bin/convert"))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
101 "*Name of conversion program for thumbnails generation.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
102 It must be 'convert'."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
103 :type 'string
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
104 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
105
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
106 (defcustom thumbs-setroot-command
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
107 "xloadimage -onroot -fullscreen *"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
108 "Command to set the root window."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
109 :type 'string
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
110 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
111
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
112 (defcustom thumbs-relief 5
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
113 "*Size of button-like border around thumbnails."
63313
2d9ef16c13be (thumbs-per-line, thumbs-thumbsdir-max-size)
Eli Zaretskii <eliz@gnu.org>
parents: 63280
diff changeset
114 :type 'integer
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
115 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
116
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
117 (defcustom thumbs-margin 2
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
118 "*Size of the margin around thumbnails.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
119 This is where you see the cursor."
63313
2d9ef16c13be (thumbs-per-line, thumbs-thumbsdir-max-size)
Eli Zaretskii <eliz@gnu.org>
parents: 63280
diff changeset
120 :type 'integer
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
121 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
122
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
123 (defcustom thumbs-thumbsdir-auto-clean t
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
124 "If set, delete older file in the thumbnails directory.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
125 Deletion is done at load time when the directory size is bigger
63078
2d7151e2c3ee (thumbs-thumbsdir-max-size, thumbs-image-resizing-step,
Juanma Barranquero <lekktu@gmail.com>
parents: 62927
diff changeset
126 than `thumbs-thumbsdir-max-size'."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
127 :type 'boolean
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
128 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
129
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
130 (defcustom thumbs-image-resizing-step 10
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
131 "Step by which to resize image as a percentage."
63313
2d9ef16c13be (thumbs-per-line, thumbs-thumbsdir-max-size)
Eli Zaretskii <eliz@gnu.org>
parents: 63280
diff changeset
132 :type 'integer
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
133 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
134
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
135 (defcustom thumbs-temp-dir temporary-file-directory
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
136 "Temporary directory to use.
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
137 Defaults to `temporary-file-directory'. Leaving it to
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
138 this value can let another user see some of your images."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
139 :type 'directory
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
140 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
141
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
142 (defcustom thumbs-temp-prefix "emacsthumbs"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
143 "Prefix to add to temp files."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
144 :type 'string
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
145 :group 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
146
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
147 ;; Initialize some variable, for later use.
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
148 (defvar thumbs-current-tmp-filename nil
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
149 "Temporary filename of current image.")
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
150 (make-variable-buffer-local 'thumbs-current-tmp-filename)
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
151
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
152 (defvar thumbs-current-image-filename nil
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
153 "Filename of current image.")
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
154 (make-variable-buffer-local 'thumbs-current-image-filename)
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
155
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
156 (defvar thumbs-extra-images 1
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
157 "Counter for showing extra images in thumbs buffer.")
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
158 (make-variable-buffer-local 'thumbs-extra-images)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
159 (put 'thumbs-extra-images 'permanent-local t)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
160
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
161 (defvar thumbs-current-image-size nil
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
162 "Size of current image.")
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
163
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
164 (defvar thumbs-image-num nil
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
165 "Number of current image.")
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
166 (make-variable-buffer-local 'thumbs-image-num)
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
167
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
168 (defvar thumbs-buffer nil
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
169 "Name of buffer containing thumbnails associated with image.")
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
170 (make-variable-buffer-local 'thumbs-buffer)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
171
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
172 (defvar thumbs-current-dir nil
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
173 "Current directory.")
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
174
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
175 (defvar thumbs-marked-list nil
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
176 "List of marked files.")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
177
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
178 (defalias 'thumbs-gensym
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
179 (if (fboundp 'gensym)
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
180 'gensym
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
181 ;; Copied from cl-macs.el
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
182 (defvar thumbs-gensym-counter 0)
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
183 (lambda (&optional prefix)
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
184 "Generate a new uninterned symbol.
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
185 The name is made by appending a number to PREFIX, default \"G\"."
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
186 (let ((pfix (if (stringp prefix) prefix "G"))
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
187 (num (if (integerp prefix) prefix
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
188 (prog1 thumbs-gensym-counter
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
189 (setq thumbs-gensym-counter
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
190 (1+ thumbs-gensym-counter))))))
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
191 (make-symbol (format "%s%d" pfix num))))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
192
63280
69ae2aff114c Fixes for changes of 2005-06-09.
Juanma Barranquero <lekktu@gmail.com>
parents: 63155
diff changeset
193 (defsubst thumbs-temp-dir ()
69ae2aff114c Fixes for changes of 2005-06-09.
Juanma Barranquero <lekktu@gmail.com>
parents: 63155
diff changeset
194 (file-name-as-directory (expand-file-name thumbs-temp-dir)))
69ae2aff114c Fixes for changes of 2005-06-09.
Juanma Barranquero <lekktu@gmail.com>
parents: 63155
diff changeset
195
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
196 (defun thumbs-temp-file ()
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
197 "Return a unique temporary filename for an image."
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
198 (format "%s%s-%s.jpg"
63280
69ae2aff114c Fixes for changes of 2005-06-09.
Juanma Barranquero <lekktu@gmail.com>
parents: 63155
diff changeset
199 (thumbs-temp-dir)
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
200 thumbs-temp-prefix
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
201 (thumbs-gensym "T")))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
202
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
203 (defun thumbs-thumbsdir ()
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
204 "Return the current thumbnails directory (from `thumbs-thumbsdir').
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
205 Create the thumbnails directory if it does not exist."
63280
69ae2aff114c Fixes for changes of 2005-06-09.
Juanma Barranquero <lekktu@gmail.com>
parents: 63155
diff changeset
206 (let ((thumbs-thumbsdir (file-name-as-directory
69ae2aff114c Fixes for changes of 2005-06-09.
Juanma Barranquero <lekktu@gmail.com>
parents: 63155
diff changeset
207 (expand-file-name thumbs-thumbsdir))))
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
208 (unless (file-directory-p thumbs-thumbsdir)
66568
624edd899d32 * thumbs.el (thumbs-thumbsdir): Default to ~/.emacs.d/thumbs.
Chong Yidong <cyd@stupidchicken.com>
parents: 66413
diff changeset
209 (make-directory thumbs-thumbsdir t)
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
210 (message "Creating thumbnails directory"))
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
211 thumbs-thumbsdir))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
212
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
213 (defun thumbs-cleanup-thumbsdir ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
214 "Clean the thumbnails directory.
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
215 If the total size of all files in `thumbs-thumbsdir' is bigger than
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
216 `thumbs-thumbsdir-max-size', files are deleted until the max size is
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
217 reached."
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
218 (let* ((files-list
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
219 (sort
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
220 (mapcar
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
221 (lambda (f)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
222 (let ((fattribs-list (file-attributes f)))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
223 `(,(nth 4 fattribs-list) ,(nth 7 fattribs-list) ,f)))
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
224 (directory-files (thumbs-thumbsdir) t (image-file-name-regexp)))
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
225 '(lambda (l1 l2) (time-less-p (car l1) (car l2)))))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
226 (dirsize (apply '+ (mapcar (lambda (x) (cadr x)) files-list))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
227 (while (> dirsize thumbs-thumbsdir-max-size)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
228 (progn
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
229 (message "Deleting file %s" (cadr (cdar files-list))))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
230 (delete-file (cadr (cdar files-list)))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
231 (setq dirsize (- dirsize (car (cdar files-list))))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
232 (setq files-list (cdr files-list)))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
233
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
234 ;; Check the thumbsnail directory size and clean it if necessary.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
235 (when thumbs-thumbsdir-auto-clean
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
236 (thumbs-cleanup-thumbsdir))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
237
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
238 (defun thumbs-call-convert (filein fileout action
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
239 &optional arg output-format action-prefix)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
240 "Call the convert program.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
241 FILEIN is the input file,
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
242 FILEOUT is the output file,
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
243 ACTION is the command to send to convert.
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
244 Optional arguments are:
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
245 ARG any arguments to the ACTION command,
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
246 OUTPUT-FORMAT is the file format to output (default is jpeg),
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
247 ACTION-PREFIX is the symbol to place before the ACTION command
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
248 (defaults to '-' but can sometimes be '+')."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
249 (let ((command (format "%s %s%s %s \"%s\" \"%s:%s\""
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
250 thumbs-conversion-program
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
251 (or action-prefix "-")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
252 action
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
253 (or arg "")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
254 filein
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
255 (or output-format "jpeg")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
256 fileout)))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
257 (call-process shell-file-name nil nil nil "-c" command)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
258
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
259 (defun thumbs-new-image-size (s increment)
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
260 "New image (a cons of width x height)."
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
261 (let ((d (* increment thumbs-image-resizing-step)))
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
262 (cons
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
263 (round (+ (car s) (/ (* d (car s)) 100)))
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
264 (round (+ (cdr s) (/ (* d (cdr s)) 100))))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
265
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
266 (defun thumbs-resize-image-1 (&optional increment size)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
267 "Resize image in current buffer.
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
268 If SIZE is specified use it. Otherwise make the image larger or
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
269 smaller according to whether INCREMENT is 1 or -1."
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
270 (let* ((buffer-read-only nil)
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
271 (old thumbs-current-tmp-filename)
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
272 (x (or size
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
273 (thumbs-new-image-size thumbs-current-image-size increment)))
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
274 (tmp (thumbs-temp-file)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
275 (erase-buffer)
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
276 (thumbs-call-convert (or old thumbs-current-image-filename)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
277 tmp "sample"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
278 (concat (number-to-string (car x)) "x"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
279 (number-to-string (cdr x))))
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
280 (save-excursion
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
281 (thumbs-insert-image tmp 'jpeg 0))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
282 (setq thumbs-current-tmp-filename tmp)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
283
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
284 (defun thumbs-resize-image (width height)
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
285 "Resize image interactively to specified WIDTH and HEIGHT."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
286 (interactive "nWidth: \nnHeight: ")
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
287 (thumbs-resize-image-1 nil (cons width height)))
55206
c2c29cafaa74 (time-less-p): Remove.
Juanma Barranquero <lekktu@gmail.com>
parents: 54193
diff changeset
288
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
289 (defun thumbs-shrink-image ()
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
290 "Resize image (smaller)."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
291 (interactive)
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
292 (thumbs-resize-image-1 -1))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
293
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
294 (defun thumbs-enlarge-image ()
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
295 "Resize image (bigger)."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
296 (interactive)
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
297 (thumbs-resize-image-1 1))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
298
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
299 (defun thumbs-thumbname (img)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
300 "Return a thumbnail name for the image IMG."
62891
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
301 (convert-standard-filename
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
302 (let ((filename (expand-file-name img)))
63280
69ae2aff114c Fixes for changes of 2005-06-09.
Juanma Barranquero <lekktu@gmail.com>
parents: 63155
diff changeset
303 (format "%s%08x-%s.jpg"
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
304 (thumbs-thumbsdir)
62891
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
305 (sxhash filename)
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
306 (subst-char-in-string
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
307 ?\s ?\_
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
308 (apply
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
309 'concat
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
310 (split-string filename "/")))))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
311
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
312 (defun thumbs-make-thumb (img)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
313 "Create the thumbnail for IMG."
62891
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
314 (let ((fn (expand-file-name img))
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
315 (tn (thumbs-thumbname img)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
316 (if (or (not (file-exists-p tn))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
317 ;; This is not the right fix, but I don't understand
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
318 ;; the external program or why it produces a geometry
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
319 ;; unequal to the one requested -- rms.
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
320 ;;; (not (equal (thumbs-file-size tn) thumbs-geometry))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
321 )
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
322 (thumbs-call-convert fn tn "sample" thumbs-geometry))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
323 tn))
55206
c2c29cafaa74 (time-less-p): Remove.
Juanma Barranquero <lekktu@gmail.com>
parents: 54193
diff changeset
324
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
325 (defun thumbs-image-type (img)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
326 "Return image type from filename IMG."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
327 (cond ((string-match ".*\\.jpe?g\\'" img) 'jpeg)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
328 ((string-match ".*\\.xpm\\'" img) 'xpm)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
329 ((string-match ".*\\.xbm\\'" img) 'xbm)
66413
4e56b3fda002 * menu-bar.el (menu-bar-help-menu): Rename "psychiatrist", in line
Chong Yidong <cyd@stupidchicken.com>
parents: 64762
diff changeset
330 ((string-match ".*\\.pbm\\'" img) 'pbm)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
331 ((string-match ".*\\.gif\\'" img) 'gif)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
332 ((string-match ".*\\.bmp\\'" img) 'bmp)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
333 ((string-match ".*\\.png\\'" img) 'png)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
334 ((string-match ".*\\.tiff?\\'" img) 'tiff)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
335
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
336 (defun thumbs-file-size (img)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
337 (let ((i (image-size (find-image `((:type ,(thumbs-image-type img) :file ,img))) t)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
338 (concat (number-to-string (round (car i)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
339 "x"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
340 (number-to-string (round (cdr i))))))
55206
c2c29cafaa74 (time-less-p): Remove.
Juanma Barranquero <lekktu@gmail.com>
parents: 54193
diff changeset
341
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
342 ;;;###autoload
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
343 (defun thumbs-find-thumb (img)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
344 "Display the thumbnail for IMG."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
345 (interactive "f")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
346 (find-file (thumbs-make-thumb img)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
347
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
348 (defun thumbs-insert-image (img type relief &optional marked)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
349 "Insert image IMG at point.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
350 TYPE and RELIEF will be used in constructing the image; see `image'
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
351 in the emacs-lisp manual for further documentation.
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
352 If MARKED is non-nil, the image is marked."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
353 (let ((i `(image :type ,type
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
354 :file ,img
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
355 :relief ,relief
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
356 :conversion ,(if marked 'disabled)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
357 :margin ,thumbs-margin)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
358 (insert-image i)
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
359 (set (make-local-variable 'thumbs-current-image-size)
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
360 (image-size i t))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
361
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
362 (defun thumbs-insert-thumb (img &optional marked)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
363 "Insert the thumbnail for IMG at point.
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
364 If MARKED is non-nil, the image is marked."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
365 (thumbs-insert-image
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
366 (thumbs-make-thumb img) 'jpeg thumbs-relief marked)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
367 (add-text-properties (1- (point)) (point)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
368 `(thumb-image-file ,img
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
369 help-echo ,(file-name-nondirectory img))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
370
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
371 (defun thumbs-do-thumbs-insertion (list)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
372 "Insert all thumbnails into thumbs buffer."
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
373 (let* ((i 0)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
374 (length (length list))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
375 (diff (- length (* thumbs-max-image-number thumbs-extra-images))))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
376 (nbutlast list diff)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
377 (dolist (img list)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
378 (thumbs-insert-thumb img
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
379 (member img thumbs-marked-list))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
380 (when (= 0 (mod (setq i (1+ i)) thumbs-per-line))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
381 (newline)))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
382 (unless (bobp) (newline))
68409
7ca2eae4cee2 (thumbs-do-thumbs-insertion): Suppress message when
Nick Roberts <nickrob@snap.net.nz>
parents: 68373
diff changeset
383 (if (> diff 0) (message "Type + to display more images."))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
384
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
385 (defun thumbs-show-thumbs-list (list &optional dir same-window)
62891
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
386 (unless (and (display-images-p)
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
387 (image-type-available-p 'jpeg))
58c1e48ab7bc (thumbs-thumbname): The resulting thubname includes a hash value to improve its
Juanma Barranquero <lekktu@gmail.com>
parents: 62692
diff changeset
388 (error "Required image type is not supported in this Emacs session"))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
389 (funcall (if same-window 'switch-to-buffer 'pop-to-buffer)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
390 (if dir (concat "*Thumbs: " dir) "*THUMB-View*"))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
391 (let ((inhibit-read-only t))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
392 (erase-buffer)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
393 (thumbs-mode)
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
394 (setq thumbs-buffer (current-buffer))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
395 (if dir (setq default-directory dir))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
396 (thumbs-do-thumbs-insertion list)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
397 (goto-char (point-min))
64718
40aaf4d2def3 (thumbs-find-image): Don't make variables automatically buffer local.
Juanma Barranquero <lekktu@gmail.com>
parents: 64091
diff changeset
398 (set (make-local-variable 'thumbs-current-dir) default-directory)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
399
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
400 ;;;###autoload
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
401 (defun thumbs-show-from-dir (dir &optional reg same-window)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
402 "Make a preview buffer for all images in DIR.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
403 Optional argument REG to select file matching a regexp,
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
404 and SAME-WINDOW to show thumbs in the same window."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
405 (interactive "DDir: ")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
406 (thumbs-show-thumbs-list
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
407 (directory-files dir t (or reg (image-file-name-regexp)))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
408 dir same-window))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
409
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
410 ;;;###autoload
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
411 (defun thumbs-dired-show-marked ()
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
412 "In dired, make a thumbs buffer with marked files."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
413 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
414 (thumbs-show-thumbs-list (dired-get-marked-files) nil t))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
415
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
416 ;;;###autoload
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
417 (defun thumbs-dired-show ()
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
418 "In dired, make a thumbs buffer with all files in current directory."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
419 (interactive)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
420 (thumbs-show-from-dir default-directory nil t))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
421
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
422 ;;;###autoload
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
423 (defalias 'thumbs 'thumbs-show-from-dir)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
424
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
425 (defun thumbs-find-image (img &optional num otherwin)
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
426 (let ((buffer (current-buffer)))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
427 (funcall
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
428 (if otherwin 'switch-to-buffer-other-window 'switch-to-buffer)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
429 "*Image*")
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
430 (thumbs-view-image-mode)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
431 (setq mode-name
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
432 (concat "image-view-mode: " (file-name-nondirectory img)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
433 " - " (number-to-string num)))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
434 (setq thumbs-buffer buffer)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
435 (let ((inhibit-read-only t))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
436 (setq thumbs-current-image-filename img
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
437 thumbs-current-tmp-filename nil
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
438 thumbs-image-num (or num 0))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
439 (delete-region (point-min)(point-max))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
440 (save-excursion
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
441 (thumbs-insert-image img (thumbs-image-type img) 0)))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
442
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
443 (defun thumbs-find-image-at-point (&optional img otherwin)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
444 "Display image IMG for thumbnail at point.
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
445 Use another window if OTHERWIN is t."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
446 (interactive)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
447 (let* ((i (or img (thumbs-current-image))))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
448 (thumbs-find-image i (point) otherwin)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
449
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
450 (defun thumbs-find-image-at-point-other-window ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
451 "Display image for thumbnail at point in the preview buffer.
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
452 Open another window."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
453 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
454 (thumbs-find-image-at-point nil t))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
455
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
456 (defun thumbs-mouse-find-image (event)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
457 "Display image for thumbnail at mouse click EVENT."
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
458 (interactive "e")
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
459 (mouse-set-point event)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
460 (thumbs-find-image-at-point))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
461
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
462 (defun thumbs-call-setroot-command (img)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
463 "Call the setroot program for IMG."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
464 (run-hooks 'thumbs-before-setroot-hook)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
465 (shell-command (replace-regexp-in-string
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
466 "\\*"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
467 (shell-quote-argument (expand-file-name img))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
468 thumbs-setroot-command nil t))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
469 (run-hooks 'thumbs-after-setroot-hook))
55206
c2c29cafaa74 (time-less-p): Remove.
Juanma Barranquero <lekktu@gmail.com>
parents: 54193
diff changeset
470
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
471 (defun thumbs-set-image-at-point-to-root-window ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
472 "Set the image at point as the desktop wallpaper."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
473 (interactive)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
474 (thumbs-call-setroot-command
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
475 (thumbs-current-image)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
476
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
477 (defun thumbs-set-root ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
478 "Set the current image as root."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
479 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
480 (thumbs-call-setroot-command
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
481 (or thumbs-current-tmp-filename
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
482 thumbs-current-image-filename)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
483
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
484 (defun thumbs-file-alist ()
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
485 "Make an alist of elements (POS . FILENAME) for all images in thumb buffer."
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
486 (with-current-buffer thumbs-buffer
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
487 (save-excursion
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
488 (let (list)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
489 (goto-char (point-min))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
490 (while (not (eobp))
68340
5325b795290b (thumbs-file-alist): Avoid creating duplicate entries.
Nick Roberts <nickrob@snap.net.nz>
parents: 68289
diff changeset
491 (unless (= 0 (mod (point) (1+ thumbs-per-line)))
5325b795290b (thumbs-file-alist): Avoid creating duplicate entries.
Nick Roberts <nickrob@snap.net.nz>
parents: 68289
diff changeset
492 (if (thumbs-current-image)
5325b795290b (thumbs-file-alist): Avoid creating duplicate entries.
Nick Roberts <nickrob@snap.net.nz>
parents: 68289
diff changeset
493 (push (cons (point-marker)
5325b795290b (thumbs-file-alist): Avoid creating duplicate entries.
Nick Roberts <nickrob@snap.net.nz>
parents: 68289
diff changeset
494 (thumbs-current-image))
5325b795290b (thumbs-file-alist): Avoid creating duplicate entries.
Nick Roberts <nickrob@snap.net.nz>
parents: 68289
diff changeset
495 list)))
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
496 (forward-char 1))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
497 (nreverse list)))))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
498
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
499 (defun thumbs-file-list ()
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
500 "Make a list of file names for all images in thumb buffer."
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
501 (save-excursion
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
502 (let (list)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
503 (goto-char (point-min))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
504 (while (not (eobp))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
505 (if (thumbs-current-image)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
506 (push (thumbs-current-image) list))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
507 (forward-char 1))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
508 (nreverse list))))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
509
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
510 (defun thumbs-delete-images ()
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
511 "Delete the image at point (and its thumbnail) (or marked files if any)."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
512 (interactive)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
513 (let ((files (or thumbs-marked-list (list (thumbs-current-image)))))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
514 (if (yes-or-no-p (format "Really delete %d files? " (length files)))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
515 (let ((thumbs-file-list (thumbs-file-alist))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
516 (inhibit-read-only t))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
517 (dolist (x files)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
518 (let (failure)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
519 (condition-case ()
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
520 (progn
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
521 (delete-file x)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
522 (delete-file (thumbs-thumbname x)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
523 (file-error (setq failure t)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
524 (unless failure
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
525 (when (rassoc x thumbs-file-list)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
526 (goto-char (car (rassoc x thumbs-file-list)))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
527 (delete-region (point) (1+ (point))))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
528 (setq thumbs-marked-list
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
529 (delq x thumbs-marked-list)))))))))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
530
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
531 (defun thumbs-rename-images (newfile)
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
532 "Rename the image at point (and its thumbnail) (or marked files if any)."
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
533 (interactive "FRename to file or directory: ")
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
534 (let ((files (or thumbs-marked-list (list (thumbs-current-image))))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
535 failures)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
536 (if (and (not (file-directory-p newfile))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
537 thumbs-marked-list)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
538 (if (file-exists-p newfile)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
539 (error "Renaming marked files to file name `%s'" newfile)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
540 (make-directory newfile t)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
541 (if (yes-or-no-p (format "Really rename %d files? " (length files)))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
542 (let ((thumbs-file-list (thumbs-file-alist))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
543 (inhibit-read-only t))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
544 (dolist (file files)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
545 (let (failure)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
546 (condition-case ()
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
547 (if (file-directory-p newfile)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
548 (rename-file file
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
549 (expand-file-name
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
550 (file-name-nondirectory file)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
551 newfile))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
552 (rename-file file newfile))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
553 (file-error (setq failure t)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
554 (push file failures)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
555 (unless failure
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
556 (when (rassoc file thumbs-file-list)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
557 (goto-char (car (rassoc file thumbs-file-list)))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
558 (delete-region (point) (1+ (point))))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
559 (setq thumbs-marked-list
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
560 (delq file thumbs-marked-list)))))))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
561 (if failures
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
562 (display-warning 'file-error
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
563 (format "Rename failures for %s into %s"
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
564 failures newfile)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
565 :error))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
566
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
567 (defun thumbs-kill-buffer ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
568 "Kill the current buffer."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
569 (interactive)
63155
911109216331 Don't set `auto-image-file-mode'. Do not create the thumbnails directory on
Juanma Barranquero <lekktu@gmail.com>
parents: 63078
diff changeset
570 (quit-window t (selected-window)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
571
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
572 (defun thumbs-show-image-num (num)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
573 "Show the image with number NUM."
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
574 (let ((image-buffer (get-buffer-create "*Image*")))
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
575 (let ((img (cdr (nth (1- num) (thumbs-file-alist)))))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
576 (with-current-buffer image-buffer
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
577 (setq mode-name
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
578 (concat "image-view-mode: " (file-name-nondirectory img)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
579 " - " (number-to-string num)))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
580 (let ((inhibit-read-only t))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
581 (erase-buffer)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
582 (thumbs-insert-image img (thumbs-image-type img) 0)
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
583 (goto-char (point-min))))
55213
a911edb6dadf (thumbs-delete-images): Fix formatting of prompt.
John Paul Wallington <jpw@pobox.com>
parents: 55206
diff changeset
584 (setq thumbs-image-num num
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
585 thumbs-current-image-filename img))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
586
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
587 (defun thumbs-previous-image ()
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
588 "Show the previous image."
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
589 (interactive)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
590 (let* ((i (- thumbs-image-num 1))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
591 (number (length (thumbs-file-alist))))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
592 (if (= i 0) (setq i (1- number)))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
593 (thumbs-show-image-num i)))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
594
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
595 (defun thumbs-next-image ()
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
596 "Show the next image."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
597 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
598 (let* ((i (1+ thumbs-image-num))
68289
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
599 (number (length (thumbs-file-alist))))
be0164ac55f8 (thumbs-buffer): New variable. Make it buffer local.
Nick Roberts <nickrob@snap.net.nz>
parents: 66568
diff changeset
600 (if (= i number) (setq i 1))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
601 (thumbs-show-image-num i)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
602
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
603 (defun thumbs-display-thumbs-buffer ()
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
604 "Display the associated thumbs buffer."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
605 (interactive)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
606 (display-buffer thumbs-buffer))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
607
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
608 (defun thumbs-redraw-buffer ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
609 "Redraw the current thumbs buffer."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
610 (let ((p (point))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
611 (inhibit-read-only t)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
612 (files (thumbs-file-list)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
613 (erase-buffer)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
614 (thumbs-do-thumbs-insertion files)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
615 (goto-char p)))
55206
c2c29cafaa74 (time-less-p): Remove.
Juanma Barranquero <lekktu@gmail.com>
parents: 54193
diff changeset
616
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
617 (defun thumbs-mark ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
618 "Mark the image at point."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
619 (interactive)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
620 (let ((elt (thumbs-current-image)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
621 (unless elt
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
622 (error "No image here"))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
623 (push elt thumbs-marked-list)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
624 (let ((inhibit-read-only t))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
625 (delete-char 1)
68409
7ca2eae4cee2 (thumbs-do-thumbs-insertion): Suppress message when
Nick Roberts <nickrob@snap.net.nz>
parents: 68373
diff changeset
626 (thumbs-insert-thumb elt t)))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
627 (when (eolp) (forward-char)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
628
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
629 (defun thumbs-unmark ()
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
630 "Unmark the image at point."
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
631 (interactive)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
632 (let ((elt (thumbs-current-image)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
633 (unless elt
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
634 (error "No image here"))
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
635 (setq thumbs-marked-list (delete elt thumbs-marked-list))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
636 (let ((inhibit-read-only t))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
637 (delete-char 1)
68409
7ca2eae4cee2 (thumbs-do-thumbs-insertion): Suppress message when
Nick Roberts <nickrob@snap.net.nz>
parents: 68373
diff changeset
638 (thumbs-insert-thumb elt nil)))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
639 (when (eolp) (forward-char)))
55206
c2c29cafaa74 (time-less-p): Remove.
Juanma Barranquero <lekktu@gmail.com>
parents: 54193
diff changeset
640
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
641 ;; cleaning of old temp files
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
642 (mapc 'delete-file
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
643 (directory-files (thumbs-temp-dir) t thumbs-temp-prefix))
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
644
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
645 ;; Image modification routines
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
646
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
647 (defun thumbs-modify-image (action &optional arg)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
648 "Call convert to do ACTION on image with argument ARG.
60920
242e5edee3ce * complete.el, thumbs.el: Replace `legal' with `valid'.
Werner LEMBERG <wl@gnu.org>
parents: 59996
diff changeset
649 ACTION and ARG should be a valid convert command."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
650 (interactive "sAction: \nsValue: ")
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
651 (let* ((buffer-read-only nil)
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
652 (old thumbs-current-tmp-filename)
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
653 (tmp (thumbs-temp-file)))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
654 (erase-buffer)
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
655 (thumbs-call-convert (or old thumbs-current-image-filename)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
656 tmp
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
657 action
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
658 (or arg ""))
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
659 (save-excursion
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
660 (thumbs-insert-image tmp 'jpeg 0))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
661 (setq thumbs-current-tmp-filename tmp)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
662
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
663 (defun thumbs-emboss-image (emboss)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
664 "Emboss the image with value EMBOSS."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
665 (interactive "nEmboss value: ")
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
666 (if (or (< emboss 3) (> emboss 31) (zerop (% emboss 2)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
667 (error "Arg must be an odd number between 3 and 31"))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
668 (thumbs-modify-image "emboss" (number-to-string emboss)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
669
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
670 (defun thumbs-monochrome-image ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
671 "Turn the image to monochrome."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
672 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
673 (thumbs-modify-image "monochrome"))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
674
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
675 (defun thumbs-negate-image ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
676 "Negate the image."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
677 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
678 (thumbs-modify-image "negate"))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
679
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
680 (defun thumbs-rotate-left ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
681 "Rotate the image 90 degrees counter-clockwise."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
682 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
683 (thumbs-modify-image "rotate" "270"))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
684
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
685 (defun thumbs-rotate-right ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
686 "Rotate the image 90 degrees clockwise."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
687 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
688 (thumbs-modify-image "rotate" "90"))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
689
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
690 (defun thumbs-current-image ()
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
691 "Return the name of the image file name at point."
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
692 (get-text-property (point) 'thumb-image-file))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
693
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
694 (defun thumbs-forward-char ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
695 "Move forward one image."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
696 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
697 (forward-char)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
698 (while (and (not (eobp)) (not (thumbs-current-image)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
699 (forward-char))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
700 (thumbs-show-name))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
701
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
702 (defun thumbs-backward-char ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
703 "Move backward one image."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
704 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
705 (forward-char -1)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
706 (while (and (not (bobp)) (not (thumbs-current-image)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
707 (forward-char -1))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
708 (thumbs-show-name))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
709
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
710 (defun thumbs-backward-line ()
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
711 "Move up one line."
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
712 (interactive)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
713 (forward-line -1)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
714 (thumbs-show-name))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
715
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
716 (defun thumbs-forward-line ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
717 "Move down one line."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
718 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
719 (forward-line 1)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
720 (thumbs-show-name))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
721
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
722 (defun thumbs-show-more-images (&optional arg)
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
723 "Show more than `thumbs-max-image-number' images, if present."
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
724 (interactive "P")
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
725 (or arg (setq arg 1))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
726 (setq thumbs-extra-images (+ thumbs-extra-images arg))
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
727 (thumbs-dired-show))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
728
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
729 (defun thumbs-show-name ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
730 "Show the name of the current file."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
731 (interactive)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
732 (let ((f (thumbs-current-image)))
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
733 (and f (message "%s [%s]" f (thumbs-file-size f)))))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
734
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
735 (defun thumbs-save-current-image ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
736 "Save the current image."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
737 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
738 (let ((f (or thumbs-current-tmp-filename
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
739 thumbs-current-image-filename))
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
740 (sa (read-from-minibuffer "Save image file as: "
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
741 thumbs-current-image-filename)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
742 (copy-file f sa)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
743
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
744 (defun thumbs-dired ()
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
745 "Use `dired' on the current thumbs directory."
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
746 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
747 (dired thumbs-current-dir))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
748
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
749 ;; thumbs-mode
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
750
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
751 (defvar thumbs-mode-map
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
752 (let ((map (make-sparse-keymap)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
753 (define-key map [return] 'thumbs-find-image-at-point)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
754 (define-key map [mouse-2] 'thumbs-mouse-find-image)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
755 (define-key map [(meta return)] 'thumbs-find-image-at-point-other-window)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
756 (define-key map [(control return)] 'thumbs-set-image-at-point-to-root-window)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
757 (define-key map [delete] 'thumbs-delete-images)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
758 (define-key map [right] 'thumbs-forward-char)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
759 (define-key map [left] 'thumbs-backward-char)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
760 (define-key map [up] 'thumbs-backward-line)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
761 (define-key map [down] 'thumbs-forward-line)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
762 (define-key map "+" 'thumbs-show-more-images)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
763 (define-key map "d" 'thumbs-dired)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
764 (define-key map "m" 'thumbs-mark)
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
765 (define-key map "u" 'thumbs-unmark)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
766 (define-key map "R" 'thumbs-rename-images)
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
767 (define-key map "x" 'thumbs-delete-images)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
768 (define-key map "s" 'thumbs-show-name)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
769 (define-key map "q" 'thumbs-kill-buffer)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
770 map)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
771 "Keymap for `thumbs-mode'.")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
772
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
773 (put 'thumbs-mode 'mode-class 'special)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
774 (define-derived-mode thumbs-mode
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
775 fundamental-mode "thumbs"
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
776 "Preview images in a thumbnails buffer"
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
777 (setq buffer-read-only t)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
778 (set (make-local-variable 'thumbs-marked-list) nil))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
779
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
780 (defvar thumbs-view-image-mode-map
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
781 (let ((map (make-sparse-keymap)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
782 (define-key map [prior] 'thumbs-previous-image)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
783 (define-key map [next] 'thumbs-next-image)
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
784 (define-key map "^" 'thumbs-display-thumbs-buffer)
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
785 (define-key map "-" 'thumbs-shrink-image)
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
786 (define-key map "+" 'thumbs-enlarge-image)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
787 (define-key map "<" 'thumbs-rotate-left)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
788 (define-key map ">" 'thumbs-rotate-right)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
789 (define-key map "e" 'thumbs-emboss-image)
68373
3bff02a6d438 (thumbs-new-image-size): New function.
Nick Roberts <nickrob@snap.net.nz>
parents: 68362
diff changeset
790 (define-key map "r" 'thumbs-resize-image)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
791 (define-key map "s" 'thumbs-save-current-image)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
792 (define-key map "q" 'thumbs-kill-buffer)
56934
ff141f26a0cb (thumbs-view-image-mode-map): Fix `thumbs-set-root' command name typo.
John Paul Wallington <jpw@pobox.com>
parents: 55827
diff changeset
793 (define-key map "w" 'thumbs-set-root)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
794 map)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
795 "Keymap for `thumbs-view-image-mode'.")
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
796
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
797 ;; thumbs-view-image-mode
55827
c5c73c8c2b3e Don't include cl. Don't bother with old Emacs versions.
Richard M. Stallman <rms@gnu.org>
parents: 55221
diff changeset
798 (put 'thumbs-view-image-mode 'mode-class 'special)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
799 (define-derived-mode thumbs-view-image-mode
56934
ff141f26a0cb (thumbs-view-image-mode-map): Fix `thumbs-set-root' command name typo.
John Paul Wallington <jpw@pobox.com>
parents: 55827
diff changeset
800 fundamental-mode "image-view-mode"
ff141f26a0cb (thumbs-view-image-mode-map): Fix `thumbs-set-root' command name typo.
John Paul Wallington <jpw@pobox.com>
parents: 55827
diff changeset
801 (setq buffer-read-only t))
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
802
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
803 ;;;###autoload
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
804 (defun thumbs-dired-setroot ()
62692
6dd34b690fa9 (thumbs-thumbsdir-max-size, thumbs-temp-file, thumbs-cleanup-thumbsdir,
Juanma Barranquero <lekktu@gmail.com>
parents: 60920
diff changeset
805 "In dired, call the setroot program on the image at point."
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
806 (interactive)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
807 (thumbs-call-setroot-command (dired-get-filename)))
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
808
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
809 ;; Modif to dired mode map
68362
3b10b20b3387 (thumbs-extra-images): New variable. Make it buffer-local
Nick Roberts <nickrob@snap.net.nz>
parents: 68340
diff changeset
810 (define-key dired-mode-map "\C-ta" 'thumbs-dired-show)
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
811 (define-key dired-mode-map "\C-tm" 'thumbs-dired-show-marked)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
812 (define-key dired-mode-map "\C-tw" 'thumbs-dired-setroot)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
813
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
814 (provide 'thumbs)
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
815
62927
bb23fe0bf1d3 (thumbs-mode): Fix misuse of make-variable-buffer-local.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 62891
diff changeset
816 ;; arch-tag: f9ac1ef8-83fc-42c0-8069-1fae43fd2e5c
54186
5d76d17025c5 New file.
Richard M. Stallman <rms@gnu.org>
parents:
diff changeset
817 ;;; thumbs.el ends here