home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / elk-2_0.lha / elk-2.0 / examples / xlib / properties < prev    next >
Encoding:
Text File  |  1992-07-20  |  1.1 KB  |  46 lines

  1. ;;; -*-Scheme-*-
  2. ;;;
  3. ;;; Display all properties of all windows (with name, type, format,
  4. ;;; and data).
  5.  
  6. (require 'xlib)
  7.  
  8. (define (properties)
  9.  
  10.   (define (tab obj n)
  11.     (let* ((s (format #f "~s" obj))
  12.            (n (- n (string-length s))))
  13.       (display s)
  14.       (if (positive? n)
  15.       (do ((i 0 (1+ i))) ((= i n)) (display #\space)))))
  16.  
  17.   (define (do-window w prop)
  18.     (format #t "Window ~s:~%" w)
  19.     (for-each
  20.       (lambda (p)
  21.         (tab (atom-name (window-display w) p) 20)
  22.     (display "= ")
  23.         (let ((p (get-property w p #f 0 20 #f)))
  24.           (tab (atom-name (window-display w) (car p)) 18)
  25.           (tab (cadr p) 3)
  26.           (format #t "~s~%" (caddr p))))
  27.     (vector->list prop))
  28.   (newline))
  29.     
  30.   (define (do-children root)
  31.     (for-each
  32.       (lambda (w)
  33.     (do-window w (list-properties w))
  34.     (do-children w))
  35.       (vector->list (car (query-tree root)))))
  36.  
  37.   (let* ((dpy (open-display))
  38.      (root (display-root-window dpy)))
  39.     (unwind-protect
  40.       (begin
  41.         (do-window root (list-properties root))
  42.         (do-children root))
  43.       (close-display dpy))))
  44.  
  45. (properties)
  46.