]> git.saurik.com Git - wxWidgets.git/blame - utils/configtool/docs/manual/configtool.tex
Added SetFocus and SetFocusIgnoringChildren to wx.Panel
[wxWidgets.git] / utils / configtool / docs / manual / configtool.tex
CommitLineData
d7463f75
JS
1\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report}%
2\twocolwidtha{4cm}%
3\definecolour{black}{0}{0}{0}%
4\definecolour{cyan}{0}{255}{255}%
5\definecolour{green}{0}{255}{0}%
6\definecolour{magenta}{255}{0}{255}%
7\definecolour{red}{255}{0}{0}%
8\definecolour{blue}{0}{0}{200}%
9\definecolour{yellow}{255}{255}{0}%
10\definecolour{white}{255}{255}{255}%
11%\input{psbox.tex}
12\newcommand{\commandref}[2]{\helpref{{\tt $\backslash$#1}}{#2}}%
13\newcommand{\commandrefn}[2]{\helprefn{{\tt $\backslash$#1}}{#2}\index{#1}}%
14\newcommand{\commandpageref}[2]{\latexignore{\helprefn{{\tt $\backslash$#1}}{#2}}\latexonly{{\tt $\backslash$#1} {\it page \pageref{#2}}}\index{#1}}%
15\newcommand{\indexit}[1]{#1\index{#1}}%
16\newcommand{\inioption}[1]{{\tt #1}\index{#1}}%
17\parskip=10pt%
18\parindent=0pt%
19\title{\cttitle}%
20\author{(c) Julian Smart, 2003}%
21\makeindex%
22\begin{document}%
23%\maketitle%
24\begin{center}
25\image{}{logo.gif}
26
27{\large {\bf Version \ctversion}}
28
29(c) Julian Smart
30\end{center}
31
32\pagestyle{fancyplain}%
33\bibliographystyle{plain}%
34\pagenumbering{arabic}%
35\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}%
36\setfooter{\thepage}{}{}{}{}{\thepage}%
37\tableofcontents%
38
39
40\chapter{Welcome to \ctshortname}%
41\setheader{{\it Welcome}}{}{}{}{}{{\it Welcome}}%
42\setfooter{\thepage}{}{}{}{}{\thepage}%
43
be5a51fb 44Welcome to \ctname, the easy way to configure wxWidgets.
d7463f75
JS
45Instead of tweaking a setup.h file, or typing a long configure
46command, you can now check and uncheck options in a convenient
47GUI tool, read the relevant reference document for each
48option, and save the setup.h file or configure command file.
49
50\begin{itemize}\itemsep=0pt
51\item For release information, please see \helpref{Release Notes}{releasenotes}.
52\item For a tour of the main windows in \ctshortname, please see the \helpref{User Interface}{documentui} section.
53%\item For a quick tutorial, go straight to \helpref{Getting Started}{gettingstarted}.
54\item For tips and troubleshooting, see the \helpref{How To}{howto} section.
55\end{itemize}
56
57\chapter{Contacts}%
58\setheader{{\it Contacts}}{}{}{}{}{{\it Contacts}}%
59\setfooter{\thepage}{}{}{}{}{\thepage}%
60
61The \ctname home page is at:
62
63{\tt \cturl}
64
65For help with \ctshortname or to report bugs,
be5a51fb 66please go to the wxWidgets web site.
d7463f75
JS
67
68\section{Credits}
69
70\begin{center}
71{\bf (c) 2003 Julian Smart, Anthemion Software}\hrule
72
73{\it Designed by}
74
75{\bf Julian Smart}
76
77{\it Programmed by}
78
79{\bf Julian Smart}
80
81{\it Additional programming by}
82
be5a51fb 83{\bf The wxWidgets development team}
d7463f75
JS
84
85\end{center}
86
87\chapter{Installation}%
88\setheader{{\it Installation}}{}{}{}{}{{\it Installation}}%
89\setfooter{\thepage}{}{}{}{}{\thepage}%
90
91{\bf On Windows:}
92
93Please run the installation program. This will create a program
94folder called \ctname (or other name if you have chosen a different name). This
95folder can be accessed via the Start menu under Programs. The
96folder contains shortcuts to the program, help file, and Uninstall program.
97
98You can uninstall \ctshortname either by double-clicking the Uninstall \ctshortname icon
99in the \ctname group, or by invoking the Windows Control Panel,
100double-clicking on Add/Remove Programs, and then choosing the \ctshortname item.
101
102{\bf On Linux:}
103
104Unarchive wxconfigtool-x.xx.tar.gz to a suitable location
105in your filesystem. A directory of the form wxconfigtool-x.xx
106(where x.xx is the version number) will be created.
107
108Add the location to your PATH and run the application with
109'wxconfigtool'. You may wish to set the environment variable
be5a51fb 110WXCONFIGTOOLDIR so that wxWidgets Configuration Tool can find its data files.
d7463f75
JS
111
112For example:
113
114\begin{verbatim}
115 % cd ~
116 % tar xvfz wxconfigtool-1.01.tar.gz
117 % export WXCONFIGTOOLDIR=`pwd`/wxconfigtool-1.01
118 % export PATH=$PATH:$WXCONFIGTOOLDIR
119 % wxconfigtool
120\end{verbatim}
121
122If you don't want to change your PATH, you could place a
123script in a location already on your PATH, such as
124/usr/local/bin. For example:
125
126\begin{verbatim}
127 #!/bin/sh
be5a51fb 128 # Invokes wxWidgets Configuration Tool
d7463f75
JS
129 export WXCONFIGTOOLDIR=/home/mydir/wxconfigtool-1.01
130 $WXCONFIGTOOLDIR/wxconfigtool $*
131\end{verbatim}
132
133{\bf On Mac:}
134
be5a51fb 135Download and unarchive the HQX file, and drag the wxWidgets Configuration Tool folder to an appropriate location
d7463f75
JS
136on your hard disk. Then double-click on the 'wxconfigtool' executable.
137
138\chapter{Release notes}\label{releasenotes}%
139\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
140\setfooter{\thepage}{}{}{}{}{\thepage}%
141
142For licencing information, please see
143the licence files in the installation directory:
144
145\begin{itemize}\itemsep=0pt
146\item licendoc.txt
147\item gpl.txt
148\item lgpl.txt
149\item preamble.txt
150\end{itemize}
151
152\section{What's New?}\label{whatsnew}
153
d9a41dfe
JS
154{\bf Version 1.02, June 16th 2003}
155
156\begin{itemize}\itemsep=10pt
157\item The <b>Platform</b> group has been renamed
158<b>Target</b>, since there can be multiple targets
159per platform.
160\item The Windows/Universal target has been added.
161\end{itemize}
162
e7767867
JS
163{\bf Version 1.01, June 14th 2003}
164
165\begin{itemize}\itemsep=10pt
166\item Added Find facility.
167\end{itemize}
168
d7463f75
JS
169{\bf Version 1.0, June 11th 2003}
170
171\begin{itemize}\itemsep=10pt
172\item Initial version.
173\end{itemize}
174
175\section{Known issues}\label{knownissues}
176
177The following problems are known to exist:
178
179\begin{itemize}\itemsep=10pt
180\item No issues as yet.
181\end{itemize}
182
183\section{To Do}\label{todo}
184
185There are many things that could be done to make
186this tool more useful, including the following.
187
188\begin{itemize}\itemsep=10pt
189\item Allow full platform-specific dependency specification
190as mentioned in \helpref{How to specify platform-specific dependencies}{platformdependencies}.
191\item Allow \ctshortname to invoke configure and make, with an output
192window showing build status.
193\item Distinguish between template files and settings file; allow
194application of template files to settings files, and vice versa.
195\item Implement support for string, integer, float settings.
196\item Write a configuration browser.
197\item Add description, date and author information to the settings file.
198\item Command-line mode with ability to change settings from
199the command-line. Just like configure :-)
200\item Decide on standard location for settings files.
201\item Integrate with new (and old?) build systems.
202\item Allow customization of font and colour.
203\item Show all calculated dependencies for each config item.
204\item Add a search facility.
205\end{itemize}
206
207\section{Differences between Windows, Linux and Mac versions}\label{platformdifferences}
208
be5a51fb 209Although every effort has been made to make wxWidgets Configuration Tool work
d7463f75
JS
210the same way on different environments, some small differences
211are inevitable.
212
213\begin{itemize}\itemsep=10pt
214\item Screenshots illustrate the Windows version; the Linux
215and Mac windows and dialogs will be slightly different, but with equivalent
216functionality.
217\item Dialogs under Windows often have a '?' button on the title
218bar, for context-sensitive help. Under Linux, this button is
219on the dialog itself, usually near the OK or Close button.
220On the Mac, context-sensitive help is not yet supported.
221\item Under Linux, online help invoked from the {\bf Help} button
222in modal dialogs is itself modal. That is, you have to quit
223the help window to return to the dialog. On Windows, you can
224switch back to the dialog without quitting the help viewer.
225\item On Windows and Linux, context menus are invoked with
226right-click. On Mac, use control-click.
227\end{itemize}
228
229\chapter{\ctshortname user interface}\label{documentui}%
230\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
231\setfooter{\thepage}{}{}{}{}{\thepage}%
232
233This section describes the main elements of the \ctname user interface.
234
235The \ctshortname main window looks like this:
236
237\begin{center}
238\image{}{screen01.png}
239\end{center}
240
241\section{Menubar}
242
243%\image{}{menubar.gif}
244
245The \helpref{menubar}{menubarcommands} allows you to perform many functions
246such as loading and saving files, creating new configuration items,
247undo/redo, invoking help, and so on. Try to remember the keyboard shortcuts that are
248displayed next to the menu item labels - they can save you a lot of time
249and make your \ctshortname experience more natural and enjoyable.
250
251\section{Main toolbar}
252
253%\image{}{toolbar.gif}
254
255The main toolbar gives quick access to commonly-used commands.
256If you hold your mouse pointer over the toolbar buttons, a tooltip pops up with a short description
257of the button's function.
258
259You can choose to hide the toolbar altogether
260using the {\bf View | Show Toolbar} menu command.
261
262You can find out more about in the \helpref{toolbar commands}{toolbarcommands} topic.
263
264\section{Configuration window}
265
266%\image{}{configwindow.gif}
267
268The biggest area of \ctshortname is taken up by the configuration window.
269
270On the left is a hierarchy of settings that can be customized.
271You can check and uncheck most settings, but you will find that
272many settings are disabled because they depend on other settings
273being enabled (or disabled).
274
275As an end user, you will probably only want to enable or disable
276options, but it's possible you may wish to update the structure
277of the settings file itself. In which case you can use the
278{\bf Edit} menu to add, remove, or rename items; and you can
279add custom properties to an item, but this is usually only
280useful for a developer of the tool to do.
281
282Undo/Redo can be applied to most editing commands, but (currently) not
283enabling and disabling operations.
284
285There are three tabs in the main window: {\bf Properties}, {\bf Setup.h},
286and {\bf Configure}. The Properties tab contains the properties
287for the selected option. Setup.h shows the setup file,
288and there are buttons to allow you to copy the file to the clipboard
289and regenerate the file. Similarly, the Configure tab shows
290the script that will invoke configure.
291
292The property editor allows you to show detailed information
293about the option. A description for each property is shown
294when you click on the property. You can also edit property values,
295either by clicking and typing, or by double-clicking or clicking
296on the {\bf Edit...} button. If a special editor is defined for
297the property type, it will be shown.
298
299You can invoke help for the selected option, by clicking
300on the question mark toolbar button or the {\bf Help | Configuration Item Help} menu
301item. If there is a help topic defined for the option, the
be5a51fb 302wxWidgets reference manual will be opened at that topic.
d7463f75
JS
303
304\begin{comment}
305\chapter{Getting started: a step-by-step guide}\label{gettingstarted}%
306\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
307\setfooter{\thepage}{}{}{}{}{\thepage}%
308
309This section will quickly get you up and running with \ctshortname. Click
310on \helpref{Step 1}{step1} to start. If you are
311using a Mac, please interpret 'left-click' to mean 'click', and
312'right-click' to mean 'control-click'.
313
314\section{Step 1: creating a new configuration}\label{step1}
315
316When you run \ctshortname for the first time, you are presented with an
317empty configuration window.
318
319Go to \helpref{Step 2}{step2} to learn how to do the next thing.
320
321\section{Step 2: doing something else}\label{step2}
322
323Go to \helpref{Step 3}{step3} to learn how to do a third thing.
324
325\section{Step 3: a third thing}\label{step3}
326
327Go to \helpref{Step 4}{step4} to learn about saving your document and reloading it.
328
329\section{Step 4: saving and loading documents}\label{step4}
330
331You may wish to save a document, so you can come back to it later. Click on {\bf File | Save} or
332the \image{}{save.png} toolbar button. The first time you save the file, you will be prompted
333for a filename: you can accept the default one provided, or choose another.
334
335To reload the document, click on {\bf File | Open...} or the \image{}{open.gif} toolbar button.
336If you are working on another document, you will be prompted to save it first.
337
338Go to \helpref{Step 5: generating configurations}{step5}
339
340\section{Step 5: generating configurations}\label{step5}
341
342Todo.
343
344Go to \helpref{Step 6: where next?}{step6}
345
346\section{Step 6: where next?}\label{step6}
347
348Congratulations! You have learnt how to create, edit, save, and load configuration
349files.
350
351To get to know \ctshortname more thoroughly, here are some further things you
352can do.
353
354\begin{itemize}
355\item Read the \helpref{How To}{howto} section.
356\item Use the help facilities: most dialogs have a {\bf Help} button for a general description, and they
357also have a {\bf "?"} button for getting information on individual controls on a dialog.
358\item Explore the menubar and the menus that appear when you right-click over
359the window background and individual cards.
360\end{itemize}
361
362\end{comment}
363
364\chapter{Using menubar commands}\label{menubarcommands}%
365\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
366\setfooter{\thepage}{}{}{}{}{\thepage}%
367
368%\image{}{menubar.gif}
369
370This section describes the menubar commands. Commands
371that are not available in the current context are disabled (shown in grey).
372
373\section{File menu}
374
375The File menu shows commands that are mostly related to working
376with files.
377
378\begin{twocollist}\itemsep=0pt
379\twocolitem{{\bf New...} (Ctrl+N)}{Creates a new \ctshortname document.}
380\twocolitem{{\bf Open...} (Ctrl+O)}{Opens an existing document.}
381\twocolitem{{\bf Close} (Ctrl+W)}{Closes the current document.}
382\twocolitem{\hrule}{\htmlonly{\hrule}}
383\twocolitem{{\bf Save} (Ctrl+S)}{Saves the current document.}
384\twocolitem{{\bf Save As...}}{Saves the current document under a new name.}
385\twocolitem{\hrule}{\htmlonly{\hrule}}
386\twocolitem{{\bf Save Setup.h...} (Ctrl+H)}{Saves the generated setup.h file in the specified location.}
387\twocolitem{{\bf Save Configure Script...} (Ctrl+G)}{Saves the generated script containing a configure command in the specified location.}
388\twocolitem{\hrule}{\htmlonly{\hrule}}
afc51590
JS
389\twocolitem{{\bf Go} (F5)}{Saves the generated setup.h file or configurewx.sh script (according to the default setting) in the last-saved.}
390\twocolitem{\hrule}{\htmlonly{\hrule}}
d7463f75
JS
391\twocolitem{{\bf Exit} (Alt+F4)}{Exits the program.}
392\end{twocollist}
393
394\section{Edit menu}
395
396The Edit menu shows commands that are related to editing
397document elements.
398
399\twocolwidtha{5cm}
400\begin{twocollist}\itemsep=0pt
401\twocolitem{{\bf Undo} (Ctrl+Z)}{Undoes the last undoable action.}
402\twocolitem{{\bf Redo} (Ctrl+Y)}{Redoes the last redoable action.}
403\twocolitem{\hrule}{\htmlonly{\hrule}}
404\twocolitem{{\bf Cut} (Ctrl+T)}{Cuts the selected option and places it on the clipboard.}
405\twocolitem{{\bf Copy} (Ctrl+C)}{Copies the selected option.}
406\twocolitem{{\bf Paste} (Ctrl+V)}{Pastes an option from the clipboard to the position. Whether the
407option is pasted as a child or sibling of the selection is determined by whether
408the selection is a folder or not. If you want finer control, right-click on the
409item in the tree control and select one of the paste commands.}
410\twocolitem{\hrule}{\htmlonly{\hrule}}
411\twocolitem{{\bf Add Option}}{Shows a menu for adding one of several option types.}
412\twocolitem{\hrule}{\htmlonly{\hrule}}
413\twocolitem{{\bf Custom Property}}{Shows a menu for adding, editing or deleting a custom option property.}
414\twocolitem{\hrule}{\htmlonly{\hrule}}
415\twocolitem{{\bf Delete Option}}{Deletes the selected option.}
416\twocolitem{{\bf Rename Option}}{Shows a dialog for renaming the selected option.}
e7767867
JS
417\twocolitem{\hrule}{\htmlonly{\hrule}}
418\twocolitem{{\bf Find...}}{Shows the Find dialog, allowing you to search for text
419within name, description and notes for each item.}
d7463f75
JS
420\end{twocollist}
421
422\section{View menu}
423
424The View menu gives you commands related to showing or hiding windows
425and various other preferences.
426
427\twocolwidtha{5cm}
428\begin{twocollist}\itemsep=0pt
429\twocolitem{{\bf Show Toolbar}}{Shows or hides the toolbar, beneath the menubar.}
430\twocolitem{\hrule}{\htmlonly{\hrule}}
431\twocolitem{{\bf Settings...} (Ctrl+T)}{Shows the \helpref{Settings Dialog}{settingsdialog}, which
432relate to application-wide settings.}
433\end{twocollist}
434
435\section{Help menu}
436
437The Help menu gives you commands related to getting help.
438
439\twocolwidtha{5cm}
440\begin{twocollist}\itemsep=0pt
441\twocolitem{{\bf Contents}}{Invokes the on-line help, showing the contents page.}
be5a51fb 442\twocolitem{{\bf wxWidgets Help Contents}}{Invokes the on-line wxWidgets reference manual, showing the contents page.}
d7463f75 443\twocolitem{\hrule}{\htmlonly{\hrule}}
be5a51fb 444\twocolitem{{\bf Configuration Option Help} (F1)}{Invokes the on-line wxWidgets reference manual at the topic for the selected option (if a topic
d7463f75
JS
445is defined).}
446\twocolitem{{\bf What's This?}}{Click to get help on a window or configuration option.}
447\twocolitem{\hrule}{\htmlonly{\hrule}}
448\twocolitem{{\bf About...}}{Displays a dialog giving a brief description of the program.}
449\end{twocollist}
450
451\chapter{Using context menu commands}\label{contextmenucommands}%
452\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
453\setfooter{\thepage}{}{}{}{}{\thepage}%
454
455This section describes the context menu commands available when you right-click.
456On the Mac, this is achieved with control-click.
457
458\section{Configuration tree context menu}
459
460This menu is shown when you right-click over the configuration tree window background.
461On the Mac, this is achieved with control-click.
462
463\twocolwidtha{5cm}
464\begin{twocollist}\itemsep=0pt
465\twocolitem{{\bf Paste before this option}}{Pastes the clipboard option before the clicked-on option.}
466\twocolitem{{\bf Paste after this option}}{Pastes the clipboard option after the clicked-on option.}
467\twocolitem{{\bf Paste as child of this option}}{Pastes the clipboard option as a child of the clicked-on option,
468if it is a group option.}
469\twocolitem{\hrule}{\htmlonly{\hrule}}
470\twocolitem{{\bf C&opy}}{Copies the clicked-on option to the internal clipboard.}
471\twocolitem{{\bf Cu&t}}{Copies the clicked-on option to the internal clipboard, and
472deletes the option from the tree.}
473\end{twocollist}
474
475\chapter{Using toolbar commands}\label{toolbarcommands}%
476\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
477\setfooter{\thepage}{}{}{}{}{\thepage}%
478
479This section describes the toolbar commands.
480
481%\image{}{toolbar.gif}
482
483The toolbar provides quick access to commonly-used
484commands.
485
486\twocolwidtha{5cm}
487\begin{twocollist}\itemsep=0pt
488\twocolitem{\image{}{new.png}{\bf New Document}}{Creates a new document.}
489\twocolitem{\image{}{open.png}{\bf Open Document}}{Opens an existing document, closing the currently open document.}
490\twocolitem{\image{}{save.png}{\bf Save Document}}{Saves the current document.}
491\twocolitem{\hrule}{\htmlonly{\hrule}}
492\twocolitem{\image{}{undo.png}{\bf Undo}}{Undoes the last command.}
493\twocolitem{\image{}{redo.png}{\bf Redo}}{Redoes the last command.}
494\twocolitem{\hrule}{\htmlonly{\hrule}}
495\twocolitem{\image{}{copy.png}{\bf Copy}}{Copies the selected option to an internal clipboard.}
496\twocolitem{\image{}{cut.png}{\bf Cut}}{Cuts the selected option and copies it to the internal clipboard..}
497\twocolitem{\image{}{paste.png}{\bf Paste}}{Pastes the option from the clipboard to the configuration tree.}
498\twocolitem{\hrule}{\htmlonly{\hrule}}
afc51590
JS
499\twocolitem{\image{}{go.png}{\bf Go}}{Saves the generated setup.h file or configurewx.sh script (according to the default setting) in the last-saved.}
500\twocolitem{\hrule}{\htmlonly{\hrule}}
be5a51fb 501\twocolitem{\image{}{help.png}{\bf Help}}{Shows the wxWidgets manual topic for the
d7463f75
JS
502\twocolitem{\image{}{helpcs.png}{\bf Context Help}}{Shows a context-sensitive help
503cursor; click on a window to show brief help about that window.}
504selected configuration item.}
505\end{twocollist}
506
507\chapter{Using dialogs}\label{dialogs}%
508\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
509\setfooter{\thepage}{}{}{}{}{\thepage}%
510
511Most dialogs have a {\bf "?"} button on their caption to provide context-sensitive help.
512Click on this and then on a control
513in a dialog to get quick help on that control. You can also click on the {\bf Help} button
514for more detailed help on the dialog.
515
516\section{Settings dialog}\label{settingsdialog}
517
518This dialog has a number of tabs to allow you to
519edit different categories of settings that are applicable
520to the application as a whole.
521
522\subsection{General settings dialog}\label{generalapplicationsettingsdialog}
523
524The General Settings Dialog allows you to set a variety of \ctshortname options.
525
526\twocolwidtha{5cm}
527\begin{twocollist}\itemsep=0pt
528\twocolitem{{\bf Load last document on startup}}{If checked, the last viewed document will
529be reloaded when \ctshortname starts up.}
530% If the application terminated abnormally, this
531%option will be switched off the next time \ctshortname runs in case there was a problem with
532%the document file.}
533%\twocolitem{{\bf Auto-save document}}{If checked, \ctshortname will regularly
534%save the document to a temporary file. If \ctshortname or the operating system
535%should terminate abnormally, the next time \ctshortname is run it will
536%check for an auto-save file and ask if you wish to open that file.}
537%\twocolitem{{\bf Show welcome dialog on startup}}{If checked, the \helpref{Welcome Dialog}{welcomedialog} will
538%be shown on startup.}
539\twocolitem{{\bf Show tooltips}}{If checked, tooltips will be shown in most dialogs, when you hover
540the mouse pointer over a control.}
541\end{twocollist}
542
543\subsection{Location settings dialog}\label{locationsettingsdialog}
544
545The Location Settings Dialog allows you to choose various locations.
546
547\twocolwidtha{5cm}
548\begin{twocollist}\itemsep=0pt
be5a51fb 549\twocolitem{{\bf wxWidgets hierarchy}}{This determines where \ctshortname will look
d7463f75
JS
550when prompting for filenames.}
551\twocolitem{{\bf Use WXWIN environment variable}}{Check this to use
552the value of the WXWIN variable instead of the path entered in the text field.}
553\end{twocollist}
554
555\chapter{Using keyboard shortcuts}\label{keyboardshortcuts}%
556\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
557\setfooter{\thepage}{}{}{}{}{\thepage}%
558
559You can make your \ctshortname experience even smoother by
560using handy keyboard shortcuts. Note that some shortcuts are
561dependent on context: that is, which control has the focus.
562
563\twocolwidtha{3cm}
564\begin{twocollist}\itemsep=0pt
565\twocolitem{{\bf Ctrl + C}}{Copies the selected option to the clipboard.}
566\twocolitem{{\bf Ctrl + H}}{Saves the setup.h file.}
567\twocolitem{{\bf Ctrl + G}}{Saves the configure script file.}
568\twocolitem{{\bf Ctrl + N}}{Creates a new \ctshortname file.}
569\twocolitem{{\bf Ctrl + O}}{Opens a \ctshortname file.}
570\twocolitem{{\bf Ctrl + S}}{Saves the current \ctshortname document.}
571\twocolitem{{\bf Ctrl + T}}{Shows the \helpref{Settings Dialog}{settingsdialog}.}
572\twocolitem{{\bf Ctrl + V}}{Pastes the option on the clipboard (if any) to the configuration tree.}
573\twocolitem{{\bf Ctrl + W}}{Closes the current \ctshortname document.}
574\twocolitem{{\bf Ctrl + X}}{Cuts the selected option and copies it to the clipboard.}
575\twocolitem{{\bf Ctrl + Y}}{Redoes the previously undone edit.}
576\twocolitem{{\bf Ctrl + Z}}{Undoes the previous edit.}
577\twocolitem{{\bf F1}}{Shows the online help for the selected item.}
578\twocolitem{{\bf Alt + F4}}{Closes \ctshortname.}
579\end{twocollist}
580
581\chapter{Reference}\label{reference}%
582\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
583\setfooter{\thepage}{}{}{}{}{\thepage}%
584
585\section{The dependency evaluation algorithm}
586
587\ctshortname pre-calculates a list of all dependencies
588for each option -- this is a kind of reverse-pointer version
589of all the dependencies associated with each item. So
590if option {\bf a} has a {\bf requires} option specifying
591{\bf b}, then {\bf b} will end up with a dependency list
592containing {\bf a} and any other options that refer to it.
593
594When the user enables or disables an option ({\bf b}),
595the list of dependencies for that option is visited,
596and for each mentioned option ({\bf a}), all its dependency information
597is evaluated. This may result in the option {\bf a} being
598(de)selected and perhaps deactivated (made insensitive).
599
600The results of this change are propagated to dependents of
601{\bf a}, recursively, so several options may flip state
602as the result of checking the original option.
603
604The parent-child relationship of a check or radio
605group and its children is considered to be a virtual
606'requires' dependency. Mutual exclusivity is also
607taken into account if the option is a radio option
608or group. For each radio option, all other mutually
609exclusive options need to be listed. See the
d9a41dfe 610{\bf Target} group for an example of this.
d7463f75 611
afc51590
JS
612The results of these dependencies can be overridden by
613indeterminate-if, which is done last of all and can
614make the option user-selectable when otherwise it
615would be constrained to be enabled or disabled.
616
d7463f75
JS
617\section{How \ctshortname generates the configure commands}
618
619If the {\bf configure} property isn't empty,
620\ctshortname will output the string as a parameter
621to configure.
622
623The configure command is taken to be the command to
624use if the option is checked. If the option is
625unchecked, the 'enable' or 'with' is replaced with
626'disable' or 'without'.
627
628TODO: should we distinguish between the case
629where a setting is not passed to configure (using
630the default), versus the case where it's specified but disabled?
631It's probably a good idea to make all the options
632explicit, but on the other hand it makes for a very long
633command line.
634
635\ctshortname checks for the presence of a
636{\bf builtin} custom boolean property and appends 'builtin' or
637'sys' to the configure command depending on where
638the {\bf builtin} setting is checked or unchecked.
639We also allow for passing strings, e.g. for --with-rpath=DIR,
640by using the {\bf value} custom string property.
641
642\section{How \ctshortname generates the setup.h file}
643
d9a41dfe 644The {\bf Target} group is ignored. In all other
d7463f75
JS
645cases, if the setting is prefixed by wxUSE_...
646and it's a boolean setting, \ctshortname will
647output 1 or 0 depending on the setting state.
648
649A few settings that don't have the wxUSE_...
650convention are also checked for and processed.
651
652
653\chapter{How To...}\label{howto}%
654\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
655\setfooter{\thepage}{}{}{}{}{\thepage}%
656
657A variety of topics to help you get the best from \ctshortname.
658
659\section{How to specify dependencies}\label{dependencies}
660
661To ensure consistency throughout the configuration,
662\ctshortname allows specification of dependencies, essentially
663a list of option names that should be considered in evaluating
664whether an option should be enabled or disabled. In addition,
665if the option is constrained to always be disabled
666or enabled in the current context, then it is greyed out
667(deactivated) to prevent the user from changing the state.
668
afc51590
JS
669There are five kinds of dependencies: requires, precludes,
670enabled-if, enabled-if-not, and indeterminate-if. Each one represents a
d7463f75
JS
671relationship between the current option (a) and one
672or more named options (b). For the sake of argument
673we will consider only one other option, but multiple
674options are taken to mean (b1 or b2 or b3 or ...)
675Below the allowed combined states of a and b are
676listed for each kind of dependency.
677
6781. a {\bf requires} b
679
680For example, wxUSE_DRAG_AND_DROP requires wxUSE_OLE.
681
682\begin{verbatim}
683 a b
684
685 1 1
686 0 1
687 0 0
688\end{verbatim}
689
6902. a {\bf precludes} b
691
692For example, wxUSE_ODBC precludes wxUSE_UNICODE.
693
694\begin{verbatim}
695 a b
696
697 1 0
698 0 0
699 0 1
700\end{verbatim}
701
702
7033. a {\bf enabled-if} b
704
705For example, __WXUNIVERSAL__ enabled-if X11 or MGL
706
707\begin{verbatim}
708 a b
709
710 1 1
711 1 0
712 0 0
713\end{verbatim}
714
7154. a {\bf enabled-if-not} b
716
717For example, wxUSE_TOOLBAR_SIMPLE enabled-if-not wxUSE_TOOLBAR_NATIVE.
718
719\begin{verbatim}
720 a b
721
722 1 0
723 0 1
724 1 1
725\end{verbatim}
726
afc51590
JS
7275. a {\bf indeterminate-if} b
728
729For example, wxUSE_UNICODE indeterminate-if Custom.
730
731\begin{verbatim}
732 a b
733
734 ? 1
735\end{verbatim}
736
737This overrides all the other dependencies, and allows you
738to make an option user-choosable in some circumstances,
739when otherwise it would be constrained to be either enabled or
740disabled. You may need to use an intermediate option to
741make sensible use of this: for example make the intermediate
742option dependent on a number of factors, such as Unicode not being
743available on some platforms.
744
d7463f75
JS
745\section{How to specify platform-specific dependencies}\label{platformdependencies}
746
747You can associate one or more options as part of the
748option's {\bf context}. In the case of wxUSE_OLE,
749the context contains __WXMSW__, because it's a Windows-specific
750option. This is used when calculating dependencies, as
751follows. If either option involved in a dependency
752relationship is not part of the current context, that
753is, none of the options in its {\bf context} property is currently
754enabled, then it is ignored in the dependency calculation.
755
756This allows the dependency 'wxUSE_DRAG_AND_DROP requires wxUSE_OLE'
757to only be evaluated when __WXMSW__ is enabled.
758
759It doesn't quite cover all bases, however, because
760it cannot express that the {\it dependency} itself
761is platform specific. You might have a platform-specific
762dependency that exists between two options that are
763perfectly valid for any platform. For example, we
764can't capture the notion that wxUSE_LISTBOX
765should be required if wxUSE_COMBOBOX is set,
766but only for __WXUNIVERSAL__. We could do it
767by complicating the dependency syntax, for example:
768
769wxUSE_COMBOBOX requires wxUSE_LISTBOX:__WXUNIVERSAL__
770
771This means that the dependency should only be
772evaluated if __WXUNIVERSAL__ is enabled.
773This has not been implemented yet.
774
775\section{How to specify custom properties}\label{customproperties}
776
777You can add custom properties to any option, but
778currently only {\bf option} and {\bf value} are
779recognised by \ctshortname.
780
781\ctshortname checks for the presence of a
782{\bf builtin} boolean custom property and appends 'builtin' or
783'sys' to the configure command depending on where
784the {\bf builtin} setting is checked or unchecked.
785We also allow for passing strings, e.g. for --with-rpath=DIR,
786by using the {\bf value} string custom property.
787
788\begin{comment}
789
790\begin{helpglossary}
791
792\gloss{thing}\label{thing}
793
794A glossary entry.
795
796\end{helpglossary}
797\end{comment}
798
799\rtfonly{%
800\addcontentsline{toc}{chapter}{Index}
801\printindex%
802\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}%
803\setfooter{\thepage}{}{}{}{}{\thepage}%
804}
805\winhelponly{
806\chapter{Popups}\label{popups}
807
808} % WinHelp only
809
810\end{document}