["Allow To Speak" riece-user-button-set-speakers])
"Menu for user buttons.")
+(defvar riece-button-enabled nil)
+
+(defconst riece-button-description
+ "Display useful buttons in IRC buffers")
+
(defvar help-echo-owns-message)
(define-widget 'riece-identity-button 'push-button
"A channel button."
(defvar riece-identity-button-map)
(defun riece-button-add-identity-button (start end)
- (riece-scan-property-region
- 'riece-identity
- start end
- (lambda (start end)
- (let ((inhibit-read-only t)
- buffer-read-only)
- (widget-convert-button 'riece-identity-button start end
- (get-text-property start 'riece-identity))
- (add-text-properties start end
- (list 'local-map riece-identity-button-map
- 'keymap riece-identity-button-map))))))
+ (if riece-button-enabled
+ (riece-scan-property-region
+ 'riece-identity
+ start end
+ (lambda (start end)
+ (let ((inhibit-read-only t)
+ buffer-read-only)
+ (widget-convert-button 'riece-identity-button start end
+ (get-text-property start 'riece-identity))
+ (add-text-properties
+ start end
+ (list 'local-map riece-identity-button-map
+ 'keymap riece-identity-button-map)))))))
(defun riece-button-update-buffer ()
(riece-button-add-identity-button (point-min) (point-max)))
-(defun riece-button-requires ()
- '(riece-highlight))
-
(defvar riece-channel-list-mode-map)
(defvar riece-user-list-mode-map)
(defvar riece-dialogue-mode-map)
(riece-make-identity-button-map))))
(add-hook 'riece-after-insert-functions 'riece-button-add-identity-button))
+(defun riece-button-enable ()
+ (setq riece-button-enabled t)
+ (let ((pointer riece-buffer-list))
+ (while pointer
+ (with-current-buffer (car pointer)
+ (if (eq (derived-mode-class major-mode)
+ 'riece-dialogue-mode)
+ (riece-button-update-buffer)))
+ (setq pointer (cdr pointer)))
+ (if riece-current-channel
+ (riece-emit-signal 'user-list-changed riece-current-channel))
+ (riece-emit-signal 'channel-list-changed)))
+
+(defun riece-button-disable ()
+ (setq riece-button-enabled nil)
+ (save-excursion
+ (let ((pointer riece-buffer-list))
+ (while pointer
+ ;; On XEmacs, BUFFER arg of widget-map-buttons is ignored.
+ (set-buffer (car pointer))
+ (widget-map-buttons
+ (lambda (widget maparg)
+ (widget-leave-text widget)))
+ (setq pointer (cdr pointer))))))
+
(provide 'riece-button)
;;; riece-button.el ends here