Fixed.
[riece] / lisp / riece-toolbar.el
index bd410a6..06d642f 100644 (file)
@@ -1,4 +1,4 @@
-;;; riece-toolbar.el --- show toolbar icons
+;;; riece-toolbar.el --- display toolbar icons
 ;; Copyright (C) 1998-2004 Daiki Ueno
 
 ;; Author: Daiki Ueno <ueno@unixuser.org>
 
 ;;; Commentary:
 
-;; To use, add the following line to your ~/.riece/init.el:
-;; (add-to-list 'riece-addons 'riece-toolbar)
+;; NOTE: This is an add-on module for Riece.
 
 ;;; Code:
 
 (require 'riece-menu)
 
+(defconst riece-toolbar-description
+  "Display toolbar icons.")
+
 (defvar riece-toolbar-items
   '(riece-command-quit
     riece-command-join
     riece-command-part
     riece-command-previous-channel
     riece-command-next-channel
-    riece-command-change-layout))
+    riece-command-change-layout
+    riece-submit-bug-report))
 
 (defun riece-toolbar-find-menu-item (command)
   (let ((pointer riece-menu-items)
     item))
 
 (if (featurep 'xemacs)
-    (progn
-      (defun riece-make-toolbar-from-menu (items menu-items map)
-       (let ((pointer items)
-             toolbar
-             file
-             menu-item)
-         (while pointer
-           (setq file (locate-file (symbol-name (car pointer))
-                                   load-path
-                                   '(".xpm" ".pbm" ".xbm"))
-                 menu-item (riece-toolbar-find-menu-item (car pointer)))
-           (if (and file (file-exists-p file))
-               (setq toolbar
-                     (toolbar-add-item
-                      toolbar
-                      (toolbar-new-button
-                       file
-                       (car pointer)
-                       (if menu-item
-                           (aref menu-item 0)
-                         (symbol-name (car pointer)))))))
-           (setq pointer (cdr pointer)))
-         toolbar))
-      (defun riece-set-toolbar (toolbar)
-       (set-specifier default-toolbar toolbar (current-buffer))))
+    (if (featurep 'toolbar)
+       (progn
+         (defun riece-make-toolbar-from-menu (items menu-items map)
+           (let ((pointer items)
+                 toolbar
+                 file
+                 menu-item)
+             (while pointer
+               (setq file (locate-file (symbol-name (car pointer))
+                                       (cons riece-data-directory load-path)
+                                       '(".xpm" ".pbm" ".xbm"))
+                     menu-item (riece-toolbar-find-menu-item (car pointer)))
+               (if (and file (file-exists-p file))
+                   (setq toolbar
+                         (toolbar-add-item
+                          toolbar
+                          (toolbar-new-button
+                           file
+                           (car pointer)
+                           (if menu-item
+                               (aref menu-item 0)
+                             (symbol-name (car pointer)))))))
+               (setq pointer (cdr pointer)))
+             toolbar))
+         (defvar riece-toolbar-original-toolbar nil)
+         (defun riece-set-toolbar (toolbar)
+           (make-local-variable 'riece-toolbar-original-toolbar)
+           (setq riece-toolbar-original-toolbar
+                 (specifier-specs default-toolbar (current-buffer)))
+           (set-specifier default-toolbar toolbar (current-buffer)))
+         (defun riece-unset-toolbar ()
+           (if riece-toolbar-original-toolbar
+               (set-specifier default-toolbar riece-toolbar-original-toolbar
+                              (current-buffer))
+             (remove-specifier default-toolbar (current-buffer)))
+           (kill-local-variable 'riece-toolbar-original-toolbar)))
+      (defalias 'riece-make-toolbar-from-menu 'ignore)
+      (defalias 'riece-set-toolbar 'ignore)
+      (defalias 'riece-unset-toolbar 'ignore))
   (defun riece-make-toolbar-from-menu (items menu-items map)
     (let ((pointer items)
          (tool-bar-map (make-sparse-keymap)))
       tool-bar-map))
   (defun riece-set-toolbar (toolbar)
     (make-local-variable 'tool-bar-map)
-    (setq tool-bar-map toolbar)))
+    (setq tool-bar-map toolbar))
+  (defun riece-unset-toolbar ()
+    (kill-local-variable 'tool-bar-map)))
 
 (defvar riece-command-mode-map)
-(defun riece-toolbar-insinuate-in-command-buffer ()
+(defun riece-toolbar-command-mode-hook ()
   (riece-set-toolbar
    (riece-make-toolbar-from-menu
     riece-toolbar-items
   '(riece-menu))
 
 (defun riece-toolbar-insinuate ()
+  (if riece-command-buffer
+      (with-current-buffer riece-command-buffer
+       (riece-toolbar-command-mode-hook)))
   (add-hook 'riece-command-mode-hook
-           'riece-toolbar-insinuate-in-command-buffer
-           t))
+           'riece-toolbar-command-mode-hook))
+
+(defun riece-toolbar-uninstall ()
+  (if riece-command-buffer
+      (with-current-buffer riece-command-buffer
+       (riece-unset-toolbar)))
+  (remove-hook 'riece-command-mode-hook
+              'riece-toolbar-command-mode-hook))
 
 (provide 'riece-toolbar)