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