1 ;; jabber-menu.el - menu definitions
3 ;; Copyright (C) 2002, 2003, 2004 - tom berger - object@intelectronica.net
4 ;; Copyright (C) 2003, 2004 - Magnus Henoch - mange@freemail.hu
6 ;; This file is a part of jabber.el.
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.
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.
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
22 (defvar jabber-menu
(make-sparse-keymap "jabber-menu"))
24 (defun jabber-menu (&optional remove
)
25 "Put \"Jabber\" menu on menubar.
26 With prefix argument, remove it."
28 (define-key global-map
29 [menu-bar jabber-menu
]
30 (and (not remove
) (cons "Jabber" jabber-menu
))))
32 (define-key jabber-menu
34 '("Connect" . jabber-connect
))
36 (define-key jabber-menu
37 [jabber-menu-disconnect
]
38 '("Disconnect" . jabber-disconnect
))
40 (define-key jabber-menu
42 '("Switch to roster" . jabber-switch-to-roster-buffer
))
44 (define-key jabber-menu
45 [jabber-menu-customize
]
46 '("Customize" . jabber-customize
))
48 (define-key jabber-menu
50 '("Help" . jabber-info
))
52 (define-key jabber-menu
54 (cons "Set Status" (make-sparse-keymap "set-status")))
56 (defmacro jabber-define-status-key
(title show
)
57 (list 'let
(list ( list
'func
(list 'make-symbol
(list 'concat
"jabber-send-presence-" show
)))
58 (list 'menu-item
(list 'make-symbol
(list 'concat
"jabber-menu-status-" show
))))
59 (list 'fset
'func
`(lambda () (interactive)
60 (jabber-send-presence ,show
61 (jabber-read-with-input-method "status message: " *jabber-current-status
* '*jabber-status-history
*)
62 (format "%d" *jabber-current-priority
*))))
63 (list 'define-key
'jabber-menu
64 (list 'vector
''jabber-menu-status
'menu-item
)
65 (list 'cons title
'func
))))
67 ;;;(dolist (presence jabber-presence-strings)
68 ;;; (jabber-define-status-key (cdr presence) (car presence)))
69 ;;(jabber-define-status-key "Online" "")
71 (jabber-define-status-key "Chatty" "chat")
72 ;;(jabber-define-status-key "Away" "away")
73 ;;(jabber-define-status-key "Extended Away" "xa")
74 (jabber-define-status-key "Do not Disturb" "dnd")
75 (define-key jabber-menu
76 [jabber-menu-status jabber-menu-status-xa
]
77 '("Extended Away" . jabber-send-xa-presence
))
78 (define-key jabber-menu
79 [jabber-menu-status jabber-menu-status-away
]
80 '("Away" . jabber-send-away-presence
))
81 (define-key jabber-menu
82 [jabber-menu-status jabber-menu-status-online
]
83 '("Online" . jabber-send-default-presence
))
85 (defvar jabber-jid-chat-menu nil
86 "Menu items for chat menu")
88 (defvar jabber-jid-info-menu nil
89 "Menu item for info menu")
91 (defvar jabber-jid-roster-menu nil
92 "Menu items for roster menu")
94 (defvar jabber-jid-muc-menu nil
95 "Menu items for MUC menu")
97 (defvar jabber-jid-service-menu nil
98 "Menu items for service menu")
100 (defun jabber-popup-menu (which-menu)
101 "Popup specified menu"
102 (let* ((mouse-event (and (listp last-input-event
) last-input-event
))
103 (choice (widget-choose "Actions" which-menu mouse-event
)))
105 (mouse-set-point mouse-event
))
107 (call-interactively choice
))))
109 (defun jabber-popup-chat-menu ()
112 (jabber-popup-menu jabber-jid-chat-menu
))
114 (defun jabber-popup-info-menu ()
117 (jabber-popup-menu jabber-jid-info-menu
))
119 (defun jabber-popup-roster-menu ()
122 (jabber-popup-menu jabber-jid-roster-menu
))
124 (defun jabber-popup-muc-menu ()
127 (jabber-popup-menu jabber-jid-muc-menu
))
129 (defun jabber-popup-service-menu ()
132 (jabber-popup-menu jabber-jid-service-menu
))
134 (defun jabber-popup-combined-menu ()
135 "Popup combined menu"
137 (jabber-popup-menu (append jabber-jid-chat-menu jabber-jid-info-menu jabber-jid-roster-menu jabber-jid-muc-menu
)))
139 (provide 'jabber-menu
)
141 ;;; arch-tag: 5147f52f-de47-4348-86ff-b799d7a75e3f