type=“elements”
factorys
The contents of a
factorys of
type=“elements”
specify miscellaneous operations on widgets that were created by
other factories and layout managers that
generated from a theme file.
<factory type="elements" id="initialize-dialog"> <!-- ... --> <request_focus> <focusable>name</focusable> </request_focus> <!-- ... --> </factory> x::w::uielements widgets; widgets.generate("initialize-dialog", generators);
A x::w::uielements's
generator() processes the
factory
of type=“elements” and
the given id.
The x::w::uielements
presumably holds widgets and other objects already created by other
layouts and
factorys, and
a
factory of
type=“elements”'s
typical use case is to invoke methods common to all widgets and other
objects.
<factory type="elements" id="initialize-dialog"> <!-- ... --> <request_focus> <focusable>name</focusable> </request_focus> <!-- ... --> </factory> <!-- somewhere else, in another factory: --> <element id="name"> <input_field /> <config> <columns>30</columns> </config> <elements>initialize-dialog</elements> </element>
An element or a
container has an optional
elements that gives the
id
of a factory of
type=“elements”.
The type=“elements” factory
gets processed after
generate()
the layout or factory with the
element/container
that referenced the elements factory.
The x::w::uielements
contains the generated widgets, by name. And the elements factory
theme referenced the generated widgets by name. The elements factory
invokes common methods shared by all, or most, widgets, such as
setting the input focus, or showing or hiding them. This makes it
possible to use the theme file to create widgets and
show() them, automatically. Since the
element factory runs after all widgets get
generate(), referencing an element factory
that show_all()s the container its referenced
from results in creating all widgets in the container, and then showing
them.
show,
hide,
show_all, and
hide_all
<factory id="initialize-focus" type="elements"> <show_all> <name>new-page</name> </show_all> </factory>
These elements reference widgets by name.
name references any
generate()-ed widget, by name; and this
invokes the widget's corresponding method.
autofocus,
get_focus_first,
get_focus_before,
get_focus_after,
get_focus_before_me,
get_focus_after_me, and
request_focus
<factory id="initialize-focus" type="elements"> <autofocus> <enable>name_radio_button_option</enable> </autofocus> <autofocus> <disable>name_radio_button_option</disable> </autofocus> <get_focus_after> <focusable>name_input_field</focusable> <after_focusable>name_radio_button_option</after_focusable> </get_focus_after> <request_focus> <focusable>name_input_field</focusable> </request_focus> </factory>
These elements reference focusable widgets by name.
get_focus_first,
get_focus_before,
get_focus_after,
get_focus_before_me,
get_focus_after_me, and
request_focus
require
focusable that gives a name of
a focusable widget whose method of
the same name gets invoked.
autofocus contains either an
enable or a
disable that gives a name of
a focusable widget whose
autofocus() method gets invoked with either
a true or a false value,
respectively.
request_focus's optional
<now_or_never/> sets this method's optional
parameter.
get_focus_before and
get_focus_after also require
before_focusable or
after_focusable, respectively, that names
the other focusable widget.
get_focus_before_me and
get_focus_after_me require one or more
other_focusables.
Each other_focusables names one focusable
widget; this forms the corresponding method's
std::vector parameter.