This commit was manufactured by cvs2svn to create tag 'cnrisync'.
[python/dscho.git] / Doc / libfl.tex
blobd5332a0602cd5b9f5629bb1b8fe729f816d8ebd6
1 \section{Built-in Module \sectcode{fl}}
2 \bimodindex{fl}
4 This module provides an interface to the FORMS Library by Mark
5 Overmars. The source for the library can be retrieved by anonymous
6 ftp from host \samp{ftp.cs.ruu.nl}, directory \file{SGI/FORMS}. It
7 was last tested with version 2.0b.
9 Most functions are literal translations of their C equivalents,
10 dropping the initial \samp{fl_} from their name. Constants used by
11 the library are defined in module \code{FL} described below.
13 The creation of objects is a little different in Python than in C:
14 instead of the `current form' maintained by the library to which new
15 FORMS objects are added, all functions that add a FORMS object to a
16 form are methods of the Python object representing the form.
17 Consequently, there are no Python equivalents for the C functions
18 \code{fl_addto_form} and \code{fl_end_form}, and the equivalent of
19 \code{fl_bgn_form} is called \code{fl.make_form}.
21 Watch out for the somewhat confusing terminology: FORMS uses the word
22 \dfn{object} for the buttons, sliders etc. that you can place in a form.
23 In Python, `object' means any value. The Python interface to FORMS
24 introduces two new Python object types: form objects (representing an
25 entire form) and FORMS objects (representing one button, slider etc.).
26 Hopefully this isn't too confusing...
28 There are no `free objects' in the Python interface to FORMS, nor is
29 there an easy way to add object classes written in Python. The FORMS
30 interface to GL event handling is available, though, so you can mix
31 FORMS with pure GL windows.
33 \strong{Please note:} importing \code{fl} implies a call to the GL function
34 \code{foreground()} and to the FORMS routine \code{fl_init()}.
36 \subsection{Functions Defined in Module \sectcode{fl}}
37 \nodename{FL Functions}
39 Module \code{fl} defines the following functions. For more information
40 about what they do, see the description of the equivalent C function
41 in the FORMS documentation:
43 \renewcommand{\indexsubitem}{(in module fl)}
44 \begin{funcdesc}{make_form}{type\, width\, height}
45 Create a form with given type, width and height. This returns a
46 \dfn{form} object, whose methods are described below.
47 \end{funcdesc}
49 \begin{funcdesc}{do_forms}{}
50 The standard FORMS main loop. Returns a Python object representing
51 the FORMS object needing interaction, or the special value
52 \code{FL.EVENT}.
53 \end{funcdesc}
55 \begin{funcdesc}{check_forms}{}
56 Check for FORMS events. Returns what \code{do_forms} above returns,
57 or \code{None} if there is no event that immediately needs
58 interaction.
59 \end{funcdesc}
61 \begin{funcdesc}{set_event_call_back}{function}
62 Set the event callback function.
63 \end{funcdesc}
65 \begin{funcdesc}{set_graphics_mode}{rgbmode\, doublebuffering}
66 Set the graphics modes.
67 \end{funcdesc}
69 \begin{funcdesc}{get_rgbmode}{}
70 Return the current rgb mode. This is the value of the C global
71 variable \code{fl_rgbmode}.
72 \end{funcdesc}
74 \begin{funcdesc}{show_message}{str1\, str2\, str3}
75 Show a dialog box with a three-line message and an OK button.
76 \end{funcdesc}
78 \begin{funcdesc}{show_question}{str1\, str2\, str3}
79 Show a dialog box with a three-line message and YES and NO buttons.
80 It returns \code{1} if the user pressed YES, \code{0} if NO.
81 \end{funcdesc}
83 \begin{funcdesc}{show_choice}{str1\, str2\, str3\, but1\optional{\, but2\,
84 but3}}
85 Show a dialog box with a three-line message and up to three buttons.
86 It returns the number of the button clicked by the user
87 (\code{1}, \code{2} or \code{3}).
88 \end{funcdesc}
90 \begin{funcdesc}{show_input}{prompt\, default}
91 Show a dialog box with a one-line prompt message and text field in
92 which the user can enter a string. The second argument is the default
93 input string. It returns the string value as edited by the user.
94 \end{funcdesc}
96 \begin{funcdesc}{show_file_selector}{message\, directory\, pattern\, default}
97 Show a dialog box in which the user can select a file. It returns
98 the absolute filename selected by the user, or \code{None} if the user
99 presses Cancel.
100 \end{funcdesc}
102 \begin{funcdesc}{get_directory}{}
103 \funcline{get_pattern}{}
104 \funcline{get_filename}{}
105 These functions return the directory, pattern and filename (the tail
106 part only) selected by the user in the last \code{show_file_selector}
107 call.
108 \end{funcdesc}
110 \begin{funcdesc}{qdevice}{dev}
111 \funcline{unqdevice}{dev}
112 \funcline{isqueued}{dev}
113 \funcline{qtest}{}
114 \funcline{qread}{}
115 %\funcline{blkqread}{?}
116 \funcline{qreset}{}
117 \funcline{qenter}{dev\, val}
118 \funcline{get_mouse}{}
119 \funcline{tie}{button\, valuator1\, valuator2}
120 These functions are the FORMS interfaces to the corresponding GL
121 functions. Use these if you want to handle some GL events yourself
122 when using \code{fl.do_events}. When a GL event is detected that
123 FORMS cannot handle, \code{fl.do_forms()} returns the special value
124 \code{FL.EVENT} and you should call \code{fl.qread()} to read the
125 event from the queue. Don't use the equivalent GL functions!
126 \end{funcdesc}
128 \begin{funcdesc}{color}{}
129 \funcline{mapcolor}{}
130 \funcline{getmcolor}{}
131 See the description in the FORMS documentation of \code{fl_color},
132 \code{fl_mapcolor} and \code{fl_getmcolor}.
133 \end{funcdesc}
135 \subsection{Form Objects}
137 Form objects (returned by \code{fl.make_form()} above) have the
138 following methods. Each method corresponds to a C function whose name
139 is prefixed with \samp{fl_}; and whose first argument is a form
140 pointer; please refer to the official FORMS documentation for
141 descriptions.
143 All the \samp{add_{\rm \ldots}} functions return a Python object representing
144 the FORMS object. Methods of FORMS objects are described below. Most
145 kinds of FORMS object also have some methods specific to that kind;
146 these methods are listed here.
148 \begin{flushleft}
149 \renewcommand{\indexsubitem}{(form object method)}
150 \begin{funcdesc}{show_form}{placement\, bordertype\, name}
151 Show the form.
152 \end{funcdesc}
154 \begin{funcdesc}{hide_form}{}
155 Hide the form.
156 \end{funcdesc}
158 \begin{funcdesc}{redraw_form}{}
159 Redraw the form.
160 \end{funcdesc}
162 \begin{funcdesc}{set_form_position}{x\, y}
163 Set the form's position.
164 \end{funcdesc}
166 \begin{funcdesc}{freeze_form}{}
167 Freeze the form.
168 \end{funcdesc}
170 \begin{funcdesc}{unfreeze_form}{}
171 Unfreeze the form.
172 \end{funcdesc}
174 \begin{funcdesc}{activate_form}{}
175 Activate the form.
176 \end{funcdesc}
178 \begin{funcdesc}{deactivate_form}{}
179 Deactivate the form.
180 \end{funcdesc}
182 \begin{funcdesc}{bgn_group}{}
183 Begin a new group of objects; return a group object.
184 \end{funcdesc}
186 \begin{funcdesc}{end_group}{}
187 End the current group of objects.
188 \end{funcdesc}
190 \begin{funcdesc}{find_first}{}
191 Find the first object in the form.
192 \end{funcdesc}
194 \begin{funcdesc}{find_last}{}
195 Find the last object in the form.
196 \end{funcdesc}
198 %---
200 \begin{funcdesc}{add_box}{type\, x\, y\, w\, h\, name}
201 Add a box object to the form.
202 No extra methods.
203 \end{funcdesc}
205 \begin{funcdesc}{add_text}{type\, x\, y\, w\, h\, name}
206 Add a text object to the form.
207 No extra methods.
208 \end{funcdesc}
210 %\begin{funcdesc}{add_bitmap}{type\, x\, y\, w\, h\, name}
211 %Add a bitmap object to the form.
212 %\end{funcdesc}
214 \begin{funcdesc}{add_clock}{type\, x\, y\, w\, h\, name}
215 Add a clock object to the form. \\
216 Method:
217 \code{get_clock}.
218 \end{funcdesc}
220 %---
222 \begin{funcdesc}{add_button}{type\, x\, y\, w\, h\, name}
223 Add a button object to the form. \\
224 Methods:
225 \code{get_button},
226 \code{set_button}.
227 \end{funcdesc}
229 \begin{funcdesc}{add_lightbutton}{type\, x\, y\, w\, h\, name}
230 Add a lightbutton object to the form. \\
231 Methods:
232 \code{get_button},
233 \code{set_button}.
234 \end{funcdesc}
236 \begin{funcdesc}{add_roundbutton}{type\, x\, y\, w\, h\, name}
237 Add a roundbutton object to the form. \\
238 Methods:
239 \code{get_button},
240 \code{set_button}.
241 \end{funcdesc}
243 %---
245 \begin{funcdesc}{add_slider}{type\, x\, y\, w\, h\, name}
246 Add a slider object to the form. \\
247 Methods:
248 \code{set_slider_value},
249 \code{get_slider_value},
250 \code{set_slider_bounds},
251 \code{get_slider_bounds},
252 \code{set_slider_return},
253 \code{set_slider_size},
254 \code{set_slider_precision},
255 \code{set_slider_step}.
256 \end{funcdesc}
258 \begin{funcdesc}{add_valslider}{type\, x\, y\, w\, h\, name}
259 Add a valslider object to the form. \\
260 Methods:
261 \code{set_slider_value},
262 \code{get_slider_value},
263 \code{set_slider_bounds},
264 \code{get_slider_bounds},
265 \code{set_slider_return},
266 \code{set_slider_size},
267 \code{set_slider_precision},
268 \code{set_slider_step}.
269 \end{funcdesc}
271 \begin{funcdesc}{add_dial}{type\, x\, y\, w\, h\, name}
272 Add a dial object to the form. \\
273 Methods:
274 \code{set_dial_value},
275 \code{get_dial_value},
276 \code{set_dial_bounds},
277 \code{get_dial_bounds}.
278 \end{funcdesc}
280 \begin{funcdesc}{add_positioner}{type\, x\, y\, w\, h\, name}
281 Add a positioner object to the form. \\
282 Methods:
283 \code{set_positioner_xvalue},
284 \code{set_positioner_yvalue},
285 \code{set_positioner_xbounds},
286 \code{set_positioner_ybounds},
287 \code{get_positioner_xvalue},
288 \code{get_positioner_yvalue},
289 \code{get_positioner_xbounds},
290 \code{get_positioner_ybounds}.
291 \end{funcdesc}
293 \begin{funcdesc}{add_counter}{type\, x\, y\, w\, h\, name}
294 Add a counter object to the form. \\
295 Methods:
296 \code{set_counter_value},
297 \code{get_counter_value},
298 \code{set_counter_bounds},
299 \code{set_counter_step},
300 \code{set_counter_precision},
301 \code{set_counter_return}.
302 \end{funcdesc}
304 %---
306 \begin{funcdesc}{add_input}{type\, x\, y\, w\, h\, name}
307 Add a input object to the form. \\
308 Methods:
309 \code{set_input},
310 \code{get_input},
311 \code{set_input_color},
312 \code{set_input_return}.
313 \end{funcdesc}
315 %---
317 \begin{funcdesc}{add_menu}{type\, x\, y\, w\, h\, name}
318 Add a menu object to the form. \\
319 Methods:
320 \code{set_menu},
321 \code{get_menu},
322 \code{addto_menu}.
323 \end{funcdesc}
325 \begin{funcdesc}{add_choice}{type\, x\, y\, w\, h\, name}
326 Add a choice object to the form. \\
327 Methods:
328 \code{set_choice},
329 \code{get_choice},
330 \code{clear_choice},
331 \code{addto_choice},
332 \code{replace_choice},
333 \code{delete_choice},
334 \code{get_choice_text},
335 \code{set_choice_fontsize},
336 \code{set_choice_fontstyle}.
337 \end{funcdesc}
339 \begin{funcdesc}{add_browser}{type\, x\, y\, w\, h\, name}
340 Add a browser object to the form. \\
341 Methods:
342 \code{set_browser_topline},
343 \code{clear_browser},
344 \code{add_browser_line},
345 \code{addto_browser},
346 \code{insert_browser_line},
347 \code{delete_browser_line},
348 \code{replace_browser_line},
349 \code{get_browser_line},
350 \code{load_browser},
351 \code{get_browser_maxline},
352 \code{select_browser_line},
353 \code{deselect_browser_line},
354 \code{deselect_browser},
355 \code{isselected_browser_line},
356 \code{get_browser},
357 \code{set_browser_fontsize},
358 \code{set_browser_fontstyle},
359 \code{set_browser_specialkey}.
360 \end{funcdesc}
362 %---
364 \begin{funcdesc}{add_timer}{type\, x\, y\, w\, h\, name}
365 Add a timer object to the form. \\
366 Methods:
367 \code{set_timer},
368 \code{get_timer}.
369 \end{funcdesc}
370 \end{flushleft}
372 Form objects have the following data attributes; see the FORMS
373 documentation:
375 \begin{tableiii}{|l|c|l|}{code}{Name}{Type}{Meaning}
376 \lineiii{window}{int (read-only)}{GL window id}
377 \lineiii{w}{float}{form width}
378 \lineiii{h}{float}{form height}
379 \lineiii{x}{float}{form x origin}
380 \lineiii{y}{float}{form y origin}
381 \lineiii{deactivated}{int}{nonzero if form is deactivated}
382 \lineiii{visible}{int}{nonzero if form is visible}
383 \lineiii{frozen}{int}{nonzero if form is frozen}
384 \lineiii{doublebuf}{int}{nonzero if double buffering on}
385 \end{tableiii}
387 \subsection{FORMS Objects}
389 Besides methods specific to particular kinds of FORMS objects, all
390 FORMS objects also have the following methods:
392 \renewcommand{\indexsubitem}{(FORMS object method)}
393 \begin{funcdesc}{set_call_back}{function\, argument}
394 Set the object's callback function and argument. When the object
395 needs interaction, the callback function will be called with two
396 arguments: the object, and the callback argument. (FORMS objects
397 without a callback function are returned by \code{fl.do_forms()} or
398 \code{fl.check_forms()} when they need interaction.) Call this method
399 without arguments to remove the callback function.
400 \end{funcdesc}
402 \begin{funcdesc}{delete_object}{}
403 Delete the object.
404 \end{funcdesc}
406 \begin{funcdesc}{show_object}{}
407 Show the object.
408 \end{funcdesc}
410 \begin{funcdesc}{hide_object}{}
411 Hide the object.
412 \end{funcdesc}
414 \begin{funcdesc}{redraw_object}{}
415 Redraw the object.
416 \end{funcdesc}
418 \begin{funcdesc}{freeze_object}{}
419 Freeze the object.
420 \end{funcdesc}
422 \begin{funcdesc}{unfreeze_object}{}
423 Unfreeze the object.
424 \end{funcdesc}
426 %\begin{funcdesc}{handle_object}{} XXX
427 %\end{funcdesc}
429 %\begin{funcdesc}{handle_object_direct}{} XXX
430 %\end{funcdesc}
432 FORMS objects have these data attributes; see the FORMS documentation:
434 \begin{tableiii}{|l|c|l|}{code}{Name}{Type}{Meaning}
435 \lineiii{objclass}{int (read-only)}{object class}
436 \lineiii{type}{int (read-only)}{object type}
437 \lineiii{boxtype}{int}{box type}
438 \lineiii{x}{float}{x origin}
439 \lineiii{y}{float}{y origin}
440 \lineiii{w}{float}{width}
441 \lineiii{h}{float}{height}
442 \lineiii{col1}{int}{primary color}
443 \lineiii{col2}{int}{secondary color}
444 \lineiii{align}{int}{alignment}
445 \lineiii{lcol}{int}{label color}
446 \lineiii{lsize}{float}{label font size}
447 \lineiii{label}{string}{label string}
448 \lineiii{lstyle}{int}{label style}
449 \lineiii{pushed}{int (read-only)}{(see FORMS docs)}
450 \lineiii{focus}{int (read-only)}{(see FORMS docs)}
451 \lineiii{belowmouse}{int (read-only)}{(see FORMS docs)}
452 \lineiii{frozen}{int (read-only)}{(see FORMS docs)}
453 \lineiii{active}{int (read-only)}{(see FORMS docs)}
454 \lineiii{input}{int (read-only)}{(see FORMS docs)}
455 \lineiii{visible}{int (read-only)}{(see FORMS docs)}
456 \lineiii{radio}{int (read-only)}{(see FORMS docs)}
457 \lineiii{automatic}{int (read-only)}{(see FORMS docs)}
458 \end{tableiii}
460 \section{Standard Module \sectcode{FL}}
461 \nodename{FL (uppercase)}
462 \stmodindex{FL}
464 This module defines symbolic constants needed to use the built-in
465 module \code{fl} (see above); they are equivalent to those defined in
466 the C header file \file{<forms.h>} except that the name prefix
467 \samp{FL_} is omitted. Read the module source for a complete list of
468 the defined names. Suggested use:
470 \bcode\begin{verbatim}
471 import fl
472 from FL import *
473 \end{verbatim}\ecode
475 \section{Standard Module \sectcode{flp}}
476 \stmodindex{flp}
478 This module defines functions that can read form definitions created
479 by the `form designer' (\code{fdesign}) program that comes with the
480 FORMS library (see module \code{fl} above).
482 For now, see the file \file{flp.doc} in the Python library source
483 directory for a description.
485 XXX A complete description should be inserted here!