language: Add expression literals

Add expression literals, so you can set properties of type
Gtk.Expression.
This commit is contained in:
James Westman 2024-12-24 12:54:23 -06:00
parent b9f58aeab5
commit 8c6f8760f7
29 changed files with 268 additions and 21 deletions

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
BoolFilter {
expression: expr item.visible;
}

View file

@ -0,0 +1 @@
4,20,4,"item" must be cast to its object type

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
Label {
label: expr 1;
}

View file

@ -0,0 +1 @@
4,10,4,Cannot convert Gtk.Expression to string

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
BoolFilter {
expression: expr $closure(item as <Entry>) as <bool>;
}

View file

@ -0,0 +1 @@
4,29,4,"item" can only be used for looking up properties

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
BoolFilter {
expression: expr item as <Label>;
}

View file

@ -0,0 +1 @@
4,20,4,"item" can only be used for looking up properties

View file

@ -0,0 +1,9 @@
using Gtk 4.0;
BoolFilter filter1 {
expression: expr true;
}
BoolFilter filter2 {
expression: bind filter1.expression;
}

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT EDIT!
This file was @generated by blueprint-compiler. Instead, edit the
corresponding .blp file and regenerate this file with blueprint-compiler.
-->
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkBoolFilter" id="filter1">
<property name="expression">
<constant type="gboolean">true</constant>
</property>
</object>
<object class="GtkBoolFilter" id="filter2">
<property name="expression" bind-source="filter1" bind-property="expression" bind-flags="sync-create"/>
</object>
</interface>

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
Label {
label: bind "Hello, world!";
}

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT EDIT!
This file was @generated by blueprint-compiler. Instead, edit the
corresponding .blp file and regenerate this file with blueprint-compiler.
-->
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkLabel">
<binding name="label">
<constant type="gchararray">Hello, world!</constant>
</binding>
</object>
</interface>

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
BoolFilter {
expression: expr item as <Entry>.visible;
}

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT EDIT!
This file was @generated by blueprint-compiler. Instead, edit the
corresponding .blp file and regenerate this file with blueprint-compiler.
-->
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkBoolFilter">
<property name="expression">
<lookup name="visible" type="GtkEntry"></lookup>
</property>
</object>
</interface>

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
BoolFilter {
expression: expr $closure(item as <Entry>.visible) as <bool>;
}

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT EDIT!
This file was @generated by blueprint-compiler. Instead, edit the
corresponding .blp file and regenerate this file with blueprint-compiler.
-->
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkBoolFilter">
<property name="expression">
<closure function="closure" type="gboolean">
<lookup name="visible" type="GtkEntry"></lookup>
</closure>
</property>
</object>
</interface>

View file

@ -0,0 +1,5 @@
using Gtk 4.0;
BoolFilter {
expression: expr true;
}

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
DO NOT EDIT!
This file was @generated by blueprint-compiler. Instead, edit the
corresponding .blp file and regenerate this file with blueprint-compiler.
-->
<interface>
<requires lib="gtk" version="4.0"/>
<object class="GtkBoolFilter">
<property name="expression">
<constant type="gboolean">true</constant>
</property>
</object>
</interface>

View file

@ -198,6 +198,7 @@ class TestSamples(unittest.TestCase):
"adw_breakpoint_template",
"expr_closure",
"expr_closure_args",
"expr_value_closure",
"parseable",
"signal",
"signal_not_swapped",