]> git.saurik.com Git - wxWidgets.git/commitdiff
Deprecated classes manual
authorJulian Smart <julian@anthemion.co.uk>
Sun, 30 Mar 2003 21:21:33 +0000 (21:21 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sun, 30 Mar 2003 21:21:33 +0000 (21:21 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19892 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

42 files changed:
contrib/docs/latex/deprecated/category.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/classes.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/expr.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/function.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/manual.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/prop1.bmp [new file with mode: 0644]
contrib/docs/latex/deprecated/prop1.eps [new file with mode: 0644]
contrib/docs/latex/deprecated/prop1.gif [new file with mode: 0644]
contrib/docs/latex/deprecated/prop2.bmp [new file with mode: 0644]
contrib/docs/latex/deprecated/prop2.eps [new file with mode: 0644]
contrib/docs/latex/deprecated/prop2.gif [new file with mode: 0644]
contrib/docs/latex/deprecated/propbfva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propblva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/property.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propflva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propford.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propforf.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propforp.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propforv.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propfovi.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propifva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propilva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proplisd.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proplisf.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proplisp.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proplist.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propliva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proplosv.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proplstv.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propregv.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proprfva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/proprlva.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propsht.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propslv.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propstfv.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propval.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propvald.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/propview.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/tex2rtf.ini [new file with mode: 0644]
contrib/docs/latex/deprecated/topics.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/treelay.tex [new file with mode: 0644]
contrib/docs/latex/deprecated/tresourc.tex [new file with mode: 0644]

diff --git a/contrib/docs/latex/deprecated/category.tex b/contrib/docs/latex/deprecated/category.tex
new file mode 100644 (file)
index 0000000..dbfaf7f
--- /dev/null
@@ -0,0 +1,15 @@
+\chapter{Classes by category}\label{classesbycat}
+\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}%
+
+A classification of deprecated wxWindows classes by category.
+
+{\large {\bf Miscellaneous}}
+
+\twocolwidtha{6cm}
+\begin{twocollist}\itemsep=0pt
+\twocolitem{\helpref{wxTreeLayout}{wxtreelayout}}{Tree layout algorithm}
+\twocolitem{\helpref{wxExpr}{wxexpr}}{A class for parsing WXR (and other) data files}
+\twocolitem{\helpref{wxExprDatabase}{wxexprdatabase}}{A class for storing parsed WXR (and other) data files}
+\end{twocollist}
+
diff --git a/contrib/docs/latex/deprecated/classes.tex b/contrib/docs/latex/deprecated/classes.tex
new file mode 100644 (file)
index 0000000..a41c01c
--- /dev/null
@@ -0,0 +1,35 @@
+\chapter{Alphabetical class reference}\label{classref}
+\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}%
+
+% NB: the files should be in alphabetic order of the classes documented in
+%     them and *not* in alphabetic order of the file names!
+
+\input propbfva.tex
+\input propblva.tex
+\input propflva.tex
+\input propifva.tex
+\input propilva.tex
+\input proplosv.tex
+\input property.tex
+\input propford.tex
+\input propforf.tex
+\input propforp.tex
+\input propforv.tex
+\input propfovi.tex
+\input proplisd.tex
+\input proplisf.tex
+\input proplisp.tex
+\input propliva.tex
+\input proplstv.tex
+\input propsht.tex
+\input propvald.tex
+\input propregv.tex
+\input propval.tex
+\input propview.tex
+\input proprfva.tex
+\input proprlva.tex
+\input propstfv.tex
+\input propslv.tex
+\input treelay.tex
+
diff --git a/contrib/docs/latex/deprecated/expr.tex b/contrib/docs/latex/deprecated/expr.tex
new file mode 100644 (file)
index 0000000..83381df
--- /dev/null
@@ -0,0 +1,496 @@
+\section{\class{wxExpr}}\label{wxexpr}
+
+The {\bf wxExpr} class is the building brick of expressions similar to Prolog
+clauses, or objects. It can represent an expression of type long integer, float, string, word,
+or list, and lists can be nested.
+
+\wxheading{Derived from}
+
+None
+
+\wxheading{Include files}
+
+<wx/wxexpr.h>
+
+\wxheading{See also}
+
+\helpref{wxExpr overview}{exproverview}, \helpref{wxExprDatabase}{wxexprdatabase}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxExpr::wxExpr}\label{wxexprconstr}
+
+\func{}{wxExpr}{\param{const wxString\&}{functor}}
+
+Construct a new clause with this form, supplying the functor name. A clause is an object
+that will appear in the data file, with a list of attribute/value pairs.
+
+\func{}{wxExpr}{\param{wxExprType}{ type}, \param{const wxString\&}{ wordOrString = ``"}}
+
+Construct a new empty list, or a word (will be output with no quotes), or a string, depending on the
+value of {\it type}.
+
+{\it type} can be {\bf wxExprList}, {\bf wxExprWord}, or {\bf wxExprString}. If {\it type} is wxExprList,
+the value of {\it wordOrString} will be ignored.
+
+\func{}{wxExpr}{\param{long}{ value}}
+
+Construct an integer expression.
+
+\func{}{wxExpr}{\param{float}{ value}}
+
+Construct a floating point expression.
+
+\func{}{wxExpr}{\param{wxList* }{value}}
+
+Construct a list expression. The list's nodes' data should
+themselves be {\bf wxExpr}s.
+
+wxExpr no longer uses the {\bf wxList} internally,
+so this constructor turns the list into its internal
+format (assuming a non-nested list) and then deletes the supplied
+list.
+
+\membersection{wxExpr::\destruct{wxExpr}}
+
+\func{}{\destruct{wxExpr}}{\void}
+
+Destructor.
+
+\membersection{wxExpr::AddAttributeValue}\label{wxexpraddattributevalue}
+
+Use these on clauses ONLY. Note that the functions for adding strings
+and words must be differentiated by function name which is why
+they are missing from this group (see \helpref{wxExpr::AddAttributeValueString}{wxexpraddattributevaluestring} and
+\rtfsp\helpref{wxExpr::AddAttributeValueWord}{wxexpraddattributevalueword}).
+
+\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{float }{value}}
+
+Adds an attribute and floating point value pair to the clause.
+
+\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{long }{value}}
+
+Adds an attribute and long integer value pair to the clause.
+
+\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxList* }{value}}
+
+Adds an attribute and list value pair to the clause, converting the list into
+internal form and then deleting {\bf value}. Note that the list should not contain
+nested lists (except if in internal {\bf wxExpr} form.)
+
+\func{void}{AddAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxExpr* }{value}}
+
+Adds an attribute and wxExpr value pair to the clause. Do not delete\rtfsp
+{\it value} once this function has been called.
+
+\membersection{wxExpr::AddAttributeValueString}\label{wxexpraddattributevaluestring}
+
+\func{void}{AddAttributeValueString}{\param{const wxString\&}{ attribute}, \param{const wxString\&}{ value}}
+
+Adds an attribute and string value pair to the clause.
+
+\membersection{wxExpr::AddAttributeValueStringList}\label{wxexpraddattributevaluestringlist}
+
+\func{void}{AddAttributeValueStringList}{\param{const wxString\&}{ attribute}, \param{wxList* }{value}}
+
+Adds an attribute and string list value pair to the clause.
+
+Note that the list passed to this function is a list of strings, NOT a list
+of {\bf wxExpr}s; it gets turned into a list of {\bf wxExpr}s
+automatically. This is a convenience function, since lists of strings
+are often manipulated in C++.
+
+\membersection{wxExpr::AddAttributeValueWord}\label{wxexpraddattributevalueword}
+
+\func{void}{AddAttributeValueWord}{\param{const wxString\&}{ attribute}, \param{const wxString\&}{ value}}
+
+Adds an attribute and word value pair to the clause.
+
+\membersection{wxExpr::Append}\label{wxexprappend}
+
+\func{void}{Append}{\param{wxExpr*}{ value}}
+
+Append the {\bf value} to the end of the list. `this' must be a list.
+
+\membersection{wxExpr::Arg}\label{wxexprarg}
+
+\constfunc{wxExpr* }{Arg}{\param{wxExprType}{ type}, \param{int}{ n}}
+
+Get nth arg of the given clause (starting from 1). NULL is returned if
+the expression is not a clause, or {\it n} is invalid, or the given type
+does not match the actual type. See also \helpref{wxExpr::Nth}{wxexprnth}.
+
+\membersection{wxExpr::Insert}\label{wxexprinsert}
+
+\func{void}{Insert}{\param{wxExpr* }{value}}
+
+Insert the {\bf value} at the start of the list. `this' must be a list.
+
+\membersection{wxExpr::GetAttributeValue}\label{wxexprgetattributevalue}
+
+These functions are the easiest way to retrieve attribute values, by
+passing a pointer to variable. If the attribute is present, the
+variable will be filled with the appropriate value.  If not, the
+existing value is left alone.  This style of retrieving attributes
+makes it easy to set variables to default values before calling these
+functions; no code is necessary to check whether the attribute is
+present or not.
+
+\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxString\&}{ value}}
+
+Retrieve a string (or word) value.
+
+\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{float\& }{value}}
+
+Retrieve a floating point value.
+
+\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{int\& }{value}}
+
+Retrieve an integer value.
+
+\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{long\& }{value}}
+
+Retrieve a long integer value.
+
+\constfunc{bool}{GetAttributeValue}{\param{const wxString\&}{ attribute}, \param{wxExpr**}{ value}}
+
+Retrieve a wxExpr pointer.
+
+\membersection{wxExpr::GetAttributeValueStringList}\label{wxexprgetattributestringlist}
+
+\constfunc{void}{GetAttributeValueStringList}{\param{const wxString\&}{attribute}, \param{wxList* }{value}}
+
+Use this on clauses ONLY. See above for comments on this style of
+attribute value retrieval. This function expects to receive a pointer to
+a new list (created by the calling application); it will append strings
+to the list if the attribute is present in the clause.
+
+\membersection{wxExpr::AttributeValue}\label{wxexprattributevalue}
+
+\constfunc{wxExpr*}{AttributeValue}{\param{const wxString\&}{ word}}
+
+Use this on clauses ONLY. Searches the clause for an attribute
+matching {\it word}, and returns the value associated with it.
+
+\membersection{wxExpr::Copy}\label{wxexprcopy}
+
+\constfunc{wxExpr*}{Copy}{\void}
+
+Recursively copies the expression, allocating new storage space.
+
+\membersection{wxExpr::DeleteAttributeValue}\label{wxexprdeletattributevalue}
+
+\func{void}{DeleteAttributeValue}{\param{const wxString\&}{ attribute}}
+
+Use this on clauses only. Deletes the attribute and its value (if any) from the
+clause.
+
+\membersection{wxExpr::Functor}\label{wxexprfunctor}
+
+\constfunc{wxString}{Functor}{\void}
+
+Use this on clauses only. Returns the clause's functor (object name).
+
+\membersection{wxExpr::GetClientData}\label{wxexprgetclientdata}
+
+\constfunc{wxObject*}{GetClientData}{\void}
+
+Retrieve arbitrary data stored with this clause. This can be useful when
+reading in data for storing a pointer to the C++ object, so when another
+clause makes a reference to this clause, its C++ object can be retrieved.
+See \helpref{wxExpr::SetClientData}{wxexprsetclientdata}.
+
+\membersection{wxExpr::GetFirst}\label{wxexprgetfirst}
+
+\constfunc{wxExpr*}{GetFirst}{\void}
+
+If this is a list expression (or clause), gets the first element in the list.
+
+See also \helpref{wxExpr::GetLast}{wxexprgetlast}, \helpref{wxExpr::GetNext}{wxexprgetnext}, \helpref{wxExpr::Nth}{wxexprnth}.
+
+\membersection{wxExpr::GetLast}\label{wxexprgetlast}
+
+\constfunc{wxExpr*}{GetLast}{\void}
+
+If this is a list expression (or clause), gets the last element in the list.
+
+See also \helpref{wxExpr::GetFirst}{wxexprgetfirst}, \helpref{wxExpr::GetNext}{wxexprgetnext}, \helpref{wxExpr::Nth}{wxexprnth}.
+
+\membersection{wxExpr::GetNext}\label{wxexprgetnext}
+
+\constfunc{wxExpr*}{GetNext}{\void}
+
+If this is a node in a list (any wxExpr may be a node in a list), gets the
+next element in the list.
+
+See also \helpref{wxExpr::GetFirst}{wxexprgetfirst}, \helpref{wxExpr::GetLast}{wxexprgetlast}, \helpref{wxExpr::Nth}{wxexprnth}.
+
+\membersection{wxExpr::IntegerValue}\label{wxexprintegervalue}
+
+\constfunc{long}{IntegerValue}{\void}
+
+Returns the integer value of the expression.
+
+\membersection{wxExpr::Nth}\label{wxexprnth}
+
+\constfunc{wxExpr*}{Nth}{\param{int}{ n}}
+
+Get nth arg of the given list expression (starting from 0). NULL is returned if
+the expression is not a list expression, or {\it n} is invalid. See also \helpref{wxExpr::Arg}{wxexprarg}.
+
+Normally, you would use attribute-value pairs to add and retrieve data
+from objects (clauses) in a data file. However, if the data gets complex,
+you may need to store attribute values as lists, and pick them apart
+yourself.
+
+\membersection{wxExpr::RealValue}\label{wxexprrealvalue}
+
+\constfunc{float}{RealValue}{\void}
+
+Returns the floating point value of the expression.
+
+\membersection{wxExpr::SetClientData}\label{wxexprsetclientdata}
+
+\func{void}{SetClientData}{\param{wxObject *}{data}}
+
+Associate arbitrary data with this clause. This can be useful when
+reading in data for storing a pointer to the C++ object, so when another
+clause makes a reference to this clause, its C++ object can be retrieved.
+See \helpref{wxExpr::GetClientData}{wxexprgetclientdata}.
+
+\membersection{wxExpr::StringValue}\label{wxexprstringvalue}
+
+\constfunc{wxString}{StringValue}{\void}
+
+Returns the string value of the expression.
+
+\membersection{wxExpr::Type}\label{wxexprtype}
+
+\constfunc{wxExprType}{Type}{\void}
+
+Returns the type of the expression. {\bf wxExprType} is defined as follows:
+
+\begin{verbatim}
+typedef enum {
+    wxExprNull,
+    wxExprInteger,
+    wxExprReal,
+    wxExprWord,
+    wxExprString,
+    wxExprList
+} wxExprType;
+\end{verbatim}
+
+\membersection{wxExpr::WordValue}\label{wxexprwordvalue}
+
+\constfunc{wxString}{WordValue}{\void}
+
+Returns the word value of the expression.
+
+\membersection{wxExpr::WriteClause}\label{wxexprwriteprologclause}
+
+\func{void}{WriteClause}{\param{FILE *}{ stream}}
+
+Writes the clause to the given stream in Prolog format. Not normally needed, since
+the whole {\bf wxExprDatabase} will usually be written at once. The format is:
+functor, open parenthesis, list of comma-separated expressions, close parenthesis,
+full stop.
+
+\membersection{wxExpr::WriteExpr}\label{wxexprwriteexpr}
+
+\func{void}{WriteExpr}{\param{FILE *}{ stream}}
+
+Writes the expression (not clause) to the given stream in Prolog
+format. Not normally needed, since the whole {\bf wxExprDatabase} will
+usually be written at once. Lists are written in square bracketed,
+comma-delimited format.
+
+\membersection{Functions and macros}
+
+Below are miscellaneous functions and macros associated with wxExpr objects.
+
+\func{bool}{wxExprIsFunctor}{\param{wxExpr *}{expr}, \param{const wxString\&}{ functor}}
+
+Checks that the functor of {\it expr} is {\it functor}.
+
+\func{void}{wxExprCleanUp}{\void}
+
+Cleans up the wxExpr system (YACC/LEX buffers) to avoid memory-checking warnings as the program exits.
+
+\begin{verbatim}
+#define wxMakeInteger(x) (new wxExpr((long)x))
+#define wxMakeReal(x)    (new wxExpr((float)x))
+#define wxMakeString(x)  (new wxExpr(PrologString, x))
+#define wxMakeWord(x)    (new wxExpr(PrologWord, x))
+#define wxMake(x)        (new wxExpr(x))
+\end{verbatim}
+
+Macros to help make wxExpr objects.
+
+\section{\class{wxExprDatabase}}\label{wxexprdatabase}
+
+The {\bf wxExprDatabase} class represents a database, or list,
+of Prolog-like expressions.  Instances of this class are used for reading,
+writing and creating data files.
+
+\wxheading{Derived from}
+
+\helpref{wxList}{wxlist}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{See also}
+
+\helpref{wxExpr overview}{exproverview}, \helpref{wxExpr}{wxexpr}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxExprDatabase::wxExprDatabase}\label{wxexprdatabaseconstr}
+
+\func{void}{wxExprDatabase}{\param{proioErrorHandler}{ handler = 0}}
+
+Construct a new, unhashed database, with an optional error handler. The
+error handler must be a function returning a bool and taking an integer and a string
+argument. When an error occurs when reading or writing a database, this function is
+called. The error is given as the first argument (currently one of WXEXPR\_ERROR\_GENERAL,
+WXEXPR\_ERROR\_SYNTAX) and an error message is given as the second argument. If false
+is returned by the error handler, processing of the wxExpr operation stops.
+
+Another way of handling errors is simply to call \helpref{wxExprDatabase::GetErrorCount}{wxexprdatabasegeterrorcount} after
+the operation, to check whether errors have occurred, instead of installing an error handler.
+If the error count is more than zero, \helpref{wxExprDatabase::Write}{wxexprdatabasewrite} and
+\rtfsp\helpref{wxExprDatabase::Read}{wxexprdatabaseread} will return false to
+the application.
+
+For example:
+
+\begin{verbatim}
+bool myErrorHandler(int err, chat *msg)
+{
+  if (err == WXEXPR_ERROR_SYNTAX)
+  {
+    wxMessageBox(msg, "Syntax error");
+  }
+  return false;
+}
+
+wxExprDatabase database(myErrorHandler);
+\end{verbatim}
+
+\func{}{wxExprDatabase}{\param{wxExprType}{ type}, \param{const wxString\&}{attribute},
+\rtfsp\param{int}{ size = 500}, \param{proioErrorHandler}{ handler = 0}}
+
+Construct a new database hashed on a combination of the clause functor and
+a named attribute (often an integer identification).
+
+See above for an explanation of the error handler.
+
+\membersection{wxExprDatabase::\destruct{wxExprDatabase}}
+
+\func{}{\destruct{wxExprDatabase}}{\void}
+
+Delete the database and contents.
+
+\membersection{wxExprDatabase::Append}\label{wxexprdatabaseappend}
+
+\func{void}{Append}{\param{wxExpr* }{clause}}
+
+Append a clause to the end of the database. If the database is hashing,
+the functor and a user-specified attribute will be hashed upon, giving the
+option of random access in addition to linear traversal of the database.
+
+\membersection{wxExprDatabase::BeginFind}\label{wxexprdatabasebeginfind}
+
+\func{void}{BeginFind}{\void}
+
+Reset the current position to the start of the database. Subsequent
+\rtfsp\helpref{wxExprDatabase::FindClause}{wxexprdatabasefindclause} calls will move the pointer.
+
+\membersection{wxExprDatabase::ClearDatabase}\label{wxexprdatabasecleardatabase}
+
+\func{void}{ClearDatabase}{\void}
+
+Clears the contents of the database.
+
+\membersection{wxExprDatabase::FindClause}\label{wxexprdatabasefindclause}
+
+Various ways of retrieving clauses from the database. A return
+value of NULL indicates no (more) clauses matching the given criteria.
+Calling the functions repeatedly retrieves more matching clauses, if any.
+
+\func{wxExpr* }{FindClause}{\param{long}{ id}}
+
+Find a clause based on the special ``id'' attribute.
+
+\func{wxExpr* }{FindClause}{\param{const wxString\&}{ attribute}, \param{const wxString\&}{ value}}
+
+Find a clause which has the given attribute set to the given string or word value.
+
+\func{wxExpr*}{FindClause}{\param{const wxString\&}{ attribute}, \param{long}{ value}}
+
+Find a clause which has the given attribute set to the given integer value.
+
+\func{wxExpr*}{FindClause}{\param{const wxString\&}{ attribute}, \param{float}{ value}}
+
+Find a clause which has the given attribute set to the given floating point value.
+
+\membersection{wxExprDatabase::FindClauseByFunctor}\label{wxexprdatabasefindclausebyfunctor}
+
+\func{wxExpr*}{FindClauseByFunctor}{\param{const wxString\&}{ functor}}
+
+Find the next clause with the specified functor.
+
+\membersection{wxExprDatabase::GetErrorCount}\label{wxexprdatabasegeterrorcount}
+
+\constfunc{int}{GetErrorCount}{\void}
+
+Returns the number of errors encountered during the last read or write operation.
+
+\membersection{wxExprDatabase::HashFind}\label{wxexprdatabasehashfind}
+
+\constfunc{wxExpr*}{HashFind}{\param{const wxString\&}{ functor}, \param{long}{ value}}
+
+Finds the clause with the given functor and with the attribute specified
+in the database constructor having the given integer value.
+
+For example,
+
+\begin{verbatim}
+// Hash on a combination of functor and integer "id" attribute when reading in
+wxExprDatabase db(wxExprInteger, "id");
+
+// Read it in
+db.ReadProlog("data");
+
+// Retrieve a clause with specified functor and id
+wxExpr *clause = db.HashFind("node", 24);
+\end{verbatim}
+
+This would retrieve a clause which is written: {\tt node(id = 24, ..., )}.
+
+\func{wxExpr*}{HashFind}{\param{const wxString\&}{ functor}, \param{const wxString\&}{ value}}
+
+Finds the clause with the given functor and with the attribute specified
+in the database constructor having the given string value.
+
+\membersection{wxExprDatabase::Read}\label{wxexprdatabaseread}
+
+\func{bool}{Read}{\param{const wxString\&}{ filename}}
+
+Reads in the given file, returning true if successful.
+
+\membersection{wxExprDatabase::ReadFromString}\label{wxexprdatabasereadfromstring}
+
+\func{bool}{ReadFromString}{\param{const wxString\&}{ buffer}}
+
+Reads a Prolog database from the given string buffer, returning true if
+successful.
+
+\membersection{wxExprDatabase::Write}\label{wxexprdatabasewrite}
+
+\func{bool}{Write}{\param{FILE *}{stream}}
+
+\func{bool}{Write}{\param{const wxString\&}{ filename}}
+
+Writes the database as a Prolog-format file.
+
+
diff --git a/contrib/docs/latex/deprecated/function.tex b/contrib/docs/latex/deprecated/function.tex
new file mode 100644 (file)
index 0000000..69cbd2b
--- /dev/null
@@ -0,0 +1,338 @@
+\chapter{Functions}\label{functions}
+\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}
+
+Deprecated functions and macros defined in wxWindows are described here: you can
+either look up a function using the alphabetical listing of them or find it in
+the corresponding topic.
+
+\section{Alphabetical functions and macros list}
+
+%\helpref{wxGetResource}{wxgetresource}\\
+%\helpref{wxLoadUserResource}{wxloaduserresource}\\
+%\helpref{wxMakeMetafilePlaceable}{wxmakemetafileplaceable}\\
+%\helpref{wxNewId}{wxnewid}\\
+\helpref{wxResourceAddIdentifier}{wxresourceaddidentifier}\\
+\helpref{wxResourceClear}{wxresourceclear}\\
+\helpref{wxResourceCreateBitmap}{wxresourcecreatebitmap}\\
+\helpref{wxResourceCreateIcon}{wxresourcecreateicon}\\
+\helpref{wxResourceCreateMenuBar}{wxresourcecreatemenubar}\\
+\helpref{wxResourceGetIdentifier}{wxresourcegetidentifier}\\
+\helpref{wxResourceParseData}{wxresourcedata}\\
+\helpref{wxResourceParseFile}{wxresourceparsefile}\\
+\helpref{wxResourceParseString}{wxresourceparsestring}\\
+\helpref{wxResourceRegisterBitmapData}{registerbitmapdata}\\
+\helpref{wxResourceRegisterIconData}{wxresourceregistericondata}\\
+%\helpref{wxSetPrinterCommand}{wxsetprintercommand}\\
+%\helpref{wxSetPrinterFile}{wxsetprinterfile}\\
+%\helpref{wxSetPrinterMode}{wxsetprintermode}\\
+%\helpref{wxSetPrinterOptions}{wxsetprinteroptions}\\
+%\helpref{wxSetPrinterOrientation}{wxsetprinterorientation}\\
+%\helpref{wxSetPrinterPreviewCommand}{wxsetprinterpreviewcommand}\\
+%\helpref{wxSetPrinterScaling}{wxsetprinterscaling}\\
+%\helpref{wxSetPrinterTranslation}{wxsetprintertranslation}\\
+
+\section{Printer settings}\label{printersettings}
+
+{\bf NB:} These routines are obsolete and should no longer be used!
+
+The following functions are used to control PostScript printing. Under
+Windows, PostScript output can only be sent to a file.
+
+\wxheading{Include files}
+
+<wx/dcps.h>
+
+\membersection{::wxGetPrinterCommand}\label{wxgetprintercommand}
+
+\func{wxString}{wxGetPrinterCommand}{\void}
+
+Gets the printer command used to print a file. The default is {\tt lpr}.
+
+\membersection{::wxGetPrinterFile}\label{wxgetprinterfile}
+
+\func{wxString}{wxGetPrinterFile}{\void}
+
+Gets the PostScript output filename.
+
+\membersection{::wxGetPrinterMode}\label{wxgetprintermode}
+
+\func{int}{wxGetPrinterMode}{\void}
+
+Gets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
+The default is PS\_PREVIEW.
+
+\membersection{::wxGetPrinterOptions}\label{wxgetprinteroptions}
+
+\func{wxString}{wxGetPrinterOptions}{\void}
+
+Gets the additional options for the print command (e.g. specific printer). The default is nothing.
+
+\membersection{::wxGetPrinterOrientation}\label{wxgetprinterorientation}
+
+\func{int}{wxGetPrinterOrientation}{\void}
+
+Gets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
+
+\membersection{::wxGetPrinterPreviewCommand}\label{wxgetprinterpreviewcommand}
+
+\func{wxString}{wxGetPrinterPreviewCommand}{\void}
+
+Gets the command used to view a PostScript file. The default depends on the platform.
+
+\membersection{::wxGetPrinterScaling}\label{wxgetprinterscaling}
+
+\func{void}{wxGetPrinterScaling}{\param{float *}{x}, \param{float *}{y}}
+
+Gets the scaling factor for PostScript output. The default is 1.0, 1.0.
+
+\membersection{::wxGetPrinterTranslation}\label{wxgetprintertranslation}
+
+\func{void}{wxGetPrinterTranslation}{\param{float *}{x}, \param{float *}{y}}
+
+Gets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
+
+\membersection{::wxSetPrinterCommand}\label{wxsetprintercommand}
+
+\func{void}{wxSetPrinterCommand}{\param{const wxString\& }{command}}
+
+Sets the printer command used to print a file. The default is {\tt lpr}.
+
+\membersection{::wxSetPrinterFile}\label{wxsetprinterfile}
+
+\func{void}{wxSetPrinterFile}{\param{const wxString\& }{filename}}
+
+Sets the PostScript output filename.
+
+\membersection{::wxSetPrinterMode}\label{wxsetprintermode}
+
+\func{void}{wxSetPrinterMode}{\param{int }{mode}}
+
+Sets the printing mode controlling where output is sent (PS\_PREVIEW, PS\_FILE or PS\_PRINTER).
+The default is PS\_PREVIEW.
+
+\membersection{::wxSetPrinterOptions}\label{wxsetprinteroptions}
+
+\func{void}{wxSetPrinterOptions}{\param{const wxString\& }{options}}
+
+Sets the additional options for the print command (e.g. specific printer). The default is nothing.
+
+\membersection{::wxSetPrinterOrientation}\label{wxsetprinterorientation}
+
+\func{void}{wxSetPrinterOrientation}{\param{int}{ orientation}}
+
+Sets the orientation (PS\_PORTRAIT or PS\_LANDSCAPE). The default is PS\_PORTRAIT.
+
+\membersection{::wxSetPrinterPreviewCommand}\label{wxsetprinterpreviewcommand}
+
+\func{void}{wxSetPrinterPreviewCommand}{\param{const wxString\& }{command}}
+
+Sets the command used to view a PostScript file. The default depends on the platform.
+
+\membersection{::wxSetPrinterScaling}\label{wxsetprinterscaling}
+
+\func{void}{wxSetPrinterScaling}{\param{float }{x}, \param{float }{y}}
+
+Sets the scaling factor for PostScript output. The default is 1.0, 1.0.
+
+\membersection{::wxSetPrinterTranslation}\label{wxsetprintertranslation}
+
+\func{void}{wxSetPrinterTranslation}{\param{float }{x}, \param{float }{y}}
+
+Sets the translation (from the top left corner) for PostScript output. The default is 0.0, 0.0.
+
+\section{Resource functions}\label{resourcefunctions}
+
+\overview{Resource functions}{resourceformats}
+
+This section details functions for manipulating wxWindows (.WXR) resource
+files and loading user interface elements from resources.
+
+\normalbox{Please note that this use of the word `resource' is different from that used when talking
+about initialisation file resource reading and writing, using such functions
+as wxWriteResource and wxGetResource. It is just an unfortunate clash of terminology.}
+
+\helponly{For an overview of the wxWindows resource mechanism, see \helpref{the wxWindows resource system}{resourceformats}.}
+
+See also \helpref{wxWindow::LoadFromResource}{wxwindowloadfromresource} for
+loading from resource data.
+
+\membersection{::wxResourceAddIdentifier}\label{wxresourceaddidentifier}
+
+\func{bool}{wxResourceAddIdentifier}{\param{const wxString\& }{name}, \param{int }{value}}
+
+Used for associating a name with an integer identifier (equivalent to dynamically\rtfsp
+{\tt\#}defining a name to an integer). Unlikely to be used by an application except
+perhaps for implementing resource functionality for interpreted languages.
+
+\membersection{::wxResourceClear}\label{wxresourceclear}
+
+\func{void}{wxResourceClear}{\void}
+
+Clears the wxWindows resource table.
+
+\membersection{::wxResourceCreateBitmap}\label{wxresourcecreatebitmap}
+
+\func{wxBitmap *}{wxResourceCreateBitmap}{\param{const wxString\& }{resource}}
+
+Creates a new bitmap from a file, static data, or Windows resource, given a valid
+wxWindows bitmap resource identifier. For example, if the .WXR file contains
+the following:
+
+\begin{verbatim}
+static const wxString\& project_resource = "bitmap(name = 'project_resource',\
+  bitmap = ['project', wxBITMAP_TYPE_BMP_RESOURCE, 'WINDOWS'],\
+  bitmap = ['project.xpm', wxBITMAP_TYPE_XPM, 'X']).";
+\end{verbatim}
+
+then this function can be called as follows:
+
+\begin{verbatim}
+  wxBitmap *bitmap  = wxResourceCreateBitmap("project_resource");
+\end{verbatim}
+
+\membersection{::wxResourceCreateIcon}\label{wxresourcecreateicon}
+
+\func{wxIcon *}{wxResourceCreateIcon}{\param{const wxString\& }{resource}}
+
+Creates a new icon from a file, static data, or Windows resource, given a valid
+wxWindows icon resource identifier. For example, if the .WXR file contains
+the following:
+
+\begin{verbatim}
+static const wxString\& project_resource = "icon(name = 'project_resource',\
+  icon = ['project', wxBITMAP_TYPE_ICO_RESOURCE, 'WINDOWS'],\
+  icon = ['project', wxBITMAP_TYPE_XBM_DATA, 'X']).";
+\end{verbatim}
+
+then this function can be called as follows:
+
+\begin{verbatim}
+  wxIcon *icon = wxResourceCreateIcon("project_resource");
+\end{verbatim}
+
+\membersection{::wxResourceCreateMenuBar}\label{wxresourcecreatemenubar}
+
+\func{wxMenuBar *}{wxResourceCreateMenuBar}{\param{const wxString\& }{resource}}
+
+Creates a new menu bar given a valid wxWindows menubar resource
+identifier. For example, if the .WXR file contains the following:
+
+\begin{verbatim}
+static const wxString\& menuBar11 = "menu(name = 'menuBar11',\
+  menu = \
+  [\
+    ['&File', 1, '', \
+      ['&Open File', 2, 'Open a file'],\
+      ['&Save File', 3, 'Save a file'],\
+      [],\
+      ['E&xit', 4, 'Exit program']\
+    ],\
+    ['&Help', 5, '', \
+      ['&About', 6, 'About this program']\
+    ]\
+  ]).";
+\end{verbatim}
+
+then this function can be called as follows:
+
+\begin{verbatim}
+  wxMenuBar *menuBar = wxResourceCreateMenuBar("menuBar11");
+\end{verbatim}
+
+
+\membersection{::wxResourceGetIdentifier}\label{wxresourcegetidentifier}
+
+\func{int}{wxResourceGetIdentifier}{\param{const wxString\& }{name}}
+
+Used for retrieving the integer value associated with an identifier.
+A zero value indicates that the identifier was not found.
+
+See \helpref{wxResourceAddIdentifier}{wxresourceaddidentifier}.
+
+\membersection{::wxResourceParseData}\label{wxresourcedata}
+
+\func{bool}{wxResourceParseData}{\param{const wxString\& }{resource}, \param{wxResourceTable *}{table = NULL}}
+
+Parses a string containing one or more wxWindows resource objects. If
+the resource objects are global static data that are included into the
+C++ program, then this function must be called for each variable
+containing the resource data, to make it known to wxWindows.
+
+{\it resource} should contain data in the following form:
+
+\begin{verbatim}
+dialog(name = 'dialog1',
+  style = 'wxCAPTION | wxDEFAULT_DIALOG_STYLE',
+  title = 'Test dialog box',
+  x = 312, y = 234, width = 400, height = 300,
+  modal = 0,
+  control = [1000, wxStaticBox, 'Groupbox', '0', 'group6', 5, 4, 380, 262,
+      [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]],
+  control = [1001, wxTextCtrl, '', 'wxTE_MULTILINE', 'text3',
+      156, 126, 200, 70, 'wxWindows is a multi-platform, GUI toolkit.',
+      [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0],
+      [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]]).
+\end{verbatim}
+
+This function will typically be used after including a {\tt .wxr} file into
+a C++ program as follows:
+
+\begin{verbatim}
+#include "dialog1.wxr"
+\end{verbatim}
+
+Each of the contained resources will declare a new C++ variable, and each
+of these variables should be passed to wxResourceParseData.
+
+\membersection{::wxResourceParseFile}\label{wxresourceparsefile}
+
+\func{bool}{wxResourceParseFile}{\param{const wxString\& }{filename}, \param{wxResourceTable *}{table = NULL}}
+
+Parses a file containing one or more wxWindows resource objects
+in C++-compatible syntax. Use this function to dynamically load
+wxWindows resource data.
+
+\membersection{::wxResourceParseString}\label{wxresourceparsestring}
+
+\func{bool}{wxResourceParseString}{\param{char *}{s}, \param{wxResourceTable *}{table = NULL}}
+
+Parses a string containing one or more wxWindows resource objects. If
+the resource objects are global static data that are included into the
+C++ program, then this function must be called for each variable
+containing the resource data, to make it known to wxWindows.
+
+{\it resource} should contain data with the following form:
+
+\begin{verbatim}
+dialog(name = 'dialog1',
+  style = 'wxCAPTION | wxDEFAULT_DIALOG_STYLE',
+  title = 'Test dialog box',
+  x = 312, y = 234, width = 400, height = 300,
+  modal = 0,
+  control = [1000, wxStaticBox, 'Groupbox', '0', 'group6', 5, 4, 380, 262,
+      [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]],
+  control = [1001, wxTextCtrl, '', 'wxTE_MULTILINE', 'text3',
+      156, 126, 200, 70, 'wxWindows is a multi-platform, GUI toolkit.',
+      [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0],
+      [11, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0]]).
+\end{verbatim}
+
+This function will typically be used after calling \helpref{wxLoadUserResource}{wxloaduserresource} to
+load an entire {\tt .wxr file} into a string.
+
+\membersection{::wxResourceRegisterBitmapData}\label{registerbitmapdata}
+
+\func{bool}{wxResourceRegisterBitmapData}{\param{const wxString\& }{name}, \param{char *}{xbm\_data}, \param{int }{width},
+\param{int }{height}, \param{wxResourceTable *}{table = NULL}}
+
+\func{bool}{wxResourceRegisterBitmapData}{\param{const wxString\& }{name}, \param{char **}{xpm\_data}}
+
+Makes {\tt\#}included XBM or XPM bitmap data known to the wxWindows resource system.
+This is required if other resources will use the bitmap data, since otherwise there
+is no connection between names used in resources, and the global bitmap data.
+
+\membersection{::wxResourceRegisterIconData}\label{wxresourceregistericondata}
+
+Another name for \helpref{wxResourceRegisterBitmapData}{registerbitmapdata}.
+
diff --git a/contrib/docs/latex/deprecated/manual.tex b/contrib/docs/latex/deprecated/manual.tex
new file mode 100644 (file)
index 0000000..1fc222c
--- /dev/null
@@ -0,0 +1,649 @@
+\documentstyle[a4,11pt,makeidx,verbatim,texhelp,fancyheadings,palatino]{report}
+% JACS: doesn't make it through Tex2RTF, sorry. I will put it into texhelp.sty
+% since Tex2RTF doesn't parse it.
+% BTW, style MUST be report for it to work for Tex2RTF.
+%KB:
+%\addtolength{\textwidth}{1in}
+%\addtolength{\oddsidemargin}{-0.5in}
+%\addtolength{\topmargin}{-0.5in}
+%\addtolength{\textheight}{1in}
+%\sloppy
+%end of my changes
+\newcommand{\indexit}[1]{#1\index{#1}}%
+\newcommand{\pipe}[0]{$\|$\ }%
+\definecolour{black}{0}{0}{0}%
+\definecolour{cyan}{0}{255}{255}%
+\definecolour{green}{0}{255}{0}%
+\definecolour{magenta}{255}{0}{255}%
+\definecolour{red}{255}{0}{0}%
+\definecolour{blue}{0}{0}{200}%
+\definecolour{yellow}{255}{255}{0}%
+\definecolour{white}{255}{255}{255}%
+%
+\input psbox.tex
+\input ltx.tex
+% Remove this for processing with dvi2ps instead of dvips
+%\special{!/@scaleunit 1 def}
+\parskip=10pt
+\parindent=0pt
+\title{wxWindows Deprecated Classes}
+\winhelponly{\author{by Julian Smart et al
+%\winhelponly{\\$$\image{1cm;0cm}{wxwin.wmf}$$}
+}}
+\winhelpignore{\author{Julian Smart, Robert Roebling, Vadim Zeitlin,
+Robin Dunn, et al}
+\date{April 2003}
+}
+\makeindex
+\begin{document}
+\maketitle
+\pagestyle{fancyplain}
+\bibliographystyle{plain}
+\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}
+\setfooter{\thepage}{}{}{}{}{\thepage}%
+\pagenumbering{roman}
+\tableofcontents
+
+\chapter{Copyright notice}
+\setheader{{\it COPYRIGHT}}{}{}{}{}{{\it COPYRIGHT}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}%
+
+\begin{center}
+Copyright (c) 1992-2002 Julian Smart, Robert Roebling, Vadim Zeitlin and other
+members of the wxWindows team\\
+Portions (c) 1996 Artificial Intelligence Applications Institute\\
+\end{center}
+
+Please also see the wxWindows license files (preamble.txt, lgpl.txt, gpl.txt, license.txt,
+licendoc.txt) for conditions of software and documentation use.
+
+\section*{wxWindows Library License, Version 3}
+
+Copyright (c) 1992-2002 Julian Smart, Robert Roebling, Vadim Zeitlin et al. 
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed. 
+
+\begin{center}
+WXWINDOWS LIBRARY LICENSE\\
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 
+\end{center}
+
+This library is free software; you can redistribute it and/or modify it 
+under the terms of the GNU Library General Public License as published by 
+the Free Software Foundation; either version 2 of the License, or (at 
+your option) any later version. 
+
+This library is distributed in the hope that it will be useful, but 
+WITHOUT ANY WARRANTY; without even the implied warranty of 
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library 
+General Public License for more details. 
+
+You should have received a copy of the GNU Library General Public License 
+along with this software, usually in a file named COPYING.LIB. If not, 
+write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
+Boston, MA~02111-1307 USA. 
+
+EXCEPTION NOTICE 
+
+1. As a special exception, the copyright holders of this library give 
+permission for additional uses of the text contained in this release of 
+the library as licensed under the wxWindows Library License, applying 
+either version 3 of the License, or (at your option) any later version of 
+the License as published by the copyright holders of version 3 of the 
+License document. 
+
+2. The exception is that you may create binary object code versions of any 
+works using this library or based on this library, and use, copy, modify, 
+link and distribute such binary object code files unrestricted under terms 
+of your choice. 
+
+3. If you copy code from files distributed under the terms of the GNU 
+General Public License or the GNU Library General Public License into a 
+copy of this library, as this license permits, the exception does not 
+apply to the code that you add in this way. To avoid misleading anyone as 
+to the status of such modified files, you must delete this exception 
+notice from such code and/or adjust the licensing conditions notice
+accordingly. 
+
+4. If you write modifications of your own for this library, it is your 
+choice whether to permit this exception to apply to your modifications. 
+If you do not wish that, you must delete the exception notice from such 
+code and/or adjust the licensing conditions notice accordingly. 
+
+\section*{GNU Library General Public License, Version 2}
+
+Copyright (C) 1991 Free Software Foundation, Inc.
+675 Mass Ave, Cambridge, MA 02139, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+\wxheading{Preamble}
+
+The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software -- to make sure the software is free for all its users.
+
+This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+\begin{center}
+               GNU LIBRARY GENERAL PUBLIC LICENSE\\
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+\end{center}
+
+0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+\begin{indented}{1cm}
+a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices
+stating that you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no
+charge to all third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a
+table of data to be supplied by an application program that uses
+the facility, other than as an argument passed when the facility
+is invoked, then you must make a good faith effort to ensure that,
+in the event an application does not supply such function or
+table, the facility still operates, and performs whatever part of
+its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has
+a purpose that is entirely well-defined independent of the
+application. Therefore, Subsection 2d requires that any
+application-supplied function or table used by this function must
+be optional: if the application does not supply it, the square
+root function must still compute square roots.) 
+\end{indented}
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+\begin{indented}{1cm}
+a) Accompany the work with the complete corresponding
+machine-readable source code for the Library including whatever
+changes were used in the work (which must be distributed under
+Sections 1 and 2 above); and, if the work is an executable linked
+with the Library, with the complete machine-readable "work that
+uses the Library", as object code and/or source code, so that the
+user can modify the Library and then relink to produce a modified
+executable containing the modified Library. (It is understood
+that the user who changes the contents of definitions files in the
+Library will not necessarily be able to recompile the application
+to use the modified definitions.)
+
+b) Accompany the work with a written offer, valid for at
+least three years, to give the same user the materials
+specified in Subsection 6a, above, for a charge no more
+than the cost of performing this distribution.
+
+c) If distribution of the work is made by offering access to copy
+from a designated place, offer equivalent access to copy the above
+specified materials from the same place.
+
+d) Verify that the user has already received a copy of these
+materials or that you have already sent this user a copy.
+\end{indented}
+
+For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+\begin{indented}{1cm}
+a) Accompany the combined library with a copy of the same work
+based on the Library, uncombined with any other library
+facilities. This must be distributed under the terms of the
+Sections above.
+
+b) Give prominent notice with the combined library of the fact
+that part of it is a work based on the Library, and explaining
+where to find the accompanying uncombined form of the same work.
+\end{indented}
+
+8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+\begin{center}
+NO WARRANTY
+\end{center}
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+
+\begin{center}
+END OF TERMS AND CONDITIONS
+\end{center}
+
+\wxheading{Appendix: How to Apply These Terms to Your New Libraries}
+
+If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+\footnotesize{
+\begin{verbatim}
+<one line to give the library's name and a brief idea of what it does.>
+Copyright (C) <year> <name of author>
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Library General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+Library General Public License for more details.
+
+You should have received a copy of the GNU Library General Public
+License along with this library; if not, write to the Free
+Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+\end{verbatim}
+}
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+\footnotesize{
+\begin{verbatim}
+Yoyodyne, Inc., hereby disclaims all copyright interest in the
+library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+<signature of Ty Coon>, 1 April 1990
+Ty Coon, President of Vice
+\end{verbatim} 
+}
+
+That's all there is to it!
+
+\chapter{Introduction}\label{introduction}
+\pagenumbering{arabic}%
+\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}%
+
+This manual contains documentation for classes that are
+now obsolete.
+
+\input classes.tex
+\input function.tex
+\input category.tex
+\input topics.tex
+\input proplist.tex
+
+\newpage
+
+% Note: In RTF, the \printindex must come before the
+% change of header/footer, since the \printindex inserts
+% the RTF \sect command which divides one chapter from
+% the next.
+\rtfonly{\printindex
+\addcontentsline{toc}{chapter}{Index}
+\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}
+}
+% In Latex, it must be this way around (I think)
+\latexonly{\addcontentsline{toc}{chapter}{Index}
+\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}
+\printindex
+}
+
+\end{document}
diff --git a/contrib/docs/latex/deprecated/prop1.bmp b/contrib/docs/latex/deprecated/prop1.bmp
new file mode 100644 (file)
index 0000000..92c6bee
Binary files /dev/null and b/contrib/docs/latex/deprecated/prop1.bmp differ
diff --git a/contrib/docs/latex/deprecated/prop1.eps b/contrib/docs/latex/deprecated/prop1.eps
new file mode 100644 (file)
index 0000000..67425b2
--- /dev/null
@@ -0,0 +1,539 @@
+%!PS-Adobe-2.0 EPSF-2.0\r
+%%Title: prop1.eps\r
+%%Creator: XV Version 2.20  Rev: 4/24/92  -  by John Bradley\r
+%%BoundingBox: 167 292 445 500\r
+%%Pages: 1\r
+%%DocumentFonts:\r
+%%EndComments\r
+%%EndProlog\r
+\r
+%%Page: 1 1\r
+\r
+% remember original state\r
+/origstate save def\r
+\r
+% build a temporary dictionary\r
+20 dict begin\r
+\r
+% lower left corner\r
+167 292 translate\r
+\r
+% size of image (on paper, in 1/72inch coords)\r
+278 208 scale\r
+\r
+% define 'colorimage' if it isn't defined\r
+%   ('colortogray' and 'mergeprocs' come from xwd2ps\r
+%     via xgrab)\r
+/colorimage where   % do we know about 'colorimage'?\r
+  { pop }           % yes: pop off the 'dict' returned\r
+  {                 % no:  define one\r
+    /colortogray {  % define an RGB->I function\r
+      /rgbdata exch store    % call input 'rgbdata'\r
+      rgbdata length 3 idiv\r
+      /npixls exch store\r
+      /rgbindx 0 store\r
+      /grays npixls string store  % str to hold the result\r
+      0 1 npixls 1 sub {\r
+        grays exch\r
+        rgbdata rgbindx       get 20 mul    % Red\r
+        rgbdata rgbindx 1 add get 32 mul    % Green\r
+        rgbdata rgbindx 2 add get 12 mul    % Blue\r
+        add add 64 idiv      % I = .5G + .31R + .18B\r
+        put\r
+        /rgbindx rgbindx 3 add store\r
+      } for\r
+      grays\r
+    } bind def\r
+\r
+    % Utility procedure for colorimage operator.\r
+    % This procedure takes two procedures off the\r
+    % stack and merges them into a single procedure.\r
+\r
+    /mergeprocs { % def\r
+      dup length\r
+      3 -1 roll\r
+      dup\r
+      length\r
+      dup\r
+      5 1 roll\r
+      3 -1 roll\r
+      add\r
+      array cvx\r
+      dup\r
+      3 -1 roll\r
+      0 exch\r
+      putinterval\r
+      dup\r
+      4 2 roll\r
+      putinterval\r
+    } bind def\r
+\r
+    /colorimage { % def\r
+      pop pop     % remove 'false 3' operands\r
+      {colortogray} mergeprocs\r
+      image\r
+    } bind def\r
+  } ifelse          % end of 'false' case\r
+\r
+\r
+\r
+% define the colormap\r
+/cmap 42 string def\r
+\r
+\r
+% load up the colormap\r
+currentfile cmap readhexstring\r
+000000 bf0000 00bf00 bfbf00 0000bf 00bfbf c0c0c0 808080 ff0000 00ff00 \r
+ffff00 0000ff 00ffff ffffff \r
+pop pop   % lose return values from readhexstring\r
+\r
+\r
+% rlecmapimage expects to have 'w h bits matrix' on stack\r
+/rlecmapimage {\r
+  /buffer 1 string def\r
+  /rgbval 3 string def\r
+  /block  384 string def\r
+\r
+  % proc to read a block from file, and return RGB data\r
+  { currentfile buffer readhexstring pop\r
+    /bcount exch 0 get store\r
+    bcount 128 ge\r
+    {  % it's a non-run block\r
+      0 1 bcount 128 sub\r
+      { currentfile buffer readhexstring pop pop\r
+\r
+        % look up value in color map\r
+        /rgbval cmap buffer 0 get 3 mul 3 getinterval store\r
+\r
+        % and put it in position i*3 in block\r
+        block exch 3 mul rgbval putinterval\r
+      } for\r
+      block  0  bcount 127 sub 3 mul  getinterval\r
+    }\r
+\r
+    { % else it's a run block\r
+      currentfile buffer readhexstring pop pop\r
+\r
+      % look up value in colormap\r
+      /rgbval cmap buffer 0 get 3 mul 3 getinterval store\r
+\r
+      0 1 bcount { block exch 3 mul rgbval putinterval } for\r
+\r
+      block 0 bcount 1 add 3 mul getinterval\r
+    } ifelse\r
+  } % end of proc\r
+  false 3 colorimage\r
+} bind def\r
+\r
+\r
+278 208 8                      % dimensions of data\r
+[278 0 0 -208 0 208]           % mapping matrix\r
+rlecmapimage\r
+\r
+7f067f0614060000\r
+81060d7f0d7f0d110d810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d068106047f047f040c040106810700\r
+82060d068106048204060d820d060783070d0702010203098102047f047a040106810700\r
+\r
+82060d068106048704060b060001020781070283020702098109028102047f0446040e0d\r
+81000d0d0d81000481040d0d0d81000481040682060700\r
+82060d0681060482040806810600820002078507020902070201028109047f044604810d\r
+060b068307000d060b068207000482040d060b068207000481040682060700\r
+82060d0681060481040685060800040307820702098409020702098109040104050d2d04\r
+030d0204010d1a04050d6604810d060b068307000d06810600070001068207000482040d\r
+060b068207000481040682060700\r
+82060d068106048704060b0604000a0789070209020702070209040104010d0204010d1d\r
+04010d0b04010d0104010d0104010d1204010d0704010d1004010d5504810d060b068307\r
+000d06810600070001068207000482040d06010601000306010001068207000481040682\r
+060700\r
+82060d068106048204070681060001000107010286070209020702040104010d0204010d\r
+1d04010d0b04010d0504010d1204010d0704010d1004010d5504810d060b068307000d06\r
+820600060506810006830607000482040d06020601000106010002068207000481040682\r
+060700\r
+82060d0681060485040d0607060d010d8407020002090109820200040104010d0204010d\r
+81040d010d0104030d0104040d0204030d0104020d81040d010d81040d820d040d810d04\r
+0304010d0504040d0204030d0204030d0104020d0604010d0404030d0204020d0104020d\r
+5404810d060b068307000d06820600060506810006830607000482040d06030603000306\r
+8207000481040682060700\r
+82060d068106048104070507010006020204050d0104010d0104010d0104010d81040d81\r
+0d0481040d820d040d810d0481040d820d040d810d0481040d810d0481040d820d040d81\r
+0d040404030d0204020d81040d820d040d810d0481040d820d040d810d0481040d820d04\r
+0d810d040604010d0304010d0104010d81040d820d040d820d040d810d045404810d060b\r
+068307000d06820600060506810006830607000482040d06040601000406820700048104\r
+0682060700\r
+82060d068106048104050505010006030204010d0504010d0104010d0104010d81040d81\r
+0d0481040d820d040d040d81040d810d0481040d810d0481040d820d040d810d04070401\r
+0d0104010d0104010d81040d040d81040d040d81040d810d040604010d0304050d010401\r
+0d0204010d5504810d060b068307000d06820600060506810006830607000482040d0603\r
+06030003068207000481040682060700\r
+82060d0681060481040c010c8205080c830c05030a020a81030a810a040104010d050401\r
+0d0104010d0104010d81040d810d0481040d820d040d810d040304010d0104010d010401\r
+0d81040d810d040704010d0104010d0104010d81040d810d040304010d0404010d070401\r
+0d0304010d0604010d0104010d5504810d060b068307000d068206000605068100068306\r
+07000482040d06020601000106010002068207000481040682060700\r
+82060d068106048c040c05070507050c05030a030a840a03000a040104010d0504010d01\r
+04010d0104010d81040d810d0481040d820d040d810d0481040d820d040d810d0481040d\r
+810d040104020d0504010d0104010d0104010d0104010d81040d810d0481040d820d040d\r
+810d0481040d820d040d810d040604010d0304010d0104010d81040d820d040d820d040d\r
+810d045404810d060106050003068307000d06820600060506810006830607000482040d\r
+06010601000306010001068207000481040682060700\r
+82060d0681060482040c08020886070c05030a030a010a82030a040104010d0504010d02\r
+04030d0104040d0204030d0104010d0204010d0104010d0704030d0204010d0104010d01\r
+04030d0204030d0204010d0604010d0404030d0204020d0204010d5404810d0601060500\r
+03068307000d06810600070001068207000482040d060b068207000481040682060700\r
+82060d0681060482040c080208010c8205030a810a0384030a030a041404010d1404010d\r
+7f041804810d060b068307000d060b068207000482040d060b0682070004810406820607\r
+00\r
+82060d0681060482040c080308850c05030a030a010a82000a041404010d1204020d7f04\r
+1904810d070c0782000d070c0781000482040d070c0781000481040682060700\r
+82060d0681060483040c05080208850c05030a030a810a0382030a047f0446041f000104\r
+0f0001040106810700\r
+82060d0681060481040c050c8205030a050a7f047b040106810700\r
+82060d068106047f047f040c040106810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d0637067f073907810d061c06810700\r
+82060d06030616000306160001068107007f00360082060d0681060015000406810700\r
+82060d06020681000d140d820700068206000d140d8507000607000d7f0d350d84060d06\r
+000d140d820700060206810700\r
+82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d\r
+84060d06000d130d01078100060206810700\r
+82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d\r
+84060d06000d810d06110601078100060206810700\r
+82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d\r
+84060d06000d810d06110601078100060206810700\r
+82060d06020682000d0603068100060606810006030601078100068306000d0612060107\r
+84000607000d820d000d7f0d320d84060d06000d810d06110601078100060206810700\r
+82060d06020682000d06030683000600060306810006040601078100068306000d061206\r
+010785000607000d0081000d7f0d320d84060d06000d810d061106010781000602068107\r
+00\r
+82060d06020682000d06040683000600060106810006050601078100068306000d060b06\r
+8100060406010785000607000d000100810d0081000d820d000d810d0081000d810d0002\r
+007f0d220d84060d06000d810d06110601078100060206810700\r
+82060d06020682000d06050685000600060006060601078100068306000d060a06830006\r
+00060306010785000607000d0081000d810d0082000d000100810d0082000d0081000d81\r
+0d0081000d7f0d200d84060d06000d810d06110601078100060206810700\r
+82060d06020682000d0606068300060006070601078100068306000d0609068300060006\r
+0406010785000607000d0081000d810d0082000d000100810d0082000d0081000d810d00\r
+81000d7f0d200d84060d06000d810d06110601078100060206810700\r
+82060d06020682000d0607068300060006060601078100068306000d0604068100060106\r
+83000600060506010785000607000d0081000d010d0200810d000100010d0100010d0100\r
+7f0d210d84060d06000d810d06110601078100060206810700\r
+82060d06020682000d06060685000600060006050601078100068306000d060306870006\r
+0006000600060606010785000607000d0081000d010d0200810d000100010d0100010d01\r
+007f0d210d84060d06000d810d06110601078100060206810700\r
+82060d06020682000d06050681000601068300060006040601078100068306000d060406\r
+850006000600060706010784000607000d810d0081000d810d0081000d010d0100020d03\r
+007f0d220d84060d06000d810d0603060100810600820006008100060406010781000602\r
+06810700\r
+82060d06020682000d06040681000603068300060006030601078100068306000d060506\r
+83000600060806010784000607000d7f0d350d84060d06000d810d060306010081060082\r
+000600810006040601078100060206810700\r
+82060d06020682000d060306010005060100040601078100068306000d06060681000609\r
+06010784000607000d7f0d350d84060d06000d810d06110601078100060206810700\r
+82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d\r
+84060d06000d810d06110601078100060206810700\r
+82060d06020682000d06120601078100068306000d061206010784000607000d7f0d350d\r
+84060d06000d810d06110601078100060206810700\r
+82060d06020682000d0714078100068306000d07140784000607000d7f0d350d85060d06\r
+000d0714078100060206810700\r
+82060d06020682000d0714078100068306000d07140784000607000d7f0d350d84060d06\r
+000715078100060206810700\r
+82060d06030616000306160001068207000d7f0d350d82060d0681060015000406810700\r
+\r
+82060d0637068107067f063706810d061c06810700\r
+82060d0637067f0d3a0d1d06810700\r
+82060d0601067f077f070a07810d060106810700\r
+82060d0601068107007f007f00070082060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d010d0300010d0400020d03007f0d720d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0081000d\r
+810d0081000d7f0d700d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0004007f\r
+0d710d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0081000d\r
+7f0d740d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0082000d0081000d810d0082000d0081000d\r
+810d0081000d7f0d700d82060d060106810700\r
+82060d0601068207000d010d0300010d0100010d0100010d03007f0d720d82060d060106\r
+810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d060106ff0700040a040a040a040a040a040a040a040a040a040a040a040a040a04\r
+0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04\r
+0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04\r
+0a040a040a040a040a040a040a040a040a040a040a040a040a040aff040a040a040a040a\r
+040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a\r
+040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a\r
+040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a\r
+040a040a040a040a040a040a8c040a040a040a040a040a060d060106810700\r
+82060d0601068307000a047f047f04050482060d060106810700\r
+82060d060106820700047f047f040504830a060d060106810700\r
+82060d0601068307000a0482040d047f047f04020482060d060106810700\r
+82060d0601068207000481040d810d047f047f040104830a060d060106810700\r
+82060d0601068307000a0d020d81040d810d0482040d0481040d810d0481040d020d7f04\r
+720482060d060106810700\r
+82060d0601068207000481040d810d0481040d820d040d010d81040d820d040d810d0481\r
+040d810d047f046f04830a060d060106810700\r
+82060d0601068407000a040d810d0481040d820d040d010d81040d820d040d810d048104\r
+0d810d047f04700482060d060106810700\r
+82060d0601068207000481040d810d040104020d81040d010d0104010d0104010d7f0470\r
+04830a060d060106810700\r
+82060d0601068407000a040d810d040104020d81040d010d0104010d0104010d7f047104\r
+82060d060106810700\r
+82060d060106820700040104010d0104010d0204010d0204030d7f047104830a060d0601\r
+06810700\r
+82060d0601068307000a047f047f04050482060d060106810700\r
+82060d060106820700047f047f040504830a060d060106810700\r
+82060d060106ff07000a040a040a040a040a040a040a040a040a040a040a040a040a040a\r
+040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a\r
+040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a\r
+040a040a040a040a040a040a040a040a040a040a040a040a040a04ff0a040a040a040a04\r
+0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04\r
+0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04\r
+0a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a040a04\r
+0a040a040a040a040a040a048c0a040a040a040a040a04060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d010d81000d810d0081000d7f0d7e0d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0081000d7f0d7e0d82060d060106810700\r
+82060d0601068307000d000200810d000300010d0300010d0300020d03007f0d690d8206\r
+0d060106810700\r
+82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0100\r
+010d0100810d0081000d810d0081000d7f0d670d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0500\r
+810d0004007f0d680d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0100\r
+040d01007f0d6c0d82060d060106810700\r
+82060d0601068207000d810d0081000d810d0081000d810d0082000d0081000d010d0100\r
+010d0100810d0081000d810d0081000d7f0d670d82060d060106810700\r
+82060d0601068207000d010d0100810d0081000d810d0082000d0081000d020d0300020d\r
+03007f0d690d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068207000d7f0d7f0d060d82060d060106810700\r
+82060d0601068107067f067f060806810d060106810700\r
+82060d0601067f0d7f0d0b0d0206810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d0601067f077f070b070206810700\r
+82060d0601068107007f007f000800810d060106810700\r
+82060d0601068207000d7f0d760d0e060100810d060106810700\r
+82060d0601068207000d7f0d760d81060d0b0d81070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d1c0d0100120d01000e0d81000d6b0d0400400d82060d060a0681\r
+070082000d060106810700\r
+82060d0601068207000d010d81000d190d81000d120d81000d7b0d85000d000d000d3f0d\r
+82060d060a0681070082000d060106810700\r
+82060d0601068207000d810d000300030d0200010d0100010d0100020d0100810d008400\r
+0d000d0081000d090d0300010d82000d0081000d020d0200020d0200040d0300020d0200\r
+5f0d81000d020d0100810d0082000d0081000d810d0081000d010d02002c0d82060d0603\r
+06810006040681070082000d060106810700\r
+82060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d820d\r
+000d810d0081000d810d0081000d820d000d070d81000d010d81000d810d0081000d820d\r
+000d820d000d010d81000d020d81000d020d81000d010d81000d820d000d010d81000d5d\r
+0d81000d030d0100030d81000d010d81000d820d000d010d81000d2a0d82060d06020602\r
+00040681070082000d060106810700\r
+82060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d820d\r
+000d010d81000d820d000d010d81000d070d81000d040d81000d010d81000d820d000d01\r
+0d81000d020d81000d020d81000d040d04005e0d81000d030d81000d030d81000d010d81\r
+000d810d0003002b0d82060d0601060400030681070082000d060106810700\r
+82060d0601068207000d010d81000d010d81000d820d000d010d81000d820d000d810d00\r
+81000d820d000d010d81000d820d000d010d81000d070d81000d040d81000d010d81000d\r
+820d000d010d81000d020d81000d020d81000d040d81000d610d81000d030d81000d030d\r
+81000d810d0081000d820d000d2e0d82060d068106000500020681070082000d06010681\r
+0700\r
+82060d0601068207000d020d0200030d0200030d0100810d0081000d810d000200810d00\r
+0100810d000100080d0300810d000100810d000100010d0200020d0400020d0300020d03\r
+005d0d0200020d0300030d0100810d0081000d810d0002002b0d82060d060a0681070082\r
+000d060106810700\r
+82060d0601068207000d1a0d81000d7f0d590d82060d060a0681070082000d0601068107\r
+00\r
+82060d0601068207000d170d02007f0d5b0d82060d060a0681070082000d060106810700\r
+\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d8106070c070100810d060106810700\r
+82060d0601068207000d7f0d760d1000810d060106810700\r
+82060d0601068207000d7f0d760d92060d060d060d060d060d060d060d060d000d060106\r
+810700\r
+82060d0601068207000d7f0d770d91060d060d060d060d060d060d060d06000d06010681\r
+0700\r
+82060d0601068207000d030d81000d7f0d2d0d81000d020d0300390d92060d060d060d06\r
+0d060d060d060d060d000d060106810700\r
+82060d0601068207000d7f0d320d0100030d81000d3c0d91060d060d060d060d060d060d\r
+060d06000d060106810700\r
+82060d0601068207000d010d0200040d0200010d0100810d0081000d7f0d1c0d83000d00\r
+0d020d81000d3b0d92060d060d060d060d060d060d060d060d000d060106810700\r
+82060d0601068207000d030d81000d020d81000d010d81000d810d0081000d820d000d7f\r
+0d1a0d81000d820d000d020d02003b0d91060d060d060d060d060d060d060d06000d0601\r
+06810700\r
+82060d0601068207000d030d81000d030d0300010d81000d010d81000d7f0d1a0d040005\r
+0d81000d380d92060d060d060d060d060d060d060d060d000d060106810700\r
+82060d0601068207000d030d81000d020d81000d010d81000d820d000d010d81000d7f0d\r
+1d0d81000d010d81000d010d81000d380d0e060100810d060106810700\r
+82060d0601068207000d010d0400010d0800810d0001007f0d1c0d0200020d02003a0d81\r
+060d0b0d81070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d810d0081000d060d81000d030d0100040d01007f0d170d020003\r
+0d0300390d82060d060a0681070082000d060106810700\r
+82060d0601068207000d010d81000d0d0d81000d040d81000d7f0d150d81000d010d8100\r
+0d010d81000d3b0d82060d060a0681070082000d060106810700\r
+82060d0601068207000d010d82000d0081000d010d0200050d81000d040d81000d7f0d18\r
+0d81000d020d81000d3b0d82060d060a0681070082000d060106810700\r
+82060d0601068207000d010d0100010d81000d020d81000d040d81000d040d81000d7f0d\r
+170d81000d030d02003a0d82060d060a0681070082000d060106810700\r
+82060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d81000d7f\r
+0d160d81000d070d81000d380d82060d060a0681070082000d060106810700\r
+82060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d81000d7f\r
+0d150d81000d040d81000d010d81000d380d82060d060a0681070082000d060106810700\r
+\r
+82060d0601068207000d810d000300020d0400010d0400010d04007f0d140d0400020d02\r
+003a0d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d030d81000d0a0d0100050d81000d7f0d5b0d82060d060a068107\r
+0082000d060106810700\r
+82060d0601068207000d110d81000d7f0d620d82060d060a0681070082000d0601068107\r
+00\r
+82060d0601068207000d010d0300010d0100010d0100030d81000d020d0200040d020001\r
+0d0100810d0081000d7f0d070d0200010d0100810d0081000d020d0200330d82060d060a\r
+0681070082000d060106810700\r
+82060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d81000d02\r
+0d81000d010d81000d810d0081000d820d000d7f0d050d81000d010d81000d810d008100\r
+0d820d000d820d000d010d81000d310d82060d060a0681070082000d060106810700\r
+82060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d81000d03\r
+0d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d010d81000d810d\r
+000300320d82060d060a0681070082000d060106810700\r
+82060d0601068207000d040d81000d010d81000d810d0081000d020d81000d040d81000d\r
+020d81000d010d81000d820d000d010d81000d7f0d050d81000d010d81000d820d000d01\r
+0d81000d820d000d350d82060d060a0681070082000d060106810700\r
+82060d0601068207000d040d81000d020d0100810d0082000d000300010d0400010d0800\r
+810d0001007f0d060d0200010d0200810d000100010d0300320d82060d060a0681070082\r
+000d060106810700\r
+82060d0601068207000d040d81000d7f0d6f0d82060d060a0681070082000d0601068107\r
+00\r
+82060d0601068207000d010d02007f0d710d82060d060a0681070082000d060106810700\r
+\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d7f0d760d82060d060a0681070082000d060106810700\r
+82060d0601068207000d810d0081000d060d81000d7f0d690d82060d060a068107008200\r
+0d060106810700\r
+82060d0601068207000d010d81000d0b0d81000d7f0d640d82060d060a0681070082000d\r
+060106810700\r
+82060d0601068207000d010d82000d0081000d010d0200020d0400010d0200820d000d02\r
+0d0200010d0100810d0081000d7f0d050d0100810d0081000d020d0200010d0100810d00\r
+81000d020d02002c0d82060d060a0681070082000d060106810700\r
+82060d0601068207000d010d0100010d81000d020d81000d020d81000d040d85000d000d\r
+000d820d000d010d81000d810d0081000d820d000d7f0d050d0100010d81000d820d000d\r
+010d81000d810d0081000d820d000d820d000d010d81000d2a0d82060d060a0681070082\r
+000d060106810700\r
+82060d0601068207000d010d81000d010d81000d020d81000d020d81000d040d85000d00\r
+0d000d010d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d010d81\r
+000d820d000d010d81000d810d0003002b0d82060d060a0681070082000d060106810700\r
+\r
+82060d0601068207000d010d81000d010d81000d020d81000d020d81000d010d81000d86\r
+0d000d000d000d820d000d010d81000d820d000d010d81000d7f0d050d81000d010d8100\r
+0d820d000d010d81000d820d000d010d81000d820d000d2e0d82060d060a068107008200\r
+0d060106810700\r
+82060d0601068207000d810d000300020d0400020d0200010d0600810d000400810d0002\r
+007f0d060d0200810d000100010d0200010d0200810d000100010d03002b0d8106070c07\r
+0100810d060106810700\r
+82060d0601068207000d240d81000d7f0d4f0d1000810d060106810700\r
+82060d0601068207000d230d02007f0d4f0d0e060100810d060106810700\r
+82060d0601068207000d7f0d760d81060d0b0d81070082000d060106810700\r
+82060d060106820700047f04760482060d060a0681070082000d060106810700\r
+82060d060106820700047f04760482060d060a0681070082000d060106810700\r
+82060d060106820700047f04760482060d060a0681070082000d060106810700\r
+82060d060106820700047f04760482060d060a0681070082000d060106810700\r
+82060d060106820700043404810d041304010d7f04290482060d06810600050002068107\r
+0082000d060106810700\r
+82060d060106820700041d04810d042b04810d046204810d04430482060d060106040003\r
+0681070082000d060106810700\r
+82060d060106820700040204030d0204020d0104010d81040d810d040204030d81040d03\r
+0d0204010d81040d810d040104020d0204020d0204010d81040d810d040204020d030401\r
+0d82040d046104040d0104020d81040d010d0104020d330482060d060206020004068107\r
+0082000d060106810700\r
+82060d060106820700040104810d040104810d0482040d040104810d0481040d810d0482\r
+040d0482040d040404810d040504010d0304810d040104810d040204810d040204010d01\r
+04810d0482040d040104810d0482040d0481040d810d046204810d040404810d04010481\r
+0d0482040d040104810d04310482060d060306810006040681070082000d060106810700\r
+\r
+82060d060106820700040104810d040404810d040104810d0482040d040104810d040104\r
+020d0204810d040504810d040404030d0304810d040204810d040104810d0481040d030d\r
+0104810d040104810d046204810d040404850d040d040d0482040d040104810d04310482\r
+060d060a0681070082000d060106810700\r
+82060d060106820700040104810d040404810d040104810d0482040d040104810d040404\r
+810d0482040d040104810d040104810d040304810d040104810d040204810d040204810d\r
+040104810d0482040d040404810d040104810d046204810d040104810d0486040d040d04\r
+0d0482040d040104810d04310482060d060a0681070082000d060106810700\r
+82060d060106820700040204030d0204020d0104020d81040d010d81040d020d0304020d\r
+0204030d0204050d81040d030d81040d010d81040d010d0104030d0204040d6304020d03\r
+04830d040d040204020d330482060d060a0681070082000d060106810700\r
+82060d060106820700047f04760482060d060a0681070082000d060106810700\r
+82060d060106820700047f0476048106070c070100810d060106810700\r
+82060d060106820700047f0476041000810d060106810700\r
+82060d0601068107067f0677061000810d060106810700\r
+82060d0601067f0d7f0d0b0d0206810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+82060d067f067f061006810700\r
+8106077f077f0712070000\r
+7f007f001500\r
+\r
+%\r
+% Compression made this file 6.27% of the uncompressed size.\r
+%\r
+\r
+\r
+showpage\r
+\r
+% stop using temporary dictionary\r
+end\r
+\r
+% restore original state\r
+origstate restore\r
+\r
+%%Trailer\r
diff --git a/contrib/docs/latex/deprecated/prop1.gif b/contrib/docs/latex/deprecated/prop1.gif
new file mode 100644 (file)
index 0000000..a3d724d
Binary files /dev/null and b/contrib/docs/latex/deprecated/prop1.gif differ
diff --git a/contrib/docs/latex/deprecated/prop2.bmp b/contrib/docs/latex/deprecated/prop2.bmp
new file mode 100644 (file)
index 0000000..d909f41
Binary files /dev/null and b/contrib/docs/latex/deprecated/prop2.bmp differ
diff --git a/contrib/docs/latex/deprecated/prop2.eps b/contrib/docs/latex/deprecated/prop2.eps
new file mode 100644 (file)
index 0000000..b233dfc
--- /dev/null
@@ -0,0 +1,664 @@
+%!PS-Adobe-2.0 EPSF-2.0\r
+%%Title: prop2.eps\r
+%%Creator: XV Version 2.20  Rev: 4/24/92  -  by John Bradley\r
+%%BoundingBox: 167 221 466 500\r
+%%Pages: 1\r
+%%DocumentFonts:\r
+%%EndComments\r
+%%EndProlog\r
+\r
+%%Page: 1 1\r
+\r
+% remember original state\r
+/origstate save def\r
+\r
+% build a temporary dictionary\r
+20 dict begin\r
+\r
+% lower left corner\r
+167 221 translate\r
+\r
+% size of image (on paper, in 1/72inch coords)\r
+299 279 scale\r
+\r
+% define 'colorimage' if it isn't defined\r
+%   ('colortogray' and 'mergeprocs' come from xwd2ps\r
+%     via xgrab)\r
+/colorimage where   % do we know about 'colorimage'?\r
+  { pop }           % yes: pop off the 'dict' returned\r
+  {                 % no:  define one\r
+    /colortogray {  % define an RGB->I function\r
+      /rgbdata exch store    % call input 'rgbdata'\r
+      rgbdata length 3 idiv\r
+      /npixls exch store\r
+      /rgbindx 0 store\r
+      /grays npixls string store  % str to hold the result\r
+      0 1 npixls 1 sub {\r
+        grays exch\r
+        rgbdata rgbindx       get 20 mul    % Red\r
+        rgbdata rgbindx 1 add get 32 mul    % Green\r
+        rgbdata rgbindx 2 add get 12 mul    % Blue\r
+        add add 64 idiv      % I = .5G + .31R + .18B\r
+        put\r
+        /rgbindx rgbindx 3 add store\r
+      } for\r
+      grays\r
+    } bind def\r
+\r
+    % Utility procedure for colorimage operator.\r
+    % This procedure takes two procedures off the\r
+    % stack and merges them into a single procedure.\r
+\r
+    /mergeprocs { % def\r
+      dup length\r
+      3 -1 roll\r
+      dup\r
+      length\r
+      dup\r
+      5 1 roll\r
+      3 -1 roll\r
+      add\r
+      array cvx\r
+      dup\r
+      3 -1 roll\r
+      0 exch\r
+      putinterval\r
+      dup\r
+      4 2 roll\r
+      putinterval\r
+    } bind def\r
+\r
+    /colorimage { % def\r
+      pop pop     % remove 'false 3' operands\r
+      {colortogray} mergeprocs\r
+      image\r
+    } bind def\r
+  } ifelse          % end of 'false' case\r
+\r
+\r
+\r
+% define the colormap\r
+/cmap 42 string def\r
+\r
+\r
+% load up the colormap\r
+currentfile cmap readhexstring\r
+000000 bf0000 00bf00 bfbf00 0000bf 00bfbf c0c0c0 808080 ff0000 00ff00 \r
+ffff00 0000ff 00ffff ffffff \r
+pop pop   % lose return values from readhexstring\r
+\r
+\r
+% rlecmapimage expects to have 'w h bits matrix' on stack\r
+/rlecmapimage {\r
+  /buffer 1 string def\r
+  /rgbval 3 string def\r
+  /block  384 string def\r
+\r
+  % proc to read a block from file, and return RGB data\r
+  { currentfile buffer readhexstring pop\r
+    /bcount exch 0 get store\r
+    bcount 128 ge\r
+    {  % it's a non-run block\r
+      0 1 bcount 128 sub\r
+      { currentfile buffer readhexstring pop pop\r
+\r
+        % look up value in color map\r
+        /rgbval cmap buffer 0 get 3 mul 3 getinterval store\r
+\r
+        % and put it in position i*3 in block\r
+        block exch 3 mul rgbval putinterval\r
+      } for\r
+      block  0  bcount 127 sub 3 mul  getinterval\r
+    }\r
+\r
+    { % else it's a run block\r
+      currentfile buffer readhexstring pop pop\r
+\r
+      % look up value in colormap\r
+      /rgbval cmap buffer 0 get 3 mul 3 getinterval store\r
+\r
+      0 1 bcount { block exch 3 mul rgbval putinterval } for\r
+\r
+      block 0 bcount 1 add 3 mul getinterval\r
+    } ifelse\r
+  } % end of proc\r
+  false 3 colorimage\r
+} bind def\r
+\r
+\r
+299 279 8                      % dimensions of data\r
+[299 0 0 -279 0 279]           % mapping matrix\r
+rlecmapimage\r
+\r
+7f0003007f072607\r
+07077f067f0618068100070707\r
+070781060d7f0d7f0d150d820700070707\r
+070782060d067f067f061406820700070707\r
+070782060d067f067f061406820700070707\r
+070782060d068106077f077f0710070106820700070707\r
+070782060d068106078207060d820d060783070d0702010203098102077f077e07010682\r
+0700070707\r
+070782060d068106078707060b060001020781070283020702098109028102077f074a07\r
+0e0d81000d0d0d81000781070d0d0d81000781070683060700070707\r
+070782060d0681060782070806810600820002078507020902070201028109077f074a07\r
+810d060b068307000d060b068207000782070d060b068207000781070683060700070707\r
+\r
+070782060d06810607810706850608000403078207020984090207020981090701070506\r
+2d070306020701061a0705066a07810d060b068307000d06810600070001068207000782\r
+070d060b068207000781070683060700070707\r
+070782060d068106078707060b0604000a07890702090207020702090701070106020701\r
+061d0701060b07010601070106010701061207010607070106100701065907810d060b06\r
+8307000d06810600070001068207000782070d0601060100030601000106820700078107\r
+0683060700070707\r
+070782060d0681060701070106020001070102860702090207020701070106020701061d\r
+0701060b070106050701061207010607070106100701065907810d060b068307000d0682\r
+0600060506810006830607000782070d0602060100010601000206820700078107068306\r
+0700070707\r
+070782060d0681060785070d0607060d010d840702000209010982020007010701060207\r
+010681070601060107030601070406020703060107020681070601068107068206070681\r
+060703070106050704060207030602070306010702060607010604070306020702060107\r
+02065807810d060b068307000d06820600060506810006830607000782070d0603060300\r
+03068207000781070683060700070707\r
+070782060d06810607070701000602020705060107010601070106010701068107068106\r
+078107068206070681060781070682060706810607810706810607810706820607068106\r
+070407030602070206810706820607068106078107068206070681060781070682060706\r
+81060706070106030701060107010681070682060706820607068106075807810d060b06\r
+8307000d06820600060506810006830607000782070d0604060100040682070007810706\r
+83060700070707\r
+070782060d06810607810705050501000603020701060507010601070106010701068107\r
+068106078107068206070604068107068106078107068106078107068206070681060707\r
+070106010701060107010681070604068107060406810706810607060701060307050601\r
+070106020701065907810d060b068307000d06820600060506810006830607000782070d\r
+060306030003068207000781070683060700070707\r
+070782060d0681060781070c010c8205080c830c05030a020a81030a810a070107010605\r
+070106010701060107010681070681060781070682060706810607030701060107010601\r
+070106810706810607070701060107010601070106810706810607030701060407010607\r
+0701060307010606070106010701065907810d060b068307000d06820600060506810006\r
+830607000782070d06020601000106010002068207000781070683060700070707\r
+070782060d068106078c070c05070507050c05030a030a840a03000a0701070106050701\r
+060107010601070106810706810607810706820607068106078107068206070681060781\r
+070681060701070206050701060107010601070106010701068107068106078107068206\r
+070681060781070682060706810607060701060307010601070106810706820607068206\r
+07068106075807810d060106050003068307000d06820600060506810006830607000782\r
+070d06010601000306010001068207000781070683060700070707\r
+070782060d0681060782070c08020886070c05030a030a010a82030a0701070106050701\r
+060207030601070406020703060107010602070106010701060707030602070106010701\r
+06010703060207030602070106060701060407030602070206020701065807810d060106\r
+050003068307000d06810600070001068207000782070d060b0682070007810706830607\r
+00070707\r
+070782060d0681060782070c080208010c8205030a810a0384030a030a07140701061407\r
+01067f071c07810d060b068307000d060b068207000782070d060b068207000781070683\r
+060700070707\r
+070782060d0681060782070c080308850c05030a030a010a82000a071407010612070206\r
+7f071d07810d070c0782000d070c0781000782070d070c07810007810706830607000707\r
+07\r
+070782060d0681060783070c05080208850c05030a030a810a0382030a077f074a071f00\r
+01070f0001070106820700070707\r
+070782060d0681060781070c050c8205030a050a7f077f070106820700070707\r
+070782060d068106077f077f0710070106820700070707\r
+070782060d067f067f061406820700070707\r
+070782060d067f067f061406820700070707\r
+070782060d0637067f073d07810d061c06820700070707\r
+070782060d06030616000306160001068107007f003a0082060d06810600150004068207\r
+00070707\r
+070782060d06020681000d140d820700068206000d140d8507000607000d7f0d390d8406\r
+0d06000d140d820700060206820700070707\r
+070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d\r
+390d84060d06000d130d01078100060206820700070707\r
+070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d\r
+390d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d\r
+390d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d0603068100060606810006030601078100068306000d061206\r
+010784000607000d010d0100020d0200020d0200020d02007f0d230d84060d06000d810d\r
+06110601078100060206820700070707\r
+070782060d06020682000d060306020003060200040601078100068306000d060b068100\r
+060406010784000607000d810d000100010d0100810d0082000d0082000d0082000d0082\r
+000d0081000d7f0d210d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d060406020001060200050601078100068306000d060a060200\r
+0406010785000607000d000200010d0100810d0082000d0082000d0082000d0082000d00\r
+81000d7f0d210d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d0605060500060601078100068306000d060906030004060107\r
+87000607000d000d0081000d810d0082000d0082000d0082000d0082000d0082000d0081\r
+000d7f0d210d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d0606060300070601078100068306000d060806030005060107\r
+84000607000d010d0100010d0100810d0082000d0082000d0082000d0082000d0081000d\r
+7f0d210d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d0606060300070601078100068306000d060306010001060300\r
+0606010784000607000d010d0100010d0100810d0082000d0082000d0082000d0082000d\r
+0081000d7f0d210d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d0605060500060601078100068306000d060306060007060107\r
+84000607000d010d0100010d0100810d0082000d0082000d0082000d0082000d0081000d\r
+7f0d210d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d060406020001060200050601078100068306000d0604060400\r
+0806010784000607000d010d0100020d0200020d0200020d02007f0d230d84060d06000d\r
+810d060306010781060782070607810706040601078100060206820700070707\r
+070782060d06020682000d060306020003060200040601078100068306000d0605060200\r
+0906010784000607000d7f0d390d84060d06000d810d0603060107810607820706078107\r
+06040601078100060206820700070707\r
+070782060d06020682000d060306010005060100040601078100068306000d0606068100\r
+060906010784000607000d7f0d390d84060d06000d810d06110601078100060206820700\r
+070707\r
+070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d\r
+390d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d06120601078100068306000d061206010784000607000d7f0d\r
+390d84060d06000d810d06110601078100060206820700070707\r
+070782060d06020682000d0714078100068306000d07140784000607000d7f0d390d8506\r
+0d06000d0714078100060206820700070707\r
+070782060d06020682000d0714078100068306000d07140784000607000d7f0d390d8406\r
+0d06000715078100060206820700070707\r
+070782060d06030616000306160001068207000d7f0d390d82060d068106001500040682\r
+0700070707\r
+070782060d0637068107067f063b06810d061c06820700070707\r
+070782060d0637067f0d3e0d1d06820700070707\r
+070782060d0601067f077f070e07810d060106820700070707\r
+070782060d0601068107007f007f000b0082060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d040d0100120d01007f0d150d0200550d82060d0601068207\r
+00070707\r
+070782060d0601068207000d030d81000d140d81000d7f0d130d81000d010d81000d530d\r
+82060d060106820700070707\r
+070782060d0601068207000d020d0300010d0100810d0081000d010d0200030d0100820d\r
+000d7f0d130d81000d010d81000d530d82060d060106820700070707\r
+070782060d0601068207000d030d81000d030d0100030d81000d010d81000d820d000d81\r
+0d0081000d7f0d130d81000d010d81000d530d82060d060106820700070707\r
+070782060d0601068207000d030d81000d030d81000d030d0400010d81000d010d81000d\r
+7f0d130d81000d010d81000d530d82060d060106820700070707\r
+070782060d0601068207000d030d81000d030d81000d030d81000d040d81000d010d8100\r
+0d7f0d130d81000d010d81000d530d82060d060106820700070707\r
+070782060d0601068207000d020d0300010d0300030d0300020d04007f0d140d0200550d\r
+82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d1c0d0100120d01000e0d81000d6b0d0400090d0100480d82\r
+060d060106820700070707\r
+070782060d0601068207000d010d81000d190d81000d120d81000d7c0d81000d820d000d\r
+090d81000d470d82060d060106820700070707\r
+070782060d0601068207000d810d000300030d0200010d0100010d0100020d0100810d00\r
+84000d000d0081000d090d0300010d82000d0081000d020d0200020d0200040d0300020d\r
+02005e0d83000d000d020d0200040d81000d030d0300020d0200390d82060d0601068207\r
+00070707\r
+070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d\r
+820d000d810d0081000d810d0081000d820d000d070d81000d010d81000d810d0081000d\r
+820d000d820d000d010d81000d020d81000d020d81000d010d81000d820d000d010d8100\r
+0d5c0d0200020d81000d010d81000d020d81000d020d81000d040d81000d010d81000d37\r
+0d82060d060106820700070707\r
+070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d\r
+820d000d010d81000d820d000d010d81000d070d81000d040d81000d010d81000d820d00\r
+0d010d81000d020d81000d020d81000d040d04005d0d83000d000d020d0300030d81000d\r
+030d0200020d0400380d82060d060106820700070707\r
+070782060d0601068207000d010d81000d010d81000d820d000d010d81000d820d000d81\r
+0d0081000d820d000d010d81000d820d000d010d81000d070d81000d040d81000d010d81\r
+000d820d000d010d81000d020d81000d020d81000d040d81000d600d81000d030d81000d\r
+010d81000d020d81000d060d81000d820d000d3b0d82060d060106820700070707\r
+070782060d0601068207000d020d0200030d0200030d0100810d0081000d810d00020081\r
+0d000100810d000100080d0300810d000100810d000100010d0200020d0400020d030002\r
+0d03005c0d0200030d0500810d000300010d0300030d0300380d82060d06010682070007\r
+0707\r
+070782060d0601068207000d1a0d81000d7f0d6d0d82060d060106820700070707\r
+070782060d0601068207000d170d02007f0d6f0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d060106820700047f047f040a0482060d060106820700070707\r
+070782060d060106820700047f047f040a0482060d060106820700070707\r
+070782060d060106820700047f047f040a0482060d060106820700070707\r
+070782060d060106820700047f047f040a0482060d060106820700070707\r
+070782060d060106820700040304810d047f043204010d4f0482060d0601068207000707\r
+07\r
+070782060d060106820700047f043904810d044e0482060d060106820700070707\r
+070782060d060106820700040104020d0404020d0104010d81040d810d047f042404810d\r
+044e0482060d060106820700070707\r
+070782060d060106820700040304810d040204810d040104810d0481040d810d0482040d\r
+047f041a04040d0304810d044e0482060d060106820700070707\r
+070782060d060106820700040304810d040304030d0104810d040104810d047f04230481\r
+0d044e0482060d060106820700070707\r
+070782060d060106820700040304810d040204810d040104810d0482040d040104810d04\r
+7f042304810d044e0482060d060106820700070707\r
+070782060d060106820700040104040d0104080d81040d010d7f042104040d4d0482060d\r
+060106820700070707\r
+070782060d060106820700047f047f040a0482060d060106820700070707\r
+070782060d060106820700047f047f040a0482060d060106820700070707\r
+070782060d060106820700047f047f040a0482060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d810d0081000d060d81000d030d0100040d01007f0d170d02\r
+00030d03004d0d82060d060106820700070707\r
+070782060d0601068207000d010d81000d0d0d81000d040d81000d7f0d150d81000d010d\r
+81000d010d81000d4f0d82060d060106820700070707\r
+070782060d0601068207000d010d82000d0081000d010d0200050d81000d040d81000d7f\r
+0d180d81000d020d81000d4f0d82060d060106820700070707\r
+070782060d0601068207000d010d0100010d81000d020d81000d040d81000d040d81000d\r
+7f0d170d81000d030d02004e0d82060d060106820700070707\r
+070782060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d8100\r
+0d7f0d160d81000d070d81000d4c0d82060d060106820700070707\r
+070782060d0601068207000d010d81000d010d81000d020d81000d040d81000d040d8100\r
+0d7f0d150d81000d040d81000d010d81000d4c0d82060d060106820700070707\r
+070782060d0601068207000d810d000300020d0400010d0400010d04007f0d140d040002\r
+0d02004e0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d030d81000d0a0d0100050d81000d7f0d6f0d82060d060106\r
+820700070707\r
+070782060d0601068207000d110d81000d7f0d760d82060d060106820700070707\r
+070782060d0601068207000d010d0300010d0100010d0100030d81000d020d0200040d02\r
+00010d0100810d0081000d7f0d070d0200010d0100810d0081000d020d0200470d82060d\r
+060106820700070707\r
+070782060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d8100\r
+0d020d81000d010d81000d810d0081000d820d000d7f0d050d81000d010d81000d810d00\r
+81000d820d000d820d000d010d81000d450d82060d060106820700070707\r
+070782060d0601068207000d040d81000d010d81000d010d81000d020d81000d040d8100\r
+0d030d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d010d81000d\r
+810d000300460d82060d060106820700070707\r
+070782060d0601068207000d040d81000d010d81000d810d0081000d020d81000d040d81\r
+000d020d81000d010d81000d820d000d010d81000d7f0d050d81000d010d81000d820d00\r
+0d010d81000d820d000d490d82060d060106820700070707\r
+070782060d0601068207000d040d81000d020d0100810d0082000d000300010d0400010d\r
+0800810d0001007f0d060d0200010d0200810d000100010d0300460d82060d0601068207\r
+00070707\r
+070782060d0601068207000d040d81000d7f0d7f0d030d82060d060106820700070707\r
+070782060d0601068207000d010d02007f0d7f0d050d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d810d0081000d060d81000d7f0d7d0d82060d060106820700\r
+070707\r
+070782060d0601068207000d010d81000d0b0d81000d7f0d780d82060d06010682070007\r
+0707\r
+070782060d0601068207000d010d82000d0081000d010d0200020d0400010d0200820d00\r
+0d020d0200010d0100810d0081000d7f0d050d0100810d0081000d020d0200010d010081\r
+0d0081000d020d0200400d82060d060106820700070707\r
+070782060d0601068207000d010d0100010d81000d020d81000d020d81000d040d85000d\r
+000d000d820d000d010d81000d810d0081000d820d000d7f0d050d0100010d81000d820d\r
+000d010d81000d810d0081000d820d000d820d000d010d81000d3e0d82060d0601068207\r
+00070707\r
+070782060d0601068207000d010d81000d010d81000d020d81000d020d81000d040d8500\r
+0d000d000d010d0300010d81000d010d81000d7f0d050d81000d010d81000d820d000d01\r
+0d81000d820d000d010d81000d810d0003003f0d82060d060106820700070707\r
+070782060d0601068207000d010d81000d010d81000d020d81000d020d81000d010d8100\r
+0d860d000d000d000d820d000d010d81000d820d000d010d81000d7f0d050d81000d010d\r
+81000d820d000d010d81000d820d000d010d81000d820d000d420d82060d060106820700\r
+070707\r
+070782060d0601068207000d810d000300020d0400020d0200010d0600810d000400810d\r
+0002007f0d060d0200810d000100010d0200010d0200810d000100010d03003f0d82060d\r
+060106820700070707\r
+070782060d0601068207000d240d81000d7f0d630d82060d060106820700070707\r
+070782060d0601068207000d230d02007f0d630d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d340d81000d130d01007f0d3d0d82060d0601068207000707\r
+07\r
+070782060d0601068207000d1d0d81000d2b0d81000d620d81000d570d82060d06010682\r
+0700070707\r
+070782060d0601068207000d020d0300020d0200010d0100810d0081000d020d0300810d\r
+000300020d0100810d0081000d010d0200020d0200020d0100810d0081000d020d020003\r
+0d0100820d000d610d0400010d0200810d000100010d0200470d82060d06010682070007\r
+0707\r
+070782060d0601068207000d010d81000d010d81000d820d000d010d81000d810d008100\r
+0d820d000d820d000d040d81000d050d0100030d81000d010d81000d020d81000d020d01\r
+00010d81000d820d000d010d81000d820d000d810d0081000d620d81000d040d81000d01\r
+0d81000d820d000d010d81000d450d82060d060106820700070707\r
+070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d\r
+010d0200020d81000d050d81000d040d0300030d81000d020d81000d010d81000d810d00\r
+0300010d81000d010d81000d620d81000d040d85000d000d000d820d000d010d81000d45\r
+0d82060d060106820700070707\r
+070782060d0601068207000d010d81000d040d81000d010d81000d820d000d010d81000d\r
+040d81000d820d000d010d81000d010d81000d030d81000d010d81000d020d81000d020d\r
+81000d010d81000d820d000d040d81000d010d81000d620d81000d010d81000d860d000d\r
+000d000d820d000d010d81000d450d82060d060106820700070707\r
+070782060d0601068207000d020d0300020d0200010d0200810d000100810d000200030d\r
+0200020d0300020d0500810d000300810d000100810d000100010d0300020d0400630d02\r
+00030d83000d000d020d0200470d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+070782060d0601068207000d7f0d7f0d0a0d82060d060106820700070707\r
+7f077f0726078100070107\r
+03077f0d7f0d210d820700070107\r
+0307820d06077f077f071c07840d060700070107\r
+0307830d0607047f047f041c0483060700070107\r
+0307830d0607047f047f041c0483060700070107\r
+0307830d0607047f047f040a040e0d8100048404060700070107\r
+0307830d0607047f047f040a04810d060b06820700048404060700070107\r
+0307830d06070481040d040d3a04010d7f044604810d060b068207000484040607000701\r
+07\r
+0307830d06070481040d810d040104010d1d04010d1904010d7f044604810d0601060107\r
+030601070106820700048404060700070107\r
+0307830d06070481040d810d040104010d1d04010d1904010d7f044604810d0602060107\r
+01060107010d83060700048404060700070107\r
+0307830d06070481040d810d040104010d81040d010d0104030d0104040d0204030d0104\r
+020d81040d010d81040d820d040d810d040304010d0104010d0104030d0104010d81040d\r
+810d0481040d810d0481040d020d0604030d0104020d81040d010d0104030d0104020d7f\r
+041a04810d0603060307010d0106820700048404060700070107\r
+0307830d06070481040d040d0104010d0104010d0104010d81040d810d0481040d820d04\r
+0d810d0481040d820d040d810d0481040d810d0481040d820d040d810d040304010d0104\r
+010d0404010d81040d820d040d810d0481040d820d040d810d0481040d810d040304010d\r
+0104010d81040d810d0481040d810d0481040d810d0481040d820d040d810d047f041a04\r
+810d0604060107010d0206820700048404060700070107\r
+0307830d06070481040d810d040404010d0104010d0104010d81040d810d0481040d820d\r
+040d040d81040d810d0481040d810d0481040d820d040d810d040404030d0204040d8104\r
+0d820d040d810d0481040d820d040d040d0404050d81040d810d0481040d810d0481040d\r
+810d0481040d820d040d810d047f041a04810d0603060307030682070004840406070007\r
+0107\r
+0307830d06070481040d810d040404010d0104010d0104010d81040d810d0481040d820d\r
+040d810d040304010d0104010d0104010d81040d810d040404030d0104010d0104010d81\r
+040d820d040d810d0481040d820d040d810d040704010d0404010d0104010d0104010d01\r
+04010d81040d810d047f041a04810d0602060107010d0107020682070004840406070007\r
+0107\r
+0307830d06070481040d810d040404010d0104010d0104010d81040d810d0481040d820d\r
+040d810d0481040d820d040d810d0481040d810d040104020d0704010d0204010d010401\r
+0d81040d820d040d820d040d010d81040d810d0481040d810d040304010d0104010d8104\r
+0d810d0481040d810d0481040d810d0481040d820d040d810d047f041a04810d06010601\r
+07010d010601070106820700048404060700070107\r
+0307830d06070481040d810d040404010d0204030d0104040d0204030d0104010d020401\r
+0d0104010d0804010d0304040d81040d810d0481040d030d0104030d0604030d0104010d\r
+0104010d0204030d0104010d7f041b04810d060206010d0306010d830607000484040607\r
+00070107\r
+0307830d0607041304010d1404010d7f045d04810d060b06820700048404060700070107\r
+\r
+0307830d0607041304010d1204020d7f045e04810d070c078100048404060700070107\r
+0307830d0607047f047f040a040f00010483060700070107\r
+0307830d0607047f047f041c0483060700070107\r
+0307830d0607047f047f041c0483060700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d06170602037f067f060406820700070107\r
+0307810d06160681030a830a0600067f067f060206820700070107\r
+0307810d06150681030a020a83060007067f067f0683060700070107\r
+0307810d06150681030a030a8100078107067f067f06820700070107\r
+0307810d06140681030a040a820600078107067f067e06820700070107\r
+0307810d06140681030a050a8100078107067f067e06820700070107\r
+0307810d06130681030a060a820600078107067f067d06820700070107\r
+0307810d06130681030a070a8100078107067f067d06820700070107\r
+0307810d06120681030a080a820600078107067f067c06820700070107\r
+0307810d06120681030a010a810600010081060a010a8100078107067f067c0682070007\r
+0107\r
+0307810d06110681030a020a0400020a820600078107067f067b06820700070107\r
+0307810d06110681030a020a0400030a8100078107061606810006030681000605068100\r
+0627068100061b0681000620068100062c06040001060200140681000602060400010602\r
+0001068100060a06820700070107\r
+0307810d06100681030a030a0400030a8206000781070615068100060306810006050681\r
+000621068100060306810006230681000618068100060906810006200681000603068100\r
+060106810006120681000602068100060306810006010683000600060a06820700070107\r
+\r
+0307810d06100681030a030a0400040a8100078107061606810006010681000606068100\r
+062106810006030681000623068100061806810006090681000620068100060306810006\r
+0106810006120681000602068100060306810006010683000600060a06820700070107\r
+0307810d060f0681030a040a0400040a8206000781070615068100060106810006010602\r
+000106830006000601068100068106000100040602008106008100068206000601068100\r
+068106008100068106008100060206030002060200050602000106820006008100060306\r
+840006000600810006810600810006810600010002060300010602000106010003060300\r
+020602000106010082060006820600068206000681060001000206020001068200060081\r
+000606060300010681000601068100060306020001068200060081000601060300030603\r
+000106810006010683000600060a06820700070107\r
+0307810d060f0681030a040a810300010081030a040a8100078107061506810006010681\r
+000604068500060006000601068300060006010681000602068100068206000684060006\r
+000601068300060006840600060006030681000601068300060006010681000606068200\r
+060081000682060006020682000600810006840600060006820600060106830006000601\r
+068300060006010683000600060306810006010683000600060106830006000682060006\r
+820600068406000600060106830006000601068200060081000682060006050681000601\r
+068300060006010681000606068200060081000684060006000601068100060206810006\r
+01068300060006010683000600060a06820700070107\r
+0307810d060e0681030a050a810600010081060a040a8206000781070615068300060006\r
+020603008406000600060106820006000300030681000682060006840600060006010681\r
+000682060006010681000603068100060106820006000300040603008206000601068100\r
+060206830006000601068300060006810600030082060006010682000600030082060006\r
+030681000601068200060003008206000689060006000600060006000300810600030082\r
+060006010681000602060100040683000600060106810006030603008206000601068300\r
+060006010681000606068300060006010683000600060a06820700070107\r
+0307810d060e0681030a060a0200070a8100078107061506830006000601068100060106\r
+850006000600060106830006000606068100068206000684060006000601068100060106\r
+810006820600060306810006010683000600060606810006010683000600060106810006\r
+020683000600060106830006000682060006030681000601068300060006030681000603\r
+068100060106830006000603068100068a06000600060006000600060306810006030681\r
+000601068100060906830006000601068100060206810006010683000600060106830006\r
+0006010681000606068300060006010683000600060a06820700070107\r
+0307810d060d0681030a070a830300030a060a8206000781070615068100060206810006\r
+010685000600060006810600830006000601068100060206810006820600068406000600\r
+068106008300060006840600060006030681000601068300060006010681000602068100\r
+060106830006000601068100060206830006000601068300060006820600060106830006\r
+000601068300060006010683000600060306810006010683000600060106830006000601\r
+068100060106810006820600060106830006000601068300060006010681000605068100\r
+060106830006000601068100060206810006010683000600060106830006000601068100\r
+0602068100060106830006000601068100060c06820700070107\r
+0307810d060d0681030a070a830600060a070a8100078107061506810006030603008206\r
+000681060083000600068106000100040681000682060006820600068106008300060006\r
+810600810006010681000602060300020602000506030082060006010681000602068300\r
+060006010681000682060006810600010002060300010602000106810006030603000206\r
+020002068100068206000601068100060106020002060200010681000601068100060606\r
+020002060200050603008206000601068100068106000200040602000206020001068100\r
+060a06820700070107\r
+0307810d060c0681030a090a81000a080a820600078107067c0681000677068207000701\r
+07\r
+0307810d060c0681030a150a810007810706780603007906820700070107\r
+0307810d060b0681030a090a8106008200060a070a820600078107067f06750682070007\r
+0107\r
+0307810d060b0681030a090a0300090a8100078107067f067506820700070107\r
+0307810d060a0681030a0a0a0300090a820600078107067f067406820700070107\r
+0307810d060a0681030a0a0a8106008200060a090a8100078107067f0674068207000701\r
+07\r
+0307810d060a0681030a190a81000701077f067406820700070107\r
+0307810d060a0681030a180a8206000701077f067406820700070107\r
+0307810d060b0681030a160a8206000702077f067406820700070107\r
+0307810d060c06810300160004077f067406820700070107\r
+0307810d060e061a077f067506820700070107\r
+0307810d060f0618077f067606820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d066b0648006a06820700070107\r
+0307810d066a064a006906820700070107\r
+0307810d066a060100450d8107008100066806820700070107\r
+0307810d066a060100440d010701006906820700070107\r
+0307810d066a060100010d18069100060006000600060006000600060006000617060107\r
+01006906820700070107\r
+0307810d066a060100010d4206010701006906820700070107\r
+0307810d066a060100010d18068100060d068100061706010701006906820700070107\r
+0307810d066a060100010d1b060300020681000601068100061906010701006906820700\r
+070107\r
+0307810d066a060100010d18068300060006020681000682060006820600068206000617\r
+06010701006906820700070107\r
+0307810d066a060100010d1a0681000602068100068406000600061b0601070100690682\r
+0700070107\r
+0307810d066a060100010d18068300060006020681000681060081000602068100061706\r
+010701006906820700070107\r
+0307810d066a060100010d1a0681000602068100068106008100061c0601070100690682\r
+0700070107\r
+0307810d066a060100010d18068300060006020681000684060006000601068100061706\r
+010701006906820700070107\r
+0307810d066a060100010d1a06810006020681000682060006820600061a060107010069\r
+06820700070107\r
+0307810d066a060100010d18068300060006020681000682060006010683000600061706\r
+010701006906820700070107\r
+0307810d066a060100010d1b060300020681000602068100061806010701006906820700\r
+070107\r
+0307810d066a060100010d18068100060d068100061706010701006906820700070107\r
+0307810d066a060100010d4206010701006906820700070107\r
+0307810d066a060100010d18069100060006000600060006000600060006000617060107\r
+01006906820700070107\r
+0307810d066a060100810d07440701006906820700070107\r
+0307810d066a060100460701006906820700070107\r
+0307810d066a064a006906820700070107\r
+0307810d066b0648006a06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+0307810d067f067f061f06820700070107\r
+7f077f0726078100070107\r
+02077f007f0024000207\r
+7f077f072a07\r
+7f077f072a07\r
+7f077f072a07\r
+7f077f072a07\r
+7f077f072a07\r
+7f077f072a07\r
+\r
+%\r
+% Compression made this file 5.68% of the uncompressed size.\r
+%\r
+\r
+\r
+showpage\r
+\r
+% stop using temporary dictionary\r
+end\r
+\r
+% restore original state\r
+origstate restore\r
+\r
+%%Trailer\r
diff --git a/contrib/docs/latex/deprecated/prop2.gif b/contrib/docs/latex/deprecated/prop2.gif
new file mode 100644 (file)
index 0000000..764f988
Binary files /dev/null and b/contrib/docs/latex/deprecated/prop2.gif differ
diff --git a/contrib/docs/latex/deprecated/propbfva.tex b/contrib/docs/latex/deprecated/propbfva.tex
new file mode 100644 (file)
index 0000000..a091c49
--- /dev/null
@@ -0,0 +1,17 @@
+\section{\class{wxBoolFormValidator}}\label{wxboolformvalidator}
+
+This class validates a boolean value for a \helpref{form view}{wxpropertyformview}.
+The associated control must be a wxCheckBox.
+
+\wxheading{See also}
+
+\helpref{Property validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxBoolFormValidator::wxBoolFormValidator}
+
+\func{void}{wxBoolFormValidator}{\param{long }{flags=0}}
+
+Constructor.
+
diff --git a/contrib/docs/latex/deprecated/propblva.tex b/contrib/docs/latex/deprecated/propblva.tex
new file mode 100644 (file)
index 0000000..172bc51
--- /dev/null
@@ -0,0 +1,16 @@
+\section{\class{wxBoolListValidator}}\label{wxboollistvalidator}
+
+This class validates a boolean value for a \helpref{property list view}{wxpropertylistview}.
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxBoolListValidator::wxBoolListValidator}
+
+\func{void}{wxBoolListValidator}{\param{long }{flags=0}}
+
+Constructor.
+
diff --git a/contrib/docs/latex/deprecated/property.tex b/contrib/docs/latex/deprecated/property.tex
new file mode 100644 (file)
index 0000000..f981df8
--- /dev/null
@@ -0,0 +1,107 @@
+\section{\class{wxProperty}}\label{wxproperty}
+
+The {\bf wxProperty} class represents a property, with a \helpref{wxPropertyValue}{wxpropertyvalue}\rtfsp
+containing the actual value, a name a role, an optional validator, and
+an optional associated window. 
+
+A property might correspond to an actual C++ data member, or it
+might correspond to a conceptual property, such as the width of a window.
+There is no explicit data member {\it wxWindow::width}, but it may be convenient
+to invent such a property for the purposes of editing attributes of the window.
+The properties in the property sheet can be mapped to ``reality" by
+whatever means (in this case by calling wxWindow::SetSize when the user has
+finished editing the property sheet).
+
+A validator may be associated with the property in order to ensure that this and
+only this validator will be used for editing and validating the property.
+An alternative method is to use the {\it role} parameter to specify what kind
+of validator would be appropriate; for example, specifying ``filename" for the role
+would allow the property view to find an appropriate validator at edit time.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxProperty::wxProperty}
+
+\func{void}{wxProperty}{\void}
+
+\func{void}{wxProperty}{\param{wxProperty\& }{prop}}
+
+\func{void}{wxProperty}{\param{wxString}{ name}, \param{wxString}{ role}, \param{wxPropertyValidator *}{validator=NULL}}
+
+\func{void}{wxProperty}{\param{wxString}{ name}, \param{const wxPropertyValue\&}{ val}, \param{wxString}{ role}, \param{wxPropertyValidator *}{validator=NULL}}
+
+Constructors.
+
+\membersection{wxProperty::\destruct{wxProperty}}
+
+\func{void}{\destruct{wxProperty}}{\void}
+
+Destructor. Destroys the wxPropertyValue, and the property validator if there is one. However, if the
+actual C++ value in the wxPropertyValue is a pointer, the data in that variable is not destroyed.
+
+\membersection{wxProperty::GetValue}
+
+\func{wxPropertyValue\&}{GetValue}{\void}
+
+Returns a reference to the property value.
+
+\membersection{wxProperty::GetValidator}
+
+\func{wxPropertyValidator *}{GetValidator}{\void}
+
+Returns a pointer to the associated property validator (if any).
+
+\membersection{wxProperty::GetName}
+
+\func{wxString\&}{GetName}{\void}
+
+Returns the name of the property.
+
+\membersection{wxProperty::GetRole}
+
+\func{wxRole\&}{GetRole}{\void}
+
+Returns the role of the property, to be used when choosing an appropriate validator.
+
+\membersection{wxProperty::GetWindow}
+
+\func{wxWindow *}{GetWindow}{\void}
+
+Returns the window associated with the property (if any).
+
+\membersection{wxProperty::SetValue}
+
+\func{void}{SetValue}{\param{wxPropertyValue\&}{ val}}
+
+Sets the value of the property.
+
+\membersection{wxProperty::SetName}
+
+\func{void}{SetName}{\param{wxString\&}{ name}}
+
+Sets the name of the property.
+
+\membersection{wxProperty::SetRole}
+
+\func{void}{SetRole}{\param{wxString\&}{ role}}
+
+Sets the role  of the property.
+
+\membersection{wxProperty::SetValidator}
+
+\func{void}{SetValidator}{\param{wxPropertyValidator *}{validator}}
+
+Sets the validator: this will be deleted when the property is deleted.
+
+\membersection{wxProperty::SetWindow}
+
+\func{void}{SetWindow}{\param{wxWindow *}{win}}
+
+Sets the window associated with the property.
+
+\membersection{wxProperty::operator $=$}
+
+\func{void}{operator $=$}{\param{const wxPropertyValue\&}{ val}}
+
+Assignment operator.
+
diff --git a/contrib/docs/latex/deprecated/propflva.tex b/contrib/docs/latex/deprecated/propflva.tex
new file mode 100644 (file)
index 0000000..c8748be
--- /dev/null
@@ -0,0 +1,18 @@
+\section{\class{wxFilenameListValidator}}\label{wxfilenamelistvalidator}
+
+This class validates a filename for a \helpref{property list view}{wxpropertylistview}, allowing the user to edit it textually and also popping up
+a file selector in ``detailed editing" mode.
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxFilenameListValidator::wxFilenameListValidator}
+
+\func{void}{wxFilenameListValidator}{\param{wxString }{message = ``Select a file"}, \param{wxString }{wildcard = ``*.*"},
+  \param{long}{ flags=0}}
+
+Constructor. Supply an optional message and wildcard.
+
diff --git a/contrib/docs/latex/deprecated/propford.tex b/contrib/docs/latex/deprecated/propford.tex
new file mode 100644 (file)
index 0000000..64ce5f1
--- /dev/null
@@ -0,0 +1,23 @@
+\section{\class{wxPropertyFormDialog}}\label{wxpropertyformdialog}
+
+The {\bf wxPropertyFormDialog} class is a prepackaged dialog which can
+be used for viewing a form property sheet. Pass a property form view object, and the dialog
+will pass OnClose and OnDefaultAction listbox messages to the view class for
+processing.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyFormDialog::wxPropertyFormDialog}
+
+\func{void}{wxPropertyFormDialog}{\param{wxPropertyFormView *}{view}, \param{wxWindow *}{parent}, \param{char *}{title},
+ \param{bool}{ modal=false}, \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1},
+ \param{long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{char *}{name=``dialogBox"}}
+
+Constructor.
+
+\membersection{wxPropertyFormDialog::\destruct{wxPropertyFormDialog}}
+
+\func{void}{\destruct{wxPropertyFormDialog}}{\void}
+
+Destructor.
+
diff --git a/contrib/docs/latex/deprecated/propforf.tex b/contrib/docs/latex/deprecated/propforf.tex
new file mode 100644 (file)
index 0000000..3f7d9dd
--- /dev/null
@@ -0,0 +1,43 @@
+\section{\class{wxPropertyFormFrame}}\label{wxpropertyformframe}
+
+The {\bf wxPropertyFormFrame} class is a prepackaged frame which can
+be used for viewing a property form. Pass a property form view object, and the frame
+will pass OnClose messages to the view class for processing.
+
+Call Initialize to create the panel and associate the view; override OnCreatePanel
+if you wish to use a panel class other than the default wxPropertyFormPanel.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyFormFrame::wxPropertyFormFrame}
+
+\func{void}{wxPropertyFormFrame}{\param{wxPropertyFormView *}{view}, \param{wxFrame *}{parent}, \param{char *}{title},
+ \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1},
+ \param{long}{ style=wxSDI $\|$ wxDEFAULT\_FRAME}, \param{char *}{name=``frame"}}
+
+Constructor.
+
+\membersection{wxPropertyFormFrame::\destruct{wxPropertyFormFrame}}
+
+\func{void}{\destruct{wxPropertyFormFrame}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyFormFrame::GetPropertyPanel}
+
+\func{wxPanel *}{GetPropertyPanel}{\void}
+
+Returns the panel associated with the frame.
+
+\membersection{wxPropertyFormFrame::Initialize}
+
+\func{bool}{Initialize}{\void}
+
+Must be called to create the panel and associate the view with the panel and frame.
+
+\membersection{wxPropertyFormFrame::OnCreatePanel}
+
+\func{wxPanel *}{OnCreatePanel}{\param{wxFrame *}{parent}, \param{wxPropertyFormView *}{view}}
+
+Creates a panel. Override this to create a panel type other than wxPropertyFormPanel.
+
diff --git a/contrib/docs/latex/deprecated/propforp.tex b/contrib/docs/latex/deprecated/propforp.tex
new file mode 100644 (file)
index 0000000..c84f4ea
--- /dev/null
@@ -0,0 +1,23 @@
+\section{\class{wxPropertyFormPanel}}\label{wxpropertyformpanel}
+
+The {\bf wxPropertyFormPanel} class is a prepackaged panel which can
+be used for viewing a property form. Pass a property form view object, and the panel
+will pass OnDefaultAction listbox messages to the view class for
+processing.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyFormPanel::wxPropertyFormPanel}
+
+\func{void}{wxPropertyFormPanel}{\param{wxPropertyFormView *}{view}, \param{wxWindow *}{parent},
+ \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1},
+ \param{long}{ style=0}, \param{char *}{name=``panel"}}
+
+Constructor.
+
+\membersection{wxPropertyFormPanel::\destruct{wxPropertyFormPanel}}
+
+\func{void}{\destruct{wxPropertyFormPanel}}{\void}
+
+Destructor.
+
diff --git a/contrib/docs/latex/deprecated/propforv.tex b/contrib/docs/latex/deprecated/propforv.tex
new file mode 100644 (file)
index 0000000..0a72305
--- /dev/null
@@ -0,0 +1,60 @@
+\section{\class{wxPropertyFormValidator}}\label{wxpropertyformvalidator}
+
+The {\bf wxPropertyFormValidator} class defines a base class for form validators. By overriding virtual functions,
+the programmer can create custom behaviour for kinds of property.
+
+\wxheading{See also}
+
+\helpref{wxPropertyFormValidator overview}{wxpropertyformvalidatoroverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyFormValidator::wxPropertyFormValidator}
+
+\func{void}{wxPropertyFormValidator}{\param{long}{ flags = 0}}
+
+Constructor.
+
+\membersection{wxPropertyFormValidator::\destruct{wxPropertyFormValidator}}
+
+\func{void}{\destruct{wxPropertyFormValidator}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyFormValidator::OnCommand}
+
+\func{bool}{OnCommand}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view},
+ \param{wxWindow *}{parentWindow}, \param{wxCommandEvent\& }{event}}
+
+Called when the control corresponding to the property receives a command (if not intercepted
+by a callback associated with the actual control).
+
+\membersection{wxPropertyFormValidator::OnCheckValue}
+
+\func{bool}{OnCheckValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view},
+ \param{wxWindow *}{parentWindow}}
+Called when the view checks the property value. The value checked by this validator should be taken from the
+panel item corresponding to the property.
+
+\membersection{wxPropertyFormValidator::OnDisplayValue}
+
+\func{bool}{OnDisplayValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Should display the property value in the appropriate control.
+\membersection{wxPropertyFormValidator::OnDoubleClick}
+
+\func{bool}{OnDoubleClick}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Called when the control corresponding to the property is double clicked (listboxes only).
+
+\membersection{wxPropertyFormValidator::OnRetrieveValue}
+
+\func{bool}{OnRetrieveValue}{\param{wxProperty *}{property}, \param{wxPropertyFormView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Should do the transfer from the property editing area to the property itself.
+
diff --git a/contrib/docs/latex/deprecated/propfovi.tex b/contrib/docs/latex/deprecated/propfovi.tex
new file mode 100644 (file)
index 0000000..281cd58
--- /dev/null
@@ -0,0 +1,104 @@
+\section{\class{wxPropertyFormView}}\label{wxpropertyformview}
+
+The {\bf wxPropertyFormView} class shows a wxPropertySheet as a view onto a panel or dialog
+box which has already been created.
+
+\wxheading{See also}
+
+\helpref{wxPropertyFormView overview}{wxpropertyformviewoverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyFormView::wxPropertyFormView}
+
+\func{void}{wxPropertyFormView}{\param{long}{ flags = 0}}
+
+Constructor.
+
+\membersection{wxPropertyFormView::\destruct{wxPropertyFormView}}
+
+\func{void}{\destruct{wxPropertyFormView}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyFormView::AssociateNames}\label{wxpropertyformviewassociatenames}
+
+\func{void}{AssociateNames}{\void}
+
+Associates the properties with the controls on the panel. For each panel item, if the
+panel item name is the same as a property name, the two objects will be associated.
+This function should be called manually since the programmer may wish to do the
+association manually.
+
+\membersection{wxPropertyFormView::Check}\label{wxpropertyformviewcheck}
+
+\func{bool}{Check}{\void}
+
+Checks all properties by calling the appropriate validators; returns false if a validation failed.
+
+\membersection{wxPropertyFormView::GetPanel}\label{wxpropertyformviewgetpanel}
+
+\func{wxPanel *}{GetPanel}{\void}
+
+Returns the panel associated with the view.
+
+\membersection{wxPropertyFormView::GetManagedWindow}\label{wxpropertyformviewgetmanagedwindow}
+
+\func{wxWindow *}{GetManagedWindow}{\void}
+
+Returns the managed window (a frame or dialog) associated with the view.
+
+\membersection{wxPropertyFormView::OnOk}\label{wxpropertyformviewonok}
+
+\func{void}{OnOk}{\void}
+
+Virtual function that will be called when the OK button on the physical window is pressed.
+By default, checks and updates the form values, closes and deletes the frame or dialog, then deletes the view.
+
+\membersection{wxPropertyFormView::OnCancel}\label{wxpropertyformviewoncancel}
+
+\func{void}{OnCancel}{\void}
+
+Virtual function that will be called when the Cancel button on the physical window is pressed.
+By default, closes and deletes the frame or dialog, then deletes the view.
+
+\membersection{wxPropertyFormView::OnHelp}\label{wxpropertyformviewonhelp}
+
+\func{void}{OnHelp}{\void}
+
+Virtual function that will be called when the Help button on the physical window is pressed.
+This needs to be overridden by the application for anything interesting to happen.
+
+\membersection{wxPropertyFormView::OnRevert}\label{wxpropertyformviewonrevert}
+
+\func{void}{OnRevert}{\void}
+
+Virtual function that will be called when the Revert button on the physical window is pressed.
+By default transfers the wxProperty values to the panel items (in effect
+undoing any unsaved changes in the items).
+
+\membersection{wxPropertyFormView::OnUpdate}\label{wxpropertyformviewonupdate}
+
+\func{void}{OnUpdate}{\void}
+
+Virtual function that will be called when the Update button on the physical window is pressed.
+By defaults transfers the displayed values to the wxProperty objects.
+
+\membersection{wxPropertyFormView::SetManagedWindow}\label{wxpropertyformviewsetmanagedwindow}
+
+\func{void}{SetManagedWindow}{\param{wxWindow *}{win}}
+
+Sets the managed window (a frame or dialog) associated with the view.
+
+\membersection{wxPropertyFormView::TransferToDialog}\label{wxpropertyformviewtransfertodialog}
+
+\func{bool}{TransferToDialog}{\void}
+
+Transfers property values to the controls in the dialog.
+
+\membersection{wxPropertyFormView::TransferToPropertySheet}\label{wxpropertyformviewtransfertopropertysheet}
+
+\func{bool}{TransferToPropertySheet}{\void}
+
+Transfers property values from the controls in the dialog to the property sheet.
+
diff --git a/contrib/docs/latex/deprecated/propifva.tex b/contrib/docs/latex/deprecated/propifva.tex
new file mode 100644 (file)
index 0000000..46af6ef
--- /dev/null
@@ -0,0 +1,18 @@
+\section{\class{wxIntegerFormValidator}}\label{wxintegerformvalidator}
+
+This class validates a range of integer values for a form view. The associated control must be a wxTextCtrl
+or wxSlider.
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxIntegerFormValidator::wxIntegerFormValidator}
+
+\func{void}{wxIntegerFormValidator}{\param{long }{min=0}, \param{long }{max=0},
+ \param{long}{ flags=0}}
+
+Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check.
+
diff --git a/contrib/docs/latex/deprecated/propilva.tex b/contrib/docs/latex/deprecated/propilva.tex
new file mode 100644 (file)
index 0000000..7c6803a
--- /dev/null
@@ -0,0 +1,17 @@
+\section{\class{wxIntegerListValidator}}\label{wxintegerlistvalidator}
+
+This class validates a range of integer values for a list view.
+
+\wxheading{See also}
+
+\overview{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxIntegerListValidator::wxIntegerListValidator}
+
+\func{void}{wxIntegerListValidator}{\param{long }{min=0}, \param{long }{max=0},
+ \param{long}{ flags=wxPROP\_ALLOW\_TEXT\_EDITING}}
+
+Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check.
+
diff --git a/contrib/docs/latex/deprecated/proplisd.tex b/contrib/docs/latex/deprecated/proplisd.tex
new file mode 100644 (file)
index 0000000..8ea7f4c
--- /dev/null
@@ -0,0 +1,23 @@
+\section{\class{wxPropertyListDialog}}\label{wxpropertylistdialog}
+
+The {\bf wxPropertyListDialog} class is a prepackaged dialog which can
+be used for viewing a property list. Pass a property list view object, and the dialog
+will pass OnClose and OnDefaultAction listbox messages to the view class for
+processing.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyListDialog::wxPropertyListDialog}
+
+\func{void}{wxPropertyListDialog}{\param{wxPropertyListView *}{view}, \param{wxWindow *}{parent}, \param{char *}{title},
+ \param{bool}{ modal=false}, \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1},
+ \param{long}{ style=wxDEFAULT\_DIALOG\_STYLE}, \param{char *}{name=``dialogBox"}}
+
+Constructor.
+
+\membersection{wxPropertyListDialog::\destruct{wxPropertyListDialog}}
+
+\func{void}{\destruct{wxPropertyListDialog}}{\void}
+
+Destructor.
+
diff --git a/contrib/docs/latex/deprecated/proplisf.tex b/contrib/docs/latex/deprecated/proplisf.tex
new file mode 100644 (file)
index 0000000..ee780a7
--- /dev/null
@@ -0,0 +1,43 @@
+\section{\class{wxPropertyListFrame}}\label{wxpropertylistframe}
+
+The {\bf wxPropertyListFrame} class is a prepackaged frame which can
+be used for viewing a property list. Pass a property list view object, and the frame
+will pass OnClose messages to the view class for processing.
+
+Call Initialize to create the panel and associate the view; override OnCreatePanel
+if you wish to use a panel class other than the default wxPropertyListPanel.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyListFrame::wxPropertyListFrame}
+
+\func{void}{wxPropertyListFrame}{\param{wxPropertyListView *}{view}, \param{wxFrame *}{parent}, \param{char *}{title},
+ \param{int}{ x=-1}, \param{int}{ y=-1}, \param{int}{ width=-1}, \param{int}{height=-1},
+ \param{long}{ style=wxSDI $\|$ wxDEFAULT\_FRAME}, \param{char *}{name=``frame"}}
+
+Constructor.
+
+\membersection{wxPropertyListFrame::\destruct{wxPropertyListFrame}}
+
+\func{void}{\destruct{wxPropertyListFrame}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyListFrame::GetPropertyPanel}
+
+\func{wxPanel *}{GetPropertyPanel}{\void}
+
+Returns the panel associated with the frame.
+
+\membersection{wxPropertyListFrame::Initialize}
+
+\func{bool}{Initialize}{\void}
+
+Must be called to create the panel and associate the view with the panel and frame.
+
+\membersection{wxPropertyListFrame::OnCreatePanel}
+
+\func{wxPanel *}{OnCreatePanel}{\param{wxFrame *}{parent}, \param{wxPropertyListView *}{view}}
+
+Creates a panel. Override this to create a panel type other than wxPropertyListPanel.
+
diff --git a/contrib/docs/latex/deprecated/proplisp.tex b/contrib/docs/latex/deprecated/proplisp.tex
new file mode 100644 (file)
index 0000000..fb8161d
--- /dev/null
@@ -0,0 +1,24 @@
+\section{\class{wxPropertyListPanel}}\label{wxpropertylistpanel}
+
+The {\bf wxPropertyListPanel} class is a prepackaged panel which can
+be used for viewing a property list. Pass a property list view object, and the panel
+will pass OnDefaultAction listbox messages to the view class for
+processing.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyListPanel::wxPropertyListPanel}
+
+\func{void}{wxPropertyListPanel}{\param{wxPropertyListView *}{view}, \param{wxWindow *}{parent},
+ \param{const wxPoint&}{ pos = wxDefaultPosition},
+ \param{const wxSize&}{ size = wxDefaultSize},
+ \param{long}{ style=0}, \param{char *}{name=``panel"}}
+
+Constructor.
+
+\membersection{wxPropertyListPanel::\destruct{wxPropertyListPanel}}
+
+\func{void}{\destruct{wxPropertyListPanel}}{\void}
+
+Destructor.
+
diff --git a/contrib/docs/latex/deprecated/proplist.tex b/contrib/docs/latex/deprecated/proplist.tex
new file mode 100644 (file)
index 0000000..ee6a714
--- /dev/null
@@ -0,0 +1,556 @@
+\chapter{Property sheet classes}\label{proplist}
+
+\section{Introduction}\label{proplistintro}
+
+The Property Sheet Classes help the programmer to specify complex dialogs and
+their relationship with their associated data. By specifying data as a
+wxPropertySheet containing wxProperty objects, the programmer can use
+a range of available or custom wxPropertyView classes to allow the user to
+edit this data. Classes derived from wxPropertyView act as mediators between the
+wxPropertySheet and the actual window (and associated panel items).
+
+For example, the wxPropertyListView is a kind of wxPropertyView which displays
+data in a Visual Basic-style property list (see \helpref{the next section}{proplistappearance} for
+screen shots). This is a listbox containing names and values, with
+an edit control and other optional controls via which the user edits the selected
+data item.
+
+wxPropertyFormView is another kind of wxPropertyView which mediates between
+the data and a panel or dialog box which has already been created. This makes it a contender for
+the replacement of wxForm, since programmer-controlled layout is going to be much more
+satisfactory. If automatic layout is desired, then wxPropertyListView could be used instead.
+
+The main intention of this class library was to provide property {\it list} behaviour, but
+it has been generalised as much as possible so that the concept of a property sheet and its viewers
+can reduce programming effort in a range of user interface tasks.
+
+For further details on the classes and how they are used, please see \helpref{Property classes overview}{proplistpropertyoverview}.
+
+\subsection{The appearance and behaviour of a property list view}\label{proplistappearance}
+
+The property list, as seen in an increasing number of development tools
+such as Visual Basic and Delphi, is a convenient and compact method for
+displaying and editing a number of items without the need for one
+control per item, and without the need for designing a special form. The
+controls are as follows:
+
+\begin{itemize}\itemsep=0pt
+\item A listbox showing the properties and their current values, which has double-click
+properties dependent on the nature of the current property;
+\item a text editing area at the top of the display, allowing the user to edit
+the currently selected property if appropriate;
+\item `confirm' and `cancel' buttons to confirm or cancel an edit (for the property, not the
+whole sheet);
+\item an optional list that appears when the user can make a choice from several known possible values;
+\item a small Edit button to invoke `detailed editing' (perhaps showing or hiding the above value list, or
+maybe invoking a common dialog);
+\item optional OK/Close, Cancel and Help buttons for the whole dialog.
+\end{itemize}
+
+The concept of `detailed editing' versus quick editing gives the user a choice
+of editing mode, so novice and expert behaviour can be catered for, or the user can just
+use what he feels comfortable with.
+
+Behaviour alters depending on the kind of property being edited. For example, a boolean value has
+the following behaviour:
+
+\begin{itemize}\itemsep=0pt
+\item Double-clicking on the item toggles between true and false.
+\item Showing the value list enables the user to select true or false.
+\item The user may be able to type in the word true or false, or the edit control
+may be read-only to disallow this since it is error-prone.
+\end{itemize}
+
+A list of strings may pop up a dialog for editing them, a simple string just allows text editing,
+double-clicking a colour property may show a colour selector, double-clicking on a filename property may
+show a file selector (in addition to being able to type in the name in the edit control), etc.
+
+Note that the `type' of property, such as string or integer, does not
+necessarily determine the behaviour of the property. The programmer has
+to be able to specify different behaviours for the same type, depending
+on the meaning of the property. For example, a colour and a filename may
+both be strings, but their editing behaviour should be different. This
+is why objects of type wxPropertyValidator need to be used, to define
+behaviour for a given class of properties or even specific property
+name.  Objects of class wxPropertyView contain a list of property
+registries, which enable reuse of bunches of these validators in
+different circumstances. Or a wxProperty can be explicitly set to use a
+particular validator object. 
+
+The following screen shot of the property classes test program shows the
+user editing a string, which is constrained to be one of three possible
+values.
+
+\helponly{\image{}{prop1.bmp}}
+
+The second picture shows the user having entered a integer that
+was outside the range specified to the validator. Note that in this picture,
+the value list is hidden because it is not used when editing an integer.
+
+\helponly{\image{}{prop2.bmp}}
+
+\section{Headers}\label{proplistfiles}
+
+The property class library comprises the following files:
+
+\begin{itemize}\itemsep=0pt
+\item prop.h: base property class header
+\item proplist.h: wxPropertyListView and associated classes
+\item propform.h: wxPropertyListView and associated classes
+\end{itemize}
+
+\section{Topic overviews}\label{proplistoverviews}
+
+This chapter contains a selection of topic overviews.
+
+\subsection{Property classes overview}\label{proplistpropertyoverview}
+
+The property classes help a programmer to express relationships between
+data and physical windows, in particular:
+
+\begin{itemize}\itemsep=0pt
+\item the transfer of data to and from the physical controls;
+\item the behaviour of various controls and custom windows for particular
+types of data;
+\item the validation of data, notifying the user when incorrect data is entered,
+or even better, constraining the input so only valid data can be entered.
+\end{itemize}
+
+With a consistent framework, the programmer should be able to use existing
+components and design new ones in a principled manner, to solve many data entry
+requirements.
+
+Each datum is represented in a \helpref{wxProperty}{wxproperty}, which has a name and a value.
+Various C++ types are permitted in the value of a property, and the property can store a pointer
+to the data instead of a copy of the data. A \helpref{wxPropertySheet}{wxpropertysheet} represents a number of these properties.
+
+These two classes are independent from the way in which the data is visually manipulated. To
+mediate between property sheets and windows, the abstract class \helpref{wxPropertyView}{wxpropertyview} is
+available for programmers to derive new kinds of view. One kind of view that is available is the \helpref{wxPropertyListView}{wxpropertylistview},
+which displays the data in a Visual Basic-style list, with a small number of controls for editing
+the currently selected property. Another is \helpref{wxPropertyFormView}{wxpropertyformview} which
+mediates between an existing dialog or panel and the property sheet.
+
+The hard work of mediation is actually performed by validators, which are instances of classes
+derived from \helpref{wxPropertyValidator}{wxpropertyvalidator}. A validator is associated with
+a particular property and is responsible for
+responding to user interface events, and displaying, updating and checking the property value.
+Because a validator's behaviour depends largely on the kind of view being used, there has to be
+a separate hierarchy of validators for each class of view. So for wxPropertyListView, there is
+an abstract class \helpref{wxPropertyListValidator}{wxpropertylistvalidator} from which concrete
+classes are derived, such as \helpref{wxRealListValidator}{wxreallistvalidator} and
+\rtfsp\helpref{wxStringListValidator}{wxstringlistvalidator}.
+
+A validator can be explicitly set for a property, so there is no doubt which validator
+should be used to edit that property. However, it is also possible to define a registry
+of validators, and have the validator chosen on the basis of the {\it role} of the property.
+So a property with a ``filename" role would match the ``filename" validator, which pops
+up a file selector when the user double clicks on the property.
+
+You don't have to define your own frame or window classes: there are some predefined
+that will work with the property list view. See \helpref{Window classes}{proplistwindowclasses} for
+further details.
+
+\subsubsection{Example 1: Property list view}
+
+The following code fragment shows the essentials of creating a registry of
+standard validators, a property sheet containing some properties, and
+a property list view and dialog or frame. RegisterValidators will be
+called on program start, and PropertySheetTest is called in response to a
+menu command.
+
+Note how some properties are created with an explicit reference to
+a validator, and others are provided with a ``role'' which can be matched
+against a validator in the registry.
+
+The interface generated by this test program is shown in the section \helpref{Appearance and
+behaviour of a property list view}{proplistappearance}.
+
+\begin{verbatim}
+void RegisterValidators(void)
+{
+  myListValidatorRegistry.RegisterValidator((wxString)"real", new wxRealListValidator);
+  myListValidatorRegistry.RegisterValidator((wxString)"string", new wxStringListValidator);
+  myListValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerListValidator);
+  myListValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolListValidator);
+}
+
+void PropertyListTest(Bool useDialog)
+{
+  wxPropertySheet *sheet = new wxPropertySheet;
+
+  sheet->AddProperty(new wxProperty("fred", 1.0, "real"));
+  sheet->AddProperty(new wxProperty("tough choice", (Bool)true, "bool"));
+  sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerListValidator(-50, 50)));
+  sheet->AddProperty(new wxProperty("bill", 25.0, "real", new wxRealListValidator(0.0, 100.0)));
+  sheet->AddProperty(new wxProperty("julian", "one", "string"));
+  sheet->AddProperty(new wxProperty("bitmap", "none", "string", new wxFilenameListValidator("Select a bitmap file", "*.bmp")));
+  wxStringList *strings = new wxStringList("one", "two", "three", NULL);
+  sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringListValidator(strings)));
+
+  wxPropertyListView *view =
+    new wxPropertyListView(NULL,
+     wxPROP_BUTTON_CHECK_CROSS|wxPROP_DYNAMIC_VALUE_FIELD|wxPROP_PULLDOWN);
+
+  wxDialogBox *propDialog = NULL;
+  wxPropertyListFrame *propFrame = NULL;
+  if (useDialog)
+  {
+    propDialog = new wxPropertyListDialog(view, NULL, "Property Sheet Test", true, -1, -1, 400, 500);
+  }
+  else
+  {
+    propFrame = new wxPropertyListFrame(view, NULL, "Property Sheet Test", -1, -1, 400, 500);
+  }
+  
+  view->AddRegistry(&myListValidatorRegistry);
+
+  if (useDialog)
+  {
+    view->ShowView(sheet, propDialog);
+    propDialog->Centre(wxBOTH);
+    propDialog->Show(true);
+  }
+  else
+  {
+    propFrame->Initialize();
+    view->ShowView(sheet, propFrame->GetPropertyPanel());
+    propFrame->Centre(wxBOTH);
+    propFrame->Show(true);
+  }
+}
+\end{verbatim}
+
+\subsubsection{Example 2: Property form view}
+
+This example is similar to Example 1, but uses a property form view to
+edit a property sheet using a predefined dialog box.
+
+\begin{verbatim}
+void RegisterValidators(void)
+{
+  myFormValidatorRegistry.RegisterValidator((wxString)"real", new wxRealFormValidator);
+  myFormValidatorRegistry.RegisterValidator((wxString)"string", new wxStringFormValidator);
+  myFormValidatorRegistry.RegisterValidator((wxString)"integer", new wxIntegerFormValidator);
+  myFormValidatorRegistry.RegisterValidator((wxString)"bool", new wxBoolFormValidator);
+}
+
+void PropertyFormTest(Bool useDialog)
+{
+  wxPropertySheet *sheet = new wxPropertySheet;
+
+  sheet->AddProperty(new wxProperty("fred", 25.0, "real", new wxRealFormValidator(0.0, 100.0)));
+  sheet->AddProperty(new wxProperty("tough choice", (Bool)true, "bool"));
+  sheet->AddProperty(new wxProperty("ian", (long)45, "integer", new wxIntegerFormValidator(-50, 50)));
+  sheet->AddProperty(new wxProperty("julian", "one", "string"));
+  wxStringList *strings = new wxStringList("one", "two", "three", NULL);
+  sheet->AddProperty(new wxProperty("constrained", "one", "string", new wxStringFormValidator(strings)));
+
+  wxPropertyFormView *view = new wxPropertyFormView(NULL);
+
+  wxDialogBox *propDialog = NULL;
+  wxPropertyFormFrame *propFrame = NULL;
+  if (useDialog)
+  {
+    propDialog = new wxPropertyFormDialog(view, NULL, "Property Form Test", true, -1, -1, 400, 300);
+  }
+  else
+  {
+    propFrame = new wxPropertyFormFrame(view, NULL, "Property Form Test", -1, -1, 400, 300);
+    propFrame->Initialize();
+  }
+  
+  wxPanel *panel = propDialog ? propDialog : propFrame->GetPropertyPanel();
+  panel->SetLabelPosition(wxVERTICAL);
+  
+  // Add items to the panel
+  
+  (void) new wxButton(panel, (wxFunction)NULL, "OK", -1, -1, -1, -1, 0, "ok");
+  (void) new wxButton(panel, (wxFunction)NULL, "Cancel", -1, -1, 80, -1, 0, "cancel");
+  (void) new wxButton(panel, (wxFunction)NULL, "Update", -1, -1, 80, -1, 0, "update");
+  (void) new wxButton(panel, (wxFunction)NULL, "Revert", -1, -1, -1, -1, 0, "revert");
+  panel->NewLine();
+  
+  // The name of this text item matches the "fred" property
+  (void) new wxText(panel, (wxFunction)NULL, "Fred", "", -1, -1, 90, -1, 0, "fred");
+  (void) new wxCheckBox(panel, (wxFunction)NULL, "Yes or no", -1, -1, -1, -1, 0, "tough choice");
+  (void) new wxSlider(panel, (wxFunction)NULL, "Sliding scale", 0, -50, 50, 100, -1, -1, wxHORIZONTAL, "ian");
+  panel->NewLine();
+  (void) new wxListBox(panel, (wxFunction)NULL, "Constrained", wxSINGLE, -1, -1, 100, 90, 0, NULL, 0, "constrained");
+
+  view->AddRegistry(&myFormValidatorRegistry);
+
+  if (useDialog)
+  {
+    view->ShowView(sheet, propDialog);
+    view->AssociateNames();
+    view->TransferToDialog();
+    propDialog->Centre(wxBOTH);
+    propDialog->Show(true);
+  }
+  else
+  {
+    view->ShowView(sheet, propFrame->GetPropertyPanel());
+    view->AssociateNames();
+    view->TransferToDialog();
+    propFrame->Centre(wxBOTH);
+    propFrame->Show(true);
+  }
+}
+\end{verbatim}
+
+\subsection{Validator classes overview}\label{proplistvalidatoroverview}
+
+Classes: \helpref{Validator classes}{proplistvalidatorclasses}
+
+The validator classes provide functionality for mediating between a wxProperty and
+the actual display. There is a separate family of validator classes for each
+class of view, since the differences in user interface for these views implies
+that little common functionality can be shared amongst validators.
+
+
+
+\subsubsection{wxPropertyValidator overview}\label{wxpropertyvalidatoroverview}
+
+Class: \helpref{wxPropertyValidator}{wxpropertyvalidator}
+
+This class is the root of all property validator classes. It contains a small
+amount of common functionality, including functions to convert between
+strings and C++ values.
+
+A validator is notionally an object which sits between a property and its displayed
+value, and checks that the value the user enters is correct, giving an error message
+if the validation fails. In fact, the validator does more than that, and is akin to
+a view class but at a finer level of detail. It is also responsible for
+loading the dialog box control with the value from the property, putting it back
+into the property, preparing special controls for editing the value, and
+may even invoke special dialogs for editing the value in a convenient way.
+
+In a property list dialog, there is quite a lot of scope for supplying custom dialogs,
+such as file or colour selectors. For a form dialog, there is less scope because
+there is no concept of `detailed editing' of a value: one control is associated with
+one property, and there is no provision for invoking further dialogs. The reader
+may like to work out how the form view could be extended to provide some of the
+functionality of the property list!
+
+Validator objects may be associated explicitly with a wxProperty, or they may be
+indirectly associated by virtue of a property `kind' that matches validators having
+that kind. In the latter case, such validators are stored in a validator registry
+which is passed to the view before the dialog is shown. If the validator takes
+arguments, such as minimum and maximum values in the case of a wxIntegerListValidator,
+then the validator must be associated explicitly with the property. The validator
+will be deleted when the property is deleted.
+
+\subsubsection{wxPropertyListValidator overview}\label{wxpropertylistvalidatoroverview}
+
+Class: \helpref{wxPropertyListValidator}{wxpropertylistvalidator}
+
+This class is the abstract base class for property list view validators.
+The list view acts upon a user interface containing a list of properties,
+a text item for direct property value editing, confirm/cancel buttons for the value,
+a pulldown list for making a choice between values, and OK/Cancel/Help buttons
+for the dialog (see \helpref{property list appearance}{proplistappearance}).
+
+By overriding virtual functions, the programmer can create custom
+behaviour for different kinds of property. Custom behaviour can use just the
+available controls on the property list dialog, or the validator can
+invoke custom editors with quite different controls, which pop up in
+`detailed editing' mode.
+
+See the detailed class documentation for the members you should override
+to give your validator appropriate behaviour.
+
+\subsubsection{wxPropertyFormValidator overview}\label{wxpropertyformvalidatoroverview}
+
+This class is the abstract base class for property form view validators.
+The form view acts upon an existing dialog box or panel, where either the
+panel item names correspond to property names, or the programmer has explicitly
+associated the panel item with the property.
+
+By overriding virtual functions, the programmer determines how
+values are displayed or retrieved, and the checking that the validator does.
+
+See the detailed class documentation for the members you should override
+to give your validator appropriate behaviour.
+
+\subsection{View classes overview}\label{proplistviewoverview}
+
+Classes: \helpref{View classes}{proplistviewclasses}
+
+An instance of a view class relates a property sheet with an actual window.
+Currently, there are two classes of view: wxPropertyListView and wxPropertyFormView.
+
+\subsubsection{wxPropertyView overview}\label{wxpropertyviewoverview}
+
+Class: \helpref{wxPropertyView}{wxpropertyview}
+
+This is the abstract base class for property views.
+
+\subsubsection{wxPropertyListView overview}\label{wxpropertylistviewoverview}
+
+Class: \helpref{wxPropertyListView}{wxpropertylistview}
+
+The property list view defines the relationship between a property sheet and
+a property list dialog or panel. It manages user interface events such as
+clicking on a property, pressing return in the text edit field, and clicking
+on Confirm or Cancel. These events cause member functions of the
+class to be called, and these in turn may call member functions of
+the appropriate validator to be called, to prepare controls, check the property value,
+invoke detailed editing, etc.
+
+\subsubsection{wxPropertyFormView overview}\label{wxpropertyformviewoverview}
+
+Class: \helpref{wxPropertyFormView}{wxpropertyformview}
+
+The property form view manages the relationship between a property sheet
+and an existing dialog or panel.
+
+You must first create a panel or dialog box for the view to work on.
+The panel should contain panel items with names that correspond to
+properties in your property sheet; or you can explicitly set the
+panel item for each property.
+
+Apart from any custom panel items that you wish to control independently
+of the property-editing items, wxPropertyFormView takes over the
+processing of item events. It can also control normal dialog behaviour such
+as OK, Cancel, so you should also create some standard buttons that the property view
+can recognise. Just create the buttons with standard names and the view
+will do the rest. The following button names are recognised:
+
+\begin{itemize}\itemsep=0pt
+\item {\bf ok}: indicates the OK button. Calls wxPropertyFormView::OnOk. By default,
+checks and updates the form values, closes and deletes the frame or dialog, then deletes the view.
+\item {\bf cancel}: indicates the Cancel button. Calls wxPropertyFormView::OnCancel. By default,
+closes and deletes the frame or dialog, then deletes the view.
+\item {\bf help}: indicates the Help button. Calls wxPropertyFormView::OnHelp. This needs
+to be overridden by the application for anything interesting to happen.
+\item {\bf revert}: indicates the Revert button. Calls wxPropertyFormView::OnRevert,
+which by default transfers the wxProperty values to the panel items (in effect
+undoing any unsaved changes in the items).
+\item {\bf update}: indicates the Revert button. Calls wxPropertyFormView::OnUpdate, which
+by defaults transfers the displayed values to the wxProperty objects.
+\end{itemize}
+
+\subsection{wxPropertySheet overview}\label{wxpropertysheetoverview}
+
+Classes: \helpref{wxPropertySheet}{wxpropertysheet}, \helpref{wxProperty}{wxproperty}, \helpref{wxPropertyValue}{wxpropertyvalue}
+
+A property sheet defines zero or more properties. This is a bit like an explicit representation of
+a C++ object. wxProperty objects can have values which are pointers to C++ values, or they
+can allocate their own storage for values.
+
+Because the property sheet representation is explicit and can be manipulated by
+a program, it is a convenient form to be used for a variety of
+editing purposes. wxPropertyListView and wxPropertyFormView are two classes that
+specify the relationship between a property sheet and a user interface. You could imagine
+other uses for wxPropertySheet, for example to generate a form-like user interface without
+the need for GUI programming. Or for storing the names and values of command-line switches, with the
+option to subsequently edit these values using a wxPropertyListView.
+
+A typical use for a property sheet is to represent values of an object
+which are only implicit in the current representation of it. For
+example, in Visual Basic and similar programming environments, you can
+`edit a button', or rather, edit the button's properties.  One of the
+properties you can edit is {\it width} - but there is no explicit
+representation of width in a wxWindows button; instead, you call SetSize
+and GetSize members. To translate this into a consistent,
+property-oriented scheme, we could derive a new class
+wxButtonWithProperties, which has two new functions: SetProperty and
+GetProperty.  SetProperty accepts a property name and a value, and calls
+an appropriate function for the property that is being passed.
+GetProperty accepts a property name, returning a property value. So
+instead of having to use the usual arbitrary set of C++ member functions
+to set or access attributes of a window, programmer deals merely with
+SetValue/GetValue, and property names and values.
+We now have a single point at which we can modify or query an object by specifying
+names and values at run-time. (The implementation of SetProperty and GetProperty
+is probably quite messy and involves a large if-then-else statement to
+test the property name and act accordingly.)
+
+When the user invokes the property editor for a wxButtonWithProperties, the system
+creates a wxPropertySheet with `imaginary' properties such as width, height, font size
+and so on. For each property, wxButtonWithProperties::GetProperty is called, and the result is
+passed to the corresponding wxProperty. The wxPropertySheet is passed to a wxPropertyListView
+as described elsewhere, and the user edits away. When the user has finished editing, the system calls
+wxButtonWithProperties::SetProperty to transfer the wxProperty value back into the button
+by way of an appropriate call, wxWindow::SetSize in the case of width and height properties.
+
+\section{Classes by category}\label{proplistclassesbycat}
+
+A classification of property sheet classes by category.
+
+\subsection{Data classes}
+
+\begin{itemize}\itemsep=0pt
+\item \helpref{wxProperty}{wxproperty}
+\item \helpref{wxPropertyValue}{wxpropertyvalue}
+\item \helpref{wxPropertySheet}{wxpropertysheet}
+\end{itemize}
+
+\subsection{Validator classes}\label{proplistvalidatorclasses}
+
+Validators check that the values the user has entered for a property are
+valid. They can also define specific ways of entering data, such as a
+file selector for a filename, and they are responsible for transferring
+values between the wxProperty and the physical display. 
+
+Base classes:
+
+\begin{itemize}\itemsep=0pt
+\item \helpref{wxPropertyValidator}{wxproperty}
+\item \helpref{wxPropertyListValidator}{wxpropertylistvalidator}
+\item \helpref{wxPropertyFormValidator}{wxpropertyformvalidator}
+\end{itemize}
+
+List view validators:
+
+\begin{itemize}\itemsep=0pt
+\item \helpref{wxBoolListValidator}{wxboollistvalidator}
+\item \helpref{wxFilenameListValidator}{wxfilenamelistvalidator}
+\item \helpref{wxIntegerListValidator}{wxintegerlistvalidator}
+\item \helpref{wxListOfStringsListValidator}{wxlistofstringslistvalidator}
+\item \helpref{wxRealListValidator}{wxreallistvalidator}
+\item \helpref{wxStringListValidator}{wxstringlistvalidator}
+\end{itemize}
+
+Form view validators:
+
+\begin{itemize}\itemsep=0pt
+\item \helpref{wxBoolFormValidator}{wxboolformvalidator}
+\item \helpref{wxIntegerFormValidator}{wxintegerformvalidator}
+\item \helpref{wxRealFormValidator}{wxrealformvalidator}
+\item \helpref{wxStringFormValidator}{wxstringformvalidator}
+\end{itemize}
+
+\subsection{View classes}\label{proplistviewclasses}
+
+View classes mediate between a property sheet and a physical window.
+
+\begin{itemize}\itemsep=0pt
+\item \helpref{wxPropertyView}{wxpropertyview}
+\item \helpref{wxPropertyListView}{wxpropertylistview}
+\item \helpref{wxPropertyFormView}{wxpropertyformview}
+\end{itemize}
+
+\subsection{Window classes}\label{proplistwindowclasses}
+
+The class library defines some window classes that can be used as-is with a suitable
+view class and property sheet.
+
+\begin{itemize}\itemsep=0pt
+\item \helpref{wxPropertyFormFrame}{wxpropertyformframe}
+\item \helpref{wxPropertyFormDialog}{wxpropertyformdialog}
+\item \helpref{wxPropertyFormPanel}{wxpropertyformpanel}
+\item \helpref{wxPropertyListFrame}{wxpropertylistframe}
+\item \helpref{wxPropertyListDialog}{wxpropertylistdialog}
+\item \helpref{wxPropertyListPanel}{wxpropertylistpanel}
+\end{itemize}
+
+\subsection{Registry classes}
+
+A validator registry is a list of validators that can be applied to properties in a property sheet.
+There may be one or more registries per property view.
+
+\begin{itemize}\itemsep=0pt
+\item \helpref{wxPropertyValidatorRegistry}{wxpropertyvalidatorregistry}
+\end{itemize}
diff --git a/contrib/docs/latex/deprecated/propliva.tex b/contrib/docs/latex/deprecated/propliva.tex
new file mode 100644 (file)
index 0000000..b75dfc7
--- /dev/null
@@ -0,0 +1,110 @@
+\section{\class{wxPropertyListValidator}}\label{wxpropertylistvalidator}
+
+The {\bf wxPropertyListValidator} abstract class is the base class for
+deriving validators for property lists.
+
+\wxheading{See also}
+
+\helpref{wxPropertyListValidator overview}{wxpropertylistvalidatoroverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyListValidator::wxPropertyListValidator}
+
+\func{void}{wxPropertyListValidator}{\param{long}{ flags = wxPROP\_ALLOW\_TEXT\_EDITING}}
+
+Constructor.
+
+\membersection{wxPropertyListValidator::\destruct{wxPropertyListValidator}}
+
+\func{void}{\destruct{wxPropertyListValidator}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyListValidator::OnCheckValue}
+
+\func{bool}{OnCheckValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+Called when the Tick (Confirm) button is pressed or focus is list. Return false if the value
+was invalid, which is a signal restores the old value. Return true if the value was valid.
+
+\membersection{wxPropertyListValidator::OnClearControls}
+
+\func{bool}{OnClearControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+Allows the clearing (enabling, disabling) of property list controls, when the focus leaves the current property.
+
+\membersection{wxPropertyListValidator::OnClearDetailControls}
+
+\func{bool}{OnClearDetailControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+Called when the focus is lost, if the validator is in detailed editing mode.
+
+\membersection{wxPropertyListValidator::OnDisplayValue}
+
+\func{bool}{OnDisplayValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Should display the value in the appropriate controls. The default implementation gets the
+textual value from the property and inserts it into the text edit control.
+\membersection{wxPropertyListValidator::OnDoubleClick}
+
+\func{bool}{OnDoubleClick}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Called when the property is double clicked. Extra functionality can be provided,
+such as cycling through possible values.
+
+\membersection{wxPropertyListValidator::OnEdit}
+
+\func{bool}{OnEdit}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+Called when the Edit (detailed editing) button is pressed. The default implementation
+calls wxPropertyListView::BeginDetailedEditing; a filename validator (for example) overrides
+this function to show the file selector.
+
+\membersection{wxPropertyListValidator::OnPrepareControls}
+
+\func{bool}{OnPrepareControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Called to allow the validator to setup the display, such enabling or disabling buttons, and
+setting the values and selection in the standard listbox control (the one optionally used for displaying
+value options).
+
+\membersection{wxPropertyListValidator::OnPrepareDetailControls}
+
+\func{bool}{OnPrepareDetailControls}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+Called when the property is edited `in detail', i.e. when the Edit button is pressed.
+
+\membersection{wxPropertyListValidator::OnRetrieveValue}
+
+\func{bool}{OnRetrieveValue}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Called when Tick (Confirm) is pressed or focus is lost or view wants to update
+the property list. Should do the transfer from the property editing area to the property itself
+
+\membersection{wxPropertyListValidator::OnSelect}
+
+\func{bool}{OnSelect}{\param{bool}{ select}, \param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Called when the property is selected or deselected: typically displays the value
+in the edit control (having chosen a suitable control to display: (non)editable text or listbox).
+
+\membersection{wxPropertyListValidator::OnValueListSelect}
+
+\func{bool}{OnValueListSelect}{\param{wxProperty *}{property}, \param{wxPropertyListView *}{view},
+ \param{wxWindow *}{parentWindow}}
+
+Called when the value listbox is selected. The default behaviour is to copy
+string to text control, and retrieve the value into the property.
+
diff --git a/contrib/docs/latex/deprecated/proplosv.tex b/contrib/docs/latex/deprecated/proplosv.tex
new file mode 100644 (file)
index 0000000..601788a
--- /dev/null
@@ -0,0 +1,31 @@
+\section{\class{wxListOfStringsListValidator}}\label{wxlistofstringslistvalidator}
+
+This class validates a list of strings for a list view. When editing the property,
+a dialog box is presented for adding, deleting or editing entries in the list.
+At present no constraints may be supplied.
+
+You can construct a string list property value by constructing a wxStringList object.
+
+For example:
+
+\begin{verbatim}
+  myListValidatorRegistry.RegisterValidator((wxString)"stringlist",
+      new wxListOfStringsListValidator);
+
+  wxStringList *strings = new wxStringList("earth", "fire", "wind", "water", NULL);
+
+  sheet->AddProperty(new wxProperty("fred", strings, "stringlist"));
+\end{verbatim}
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxListOfStringsListValidator::wxListofStringsListValidator}
+
+\func{void}{wxListOfStringsListValidator}{\param{long}{ flags=0}}
+
+Constructor.
+
diff --git a/contrib/docs/latex/deprecated/proplstv.tex b/contrib/docs/latex/deprecated/proplstv.tex
new file mode 100644 (file)
index 0000000..a59fb25
--- /dev/null
@@ -0,0 +1,111 @@
+\section{\class{wxPropertyListView}}\label{wxpropertylistview}
+
+The {\bf wxPropertyListView} class shows a wxPropertySheet as a Visual Basic-style property list.
+
+\wxheading{See also}
+
+\helpref{wxPropertyListView overview}{wxpropertylistviewoverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyListView::wxPropertyListView}
+
+\func{void}{wxPropertyListView}{ \param{wxPanel*} propPanel = NULL, \param{long}{ flags = wxPROP\_BUTTON\_DEFAULT}}
+
+Constructor.
+
+The {\it flags} argument can be a bit list of the following:
+
+\begin{itemize}\itemsep=0pt
+\item wxPROP\_BUTTON\_CLOSE
+\item wxPROP\_BUTTON\_OK
+\item wxPROP\_BUTTON\_CANCEL
+\item wxPROP\_BUTTON\_CHECK\_CROSS
+\item wxPROP\_BUTTON\_HELP
+\item wxPROP\_DYNAMIC\_VALUE\_FIELD
+\item wxPROP\_PULLDOWN
+\end{itemize}
+
+\membersection{wxPropertyListView::\destruct{wxPropertyListView}}
+
+\func{void}{\destruct{wxPropertyListView}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyListView::AssociatePanel}\label{wxpropertylistviewassociatepanel}
+
+\func{void}{AssociatePanel}{\param{wxPanel *}{panel}}
+
+Associates the window on which the controls will be displayed, with the view (sets an internal pointer to the window).
+
+\membersection{wxPropertyListView::BeginShowingProperty}\label{wxpropertylistviewbeginshowingproperty}
+
+\func{bool}{BeginShowingProperty}{\param{wxProperty *}{property}}
+
+Finds the appropriate validator and loads the property into the controls, by calling
+wxPropertyValidator::OnPrepareControls and then wxPropertyListView::DisplayProperty.
+
+\membersection{wxPropertyListView::DisplayProperty}\label{wxpropertylistviewdisplayproperty}
+
+\func{bool}{DisplayProperty}{\param{wxProperty *}{property}}
+
+Calls wxPropertyValidator::OnDisplayValue for the current property's validator. This function
+gets called by wxPropertyListView::BeginShowingProperty, which is in turn called
+from ShowProperty, called by OnPropertySelect, called by the listbox callback when selected.
+
+\membersection{wxPropertyListView::EndShowingProperty}\label{wxpropertylistviewendshowingproperty}
+
+\func{bool}{EndShowingProperty}{\param{wxProperty *}{property}}
+
+Finds the appropriate validator and unloads the property from the controls, by calling
+wxPropertyListView::RetrieveProperty, wxPropertyValidator::OnClearControls and (if we're in
+detailed editing mode) wxPropertyValidator::OnClearDetailControls.
+
+\membersection{wxPropertyListView::GetPanel}\label{wxpropertylistviewgetpanel}
+
+\func{wxPanel *}{GetPanel}{\void}
+
+Returns the panel associated with the view.
+
+\membersection{wxPropertyListView::GetManagedWindow}\label{wxpropertylistviewgetmanagedwindow}
+
+\func{wxWindow *}{GetManagedWindow}{\void}
+
+Returns the managed window (a frame or dialog) associated with the view.
+
+\membersection{wxPropertyListView::GetWindowCancelButton}\label{wxpropertylistviewgetwindowcancelbutton}
+
+\func{wxButton *}{GetWindowCancelButton}{\void}
+
+Returns the window cancel button, if any.
+
+\membersection{wxPropertyListView::GetWindowCloseButton}\label{wxpropertylistviewgetwindowclosebutton}
+
+\func{wxButton *}{GetWindowCloseButton}{\void}
+
+Returns the window close or OK button, if any.
+
+\membersection{wxPropertyListView::GetWindowHelpButton}\label{wxpropertylistviewgetwindowhelpbutton}
+
+\func{wxButton *}{GetWindowHelpButton}{\void}
+
+Returns the window help button, if any.
+
+\membersection{wxPropertyListView::SetManagedWindow}\label{wxpropertylistviewsetmanagedwindow}
+
+\func{void}{SetManagedWindow}{\param{wxWindow *}{win}}
+
+Sets the managed window (a frame or dialog) associated with the view.
+
+\membersection{wxPropertyListView::UpdatePropertyDisplayInList}\label{wxpropertylistviewupdatepropdisplay}
+
+\func{bool}{UpdatePropertyDisplayInList}{\param{wxProperty *}{property}}
+
+Updates the display for the given changed property.
+
+\membersection{wxPropertyListView::UpdatePropertyList}\label{wxpropertylistviewupdateproplist}
+
+\func{bool}{UpdatePropertyList}{\param{bool }{clearEditArea = true}}
+
+Updates the whole property list display.
+
diff --git a/contrib/docs/latex/deprecated/propregv.tex b/contrib/docs/latex/deprecated/propregv.tex
new file mode 100644 (file)
index 0000000..59a87d3
--- /dev/null
@@ -0,0 +1,42 @@
+\section{\class{wxPropertyValidatorRegistry}}\label{wxpropertyvalidatorregistry}
+
+The {\bf wxPropertyValidatorRegistry} class is used for storing validators,
+indexed by the `role name' of the property, by which groups of property
+can be identified for the purpose of validation and editing.
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyValidatorRegistry::wxPropertyValidatorRegistry}
+
+\func{void}{wxPropertyValidatorRegistry}{\void}
+
+Constructor.
+
+\membersection{wxPropertyValidatorRegistry::\destruct{wxPropertyValidatorRegistry}}
+
+\func{void}{\destruct{wxPropertyValidatorRegistry}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyValidatorRegistry::Clear}
+
+\func{void}{ClearRegistry}{\void}
+
+Clears the registry, deleting the validators.
+
+\membersection{wxPropertyValidatorRegistry::GetValidator}
+
+\func{wxPropertyValidator *}{GetValidator}{\param{wxString\& }{roleName}}
+
+Retrieve a validator by the property role name.
+
+\membersection{wxPropertyValidatorRegistry::RegisterValidator}\label{wxpropertyvalidatorregistervalidator}
+
+\func{void}{RegisterValidator}{\param{wxString\& }{roleName}, \param{wxPropertyValidator *}{validator}}
+
+Register a validator with the registry. {\it roleName} is a name indicating the
+role of the property, such as ``filename''. Later, when a validator is chosen for
+editing a property, this role name is matched against the class names of the property,
+if the property does not already have a validator explicitly associated with it.
+
+
diff --git a/contrib/docs/latex/deprecated/proprfva.tex b/contrib/docs/latex/deprecated/proprfva.tex
new file mode 100644 (file)
index 0000000..7713336
--- /dev/null
@@ -0,0 +1,17 @@
+\section{\class{wxRealFormValidator}}\label{wxrealformvalidator}
+
+This class validates a range of real values for form views. The associated panel item must be a wxText.
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRealFormValidator::wxRealFormValidator}
+
+\func{void}{wxRealFormValidator}{\param{float }{min=0.0}, \param{float }{max=0.0},
+ \param{long}{ flags=0}}
+
+Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check.
+
diff --git a/contrib/docs/latex/deprecated/proprlva.tex b/contrib/docs/latex/deprecated/proprlva.tex
new file mode 100644 (file)
index 0000000..1745a27
--- /dev/null
@@ -0,0 +1,19 @@
+\section{\class{wxRealListValidator}}\label{wxreallistvalidator}
+
+This class validates a range of real values for property lists.
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\helpref{wxPropertySheet overview}{wxpropertysheetoverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxRealListValidator::wxRealListValidator}
+
+\func{void}{wxRealListValidator}{\param{float }{min=0.0}, \param{float }{max=0.0},
+ \param{long}{ flags=wxPROP\_ALLOW\_TEXT\_EDITING}}
+
+Constructor. Assigning zero to minimum and maximum values indicates that there is no range to check.
+
diff --git a/contrib/docs/latex/deprecated/propsht.tex b/contrib/docs/latex/deprecated/propsht.tex
new file mode 100644 (file)
index 0000000..241c09d
--- /dev/null
@@ -0,0 +1,83 @@
+\section{\class{wxPropertySheet}}\label{wxpropertysheet}
+
+The {\bf wxPropertySheet} class is used for storing a number of
+wxProperty objects (essentially names and values).
+
+\wxheading{See also}
+
+\helpref{wxPropertySheet overview}{wxpropertysheetoverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertySheet::wxPropertySheet}
+
+\func{void}{wxPropertySheet}{\param{const wxString}{ name = ""}}
+
+Constructor. Sets property sheet's name to name if present.
+
+\membersection{wxPropertySheet::\destruct{wxPropertySheet}}
+
+\func{void}{\destruct{wxPropertySheet}}{\void}
+
+Destructor. Destroys all contained properties.
+
+\membersection{wxPropertySheet::AddProperty}\label{wxpropertysheetaddproperty}
+
+\func{void}{AddProperty}{\param{wxProperty *}{property}}
+
+Adds a property to the sheet.
+
+\membersection{wxPropertySheet::Clear}\label{wxpropertysheetclear}
+
+\func{void}{Clear}{\void}
+
+Clears all the properties from the sheet (deleting them).
+
+\membersection{wxPropertySheet::GetName}\label{wxpropertysheetgetname}
+
+\func{wxString}{GetName}{\void}
+
+Gets the sheet's name.
+
+\membersection{wxPropertySheet::GetProperty}\label{wxpropertysheetgetproperty}
+
+\func{wxProperty *}{GetProperty}{\param{wxString}{ name}}
+
+Gets a property by name.
+
+\membersection{wxPropertySheet::GetProperties}\label{wxpropertysheetgetproperties}
+
+\func{wxList\&}{GetProperties}{\void}
+
+Returns a reference to the internal list of properties.
+
+\membersection{wxPropertySheet::HasProperty}\label{wxpropertysheethasproperty}
+
+\func{bool}{HasProperty}{\param{wxString}{ propname}}
+
+Returns true if sheet contains property propname.
+
+\membersection{wxPropertySheet::RemoveProperty}\label{wxpropertysheetremoveproperty}
+
+\func{void}{RemoveProperty}{\param{wxString}{ propname}}
+
+Removes property propname from sheet, deleting it.
+
+\membersection{wxPropertySheet::SetName}\label{wxpropertysheetsetname}
+
+\func{void}{SetName}{\param{wxString}{ sheetname}}
+
+Set the sheet's name to sheetname
+
+\membersection{wxPropertySheet::SetProperty}\label{wxpropertysheetsetproperty}
+
+\func{bool}{SetProperty}{\param{wxString}{ propname}, \param{wxPropertyValue}{ value}}
+
+Sets property propname to value. Returns false if property is not a member of sheet.
+
+\membersection{wxPropertySheet::SetAllModified}
+
+\func{void}{SetAllModified}{\param{bool}{ flag}}
+
+Sets the `modified' flag of each property value.
+
diff --git a/contrib/docs/latex/deprecated/propslv.tex b/contrib/docs/latex/deprecated/propslv.tex
new file mode 100644 (file)
index 0000000..cc4f657
--- /dev/null
@@ -0,0 +1,18 @@
+\section{\class{wxStringListValidator}}\label{wxstringlistvalidator}
+
+This class validates a string value, with an optional choice of possible values.
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxStringListValidator::wxStringListValidator}
+
+\func{void}{wxStringListValidator}{\param{wxStringList *}{list=NULL}, \param{long}{ flags=0}}
+
+Constructor. Supply a list of strings to indicate a choice, or no strings to allow the
+user to freely edit the string. The string list will be deleted when the validator is deleted.
+
+
diff --git a/contrib/docs/latex/deprecated/propstfv.tex b/contrib/docs/latex/deprecated/propstfv.tex
new file mode 100644 (file)
index 0000000..53e3571
--- /dev/null
@@ -0,0 +1,20 @@
+\section{\class{wxStringFormValidator}}\label{wxstringformvalidator}
+
+This class validates a string value for a form view, with an optional choice of possible values.
+The associated panel item must be a wxText, wxListBox or wxChoice. For wxListBox and wxChoice items,
+if the item is empty, the validator attempts to initialize the item from the strings in
+the validator.
+
+\wxheading{See also}
+
+\helpref{Validator classes}{proplistvalidatorclasses}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxStringFormValidator::wxStringFormValidator}
+
+\func{void}{wxStringFormValidator}{\param{wxStringList *}{list=NULL}, \param{long}{ flags=0}}
+
+Constructor. Supply a list of strings to indicate a choice, or no strings to allow the
+user to freely edit the string. The string list will be deleted when the validator is deleted.
+
diff --git a/contrib/docs/latex/deprecated/propval.tex b/contrib/docs/latex/deprecated/propval.tex
new file mode 100644 (file)
index 0000000..c1c2fd4
--- /dev/null
@@ -0,0 +1,242 @@
+\section{\class{wxPropertyValue}}\label{wxpropertyvalue}
+
+The {\bf wxPropertyValue} class represents the value of a property,
+and is normally associated with a wxProperty object.
+
+A wxPropertyValue has one of the following types:
+
+\begin{itemize}\itemsep=0pt
+\item wxPropertyValueNull
+\item wxPropertyValueInteger
+\item wxPropertyValueReal
+\item wxPropertyValueBool
+\item wxPropertyValueString
+\item wxPropertyValueList
+\item wxPropertyValueIntegerPtr
+\item wxPropertyValueRealPtr
+\item wxPropertyValueBoolPtr
+\item wxPropertyValueStringPtr
+\end{itemize}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyValue::wxPropertyValue}
+
+\func{void}{wxPropertyValue}{\void}
+
+Default constructor.
+
+\func{void}{wxPropertyValue}{\param{const wxPropertyValue\& }{copyFrom}}
+
+Copy constructor.
+
+\func{void}{wxPropertyValue}{\param{char *}{val}}
+
+Construction from a string value.
+
+\func{void}{wxPropertyValue}{\param{long}{ val}}
+
+Construction from an integer value. You may need to cast to (long) to
+avoid confusion with other constructors (such as the bool constructor).
+
+\func{void}{wxPropertyValue}{\param{bool}{ val}}
+
+Construction from a boolean value.
+
+\func{void}{wxPropertyValue}{\param{float}{ val}}
+
+Construction from a floating point value.
+
+\func{void}{wxPropertyValue}{\param{double}{ val}}
+
+Construction from a floating point value.
+
+\func{void}{wxPropertyValue}{\param{wxList *}{ val}}
+
+Construction from a list of wxPropertyValue objects. The
+list, but not each contained wxPropertyValue, will be deleted
+by the constructor. The wxPropertyValues will be assigned to
+this wxPropertyValue list. In other words, so do not delete wxList or
+its data after calling this constructor.
+
+\func{void}{wxPropertyValue}{\param{wxStringList *}{ val}}
+
+Construction from a list of strings. The list (including the strings
+contained in it) will be deleted by the constructor, so do not
+destroy {\it val} explicitly.
+
+\func{void}{wxPropertyValue}{\param{char **}{val}}
+
+Construction from a string pointer.
+
+\func{void}{wxPropertyValue}{\param{long *}{val}}
+
+Construction from an integer pointer.
+
+\func{void}{wxPropertyValue}{\param{bool *}{val}}
+
+Construction from an boolean pointer.
+
+\func{void}{wxPropertyValue}{\param{float *}{val}}
+
+Construction from a floating point pointer.
+
+The last four constructors use pointers to various C++ types, and do not
+store the types themselves; this allows the values to stand in for actual
+data values defined elsewhere.
+
+\membersection{wxPropertyValue::\destruct{wxPropertyValue}}
+
+\func{void}{\destruct{wxPropertyValue}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyValue::Append}
+
+\func{void}{Append}{\param{wxPropertyValue *}{expr}}
+
+Appends a property value to the list.
+
+\membersection{wxPropertyValue::BoolValue}
+
+\func{bool}{BoolValue}{\void}
+
+Returns the boolean value.
+
+\membersection{wxPropertyValue::BoolValuePtr}
+
+\func{bool *}{BoolValuePtr}{\void}
+
+Returns the pointer to the boolean value.
+
+\membersection{wxPropertyValue::ClearList}
+
+\func{void}{ClearList}{\void}
+
+Deletes the contents of the list.
+
+\membersection{wxPropertyValue::Delete}
+
+\func{void}{Delete}{\param{wxPropertyValue *}{expr}}
+
+Deletes {\it expr} from this list.
+
+\membersection{wxPropertyValue::GetFirst}
+
+\func{wxPropertyValue *}{GetFirst}{\void}
+
+Gets the first value in the list.
+
+\membersection{wxPropertyValue::GetLast}
+
+\func{wxPropertyValue *}{GetFirst}{\void}
+
+Gets the last value in the list.
+
+\membersection{wxPropertyValue::GetModified}
+
+\func{bool}{GetModified}{\void}
+
+Returns true if the value was modified since being created
+(or since SetModified was called).
+
+\membersection{wxPropertyValue::GetNext}
+
+\func{wxPropertyValue *}{GetNext}{\void}
+
+Gets the next value in the list (the one after `this').
+
+\membersection{wxPropertyValue::GetStringRepresentation}
+
+\func{wxString}{GetStringRepresentation}{\void}
+
+Gets a string representation of the value.
+
+\membersection{wxPropertyValue::IntegerValue}
+
+\func{long}{IntegerValue}{\void}
+
+Returns the integer value.
+
+\membersection{wxPropertyValue::Insert}
+
+\func{void}{Insert}{\param{wxPropertyValue *}{expr}}
+
+Inserts a property value at the front of a list.
+
+\membersection{wxPropertyValue::IntegerValuePtr}
+
+\func{long *}{IntegerValuePtr}{\void}
+
+Returns the pointer to the integer value.
+
+\membersection{wxPropertyValue::Nth}
+
+\func{wxPropertyValue *}{Nth}{\param{int}{ n}}
+
+Returns the nth value of a list expression (starting from zero).
+
+\membersection{wxPropertyValue::Number}
+
+\func{int}{Number}{\void}
+
+Returns the number of elements in a list expression.
+
+\membersection{wxPropertyValue::RealValue}
+
+\func{float}{RealValue}{\void}
+
+Returns the floating point value.
+
+\membersection{wxPropertyValue::RealValuePtr}
+
+\func{float *}{RealValuePtr}{\void}
+
+Returns the pointer to the floating point value.
+
+\membersection{wxPropertyValue::SetModified}
+
+\func{void}{SetModified}{\param{bool}{ flag}}
+
+Sets the `modified' flag.
+
+\membersection{wxPropertyValue::StringValue}
+
+\func{char *}{StringValue}{\void}
+
+Returns the string value.
+
+\membersection{wxPropertyValue::StringValuePtr}
+
+\func{char **}{StringValuePtr}{\void}
+
+Returns the pointer to the string value.
+
+\membersection{wxPropertyValue::Type}
+
+\func{wxPropertyValueType}{Type}{\void}
+
+Returns the value type.
+
+\membersection{wxPropertyValue::operator $=$}
+
+\func{void}{operator $=$}{\param{const wxPropertyValue\& }{val}}
+
+\func{void}{operator $=$}{\param{const char *}{val}}
+
+\func{void}{operator $=$}{\param{const long }{val}}
+
+\func{void}{operator $=$}{\param{const bool }{val}}
+
+\func{void}{operator $=$}{\param{const float }{val}}
+
+\func{void}{operator $=$}{\param{const char **}{val}}
+
+\func{void}{operator $=$}{\param{const long *}{val}}
+
+\func{void}{operator $=$}{\param{const bool *}{val}}
+
+\func{void}{operator $=$}{\param{const float *}{val}}
+
+Assignment operators.
+
diff --git a/contrib/docs/latex/deprecated/propvald.tex b/contrib/docs/latex/deprecated/propvald.tex
new file mode 100644 (file)
index 0000000..69404e4
--- /dev/null
@@ -0,0 +1,41 @@
+\section{\class{wxPropertyValidator}}\label{wxpropertyvalidator}
+
+The {\bf wxPropertyValidator} abstract class is the base class for deriving
+validators for properties.
+
+\wxheading{See also}
+
+\helpref{wxPropertyValidator overview}{wxpropertyvalidatoroverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyValidator::wxPropertyValidator}
+
+\func{void}{wxPropertyValidator}{\param{long}{ flags = 0}}
+
+Constructor.
+
+\membersection{wxPropertyValidator::\destruct{wxPropertyValidator}}
+
+\func{void}{\destruct{wxPropertyValidator}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyValidator::GetFlags}
+
+\func{long}{GetFlags}{\void}
+
+Returns the flags for the validator.
+
+\membersection{wxPropertyValidator::GetValidatorProperty}
+
+\func{wxProperty *}{GetValidatorProperty}{\void}
+
+Gets the property for the validator.
+
+\membersection{wxPropertyValidator::SetValidatorProperty}
+
+\func{void}{SetValidatorProperty}{\param{wxProperty *}{property}}
+
+Sets the property for the validator.
+
diff --git a/contrib/docs/latex/deprecated/propview.tex b/contrib/docs/latex/deprecated/propview.tex
new file mode 100644 (file)
index 0000000..ad74d1a
--- /dev/null
@@ -0,0 +1,111 @@
+\section{\class{wxPropertyView}}\label{wxpropertyview}
+
+The {\bf wxPropertyView} abstract class is the base class for views
+of property sheets, acting as intermediaries between properties and
+actual windows.
+
+\wxheading{See also}
+
+\helpref{wxPropertyView overview}{wxpropertyviewoverview}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxPropertyView::wxPropertyView}
+
+\func{void}{wxPropertyView}{\param{long}{ flags = wxPROP\_BUTTON\_DEFAULT}}
+
+Constructor.
+
+The {\it flags} argument can be a bit list of the following:
+
+\begin{itemize}\itemsep=0pt
+\item wxPROP\_BUTTON\_CLOSE
+\item wxPROP\_BUTTON\_OK
+\item wxPROP\_BUTTON\_CANCEL
+\item wxPROP\_BUTTON\_CHECK\_CROSS
+\item wxPROP\_BUTTON\_HELP
+\item wxPROP\_DYNAMIC\_VALUE\_FIELD
+\item wxPROP\_PULLDOWN
+\end{itemize}
+
+\membersection{wxPropertyView::\destruct{wxPropertyView}}
+
+\func{void}{\destruct{wxPropertyView}}{\void}
+
+Destructor.
+
+\membersection{wxPropertyView::AddRegistry}\label{wxpropertyviewaddregistry}
+
+\func{void}{AddRegistry}{\param{wxPropertyValidatorRegistry *}{registry}}
+
+Adds a registry (list of property validators) the view's list of registries, which is initially empty.
+
+\membersection{wxPropertyView::FindPropertyValidator}\label{wxpropertyviewfindpropertyvalidator}
+
+\func{wxPropertyValidator *}{FindPropertyValidator}{\param{wxProperty *}{property}}
+
+Finds the property validator that is most appropriate to this property.
+
+\membersection{wxPropertyView::GetPropertySheet}\label{wxpropertyviewgetpropertysheet}
+
+\func{wxPropertySheet *}{GetPropertySheet}{\void}
+
+Gets the property sheet for this view.
+
+\membersection{wxPropertyView::GetRegistryList}\label{wxpropertyviewgetregistrylist}
+
+\func{wxList\&}{GetRegistryList}{\void}
+
+Returns a reference to the list of property validator registries.
+
+\membersection{wxPropertyView::OnOk}\label{wxpropertyviewonok}
+
+\func{void}{OnOk}{\void}
+
+Virtual function that will be called when the OK button on the physical window is pressed (if it exists).
+
+\membersection{wxPropertyView::OnCancel}\label{wxpropertyviewoncancel}
+
+\func{void}{OnCancel}{\void}
+
+Virtual function that will be called when the Cancel button on the physical window is pressed (if it exists).
+
+\membersection{wxPropertyView::OnClose}\label{wxpropertyviewonclose}
+
+\func{bool}{OnClose}{\void}
+
+Virtual function that will be called when the physical window is closed. The default implementation returns false.
+
+\membersection{wxPropertyView::OnHelp}\label{wxpropertyviewonhelp}
+
+\func{void}{OnHelp}{\void}
+
+Virtual function that will be called when the Help button on the physical window is pressed (if it exists).
+
+\membersection{wxPropertyView::OnPropertyChanged}\label{wxpropertyviewonpropertychanged}
+
+\func{void}{OnPropertyChanged}{\param{wxProperty *}{property}}
+
+Virtual function called by a view or validator when a property's value changed. Validators
+must be written correctly for this to be called. You can override this function
+to respond immediately to property value changes.
+
+\membersection{wxPropertyView::OnUpdateView}\label{wxpropertyviewonupdateview}
+
+\func{bool}{OnUpdateView}{\void}
+
+Called by the viewed object to update the view. The default implementation just returns
+false.
+
+\membersection{wxPropertyView::SetPropertySheet}\label{wxpropertyviewsetpropertysheet}
+
+\func{void}{SetPropertySheet}{\param{wxPropertySheet *}{sheet}}
+
+Sets the property sheet for this view.
+
+\membersection{wxPropertyView::ShowView}\label{wxpropertyviewshowview}
+
+\func{void}{ShowView}{\param{wxPropertySheet *}{sheet}, \param{wxPanel *}{panel}}
+
+Associates this view with the given panel, and shows the view.
+
diff --git a/contrib/docs/latex/deprecated/tex2rtf.ini b/contrib/docs/latex/deprecated/tex2rtf.ini
new file mode 100644 (file)
index 0000000..3f700ad
--- /dev/null
@@ -0,0 +1,55 @@
+;;; Tex2RTF initialisation file, using NO style sheet for HTML. See
+;;; tex2rtf_css.ini for a version using a style sheet. You can use
+;;; -macros tex2rtf.ini to specify the ini file.
+runTwice = yes
+titleFontSize = 12
+authorFontSize = 10
+authorFontSize = 10
+chapterFontSize = 12
+sectionFontSize = 12
+subsectionFontSize = 12
+contentsDepth = 2
+headerRule = yes
+footerRule = yes
+useHeadingStyles = yes
+listItemIndent=40
+generateHPJ = yes
+htmlBrowseButtons = bitmap
+winHelpContents = yes
+winHelpVersion = 3 ; 3 for Windows 3.x, 4 for Windows 95
+winHelpTitle = "wxWindows Deprecated Classes Manual"
+truncateFilenames = yes
+combineSubSections = yes
+;;
+;; These two are for generating MS HTML Help project, contents and index files.
+;;
+htmlWorkshopFiles = true
+htmlIndex = true
+
+; Finally, a way to specify face names
+htmlFaceName = "Arial, Lucida, Helvetica"
+
+\textasciitilde [0]{{\tt\~}}
+\textasciicircum [0]{{\tt\^}}
+\textbackslash [0]{{\tt$\backslash$}}
+\gifsep [0]{\par}
+ignoreInput = "ltx.tex"
+; htmlStylesheet = "wx.css"
+
+;\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}}
+;\htmlonly{\image{}{books.gif}}\helpref{#1}{#2}
+;\sethotspotcolour{on}\sethotspotunderline{on}}
+\overview [2] {\helpref{#1}{#2}}
+\docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}}
+\wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}}
+\const [0] {{\bf const}}
+\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
+\windowstyle [1] {{\bf #1}\index{#1}}
+\bftt [1] {\bf{\tt{#1}}}
+\pythonnote [1] {{\bf \fcol{blue}{wxPython note:}} #1}
+%\pythonnote [1] {}
+\perlnote [1] {{\bf \fcol{blue}{wxPerl note:}} #1}
+%\perlnote [1] {}
+
+; make tex2rtf understand \hbox{} macro:
+\hbox [1] {#1}
diff --git a/contrib/docs/latex/deprecated/topics.tex b/contrib/docs/latex/deprecated/topics.tex
new file mode 100644 (file)
index 0000000..283c08c
--- /dev/null
@@ -0,0 +1,9 @@
+\chapter{Topic overviews}\label{overviews}
+\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
+\setfooter{\thepage}{}{}{}{}{\thepage}%
+
+This chapter contains a selection of topic overviews.
+
+\input texpr.tex
+\input tresourc.tex
+
diff --git a/contrib/docs/latex/deprecated/treelay.tex b/contrib/docs/latex/deprecated/treelay.tex
new file mode 100644 (file)
index 0000000..711d8b1
--- /dev/null
@@ -0,0 +1,327 @@
+\section{\class{wxTreeLayout}}\label{wxtreelayout}
+
+wxTreeLayout provides layout of simple trees with one root node, drawn left-to-right,
+with user-defined spacing between nodes.
+
+wxTreeLayout is an abstract class that must be subclassed. The programmer
+defines various member functions which will access whatever data structures
+are appropriate for the application, and wxTreeLayout uses these when laying
+out the tree.
+
+Nodes are identified by long integer identifiers. The derived class
+communicates the actual tree structure to wxTreeLayout by defining \helpref{wxTreeLayout::GetChildren}{wxtreelayoutgetchildren}\rtfsp
+and \helpref{wxTreeLayout::GetNodeParent}{wxtreelayoutgetnodeparent} functions.
+
+The application should call \helpref{wxTreeLayout::DoLayout}{wxtreelayoutdolayout} to do the tree
+layout. Depending on how the derived class has been defined, either
+\rtfsp\helpref{wxTreeLayout::Draw}{wxtreelayoutdraw} must be called (for example by the OnPaint member
+of a wxScrolledWindow) or the application-defined drawing code should be called
+as normal.
+
+For example, if you have an image drawing system already defined, you
+may want wxTreeLayout to position existing node images in that system. So you
+just need a way for wxTreeLayout to set the node image positions according to
+the layout algorithm, and the rest will be done by your own image drawing
+system.
+
+The algorithm is due to Gabriel Robins \cite{robins87}, a linear-time
+algorithm originally implemented in LISP for AI applications.
+
+The original algorithm has been modified so that both X and Y planes
+are calculated simultaneously, increasing efficiency slightly. The basic
+code is only a page or so long.
+
+\helponly{Below is the example tree generated by the program test.cc.
+
+\begin{figure}
+$$\image{11cm;0cm}{treetst.ps}$$
+\caption{Example tree}\label{exampletree}
+\end{figure}
+}
+
+\wxheading{Derived from}
+
+wxObject
+
+\wxheading{See also}
+
+\helpref{wxTreeLayoutStored}{wxtreelayoutstored}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxTreeLayout::wxTreeLayout}
+
+\func{}{wxTreeLayout}{\void}
+
+Constructor.
+
+\membersection{wxTreeLayout::ActivateNode}\label{wxtreelayoutactivatenode}
+
+\func{void}{ActivateNode}{\param{long}{ id}, \param{bool }{active}}
+
+Define this so wxTreeLayout can turn nodes on and off for drawing purposes
+(not all nodes may be connected in the tree). See also \helpref{wxTreeLayout::NodeActive}{wxtreelayoutnodeactive}.
+
+\membersection{wxTreeLayout::CalcLayout}
+
+\func{void}{CalcLayout}{\param{long}{ id}, \param{int}{ level}}
+
+Private function for laying out a branch.
+
+\membersection{wxTreeLayout::DoLayout}\label{wxtreelayoutdolayout}
+
+\func{void}{DoLayout}{\param{wxDC\&}{ dc}, \param{long}{ topNode = -1}}
+
+Calculates the layout for the tree, optionally specifying the top node.
+
+\membersection{wxTreeLayout::Draw}\label{wxtreelayoutdraw}
+
+\func{void}{Draw}{\param{wxDC\&}{ dc}}
+
+Call this to let wxTreeLayout draw the tree itself, once the layout has been
+calculated with \helpref{wxTreeLayout::DoLayout}{wxtreelayoutdolayout}.
+
+\membersection{wxTreeLayout::DrawBranch}
+
+\func{void}{DrawBranch}{\param{long}{ from}, \param{long}{ to}, \param{wxDC\&}{ dc}}
+
+Defined by wxTreeLayout to draw an arc between two nodes.
+
+\membersection{wxTreeLayout::DrawBranches}
+
+\func{void}{DrawBranches}{\param{wxDC\&}{ dc}}
+
+Defined by wxTreeLayout to draw the arcs between nodes.
+
+\membersection{wxTreeLayout::DrawNode}
+
+\func{void}{DrawNode}{\param{long}{ id}, \param{wxDC\&}{ dc}}
+
+Defined by wxTreeLayout to draw a node.
+
+\membersection{wxTreeLayout::DrawNodes}
+
+\func{void}{DrawNodes}{\param{wxDC\&}{ dc}}
+
+Defined by wxTreeLayout to draw the nodes.
+
+\membersection{wxTreeLayout::GetChildren}\label{wxtreelayoutgetchildren}
+
+\func{void}{GetChildren}{\param{long}{ id}, \param{wxList \&}{list}}
+
+Must be defined to return the children of node {\it id} in the given list
+of integers.
+
+\membersection{wxTreeLayout::GetNextNode}\label{wxtreelayoutgetnextnode}
+
+\func{long}{GetNextNode}{\param{long}{ id}}
+
+Must be defined to return the next node after {\it id}, so that wxTreeLayout can
+iterate through all relevant nodes. The ordering is not important.
+The function should return -1 if there are no more nodes.
+
+\membersection{wxTreeLayout::GetNodeName}
+
+\constfunc{wxString}{GetNodeName}{\param{long}{ id}}
+
+May optionally be defined to get a node's name (for example if leaving
+the drawing to wxTreeLayout).
+
+\membersection{wxTreeLayout::GetNodeSize}
+
+\constfunc{void}{GetNodeSize}{\param{long}{ id}, \param{long*}{ x}, \param{long*}{ y}}
+
+Can be defined to indicate a node's size, or left to wxTreeLayout to use the
+name as an indication of size.
+
+\membersection{wxTreeLayout::GetNodeParent}\label{wxtreelayoutgetnodeparent}
+
+\constfunc{long}{GetNodeParent}{\param{long}{ id}}
+
+Must be defined to return the parent node of {\it id}.
+The function should return -1 if there is no parent.
+
+\membersection{wxTreeLayout::GetNodeX}
+
+\constfunc{long}{GetNodeX}{\param{long}{ id}}
+
+Must be defined to return the current X position of the node. Note that
+coordinates are assumed to be at the top-left of the node so some conversion
+may be necessary for your application.
+
+\membersection{wxTreeLayout::GetNodeY}
+
+\constfunc{long}{GetNodeY}{\param{long}{ id}}
+
+Must be defined to return the current Y position of the node. Note that
+coordinates are assumed to be at the top-left of the node so some conversion
+may be necessary for your application.
+
+\membersection{wxTreeLayout::GetLeftMargin}
+
+\constfunc{long}{GetLeftMargin}{\void}
+
+Gets the left margin set with \helpref{wxTreeLayout::SetMargins}{wxtreelayoutsetmargins}.
+
+\membersection{wxTreeLayout::GetOrientation}
+
+\constfunc{bool}{GetOrientation}{\void}
+
+Gets the orientation: true means top-to-bottom, false means left-to-right (the default).
+
+\membersection{wxTreeLayout::GetTopMargin}
+
+\constfunc{long}{GetTopMargin}{\void}
+
+Gets the top margin set with \helpref{wxTreeLayout::SetMargins}{wxtreelayoutsetmargins}.
+
+\membersection{wxTreeLayout::GetTopNode}
+
+\constfunc{long}{GetTopNode}{\void}
+
+wxTreeLayout calls this to get the top of the tree. Don't redefine this; call
+\rtfsp\helpref{wxTreeLayout::SetTopNode}{wxtreelayoutsettopnode} instead before calling \helpref{wxTreeLayout::DoLayout}{wxtreelayoutdolayout}.
+
+\membersection{wxTreeLayout::GetXSpacing}
+
+\constfunc{long}{GetXSpacing}{\void}
+
+Gets the horizontal spacing between nodes.
+
+\membersection{wxTreeLayout::GetYSpacing}
+
+\constfunc{long}{GetYSpacing}{\void}
+
+Gets the vertical spacing between nodes.
+
+\membersection{wxTreeLayout::Initialize}
+
+\func{void}{Initialize}{\void}
+
+Initializes wxTreeLayout. Call from application or overridden {\bf Initialize}
+or constructor.
+
+\membersection{wxTreeLayout::NodeActive}\label{wxtreelayoutnodeactive}
+
+\func{bool}{NodeActive}{\param{long}{ id}}
+
+Define this so wxTreeLayout can know which nodes are to be drawn (not all
+nodes may be connected in the tree). See also \helpref{wxTreeLayout::ActivateNode}{wxtreelayoutactivatenode}.
+
+\membersection{wxTreeLayout::SetNodeName}
+
+\func{void}{SetNodeName}{\param{long}{ id}, \param{const wxString\& }{ name}}
+
+May optionally be defined to set a node's name.
+
+\membersection{wxTreeLayout::SetNodeX}
+
+\func{void}{SetNodeX}{\param{long}{ id}, \param{long}{ x}}
+
+Must be defined to set the current X position of the node. Note that
+coordinates are assumed to be at the top-left of the node so some conversion
+may be necessary for your application.
+
+\membersection{wxTreeLayout::SetNodeY}
+
+\func{void}{SetNodeY}{\param{long}{ id}, \param{long}{ y}}
+
+Must be defined to set the current Y position of the node. Note that
+coordinates are assumed to be at the top-left of the node so some conversion
+may be necessary for your application.
+
+\membersection{wxTreeLayout::SetOrientation}
+
+\func{void}{SetOrientation}{\param{bool}{ orientation}}
+
+Sets the tree orientation: true means top-to-bottom, false means left-to-right (the default).
+
+\membersection{wxTreeLayout::SetTopNode}\label{wxtreelayoutsettopnode}
+
+\func{void}{SetTopNode}{\param{long}{ id}}
+
+Call this to identify the top of the tree to wxTreeLayout.
+
+\membersection{wxTreeLayout::SetSpacing}
+
+\func{void}{SetSpacing}{\param{long}{ x}, \param{long}{ y}}
+
+Sets the horizontal and vertical spacing between nodes in the tree.
+
+\membersection{wxTreeLayout::SetMargins}\label{wxtreelayoutsetmargins}
+
+\func{void}{SetMargins}{\param{long}{ x}, \param{long}{ y}}
+
+Sets the left and top margins of the whole tree.
+
+\section{\class{wxTreeLayoutStored}}\label{wxtreelayoutstored}
+
+wxTreeLayoutStored provides storage for node labels, position and client data. It also provides hit-testing
+(which node a mouse event occurred on). It is usually a more convenient class to use than wxTreeLayout.
+
+\wxheading{Derived from}
+
+\helpref{wxTreeLayout}{wxtreelayout}\\
+\helpref{wxObject}{wxobject}
+
+\wxheading{See also}
+
+\helpref{wxTreeLayout}{wxtreelayout}
+
+\latexignore{\rtfignore{\wxheading{Members}}}
+
+\membersection{wxTreeLayoutStored::wxTreeLayoutStored}
+
+\func{}{wxTreeLayoutStored}{\param{int }{noNodes = 200}}
+
+Constructor. Specify the maximum number of nodes to be allocated.
+
+\membersection{wxTreeLayoutStored::AddChild}\label{wxtreelayoutstoredaddchild}
+
+\func{long}{AddChild}{\param{const wxString\&}{ name}, \param{const wxString\&}{ parent = ""}}
+
+Adds a child with a given parent, returning the node id.
+
+\membersection{wxTreeLayoutStored::GetClientData}\label{wxtreelayoutstoredgetclientdata}
+
+\constfunc{long}{GetClientData}{\param{long}{ id}}
+
+Gets the client data for the given node.
+
+\membersection{wxTreeLayoutStored::GetNode}\label{wxtreelayoutstoredgetnode}
+
+\constfunc{wxStoredNode*}{GetNode}{\param{long}{ id}}
+
+Returns the wxStoredNode object for the given node id.
+
+\membersection{wxTreeLayoutStored::GetNodeCount}\label{wxtreelayoutstoredgetnodecount}
+
+\constfunc{int}{GetNodeCount}{\void}
+
+Returns the current number of nodes.
+
+\membersection{wxTreeLayoutStored::GetNumNodes}\label{wxtreelayoutstoredgetnumnodes}
+
+\constfunc{int}{GetNumNodes}{\void}
+
+Returns the maximum number of nodes.
+
+\membersection{wxTreeLayoutStored::HitTest}\label{wxtreelayoutstoredhittest}
+
+\func{wxString}{HitTest}{\param{wxMouseEvent\&}{ event}, \param{wxDC\& }{dc}}
+
+Returns a string with the node name corresponding to the position of the mouse event, or the empty string if no node
+was detected.
+
+\membersection{wxTreeLayoutStored::NameToId}\label{wxtreelayoutstorednametoid}
+
+\func{long}{NameToId}{\param{const wxString\&}{ name}}
+
+Returns the id for the given node name, or -1 if there was no such node.
+
+\membersection{wxTreeLayoutStored::SetClientData}\label{wxtreelayoutstoredsetclientdata}
+
+\func{void}{SetClientData}{\param{long}{ id}, \param{long}{ clientData}}
+
+Sets client data for the given node.
+
diff --git a/contrib/docs/latex/deprecated/tresourc.tex b/contrib/docs/latex/deprecated/tresourc.tex
new file mode 100644 (file)
index 0000000..53ddab1
--- /dev/null
@@ -0,0 +1,335 @@
+\section{The wxWindows resource system}\label{resourceformats}
+
+wxWindows has an optional {\it resource file} facility,
+which allows separation of dialog, menu, bitmap and icon specifications
+from the application code.
+
+{\bf NOTE:} this format is now deprecated in favour of the XML-based \helpref{XRC resource system}{xrcoverview}.
+However it is still available if wxUSE\_RESOURCES is enabled.
+
+The format is similar in principle to the Windows resource file (whose ASCII form is
+suffixed .RC and whose binary form is suffixed .RES). The wxWindows resource
+file is currently ASCII-only, suffixed .WXR. Note that under Windows,
+the .WXR file does not {\it replace} the native Windows resource file,
+it merely supplements it. There is no existing native resource format in X
+(except for the defaults file, which has limited expressive power).
+
+For details of functions for manipulating resource files and loading
+user interface elements, see \helpref{wxWindows resource functions}{resourcefuncs}.
+
+You can use Dialog Editor to create resource files. Unfortunately neither
+Dialog Editor nor the .WXR format currently cover all wxWindows controls;
+some are missing, such as wxSpinCtrl, wxSpinButton, wxListCtrl, wxTreeCtrl and others.
+
+Note that in later versions of wxWindows, this resource format will be replaced
+by XML specifications that can also include sizers.
+
+\subsection{The format of a .WXR file}
+
+A wxWindows resource file may look a little odd at first. It is C++
+compatible, comprising mostly of static string variable declarations with
+wxExpr syntax within the string.
+
+Here's a sample .WXR file:
+
+\begin{verbatim}
+/*
+ * wxWindows Resource File
+ *
+ */
+
+#include "noname.ids"
+
+static char *my_resource = "bitmap(name = 'my_resource',\
+  bitmap = ['myproject', wxBITMAP_TYPE_BMP_RESOURCE, 'WINDOWS'],\
+  bitmap = ['myproject.xpm', wxBITMAP_TYPE_XPM, 'X']).";
+
+static char *menuBar11 = "menu(name = 'menuBar11',\
+  menu = \
+  [\
+    ['&File', 1, '', \
+      ['&Open File', 2, 'Open a file'],\
+      ['&Save File', 3, 'Save a file'],\
+      [],\
+      ['E&xit', 4, 'Exit program']\
+    ],\
+    ['&Help', 5, '', \
+      ['&About', 6, 'About this program']\
+    ]\
+  ]).";
+
+static char *project_resource = "icon(name = 'project_resource',\
+  icon = ['project', wxBITMAP_TYPE_ICO_RESOURCE, 'WINDOWS'],\
+  icon = ['project_data', wxBITMAP_TYPE_XBM, 'X']).";
+
+static char *panel3 = "dialog(name = 'panel3',\
+  style = '',\
+  title = 'untitled',\
+  button_font = [14, 'wxSWISS', 'wxNORMAL', 'wxBOLD', 0],\
+  label_font = [10, 'wxSWISS', 'wxNORMAL', 'wxNORMAL', 0],\
+  x = 0, y = 37, width = 292, height = 164,\
+  control = [1000, wxButton, 'OK', '', 'button5', 23, 34, -1, -1, 'my_resource'],\
+  control = [1001, wxStaticText, 'A Label', '', 'message7', 166, 61, -1, -1, 'my_resource'],\
+  control = [1002, wxTextCtrl, 'Text', 'wxTE_MULTITEXT', 'text8', 24, 110, -1, -1]).";
+\end{verbatim}
+
+As you can see, C++-style comments are allowed, and apparently include files
+are supported too: but this is a special case, where the included file
+is a file of defines shared by the C++ application code and resource file
+to relate identifiers (such as FILE\_OPEN) to integers.
+
+Each {\it resource object} is of standard \helpref{wxExpr}{wxexpr} syntax, that is,
+an object name such as {\bf dialog} or {\bf icon}, then an open
+parenthesis, a list of comma-delimited attribute/value pairs, a closing
+parenthesis, and a full stop. Backslashes are required to escape newlines,
+for the benefit of C++ syntax. If double quotation marks are used to
+delimit strings, they need to be escaped with backslash within a C++ string
+(so it is easier to use single quotation marks instead).
+
+\normalbox{{\it A note on string syntax:} A string that begins with
+an alphabetic character, and contains only alphanumeric characters,
+hyphens and underscores, need not be quoted at all. Single quotes and double
+quotes may be used to delimit more complex strings. In fact, single-quoted
+and no-quoted strings are actually called {\it words}, but are treated
+as strings for the purpose of the resource system.}
+
+A resource file like this is typically included in the application main file,
+as if it were a normal C++ file. This eliminates the need for a separate
+resource file to be distributed alongside the executable. However, the
+resource file can be dynamically loaded if desired (useful for non-C++
+languages such as Python).
+
+Once included, the resources need to be `parsed' (interpreted), because
+so far the data is just a number of static string variables. The function\rtfsp
+{\bf ::wxResourceParseData} is called early on in initialization of the application
+(usually in {\bf wxApp::OnInit}) with a variable as argument. This may need to be
+called a number of times, one for each variable. However, more than one
+resource `object' can be stored in one string variable at a time, so you can
+get all your resources into one variable if you want to.
+
+{\bf ::wxResourceParseData} parses the contents of the resource, ready for use
+by functions such as {\bf ::wxResourceCreateBitmap} and {\bf wxPanel::LoadFromResource}.
+
+If a wxWindows resource object (such as a bitmap resource) refers to a
+C++ data structure, such as static XPM data, a further call ({\bf ::wxResourceRegisterBitmapData}) needs
+to be made on initialization to tell
+wxWindows about this data. The wxWindows resource object will refer to a
+string identifier, such as `project\_data' in the example file above.
+This identifier will be looked up in a table to get the C++ static data
+to use for the bitmap or icon.
+
+In the C++ fragment below, the WXR resource file is included,
+and appropriate resource initialization is carried out in {\bf OnInit}.
+Note that at this stage, no actual wxWindows dialogs, menus, bitmaps or
+icons are created; their `templates' are merely being set up for later
+use.
+
+\begin{verbatim}
+/*
+ * File:    project.cpp
+ * Purpose: main application module
+ */
+
+#include "wx/wx.h"
+#include "project.h"
+
+// Includes the dialog, menu etc. resources
+#include "project.wxr"
+
+// Includes XPM data
+#include "project.xpm"
+
+IMPLEMENT_APP(AppClass)
+
+// Called to initialize the program
+bool AppClass::OnInit()
+{
+  wxResourceRegisterBitmapData("project_data", project_bits, project_width, project_height);
+
+  wxResourceParseData(menuBar11);
+  wxResourceParseData(my_resource);
+  wxResourceParseData(project_resource);
+  wxResourceParseData(panel3);
+  ...
+
+  return true;
+}
+\end{verbatim}
+
+The following code shows a dialog:
+
+\begin{verbatim}
+  // project.wxr contains dialog1
+  MyDialog *dialog = new MyDialog;
+  if (dialog->LoadFromResource(this, "dialog1"))
+  {
+    wxTextCtrl *text = (wxTextCtrl *)wxFindWindowByName("text3", dialog);
+    if (text)
+      text->SetValue("wxWindows resource demo");
+    dialog->ShowModal();
+  }
+  dialog->Destroy();
+\end{verbatim}
+
+Please see also the resource sample.
+
+\subsection{Dialog resource format}
+
+A dialog resource object may be used for either panels or dialog boxes, and
+consists of the following attributes. In the following, a {\it font specification}\rtfsp
+is a list consisting of point size, family, style, weight, underlined, optional facename.
+
+\begin{twocollist}\itemsep=0pt
+\twocolitemruled{Attribute}{Value}
+\twocolitem{id}{The integer identifier of the resource.}
+\twocolitem{name}{The name of the resource.}
+\twocolitem{style}{Optional dialog box or panel window style.}
+\twocolitem{title}{The title of the dialog box (unused if a panel).}.
+\twocolitem{modal}{Whether modal: 1 if modal, 0 if modeless, absent if a panel resource.}
+\twocolitem{use\_dialog\_units}{If 1, use dialog units (dependent on the dialog font size) for control sizes and positions.}
+\twocolitem{use\_system\_defaults}{If 1, override colours and fonts to use system settings instead.}
+\twocolitem{button\_font}{The font used for control buttons: a list comprising point size (integer),
+family (string), font style (string), font weight (string) and underlining (0 or 1).}
+\twocolitem{label\_font}{The font used for control labels: a list comprising point size (integer),
+family (string), font style (string), font weight (string) and underlining (0 or 1). Now obsolete; use button\_font instead.}
+\twocolitem{x}{The x position of the dialog or panel.}
+\twocolitem{y}{The y position of the dialog or panel.}
+\twocolitem{width}{The width of the dialog or panel.}
+\twocolitem{height}{The height of the dialog or panel.}
+\twocolitem{background\_colour}{The background colour of the dialog or panel.}
+\twocolitem{label\_colour}{The default label colour for the children of the dialog or panel. Now obsolete; use button\_colour instead.}
+\twocolitem{button\_colour}{The default button text colour for the children of the dialog or panel.}
+\end{twocollist}
+
+Then comes zero or more attributes named `control' for each control
+(panel item) on the dialog or panel. The value is a list of further
+elements. In the table below, the names in the first column correspond to
+the first element of the value list, and the second column details the
+remaining elements of the list. Note that titles for some controls are obsolete
+(they don't have titles), but the syntax is retained for backward compatibility.
+
+\begin{twocollist}\itemsep=0pt
+\twocolitemruled{Control}{Values}
+\twocolitem{wxButton}{id (integer), title (string), window style (string), name (string), x, y, width, height, button bitmap resource (optional string), button font spec}
+\twocolitem{wxCheckBox}{id (integer), title (string), window style (string), name (string), x, y, width, height, default value (optional integer, 1 or 0), label font spec}
+\twocolitem{wxChoice}{id (integer), title (string), window style (string), name (string), x, y, width, height, values (optional list of strings), label font spec, button font spec}
+\twocolitem{wxComboBox}{id (integer), title (string), window style (string), name (string), x, y, width, height, default text value, values (optional list of strings), label font spec, button font spec}
+\twocolitem{wxGauge}{id (integer), title (string), window style (string), name (string), x, y, width, height, value (optional integer), range (optional integer), label font spec, button font spec}
+\twocolitem{wxStaticBox}{id (integer), title (string), window style (string), name (string), x, y, width, height, label font spec}
+\twocolitem{wxListBox}{id (integer), title (string), window style (string), name (string), x, y, width, height, values (optional list of strings), multiple (optional string, wxSINGLE or wxMULTIPLE),
+label font spec, button font spec}
+\twocolitem{wxStaticText}{id (integer), title (string), window style (string), name (string), x, y, width, height, message bitmap resource (optional string), label font spec}
+\twocolitem{wxRadioBox}{id (integer), title (string), window style (string), name (string), x, y, width, height, values (optional list of strings), number of rows or cols,
+label font spec, button font spec}
+\twocolitem{wxRadioButton}{id (integer), title (string), window style (string), name (string), x, y, width, height, default value (optional integer, 1 or 0), label font spec}
+\twocolitem{wxScrollBar}{id (integer), title (string), window style (string), name (string), x, y, width, height, value (optional integer),
+page length (optional integer), object length (optional integer), view length (optional integer)}
+\twocolitem{wxSlider}{id (integer), title (string), window style (string), name (string), x, y, width, height, value (optional integer), minimum (optional integer), maximum (optional integer),
+label font spec, button font spec}
+\twocolitem{wxTextCtrl}{id (integer), title (string), window style (string), name (string), x, y, width, height, default value (optional string),
+label font spec, button font spec}
+\end{twocollist}
+
+\subsection{Menubar resource format}
+
+A menubar resource object consists of the following attributes.
+
+\begin{twocollist}\itemsep=0pt
+\twocolitemruled{Attribute}{Value}
+\twocolitem{name}{The name of the menubar resource.}
+\twocolitem{menu}{A list containing all the menus, as detailed below.}
+\end{twocollist}
+
+The value of the {\bf menu} attribute is a list of menu item specifications, where each menu
+item specification is itself a list comprising:
+
+\begin{itemize}\itemsep=0pt
+\item title (a string)
+\item menu item identifier (a string or non-zero integer, see below)
+\item help string (optional)
+\item 0 or 1 for the `checkable' parameter (optional)
+\item optionally, further menu item specifications if this item is a pulldown menu.
+\end{itemize}
+
+If the menu item specification is the empty list ([]), this is interpreted as a menu separator.
+
+If further (optional) information is associated with each menu item in a future release of wxWindows,
+it will be placed after the help string and before the optional pulldown menu specifications.
+
+Note that the menu item identifier must be an integer if the resource is being
+included as C++ code and then parsed on initialisation. Unfortunately,\rtfsp
+\#define substitution is not performed inside strings, and
+therefore the program cannot know the mapping. However, if the .WXR file
+is being loaded dynamically, wxWindows will attempt to replace string
+identifiers with \#defined integers, because it is able to parse
+the included \#defines.
+
+\subsection{Bitmap resource format}
+
+A bitmap resource object consists of a name attribute, and one or more {\bf bitmap} attributes.
+There can be more than one of these to allow specification of bitmaps that are optimum for the
+platform and display.
+
+\begin{itemize}\itemsep=0pt
+\item Bitmap name or filename.
+\item Type of bitmap; for example, wxBITMAP\_TYPE\_BMP\_RESOURCE. See class reference under {\bf wxBitmap} for
+a full list).
+\item Platform this bitmap is valid for; one of WINDOWS, X, MAC and ANY.
+\item Number of colours (optional).
+\item X resolution (optional).
+\item Y resolution (optional).
+\end{itemize}
+
+\subsection{Icon resource format}
+
+An icon resource object consists of a name attribute, and one or more {\bf icon} attributes.
+There can be more than one of these to allow specification of icons that are optimum for the
+platform and display.
+
+\begin{itemize}\itemsep=0pt
+\item Icon name or filename.
+\item Type of icon; for example, wxBITMAP\_TYPE\_ICO\_RESOURCE. See class reference under {\bf wxBitmap} for
+a full list).
+\item Platform this bitmap is valid for; one of WINDOWS, X, MAC and ANY.
+\item Number of colours (optional).
+\item X resolution (optional).
+\item Y resolution (optional).
+\end{itemize}
+
+\subsection{Resource format design issues}
+
+The .WXR file format is a recent addition and subject to change.
+The use of an ASCII resource file format may seem rather inefficient, but this
+choice has a number of advantages:
+
+\begin{itemize}\itemsep=0pt
+\item Since it is C++ compatible, it can be included into an application's source code,
+eliminating the problems associated with distributing a separate resource file
+with the executable. However, it can also be loaded dynamically from a file, which will be required
+for non-C++ programs that use wxWindows.
+\item No extra binary file format and separate converter need be maintained for the wxWindows project
+(although others are welcome to add the equivalent of the Windows `rc' resource
+parser and a binary format).
+\item It would be difficult to append a binary resource component onto an executable
+in a portable way.
+\item The file format is essentially the \helpref{wxExpr}{wxexpr} object format, for which
+a parser already exists, so parsing is easy. For those programs that use wxExpr
+anyway, the size overhead of the parser is minimal.
+\end{itemize}
+
+The disadvantages of the approach include:
+
+\begin{itemize}\itemsep=0pt
+\item Parsing adds a small execution overhead to program initialization.
+\item Under 16-bit Windows especially, global data is at a premium.
+Using a .RC resource table for some wxWindows resource data may be a partial solution,
+although .RC strings are limited to 255 characters.
+\item Without a resource preprocessor, it is not possible to substitute integers
+for identifiers (so menu identifiers have to be written as integers in the resource
+object, in addition to providing \#defines for application code convenience).
+\end{itemize}
+
+\subsection{Compiling the resource system}
+
+To enable the resource system, set {\bf wxUSE\_WX\_RESOURCES} to 1 in setup.h.
+