diff lisp/hyperbole/kotl/kmenu.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/hyperbole/kotl/kmenu.el	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,283 @@
+;;!emacs
+;;
+;; FILE:         kmenu.el
+;; SUMMARY:      Pulldown and popup menus for kotl-mode, the Hyperbole Outliner.
+;; USAGE:        GNU Emacs Lisp Library
+;; KEYWORDS:     mouse, outlines, wp
+;;
+;; AUTHOR:       Bob Weiner
+;; ORG:          Motorola, Inc., PPG
+;;
+;; ORIG-DATE:    28-Mar-94 at 11:22:09
+;; LAST-MOD:     26-Oct-95 at 18:47:41 by Bob Weiner
+;;
+;; Copyright (C) 1994-1995 Free Software Foundation, Inc.
+;;
+;; This file is part of Hyperbole.
+;;
+;; DESCRIPTION:  
+;; DESCRIP-END.
+
+;;; ************************************************************************
+;;; Public variables
+;;; ************************************************************************
+
+;;; This definition is used by InfoDock only.
+(defconst id-menubar-kotl
+  '(
+    ("Koutline"
+     ["All-Cells-Attributes" (kotl-modecell-help nil -1)  t]
+     ["Help"                describe-mode                  t]
+     ["Manual"              (id-info "(hyperbole.info)Outliner") t]
+     "----"
+     ["Find (Open)"         find-file                      t]
+     ["Find-Read-Only"      find-file-read-only            t]
+     ["Save"                save-buffer                    t]
+     ["Toggle-Read-Only"    toggle-read-only               t]
+     ["Write (Save as)"     kfile:write                    t]
+     "----"
+     ["Quit"                (id-tool-quit '(kill-buffer nil))  t]
+     )
+    ("Edit"
+     ["Set-Cell-Attribute"  kotl-mode:set-cell-attribute   t]
+     "----"
+     ["Add-Child"           kotl-mode:add-child            t]
+     ["Add-Cell"            kotl-mode:add-cell             t]
+     ["Add-Parent"          kotl-mode:add-parent           t]
+     ["Append-Cell"         kotl-mode:append-cell          t]
+     ["Split-Cell"          kotl-mode:split-cell           t]
+     "----"
+     ["Kill-to-Cell-End"    kotl-mode:kill-contents        t]
+     ["Kill-Tree"           kotl-mode:kill-tree            t]
+     ["Yank"                kotl-mode:yank                 t]
+     "----"
+     ["Copy-After-Cell"     kotl-mode:copy-after           t]
+     ["Copy-Before-Cell"    kotl-mode:copy-before          t]
+     ["Move-After-Cell"     kotl-mode:move-after           t]
+     ["Move-Before-Cell"    kotl-mode:move-before          t]
+     "----"
+     ["Fill"                kotl-mode:fill-cell            t]
+     ["Fill-Paragraph"      kotl-mode:fill-paragraph       t]
+     ["Set-Fill-Prefix"     kotl-mode:set-fill-prefix      t]
+     )
+    ("Jump-to"
+     ["Cell"                kotl-mode:goto-cell            t]
+     "----"
+     ["Cell-Beginning"      kotl-mode:beginning-of-cell    t]
+     ["Cell-End"            kotl-mode:end-of-cell          t]
+     "----"
+     ["Child"               kotl-mode:down-level           t]
+     ["Parent"              kotl-mode:up-level             t]
+     "----"
+     ["Next-Cell"           kotl-mode:next-cell            t]
+     ["Prev-Cell"           kotl-mode:previous-cell        t]
+     "----"
+     ["Next-Same-Level"     kotl-mode:forward-cell         t]
+     ["Prev-Same-Level"     kotl-mode:backward-cell        t]
+     "----"
+     ["First-Sibling"       kotl-mode:first-sibling        t]
+     ["Last-Sibling"        kotl-mode:last-sibling         t]
+     "----"
+     ["Beginning-of-Tree"   kotl-mode:beginning-of-tree    t]
+     ["End-of-Tree"         kotl-mode:end-of-tree          t]
+     "----"
+     ["First-Cell"          kotl-mode:beginning-of-buffer  t]
+     ["Last-Cell"           kotl-mode:end-of-buffer        t]
+     )
+    ("Label-Type"
+     ["Alphanumeric (Default)"  (kview:set-label-type kview 'alpha)  t]
+     ["Legal"                   (kview:set-label-type kview 'legal)  t]
+     ["None"                    (kview:set-label-type kview 'no)     t]
+     ["Partial-Alpha"           (kview:set-label-type kview 'partial-alpha) t]
+     ["Permanent-Idstamp"       (kview:set-label-type kview 'id)     t]
+     ["Stars"                   (kview:set-label-type kview 'star) t]
+     )
+    ("Link"
+     ["Add-at-Point"        klink:create                   t]
+     )
+    ("Tree"
+     ["Copy-to-Buffer"      kotl-mode:copy-to-buffer       t]
+     ["Demote"              kotl-mode:demote-tree          t]
+     ["Kill"                kotl-mode:kill-tree            t]
+     ["Mail"                kotl-mode:mail-tree            t]
+     ["Promote"             kotl-mode:promote-tree         t]
+     ["Show-Attributes"     (kotl-modecell-help nil 2)   t]
+     "----"
+     ["Copy-After-Cell"     kotl-mode:copy-after           t]
+     ["Copy-Before-Cell"    kotl-mode:copy-before          t]
+     ["Move-After-Cell"     kotl-mode:move-after           t]
+     ["Move-Before-Cell"    kotl-mode:move-before          t]
+     )
+    ("View"
+     ["Set-View-Spec"       kvspec:activate                t]
+     ["Toggle-Blank-Lines"  kvspec:toggle-blank-lines      t]
+     "----"
+     ["Set-Cell-Attribute"   kotl-mode:set-cell-attribute  t]
+     ["Show-Cell-Attributes" (kotl-modecell-help)        t]
+     ["All-Cells-Attributes" (kotl-modecell-help nil -1) t]
+     ["Show-Tree-Attributes" (kotl-modecell-help nil 2)  t]
+     "----"
+     ["Hide (Collapse)"     kotl-mode:hide-tree            t]
+     ["Hide-Levels"         kotl-mode:hide-sublevels       t]
+     ["Hide-Subtree"        kotl-mode:hide-subtree         t]
+     ["Overview"            kotl-mode:overview             t]
+     "----"
+     ["Show (Expand)"       kotl-mode:show-tree            t]
+     ["Show-All"            kotl-mode:show-all             t]
+     ["Show-Subtree"        kotl-mode:show-subtree         t]
+     ["Show-Top-Level-Only" kotl-mode:top-cells            t]
+     )
+    ))
+
+;;; This definition is used by InfoDock and XEmacs.
+(defconst id-popup-kotl-menu
+  '("Koutline"
+    ["All-Cells-Attributes" (kotl-modecell-help nil -1)  t]
+    ["Help"                describe-mode                  t]
+    ["Manual"              (id-info "(hyperbole.info)Outliner") t]
+    "----"
+    ("Edit"
+     ["Set-Cell-Attribute"  kotl-mode:set-cell-attribute   t]
+     "----"
+     ["Add-Child"           kotl-mode:add-child            t]
+     ["Add-Cell"            kotl-mode:add-cell             t]
+     ["Add-Parent"          kotl-mode:add-parent           t]
+     ["Append-Cell"         kotl-mode:append-cell          t]
+     ["Split-Cell"          kotl-mode:split-cell           t]
+     "----"
+     ["Kill-to-Cell-End"    kotl-mode:kill-contents        t]
+     ["Kill-Tree"           kotl-mode:kill-tree            t]
+     ["Yank"                kotl-mode:yank                 t]
+     "----"
+     ["Copy-After-Cell"     kotl-mode:copy-after           t]
+     ["Copy-Before-Cell"    kotl-mode:copy-before          t]
+     ["Move-After-Cell"     kotl-mode:move-after           t]
+     ["Move-Before-Cell"    kotl-mode:move-before          t]
+     "----"
+     ["Fill"                kotl-mode:fill-cell            t]
+     ["Fill-Paragraph"      kotl-mode:fill-paragraph       t]
+     ["Set-Fill-Prefix"     kotl-mode:set-fill-prefix      t]
+     )
+    ("Jump-to"
+     ["Cell"                kotl-mode:goto-cell            t]
+     "----"
+     ["Cell-Beginning"      kotl-mode:beginning-of-cell    t]
+     ["Cell-End"            kotl-mode:end-of-cell          t]
+     "----"
+     ["Child"               kotl-mode:down-level           t]
+     ["Parent"              kotl-mode:up-level             t]
+     "----"
+     ["Next-Cell"           kotl-mode:next-cell            t]
+     ["Prev-Cell"           kotl-mode:previous-cell        t]
+     "----"
+     ["Next-Same-Level"     kotl-mode:forward-cell         t]
+     ["Prev-Same-Level"     kotl-mode:backward-cell        t]
+     "----"
+     ["First-Sibling"       kotl-mode:first-sibling        t]
+     ["Last-Sibling"        kotl-mode:last-sibling         t]
+     "----"
+     ["Beginning-of-Tree"   kotl-mode:beginning-of-tree    t]
+     ["End-of-Tree"         kotl-mode:end-of-tree          t]
+     "----"
+     ["First-Cell"          kotl-mode:beginning-of-buffer  t]
+     ["Last-Cell"           kotl-mode:end-of-buffer        t]
+     )
+    ("Label-Type"
+     ["Alphanumeric (Default)"  (kview:set-label-type kview 'alpha)  t]
+     ["Legal"                   (kview:set-label-type kview 'legal)  t]
+     ["None"                    (kview:set-label-type kview 'no)     t]
+     ["Partial-Alpha"           (kview:set-label-type kview 'partial-alpha) t]
+     ["Permanent-Idstamp"       (kview:set-label-type kview 'id)     t]
+     ["Stars"                   (kview:set-label-type kview 'star) t]
+     )
+    ("Link"
+     ["Add-at-Point"        klink:create                   t]
+     )
+    ("Tree"
+     ["Copy-to-Buffer"      kotl-mode:copy-to-buffer       t]
+     ["Demote"              kotl-mode:demote-tree          t]
+     ["Kill"                kotl-mode:kill-tree            t]
+     ["Mail"                kotl-mode:mail-tree            t]
+     ["Promote"             kotl-mode:promote-tree         t]
+     ["Show-Attributes"     (kotl-modecell-help nil 2)   t]
+     "----"
+     ["Copy-After-Cell"     kotl-mode:copy-after           t]
+     ["Copy-Before-Cell"    kotl-mode:copy-before          t]
+     ["Move-After-Cell"     kotl-mode:move-after           t]
+     ["Move-Before-Cell"    kotl-mode:move-before          t]
+     )
+    ("View"
+     ["Set-View-Spec"       kvspec:activate                t]
+     ["Toggle-Blank-Lines"  kvspec:toggle-blank-lines      t]
+     "----"
+     ["Set-Cell-Attribute"   kotl-mode:set-cell-attribute  t]
+     ["Show-Cell-Attributes" (kotl-modecell-help)        t]
+     ["All-Cells-Attributes" (kotl-modecell-help nil -1) t]
+     ["Show-Tree-Attributes" (kotl-modecell-help nil 2)  t]
+     "----"
+     ["Hide (Collapse)"     kotl-mode:hide-tree            t]
+     ["Hide-Levels"         kotl-mode:hide-sublevels       t]
+     ["Hide-Subtree"        kotl-mode:hide-subtree         t]
+     ["Overview"            kotl-mode:overview             t]
+     "----"
+     ["Show (Expand)"       kotl-mode:show-tree            t]
+     ["Show-All"            kotl-mode:show-all             t]
+     ["Show-Subtree"        kotl-mode:show-subtree         t]
+     ["Show-Top-Level-Only" kotl-mode:top-cells            t]
+     )
+    "----"
+    ["Find (Open)"         find-file                      t]
+    ["Find-Read-Only"      find-file-read-only            t]
+    ["Save"                save-buffer                    t]
+    ["Toggle-Read-Only"    toggle-read-only               t]
+    ["Write (Save as)"     kfile:write                    t]
+    "----"
+    ["Quit"                (id-tool-quit '(kill-buffer nil))  t]
+    ))
+
+;;; ************************************************************************
+;;; Public functions
+;;; ************************************************************************
+
+;;; This definition is used only by XEmacs and Emacs19.
+(defun kotl-menubar-menu ()
+  "Add a Koutline menu to the menubar for each koutline buffer."
+  (cond ((fboundp 'popup-mode-menu)
+	 (setq mode-popup-menu id-popup-kotl-menu))
+	(hyperb:lemacs-p
+	 (define-key kotl-mode-map 'button3 'kotl-popup-menu))
+	(t ;; hyperb:emacs19-p
+	 (define-key kotl-mode-map [down-mouse-3] 'kotl-popup-menu)
+	 (define-key kotl-mode-map [mouse-3] nil)))
+  (if (and (boundp 'current-menubar)
+	   (or hyperb:emacs19-p current-menubar)
+	   (not (car (find-menu-item current-menubar '("Koutline")))))
+      (progn
+	(set-buffer-menubar (copy-sequence current-menubar))
+	(if (fboundp 'add-submenu)
+	    (add-submenu nil id-popup-kotl-menu)
+	  (add-menu nil (car id-popup-kotl-menu) (cdr id-popup-kotl-menu))))))
+
+;;; This definition is used only by XEmacs and Emacs19.
+(defun kotl-popup-menu (event)
+  "Popup the Koutline buffer menu."
+  (interactive "@e")
+  (mouse-set-point event)
+  (if (fboundp 'popup-mode-menu)
+      (popup-mode-menu)
+    (popup-menu id-popup-kotl-menu)))
+
+(cond ((null hyperb:window-system))
+      ((fboundp 'id-menubar-set)
+       ;; InfoDock under a window system
+       (require 'id-menubars)
+       (id-menubar-set 'kotl-mode 'id-menubar-kotl))
+      (hyperb:lemacs-p
+       ;; XEmacs under a window system
+       (add-hook 'kotl-mode-hook 'kotl-menubar-menu))
+      (hyperb:emacs19-p
+       ;; Emacs 19 under a window system
+       (require 'lmenu)
+       (add-hook 'kotl-mode-hook 'kotl-menubar-menu)))
+
+(provide 'kmenu)