Commit | Line | Data |
---|---|---|
23f87bed | 1 | ;;; gnus-audio.el --- Sound effects for Gnus |
e84b4b86 | 2 | |
b6c2d8c6 | 3 | ;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, |
5df4f04c | 4 | ;; 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. |
eec82323 LMI |
5 | |
6 | ;; Author: Steven L. Baur <steve@miranova.com> | |
50e488b1 | 7 | ;; Keywords: news, mail, multimedia |
eec82323 LMI |
8 | |
9 | ;; This file is part of GNU Emacs. | |
10 | ||
5e809f55 | 11 | ;; GNU Emacs is free software: you can redistribute it and/or modify |
eec82323 | 12 | ;; it under the terms of the GNU General Public License as published by |
5e809f55 GM |
13 | ;; the Free Software Foundation, either version 3 of the License, or |
14 | ;; (at your option) any later version. | |
eec82323 LMI |
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 | |
5e809f55 | 22 | ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |
eec82323 LMI |
23 | |
24 | ;;; Commentary: | |
50e488b1 | 25 | |
eec82323 | 26 | ;; This file provides access to sound effects in Gnus. |
50e488b1 | 27 | ;; This file is partially stripped to support earcons.el. |
eec82323 | 28 | |
50e488b1 | 29 | ;;; Code: |
eec82323 LMI |
30 | |
31 | (require 'nnheader) | |
eec82323 | 32 | |
50e488b1 DL |
33 | (defgroup gnus-audio nil |
34 | "Playing sound in Gnus." | |
35 | :version "21.1" | |
36 | :group 'gnus-visual | |
37 | :group 'multimedia) | |
eec82323 | 38 | |
50e488b1 DL |
39 | (defvar gnus-audio-inline-sound |
40 | (or (if (fboundp 'device-sound-enabled-p) | |
41 | (device-sound-enabled-p)) ; XEmacs | |
42 | (fboundp 'play-sound)) ; Emacs 21 | |
43 | "Non-nil means try to play sounds without using an external program.") | |
44 | ||
45 | (defcustom gnus-audio-directory (nnheader-find-etc-directory "sounds") | |
46 | "The directory containing the Sound Files." | |
9b708394 | 47 | :type '(choice directory (const nil)) |
50e488b1 DL |
48 | :group 'gnus-audio) |
49 | ||
23f87bed | 50 | (defcustom gnus-audio-au-player (executable-find "play") |
50e488b1 DL |
51 | "Executable program for playing sun AU format sound files." |
52 | :group 'gnus-audio | |
23f87bed | 53 | :type '(choice file (const nil))) |
50e488b1 | 54 | |
23f87bed | 55 | (defcustom gnus-audio-wav-player (executable-find "play") |
50e488b1 DL |
56 | "Executable program for playing WAV files." |
57 | :group 'gnus-audio | |
23f87bed | 58 | :type '(choice file (const nil))) |
eec82323 | 59 | |
6748645f | 60 | ;;; The following isn't implemented yet. Wait for Millennium Gnus. |
16409b0b GM |
61 | ;;(defvar gnus-audio-effects-enabled t |
62 | ;; "When t, Gnus will use sound effects.") | |
63 | ;;(defvar gnus-audio-enable-hooks nil | |
64 | ;; "Functions run when enabling sound effects.") | |
65 | ;;(defvar gnus-audio-disable-hooks nil | |
66 | ;; "Functions run when disabling sound effects.") | |
67 | ;;(defvar gnus-audio-theme-song nil | |
68 | ;; "Theme song for Gnus.") | |
69 | ;;(defvar gnus-audio-enter-group nil | |
70 | ;; "Sound effect played when selecting a group.") | |
71 | ;;(defvar gnus-audio-exit-group nil | |
72 | ;; "Sound effect played when exiting a group.") | |
73 | ;;(defvar gnus-audio-score-group nil | |
74 | ;; "Sound effect played when scoring a group.") | |
75 | ;;(defvar gnus-audio-busy-sound nil | |
76 | ;; "Sound effect played when going into a ... sequence.") | |
eec82323 LMI |
77 | |
78 | ||
79 | ;;;###autoload | |
16409b0b GM |
80 | ;;(defun gnus-audio-enable-sound () |
81 | ;; "Enable Sound Effects for Gnus." | |
82 | ;; (interactive) | |
83 | ;; (setq gnus-audio-effects-enabled t) | |
84 | ;; (gnus-run-hooks gnus-audio-enable-hooks)) | |
eec82323 LMI |
85 | |
86 | ;;;###autoload | |
87 | ;(defun gnus-audio-disable-sound () | |
16409b0b GM |
88 | ;; "Disable Sound Effects for Gnus." |
89 | ;; (interactive) | |
90 | ;; (setq gnus-audio-effects-enabled nil) | |
91 | ;; (gnus-run-hooks gnus-audio-disable-hooks)) | |
eec82323 LMI |
92 | |
93 | ;;;###autoload | |
94 | (defun gnus-audio-play (file) | |
50e488b1 | 95 | "Play a sound FILE through the speaker." |
23f87bed | 96 | (interactive "fSound file name: ") |
eec82323 LMI |
97 | (let ((sound-file (if (file-exists-p file) |
98 | file | |
50e488b1 | 99 | (expand-file-name file gnus-audio-directory)))) |
eec82323 | 100 | (when (file-exists-p sound-file) |
50e488b1 DL |
101 | (cond ((and gnus-audio-inline-sound |
102 | (condition-case nil | |
103 | ;; Even if we have audio, we may fail with the | |
104 | ;; wrong sort of sound file. | |
105 | (progn (play-sound-file sound-file) | |
106 | t) | |
107 | (error nil)))) | |
108 | ;; If we don't have built-in sound, or playing it failed, | |
109 | ;; try with external program. | |
110 | ((equal "wav" (file-name-extension sound-file)) | |
111 | (call-process gnus-audio-wav-player | |
112 | sound-file | |
113 | 0 | |
114 | nil | |
115 | sound-file)) | |
116 | ((equal "au" (file-name-extension sound-file)) | |
117 | (call-process gnus-audio-au-player | |
118 | sound-file | |
119 | 0 | |
120 | nil | |
121 | sound-file)))))) | |
eec82323 LMI |
122 | |
123 | ||
124 | ;;; The following isn't implemented yet, wait for Red Gnus | |
16409b0b GM |
125 | ;;(defun gnus-audio-startrek-sounds () |
126 | ;; "Enable sounds from Star Trek the original series." | |
127 | ;; (interactive) | |
128 | ;; (setq gnus-audio-busy-sound "working.au") | |
129 | ;; (setq gnus-audio-enter-group "bulkhead_door.au") | |
130 | ;; (setq gnus-audio-exit-group "bulkhead_door.au") | |
131 | ;; (setq gnus-audio-score-group "ST_laser.au") | |
132 | ;; (setq gnus-audio-theme-song "startrek.au") | |
133 | ;; (add-hook 'gnus-select-group-hook 'gnus-audio-startrek-select-group) | |
134 | ;; (add-hook 'gnus-exit-group-hook 'gnus-audio-startrek-exit-group)) | |
eec82323 LMI |
135 | ;;;*** |
136 | ||
137 | (defvar gnus-startup-jingle "Tuxedomoon.Jingle4.au" | |
138 | "Name of the Gnus startup jingle file.") | |
139 | ||
140 | (defun gnus-play-jingle () | |
141 | "Play the Gnus startup jingle, unless that's inhibited." | |
142 | (interactive) | |
143 | (gnus-audio-play gnus-startup-jingle)) | |
144 | ||
145 | (provide 'gnus-audio) | |
146 | ||
147 | (run-hooks 'gnus-audio-load-hook) | |
148 | ||
cbee283d | 149 | ;; arch-tag: 6f129e78-3416-4fc9-973f-6cf5ac8d654b |
eec82323 | 150 | ;;; gnus-audio.el ends here |