Progress bar element widgets

<element id="progressbar">
  <progressbar>progressbar_label_layout</progressbar>
  <type>grid</type>
  <progressbar_config>
    <value>25</value>
    <maximum_value>50</maximum_value>
    <appearance>custom_progressbar</appearance>
  </progressbar_config>
</element>

<!-- ...... -->

<layout id="progressbar_label_layout" type="grid">
  <append_row>
    <name>progressbar_label_row</name>
  </append_row>
</layout>

<factory id="progressbar_label_row" type="grid">
  <halign>
    <halign>center</halign>
  </halign>
  <element id="progressbar_label">
    <label>25%</label>
  </element>
</factory>

<!-- ...... -->

<appearance id="custom_progressbar" type="progressbar">

</appearance>

Specifying an element with a progressbar creates a new theme widget which is an x::w::progressbar widget. This is equivalent to invoking the factory's create_progressbar() method.

The progressbar element's value must be an id with a matching type of a layout which generates the initial layout of the progress bar's contents. This is typically a grid layout containing a centered label widget.

An optional progressbar_config value initializes create_progressbar's x::w::progressbar_config parameter. An optional config value sets the progress bar's layout manager's optional configuration object.