;;File: mwm-functions.gwm -- ;;Author: colas@mirsa.inria.fr (Colas NAHABOO) -- Bull Research FRANCE ;;Author: Frederic CHARTON ;;Author: Glen Whitney ;;Revision: 1.0 -- Sep 12 1989 ;;Revision: 1.1 -- Feb 5 1991 ;; ;;State: Exp ;;GWM Version: 1.7d ; Description of mwm functions : ; - f.function_name : the function ; - e.function_name : the validity field of the function ; ; e.function_name determines if an item is enable or not, ; the function evaluation looks like : (if e.fctn (f.fctn)) (df f.beep () (bell)) (: e.beep t) (df f.circle_down () (circulate-windows-down)) (: e.circle_down t) (df f.circle_up () (circulate-windows-up)) (: e.circle_up t) (df f.eval args (eval (# 0 args))) (: e.eval t) (df f.focus_key ()) (: e.focus_key t) (df f.identify () (pop-up-win "Version" (+ "Name: " window-name) (+ "Icon name: " window-icon-name) (+ "Resource name: " window-client-name) (+ "Resource class: " window-client-class) (+ "Client machine: " window-machine-name) (+ "Geometry: " (itoa (# 0 window-size)) "x" (itoa (# 1 window-size)) "+" (itoa window-x) "+" (itoa window-y)) (if window-is-shaped "Shaped" "Rectangular"))) (: e.identify t) (df f.kill () (progn (send-user-event 'depop) (kill-window) ) ) (: e.kill t) (df f.delete () (progn (send-user-event 'depop) (delete-window))) (: e.delete t) (df f.load (file) (load file)) (: e.load t) (df f.lower () (lower-window)) (: e.lower t) (df f.maximize () (zoom)) (: e.maximize '(and (not (# 'zoom window-property)) (not (= window-status 'icon)))) (df f.menu args (eval (+ '(menu.pop) args)) ) (: e.menu t) (df f.minimize () (progn (mwm-iconify-window) (if (and (= keyboardFocusPolicy 'explicit) autoKeyFocus) (set-focus-kFL) ) ) ) (: e.minimize '(not (= window-status 'icon))) (df f.move () (if action-by-menu (warp-pointer (/ window-width 2) (/ window-height 2) window)) (with (cursor cross-cursor) (if (= window-status 'icon) (move-icon) (move-window) ) ) ) (: e.move t) (df f.nop () ) (: e.nop t) (df f.normalize () (if (= window-status 'icon) (progn (mwm-de-iconify-window) (if (and (= keyboardFocusPolicy 'explicit) deiconifyKeyFocus) (set-focus window-window) ) ) (zoom) ) ) (: e.normalize '(or (= window-status 'icon) (# 'zoom window-property))) (df f.show_sel () (pop-up-win "Cut Buffer" "Contents of selection buffer:" cut-buffer)) (: e.show_sel t) (defun string-of (thing) (with (type-is ()) (: type-is (type thing)) (if (= thing nil) "nil" (= type-is 'string) (+ "\"" thing "\"") (= type-is 'atom) (+ "" thing) (= type-is 'active) (+ "" thing) (= type-is 'bar) "{BAR}" (= type-is 'client) "{CLIENT}" (= type-is 'number) (itoa thing) (member type-is '(subr fsubr expr fexpr)) "{FUNCTION}" (= type-is 'list) (+ "(" (eval (+ (list '+) (mapfor elt thing (+ (string-of elt) " ")))) ")") "{Other Obj}"))) (df f.eval_sel () (with (dummy ()) (execute-string (+ "(: dummy " cut-buffer ")")) (pop-up-win "Evaluate" "GWM value of selection:" (string-of dummy)))) (: e.eval_sel t) (df f.post_wmenu (button) (menu.pop (window-menu) button) ) (: e.post_wmenu t) (df f.quit_mwm () (end)) (: e.quit_mwm '(= window-status 'root)) (df f.raise () (with (l (list-of-windows 'stacking-order)) (if (not (= window (# (- (length l) 1) l))) (if (= window-status 'icon) (raise-window (# (- (length l) 1) l)) (raise-window))))) (: e.raise t) (df f.raise_lower () (with (win-unobscured t might-obscure ()) (for w (list-of-windows 'stacking-order 'mapped) (if (and might-obscure (obscured-by window w)) (: win-unobscured ())) (if (= w window) (: might-obscure t))) (if win-unobscured (lower-window) (raise-window)))) (: e.raise_lower t) (df f.raise_move () (f.raise) (f.move)) (: e.raise_move t) (df f.refresh () (refresh)) (: e.refresh t) (df f.refresh_win () (refresh window)) (: e.refresh_win t) (df f.resize () (send-user-event 'resize-by-menu)) (: e.resize '(= window-status 'window)) (df f.restart () (restart)) (: e.restart '(= window-status 'root)) (df f.set_behavior ()) (: e.set_behavior t) (df f.title ()) (: e.title t) (df f.warpto (name) (with (found-window () winlist (list-of-windows 'window 'mapped)) (for w winlist (with (wob w) (if (and (not found-window) (match name window-name)) (progn (: found-window t) (raise-window) (warp-pointer (/ window-width 2) (/ window-height 2) w))))))) (: e.warpto t) (df f.exec args (if (= (length args) 1) (! "/bin/sh" "-c" (# 0 args)) (eval (+ '(!) args))) ) (: e.exec t) (df f.exec-cut () (execute-string (+ "(? " cut-buffer ")")) ) (: e.exec-cut t) (de f.pack_icons () (with (theIconList (list-of-windows 'icon 'mapped) i 0 l (length theIconList) ) (: icon-array (list-make (* nb-icons.w nb-icons.h))) (while (< i l) (with (thePlace (auto-get-place) X (# 0 thePlace) Y (# 1 thePlace) thePixelPlace (XY-to-xy X Y) x (# 0 thePixelPlace) y (# 1 thePixelPlace) theIcon (# i theIconList) ) (set-icon-of-array X Y theIcon) (move-window theIcon x y) (## 'X theIcon X) (## 'Y theIcon Y) ) (: i (+ i 1)) ) ) ) (: e.pack_icons iconAutoPlace) (df f.info () (? "Window: " (window-client-name) "." (window-client-class) "." (window-name) "@" (window-machine-name) "\n") ) (: e.info t) (df f.termcap () (progn (send-key-to-window "eval `resize`" alone) (send-key-to-window 0xff0d alone) ) ) (: e.termcap '(= window-client-class "XTerm"))