Mercurial > emacs
annotate lisp/toolbar/tool-bar.el @ 48875:e79464fe61d7
(coding_system_require_warning): Extern it.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Tue, 17 Dec 2002 11:39:34 +0000 |
parents | 7350385eb42a |
children | 695cf19ef79e |
rev | line source |
---|---|
38436
b174db545cfd
Some fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents:
38144
diff
changeset
|
1 ;;; tool-bar.el --- setting up the tool bar |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
2 ;; |
43246
c187056ac630
2002-02-11 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
39019
diff
changeset
|
3 ;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
4 ;; |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
5 ;; Author: Dave Love <fx@gnu.org> |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
6 ;; Keywords: mouse frames |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
7 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
8 ;; This file is part of GNU Emacs. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
9 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
10 ;; GNU Emacs is free software; you can redistribute it and/or modify |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
11 ;; it under the terms of the GNU General Public License as published by |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
12 ;; the Free Software Foundation; either version 2, or (at your option) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
13 ;; any later version. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
14 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
15 ;; GNU Emacs is distributed in the hope that it will be useful, |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
18 ;; GNU General Public License for more details. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
19 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
20 ;; You should have received a copy of the GNU General Public License |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
21 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
22 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
23 ;; Boston, MA 02111-1307, USA. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
24 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
25 ;;; Commentary: |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
26 |
45935 | 27 ;; Provides `tool-bar-mode' to control display of the tool-bar and |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
28 ;; bindings for the global tool bar with convenience functions |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
29 ;; `tool-bar-add-item' and `tool-bar-add-item-from-menu'. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
30 |
32285 | 31 ;; The normal global binding for [tool-bar] (below) uses the value of |
33574 | 32 ;; `tool-bar-map' as the actual keymap to define the tool bar. Modes |
33 ;; may either bind items under the [tool-bar] prefix key of the local | |
34 ;; map to add to the global bar or may set `tool-bar-map' | |
32382 | 35 ;; buffer-locally to override it. (Some items are removed from the |
32285 | 36 ;; global bar in modes which have `special' as their `mode-class' |
44153
3db8348dbbfa
Fix typo in commentary.
Juanma Barranquero <lekktu@gmail.com>
parents:
43445
diff
changeset
|
37 ;; property.) |
32285 | 38 |
32331
d1c0cf83e365
(tool-bar-mode): Check whether tool-bar-map
Dave Love <fx@gnu.org>
parents:
32285
diff
changeset
|
39 ;; Todo: Somehow make tool bars easily customizable by the naive? |
d1c0cf83e365
(tool-bar-mode): Check whether tool-bar-map
Dave Love <fx@gnu.org>
parents:
32285
diff
changeset
|
40 |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
41 ;;; Code: |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
42 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
43 ;;;###autoload |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
44 (define-minor-mode tool-bar-mode |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
45 "Toggle use of the tool bar. |
34004 | 46 With numeric ARG, display the tool bar if and only if ARG is positive. |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
47 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
48 See `tool-bar-add-item' and `tool-bar-add-item-from-menu' for |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
49 conveniently adding tool bar items." |
43445
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
50 :init-value nil |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
51 :global t |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
52 :group 'mouse |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
53 :group 'frames |
39019
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
54 (and (display-images-p) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
55 (let ((lines (if tool-bar-mode 1 0))) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
56 ;; Alter existing frames... |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
57 (mapc (lambda (frame) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
58 (modify-frame-parameters frame |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
59 (list (cons 'tool-bar-lines lines)))) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
60 (frame-list)) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
61 ;; ...and future ones. |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
62 (let ((elt (assq 'tool-bar-lines default-frame-alist))) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
63 (if elt |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
64 (setcdr elt lines) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
65 (add-to-list 'default-frame-alist (cons 'tool-bar-lines lines))))) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
66 (if (and tool-bar-mode |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
67 (display-graphic-p) |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
68 (= 1 (length (default-value 'tool-bar-map)))) ; not yet setup |
a9bd717014f0
(tool-bar-mode): Make it a no-op if images
Eli Zaretskii <eliz@gnu.org>
parents:
38698
diff
changeset
|
69 (tool-bar-setup)))) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
70 |
43445
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
71 ;;;###autoload |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
72 ;; We want to pretend the toolbar by standard is on, as this will make |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
73 ;; customize consider disabling the toolbar a customization, and save |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
74 ;; that. We could do this for real by setting :init-value above, but |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
75 ;; that would turn on the toolbar in MS Windows where it is currently |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
76 ;; useless, and it would overwrite disabling the tool bar from X |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
77 ;; resources. If anyone want to implement this in a cleaner way, |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
78 ;; please do so. |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
79 ;; -- Per Abrahamsen <abraham@dina.kvl.dk> 2002-02-21. |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
80 (put 'tool-bar-mode 'standard-value '(t)) |
2fca4318df9a
2002-02-21 Per Abrahamsen <abraham@dina.kvl.dk>
Per Abrahamsen <abraham@dina.kvl.dk>
parents:
43412
diff
changeset
|
81 |
32285 | 82 (defvar tool-bar-map (make-sparse-keymap) |
83 "Keymap for the tool bar. | |
84 Define this locally to override the global tool bar.") | |
85 | |
86 (global-set-key [tool-bar] | |
87 '(menu-item "tool bar" ignore | |
88 :filter (lambda (ignore) tool-bar-map))) | |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
89 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
90 ;;;###autoload |
32285 | 91 (defun tool-bar-add-item (icon def key &rest props) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
92 "Add an item to the tool bar. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
93 ICON names the image, DEF is the key definition and KEY is a symbol |
32285 | 94 for the fake function key in the menu keymap. Remaining arguments |
95 PROPS are additional items to add to the menu item specification. See | |
96 Info node `(elisp)Tool Bar'. Items are added from left to right. | |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
97 |
35764
0a2ba9c8fde1
(tool-bar-add-item): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
34019
diff
changeset
|
98 ICON is the base name of a file containing the image to use. The |
0a2ba9c8fde1
(tool-bar-add-item): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
34019
diff
changeset
|
99 function will first try to use ICON.xpm, then ICON.pbm, and finally |
0a2ba9c8fde1
(tool-bar-add-item): Doc fix.
Eli Zaretskii <eliz@gnu.org>
parents:
34019
diff
changeset
|
100 ICON.xbm, using `find-image'. |
32285 | 101 |
44307
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
102 Use this function only to make bindings in the global value of `tool-bar-map'. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
103 To define items in any other map, use `tool-bar-local-item'." |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
104 (apply 'tool-bar-local-item icon def key tool-bar-map props)) |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
105 |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
106 ;;;###autoload |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
107 (defun tool-bar-local-item (icon def key map &rest props) |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
108 "Add an item to the tool bar in map MAP. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
109 ICON names the image, DEF is the key definition and KEY is a symbol |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
110 for the fake function key in the menu keymap. Remaining arguments |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
111 PROPS are additional items to add to the menu item specification. See |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
112 Info node `(elisp)Tool Bar'. Items are added from left to right. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
113 |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
114 ICON is the base name of a file containing the image to use. The |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
115 function will first try to use ICON.xpm, then ICON.pbm, and finally |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
116 ICON.xbm, using `find-image'." |
34019
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
117 (let* ((fg (face-attribute 'tool-bar :foreground)) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
118 (bg (face-attribute 'tool-bar :background)) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
119 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg)) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
120 (if (eq bg 'unspecified) nil (list :background bg)))) |
32788 | 121 (image (find-image |
32358 | 122 (if (display-color-p) |
34019
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
123 (list (list :type 'xpm :file (concat icon ".xpm")) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
124 (append (list :type 'pbm :file (concat icon ".pbm")) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
125 colors) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
126 (append (list :type 'xbm :file (concat icon ".xbm")) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
127 colors)) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
128 (list (append (list :type 'pbm :file (concat icon ".pbm")) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
129 colors) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
130 (append (list :type 'xbm :file (concat icon ".xbm")) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
131 colors) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
132 (list :type 'xpm :file (concat icon ".xpm"))))))) |
38470
b8361f155685
(tool-bar-add-item-from-menu, tool-bar-add-item): Don't call image-related
Eli Zaretskii <eliz@gnu.org>
parents:
38436
diff
changeset
|
133 (when (and (display-images-p) image) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
134 (unless (image-mask-p image) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
135 (setq image (append image '(:mask heuristic)))) |
44307
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
136 (define-key-after map (vector key) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
137 `(menu-item ,(symbol-name key) ,def :image ,image ,@props))))) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
138 |
32340
97bfc5c6e1c1
(tool-bar-add-item-from-menu): Add autoload cookie.
Dave Love <fx@gnu.org>
parents:
32331
diff
changeset
|
139 ;;;###autoload |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
140 (defun tool-bar-add-item-from-menu (command icon &optional map &rest props) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
141 "Define tool bar binding for COMMAND using the given ICON in keymap MAP. |
44307
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
142 This makes a binding for COMMAND in `tool-bar-map', copying its |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
143 binding from the menu bar in MAP (which defaults to `global-map'), but |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
144 modifies the binding by adding an image specification for ICON. It |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
145 finds ICON just like `tool-bar-add-item'. PROPS are additional |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
146 properties to add to the binding. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
147 |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
148 MAP must contain appropriate binding for `[menu-bar]' which holds a keymap. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
149 |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
150 Use this function only to make bindings in the global value of `tool-bar-map'. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
151 To define items in any other map, use `tool-bar-local-item'." |
46483
7350385eb42a
(tool-bar-add-item-from-menu): Make sure to change the global tool-bar-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45935
diff
changeset
|
152 (apply 'tool-bar-local-item-from-menu command icon |
7350385eb42a
(tool-bar-add-item-from-menu): Make sure to change the global tool-bar-map.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
45935
diff
changeset
|
153 (default-value 'tool-bar-map) map props)) |
32285 | 154 |
44307
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
155 ;;;###autoload |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
156 (defun tool-bar-local-item-from-menu (command icon in-map &optional from-map &rest props) |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
157 "Define tool bar binding for COMMAND using the given ICON in keymap MAP. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
158 This makes a binding for COMMAND in IN-MAP, copying its binding from |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
159 the menu bar in FROM-MAP (which defaults to `global-map'), but |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
160 modifies the binding by adding an image specification for ICON. It |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
161 finds ICON just like `tool-bar-add-item'. PROPS are additional |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
162 properties to add to the binding. |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
163 |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
164 MAP must contain appropriate binding for `[menu-bar]' which holds a keymap." |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
165 (unless from-map |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
166 (setq from-map global-map)) |
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
167 (let* ((menu-bar-map (lookup-key from-map [menu-bar])) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
168 (keys (where-is-internal command menu-bar-map)) |
34019
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
169 (fg (face-attribute 'tool-bar :foreground)) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
170 (bg (face-attribute 'tool-bar :background)) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
171 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg)) |
3d6f9638e8e5
(tool-bar-add-item-from-menu): Use
Gerd Moellmann <gerd@gnu.org>
parents:
34004
diff
changeset
|
172 (if (eq bg 'unspecified) nil (list :background bg)))) |
33895
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
173 (spec (if (display-color-p) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
174 (list (list :type 'xpm :file (concat icon ".xpm")) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
175 (append (list :type 'pbm :file (concat icon ".pbm")) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
176 colors) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
177 (append (list :type 'xbm :file (concat icon ".xbm")) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
178 colors)) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
179 (list (append (list :type 'pbm :file (concat icon ".pbm")) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
180 colors) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
181 (append (list :type 'xbm :file (concat icon ".xbm")) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
182 colors) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
183 (list :type 'xpm :file (concat icon ".xpm"))))) |
3683396305bc
(tool-bar-add-item-from-menu): Handle case
Gerd Moellmann <gerd@gnu.org>
parents:
33574
diff
changeset
|
184 (image (find-image spec)) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
185 submap key) |
38470
b8361f155685
(tool-bar-add-item-from-menu, tool-bar-add-item): Don't call image-related
Eli Zaretskii <eliz@gnu.org>
parents:
38436
diff
changeset
|
186 (when (and (display-images-p) image) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
187 ;; We'll pick up the last valid entry in the list of keys if |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
188 ;; there's more than one. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
189 (dolist (k keys) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
190 ;; We're looking for a binding of the command in a submap of |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
191 ;; the menu bar map, so the key sequence must be two or more |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
192 ;; long. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
193 (if (and (vectorp k) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
194 (> (length k) 1)) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
195 (let ((m (lookup-key menu-bar-map (substring k 0 -1))) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
196 ;; Last element in the bound key sequence: |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
197 (kk (aref k (1- (length k))))) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
198 (if (and (keymapp m) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
199 (symbolp kk)) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
200 (setq submap m |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
201 key kk))))) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
202 (when (and (symbolp submap) (boundp submap)) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
203 (setq submap (eval submap))) |
31751
3c4b8a33fed9
Reapply Gerd's change from 2000-09-18, which seems to have gotten lost:
Miles Bader <miles@gnu.org>
parents:
31738
diff
changeset
|
204 (unless (image-mask-p image) |
3c4b8a33fed9
Reapply Gerd's change from 2000-09-18, which seems to have gotten lost:
Miles Bader <miles@gnu.org>
parents:
31738
diff
changeset
|
205 (setq image (append image '(:mask heuristic)))) |
38698
0d7cddbc0fa7
(tool-bar-add-item-from-menu): Handle
Gerd Moellmann <gerd@gnu.org>
parents:
38470
diff
changeset
|
206 (let ((defn (assq key (cdr submap)))) |
0d7cddbc0fa7
(tool-bar-add-item-from-menu): Handle
Gerd Moellmann <gerd@gnu.org>
parents:
38470
diff
changeset
|
207 (if (eq (cadr defn) 'menu-item) |
44307
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
208 (define-key-after in-map (vector key) |
38698
0d7cddbc0fa7
(tool-bar-add-item-from-menu): Handle
Gerd Moellmann <gerd@gnu.org>
parents:
38470
diff
changeset
|
209 (append (cdr defn) (list :image image) props)) |
0d7cddbc0fa7
(tool-bar-add-item-from-menu): Handle
Gerd Moellmann <gerd@gnu.org>
parents:
38470
diff
changeset
|
210 (setq defn (cdr defn)) |
44307
62bd2c6cd91f
(tool-bar-local-item): Renamed from tool-bar-add-item, and new arg MAP.
Richard M. Stallman <rms@gnu.org>
parents:
44153
diff
changeset
|
211 (define-key-after in-map (vector key) |
45133
1fa9ceaa1c5f
(tool-bar-local-item-from-menu): Handle both cases: when the menu item
Richard M. Stallman <rms@gnu.org>
parents:
44670
diff
changeset
|
212 (let ((rest (cdr defn))) |
1fa9ceaa1c5f
(tool-bar-local-item-from-menu): Handle both cases: when the menu item
Richard M. Stallman <rms@gnu.org>
parents:
44670
diff
changeset
|
213 ;; If the rest of the definition starts |
1fa9ceaa1c5f
(tool-bar-local-item-from-menu): Handle both cases: when the menu item
Richard M. Stallman <rms@gnu.org>
parents:
44670
diff
changeset
|
214 ;; with a list of menu cache info, get rid of that. |
1fa9ceaa1c5f
(tool-bar-local-item-from-menu): Handle both cases: when the menu item
Richard M. Stallman <rms@gnu.org>
parents:
44670
diff
changeset
|
215 (if (and (consp rest) (consp (car rest))) |
1fa9ceaa1c5f
(tool-bar-local-item-from-menu): Handle both cases: when the menu item
Richard M. Stallman <rms@gnu.org>
parents:
44670
diff
changeset
|
216 (setq rest (cdr rest))) |
1fa9ceaa1c5f
(tool-bar-local-item-from-menu): Handle both cases: when the menu item
Richard M. Stallman <rms@gnu.org>
parents:
44670
diff
changeset
|
217 (append `(menu-item ,(car defn) ,rest) |
1fa9ceaa1c5f
(tool-bar-local-item-from-menu): Handle both cases: when the menu item
Richard M. Stallman <rms@gnu.org>
parents:
44670
diff
changeset
|
218 (list :image image) props)))))))) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
219 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
220 ;;; Set up some global items. Additions/deletions up for grabs. |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
221 |
32124 | 222 (defun tool-bar-setup () |
38144
ef9d470d0fd1
(tool-bar-setup): Remove the EXIT button.
Eli Zaretskii <eliz@gnu.org>
parents:
36715
diff
changeset
|
223 ;; People say it's bad to have EXIT on the tool bar, since users |
ef9d470d0fd1
(tool-bar-setup): Remove the EXIT button.
Eli Zaretskii <eliz@gnu.org>
parents:
36715
diff
changeset
|
224 ;; might inadvertently click that button. |
ef9d470d0fd1
(tool-bar-setup): Remove the EXIT button.
Eli Zaretskii <eliz@gnu.org>
parents:
36715
diff
changeset
|
225 ;;(tool-bar-add-item-from-menu 'save-buffers-kill-emacs "exit") |
32124 | 226 (tool-bar-add-item-from-menu 'find-file "new") |
227 (tool-bar-add-item-from-menu 'dired "open") | |
228 (tool-bar-add-item-from-menu 'kill-this-buffer "close") | |
229 (tool-bar-add-item-from-menu 'save-buffer "save" nil | |
36715
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
230 :visible '(or buffer-file-name |
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
231 (not (eq 'special |
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
232 (get major-mode |
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
233 'mode-class))))) |
32124 | 234 (tool-bar-add-item-from-menu 'write-file "saveas" nil |
36715
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
235 :visible '(or buffer-file-name |
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
236 (not (eq 'special |
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
237 (get major-mode |
2b98ff02ebaf
(tool-bar-setup): Don't suppress write-file
Dave Love <fx@gnu.org>
parents:
35764
diff
changeset
|
238 'mode-class))))) |
32124 | 239 (tool-bar-add-item-from-menu 'undo "undo" nil |
240 :visible '(not (eq 'special (get major-mode | |
241 'mode-class)))) | |
242 (tool-bar-add-item-from-menu 'kill-region "cut" nil | |
243 :visible '(not (eq 'special (get major-mode | |
244 'mode-class)))) | |
245 (tool-bar-add-item-from-menu 'menu-bar-kill-ring-save "copy") | |
246 (tool-bar-add-item-from-menu 'yank "paste" nil | |
247 :visible '(not (eq 'special (get major-mode | |
248 'mode-class)))) | |
249 (tool-bar-add-item-from-menu 'nonincremental-search-forward "search") | |
250 ;;(tool-bar-add-item-from-menu 'ispell-buffer "spell") | |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
251 |
32124 | 252 ;; There's no icon appropriate for News and we need a command rather |
253 ;; than a lambda for Read Mail. | |
254 ;;(tool-bar-add-item-from-menu 'compose-mail "mail_compose") | |
31895
6d04db7a9256
(tool-bar-help): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
31751
diff
changeset
|
255 |
32124 | 256 (tool-bar-add-item-from-menu 'print-buffer "print") |
32285 | 257 (tool-bar-add-item "preferences" 'customize 'customize |
32124 | 258 :help "Edit preferences (customize)") |
31895
6d04db7a9256
(tool-bar-help): New function.
Gerd Moellmann <gerd@gnu.org>
parents:
31751
diff
changeset
|
259 |
32285 | 260 (tool-bar-add-item "help" (lambda () |
261 (interactive) | |
262 (popup-menu menu-bar-help-menu)) | |
263 'help | |
264 :help "Pop up the Help menu") | |
32124 | 265 ) |
31738
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
266 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
267 (provide 'tool-bar) |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
268 |
e8458588eb55
Renamed from toolbar.el. Change `toolbar'
Dave Love <fx@gnu.org>
parents:
diff
changeset
|
269 ;;; tool-bar.el ends here |