Mercurial > hg > xemacs-beta
diff lisp/oobr/br-menu.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 4103f0995bd7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/oobr/br-menu.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,296 @@ +;;!emacs +;; +;; FILE: br-menu.el +;; SUMMARY: Pulldown and popup menus for the OO-Browser. +;; USAGE: GNU Emacs Lisp Library +;; KEYWORDS: mouse, oop, tools +;; +;; AUTHOR: Bob Weiner +;; ORG: Motorola Inc. +;; +;; ORIG-DATE: 27-Oct-93 at 21:13:36 +;; LAST-MOD: 22-Oct-95 at 00:41:44 by Bob Weiner +;; +;; Copyright (C) 1994, 1995 Free Software Foundation, Inc. +;; See the file BR-COPY for license information. +;; +;; This file is part of the OO-Browser. +;; +;; DESCRIPTION: +;; DESCRIP-END. + +;;; ************************************************************************ +;;; Public variables +;;; ************************************************************************ + +;;; This definition is used by InfoDock only. +(defconst id-menubar-br + '( + ("OO-Browser" + ["Copyright" br-copyright t] + ["Help-Commands" br-help t] + ["Help-Mode" describe-mode t] + ["Help-Mouse" br-help-ms t] + ["Manual" (id-info "(oo-browser.info)Top") t] + ["Version" br-version t] + "----" + ["Compose-Mail-to-List" + (progn (br-quit) + (mail nil "oo-browser@hub.ucsb.edu" + "Replace this line with a descriptive sentence.") + (goto-char (point-min)) + (search-forward "Subject: " nil t)) t] + ["Mail-List-Request" + (progn (br-quit) + (mail nil "oo-browser-request@hub.ucsb.edu") + (insert "Use a subject line like one of the following:\n" + " Subject: Subscribe <joe@any.com> (Joe Williams).\n" + " Subject: Unsubscribe <joe@any.com>.\n") + (goto-char (point-min)) + (search-forward "Subject: " nil t)) t] + "----" + ["Reinitialize" br-refresh t] + ["Exit-Temporarily" (id-tool-quit '(br-quit)) t] + ["Quit" (id-tool-quit '(br-quit t)) t] + ) + ("Class" + ["Edit-Current" br-edit-entry t] + ["Edit-Named" br-find t] + ["View-Current" br-view-entry t] + "----" + ["Match-from-Listing" br-match t] + ["Where-is-Any" (br-where t) t] + ["Where-is-Current" br-where t] + "----" + ["Graphical-Descendants" br-tree t] + "----" + ["Ancestors" (br-ancestors -1) t] + ["Children" br-children t] + ["Descendants" br-descendants t] + ["Features" br-features t] + ["Info" br-class-info t] + ["Level" br-at t] + ["Parents" br-parents t] + ["Class-Statistics" br-class-stats t] + ) + ("Environment" + ["Create" (id-tool-invoke id-tool-oo-browser) t] + ["Load" (id-tool-invoke id-tool-oo-browser) t] + ["Rebuild" br-env-rebuild t] + ["Rebuild-Lib-Part" br-lib-rebuild t] + ["Rebuild-Sys-Part" br-sys-rebuild t] + ["Save" br-env-save t] + ["Statistics" br-env-stats t] + "----" + ["Add-File" br-add-class-file t] + ["Delete-Class" br-delete t] + ) + ("Feature" + ["Edit-Current" br-edit-entry t] + ["Edit-Named" br-find t] + ["View-Current" br-view-entry t] + ["View-Friend-Def" br-view-friend t] + "----" + ["Implementors" br-implementors t] + ["Signature" br-ftr-signature t] + ) + ("List-Window" + ["Graphical-View" br-tree-graph t] + ["Graphical-Descendants" (br-tree t) t] + ["Kill-Graphical-Views" br-tree-kill t] + "----" + ["Write (Save as)" br-write-buffer t] + "----" + ["Count-Entries" br-count t] + ["Order-Entries" (progn (br-order 1) + (br-unique)) t] + "----" + ["Ancestors" (br-ancestors -2) t] + ["Children" (br-children t) t] + ["Descendants" (br-descendants t) t] + ["Features" (br-features 1) t] + ["Files" br-buffer-menu t] + ["Level" (br-at t) t] + ["Parents" (br-parents t) t] + "----" + ["Show-All-Classes" (br-top-classes t) t] + ["Show-All-Lib-Classes" (br-lib-top-classes t) t] + ["Show-All-Sys-Classes" (br-sys-top-classes t) t] + ["Show-Top-Classes" br-top-classes t] + ["Show-Top-Lib-Classes" br-lib-top-classes t] + ["Show-Top-Sys-Classes" br-sys-top-classes t] + "----" + ["Exit-This-Level" br-exit-level t] + ["Narrow-by-10" br-resize-narrow t] + ["Widen-by-10" br-resize-widen t] + ) + ("Options" + ["Keep-Viewed-Classes" br-toggle-keep-viewed + :style toggle :selected br-keep-viewed-classes] + ["Graphical-Show-Features" br-tree-features-toggle + :style toggle :selected br-show-features] + ) + ("View-Window" + ["Full-Frame" br-view-full-frame t] + ["Kill-Buffer" br-kill t] + ["Move-To-or-From" br-to-from-viewer t] + ) + )) + +;;; This definition is used by InfoDock and XEmacs. +(defconst id-popup-br-menu + '("OO-Browser" + ["Copyright" br-copyright t] + ["Help-Commands" br-help t] + ["Help-Mode" describe-mode t] + ["Help-Mouse" br-help-ms t] + ["Manual" (id-info "(oo-browser.info)Top") t] + ["Version" br-version t] + "----" + ["Compose-Mail-to-List" + (progn (br-quit) + (mail nil "oo-browser@hub.ucsb.edu" + "Replace this line with a descriptive sentence.") + (goto-char (point-min)) + (search-forward "Subject: " nil t)) t] + ["Mail-List-Request" + (progn (br-quit) + (mail nil "oo-browser-request@hub.ucsb.edu") + (insert "Use a subject line like one of the following:\n" + " Subject: Subscribe <joe@any.com> (Joe Williams).\n" + " Subject: Unsubscribe <joe@any.com>.\n") + (goto-char (point-min)) + (search-forward "Subject: " nil t)) t] + "----" + ("Class" + ["Edit-Current" br-edit-entry t] + ["Edit-Named" br-find t] + ["View-Current" br-view-entry t] + "----" + ["Match-from-Listing" br-match t] + ["Where-is-Any" (br-where t) t] + ["Where-is-Current" br-where t] + "----" + ["Graphical-View" br-tree-graph t] + ["Graphical-Descendants" (br-tree t) t] + ["Kill-Graphical-Views" br-tree-kill t] + "----" + ["Ancestors" (br-ancestors -1) t] + ["Children" br-children t] + ["Descendants" br-descendants t] + ["Features" br-features t] + ["Info" br-class-info t] + ["Level" br-at t] + ["Parents" br-parents t] + ["Class-Statistics" br-class-stats t] + ) + ("Environment" + ["Create" (id-tool-invoke id-tool-oo-browser) t] + ["Load" (id-tool-invoke id-tool-oo-browser) t] + ["Rebuild" br-env-rebuild t] + ["Rebuild-Lib-Part" br-lib-rebuild t] + ["Rebuild-Sys-Part" br-sys-rebuild t] + ["Save" br-env-save t] + ["Statistics" br-env-stats t] + "----" + ["Add-File" br-add-class-file t] + ["Delete-Class" br-delete t] + ) + ("Feature" + ["Edit-Current" br-edit-entry t] + ["Edit-Named" br-find t] + ["View-Current" br-view-entry t] + ["View-Friend-Def" br-view-friend t] + "----" + ["Implementors" br-implementors t] + ["Signature" br-feature-signature t] + ) + ("List-Window" + ["Write (Save as)" br-write-buffer t] + "----" + ["Count-Entries" br-count t] + ["Order-Entries" (progn (br-order 1) + (br-unique)) t] + "----" + ["Ancestors" (br-ancestors -2) t] + ["Children" (br-children t) t] + ["Descendants" (br-descendants t) t] + ["Features" (br-features 1) t] + ["Files" br-buffer-menu t] + ["Level" (br-at t) t] + ["Parents" (br-parents t) t] + "----" + ["Show-All-Classes" (br-top-classes t) t] + ["Show-All-Lib-Classes" (br-lib-top-classes t) t] + ["Show-All-Sys-Classes" (br-sys-top-classes t) t] + ["Show-Top-Classes" br-top-classes t] + ["Show-Top-Lib-Classes" br-lib-top-classes t] + ["Show-Top-Sys-Classes" br-sys-top-classes t] + "----" + ["Exit-This-Level" br-exit-level t] + ["Narrow-by-10" br-resize-narrow t] + ["Widen-by-10" br-resize-widen t] + ) + ("Options" + ["Keep-Viewed-Classes" br-toggle-keep-viewed + :style toggle :selected br-keep-viewed-classes] + ["Graphical-Show-Features" br-tree-features-toggle + :style toggle :selected br-show-features] + ) + ("View-Window" + ["Full-Frame" br-view-full-frame t] + ["Kill-Buffer" br-kill t] + ["Move-To-or-From" br-to-from-viewer t] + ) + "----" + ["Reinitialize" br-refresh t] + ["Exit-Temporarily" (id-tool-quit '(br-quit)) t] + ["Quit" (id-tool-quit '(br-quit t)) t] + )) + +;;; ************************************************************************ +;;; Public functions +;;; ************************************************************************ + +;;; This definition is used only by XEmacs and Emacs19. +(defun br-menubar-menu () + "Add an OO-Browser menu to the menubar for each listing buffer." + (cond ((fboundp 'popup-mode-menu) + (setq mode-popup-menu id-popup-br-menu)) + (hyperb:lemacs-p + (define-key br-mode-map 'button3 'br-popup-menu)) + (t ;; hyperb:emacs19-p + (define-key br-mode-map [down-mouse-3] 'br-popup-menu) + (define-key br-mode-map [mouse-3] nil))) + (if (and (boundp 'current-menubar) + (or hyperb:emacs19-p current-menubar) + (not (car (find-menu-item current-menubar '("OO-Browser"))))) + (progn + (set-buffer-menubar (copy-sequence current-menubar)) + (if (fboundp 'add-submenu) + (add-submenu nil id-popup-br-menu) + (add-menu nil (car id-popup-br-menu) (cdr id-popup-br-menu)))))) + +;;; This definition is used only by XEmacs and Emacs19. +(defun br-popup-menu (event) + "Popup the OO-Browser listing buffer menu." + (interactive "@e") + (mouse-set-point event) + (if (fboundp 'popup-mode-menu) + (popup-mode-menu) + (popup-menu id-popup-br-menu))) + +(cond ((null hyperb:window-system)) + ((fboundp 'id-menubar-set) + ;; InfoDock under a window system + (require 'id-menubars) + (id-menubar-set 'br-mode 'id-menubar-br)) + (hyperb:lemacs-p + ;; XEmacs under a window system + (add-hook 'br-mode-hook 'br-menubar-menu)) + (hyperb:emacs19-p + ;; Emacs 19 under a window system + (require 'lmenu) + (add-hook 'br-mode-hook 'br-menubar-menu))) + +(provide 'br-menu)