|  |  | Searching for data items

## Searching for data items

In order to search for data items the user specifies a set of constraints. An item will be included in the search results only if it verifies all the constraints in the set that are applicable to its type.

The types of items to be searched for can be more than one, to each type being applied only the constraints that make sense for it.

The search domain is either the entire data-base, or a set of groups. In the latter case, the search will be recursive, i.e., will also explore the groups that are elements of the given groups, and so on. Furthermore, if the search includes the type "Group", the given groups will be included in the search results.

The patterns for searching by names, comments and/or remarks follow the Tcl/Tk `glob` command conventions. In brief:

1. `?` stands for any single character
2. `*` stands for zero or more characters
3. `[`xyz`]` stands for any of the characters within the brackets
4. `[`a`-`z`]` stands for any character in the range a to z, inclusive
5. `\`c stands for the character c.

The distance to a waypoint or to a location given by its coordinates can be used to search for waypoints (a related operation is making clusters of waypoints) and/or tracks. With tracks all track points of each track may have to be checked what may take a long time.

The search is based on either an allowable maximum distance, or a distance interval. A bearing for the search can also be given, together with an angle that will be centred along it.

Results , if any, are presented as elements of a new group with a name of the form `FOUND n` where `n` is a number. The remark of the group gives a succint description of the constraints used in the search.

A dialog window will be presented giving the choice between ending the search or making a new one, in any case while keeping the group with the results (`Ok` or `Another` buttons) or forgetting it (`Cancel` or verb+Change+ buttons).

|  |  | Searching for data items