mirror of
https://gitlab.gnome.org/jwestman/blueprint-compiler.git
synced 2025-05-04 15:59:08 -04:00
language: Use new extern syntax in signal handlers
This commit is contained in:
parent
0b402db4d5
commit
122b049ce9
8 changed files with 21 additions and 10 deletions
|
@ -33,6 +33,7 @@ class Signal(AstNode):
|
|||
]
|
||||
),
|
||||
"=>",
|
||||
Optional(["$", UseLiteral("extern", True)]),
|
||||
UseIdent("handler").expected("the name of a function to handle the signal"),
|
||||
Match("(").expected("argument list"),
|
||||
Optional(UseIdent("object")).expected("object identifier"),
|
||||
|
@ -78,6 +79,14 @@ class Signal(AstNode):
|
|||
def gir_class(self):
|
||||
return self.parent.parent.gir_class
|
||||
|
||||
@validate("handler")
|
||||
def old_extern(self):
|
||||
if not self.tokens["extern"]:
|
||||
raise UpgradeWarning(
|
||||
"Use the '$' extern syntax introduced in blueprint 0.8.0",
|
||||
actions=[CodeAction("Use '$' syntax", "$" + self.tokens["handler"])],
|
||||
)
|
||||
|
||||
@validate("name")
|
||||
def signal_exists(self):
|
||||
if self.gir_class is None or isinstance(self.gir_class, UncheckedType):
|
||||
|
@ -116,7 +125,7 @@ def decompile_signal(ctx, gir, name, handler, swapped="false", object=None):
|
|||
object_name = object or ""
|
||||
name = name.replace("_", "-")
|
||||
if decompile.truthy(swapped):
|
||||
ctx.print(f"{name} => {handler}({object_name}) swapped;")
|
||||
ctx.print(f"{name} => ${handler}({object_name}) swapped;")
|
||||
else:
|
||||
ctx.print(f"{name} => {handler}({object_name});")
|
||||
ctx.print(f"{name} => ${handler}({object_name});")
|
||||
return gir
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using Gtk 4.0;
|
||||
|
||||
Button {
|
||||
eaten-by-velociraptors => on_eaten_by_velociraptors();
|
||||
eaten-by-velociraptors => $on_eaten_by_velociraptors();
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using Gtk 4.0;
|
||||
|
||||
Button {
|
||||
clicked => function(dinosaur);
|
||||
clicked => $function(dinosaur);
|
||||
}
|
|
@ -1 +1 @@
|
|||
4,25,8,Could not find object with ID 'dinosaur'
|
||||
4,26,8,Could not find object with ID 'dinosaur'
|
|
@ -2,4 +2,5 @@ using Gtk 4.0;
|
|||
|
||||
.MyClass {
|
||||
prop: typeof(.MyOtherClass);
|
||||
clicked => handler();
|
||||
}
|
|
@ -1,2 +1,3 @@
|
|||
3,1,8,Use the '$' extern syntax introduced in blueprint 0.8.0
|
||||
4,16,13,Use the '$' extern syntax introduced in blueprint 0.8.0
|
||||
5,14,7,Use the '$' extern syntax introduced in blueprint 0.8.0
|
|
@ -1,10 +1,10 @@
|
|||
using Gtk 4.0;
|
||||
|
||||
Entry {
|
||||
activate => click(button);
|
||||
activate => $click(button);
|
||||
}
|
||||
|
||||
Button button {
|
||||
clicked => on_button_clicked() swapped;
|
||||
notify::visible => on_button_notify_visible();
|
||||
clicked => $on_button_clicked() swapped;
|
||||
notify::visible => $on_button_notify_visible();
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ using Gtk 4.0;
|
|||
|
||||
template TestTemplate : ApplicationWindow {
|
||||
test-property: "Hello, world";
|
||||
test-signal => on_test_signal();
|
||||
test-signal => $on_test_signal();
|
||||
}
|
||||
|
||||
Dialog {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue