add_constraints_from_descriptionv


Description:

public List<unowned Constraint> add_constraints_from_descriptionv (string[] lines, int hspacing, int vspacing, HashTable<string,ConstraintTarget> views) throws Error

Creates a list of constraints from a VFL description.

The Visual Format Language, VFL, is based on Apple's AutoLayout VFL.

The `views` dictionary is used to match [iface@Gtk.ConstraintTarget] instances to the symbolic view name inside the VFL.

The VFL grammar is:

``` <visualFormatString> = (<orientation>)? (<superview><connection>)? <view>(<connection><view>)* (<connection><superview>)? <orientation> = 'H' | 'V' <superview> = '|' <connection> = '' | '-' < predicateList> '-' | '-' <predicateList> = <simplePredicate> | <predicateListWithParens> <simplePredicate> = < metricName> | <positiveNumber> <predicateListWithParens> = '(' <predicate> (',' <predicate>)* ')' <predicate> = (<relation>)? <objectOfPredicate> (<operatorList>)? ('@' <priority>)? <relation> = '==' | '<=' | '>=' <objectOfPredicate> = <constant> | <viewName> | ('.' <attributeName>)? <priority> = <positiveNumber> | 'required' | 'strong' | 'medium' | 'weak' <constant> = <number> <operatorList> = (<multiplyOperator>)? (< addOperator>)? <multiplyOperator> = [ '*' | '/' ] <positiveNumber> <addOperator> = [ '+' | '-' ] <positiveNumber> <viewName> = [A-Za-z_]([A-Za-z0-9_]*) // A C identifier <metricName> = [A-Za-z_]([A-Za-z0-9_]*) // A C identifier < attributeName> = 'top' | 'bottom' | 'left' | 'right' | 'width' | 'height' | 'start' | 'end' | 'centerX' | 'centerY' | 'baseline' < positiveNumber> // A positive real number parseable by ascii_strtod <number> // A real number parseable by ascii_strtod ```

**Note**: The VFL grammar used by GTK is slightly different than the one defined by Apple, as it can use symbolic values for the constraint's strength instead of numeric values; additionally, GTK allows adding simple arithmetic operations inside predicates.

Examples of VFL descriptions are:

``` // Default spacing [button]-[textField]

// Width constraint [button(>=50)]

// Connection to super view |-50-[purpleBox]-50-|

// Vertical layout V:[topField]-10-[bottomField]

// Flush views maroonView

// Priority [button(100strong)]

// Equal widths [button1(==button2)]

// Multiple predicates [flexibleButton(>=70,<=100)]

// A complete line of layout |-[find]-[findNext]-[findField(>=20)]-|

// Operators [button1(button2 / 3 + 50)]

// Named attributes [button1(==button2.height)] ```

Parameters:

this

a `GtkConstraintLayout`

lines

an array of Visual Format Language lines defining a set of constraints

hspacing

default horizontal spacing value, or -1 for the fallback value

vspacing

default vertical spacing value, or -1 for the fallback value

views

a dictionary of `[ name, target ]` pairs; the `name` keys map to the view names in the VFL lines, while the `target` values map to children of the widget using a `GtkConstraintLayout`, or guides

n_lines

the number of lines

Returns:

the list of [class@Gtk.Constraint] instances that were added to the layout