type=table layouts

<layout type="table" id="option-table">
  <append_items>

    <!-- ... -->

  </append_items>
</layout>

The contents of a layouts with type=table specify the table layout manager methods that get invoked to generate() its contents.

Creating type=table layouts

A container with a type=table creates a container that uses the table layout manager.

Initializing x::w::new_tablelayoutmanager

<container>
  <name>option-table</name>
  <type>table</type>
  <style>highlight</style>
  <config>
    <header>option-table-header-1</header>
    <header>option-table-header-2</header>
  </config>
  <elements>option-table-elements</elements>
</container>

<factory id="option-table-header-1" type="factory">
  <element>
    <label type='theme_text'>Name</label>
  </element>
</factory>

<factory id="option-table-header-2" type="factory">
  <element>
    <label type='theme_text'>Value</label>
  </element>
</factory>

<factory id="option-table-elements" type="elements">
  <show_all>
    <element>option-table</element>
  </show_all>
</factory>

The optional style's value is highlight (default) or bullet.

The config element initializes the x::w::new_tablelayoutmanager that creates the container:

table_width

Sets the x::w::new_tablelayoutmanager's table_width value:

<config>
  <table_width>40</table_width>
</config>
maximum_table_width

Sets the x::w::new_tablelayoutmanager's maximum_table_width value:

<config>
  <maximum_table_width>40</maximum_table_width>
</config>
<unlimited_table_width/>

Invokes x::w::new_tablelayoutmanager's unlimited_table_width() method.

adjustable_column_widths
<config>
  <adjustable_column_widths />
</config>

<config>
  <adjustable_column_widths>
    <name>demo_table</name>
  </adjustable_column_widths>
</config>

<config>
  <adjustable_column_widths>
    <name>demo_table</name>
    <norestore />
  </adjustable_column_widths>
</config>

This element sets x::w::new_tablelayoutmanager's adjustable_column_widths to enable adjustable column widths.

The name gives a unique label to this table widget (a unique label in its window) which identifies the table widget's column widths and restores them the next time the window gets opened. An unspecified name, or an empty <adjustable_column_widths/> creates a table with adjustable columns that get reset to their initial default size every time.

An explicit <norestore/> serves as an exception, a one-time override that does not restore the previous table column widths but still saves the resulting column widths for the next time the table gets created.

extra_table_appearance

Sets the x::w::new_tablelayoutmanager's extra_table_appearance value:

<config>
  <extra_table_appearance>main-table</extra_table_appearance>
</config>

<!-- ... -->

<appearance id="main-table" type="table">

  <!-- ... -->

</appearance>

The value of the element specifies an appearance object of type=table.

Inherited list layout manager initialization configuration

x::w::new_tablelayoutmanager inherits from x::w::new_listlayoutmanager, and all config values that initialize x::w::new_listlayoutmanagers also appear in a type=table container's config.

Notably is the columns value that sets the number of columns in the table; but this gets set automatically to the number of headers.

A list of header values defines the contents of the table's header row. Each header gives a name of a The header for each header gives the name of a type=factory factory. Each factory should create one widget, usually just a plain label.

The number of headers sets the columns value, the numbers of columns in the table/list.