1 |
;;; tree-widget.el --- Tree widget |
;;; tree-widget.el --- Tree widget |
2 |
|
|
3 |
;; Copyright (C) 2004 Free Software Foundation, Inc. |
;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. |
4 |
|
|
5 |
;; Author: David Ponce <david@dponce.com> |
;; Author: David Ponce <david@dponce.com> |
6 |
;; Maintainer: David Ponce <david@dponce.com> |
;; Maintainer: David Ponce <david@dponce.com> |
469 |
'widget-type) |
'widget-type) |
470 |
property)) |
property)) |
471 |
|
|
|
(defsubst tree-widget-super-format-handler (widget escape) |
|
|
"Call WIDGET's inherited format handler to process ESCAPE character." |
|
|
(let ((handler (tree-widget-get-super widget :format-handler))) |
|
|
(and handler (funcall handler widget escape)))) |
|
|
|
|
|
(defun tree-widget-format-handler (widget escape) |
|
|
"For WIDGET, signal that the %p format template is obsolete. |
|
|
Call WIDGET's inherited format handler to process other ESCAPE |
|
|
characters." |
|
|
(if (eq escape ?p) |
|
|
(message "The %%p format template is obsolete and ignored") |
|
|
(tree-widget-super-format-handler widget escape))) |
|
|
(make-obsolete 'tree-widget-format-handler |
|
|
'tree-widget-super-format-handler) |
|
|
|
|
472 |
(defsubst tree-widget-node (widget) |
(defsubst tree-widget-node (widget) |
473 |
"Return the tree WIDGET :node value. |
"Return the tree WIDGET :node value. |
474 |
If not found setup a default 'item' widget." |
If not found setup a default 'item' widget." |
615 |
(let* ((widget-image-enable (tree-widget-use-image-p)) ; Emacs |
(let* ((widget-image-enable (tree-widget-use-image-p)) ; Emacs |
616 |
(widget-glyph-enable widget-image-enable) ; XEmacs |
(widget-glyph-enable widget-image-enable) ; XEmacs |
617 |
(node (tree-widget-node tree)) |
(node (tree-widget-node tree)) |
618 |
|
(flags (widget-get tree :tree-widget--guide-flags)) |
619 |
|
(indent (and (bolp) (widget-get tree :indent))) |
620 |
children buttons) |
children buttons) |
621 |
|
(and (null flags) indent (insert-char ?\ indent)) |
622 |
(if (widget-get tree :open) |
(if (widget-get tree :open) |
623 |
;;;; Unfolded node. |
;;;; Unfolded node. |
624 |
(let* ((args (widget-get tree :args)) |
(let ((args (widget-get tree :args)) |
625 |
(dynargs (widget-get tree :dynargs)) |
(dynargs (widget-get tree :dynargs)) |
626 |
(flags (widget-get tree :tree-widget--guide-flags)) |
(guide (tree-widget-guide tree)) |
627 |
(rflags (reverse flags)) |
(noguide (tree-widget-no-guide tree)) |
628 |
(guide (tree-widget-guide tree)) |
(endguide (tree-widget-end-guide tree)) |
629 |
(noguide (tree-widget-no-guide tree)) |
(handle (tree-widget-handle tree)) |
630 |
(endguide (tree-widget-end-guide tree)) |
(nohandle (tree-widget-no-handle tree)) |
631 |
(handle (tree-widget-handle tree)) |
;; Lookup for images and set widgets' tag-glyphs here, |
632 |
(nohandle (tree-widget-no-handle tree)) |
;; to allow to dynamically change the image theme. |
633 |
;; Lookup for images and set widgets' tag-glyphs here, |
(guidi (tree-widget-find-image "guide")) |
634 |
;; to allow to dynamically change the image theme. |
(noguidi (tree-widget-find-image "no-guide")) |
635 |
(guidi (tree-widget-find-image "guide")) |
(endguidi (tree-widget-find-image "end-guide")) |
636 |
(noguidi (tree-widget-find-image "no-guide")) |
(handli (tree-widget-find-image "handle")) |
637 |
(endguidi (tree-widget-find-image "end-guide")) |
(nohandli (tree-widget-find-image "no-handle")) |
638 |
(handli (tree-widget-find-image "handle")) |
child) |
|
(nohandli (tree-widget-find-image "no-handle")) |
|
|
child) |
|
639 |
(when dynargs |
(when dynargs |
640 |
;; Request the definition of dynamic children |
;; Request the definition of dynamic children |
641 |
(setq dynargs (funcall dynargs tree)) |
(setq dynargs (funcall dynargs tree)) |
657 |
(while args |
(while args |
658 |
(setq child (car args) |
(setq child (car args) |
659 |
args (cdr args)) |
args (cdr args)) |
660 |
|
(and indent (insert-char ?\ indent)) |
661 |
;; Insert guide lines elements |
;; Insert guide lines elements |
662 |
(dolist (f rflags) |
(dolist (f (reverse flags)) |
663 |
(widget-create-child-and-convert |
(widget-create-child-and-convert |
664 |
tree (if f guide noguide) |
tree (if f guide noguide) |
665 |
:tag-glyph (if f guidi noguidi)) |
:tag-glyph (if f guidi noguidi)) |