man page(1) manual page
Table of Contents

NAME

qddb_script - QddbScript automatic Fx interface generation

SYNOPSIS

qddb_script autogen <schema_desc>
qddb_script compile <schema_variable_name> <script>

DESCRIPTION

qddb_script serves as a very fast and convenient way to generate custom Qddb forms. autogen generates a simple QddbScript description of the given schema that can be easily modified by any user. compile compiles a Qddb_Script form description into executable Fx code.

autogen
accepts one extra argument, the schema descriptor as returned from a call to qddb_schema open. The return value is a string consisting of a valid QddbScript form, suitable for passing directly to qddb_script compile.

compile
accepts two arguments: 1) a valid variable name (not the value) in the global context containing a valid schema descriptor as returned from qddb_schema open, and 2) a string consisting of a QddbScript form. The QddbScript is translated directly into Fx code suitable for use with Tcl eval(n).

QDDBSCRIPT

The QddbScript form description language is similar to HTML, but allows more precise layout of fields. Code generated by qddb_script compile is based on the Fx toolkit (Tcl/Tk). All QddbScript commands are of the following form:

[keyword options...]
[keyword options...]
[end keyword]
[end keyword]

where keyword is one of the commands declared below. The options field is a collection of options that have one of the following forms: 1) option="value", or 2) optionname. Options that are not understood by QddbScript are ignored. For example, a valid QddbScript might look like this:

# this is a comment
[prologue] [menubar]
[frame attr=Address]
[text attr=Address.Street labelwidth=10] [break] [entry attr=Address.City labelwidth=10] [entry attr=Address.State width=2 noexpand] [entry attr=Address.ZipCode width=10 noexpand] [end frame]
[epilogue]

frame
provides a frame that encapsulates a set of entries in rows. Each frame may have many entries (entry, text, radiobutton, etc.) and the rows are separated by the [break] statement. frame requires an end marker:

[frame]
...
[end frame]

attr=attribute
specifies that the frame is associated with a structured attribute which may be expandable. If the attribute is expandable, Add/View/Del buttons are automatically produced so the user can add new instances of the attribute. (optional)

relief=string
specifies the relief of the outer frame. Must be one of "groove", "flat", "raised", or "sunken".

border=integer
specifies the width of the border around the outer frame in pixels.

padx=integer
specifies the external horizontal padding for the frame.

pady=integer
specifies the external vertical padding for the frame.

ipadx=integer
specifies the internal horizontal padding for the frame.

ipady=integer
specifies the internal vertical padding for the frame.

noexpand
prevents expansion of the text box to fill the width of the screen if there is room. The default is to expand the width to fill the screen.

entry
provides an entry box for attribute values. entry does not have an end marker:

[entry attr=Address.Street labelwidth=10 width=20]

attr=attribute
specifies the database attribute to which the entry is bound. If the attribute is expandable, Add/View/Del buttons are automatically produced so the user can add new instances of the attribute. (required)

side=string specifies the side within the current frame where the new element should reside. Must be one of "left", "right", "top", or "bottom".

labelwidth=integer
specifies the width of the entry's label in characters. The default is the exact width of the label's contents.

label="string"
specifies that the default verbosename of the attribute should be overriden with the value of "string". The default label is the verbosename of the attribute or the last dot-separated component of the attribute's name.

width=integer
specifies the width of the entry box in characters. The default is 10.

relief=string
specifies the relief of the outer frame. Must be one of "groove", "flat", "raised", or "sunken".

border=integer
specifies the border around the outer frame in pixels.

padx=integer
specifies the external horizontal padding for the frame.

pady=integer
specifies the external vertical padding for the frame.

ipadx=integer
specifies the internal horizontal padding for the frame.

ipady=integer
specifies the internal vertical padding for the frame.

noexpand
prevents expansion of the entry box to fill the width of the screen if there is room. The default is to expand the width to fill the screen.

text
provides a full-text entry box for attribute values. text does not have an end marker:

[text attr=Address.Street width=10 height=4]

attr=attribute specifies the database attribute to which the text box is bound. If the attribute is expandable, Add/View/Del buttons are automatically produced so the user can add new instances of the attribute. (required)

side=string specifies the side within the current frame where the new element should reside. Must be one of "left", "right", "top", or "bottom".

labelwidth=integer
specifies the width of the text's label in characters. The default is the exact width of the label's contents.

label="string"
specifies that the default verbosename of the attribute should be overriden with the value of "string". The default label is the verbosename of the attribute or the last dot-separated component of the attribute's name.

width=integer
specifies the width of the text box in characters. The default is 10.

height=integer
specifies the height of the text box in characters. The default is 4.

relief=string
specifies the relief of the outer frame. Must be one of "groove", "flat", "raised", or "sunken".

border=integer
specifies the border around the outer frame in pixels.

padx=integer
specifies the external horizontal padding for the frame.

pady=integer
specifies the external vertical padding for the frame.

ipadx=integer
specifies the internal horizontal padding for the frame.

ipady=integer
specifies the internal vertical padding for the frame.

noexpand
prevents expansion of the text box to fill the width of the screen if there is room. The default is to expand the width to fill the screen.

radiobutton
provides a collection of radiobuttons for constrained attribute values. radiobutton does not have an end marker:

[radiobutton attr=Address.State
value="KY"
value="IN" noexpand]

attr=attribute
specifies the database attribute to which the text box is bound. If the attribute is expandable, Add/View/Del buttons are automatically produced so the user can add new instances of the attribute. (required)

value="string"
specifies the value of one radiobutton in the group. You probably want multiple value options in each radiobutton group.

side=string specifies the side within the current frame where the new element should reside. Must be one of "left", "right", "top", or "bottom".

labelwidth=integer
specifies the width of the text's label in characters. The default is the exact width of the label's contents.

label="string"
specifies that the default verbosename of the attribute should be overriden with the value of "string". The default label is the verbosename of the attribute or the last dot-separated component of the attribute's name.

width=integer
specifies the width of the text box containing the radiobuttons. The default is to expand as necessary to hold the radiobuttons.

height=integer
specifies the height of the text box containing the radiobuttons. The default is 1.

relief=string
specifies the relief of the outer frame. Must be one of "groove", "flat", "raised", or "sunken".

border=integer
specifies the border around the outer frame in pixels.

padx=integer
specifies the external horizontal padding for the frame.

pady=integer
specifies the external vertical padding for the frame.

ipadx=integer
specifies the internal horizontal padding for the frame.

ipady=integer
specifies the internal vertical padding for the frame.

noexpand
prevents expansion of the text box to fill the

width of the screen if there is room. The default is to expand the width to fill the screen.

label
is non-attribute based label that you can place anywhere in a frame. You can also use it as a placeholder for alignment purposes. label does not have an end marker:

[label value="Some label" width=10 height=2]

value="string"
specifies the text for the label. The default is the empty string ("").

width=integer
specifies the width of the label.

height=integer
specifies the height of the label. The default is 1.

relief=string
specifies the relief of the outer frame. Must be one of "groove", "flat", "raised", or "sunken".

border=integer
specifies the border around the outer frame in pixels.

padx=integer
specifies the external horizontal padding for the frame.

pady=integer
specifies the external vertical padding for the frame.

ipadx=integer
specifies the internal horizontal padding for the frame.

ipady=integer
specifies the internal vertical padding for the frame.

noexpand
prevents expansion of the label to fill the width of the screen if there is room. The default is to expand the width to fill the screen.

notebook
defines a new notebook frame to hold notebook tabs to partition the fields on the screen. notebook requires an end marker:

[notebook]
...
[end notebook]

tab defines a notebook tab for use with the notebook option. The tab option must be between notebook beginning and end markers as shown below. All QddbScript commands must be within tabs inside a notebook section. tab requires an end marker:

[notebook]
[tab label=Person underline=1] [entry attr=First]
[entry attr=Last][break]
[text attr=Comments]
[end tab]
[tab label=Address underline=2] [frame attr=Address]
[text attr=Address.Street][break] [entry attr=Address.City] [entry attr=Address.State] [entry attr=Address.ZipCode][break] [end frame]
[end tab]
[end notebook]

label="string"
defines a label for use in the notebook tab.

underline=integer
defines an underlined character position (beginning with 0) for use as an accelerator.

label
builds a label in the current location with the given attributes.

side=string specifies the side within the current frame where the new element should reside. Must be one of "left", "right", "top", or "bottom".

labelwidth=integer
specifies the width of the entry's label in characters. The default is the exact width of the label's contents.

label="string"
specifies that the default verbosename of the attribute should be overriden with the value of "string". The default label is the verbosename of the attribute or the last dot-separated component of the attribute's name.

width=integer
specifies the width of the label in characters. The default is 10.

relief=string
specifies the relief of the outer frame. Must be one of "groove", "flat", "raised", or "sunken".

border=integer
specifies the border around the outer frame in pixels.

padx=integer
specifies the external horizontal padding for the frame.

pady=integer
specifies the external vertical padding for the frame.

ipadx=integer
specifies the internal horizontal padding for the frame.

ipady=integer
specifies the internal vertical padding for the frame.

noexpand
prevents expansion of the entry box to fill the width of the screen if there is room. The default is to expand the width to fill the screen.

break
instructs QddbScript to break to the next line for further entries within the current frame. [break] has no options.

SEE ALSO

qddb_instance(n), qddb_keylist(n), qddb_rows(n), qddb_search(n), qddb_schema(n), qddb_tuple(n), qddb_view(n)

BUGS

None known.

REFERENCES

QddbScript in a NutShell
http://www.hsdi.com/qddb/qddbscript


Table of Contents