Mercurial > emacs
comparison lisp/wid-edit.el @ 21428:28157e58238a
(default, widget-default-default-get): Define it.
(group, widget-group-default-get): Define it.
(menu-choice, widget-choice-default-get): Define it.
(widget-default-get): New function.
(widget-choice-action): Call it.
(widget-editable-list-entry-create): Call it.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 08 Apr 1998 07:26:54 +0000 |
parents | f94e2fdb6617 |
children | 79a3c4eba19f |
comparison
equal
deleted
inserted
replaced
21427:b5a5ac474741 | 21428:28157e58238a |
---|---|
468 "Set the current value of WIDGET to VALUE." | 468 "Set the current value of WIDGET to VALUE." |
469 (widget-apply widget | 469 (widget-apply widget |
470 :value-set (widget-apply widget | 470 :value-set (widget-apply widget |
471 :value-to-internal value))) | 471 :value-to-internal value))) |
472 | 472 |
473 (defun widget-default-get (widget) | |
474 "Extract the defaylt value of WIDGET." | |
475 (or (widget-get widget :value) | |
476 (widget-apply widget :default-get))) | |
477 | |
473 (defun widget-match-inline (widget vals) | 478 (defun widget-match-inline (widget vals) |
474 ;; In WIDGET, match the start of VALS. | 479 ;; In WIDGET, match the start of VALS. |
475 (cond ((widget-get widget :inline) | 480 (cond ((widget-get widget :inline) |
476 (widget-apply widget :match-inline vals)) | 481 (widget-apply widget :match-inline vals)) |
477 ((and vals | 482 ((and vals |
1332 :button-face-get 'widget-default-button-face-get | 1337 :button-face-get 'widget-default-button-face-get |
1333 :sample-face-get 'widget-default-sample-face-get | 1338 :sample-face-get 'widget-default-sample-face-get |
1334 :delete 'widget-default-delete | 1339 :delete 'widget-default-delete |
1335 :value-set 'widget-default-value-set | 1340 :value-set 'widget-default-value-set |
1336 :value-inline 'widget-default-value-inline | 1341 :value-inline 'widget-default-value-inline |
1342 :default-get 'widget-default-default-get | |
1337 :menu-tag-get 'widget-default-menu-tag-get | 1343 :menu-tag-get 'widget-default-menu-tag-get |
1338 :validate (lambda (widget) nil) | 1344 :validate (lambda (widget) nil) |
1339 :active 'widget-default-active | 1345 :active 'widget-default-active |
1340 :activate 'widget-specify-active | 1346 :activate 'widget-specify-active |
1341 :deactivate 'widget-default-deactivate | 1347 :deactivate 'widget-default-deactivate |
1528 ;; Wrap value in a list unless it is inline. | 1534 ;; Wrap value in a list unless it is inline. |
1529 (if (widget-get widget :inline) | 1535 (if (widget-get widget :inline) |
1530 (widget-value widget) | 1536 (widget-value widget) |
1531 (list (widget-value widget)))) | 1537 (list (widget-value widget)))) |
1532 | 1538 |
1539 (defun widget-default-default-get (widget) | |
1540 ;; Get `:value'. | |
1541 (widget-get widget :value)) | |
1542 | |
1533 (defun widget-default-menu-tag-get (widget) | 1543 (defun widget-default-menu-tag-get (widget) |
1534 ;; Use tag or value for menus. | 1544 ;; Use tag or value for menus. |
1535 (or (widget-get widget :menu-tag) | 1545 (or (widget-get widget :menu-tag) |
1536 (widget-get widget :tag) | 1546 (widget-get widget :tag) |
1537 (widget-princ-to-string (widget-get widget :value)))) | 1547 (widget-princ-to-string (widget-get widget :value)))) |
1901 :void '(item :format "invalid (%t)\n") | 1911 :void '(item :format "invalid (%t)\n") |
1902 :value-create 'widget-choice-value-create | 1912 :value-create 'widget-choice-value-create |
1903 :value-delete 'widget-children-value-delete | 1913 :value-delete 'widget-children-value-delete |
1904 :value-get 'widget-choice-value-get | 1914 :value-get 'widget-choice-value-get |
1905 :value-inline 'widget-choice-value-inline | 1915 :value-inline 'widget-choice-value-inline |
1916 :default-get 'widget-choice-default-get | |
1906 :mouse-down-action 'widget-choice-mouse-down-action | 1917 :mouse-down-action 'widget-choice-mouse-down-action |
1907 :action 'widget-choice-action | 1918 :action 'widget-choice-action |
1908 :error "Make a choice" | 1919 :error "Make a choice" |
1909 :validate 'widget-choice-validate | 1920 :validate 'widget-choice-validate |
1910 :match 'widget-choice-match | 1921 :match 'widget-choice-match |
1944 (widget-value (car (widget-get widget :children)))) | 1955 (widget-value (car (widget-get widget :children)))) |
1945 | 1956 |
1946 (defun widget-choice-value-inline (widget) | 1957 (defun widget-choice-value-inline (widget) |
1947 ;; Get value of the child widget. | 1958 ;; Get value of the child widget. |
1948 (widget-apply (car (widget-get widget :children)) :value-inline)) | 1959 (widget-apply (car (widget-get widget :children)) :value-inline)) |
1960 | |
1961 (defun widget-choice-default-get (widget) | |
1962 ;; Get default for the first choice. | |
1963 (widget-default-get (car (widget-get widget :args)))) | |
1949 | 1964 |
1950 (defcustom widget-choice-toggle nil | 1965 (defcustom widget-choice-toggle nil |
1951 "If non-nil, a binary choice will just toggle between the values. | 1966 "If non-nil, a binary choice will just toggle between the values. |
1952 Otherwise, the user will explicitly have to choose between the values | 1967 Otherwise, the user will explicitly have to choose between the values |
1953 when he invoked the menu." | 1968 when he invoked the menu." |
2021 ;; widget-choice-value-create will respect this choice, | 2036 ;; widget-choice-value-create will respect this choice, |
2022 ;; as long as the value is the same. | 2037 ;; as long as the value is the same. |
2023 (when this-explicit | 2038 (when this-explicit |
2024 (widget-put widget :explicit-choice current) | 2039 (widget-put widget :explicit-choice current) |
2025 (widget-put widget :explicit-choice-value (widget-get widget :value))) | 2040 (widget-put widget :explicit-choice-value (widget-get widget :value))) |
2026 (widget-value-set widget | 2041 (let ((value (widget-default-get current))) |
2027 (widget-apply current :value-to-external | 2042 (widget-value-set widget |
2028 (widget-get current :value))) | 2043 (widget-apply current :value-to-external value))) |
2029 (widget-setup) | 2044 (widget-setup) |
2030 (widget-apply widget :notify widget event))) | 2045 (widget-apply widget :notify widget event))) |
2031 (run-hook-with-args 'widget-edit-functions widget)) | 2046 (run-hook-with-args 'widget-edit-functions widget)) |
2032 | 2047 |
2033 (defun widget-choice-validate (widget) | 2048 (defun widget-choice-validate (widget) |
2633 (widget-get widget :delete-button-args)))) | 2648 (widget-get widget :delete-button-args)))) |
2634 ((eq escape ?v) | 2649 ((eq escape ?v) |
2635 (if conv | 2650 (if conv |
2636 (setq child (widget-create-child-value | 2651 (setq child (widget-create-child-value |
2637 widget type value)) | 2652 widget type value)) |
2638 (setq child (widget-create-child widget type)))) | 2653 (setq child (widget-create-child-value |
2654 widget type (widget-default-get type))))) | |
2639 (t | 2655 (t |
2640 (error "Unknown escape `%c'" escape))))) | 2656 (error "Unknown escape `%c'" escape))))) |
2641 (widget-put widget | 2657 (widget-put widget |
2642 :buttons (cons delete | 2658 :buttons (cons delete |
2643 (cons insert | 2659 (cons insert |
2659 :convert-widget 'widget-types-convert-widget | 2675 :convert-widget 'widget-types-convert-widget |
2660 :format "%v" | 2676 :format "%v" |
2661 :value-create 'widget-group-value-create | 2677 :value-create 'widget-group-value-create |
2662 :value-delete 'widget-children-value-delete | 2678 :value-delete 'widget-children-value-delete |
2663 :value-get 'widget-editable-list-value-get | 2679 :value-get 'widget-editable-list-value-get |
2680 :default-get 'widget-group-default-get | |
2664 :validate 'widget-children-validate | 2681 :validate 'widget-children-validate |
2665 :match 'widget-group-match | 2682 :match 'widget-group-match |
2666 :match-inline 'widget-group-match-inline) | 2683 :match-inline 'widget-group-match-inline) |
2667 | 2684 |
2668 (defun widget-group-value-create (widget) | 2685 (defun widget-group-value-create (widget) |
2684 (widget-create-child-value widget arg (car answer))) | 2701 (widget-create-child-value widget arg (car answer))) |
2685 (t | 2702 (t |
2686 (widget-create-child-value widget arg (car (car answer))))) | 2703 (widget-create-child-value widget arg (car (car answer))))) |
2687 children)) | 2704 children)) |
2688 (widget-put widget :children (nreverse children)))) | 2705 (widget-put widget :children (nreverse children)))) |
2706 | |
2707 (defun widget-group-default-get (widget) | |
2708 ;; Get the default of the components. | |
2709 (mapcar 'widget-default-get (widget-get widget :args))) | |
2689 | 2710 |
2690 (defun widget-group-match (widget values) | 2711 (defun widget-group-match (widget values) |
2691 ;; Match if the components match. | 2712 ;; Match if the components match. |
2692 (and (listp values) | 2713 (and (listp values) |
2693 (let ((match (widget-group-match-inline widget values))) | 2714 (let ((match (widget-group-match-inline widget values))) |