annotate lisp/dialog-items.el @ 5067:7d7ae8db0341

add functions `stable-union' and `stable-intersection' to do stable set operations -------------------- ChangeLog entries follow: -------------------- lisp/ChangeLog addition: 2010-02-22 Ben Wing <ben@xemacs.org> * cl-seq.el: * cl-seq.el (stable-union): New. * cl-seq.el (stable-intersection): New. New functions to do stable set operations, i.e. preserve the order of the elements in the argument lists, and prefer LIST1 over LIST2 when ordering the combined result. The result looks as much like LIST1 as possible, followed (in the case of `stable-union') by any necessary elements from LIST2, in order. This is contrary to `union' and `intersection', which are not required to be order- preserving and are not -- they prefer LIST2 and output results in backwards order.
author Ben Wing <ben@xemacs.org>
date Mon, 22 Feb 2010 21:23:02 -0600
parents 42375619fa45
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
1 ;;; dialog-items.el --- Dialog-box content for XEmacs
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
2
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
3 ;; Copyright (C) 2000 Andy Piper.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
4 ;; Copyright (C) 2000 Ben Wing.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
5
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
6 ;; Maintainer: XEmacs Development Team
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
7 ;; Keywords: content, gui, internal, dumped
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
8
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
9 ;; This file is part of XEmacs.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
10
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
11 ;; XEmacs is free software; you can redistribute it and/or modify it
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
12 ;; under the terms of the GNU General Public License as published by
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
14 ;; any later version.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
15
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
16 ;; XEmacs is distributed in the hope that it will be useful, but
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
17 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
19 ;; General Public License for more details.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
20
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
22 ;; along with XEmacs; see the file COPYING. If not, write to the
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
23 ;; Free Software Foundation, 59 Temple Place - Suite 330,
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
24 ;; Boston, MA 02111-1307, USA.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
25
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
26 ;;; Synched up with: Not in FSF.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
27
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
28 ;;; Commentary:
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
29
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
30 ;;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
31 ;; Simple search dialog
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
32 ;;
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
33 (defvar search-dialog-direction t)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
34 (defvar search-dialog-regexp nil)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
35 (defvar search-dialog nil)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
36
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
37 (defun search-dialog-callback (parent image-instance event)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
38 (save-selected-frame
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
39 (select-frame parent)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
40 (let ((domain (frame-selected-window (event-channel event))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
41 (funcall (if search-dialog-direction
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
42 (if search-dialog-regexp
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
43 're-search-forward
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
44 'search-forward)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
45 (if search-dialog-regexp
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
46 're-search-backward
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
47 'search-backward))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
48 (glyph-image-property
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
49 (car (glyph-image-property
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
50 (nth 1 (glyph-image-property
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
51 search-dialog :items domain))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
52 :items domain)) :text domain))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
53 (isearch-highlight (match-beginning 0) (match-end 0)))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
54
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
55 (defun make-search-dialog ()
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
56 "Popup a search dialog box."
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
57 (interactive)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
58 (let ((parent (selected-frame)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
59 (make-dialog-box
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
60 'general
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
61 :parent parent
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
62 :title "Search"
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
63 :autosize t
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
64 :spec
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
65 (setq search-dialog
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
66 (make-glyph
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
67 `[layout
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
68 :orientation horizontal
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
69 :vertically-justify top
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
70 :horizontally-justify center
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
71 :border [string :data "Search"]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
72 :items
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
73 ([layout :orientation vertical
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
74 :justify top ; implies left also
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
75 :items
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
76 ([string :data "Search for:"]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
77 [button :descriptor "Match Case"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
78 :style toggle
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
79 :selected (not case-fold-search)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
80 :callback (setq case-fold-search
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
81 (not case-fold-search))]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
82 [button :descriptor "Regular Expression"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
83 :style toggle
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
84 :selected search-dialog-regexp
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
85 :callback (setq search-dialog-regexp
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
86 (not search-dialog-regexp))]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
87 [button :descriptor "Forwards"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
88 :style radio
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
89 :selected search-dialog-direction
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
90 :callback (setq search-dialog-direction t)]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
91 [button :descriptor "Backwards"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
92 :style radio
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
93 :selected (not search-dialog-direction)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
94 :callback (setq search-dialog-direction nil)]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
95 )]
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
96 [layout :orientation vertical
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
97 :vertically-justify top
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
98 :horizontally-justify right
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
99 :items
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
100 ([edit-field :width 15 :descriptor "" :active t
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
101 :initial-focus t]
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
102 [button :width 10 :descriptor "Find Next"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
103 :callback-ex
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
104 (lambda (image-instance event)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
105 (search-dialog-callback ,parent
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
106 image-instance
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
107 event))]
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
108 [button :width 10 :descriptor "Cancel"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
109 :callback-ex
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
110 (lambda (image-instance event)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
111 (isearch-dehighlight)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
112 (delete-frame
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents:
diff changeset
113 (event-channel event)))])])]))
863
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
114 ;; These are no longer strictly necessary, but not setting a size
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
115 ;; at all yields a much more noticeable resize since the initial
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
116 ;; frame is so big.
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
117 :properties `(height ,(widget-logical-to-character-height 6)
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
118 width ,(widget-logical-to-character-width 39))
42375619fa45 [xemacs-hg @ 2002-06-04 06:03:59 by andyp]
andyp
parents: 442
diff changeset
119 )))