]> git.saurik.com Git - wxWidgets.git/blame - docs/latex/proplist/body.tex
Several changes and updates
[wxWidgets.git] / docs / latex / proplist / body.tex
CommitLineData
e3a43801
JS
1\chapter{Introduction}\label{introduction}
2\pagenumbering{arabic}%
3\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
4\setfooter{\thepage}{}{}{}{}{\thepage}%
5
6The Property Sheet Classes help the programmer to specify complex dialogs and
7their relationship with their associated data. By specifying data as a
8wxPropertySheet containing wxProperty objects, the programmer can use
9a range of available or custom wxPropertyView classes to allow the user to
10edit this data. Classes derived from wxPropertyView act as mediators between the
11wxPropertySheet and the actual window (and associated panel items).
12
13For example, the wxPropertyListView is a kind of wxPropertyView which displays
14data in a Visual Basic-style property list (see \helpref{the next section}{appearance} for
15screen shots). This is a listbox containing names and values, with
16an edit control and other optional controls via which the user edits the selected
17data item.
18
19wxPropertyFormView is another kind of wxPropertyView which mediates between
20the data and a panel or dialog box which has already been created. This makes it a contender for
21the replacement of wxForm, since programmer-controlled layout is going to be much more
22satisfactory. If automatic layout is desired, then wxPropertyListView could be used instead.
23
24The main intention of this class library was to provide property {\it list} behaviour, but
25it has been generalised as much as possible so that the concept of a property sheet and its viewers
26can reduce programming effort in a range of user interface tasks.
27
28For further details on the classes and how they are used, please see \helpref{Property classes overview}{propertyoverview}.
29
30\section{The appearance and behaviour of a property list view}\label{appearance}
31
32The property list, as seen in an increasing number of development tools
33such as Visual Basic and Delphi, is a convenient and compact method for
34displaying and editing a number of items without the need for one
35control per item, and without the need for designing a special form. The
36controls are as follows:
37
38\begin{itemize}\itemsep=0pt
39\item A listbox showing the properties and their current values, which has double-click
40properties dependent on the nature of the current property;
41\item a text editing area at the top of the display, allowing the user to edit
42the currently selected property if appropriate;
43\item `confirm' and `cancel' buttons to confirm or cancel an edit (for the property, not the
44whole sheet);
45\item an optional list that appears when the user can make a choice from several known possible values;
46\item a small Edit button to invoke `detailed editing' (perhaps showing or hiding the above value list, or
47maybe invoking a common dialog);
48\item optional OK/Close, Cancel and Help buttons for the whole dialog.
49\end{itemize}
50
51The concept of `detailed editing' versus quick editing gives the user a choice
52of editing mode, so novice and expert behaviour can be catered for, or the user can just
53use what he feels comfortable with.
54
55Behaviour alters depending on the kind of property being edited. For example, a boolean value has
56the following behaviour:
57
58\begin{itemize}\itemsep=0pt
59\item Double-clicking on the item toggles between TRUE and FALSE.
60\item Showing the value list enables the user to select TRUE or FALSE.
61\item The user may be able to type in the word TRUE or FALSE, or the edit control
62may be read-only to disallow this since it is error-prone.
63\end{itemize}
64
65A list of strings may pop up a dialog for editing them, a simple string just allows text editing,
66double-clicking a colour property may show a colour selector, double-clicking on a filename property may
67show a file selector (in addition to being able to type in the name in the edit control), etc.
68
69Note that the `type' of property, such as string or integer, does not
70necessarily determine the behaviour of the property. The programmer has
71to be able to specify different behaviours for the same type, depending
72on the meaning of the property. For example, a colour and a filename may
73both be strings, but their editing behaviour should be different. This
74is why objects of type wxPropertyValidator need to be used, to define
75behaviour for a given class of properties or even specific property
76name. Objects of class wxPropertyView contain a list of property
77registries, which enable reuse of bunches of these validators in
78different circumstances. Or a wxProperty can be explicitly set to use a
79particular validator object.
80
81The following screen shot of the property classes test program shows the
82user editing a string, which is constrained to be one of three possible
83values.
84
85$$\image{8cm;0cm}{prop1.eps}$$\\
86
87The second picture shows the user having entered a integer that
88was outside the range specified to the validator. Note that in this picture,
89the value list is hidden because it is not used when editing an integer.
90
91$$\image{8cm;0cm}{prop2.eps}$$
92
93\chapter{Files}\label{files}
94\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
95\setfooter{\thepage}{}{}{}{}{\thepage}%
96
97The property class library comprises the following files:
98
99\begin{itemize}\itemsep=0pt
100\item prop.h: base property class header
101\item proplist.h: wxPropertyListView and associated classes
102\item propform.h: wxPropertyListView and associated classes
103\item prop.cpp: base property class implementation
104\item proplist.cpp: wxPropertyListView and associated class implementions
105\item propform.cpp: wxPropertyFormView and associated class implementions
106\end{itemize}