Function: idlwave-display-user-catalog-widget

idlwave-display-user-catalog-widget is an interactive and byte-compiled function defined in idlwave.el.gz.

Signature

(idlwave-display-user-catalog-widget DIRS-LIST)

Documentation

Create the widget to select IDL search path directories for scanning.

Key Bindings

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/idlwave.el.gz
(defun idlwave-display-user-catalog-widget (dirs-list)
  "Create the widget to select IDL search path directories for scanning."
  (interactive)
  (require 'widget)
  (require 'wid-edit)
  (unless dirs-list
      (error "Don't know IDL's search path"))

  (kill-buffer (get-buffer-create "*IDLWAVE Widget*"))
  (switch-to-buffer (get-buffer-create "*IDLWAVE Widget*"))
  (kill-all-local-variables)
  (make-local-variable 'idlwave-widget)
  (widget-insert (format idlwave-user-catalog-widget-help-string
			 idlwave-user-catalog-file))

  (widget-create 'push-button
		 :notify 'idlwave-widget-scan-user-lib-files
		 "Scan & Save")
  (widget-insert "  ")
  (widget-create 'push-button
		 :notify 'idlwave-delete-user-catalog-file
		 "Delete File")
  (widget-insert "  ")
  (widget-create 'push-button
		 :notify
		 (lambda (&rest _ignore)
                   (let ((path-list (widget-get idlwave-widget :path-dirs)))
                     (dolist (x path-list)
                       (unless (memq 'lib (cdr x))
                         (idlwave-path-alist-add-flag x 'user)))
                     (idlwave-display-user-catalog-widget path-list)))
		 "Select All Non-Lib")
  (widget-insert "  ")
  (widget-create 'push-button
		 :notify
		 (lambda (&rest _ignore)
                   (let ((path-list (widget-get idlwave-widget :path-dirs)))
                     (dolist (x path-list)
                       (idlwave-path-alist-remove-flag x 'user))
                     (idlwave-display-user-catalog-widget path-list)))
		 "Deselect All")
  (widget-insert "  ")
  (widget-create 'push-button
		 :notify (lambda (&rest _ignore)
			   (kill-buffer (current-buffer)))
		 "Quit")
  (widget-insert "\n\n")

  (widget-insert "Select Directories: \n")

  (setq idlwave-widget
	(apply #'widget-create
	       'checklist
	       :value  (delq nil (mapcar (lambda (x)
					   (if (memq 'user (cdr x))
					       (car x)))
					 dirs-list))
	       :greedy t
	       :tag "List of directories"
	       (mapcar (lambda (x)
			 (list 'item
			       (if (memq 'lib (cdr x))
				   (concat "[LIB] " (car x) )
				 (car x))))
		       dirs-list)))
  (widget-put idlwave-widget :path-dirs dirs-list)
  (widget-insert "\n")
  (use-local-map widget-keymap)
  (widget-setup)
  (goto-char (point-min))
  (delete-other-windows))