annotate lisp/thumbs.el @ 62927:bb23fe0bf1d3

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