]> crepu.dev Git - config.git/blame_incremental - djavu-asus/emacs/elpa/jabber-20230715.456/jabber-menu.el
Reorganización de directorios
[config.git] / djavu-asus / emacs / elpa / jabber-20230715.456 / jabber-menu.el
... / ...
CommitLineData
1;; jabber-menu.el - menu definitions -*- lexical-binding: t; -*-
2
3;; Copyright (C) 2003, 2004, 2008 - Magnus Henoch - mange@freemail.hu
4;; Copyright (C) 2002, 2003, 2004 - tom berger - object@intelectronica.net
5
6;; This file is a part of jabber.el.
7
8;; This program is free software; you can redistribute it and/or modify
9;; it under the terms of the GNU General Public License as published by
10;; the Free Software Foundation; either version 2 of the License, or
11;; (at your option) any later version.
12
13;; This program is distributed in the hope that it will be useful,
14;; but WITHOUT ANY WARRANTY; without even the implied warranty of
15;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16;; GNU General Public License for more details.
17
18;; You should have received a copy of the GNU General Public License
19;; along with this program; if not, write to the Free Software
20;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
22(require 'jabber-util)
23(eval-when-compile (require 'cl-lib))
24
25;;;###autoload
26(defvar jabber-menu
27 (let ((map (make-sparse-keymap "jabber-menu")))
28 (define-key-after map
29 [jabber-menu-connect]
30 '("Connect" . jabber-connect-all))
31
32 (define-key-after map
33 [jabber-menu-disconnect]
34 '(menu-item "Disconnect" jabber-disconnect
35 :enable (bound-and-true-p jabber-connections)))
36
37 (define-key-after map
38 [jabber-menu-status]
39 `(menu-item "Set Status" ,(make-sparse-keymap "set-status")
40 :enable (bound-and-true-p jabber-connections)))
41
42 (define-key map
43 [jabber-menu-status jabber-menu-status-chat]
44 '(menu-item
45 "Chatty"
46 (lambda ()
47 (interactive)
48 (jabber-send-presence "chat"
49 (jabber-read-with-input-method "status message: " *jabber-current-status* '*jabber-status-history*)
50 *jabber-current-priority*))
51 :button (:radio . (and (boundp '*jabber-current-show*)
52 (equal *jabber-current-show* "chat")))))
53 (define-key map
54 [jabber-menu-status jabber-menu-status-dnd]
55 '(menu-item
56 "Do not Disturb"
57 (lambda ()
58 (interactive)
59 (jabber-send-presence "dnd"
60 (jabber-read-with-input-method "status message: " *jabber-current-status* '*jabber-status-history*)
61 *jabber-current-priority*))
62 :button (:radio . (and (boundp '*jabber-current-show*)
63 (equal *jabber-current-show* "dnd")))))
64 (define-key map
65 [jabber-menu-status jabber-menu-status-xa]
66 '(menu-item "Extended Away" jabber-send-xa-presence
67 :button (:radio . (and (boundp '*jabber-current-show*)
68 (equal *jabber-current-show* "xa")))))
69 (define-key map
70 [jabber-menu-status jabber-menu-status-away]
71 '(menu-item "Away" jabber-send-away-presence
72 :button (:radio . (and (boundp '*jabber-current-show*)
73 (equal *jabber-current-show* "away")))))
74 (define-key map
75 [jabber-menu-status jabber-menu-status-online]
76 '(menu-item "Online" jabber-send-default-presence
77 :button (:radio . (and (boundp '*jabber-current-show*)
78 (equal *jabber-current-show* "")))))
79
80 (define-key-after map
81 [separator]
82 '(menu-item "--"))
83
84 (define-key-after map
85 [jabber-menu-chat-with]
86 '(menu-item "Chat with..." jabber-chat-with
87 :enable (bound-and-true-p jabber-connections)))
88
89 (define-key-after map
90 [jabber-menu-nextmsg]
91 '(menu-item "Next unread message" jabber-activity-switch-to
92 :enable (bound-and-true-p jabber-activity-jids)))
93
94 (define-key-after map
95 [jabber-menu-send-subscription-request]
96 '(menu-item "Send subscription request" jabber-send-subscription-request
97 :enable (bound-and-true-p jabber-connections)))
98
99 (define-key-after map
100 [jabber-menu-roster]
101 '("Switch to roster" . jabber-switch-to-roster-buffer))
102
103 (define-key-after map
104 [separator2]
105 '(menu-item "--"))
106
107 (define-key-after map
108 [jabber-menu-customize]
109 '("Customize" . jabber-customize))
110
111 (define-key-after map
112 [jabber-menu-info]
113 '("Help" . jabber-info))
114
115 map))
116
117;;;###autoload
118(defcustom jabber-display-menu 'maybe
119 "Decide whether the \"Jabber\" menu is displayed in the menu bar.
120If t, always display.
121If nil, never display.
122If maybe, display if jabber.el is installed under `package-user-dir', or
123if any of `jabber-account-list' or `jabber-connections' is non-nil."
124 :group 'jabber
125 :type '(choice (const :tag "Never" nil)
126 (const :tag "Always" t)
127 (const :tag "When installed by user, or when any accounts have been configured or connected" maybe)))
128
129 (defun jabber-menu (&optional remove)
130 "Put \"Jabber\" menu on menubar.
131 With prefix argument, remove it."
132 (interactive "P")
133 (setq jabber-display-menu (if remove nil t))
134 (force-mode-line-update))
135 (make-obsolete 'jabber-menu "set the variable `jabber-display-menu' instead." "27.2")
136
137;;;###autoload
138(define-key-after (lookup-key global-map [menu-bar])
139 [jabber-menu]
140 (list 'menu-item "Jabber" jabber-menu
141 :visible
142 '(or (eq jabber-display-menu t)
143 (and (eq jabber-display-menu 'maybe)
144 (or (bound-and-true-p jabber-account-list)
145 (bound-and-true-p jabber-connections))))))
146
147(defvar jabber-jid-chat-menu nil
148 "Menu items for chat menu.")
149
150(defvar jabber-jid-info-menu nil
151 "Menu item for info menu.")
152
153(defvar jabber-jid-roster-menu nil
154 "Menu items for roster menu.")
155
156(defvar jabber-jid-muc-menu nil
157 "Menu items for MUC menu.")
158
159(defvar jabber-jid-service-menu nil
160 "Menu items for service menu.")
161
162(defun jabber-popup-menu (which-menu)
163 "Popup specified menu."
164 (let* ((mouse-event (and (listp last-input-event) last-input-event))
165 (choice (widget-choose "Actions" which-menu mouse-event)))
166 (if mouse-event
167 (mouse-set-point mouse-event))
168 (if choice
169 (call-interactively choice))))
170
171(defun jabber-popup-chat-menu ()
172 "Popup chat menu."
173 (interactive)
174 (jabber-popup-menu jabber-jid-chat-menu))
175
176(defun jabber-popup-info-menu ()
177 "Popup info menu."
178 (interactive)
179 (jabber-popup-menu jabber-jid-info-menu))
180
181(defun jabber-popup-roster-menu ()
182 "Popup roster menu."
183 (interactive)
184 (jabber-popup-menu jabber-jid-roster-menu))
185
186(defun jabber-popup-muc-menu ()
187 "Popup MUC menu."
188 (interactive)
189 (jabber-popup-menu jabber-jid-muc-menu))
190
191(defun jabber-popup-service-menu ()
192 "Popup service menu."
193 (interactive)
194 (jabber-popup-menu jabber-jid-service-menu))
195
196(defun jabber-popup-combined-menu ()
197 "Popup combined menu."
198 (interactive)
199 (jabber-popup-menu (append jabber-jid-chat-menu jabber-jid-info-menu jabber-jid-roster-menu jabber-jid-muc-menu)))
200
201(provide 'jabber-menu)
202
203;;; arch-tag: 5147f52f-de47-4348-86ff-b799d7a75e3f