Mercurial > emacs
annotate lisp/gnus/gnus-audio.el @ 77196:774bbc14e609
*** empty log message ***
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Sat, 14 Apr 2007 12:18:12 +0000 |
parents | e3694f1cb928 |
children | 24202b793a08 95d0cdf160ea |
rev | line source |
---|---|
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
1 ;;; gnus-audio.el --- Sound effects for Gnus |
64754
fafd692d1e40
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64085
diff
changeset
|
2 |
74547 | 3 ;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, |
75347 | 4 ;; 2005, 2006, 2007 Free Software Foundation, Inc. |
17493 | 5 |
6 ;; Author: Steven L. Baur <steve@miranova.com> | |
32214 | 7 ;; Keywords: news, mail, multimedia |
17493 | 8 |
9 ;; This file is part of GNU Emacs. | |
10 | |
11 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
12 ;; it under the terms of the GNU General Public License as published by | |
13 ;; the Free Software Foundation; either version 2, or (at your option) | |
14 ;; any later version. | |
15 | |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
64085 | 23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
24 ;; Boston, MA 02110-1301, USA. | |
17493 | 25 |
26 ;;; Commentary: | |
32214 | 27 |
17493 | 28 ;; This file provides access to sound effects in Gnus. |
32214 | 29 ;; This file is partially stripped to support earcons.el. |
30 | |
17493 | 31 ;;; Code: |
32 | |
32214 | 33 (require 'nnheader) |
17493 | 34 |
32214 | 35 (defgroup gnus-audio nil |
36 "Playing sound in Gnus." | |
37 :version "21.1" | |
38 :group 'gnus-visual | |
39 :group 'multimedia) | |
17493 | 40 |
41 (defvar gnus-audio-inline-sound | |
32214 | 42 (or (if (fboundp 'device-sound-enabled-p) |
43 (device-sound-enabled-p)) ; XEmacs | |
44 (fboundp 'play-sound)) ; Emacs 21 | |
45 "Non-nil means try to play sounds without using an external program.") | |
46 | |
47 (defcustom gnus-audio-directory (nnheader-find-etc-directory "sounds") | |
48 "The directory containing the Sound Files." | |
34327
51fb7a49a44b
(gnus-audio-directory): Fix :type.
Dave Love <fx@gnu.org>
parents:
32214
diff
changeset
|
49 :type '(choice directory (const nil)) |
32214 | 50 :group 'gnus-audio) |
17493 | 51 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
52 (defcustom gnus-audio-au-player (executable-find "play") |
32214 | 53 "Executable program for playing sun AU format sound files." |
54 :group 'gnus-audio | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
55 :type '(choice file (const nil))) |
17493 | 56 |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
57 (defcustom gnus-audio-wav-player (executable-find "play") |
32214 | 58 "Executable program for playing WAV files." |
59 :group 'gnus-audio | |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
60 :type '(choice file (const nil))) |
17493 | 61 |
24357
15fc6acbae7a
Upgrading to Gnus 5.7; see ChangeLog
Lars Magne Ingebrigtsen <larsi@gnus.org>
parents:
17493
diff
changeset
|
62 ;;; The following isn't implemented yet. Wait for Millennium Gnus. |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
63 ;;(defvar gnus-audio-effects-enabled t |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
64 ;; "When t, Gnus will use sound effects.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
65 ;;(defvar gnus-audio-enable-hooks nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
66 ;; "Functions run when enabling sound effects.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
67 ;;(defvar gnus-audio-disable-hooks nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
68 ;; "Functions run when disabling sound effects.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
69 ;;(defvar gnus-audio-theme-song nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
70 ;; "Theme song for Gnus.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
71 ;;(defvar gnus-audio-enter-group nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
72 ;; "Sound effect played when selecting a group.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
73 ;;(defvar gnus-audio-exit-group nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
74 ;; "Sound effect played when exiting a group.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
75 ;;(defvar gnus-audio-score-group nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
76 ;; "Sound effect played when scoring a group.") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
77 ;;(defvar gnus-audio-busy-sound nil |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
78 ;; "Sound effect played when going into a ... sequence.") |
17493 | 79 |
80 | |
81 ;;;###autoload | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
82 ;;(defun gnus-audio-enable-sound () |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
83 ;; "Enable Sound Effects for Gnus." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
84 ;; (interactive) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
85 ;; (setq gnus-audio-effects-enabled t) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
86 ;; (gnus-run-hooks gnus-audio-enable-hooks)) |
17493 | 87 |
88 ;;;###autoload | |
89 ;(defun gnus-audio-disable-sound () | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
90 ;; "Disable Sound Effects for Gnus." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
91 ;; (interactive) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
92 ;; (setq gnus-audio-effects-enabled nil) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
93 ;; (gnus-run-hooks gnus-audio-disable-hooks)) |
17493 | 94 |
95 ;;;###autoload | |
96 (defun gnus-audio-play (file) | |
32214 | 97 "Play a sound FILE through the speaker." |
56927
55fd4f77387a
Revision: miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-523
Miles Bader <miles@gnu.org>
parents:
52401
diff
changeset
|
98 (interactive "fSound file name: ") |
17493 | 99 (let ((sound-file (if (file-exists-p file) |
100 file | |
32214 | 101 (expand-file-name file gnus-audio-directory)))) |
17493 | 102 (when (file-exists-p sound-file) |
32214 | 103 (cond ((and gnus-audio-inline-sound |
104 (condition-case nil | |
105 ;; Even if we have audio, we may fail with the | |
106 ;; wrong sort of sound file. | |
107 (progn (play-sound-file sound-file) | |
108 t) | |
109 (error nil)))) | |
110 ;; If we don't have built-in sound, or playing it failed, | |
111 ;; try with external program. | |
112 ((equal "wav" (file-name-extension sound-file)) | |
113 (call-process gnus-audio-wav-player | |
114 sound-file | |
115 0 | |
116 nil | |
117 sound-file)) | |
118 ((equal "au" (file-name-extension sound-file)) | |
119 (call-process gnus-audio-au-player | |
120 sound-file | |
121 0 | |
122 nil | |
123 sound-file)))))) | |
17493 | 124 |
125 | |
126 ;;; The following isn't implemented yet, wait for Red Gnus | |
31716
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
127 ;;(defun gnus-audio-startrek-sounds () |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
128 ;; "Enable sounds from Star Trek the original series." |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
129 ;; (interactive) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
130 ;; (setq gnus-audio-busy-sound "working.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
131 ;; (setq gnus-audio-enter-group "bulkhead_door.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
132 ;; (setq gnus-audio-exit-group "bulkhead_door.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
133 ;; (setq gnus-audio-score-group "ST_laser.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
134 ;; (setq gnus-audio-theme-song "startrek.au") |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
135 ;; (add-hook 'gnus-select-group-hook 'gnus-audio-startrek-select-group) |
9968f55ad26e
Update to emacs-21-branch of the Gnus CVS repository.
Gerd Moellmann <gerd@gnu.org>
parents:
24357
diff
changeset
|
136 ;; (add-hook 'gnus-exit-group-hook 'gnus-audio-startrek-exit-group)) |
17493 | 137 ;;;*** |
138 | |
139 (defvar gnus-startup-jingle "Tuxedomoon.Jingle4.au" | |
140 "Name of the Gnus startup jingle file.") | |
141 | |
142 (defun gnus-play-jingle () | |
143 "Play the Gnus startup jingle, unless that's inhibited." | |
144 (interactive) | |
145 (gnus-audio-play gnus-startup-jingle)) | |
146 | |
147 (provide 'gnus-audio) | |
148 | |
149 (run-hooks 'gnus-audio-load-hook) | |
150 | |
52401 | 151 ;;; arch-tag: 6f129e78-3416-4fc9-973f-6cf5ac8d654b |
17493 | 152 ;;; gnus-audio.el ends here |