type
=“standard_combobox” and
type
=“editable_combobox”
layout
s
<layout type="standard_combobox" id="option-list"> <append_items> <!-- ... --> </append_items> </layout>
The contents of a
layout
s with
type
=“standard_combobox” or
type
=“editable_combobox”
specify the standard
or editable
combo-box
layout manager methods that get invoked to
generate
() its contents.
type
=“standard_combobox” and
type
=“editable_combobox”
layout
s
A container
with a
type
=“standard_combobox” or
type
=“editable_combobox”
creates a container that uses the corresponding
combo-box layout manager.
x::w::new_standard_comboboxlayoutmanager
and
x::w::new_editable_comboboxlayoutmanager
<container> <name>folders</name> <type>editable_combobox</type> <config> <optional /> </config> </container>
An optional
config
element sets non-default values
of the
x::w::new_standardlayoutmanager
or the
x::w::new_editable_comboboxlayoutmanager
that creates the container:
<optional/>
Sets the
selection_required
flag to
false
:
<config> <optional /> </config>
synchronized_columns
Initializes the
synchronized_columns
object:
<config> <synchronized_columns>combobox_columns</synchronized_columns> </config>
All generate
()d combo-boxes
with the
same synchronized_columns
name
have the
same
x::w::synchronized_axis
handle.
The element's name is an opaque label.
x::w::synchronized_axis
objects
get automatically created, internally, and associated with
their name.
appearance
and
input_appearance
and
appearance
sets
x::w::new_standard_comboboxlayoutmanager
's
or
x::w::new_editable_comboboxlayoutmanager
's
appearance
value:
<config> <appearance>my_comboboxes</appearance> </config> <appearance id="my_comboboxes" type="combobox"> <!-- ... --> </appearance>
The value of the element specifies an
appearance
object of type
=“combobox”.
An editable combo-box also has an
input_appearance
for its
input field,
referencing an
type
=“input_field”.
appearance object.
The
config
element shares
additional common settings with
x::w::new_listlayoutmanager
:
width
Invokes one of
x::w::new_list_or_comboboxlayoutmanager
's
methods that specifies the list's or combo-box's width:
<config> <width> <default /> </width> </config>
This invokes the default_width
()
method.
<config> <width> <variable /> </width> </config>
This invokes the variable_width
()
method.
<config> <width> <min>list-width-min</min> <preferred>list-width-preferred</preferred> <max>list-width-max</max> </width> </config>
A width
element with an
x::w::dim_axis_arg
value
invokes width
() with this
explicit value.
columns
Sets the
x::w::new_list_or_comboboxlayoutmanager
's
columns
value:
<config> <columns>2</columns> </config>
This sets columns
to 2
,
creating a list or a combo-box with two columns.
requested_col_width
Initializes
x::w::new_list_or_comboboxlayoutmanager
's
requested_col_widths
map:
<config> <requested_col_width> <column>0</column> <percentage>25</percentage> </requested_col_width> <requested_col_width> <column>1</column> <percentage>75</percentage> </requested_col_width> </config>
Each requested_col_width
contains a column
number and
a percentage
value from 0 to
100.
col_alignment
Initializes
x::w::new_list_or_comboboxlayoutmanager
's
col_alignments
map:
<config> <col_alignment> <column>0</column> <halign>right</halign> </col_alignment> </config>
Each col_alignment
contains a column
number and
an halign
x::w::halign
value.
row_alignment
Initializes
x::w::new_listlayoutmanager
's
row_alignments
map:
<config> <row_alignment> <column>0</column> <valign>middle</valign> </row_alignment> </config>
Each col_alignment
contains a column
number and
an valign
x::w::valign
value.
column_border
Initializes
x::w::new_list_or_comboboxlayoutmanager
's
column_border
map:
<config> <column_border> <column>1</column> <border>divider</border> </column_border> </config> <!-- ... --> <border id="divider"> <!-- ... --> </border>
Each column_border
contains a column
number and
a
border
reference.
minimum_column_width
Initializes
x::w::new_list_or_comboboxlayoutmanager
's
minimum_column_widths
map:
<config> <minimum_column_width> <column>0</column> <width>10.0</width> </minimum_column_width> </config>
Each minimum_column_width
contains a column
number and
a
width
value.
synchronized_columns
Initializes
x::w::new_list_or_comboboxlayoutmanager
's
synchronized_columns
object:
<config> <synchronized_columns>table_columns</synchronized_columns> </config>
All generate
()d lists or combo-boxes
with the
same synchronized_columns
name
have the
same
x::w::synchronized_axis
handle.
The element's name is an opaque label.
x::w::synchronized_axis
objects
get automatically created, internally, and associated with
their name.
lr_padding
Initializes
x::w::new_list_or_comboboxlayoutmanager
's
lr_paddings
map:
<config> <lr_padding> <column>1</column> <left>l-padding</left> <right>r-padding</right> </lr_padding> </config> <!-- ... --> <dim id="l-padding">0</dim> <dim id="r-padding">4</dim>
Each lr_padding
contains a column
number; and
a
left
and
right
values
that reference
dim
elements in the theme file.
type
=“editable_combobox”
with a validated input fieldIt is possible to use a theme file to create an editable combo-box with a validated input field. This is done the same way that validated input fields themselves get created.
<container> <name>line_size</name> <type>editable_combobox</type> <config> <optional /> </config> </container> #include <x/w/validated_input_field.H> x::w::uielements widgets; widgets.create_validated_input_field( "line_size", [] (ONLY IN_THREAD, const std::string &value, const auto &lock, const auto &ignore) -> std::optional<int> { // ... }, [] (const std::optional<int> &v) { // ... } ); // Generate the UI x::w::focusable_container line_size=widgets.get_element("line_size"); x::w::validated_input_field<int> line_size_validated= widgets.get_validated_input_field<int>("line_size");
An editable combo-box with a validated input field gets created,
automatically,
if a validator is installed for a name
of a type
=“editable_combobox”
container
.