From 098fc3c67f7c6a8cf7119f20e8794d1c2aacef1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20Iv=C3=A1n?= Date: Wed, 1 Nov 2023 22:40:48 -0600 Subject: [PATCH 1/2] library: Port Avatar demo to Vala --- src/Library/demos/Avatar/main.vala | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/Library/demos/Avatar/main.vala diff --git a/src/Library/demos/Avatar/main.vala b/src/Library/demos/Avatar/main.vala new file mode 100644 index 000000000..22cbefccf --- /dev/null +++ b/src/Library/demos/Avatar/main.vala @@ -0,0 +1,29 @@ +#!/usr/bin/env -S vala workbench.vala --pkg libadwaita-1 + +private Adw.Avatar avatar_image; + +public void main () { + avatar_image = (Adw.Avatar) workbench.builder.get_object ("avatar_image"); + var button = (Gtk.Button) workbench.builder.get_object ("button"); + button.clicked.connect (select_image); +} + +private async void select_image () { + var filter = new Gtk.FileFilter () { + name = "Images" + }; + filter.add_pixbuf_formats (); + + var file_dialog = new Gtk.FileDialog () { + title = "Select an Avatar", + modal = true, + default_filter = filter + }; + + try { + File file = yield file_dialog.open (workbench.window, null); + avatar_image.custom_image = Gdk.Texture.from_file (file); + } catch (Error e) { + critical (e.message); + } +} From 7014e775ab71c256a5f1557b6980e6b3bbefe47f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Diego=20Iv=C3=A1n?= Date: Thu, 2 Nov 2023 21:52:39 -0600 Subject: [PATCH 2/2] Use `.begin` to call async functions in Avatar Vala demo --- src/Library/demos/Avatar/main.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Library/demos/Avatar/main.vala b/src/Library/demos/Avatar/main.vala index 22cbefccf..e79fb54aa 100644 --- a/src/Library/demos/Avatar/main.vala +++ b/src/Library/demos/Avatar/main.vala @@ -5,7 +5,7 @@ private Adw.Avatar avatar_image; public void main () { avatar_image = (Adw.Avatar) workbench.builder.get_object ("avatar_image"); var button = (Gtk.Button) workbench.builder.get_object ("button"); - button.clicked.connect (select_image); + button.clicked.connect (select_image.begin); } private async void select_image () {