annotate lisp/tool-bar.el @ 107189:a48b193e3b5f

(tramp-handle-insert-file-contents): Set always the permissions of the temporary file to "0600". In case the remote file has no read permissions for the owner, there might be problems otherwise. Reported by Ole Laursen <olau@iola.dk>.
author Michael Albinus <michael.albinus@gmx.de>
date Thu, 18 Feb 2010 11:03:12 +0100
parents 1d1d5d9bd884
children 4d8277a44bb4 376148b31b5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
1 ;;; tool-bar.el --- setting up the tool bar
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
2 ;;
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
3 ;; Copyright (C) 2000, 2001, 2002, 2003, 2004,
106815
1d1d5d9bd884 Add 2010 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 105870
diff changeset
4 ;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
5 ;;
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
6 ;; Author: Dave Love <fx@gnu.org>
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
7 ;; Keywords: mouse frames
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
8
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
10
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
11 ;; GNU Emacs is free software: you can redistribute it and/or modify
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
13 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
14 ;; (at your option) any later version.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
15
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
20
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93975
diff changeset
22 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
23
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
24 ;;; Commentary:
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
25
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
26 ;; Provides `tool-bar-mode' to control display of the tool-bar and
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
27 ;; bindings for the global tool bar with convenience functions
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
28 ;; `tool-bar-add-item' and `tool-bar-add-item-from-menu'.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
29
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
30 ;; The normal global binding for [tool-bar] (below) uses the value of
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
31 ;; `tool-bar-map' as the actual keymap to define the tool bar. Modes
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
32 ;; may either bind items under the [tool-bar] prefix key of the local
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
33 ;; map to add to the global bar or may set `tool-bar-map'
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
34 ;; buffer-locally to override it. (Some items are removed from the
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
35 ;; global bar in modes which have `special' as their `mode-class'
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
36 ;; property.)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
37
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
38 ;; Todo: Somehow make tool bars easily customizable by the naive?
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
39
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
40 ;;; Code:
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
41
66494
b9971215f644 (tool-bar-mode): Delete autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 66168
diff changeset
42 ;; The autoload cookie doesn't work when preloading.
b9971215f644 (tool-bar-mode): Delete autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 66168
diff changeset
43 ;; Deleting it means invoking this command won't work
b9971215f644 (tool-bar-mode): Delete autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 66168
diff changeset
44 ;; when you are on a tty. I hope that won't cause too much trouble -- rms.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
45 (define-minor-mode tool-bar-mode
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
46 "Toggle use of the tool bar.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
47 With numeric ARG, display the tool bar if and only if ARG is positive.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
48
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
49 See `tool-bar-add-item' and `tool-bar-add-item-from-menu' for
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
50 conveniently adding tool bar items."
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
51 :init-value nil
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
52 :global t
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
53 :group 'mouse
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
54 :group 'frames
98594
b40f8a9232b9 (tool-bar-mode): Only change tool-bar-lines on graphical terminals.
Chong Yidong <cyd@stupidchicken.com>
parents: 97947
diff changeset
55 (if tool-bar-mode
b40f8a9232b9 (tool-bar-mode): Only change tool-bar-lines on graphical terminals.
Chong Yidong <cyd@stupidchicken.com>
parents: 97947
diff changeset
56 (progn
101039
246092ea8477 (tool-bar-mode): Modify all frame parameters when
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
57 ;; Make one tool-bar-line for any - including non-graphical -
246092ea8477 (tool-bar-mode): Modify all frame parameters when
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
58 ;; terminal, see Bug#1754. If this causes problems, we should
246092ea8477 (tool-bar-mode): Modify all frame parameters when
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
59 ;; handle the problem in `modify-frame-parameters' or do not
246092ea8477 (tool-bar-mode): Modify all frame parameters when
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
60 ;; call `modify-all-frames-parameters' when toggling the tool
246092ea8477 (tool-bar-mode): Modify all frame parameters when
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
61 ;; bar off either.
246092ea8477 (tool-bar-mode): Modify all frame parameters when
Martin Rudalics <rudalics@gmx.at>
parents: 100908
diff changeset
62 (modify-all-frames-parameters (list (cons 'tool-bar-lines 1)))
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
63 (if (= 1 (length (default-value 'tool-bar-map))) ; not yet setup
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
64 (tool-bar-setup)))
98594
b40f8a9232b9 (tool-bar-mode): Only change tool-bar-lines on graphical terminals.
Chong Yidong <cyd@stupidchicken.com>
parents: 97947
diff changeset
65 (modify-all-frames-parameters (list (cons 'tool-bar-lines 0)))))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
66
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
67 ;;;###autoload
83497
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
68 ;; Used in the Show/Hide menu, to have the toggle reflect the current frame.
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
69 (defun toggle-tool-bar-mode-from-frame (&optional arg)
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
70 "Toggle tool bar on or off, based on the status of the current frame.
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
71 See `tool-bar-mode' for more information."
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
72 (interactive (list (or current-prefix-arg 'toggle)))
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
73 (if (eq arg 'toggle)
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
74 (tool-bar-mode (if (> (frame-parameter nil 'tool-bar-lines) 0) 0 1))
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
75 (tool-bar-mode arg)))
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
76
a25bb5ef27bf Fix tool-bar and menu-bar toggles in Show/Hide menu to reflect the state of the current frame.
Karoly Lorentey <lorentey@elte.hu>
parents: 83496
diff changeset
77 ;;;###autoload
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
78 ;; We want to pretend the toolbar by standard is on, as this will make
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
79 ;; customize consider disabling the toolbar a customization, and save
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
80 ;; that. We could do this for real by setting :init-value above, but
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
81 ;; that would turn on the toolbar in MS Windows where it is currently
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
82 ;; useless, and it would overwrite disabling the tool bar from X
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
83 ;; resources. If anyone want to implement this in a cleaner way,
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
84 ;; please do so.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
85 ;; -- Per Abrahamsen <abraham@dina.kvl.dk> 2002-02-21.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
86 (put 'tool-bar-mode 'standard-value '(t))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
87
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
88 (defvar tool-bar-map (make-sparse-keymap)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
89 "Keymap for the tool bar.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
90 Define this locally to override the global tool bar.")
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
91
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
92 (global-set-key [tool-bar]
105870
26baacb565b0 * textmodes/tex-mode.el (tex-alt-dvi-print-command)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 101039
diff changeset
93 `(menu-item ,(purecopy "tool bar") ignore
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
94 :filter tool-bar-make-keymap))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
95
95841
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94899
diff changeset
96 (declare-function image-mask-p "image.c" (spec &optional frame))
b4e36ff621b3 Add some compiler declarations, for builds without X.
Glenn Morris <rgm@gnu.org>
parents: 94899
diff changeset
97
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
98 (defconst tool-bar-keymap-cache (make-hash-table :weakness t :test 'equal))
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
99
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
100 (defun tool-bar-make-keymap (&optional ignore)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
101 "Generate an actual keymap from `tool-bar-map'.
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
102 Its main job is to figure out which images to use based on the display's
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
103 color capability and based on the available image libraries."
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
104 (let ((key (cons (frame-terminal) tool-bar-map)))
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
105 (or (gethash key tool-bar-keymap-cache)
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
106 (puthash key (tool-bar-make-keymap-1) tool-bar-keymap-cache))))
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
107
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
108 (defun tool-bar-make-keymap-1 ()
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
109 "Generate an actual keymap from `tool-bar-map', without caching."
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
110 (mapcar (lambda (bind)
94897
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
111 (let (image-exp plist)
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
112 (when (and (eq (car-safe (cdr-safe bind)) 'menu-item)
94897
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
113 ;; For the format of menu-items, see node
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
114 ;; `Extended Menu Items' in the Elisp manual.
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
115 (setq plist (nthcdr (if (consp (nth 4 bind)) 5 4)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
116 bind))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
117 (setq image-exp (plist-get plist :image))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
118 (consp image-exp)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
119 (not (eq (car image-exp) 'image))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
120 (fboundp (car image-exp)))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
121 (if (not (display-images-p))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
122 (setq bind nil)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
123 (let ((image (eval image-exp)))
94899
29fb4d52c079 (tool-bar-make-keymap): Additional minor fix.
Chong Yidong <cyd@stupidchicken.com>
parents: 94897
diff changeset
124 (unless (and image (image-mask-p image))
94897
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
125 (setq image (append image '(:mask heuristic))))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
126 (setq bind (copy-sequence bind)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
127 plist (nthcdr (if (consp (nth 4 bind)) 5 4)
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
128 bind))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
129 (plist-put plist :image image))))
f23487dcd0a8 (tool-bar-make-keymap): Account for the optional KEY-BINDING-DATA
Chong Yidong <cyd@stupidchicken.com>
parents: 94727
diff changeset
130 bind))
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
131 tool-bar-map))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
132
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
133 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
134 (defun tool-bar-add-item (icon def key &rest props)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
135 "Add an item to the tool bar.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
136 ICON names the image, DEF is the key definition and KEY is a symbol
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
137 for the fake function key in the menu keymap. Remaining arguments
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
138 PROPS are additional items to add to the menu item specification. See
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
139 Info node `(elisp)Tool Bar'. Items are added from left to right.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
140
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
141 ICON is the base name of a file containing the image to use. The
80756
76e75acf7e4e Fix typos (sync from the trunk).
Juanma Barranquero <lekktu@gmail.com>
parents: 79721
diff changeset
142 function will first try to use low-color/ICON.xpm if `display-color-cells'
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
143 is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
144 ICON.xbm, using `find-image'.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
145
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
146 Use this function only to make bindings in the global value of `tool-bar-map'.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
147 To define items in any other map, use `tool-bar-local-item'."
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
148 (apply 'tool-bar-local-item icon def key tool-bar-map props))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
149
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
150 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
151 (defun tool-bar-local-item (icon def key map &rest props)
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
152 "Add an item to the tool bar in map MAP.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
153 ICON names the image, DEF is the key definition and KEY is a symbol
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
154 for the fake function key in the menu keymap. Remaining arguments
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
155 PROPS are additional items to add to the menu item specification. See
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
156 Info node `(elisp)Tool Bar'. Items are added from left to right.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
157
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
158 ICON is the base name of a file containing the image to use. The
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
159 function will first try to use low-color/ICON.xpm if `display-color-cells'
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
160 is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
161 ICON.xbm, using `find-image'."
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
162 (let* ((fg (face-attribute 'tool-bar :foreground))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
163 (bg (face-attribute 'tool-bar :background))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
164 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
165 (if (eq bg 'unspecified) nil (list :background bg))))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
166 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
167 (xpm-lo-spec (list :type 'xpm :file
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
168 (concat "low-color/" icon ".xpm")))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
169 (pbm-spec (append (list :type 'pbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
170 (concat icon ".pbm")) colors))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
171 (xbm-spec (append (list :type 'xbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
172 (concat icon ".xbm")) colors))
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
173 (image-exp `(find-image
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
174 (cond ((not (display-color-p))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
175 ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
176 ((< (display-color-cells) 256)
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
177 ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
178 (t
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
179 ',(list xpm-spec pbm-spec xbm-spec))))))
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
180 (define-key-after map (vector key)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
181 `(menu-item ,(symbol-name key) ,def :image ,image-exp ,@props))))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
182
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
183 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
184 (defun tool-bar-add-item-from-menu (command icon &optional map &rest props)
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
185 "Define tool bar binding for COMMAND in keymap MAP using the given ICON.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
186 This makes a binding for COMMAND in `tool-bar-map', copying its
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
187 binding from the menu bar in MAP (which defaults to `global-map'), but
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
188 modifies the binding by adding an image specification for ICON. It
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
189 finds ICON just like `tool-bar-add-item'. PROPS are additional
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
190 properties to add to the binding.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
191
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
192 MAP must contain appropriate binding for `[menu-bar]' which holds a keymap.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
193
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
194 Use this function only to make bindings in the global value of `tool-bar-map'.
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
195 To define items in any other map, use `tool-bar-local-item-from-menu'."
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
196 (apply 'tool-bar-local-item-from-menu command icon
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
197 (default-value 'tool-bar-map) map props))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
198
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
199 ;;;###autoload
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
200 (defun tool-bar-local-item-from-menu (command icon in-map &optional from-map &rest props)
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
201 "Define local tool bar binding for COMMAND using the given ICON.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
202 This makes a binding for COMMAND in IN-MAP, copying its binding from
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
203 the menu bar in FROM-MAP (which defaults to `global-map'), but
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
204 modifies the binding by adding an image specification for ICON. It
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
205 finds ICON just like `tool-bar-add-item'. PROPS are additional
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
206 properties to add to the binding.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
207
66512
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
208 FROM-MAP must contain appropriate binding for `[menu-bar]' which
759df5a9dc3e (tool-bar-add-item-from-menu)
Nick Roberts <nickrob@snap.net.nz>
parents: 66494
diff changeset
209 holds a keymap."
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
210 (unless from-map
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
211 (setq from-map global-map))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
212 (let* ((menu-bar-map (lookup-key from-map [menu-bar]))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
213 (keys (where-is-internal command menu-bar-map))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
214 (fg (face-attribute 'tool-bar :foreground))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
215 (bg (face-attribute 'tool-bar :background))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
216 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
217 (if (eq bg 'unspecified) nil (list :background bg))))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
218 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
219 (xpm-lo-spec (list :type 'xpm :file
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
220 (concat "low-color/" icon ".xpm")))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
221 (pbm-spec (append (list :type 'pbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
222 (concat icon ".pbm")) colors))
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
223 (xbm-spec (append (list :type 'xbm :file
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
224 (concat icon ".xbm")) colors))
99971
1b6dc3613e69 (tool-bar-find-image-cache): Var deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98658
diff changeset
225 (image-exp `(find-image
98624
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
226 (cond ((not (display-color-p))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
227 ',(list pbm-spec xbm-spec xpm-lo-spec xpm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
228 ((< (display-color-cells) 256)
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
229 ',(list xpm-lo-spec xpm-spec pbm-spec xbm-spec))
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
230 (t
14621c767c96 (tool-bar-local-item)
Chong Yidong <cyd@stupidchicken.com>
parents: 98594
diff changeset
231 ',(list xpm-spec pbm-spec xbm-spec)))))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
232 submap key)
94727
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
233 ;; We'll pick up the last valid entry in the list of keys if
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
234 ;; there's more than one.
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
235 (dolist (k keys)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
236 ;; We're looking for a binding of the command in a submap of
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
237 ;; the menu bar map, so the key sequence must be two or more
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
238 ;; long.
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
239 (if (and (vectorp k)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
240 (> (length k) 1))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
241 (let ((m (lookup-key menu-bar-map (substring k 0 -1)))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
242 ;; Last element in the bound key sequence:
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
243 (kk (aref k (1- (length k)))))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
244 (if (and (keymapp m)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
245 (symbolp kk))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
246 (setq submap m
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
247 key kk)))))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
248 (when (and (symbolp submap) (boundp submap))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
249 (setq submap (eval submap)))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
250 (let ((defn (assq key (cdr submap))))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
251 (if (eq (cadr defn) 'menu-item)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
252 (define-key-after in-map (vector key)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
253 (append (cdr defn) (list :image image-exp) props))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
254 (setq defn (cdr defn))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
255 (define-key-after in-map (vector key)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
256 (let ((rest (cdr defn)))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
257 ;; If the rest of the definition starts
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
258 ;; with a list of menu cache info, get rid of that.
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
259 (if (and (consp rest) (consp (car rest)))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
260 (setq rest (cdr rest)))
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
261 (append `(menu-item ,(car defn) ,rest)
ddce4c48ffb7 Choose images dynamically.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94678
diff changeset
262 (list :image image-exp) props)))))))
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
263
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
264 ;;; Set up some global items. Additions/deletions up for grabs.
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
265
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
266 (defun tool-bar-setup ()
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
267 ;; People say it's bad to have EXIT on the tool bar, since users
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
268 ;; might inadvertently click that button.
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
269 ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
270 (tool-bar-add-item-from-menu 'find-file "new")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
271 (tool-bar-add-item-from-menu 'menu-find-file-existing "open")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
272 (tool-bar-add-item-from-menu 'dired "diropen")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
273 (tool-bar-add-item-from-menu 'kill-this-buffer "close")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
274 (tool-bar-add-item-from-menu 'save-buffer "save" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
275 :visible '(or buffer-file-name
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
276 (not (eq 'special
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
277 (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
278 'mode-class)))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
279 (tool-bar-add-item-from-menu 'write-file "saveas" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
280 :visible '(or buffer-file-name
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
281 (not (eq 'special
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
282 (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
283 'mode-class)))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
284 (tool-bar-add-item-from-menu 'undo "undo" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
285 :visible '(not (eq 'special (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
286 'mode-class))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
287 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [cut])
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
288 "cut" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
289 :visible '(not (eq 'special (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
290 'mode-class))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
291 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [copy])
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
292 "copy")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
293 (tool-bar-add-item-from-menu (lookup-key menu-bar-edit-menu [paste])
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
294 "paste" nil
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
295 :visible '(not (eq 'special (get major-mode
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
296 'mode-class))))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
297 (tool-bar-add-item-from-menu 'nonincremental-search-forward "search")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
298 ;;(tool-bar-add-item-from-menu 'ispell-buffer "spell")
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
299
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
300 ;; There's no icon appropriate for News and we need a command rather
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
301 ;; than a lambda for Read Mail.
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
302 ;;(tool-bar-add-item-from-menu 'compose-mail "mail/compose")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
303
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
304 (tool-bar-add-item-from-menu 'print-buffer "print")
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
305
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
306 ;; tool-bar-add-item-from-menu itself operates on
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
307 ;; (default-value 'tool-bar-map), but when we don't use that function,
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
308 ;; we must explicitly operate on the default value.
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
309
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
310 (let ((tool-bar-map (default-value 'tool-bar-map)))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
311 (tool-bar-add-item "preferences" 'customize 'customize
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
312 :help "Edit preferences (customize)")
70323
810cd69c168f (tool-bar-setup): Put Help and Preferences items in the default tool-bar-map.
Richard M. Stallman <rms@gnu.org>
parents: 68651
diff changeset
313
98658
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
314 (tool-bar-add-item "help" (lambda ()
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
315 (interactive)
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
316 (popup-menu menu-bar-help-menu))
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
317 'help
3e7bd62df13a (tool-bar-setup): Variable deleted.
Chong Yidong <cyd@stupidchicken.com>
parents: 98624
diff changeset
318 :help "Pop up the Help menu")))
83514
d9f8d2a65d18 Merged from emacs@sv.gnu.org
Karoly Lorentey <lorentey@elte.hu>
parents: 83497 70323
diff changeset
319
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
320
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
321 (provide 'tool-bar)
93975
1e3a407766b9 Fix up comment convention on the arch-tag lines.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 92262
diff changeset
322 ;; arch-tag: 15f30f0a-d0d7-4d50-bbb7-f48fd0c8582f
66168
28718fa5d988 Moved all remaining images from lisp/toolbar to etc/images, moved
Bill Wohler <wohler@newt.com>
parents:
diff changeset
323 ;;; tool-bar.el ends here