; DEFAULT TWM MENUS (hacked up from def-menus.gwm)
; ================================================

; This file is derived from the def-menus.gwm distributed with gwm 1.4.1.30
; The original file was written by Colas Nahaboo, BULL Research, France.
;
; Modifications  [Dec 1989] for twm emulation by Arup Mukherjee 
; (arup@grasp.cis.upenn.edu)
;
; Within the restrictions of the GWM copyright, you may do whatever you
; want with this code. It would be nice, however, if my name were to remain 
; in it somewhere.

; create menus with lists of xterms and xloads
; ============================================

(defname-in-screen-to ()  xterm-pop xload-pop emacs-pop this-display-arg)

(df menu-app executable-args
    (eval (+(list ! (# 0 executable-args))
	     (list "-display" this-display-arg)
	     (sublist 1 (length executable-args) executable-args)))
)

(for screen (list-of-screens)
     (: this-display-arg            ; useful for -display option to clients
	(+ (match "\\(.*:.\\)" display-name 1) "." (itoa screen)))

     (if (= this-display-arg (+ "unix:0." (itoa screen)))
	 (: this-display-arg (+ hostname ":0." (itoa screen))))

     (if (not (boundp 'root-pop)) 
	 (: root-pop
	    (twm-menu-make
	     (twm-pop-label-make "Root Options")
	     (twm-item-make "Logins..." (twm-pop-menu xterm-pop))
	     (twm-item-make "Xloads..." (twm-pop-menu xload-pop))
	     (twm-item-make "EMACSen.." (twm-pop-menu emacs-pop))
	     (twm-item-make "refresh" (refresh))
	     (twm-item-make "restart" (restart))
	     (twm-item-make "reload" (load "twm"))
	     (twm-item-make "Xloads..." (twm-pop-menu xload-pop))
	     (twm-item-make "Exec cut" 
			    (execute-string (+ "(? " cut-buffer ")")))
	     (twm-item-make "End" (end))
	     )))
    
     (if (not (boundp 'window-pop)) 
	 (: window-pop 
	    (twm-menu-make
	     (twm-pop-label-make "Window Options")
	     (twm-item-make "iconify" (iconify-window))
	     (twm-item-make "resize" (resize-window))
	     (twm-item-make "move" (move-window))
	     (twm-item-make "raise" (raise-window))
	     (twm-item-make "lower" (lower-window))
	     (twm-item-make "refresh" (refresh window))
	     (twm-item-make "re-load&dec" 
			(progn (with (window window) (load "twm"))
			       (re-decorate-window)))
	     (twm-item-make "redecorate" (re-decorate-window))
	     (twm-item-make "Exec cut" 
			    (execute-string (+ "(? " cut-buffer ")")))
	     (twm-item-make "client info" 
			(? "Window: " (window-client-class) "."
			   (window-client-name) "."
			   (window-name) "@"
			   (window-machine-name) "\n"))
	     (twm-item-make "Geometry" 
			(progn (: WIN window)(? "Geometry:" window-width "x"
						window-height "+"
						window-x "+"
						window-y "\n")))
	     (twm-item-make "kill" (kill-window))
	     )))

     (if (not (boundp 'applications-pop)) 
	 (: applications-pop
	    (twm-menu-make
	     (twm-pop-label-make "Applications")
	     (twm-item-make "xterm"     (menu-app "/usr/bin/X11/xterm"))
	     (twm-item-make "xclock"    (menu-app "/usr/bin/X11/xclock"))
	     (twm-item-make "xload"     (menu-app "/usr/bin/X11/xload"))
	     (twm-item-make "xgone"     (menu-app "xgone"))
	     (twm-item-make "xbiff"     (! "/usr/ucb/rsh" "grip" "-n"
					   "axbiff" 
					   "-display" this-display-arg
					   "<" "/dev/null" 
					   ">&" "/dev/null" "&"))
	     (twm-item-make "gnu-emacs" (menu-app "gnu-emacs"))
	     (twm-item-make "vi window" 
			    (menu-app "/usr/bin/X11/xterm" "-e" "vi"))
	     (twm-item-make "toggle icon mgr" 
			    (if (boundp 'icon-mgr-toggle)
				(icon-mgr-toggle)
			      (print "Icon Mgr not Loaded!\n")))
	     (twm-item-make "remote logins....." (twm-pop-menu xterm-pop)))))

     (if (not (boundp 'icon-pop)) (: icon-pop window-pop))
     

     
     (setq xterm-items '(twm-menu-make (twm-pop-label-make "Logins...")
				   (twm-item-make "."
				      (menu-app "/usr/bin/X11/xterm"))))

     (for xterm-item xterm-list
	  (: xterm-items 
	     (+ xterm-items 
		(list (list 'twm-item-make xterm-item 
			     (list '!
				   "/usr/ucb/rsh"
				   (+ "" xterm-item)
				      "-n"
				      "("
				      "setenv" "DISPLAY" this-display-arg ";"
				      "/usr/bin/X11/xterm" "-ls"
				      "-n"
				      "`hostname | sed -e \"s,\\..*,,\"`"
				      ")"
				      "<"
				      "/dev/null"
				      ">&"
				      "/dev/null"
				      "&" ))))))


     (: xterm-pop (eval xterm-items))
     
     (setq xload-items '(twm-menu-make (twm-pop-label-make "Xloads")
				   (twm-item-make "." 
				       (menu-app "/usr/bin/X11/xload"))))
     (for xload-item xload-list
	  (: xload-items 
	     (+ xload-items 
		(list (list 'twm-item-make xload-item 
			    (list '!
				  "/usr/ucb/rsh"
				  (+ "" xload-item)
				  "-n"
				  "/usr/bin/X11/xload"
				  "-display" this-display-arg 
				  "<" "/dev/null" ">&" "/dev/null" "&"))))))
     (: xload-pop (eval xload-items))

     (setq emacs-items '(twm-menu-make (twm-pop-label-make "EMACSen")
				       (twm-item-make "."
					 (menu-app "/usr/bin/X11/gnu-emacs"))))

     (for emacs-item emacs-list 
	  (: emacs-items
	     (+ emacs-items 
		(list (list 'twm-item-make emacs-item
			    (list '!
				  "/usr/ucb/rsh"
				  (+ "" emacs-item)
				  "-n"
				  "(" "setenv" "DISPLAY" this-display-arg
				    ";" "emacs" ")" 
				    "<" "/dev/null" ">&" "/dev/null" "&"))))))

     (: emacs-pop (eval emacs-items))) 


(de pop-root-menu ()
    (set-colormap-focus ())	; bugged on dpx???
    (twm-pop-menu root-pop 2))


(de using-next-window ()
    (with (this-wob wob)
	  (with (wob root-window)
		(print "testing....\n")
		(tag press
;		       (send-user-event 'choosing-window)
		     (grab-server root-window)
		     (while t
		       (: mouse-pos (current-mouse-position))
		       (if (and (not (= (# 2 mouse-pos) 0))
				(not (= this-wob 
					(wob-at-coords (# 0 mouse-pos)
						       (# 1 mouse-pos)))))
			   (progn (print "got an event\n")
				  (while t
				    (: mouse-pos 
				       (current-mouse-position))
				    (if (= (# 2 mouse-pos) 0)
					(exit press)))))))
		(ungrab-server root-window))))

    
