NAME
FvwmForm - input form module for FvwmSYNOPSIS
Module FvwmForm [ Alias ]DESCRIPTION
FvwmForm provides a mechanism to get user input and act accordingly. This is achieved by means of a form that the user can fill out, and from which the user can select actions he wants Fvwm to take. A form consists of five types of items: text labels, single-line text inputs, mutually-exclusive selections, multiple-choice selections, and action buttons. These items are arranged into several lines, with a very flexible layout.INITIALIZATION
FvwmForm invoked without an alias uses configuration commands starting with "*FvwmForm".DEFAULTS
FvwmForm creates a built-in form named "FvwmForm-Form" that creates a file called ".FvwmForm". This file contains saved default form colors and fonts. Other forms use these defaults unless they are overridden within the form.# This file last created by FvwmForm-Form on Sun Nov 28 11:18:26 EST 1999. *FvwmFormDefault: Font 10x20 *FvwmFormDefault: InputFont 8x13bold *FvwmFormDefault: ButtonFont 10x20 *FvwmFormDefault: TimeoutFont 10x20 *FvwmFormDefault: Fore white *FvwmFormDefault: Back cornflowerblue *FvwmFormDefault: Colorset -1 *FvwmFormDefault: ItemFore green *FvwmFormDefault: ItemBack gray40 *FvwmFormDefault: ItemColorset -1 *FvwmFormDefault: ButtonPointer hand2 *FvwmFormDefault: ButtonInPointer star *FvwmFormDefault: InputPointer gumby *FvwmFormDefault: ButtonPointerFore blue *FvwmFormDefault: ButtonPointerBack gray *FvwmFormDefault: ButtonInPointerFore gray *FvwmFormDefault: ButtonInPointerBack blue *FvwmFormDefault: InputPointerFore *FvwmFormDefault: InputPointerBack
VARIABLE SUBSTITUTION
If you supply variables and values on the command line used to start FvwmForm (like this):CONFIGURATION
The following commands can be set in the .fvwm2rc file or thru any of the other ways that fvwm can accept commands. The simplest technique is to create a file in the read-only architecture-independent data directory, [PREFIX/share/fvwm] or your personal fvwm directory [$HOME/.fvwm], that matches the form alias.Back Button ButtonFont ButtonInPointer ButtonInPointerFore ButtonInPointerBack ButtonPointer ButtonPointerFore ButtonPointerBack Choice Command Colorset Font Fore GrabServer Input InputFont InputPointer ItemBack ItemColorset ItemFore InputPointerFore InputPointerBack Line Message PadVText Position Selection Separator Text Timeout TimeoutFont Title UseData WarpPointer
Map Stop UnMap
This option makes FvwmForm grab the mouse
pointer on startup. This feature is useful for things like logout
verification.
This option makes FvwmForm warp the mouse
pointer into its window on startup. It saves the user some
mouse-travelling.
Specifies the FvwmForm window location. This
is similar to what the Position option does but is more flexible.
Puts the FvwmForm window at location
(x, y) on the screen. By convention, a negative x
(y) value measures distance from the right (bottom) of the screen.
If this option is omitted, FvwmForm starts at the center of the screen.
Tells the module to use colorset
n.
Specifies the background color of the FvwmForm
window and any text in the window. The first background color FvwmForm reads
determines the overall screen background color. Switches off the Colorset
option. See DEFAULTS.
Specifies the foreground color for displaying
text labels. Switches off the Colorset option. See DEFAULTS.
Tells the module to use colorset n for
items.
Specifies the background color for the text
input windows, and the buttons. Buttons are displayed as 3D depressable
buttons. Inputs are displayed as 3D indented fields. Medium shade background
colors work best. Switches off the ItemColorset option. See DEFAULTS.
Specifies the foreground color for the text
input strings and button text. Switches off the ItemColorset option. See
DEFAULTS.
Specifies the font for displaying plain text.
See DEFAULTS.
Specifies the font for text in the action
buttons. See DEFAULTS.
Specifies the font for text input. See
DEFAULTS.
Specifies the font for display the timeout
counter and related text. See DEFAULTS.
Starts a new line. A line can contain any
number of text, input, buttons and choice items. A FvwmForm window can have
any number of lines. The width of the window is that of the longest line.
Justification of items in the line is specified by justification, which
can be one of the following:
left
right
center
expand
Items are justified to the left of the
window.
Items are justified to the right of the
window.
Items are placed in the center of the
window.
If there is only one item in the line, the
item is centered in the window. If two or more items are present, they are
spread to fill the whole width of the window.
Defines a text area on the form that contains
the last error message from fvwm. For purposes of determining form size, the
message area is considered to be 80 bytes long. Its actual length is the same
as the message received. If the message exceeds 80 bytes, you can see the rest
of the message by resizing the form.
You should not attempt to put any text, buttons or input fields on the same line
after a message field. Messages greater than 80 bytes will overlay the
remainder of the line.
The number of pixels used as vertical padding
between text items, line to line. The default is 6 which looks good on lines
containing text intermixed with input boxes, choices or buttons.
For straight text, such as might appear on a help form, padding of zero looks
better.
(There are lots of other padding values used in form layout which can’t
currently be changed with commands.)
Displays string as plain text. Line
breaks must be achieved by multiple *FvwmForm: Line and *FvwmForm: Text
options. Blanks may be used to provide extra padding between items.
Displays string as the window’s
title. The string must be enclosed in double quotes. Using this command with
anything other than a string enclosed in quotes creates a blank title. If this
command is not used, the window title is the form alias.
Specifies a text input item with name
name. A sub window of size characters in width is used for
editing. If init_string is present, it is the initial string when
FvwmForm starts or resets itself. The default initial string is "".
You can mouse paste into an input field using button 2. Buttons 1 and 3 move the
cursor in an input field.
Input fields are always in insert mode, overtyping is not supported.
Emacs type keystrokes are supported.
Control-a, Home and Begin move to the front of an input field. Control-e and End
move to the end of an input field. Control-b and Left move left in an input
field. Control-f and Right move right in an input field. Control-p, Up, and
Shift-Tab move to a previous input field if any, if the form has one input
field, recall previous value. Control-n, Down, Return, Line-feed and Tab move
to the next input field if any, if the form has one input field, for control-n
and Down, restore previous input value. Control-h moves backward in an input
field erasing a character. Control-d and Delete delete the next character in
an input field. Control-k erases for the cursor to the end of an input field.
Control-u erases the entire input field.
When a form executes a command, all the input values are saved in a ring of
input history 50 items deep.
Meta(mod2)-"<" retrieves the previous value of an input field.
Meta(mod2)-">" retrieves the next value of an input field.
(For forms with one input field, use the much easier arrow keys.)
This option starts a selection item with name
name. Its choices are specified in following configuration commands.
The option type is one of the following:
single
multiple
The selections are mutually exclusive.
This is a multiple-choice selection.
Draws a 2 pixel shaded line across the form as
a visual indication of a separate area.
Specifies a choice for a proceeding selection.
The choice item has a name and a value these are used in
commands. See *FvwmForm: Command. The string is displayed to the right
of the choice button as a label.
The choice assumes the specified initial state ("on" means selected)
when FvwmForm starts or resets. If the selections are mutually exclusive,
FvwmForm does NOT detect inconsistencies in the initial states of the choices,
i.e. two or none of the choices can be selected. However, once the user
selects a choice, FvwmForm assures only one is selected.
This option specifies an action button. The
button has string as a label, and executes a set of Fvwm command
when it is activated. The commands are the following *FvwmForm: Commands.
The optional key specifies a keyboard shortcut that activates the button.
It is in either a control character, specified as ^@, ^A, ..., ^_, or a
function key, specified as F1, F2, ..., F35. Control keys that are used for
cursor movement in text input fields cannot activate any buttons, with the
exception of TAB (^I), RETURN (^M), LINEFEED (^J), which can activate a button
when the cursor is in the last text input field.
The behavior of the button is determined by type:
continue
restart
quit
FvwmForm continues execution after sending the
commands.
After sending the commands, FvwmForm resets
all the values to the initial ones, and then continues execution.
FvwmForm quits after sending the
commands.
This option specifies an Fvwm command
associated with the current button. There can be more than one command
attached to a button. Commands that appear before any *FvwmForm: Button option
are executed at start-up time. This is usually a beep that gets the
user’s attention.
Commands starting with an exclamation mark (!) are executed by FvwmForm, all
other commands are sent to Fvwm for execution. Before sending each command to
Fvwm, FvwmForm recognizes variables of the following forms, and supply values
to them.
If name corresponds to a text input
field, the result is the user’s input string. The special chars
single-quote, double-quote and backslash are preceded by a backslash.
If name corresponds to a choice, the result is the value of the choice
(as specified in *FvwmForm: Choice) if the choice is selected. If the choice
is not selected, the result is a blank string.
If name corresponds to a selection, the result will be a list of the
selected values of all its choices separated by spaces.
If name is a text input field and its
value is not an empty string, the result is string, with recursive
variable substitution applied. If the input value is empty, the result is
empty.
If name is a choice and it is selected, the result is string, with
recursive variable substitution applied. If the choice is not selected, the
result is empty.
The same as the above, except that the
converse conditions are taken.
When using the "?" and "!" forms to pass a string, the
string is delimited by a right parenthesis. If you need to put a right
parenthesis in a string, precede the right parenthesis with a backslash.
Tells FvwmForm to read a data file and extract
data from module commands that match the "leading" argument and an
input, choice, or selection variable in a form.
This lets a form display current fvwm module configuration data. For an example
of how this works, examine the file "FvwmForm-Rlogin" which is
installed in read-only architecture-independent data directory,
[PREFIX/share/fvwm] and shown below.
For choices, the setting of the button is represented as the word
"on", all other values for a setting are treated as off.
For selections, the setting of each choice button is determined by matching the
current value of the selection against each choice. Currently, this only works
correctly for selections that allow a single choice.
Change the default mouse pointer (hand2) used
when hovering over a button. The pointername must be one of the names defined
in the include file X11/cursorfont.h (without the XC_ prefix). See
DEFAULTS.
Change the default mouse pointer (hand1) used
while a button is pressed in. The pointername must be one of the names defined
in the include file X11/cursorfont.h (without the XC_ prefix). See
DEFAULTS.
Change the default mouse pointer (xterm) used
while the pointer is over a text field. The pointername must be one of the
names defined in the include file X11/cursorfont.h (without the XC_ prefix).
See DEFAULTS.
Change the default mouse pointer foreground
and background colors used when hovering over a button. See DEFAULTS.
Change the default mouse pointer foreground
and background colors used while a button is pressed in. See DEFAULTS.
Change the default mouse pointer foreground
and background colors used while the pointer is over a text field. See
DEFAULTS.
Set up FvwmForm to time out after the amount
of tenth of seconds specified. When the timer hits zero, command
executes. The text field is displayed much like a Text field,
except that a '%%' in the line is replaced automatically by the amount of time
left on the timer. The value gets updated every tenth of second as the timer
counts down. There can only be one timeout field per form.
EXAMPLES
All of the following "examples" are installed in the read-only architecture-independent data directory, [PREFIX/share/fvwm], during fvwm installation.DestroyMenu Forms AddToMenu Forms "&Q. QuitVerify" Module FvwmForm FvwmForm-QuitVerify AddToMenu Forms "&C. Capture" Module FvwmForm FvwmForm-Capture AddToMenu Forms "&R. Rlogin" Module FvwmForm FvwmForm-Rlogin AddToMenu Forms "&T. Talk" Module FvwmForm FvwmForm-Talk
EXAMPLE 1 - QUIT VERIFY
This example simulates the mwm way of confirming logout. Return does the logout, Escape cancels logout. It times out after 20 seconds and performs the equivalent of the 'Logout' button.DestroyModuleConfig FvwmForm-QuitVerify: * *FvwmForm-QuitVerify: GrabServer *FvwmForm-QuitVerify: WarpPointer *FvwmForm-QuitVerify: Command Beep *FvwmForm-QuitVerify: Line center *FvwmForm-QuitVerify: Text "Do you really want to logout?" *FvwmForm-QuitVerify: Line expand *FvwmForm-QuitVerify: Button quit "Logout" ^M *FvwmForm-QuitVerify: Command Quit *FvwmForm-QuitVerify: Button restart "Restart" ^R *FvwmForm-QuitVerify: Command Restart *FvwmForm-QuitVerify: Button quit "Cancel" ^[ *FvwmForm-QuitVerify: Command Nop *FvwmForm-QuitVerify: Timeout 200 Quit "Automatic logout will occur in %% tenth of seconds."
EXAMPLE 2 - REMOTE LOGIN
This example lets the user type in a host name, an optional user name, and opens an xterm window from the remote host.DestroyModuleConfig FvwmForm-Rlogin: * *FvwmForm-Rlogin: WarpPointer *FvwmForm-Rlogin: Line center *FvwmForm-Rlogin: Text "Login to Remote Host" *FvwmForm-Rlogin: Line center *FvwmForm-Rlogin: Text "Host:" *FvwmForm-Rlogin: Input HostName 20 "" *FvwmForm-Rlogin: Line center *FvwmForm-Rlogin: Selection UserSel single *FvwmForm-Rlogin: Choice Default Default on "same user" *FvwmForm-Rlogin: Choice Custom Custom off "user:" *FvwmForm-Rlogin: Input UserName 10 "" *FvwmForm-Rlogin: Line expand *FvwmForm-Rlogin: Button quit "Login" ^M *FvwmForm-Rlogin: Command Exec exec ssh $(Custom?-l $(UserName)) $(HostName) xterm -T x term@$(HostName) -display $HOSTDISPLAY & # Before saving the data, remove any previously saved data: *FvwmForm-Rlogin: Command DestroyModuleConfig FvwmForm-RloginDefault: * # The "Login" button causes a login and a saving of the current data: *FvwmForm-Rlogin: Command !( /bin/echo \ "# Created by FvwmForm-Rlogin on: `/bin/date`."; /bin/echo \ '*FvwmForm-RloginDefault: HostName $(HostName)'; /bin/echo \ '*FvwmForm-RloginDefault: UserName $(UserName)'; /bin/echo \ '*FvwmForm-RloginDefault: Default $(Default?on)'; /bin/echo \ '*FvwmForm-RloginDefault: Custom $(Custom?on)' \ ) > ${FVWM_USERDIR}/.FvwmForm-Rlogin *FvwmForm-Rlogin: Button restart "Reset" *FvwmForm-Rlogin: Button quit "Cancel" ^[ *FvwmForm-Rlogin: Command Nop # Tell FvwmForm to read vars from the .FvwmForm-RloginDefault file: *FvwmForm-Rlogin: UseData .FvwmForm-Rlogin *FvwmForm-RloginDefault
EXAMPLE 3 - CAPTURE WINDOW
This example provides a front-end to xwd, xwud, and xpr.DestroyModuleConfig FvwmForm-Capture: * *FvwmForm-Capture: Line center *FvwmForm-Capture: Text "Capture Window" *FvwmForm-Capture: Line left *FvwmForm-Capture: Text "File: " *FvwmForm-Capture: Input file 25 "/tmp/Capture" *FvwmForm-Capture: Line left *FvwmForm-Capture: Text "Printer: " *FvwmForm-Capture: Input printer 20 "$PRINTER" *FvwmForm-Capture: Line expand *FvwmForm-Capture: Selection PtrType single *FvwmForm-Capture: Choice PS ps on "PostScript" *FvwmForm-Capture: Choice Ljet ljet off "HP LaserJet" *FvwmForm-Capture: Line left *FvwmForm-Capture: Text "xwd options:" *FvwmForm-Capture: Line expand *FvwmForm-Capture: Selection Options multiple *FvwmForm-Capture: Choice Brd -nobdrs off "No border" *FvwmForm-Capture: Choice Frm -frame on "With frame" *FvwmForm-Capture: Choice XYZ -xy off "XY format" *FvwmForm-Capture: Line expand *FvwmForm-Capture: Button continue "Capture" ^M *FvwmForm-Capture: Command Exec exec xwd -out $(file) $(Options) & *FvwmForm-Capture: Button continue "Preview" *FvwmForm-Capture: Command Exec exec xwud -in $(file) & *FvwmForm-Capture: Button continue "Print" *FvwmForm-Capture: Command Exec exec xpr -device $(PtrType) $(file) | lpr -P $(printer) & *FvwmForm-Capture: Button quit "Quit"
EXAMPLE 4 - TALK FORM
This example provides a replacement for the module FvwmTalk. There are 2 forms, "FvwmForm-Talk." which executes commands, or sends commands to fvwm for execution, and "FvwmForm-TalkHelp." which is a help form.# FvwmForm-Talk - Basic replacement for FvwmTalk DestroyModuleConfig FvwmForm-Talk: * *FvwmForm-Talk: WarpPointer # Layout *FvwmForm-Talk: Line center *FvwmForm-Talk: Text "Talk to Fvwm" *FvwmForm-Talk: Line left *FvwmForm-Talk: Text "Command:" *FvwmForm-Talk: Input Command 80 "" *FvwmForm-Talk: Line left *FvwmForm-Talk: Text "Msg:" *FvwmForm-Talk: Message *FvwmForm-Talk: Line center # Buttons *FvwmForm-Talk: Button restart "Return - Execute" ^M *FvwmForm-Talk: Command $(Command) *FvwmForm-Talk: Button continue "F1 - Help" F1 *FvwmForm-Talk: Command Module FvwmForm FvwmForm-TalkHelp *FvwmForm-Talk: Button restart "F3 - Reset input" F3 *FvwmForm-Talk: Command Nop *FvwmForm-Talk: Button quit "F4 - Dismiss" F4 *FvwmForm-Talk: Command Nop
# FvwmForm-TalkHelp - Help Text for FvwmForm-Talk DestroyModuleConfig FvwmForm-TalkHelp: * *FvwmForm-TalkHelp: WarpPointer # Layout *FvwmForm-TalkHelp: Line center *FvwmForm-TalkHelp: Text "Talk to Fvwm - Help" *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: Text " " *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: PadVText 0 *FvwmForm-TalkHelp: Text "Enter commands in the *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: Text "Commands beginning with *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: Text "shell as a sub-process of the form." *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: Text "All other commands are sent to fvwm for execution." *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: Text "" *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: Text "Fvwm error messages are shown on the *FvwmForm-TalkHelp: Line left *FvwmForm-TalkHelp: Text "" # Buttons *FvwmForm-TalkHelp: Line center *FvwmForm-TalkHelp: Button quit "Return - Dismiss" ^M *FvwmForm-TalkHelp: Command Nop
BUGS AND LIMITATIONS
FvwmForm is a fairly simple method of providing input. There is no input validation facility. FvwmForm has no way of dealing with lists.COPYRIGHTS
FvwmForm is original work of Thomas Zuwei Feng (). <[email protected]>CHANGES
During the fall of 1998, Dan Espen removed all form size limits, added unlimited font and color changing, form spacing control, configuration file reading, global control of appearance, synchronous command execution, Error message display, variable substitution, configurable pointers, and lots of other damage. No additional copyright is imposed.2023-01-17 |