Skip to content

Commit 2fc619f

Browse files
authored
Use Adw.MessageDialog.choose() (#512)
1 parent 1d74df8 commit 2fc619f

File tree

4 files changed

+39
-37
lines changed

4 files changed

+39
-37
lines changed

src/Library/demos/Dialogs/main.js

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
import Adw from "gi://Adw";
22
import Gtk from "gi://Gtk";
3+
import Gio from "gi://Gio";
4+
5+
Gio._promisify(Adw.MessageDialog.prototype, "choose", "choose_finish");
36

47
const button_confirmation = workbench.builder.get_object("button_confirmation");
58
const button_error = workbench.builder.get_object("button_error");
69
const button_advanced = workbench.builder.get_object("button_advanced");
710
const window = workbench.window;
811

9-
function createConfirmationDialog() {
12+
async function createConfirmationDialog() {
1013
const dialog = new Adw.MessageDialog({
1114
heading: "Replace File?",
1215
body: "A file named `example.png` already exists. Do you want to replace it?",
@@ -21,14 +24,11 @@ function createConfirmationDialog() {
2124
// Use DESTRUCTIVE appearance to draw attention to the potentially damaging consequences of this action
2225
dialog.set_response_appearance("replace", Adw.ResponseAppearance.DESTRUCTIVE);
2326

24-
dialog.connect("response", (_self, response) => {
25-
console.log(`Selected "${response}" response.`);
26-
});
27-
28-
dialog.present();
27+
const response = await dialog.choose(null);
28+
console.log(`Selected "${response}" response.`);
2929
}
3030

31-
function createErrorDialog() {
31+
async function createErrorDialog() {
3232
const dialog = new Adw.MessageDialog({
3333
heading: "Critical Error",
3434
body: "You did something you should not have",
@@ -39,15 +39,12 @@ function createErrorDialog() {
3939

4040
dialog.add_response("okay", "Okay");
4141

42-
dialog.connect("response", (_self, response) => {
43-
console.log(`Selected "${response}" response.`);
44-
});
45-
46-
dialog.present();
42+
const response = await dialog.choose(null);
43+
console.log(`Selected "${response}" response.`);
4744
}
4845

4946
//Creates a message dialog with an extra child
50-
function createAdvancedDialog() {
47+
async function createAdvancedDialog() {
5148
const dialog = new Adw.MessageDialog({
5249
heading: "Login",
5350
body: "A valid password is needed to continue",
@@ -68,19 +65,22 @@ function createAdvancedDialog() {
6865

6966
dialog.set_extra_child(entry);
7067

71-
dialog.connect("response", (dialog, response) => {
72-
if (dialog.get_response_label(response) === "Login") {
73-
console.log(
74-
`Selected "${response}" response with password "${entry.get_text()}"`,
75-
);
76-
} else {
77-
console.log(`Selected "${response}" response.`);
78-
}
79-
});
80-
81-
dialog.present();
68+
const response = await dialog.choose(null);
69+
if (response === "login") {
70+
console.log(
71+
`Selected "${response}" response with password "${entry.get_text()}"`,
72+
);
73+
} else {
74+
console.log(`Selected "${response}" response.`);
75+
}
8276
}
8377

84-
button_confirmation.connect("clicked", createConfirmationDialog);
85-
button_error.connect("clicked", createErrorDialog);
86-
button_advanced.connect("clicked", createAdvancedDialog);
78+
button_confirmation.connect("clicked", () => {
79+
createConfirmationDialog().catch(logError);
80+
});
81+
button_error.connect("clicked", () => {
82+
createErrorDialog().catch(logError);
83+
});
84+
button_advanced.connect("clicked", () => {
85+
createAdvancedDialog().catch(logError);
86+
});

src/Library/demos/Welcome/main.js

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import Gtk from "gi://Gtk";
22
import Adw from "gi://Adw";
3+
import Gio from "gi://Gio";
4+
5+
Gio._promisify(Adw.MessageDialog.prototype, "choose", "choose_finish");
36

47
const box = workbench.builder.get_object("subtitle");
58

@@ -9,22 +12,22 @@ const button = new Gtk.Button({
912
margin_top: 6,
1013
css_classes: ["suggested-action"],
1114
});
12-
button.connect("clicked", greet);
15+
button.connect("clicked", () => {
16+
greet().catch(logError);
17+
});
1318
box.append(button);
1419

1520
console.log("Welcome to Workbench!");
1621

17-
function greet() {
22+
async function greet() {
1823
// https://gjs-docs.gnome.org/adw1~1/adw.messagedialog
1924
const dialog = new Adw.MessageDialog({
2025
body: "Hello World!",
2126
transient_for: workbench.window,
2227
});
2328

2429
dialog.add_response("ok", "OK");
25-
dialog.connect("response", (self, response) => {
26-
console.log(response);
27-
});
2830

29-
dialog.present();
31+
const response = await dialog.choose(null);
32+
console.log(response);
3033
}

src/init.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@ import "gi://Pango?version=1.0";
88

99
import Gtk from "gi://Gtk";
1010
import Gio from "gi://Gio";
11+
import Adw from "gi://Adw";
1112
import Xdp from "gi://Xdp";
1213
import Source from "gi://GtkSource";
1314
import WebKit from "gi://WebKit";
1415

16+
Gio._promisify(Adw.MessageDialog.prototype, "choose", "choose_finish");
1517
Gio._promisify(Xdp.Portal.prototype, "trash_file", "trash_file_finish");
1618
Gio._promisify(Xdp.Portal.prototype, "open_uri", "open_uri_finish");
1719
Gio._promisify(Xdp.Portal.prototype, "open_file", "open_file_finish");

src/window.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -445,10 +445,7 @@ async function onCloseSession({ session, window }) {
445445
updateSaveButton();
446446
}
447447

448-
const response = await new Promise((resolve) => {
449-
dialog.connect("response", (self, response) => resolve(response));
450-
});
451-
448+
const response = await dialog.choose(null);
452449
if (response === "cancel") return;
453450

454451
if (response === "discard") {

0 commit comments

Comments
 (0)