From 84c46386b6cc3a65c0ede1ac27a8e9c8d0776c88 Mon Sep 17 00:00:00 2001 From: AkshayWarrier Date: Fri, 10 Mar 2023 23:30:56 +0530 Subject: [PATCH 1/7] library: Add Box entry --- src/Library/demos/Box/main.blp | 96 +++++++++++++++++++++++++++++++++ src/Library/demos/Box/main.css | 7 +++ src/Library/demos/Box/main.js | 76 ++++++++++++++++++++++++++ src/Library/demos/Box/main.json | 10 ++++ 4 files changed, 189 insertions(+) create mode 100644 src/Library/demos/Box/main.blp create mode 100644 src/Library/demos/Box/main.css create mode 100644 src/Library/demos/Box/main.js create mode 100644 src/Library/demos/Box/main.json diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp new file mode 100644 index 000000000..dfa7fa2ec --- /dev/null +++ b/src/Library/demos/Box/main.blp @@ -0,0 +1,96 @@ +using Gtk 4.0; +using Adw 1; + +Adw.Clamp { + Box { + orientation: vertical; + + Label { + label: "Box"; + margin-top: 12; + margin-bottom: 12; + + styles [ + "title-1", + ] + } + + Label { + label: "A widget that arranges its child widgets into a single row or column"; + margin-bottom: 18; + } + + Box { + orientation: vertical; + margin-bottom: 24; + + Box { + hexpand: true; + orientation: vertical; + spacing: 12; + + Box { + halign: center; + spacing: 18; + Button button_add{ + label: "Add Item"; + styles [ + "suggested-action", + "pill", + ] + } + Button button_remove{ + label: "Remove Item"; + styles [ + "destructive-action", + "pill", + ] + } + } + + Box { + halign: center; + spacing: 18; + + CheckButton highlight { + label: "Highlight Box"; + } + + CheckButton toggle_orient { + label: "Toggle Orientation"; + } + + CheckButton homogeneous { + label: "Homogeneous"; + } + + CheckButton prepend { + label: "Prepend Items"; + } + } + + Label { + label: "Horizontal Alignment"; + } + + Scale alignment { + round-digits:10; + margin-bottom: 18; + adjustment: Gtk.Adjustment { + lower: 0; + upper: 100; + value: 0; + }; + } + } + + ScrolledWindow { + Box interactive_box { + spacing: 10; + orientation: horizontal; + vexpand: true; + } + } + } + } +} diff --git a/src/Library/demos/Box/main.css b/src/Library/demos/Box/main.css new file mode 100644 index 000000000..f9d6b061f --- /dev/null +++ b/src/Library/demos/Box/main.css @@ -0,0 +1,7 @@ +#card { + padding: 24px; +} + +#border { + border: 3px solid @accent_color; +} diff --git a/src/Library/demos/Box/main.js b/src/Library/demos/Box/main.js new file mode 100644 index 000000000..cdd29cc4a --- /dev/null +++ b/src/Library/demos/Box/main.js @@ -0,0 +1,76 @@ +import Gtk from "gi://Gtk"; + +const interactive_box = workbench.builder.get_object("interactive_box"); +const button_add = workbench.builder.get_object("button_add"); +const prepend = workbench.builder.get_object("prepend"); +const button_remove = workbench.builder.get_object("button_remove"); +var count = 0; + +button_add.connect("clicked", () => { + const label = new Gtk.Label({ + name: "card", + label: `Item ${count + 1}`, + }); + const style = label.get_style_context(); + style.add_class("card"); + prepend.active + ? interactive_box.prepend(label) + : interactive_box.append(label); + count += 1; +}); + +button_remove.connect("clicked", () => { + if (count) { + interactive_box.remove(interactive_box.get_last_child()); + count -= 1; + } else { + console.log("The box has no child widgets to remove"); + } +}); + +const highlight = workbench.builder.get_object("highlight"); +highlight.connect("toggled", () => { + highlight.active + ? (interactive_box.name = "border") + : (interactive_box.name = ""); +}); + +const toggle_orient = workbench.builder.get_object("toggle_orient"); +toggle_orient.connect("toggled", () => { + interactive_box.orientation === Gtk.Orientation["HORIZONTAL"] + ? (interactive_box.orientation = Gtk.Orientation["VERTICAL"]) + : (interactive_box.orientation = Gtk.Orientation["HORIZONTAL"]); +}); + +const homogeneous = workbench.builder.get_object("homogeneous"); +homogeneous.connect("toggled", () => { + interactive_box.homogeneous = homogeneous.active; +}); + +const alignment = workbench.builder.get_object("alignment"); + +const marks = { + 0: "Fill", + 33: "Start", + 66: "Center", + 100: "End", +}; + +const label_to_alignment = { + Fill: Gtk.Align.FILL, + Start: Gtk.Align.START, + Center: Gtk.Align.CENTER, + End: Gtk.Align.END, +}; + +for (const [value, label] of Object.entries(marks)) { + alignment.add_mark(value, Gtk.PositionType.RIGHT, label); +} +alignment.set_increments(33, 100); + +alignment.connect("value-changed", () => { + const scale_value = alignment.get_value(); + const label = marks[scale_value]; + if (!label) return; + interactive_box.halign = label_to_alignment[label]; +}); diff --git a/src/Library/demos/Box/main.json b/src/Library/demos/Box/main.json new file mode 100644 index 000000000..1a2d9f583 --- /dev/null +++ b/src/Library/demos/Box/main.json @@ -0,0 +1,10 @@ +{ + "name": "Box", + "category": "user_interface", + "description": "A widget that arranges its child widgets into a single row or column", + "panels": [ + "ui", + "preview" + ], + "autorun": true +} From d044502afe8ab92ce24cd4d431cc0f62439568fe Mon Sep 17 00:00:00 2001 From: AkshayWarrier Date: Fri, 10 Mar 2023 23:41:16 +0530 Subject: [PATCH 2/7] Box: Remove unnecessary line --- src/Library/demos/Box/main.blp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp index dfa7fa2ec..14fc01780 100644 --- a/src/Library/demos/Box/main.blp +++ b/src/Library/demos/Box/main.blp @@ -74,7 +74,6 @@ Adw.Clamp { } Scale alignment { - round-digits:10; margin-bottom: 18; adjustment: Gtk.Adjustment { lower: 0; From c273df4a71f8e855304dc58c0ca28a0dc846b6dc Mon Sep 17 00:00:00 2001 From: AkshayWarrier Date: Sat, 11 Mar 2023 02:45:17 +0530 Subject: [PATCH 3/7] Box: Add references --- src/Library/demos/Box/main.blp | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp index 14fc01780..2c78836a3 100644 --- a/src/Library/demos/Box/main.blp +++ b/src/Library/demos/Box/main.blp @@ -22,7 +22,6 @@ Adw.Clamp { Box { orientation: vertical; - margin-bottom: 24; Box { hexpand: true; @@ -85,11 +84,26 @@ Adw.Clamp { ScrolledWindow { Box interactive_box { - spacing: 10; + spacing: 12; orientation: horizontal; vexpand: true; } } + + Box{ + halign: center; + margin-bottom: 12; + + LinkButton{ + label: "Tutorial"; + uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/box.html"; + } + + LinkButton{ + label: "API Reference"; + uri: "https://docs.gtk.org/gtk4/class.Box.html"; + } + } } } } From f8d2fcf9e3210090313452ffea0359eec9575ffb Mon Sep 17 00:00:00 2001 From: AkshayWarrier Date: Sun, 12 Mar 2023 21:05:42 +0530 Subject: [PATCH 4/7] Box: Some changes from PR review --- src/Library/demos/Box/main.blp | 121 ++++++++++++++++++++++----------- src/Library/demos/Box/main.css | 9 ++- src/Library/demos/Box/main.js | 10 +-- 3 files changed, 95 insertions(+), 45 deletions(-) diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp index 2c78836a3..f52c50e87 100644 --- a/src/Library/demos/Box/main.blp +++ b/src/Library/demos/Box/main.blp @@ -16,7 +16,7 @@ Adw.Clamp { } Label { - label: "A widget that arranges its child widgets into a single row or column"; + label: _("A widget that arranges its child widgets into a single row or column"); margin-bottom: 18; } @@ -31,68 +31,113 @@ Adw.Clamp { Box { halign: center; spacing: 18; - Button button_add{ - label: "Add Item"; + + Button button_append{ + label: _("Append Item"); + styles [ + "pill", + ] + } + + Button button_prepend{ + label: _("Prepend Item"); styles [ - "suggested-action", "pill", ] } + Button button_remove{ - label: "Remove Item"; + label: _("Remove Item"); styles [ - "destructive-action", "pill", ] } } + } - Box { - halign: center; - spacing: 18; - - CheckButton highlight { - label: "Highlight Box"; - } + Grid { + margin-top:12; + margin-start:12; + row-spacing:18; + column-spacing:18; - CheckButton toggle_orient { - label: "Toggle Orientation"; + Box { + orientation: vertical; + layout { + row:0; + column:1; + column-span:2; } - - CheckButton homogeneous { - label: "Homogeneous"; + Label { + margin-top:12; + margin-bottom:12; + label: "halign"; } - - CheckButton prepend { - label: "Prepend Items"; + Box { + homogeneous: true; + halign: center; + spacing: 60; + ToggleButton halign_toggle_fill{ + label: "fill"; + } + ToggleButton halign_toggle_start{ + label: "start"; + } + ToggleButton halign_toggle_center{ + label: "center"; + } + ToggleButton halign_toggle_end{ + label: "end"; + } } } - Label { - label: "Horizontal Alignment"; + Box { + layout { + row:1; + column:0; + row-span:2; + } + Label { + label: "valign"; + } + Box { + orientation: vertical; + spacing: 120; + ToggleButton valign_toggle_fill{ + label: "fill"; + } + ToggleButton valign_toggle_start{ + label: "start"; + } + ToggleButton valign_toggle_center{ + label: "center"; + } + ToggleButton valign_toggle_end{ + label: "end"; + } + } } - Scale alignment { - margin-bottom: 18; - adjustment: Gtk.Adjustment { - lower: 0; - upper: 100; - value: 0; - }; - } - } + ScrolledWindow { + hexpand: true; + has-frame: true; + layout { + row:1; + column:1; + row-span:2; + column-span:2; + } - ScrolledWindow { - Box interactive_box { - spacing: 12; - orientation: horizontal; - vexpand: true; + Box interactive_box{ + } } } Box{ halign: center; - margin-bottom: 12; + valign: end; + vexpand:true; LinkButton{ label: "Tutorial"; diff --git a/src/Library/demos/Box/main.css b/src/Library/demos/Box/main.css index f9d6b061f..fee0d55f5 100644 --- a/src/Library/demos/Box/main.css +++ b/src/Library/demos/Box/main.css @@ -1,7 +1,12 @@ -#card { +.card { + margin: 6px; padding: 24px; } -#border { +.border { border: 3px solid @accent_color; } + +.rotate { + transform: rotate(-90deg); +} diff --git a/src/Library/demos/Box/main.js b/src/Library/demos/Box/main.js index cdd29cc4a..0c0d383e1 100644 --- a/src/Library/demos/Box/main.js +++ b/src/Library/demos/Box/main.js @@ -4,15 +4,14 @@ const interactive_box = workbench.builder.get_object("interactive_box"); const button_add = workbench.builder.get_object("button_add"); const prepend = workbench.builder.get_object("prepend"); const button_remove = workbench.builder.get_object("button_remove"); -var count = 0; +let count = 0; button_add.connect("clicked", () => { const label = new Gtk.Label({ name: "card", label: `Item ${count + 1}`, + css_classes: ["card"], }); - const style = label.get_style_context(); - style.add_class("card"); prepend.active ? interactive_box.prepend(label) : interactive_box.append(label); @@ -31,8 +30,8 @@ button_remove.connect("clicked", () => { const highlight = workbench.builder.get_object("highlight"); highlight.connect("toggled", () => { highlight.active - ? (interactive_box.name = "border") - : (interactive_box.name = ""); + ? interactive_box.add_css_class("border") + : interactive_box.remove_css_class("border"); }); const toggle_orient = workbench.builder.get_object("toggle_orient"); @@ -74,3 +73,4 @@ alignment.connect("value-changed", () => { if (!label) return; interactive_box.halign = label_to_alignment[label]; }); + From af2c16bfe3df19b05e875d2197a1840e50e64a8c Mon Sep 17 00:00:00 2001 From: AkshayWarrier Date: Mon, 13 Mar 2023 04:10:11 +0530 Subject: [PATCH 5/7] Box: Apply all changes from PR review --- src/Library/demos/Box/main.blp | 116 ++++++++++++++++++++++---------- src/Library/demos/Box/main.js | 114 +++++++++++++++++++------------ src/Library/demos/Box/main.json | 1 - 3 files changed, 154 insertions(+), 77 deletions(-) diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp index f52c50e87..80c10b346 100644 --- a/src/Library/demos/Box/main.blp +++ b/src/Library/demos/Box/main.blp @@ -2,6 +2,8 @@ using Gtk 4.0; using Adw 1; Adw.Clamp { + maximum-size: 1024; + Box { orientation: vertical; @@ -9,7 +11,6 @@ Adw.Clamp { label: "Box"; margin-top: 12; margin-bottom: 12; - styles [ "title-1", ] @@ -17,7 +18,22 @@ Adw.Clamp { Label { label: _("A widget that arranges its child widgets into a single row or column"); - margin-bottom: 18; + } + + Box{ + halign: center; + valign: end; + margin-bottom: 12; + + LinkButton{ + label: "Tutorial"; + uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/box.html"; + } + + LinkButton{ + label: "API Reference"; + uri: "https://docs.gtk.org/gtk4/class.Box.html"; + } } Box { @@ -27,6 +43,7 @@ Adw.Clamp { hexpand: true; orientation: vertical; spacing: 12; + margin-bottom:24; Box { halign: center; @@ -55,39 +72,73 @@ Adw.Clamp { } } + Box { + halign:center; + spacing:18; + + Box{ + Label { + label: _("orientation"); + } + + Box { + margin-start: 6; + homogeneous: true; + halign: center; + + ToggleButton toggle_orientation_horizontal { + label: _("horizontal"); + active: true; + } + ToggleButton toggle_orientation_vertical { + label: _("vertical"); + group: toggle_orientation_horizontal; + } + } + } + + CheckButton highlight{ + label: _("Highlight Box"); + } + } + Grid { margin-top:12; + margin-bottom:12; margin-start:12; row-spacing:18; - column-spacing:18; Box { orientation: vertical; layout { row:0; - column:1; - column-span:2; + column:0; + column-span:3; } Label { margin-top:12; margin-bottom:12; - label: "halign"; + label: _("halign"); } Box { homogeneous: true; halign: center; - spacing: 60; + spacing: 36; ToggleButton halign_toggle_fill{ - label: "fill"; + label: _("fill"); + active:true; } ToggleButton halign_toggle_start{ - label: "start"; + label: _("start"); + group: halign_toggle_fill; } ToggleButton halign_toggle_center{ - label: "center"; + label: _("center"); + group: halign_toggle_fill; } ToggleButton halign_toggle_end{ - label: "end"; + label: _("end"); + group: halign_toggle_fill; } } } @@ -97,58 +148,55 @@ Adw.Clamp { row:1; column:0; row-span:2; + column-span:2; } Label { - label: "valign"; + label: _("valign"); + styles ["rotate"] } Box { + valign:center; orientation: vertical; - spacing: 120; + spacing: 60; + ToggleButton valign_toggle_fill{ - label: "fill"; + label: _("fill"); + active:true; + styles ["rotate"] } ToggleButton valign_toggle_start{ - label: "start"; + label: _("start"); + group: valign_toggle_fill; + styles ["rotate"] } ToggleButton valign_toggle_center{ - label: "center"; + label: _("center"); + group: valign_toggle_fill; + styles ["rotate"] } ToggleButton valign_toggle_end{ - label: "end"; + label: _("end"); + group: valign_toggle_fill; + styles ["rotate"] } } } ScrolledWindow { hexpand: true; + vexpand:true; has-frame: true; + margin-end: 114; layout { row:1; column:1; row-span:2; column-span:2; } - Box interactive_box{ } } } - - Box{ - halign: center; - valign: end; - vexpand:true; - - LinkButton{ - label: "Tutorial"; - uri: "https://developer.gnome.org/documentation/tutorials/beginners/components/box.html"; - } - - LinkButton{ - label: "API Reference"; - uri: "https://docs.gtk.org/gtk4/class.Box.html"; - } - } } } } diff --git a/src/Library/demos/Box/main.js b/src/Library/demos/Box/main.js index 0c0d383e1..4ebc258a7 100644 --- a/src/Library/demos/Box/main.js +++ b/src/Library/demos/Box/main.js @@ -1,32 +1,57 @@ import Gtk from "gi://Gtk"; const interactive_box = workbench.builder.get_object("interactive_box"); -const button_add = workbench.builder.get_object("button_add"); -const prepend = workbench.builder.get_object("prepend"); +const button_append = workbench.builder.get_object("button_append"); +const button_prepend = workbench.builder.get_object("button_prepend"); const button_remove = workbench.builder.get_object("button_remove"); let count = 0; -button_add.connect("clicked", () => { +button_append.connect("clicked", () => { const label = new Gtk.Label({ name: "card", label: `Item ${count + 1}`, css_classes: ["card"], }); - prepend.active - ? interactive_box.prepend(label) - : interactive_box.append(label); - count += 1; + interactive_box.append(label); + count++; +}); + +button_prepend.connect("clicked", () => { + const label = new Gtk.Label({ + name: "card", + label: `Item ${count + 1}`, + css_classes: ["card"], + }); + interactive_box.prepend(label); + count++; }); button_remove.connect("clicked", () => { if (count) { interactive_box.remove(interactive_box.get_last_child()); - count -= 1; + count--; } else { console.log("The box has no child widgets to remove"); } }); +const toggle_orientation_horizontal = workbench.builder.get_object( + "toggle_orientation_horizontal", +); +const toggle_orientation_vertical = workbench.builder.get_object( + "toggle_orientation_vertical", +); + +toggle_orientation_horizontal.connect("toggled", () => { + if (toggle_orientation_horizontal.active) + interactive_box.orientation = Gtk.Orientation.HORIZONTAL; +}); + +toggle_orientation_vertical.connect("toggled", () => { + if (toggle_orientation_vertical.active) + interactive_box.orientation = Gtk.Orientation.VERTICAL; +}); + const highlight = workbench.builder.get_object("highlight"); highlight.connect("toggled", () => { highlight.active @@ -34,43 +59,48 @@ highlight.connect("toggled", () => { : interactive_box.remove_css_class("border"); }); -const toggle_orient = workbench.builder.get_object("toggle_orient"); -toggle_orient.connect("toggled", () => { - interactive_box.orientation === Gtk.Orientation["HORIZONTAL"] - ? (interactive_box.orientation = Gtk.Orientation["VERTICAL"]) - : (interactive_box.orientation = Gtk.Orientation["HORIZONTAL"]); +const halign_toggle_fill = workbench.builder.get_object("halign_toggle_fill"); +const halign_toggle_start = workbench.builder.get_object("halign_toggle_start"); +const halign_toggle_center = workbench.builder.get_object( + "halign_toggle_center", +); +const halign_toggle_end = workbench.builder.get_object("halign_toggle_end"); + +halign_toggle_fill.connect("toggled", () => { + if (halign_toggle_fill.active) interactive_box.halign = Gtk.Align.FILL; +}); + +halign_toggle_start.connect("toggled", () => { + if (halign_toggle_start.active) interactive_box.halign = Gtk.Align.START; }); -const homogeneous = workbench.builder.get_object("homogeneous"); -homogeneous.connect("toggled", () => { - interactive_box.homogeneous = homogeneous.active; +halign_toggle_center.connect("toggled", () => { + if (halign_toggle_center.active) interactive_box.halign = Gtk.Align.CENTER; }); -const alignment = workbench.builder.get_object("alignment"); - -const marks = { - 0: "Fill", - 33: "Start", - 66: "Center", - 100: "End", -}; - -const label_to_alignment = { - Fill: Gtk.Align.FILL, - Start: Gtk.Align.START, - Center: Gtk.Align.CENTER, - End: Gtk.Align.END, -}; - -for (const [value, label] of Object.entries(marks)) { - alignment.add_mark(value, Gtk.PositionType.RIGHT, label); -} -alignment.set_increments(33, 100); - -alignment.connect("value-changed", () => { - const scale_value = alignment.get_value(); - const label = marks[scale_value]; - if (!label) return; - interactive_box.halign = label_to_alignment[label]; +halign_toggle_end.connect("toggled", () => { + if (halign_toggle_end.active) interactive_box.halign = Gtk.Align.END; +}); + +const valign_toggle_fill = workbench.builder.get_object("valign_toggle_fill"); +const valign_toggle_start = workbench.builder.get_object("valign_toggle_start"); +const valign_toggle_center = workbench.builder.get_object( + "valign_toggle_center", +); +const valign_toggle_end = workbench.builder.get_object("valign_toggle_end"); + +valign_toggle_fill.connect("toggled", () => { + if (valign_toggle_fill.active) interactive_box.valign = Gtk.Align.FILL; +}); + +valign_toggle_start.connect("toggled", () => { + if (valign_toggle_start.active) interactive_box.valign = Gtk.Align.START; +}); + +valign_toggle_center.connect("toggled", () => { + if (valign_toggle_center.active) interactive_box.valign = Gtk.Align.CENTER; +}); +valign_toggle_end.connect("toggled", () => { + if (valign_toggle_end.active) interactive_box.valign = Gtk.Align.END; }); diff --git a/src/Library/demos/Box/main.json b/src/Library/demos/Box/main.json index 1a2d9f583..bfed64732 100644 --- a/src/Library/demos/Box/main.json +++ b/src/Library/demos/Box/main.json @@ -3,7 +3,6 @@ "category": "user_interface", "description": "A widget that arranges its child widgets into a single row or column", "panels": [ - "ui", "preview" ], "autorun": true From 226d5ab6ad6150150bbe846d5d861ccf5da1aeca Mon Sep 17 00:00:00 2001 From: AkshayWarrier Date: Mon, 13 Mar 2023 10:38:38 +0530 Subject: [PATCH 6/7] Box: Changes from PR review --- src/Library/demos/Box/main.blp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp index 80c10b346..53e8aaf65 100644 --- a/src/Library/demos/Box/main.blp +++ b/src/Library/demos/Box/main.blp @@ -77,6 +77,7 @@ Adw.Clamp { spacing:18; Box{ + spacing: 18; Label { label: _("orientation"); } @@ -85,6 +86,7 @@ Adw.Clamp { margin-start: 6; homogeneous: true; halign: center; + styles ["linked"] ToggleButton toggle_orientation_horizontal { label: _("horizontal"); @@ -107,13 +109,13 @@ Adw.Clamp { margin-bottom:12; margin-start:12; row-spacing:18; + margin-end: 114; Box { orientation: vertical; layout { row:0; - column:0; - column-span:3; + column:1; } Label { margin-top:12; @@ -147,8 +149,6 @@ Adw.Clamp { layout { row:1; column:0; - row-span:2; - column-span:2; } Label { label: _("valign"); @@ -186,12 +186,10 @@ Adw.Clamp { hexpand: true; vexpand:true; has-frame: true; - margin-end: 114; + layout { row:1; column:1; - row-span:2; - column-span:2; } Box interactive_box{ } @@ -200,3 +198,4 @@ Adw.Clamp { } } } + From 6c984a1960efd4c4ad6e8ff24f955f56a3373d13 Mon Sep 17 00:00:00 2001 From: Sonny Piers Date: Mon, 13 Mar 2023 22:19:50 +0100 Subject: [PATCH 7/7] add tooltips --- src/Library/demos/Box/main.blp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Library/demos/Box/main.blp b/src/Library/demos/Box/main.blp index 53e8aaf65..7511a5351 100644 --- a/src/Library/demos/Box/main.blp +++ b/src/Library/demos/Box/main.blp @@ -112,6 +112,7 @@ Adw.Clamp { margin-end: 114; Box { + tooltip-text: _("Horizontal Alignment"); orientation: vertical; layout { row:0; @@ -146,6 +147,7 @@ Adw.Clamp { } Box { + tooltip-text: _("Vertical Alignment"); layout { row:1; column:0;