;ELC ;;; Compiled by proclus@darwintel on Sat Jan 19 22:13:00 2008 ;;; from file /mnt/gmirror/ports/editors/tree-widget/work/tree-widget.el ;;; in Emacs version 21.2.1 ;;; with bytecomp version 1.1.1.4 ;;; with all optimizations. ;;; This file uses dynamic docstrings, first added in Emacs 19.29. (if (and (boundp 'emacs-version) (< (aref emacs-version (1- (length emacs-version))) ?A) (or (and (boundp 'epoch::version) epoch::version) (string-lessp emacs-version "19.29"))) (error "`tree-widget.el' was compiled for Emacs 19.29 or later")) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (byte-code "\301B\302\303\304!\210\305\306\307\310\311\312%\207" [current-load-list tree-widget-version "2.0" require wid-edit custom-declare-group tree-widget nil "Customization support for the Tree Widget Library." :group widgets] 6) #@57 *non-nil means that tree-widget will try to use images. (custom-declare-variable 'tree-widget-image-enable '(not (or (featurep 'xemacs) (< emacs-major-version 21))) '(#$ . -868) :type 'boolean :group 'tree-widget) #@155 *Directory where to lookup for image themes. If nil, use the "tree-widget-themes" subdirectory of the directory where the tree-widget library is located. (custom-declare-variable 'tree-widget-themes-directory 'nil '(#$ . -1089) :type '(choice (const :tag "Default" nil) (directory :format "%{%t%}:\n%v")) :group 'tree-widget) #@867 *Name of the theme to use to lookup for images. The theme name must be a subdirectory in `tree-widget-themes-directory'. If nil use the "default" theme. When a image is not found in the current theme, the "default" theme is searched too. A complete theme should contain images with these file names: Name Represents ----------- ------------------------------------------------ open opened node (for example an open folder) close closed node (for example a close folder) empty empty node (a node without children) leaf leaf node (for example a document) guide a vertical guide line no-guide an invisible guide line end-guide the end of a vertical guide line handle an horizontal line drawn before a node control no-handle an invisible handle ----------- ------------------------------------------------ (custom-declare-variable 'tree-widget-theme 'nil '(#$ . -1422) :type '(choice (const :tag "Default" nil) (string :tag "Name")) :group 'tree-widget) #@34 *Properties of GNU Emacs images. (custom-declare-variable 'tree-widget-image-properties-emacs ''(:ascent center :mask (heuristic t)) '(#$ . -2442) :type 'plist :group 'tree-widget) #@31 *Properties of XEmacs images. (custom-declare-variable 'tree-widget-image-properties-xemacs 'nil '(#$ . -2629) :type 'plist :group 'tree-widget) (byte-code "\301B\303\301!\204\f\304\305\301!\210\302B\303\302!\204\304\305\302!\207" [current-load-list tree-widget--image-cache tree-widget--theme boundp nil make-variable-buffer-local] 2) #@305 Define the current image theme to use. The theme is defined locally to the current buffer, where the tree widget is drawn. Also clear the image cache. If optional argument NAME is non-nil, it is the name of the theme to use. By default it is the global theme defined by the option `tree-widget-theme'. (defalias 'tree-widget-set-theme #[(&optional name) "\304 \206 \n\206 \305\211\207" [tree-widget--image-cache name tree-widget-theme tree-widget--theme nil "default"] 2 (#$ . 2981)]) (put 'tree-widget-set-theme 'byte-optimizer 'byte-compile-inline-expand) #@81 Return the directory where to search for image themes. Return nil if not found. (defalias 'tree-widget-themes-directory #[nil "\203\n\302!\202\302\303\304\305!\"\306 !\205 )\207" [tree-widget-themes-directory dir expand-file-name "../tree-widget-themes" locate-library "tree-widget" file-directory-p] 4 (#$ . 3551)]) (put 'tree-widget-themes-directory 'byte-optimizer 'byte-compile-inline-expand) #@377 Create the image with IMAGE-NAME found in current theme. IMAGE-NAME must be a file name sans extension located in the current theme directory (see the options `tree-widget-themes-directory' and `tree-widget-theme'). Use the first image found having a supported format in those returned by the function `tree-widget-image-formats'. Return the image found or nil if not found. (defalias 'tree-widget-find-image #[(image-name) "\203 \203 \306 \204\307\207\310\n \"A\206\266\f\203!\311\f!\202'\311\312\313\314!\"\315 !\205/ )\211\205\265\206@\206@\316 \317\311\316D\"\307\307\307\203\214\204\214@A@\320!)\203[\313\nA@P\321#\202[\205\263@\322\323\307BBB\"*\nB B.)\207" [tree-widget-image-enable widget-image-enable image-name tree-widget--image-cache tree-widget-themes-directory dir display-images-p nil assoc expand-file-name "../tree-widget-themes" locate-library "tree-widget" file-directory-p "default" mapcar image-type-available-p t apply create-image tree-widget--theme tree-widget-theme default-directory path widget-image-conversion fmts fmt file image type tree-widget-image-properties-emacs] 7 (#$ . 3963)]) #@41 Keymap used inside node handle buttons. (defvar tree-widget-button-keymap (byte-code "\305\211\211\306\307!\203 \310\202\f\311\312\n!\313 \314#\210+\207" [keymap mouse-button1 parent-keymap widget-button-keymap widget-keymap nil featurep xemacs [button1] [down-mouse-1] copy-keymap define-key widget-button-click] 4) (#$ . 5175)) (byte-code "\301\302\303\304\305\306\307\310& \210\301\311\302\312\313\314\315\316\317\320& \210\301\321\311\322\313\323%\210\301\324\302\325\313\326\315\327\317\330& \210\301\331\332\333\313\334\305\335&\210\301\336\332\337\313\340\305\335&\210\301\341\332\342\313\343\305\335&\210\301\344\332\345\313\346\305\335&\210\301\347\332\350\313\334\305\335&\210\301\351\332\352\313\334\305\335&\210\301\353\354\355\305\356\357\360\361\362\363\364\365\366& \207" [tree-widget-button-keymap define-widget tree-widget-control push-button "Base `tree-widget' control." :format "%[%t%]" :button-keymap :keymap tree-widget-open-control "Control widget that represents a opened `tree-widget' node." :tag "[-] " :notify tree-widget-close-node :help-echo "Hide node" tree-widget-empty-control "Control widget that represents an empty opened `tree-widget' node." "[X] " tree-widget-close-control "Control widget that represents a closed `tree-widget' node." "[+] " tree-widget-open-node "Show node" tree-widget-leaf-control item "Control widget that represents a leaf node." " " "%t" tree-widget-guide "Widget that represents a guide line." " |" tree-widget-end-guide "Widget that represents the end of a guide line." " `" tree-widget-no-guide "Widget that represents an invisible guide line." " " tree-widget-handle "Widget that represent a node handle." tree-widget-no-handle "Widget that represent an invisible node handle." tree-widget default "Tree widget." "%v" :convert-widget widget-types-convert-widget :value-get widget-value-value-get :value-create tree-widget-value-create :value-delete tree-widget-value-delete] 14) #@53 Return non-nil if WIDGET is a `tree-widget' widget. (defalias 'tree-widget-p #[(widget) "\211@)\211\203 \302=\204 \303N\211@)\211\204\n )\302=\207" [widget type tree-widget widget-type] 3 (#$ . 7148)]) #@43 Return WIDGET's inherited PROPERTY value. (defalias 'tree-widget-get-super #[(widget property) "\302\211@)\303N\211@)\303N \"\207" [widget property widget-get widget-type] 4 (#$ . 7366)]) (put 'tree-widget-get-super 'byte-optimizer 'byte-compile-inline-expand) #@69 Call WIDGET's inherited format handler to process ESCAPE character. (defalias 'tree-widget-super-format-handler #[(widget escape) "\304\305\211@)\306N\211@)\306N \"*\211\205\n \")\207" [widget property handler escape :format-handler widget-get widget-type] 5 (#$ . 7636)]) (put 'tree-widget-super-format-handler 'byte-optimizer 'byte-compile-inline-expand) #@136 For WIDGET, signal that the %p format template is obsolete. Call WIDGET's inherited format handler to process other ESCAPE characters. (defalias 'tree-widget-format-handler #[(widget escape) "\304=\203\n\305\306!\207 \211\307\310 \211@)\311N\211@)\311N\n\"*\211\205, \"+\207" [escape widget property handler 112 message "The %p format template is obsolete and ignored" :format-handler widget-get widget-type] 6 (#$ . 8010)]) (make-obsolete 'tree-widget-format-handler 'tree-widget-super-format-handler) #@81 Return the tree WIDGET :node value. If not found setup a default 'item' widget. (defalias 'tree-widget-node #[(widget) "\302\303\"\211\204\304\305\302\305\"\206\306\307!!E\310\303 #\210 )\207" [widget node widget-get :node item :tag widget-princ-to-string widget-value widget-put] 6 (#$ . 8532)]) (put 'tree-widget-node 'byte-optimizer 'byte-compile-inline-expand) #@53 Return the opened node control specified in WIDGET. (defalias 'tree-widget-open-control #[(widget) "\301\302\"\206\303\207" [widget widget-get :open-control tree-widget-open-control] 3 (#$ . 8913)]) (put 'tree-widget-open-control 'byte-optimizer 'byte-compile-inline-expand) #@53 Return the closed node control specified in WIDGET. (defalias 'tree-widget-close-control #[(widget) "\301\302\"\206\303\207" [widget widget-get :close-control tree-widget-close-control] 3 (#$ . 9197)]) (put 'tree-widget-close-control 'byte-optimizer 'byte-compile-inline-expand) #@52 Return the empty node control specified in WIDGET. (defalias 'tree-widget-empty-control #[(widget) "\301\302\"\206\303\207" [widget widget-get :empty-control tree-widget-empty-control] 3 (#$ . 9485)]) (put 'tree-widget-empty-control 'byte-optimizer 'byte-compile-inline-expand) #@51 Return the leaf node control specified in WIDGET. (defalias 'tree-widget-leaf-control #[(widget) "\301\302\"\206\303\207" [widget widget-get :leaf-control tree-widget-leaf-control] 3 (#$ . 9772)]) (put 'tree-widget-leaf-control 'byte-optimizer 'byte-compile-inline-expand) #@51 Return the guide line widget specified in WIDGET. (defalias 'tree-widget-guide #[(widget) "\301\302\"\206\303\207" [widget widget-get :guide tree-widget-guide] 3 (#$ . 10054)]) (put 'tree-widget-guide 'byte-optimizer 'byte-compile-inline-expand) #@58 Return the end of guide line widget specified in WIDGET. (defalias 'tree-widget-end-guide #[(widget) "\301\302\"\206\303\207" [widget widget-get :end-guide tree-widget-end-guide] 3 (#$ . 10309)]) (put 'tree-widget-end-guide 'byte-optimizer 'byte-compile-inline-expand) #@61 Return the invisible guide line widget specified in WIDGET. (defalias 'tree-widget-no-guide #[(widget) "\301\302\"\206\303\207" [widget widget-get :no-guide tree-widget-no-guide] 3 (#$ . 10587)]) (put 'tree-widget-no-guide 'byte-optimizer 'byte-compile-inline-expand) #@57 Return the node handle line widget specified in WIDGET. (defalias 'tree-widget-handle #[(widget) "\301\302\"\206\303\207" [widget widget-get :handle tree-widget-handle] 3 (#$ . 10864)]) (put 'tree-widget-handle 'byte-optimizer 'byte-compile-inline-expand) #@67 Return the node invisible handle line widget specified in WIDGET. (defalias 'tree-widget-no-handle #[(widget) "\301\302\"\206\303\207" [widget widget-get :no-handle tree-widget-no-handle] 3 (#$ . 11129)]) (put 'tree-widget-no-handle 'byte-optimizer 'byte-compile-inline-expand) #@55 Save in ARG the WIDGET properties specified by :keep. (defalias 'tree-widget-keep #[(arg widget) "\304\305\"\306\211\203\n@\307 \304 \"#\210\nA\211\204 *\306\207" [widget prop #1=#:--dolist-temp--63800 arg widget-get :keep nil widget-put] 7 (#$ . 11416)]) #@225 Save WIDGET children values. Children properties and values are saved in ARGS if non-nil else in WIDGET :args property value. Data node properties and value are saved in NODE if non-nil else in WIDGET :node property value. (defalias 'tree-widget-children-value-save #[(widget &optional args node) "\206\306 \307\"\n\206/ \306 \310\"\211\204-\311\312\306 \312\"\206%\313\314 !!E\315 \310\n#\210\n*\306 \316\"\306 \317\"\320\211\203\313\203\313@A@A\321 !\203\273\315\f\307\306 \307\"#\210\315\f\310 \306 \310\"\211\204\213\311\312\306 \312\"\206\203\313\314 !!E\315 \310\n#\210\n*#\210\315\f\322\306 \322\"#\210\306 \322\"\203@\315\f\323\314 !#\210\324\f \"\210\325 \306\f\307\"\306\f\310\"#\210\202@\315\f\323\314 !#\210\324\f \"\210\202@\n\205\337 \205\337\315\n\323\314 !#\210\324\n \".\207" [args widget node child arg node-child widget-get :args :node item :tag widget-princ-to-string widget-value widget-put :children :tree-widget--node nil tree-widget-p :open :value tree-widget-keep tree-widget-children-value-save children] 9 (#$ . 11689)]) #@190 Hooks run after toggling a `tree-widget' folding. Each function will receive the `tree-widget' as its unique argument. This variable should be local to each buffer used to display widgets. (defvar tree-widget-after-toggle-functions nil (#$ . 12789)) #@132 Close the `tree-widget' node associated to this control WIDGET. WIDGET's parent should be a `tree-widget'. IGNORE other arguments. (defalias 'tree-widget-close-node #[(widget &rest ignore) "\302\303\"\304 !\210\305 \306\307#\210\310 \307\"\210\311\312 \")\207" [widget tree widget-get :parent tree-widget-children-value-save widget-put :open nil widget-value-set run-hook-with-args tree-widget-after-toggle-functions] 4 (#$ . 13046)]) #@131 Open the `tree-widget' node associated to this control WIDGET. WIDGET's parent should be a `tree-widget'. IGNORE other arguments. (defalias 'tree-widget-open-node #[(widget &rest ignore) "\302\303\"\304 \305\306#\210\307 \306\"\210\310\311 \")\207" [widget tree widget-get :parent widget-put :open t widget-value-set run-hook-with-args tree-widget-after-toggle-functions] 4 (#$ . 13490)]) #@30 Delete tree WIDGET children. (defalias 'tree-widget-value-delete #[(widget) "\301!\210\302\303\304\"!\210\305\304\306#\207" [widget widget-children-value-delete widget-delete widget-get :tree-widget--node widget-put nil] 4 (#$ . 13887)]) #@25 Create the TREE widget. (defalias 'tree-widget-value-create #[(tree) "\205\n \205\n\306 \211 \307\f\310\"\211\204.\311\312\307\f\312\"\206&\313\314\f!!E\315\f\310 #\210 *\3169\316:\307 \317\"\203\277\307 \320\";\307 \321\"<\307 \322\"=\323=!> \307\f\324\"\206`\325)? \307\f\326\"\206m\327)@ \307\f\330\"\206z\331)A \307\f\332\"\206\207\333)B \307\f\334\"\206\224\335)C\336\337!D\336\340!E\336\341!F\336\342!G\336\343!H\316I<\203\324< !<;<=\204\324\344\345<\";\315 \320;#\210\346 ;\203\351 \307\f\347\"\206\345\350)\202\364 \307\f\351\"\206\363\352)\353\336;\203\377\354\202\355!$:B:\315 \356\346 \"#\210;\203\272;@I;A;>\316J\211K\203^K@J\346 J\203;?\202=@\353J\203HD\202JE$\210\346 C\353H$\210KA\211K\204**\346 ;\203k?\202mA\353;\203xD\202zF$\210\346 B\353G$\210\357I!\204\243\346 \211\307\f\360\"\206\230\361)\353\336\362!$:B:\346 I\322;\205\256\363=B$9B9\202.\202\337\346 \211\307\f\364\"\206\313\365)\353\336\366!$:B:\315 \356\346 \"#\210\315 \3679\237#\210\315 \370:#-\207" [tree-widget-image-enable widget-image-enable widget-glyph-enable tree widget node display-images-p widget-get :node item :tag widget-princ-to-string widget-value widget-put nil :open :args :dynargs :tree-widget--guide-flags reverse :guide tree-widget-guide :no-guide tree-widget-no-guide :end-guide tree-widget-end-guide :handle tree-widget-handle :no-handle tree-widget-no-handle tree-widget-find-image "guide" "no-guide" "end-guide" "handle" "no-handle" mapcar widget-convert widget-create-child-and-convert :open-control tree-widget-open-control :empty-control tree-widget-empty-control :tag-glyph "open" "empty" :tree-widget--node tree-widget-p :leaf-control tree-widget-leaf-control "leaf" t :close-control tree-widget-close-control "close" :children :buttons children buttons args dynargs flags rflags guide noguide endguide handle nohandle guidi noguidi endguidi handli nohandli child f #1=#:--dolist-temp--63801] 7 (#$ . 14134)]) #@221 For each WIDGET displayed child call function FUN. FUN is called with three arguments like this: (FUN CHILD IS-NODE WIDGET) where: - - CHILD is the child widget. - - IS-NODE is non-nil if CHILD is WIDGET node widget. (defalias 'tree-widget-map #[(widget fun) "\304\305\"\205; \304\305\"\306#\210\304\307\"\310\211\2039 @\311\n!\203,\312\n \"\210\2022 \n\310#\210 A\211\204*\310\207" [widget fun child #1=#:--dolist-temp--63802 widget-get :tree-widget--node t :children nil tree-widget-p tree-widget-map] 5 (#$ . 16184)]) (provide 'tree-widget)