Skip to content

Commit 246f887

Browse files
committed
feat: Port audiotracks and subtitles to Blueprint, port to Adw.Window instead of Gtk.Dialog everywhere
Signed-off-by: Felicitas Pojtinger <[email protected]>
1 parent fe5aede commit 246f887

File tree

5 files changed

+158
-16
lines changed

5 files changed

+158
-16
lines changed

.gitignore

-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,5 @@ vendor
44
*.compiled
55
*.gresource
66
*.ui
7-
!audiotracks.ui
8-
!subtitles.ui
97
!error.ui
108
!warning.ui

internal/components/controls.go

+13-12
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ func OpenControlsWindow(
179179
descriptionProgressBar := descriptionBuilder.GetObject("preparing-progress-bar").Cast().(*gtk.ProgressBar)
180180

181181
subtitlesBuilder := gtk.NewBuilderFromResource(resources.GResourceSubtitlesPath)
182-
subtitlesDialog := subtitlesBuilder.GetObject("subtitles-dialog").Cast().(*gtk.Dialog)
182+
subtitlesDialog := subtitlesBuilder.GetObject("subtitles-dialog").Cast().(*adw.Window)
183183
subtitlesCancelButton := subtitlesBuilder.GetObject("button-cancel").Cast().(*gtk.Button)
184184
subtitlesSpinner := subtitlesBuilder.GetObject("headerbar-spinner").Cast().(*gtk.Spinner)
185185
subtitlesOKButton := subtitlesBuilder.GetObject("button-ok").Cast().(*gtk.Button)
@@ -188,7 +188,7 @@ func OpenControlsWindow(
188188
subtitlesOverlay := subtitlesBuilder.GetObject("toast-overlay").Cast().(*adw.ToastOverlay)
189189

190190
audiotracksBuilder := gtk.NewBuilderFromResource(resources.GResourceAudiotracksPath)
191-
audiotracksDialog := audiotracksBuilder.GetObject("audiotracks-dialog").Cast().(*gtk.Dialog)
191+
audiotracksDialog := audiotracksBuilder.GetObject("audiotracks-dialog").Cast().(*adw.Window)
192192
audiotracksCancelButton := audiotracksBuilder.GetObject("button-cancel").Cast().(*gtk.Button)
193193
audiotracksOKButton := audiotracksBuilder.GetObject("button-ok").Cast().(*gtk.Button)
194194
audiotracksSelectionGroup := audiotracksBuilder.GetObject("audiotracks").Cast().(*adw.PreferencesGroup)
@@ -1418,27 +1418,20 @@ func OpenControlsWindow(
14181418
})
14191419

14201420
subtitleButton.ConnectClicked(func() {
1421-
subtitlesDialog.SetVisible(true)
1421+
subtitlesDialog.Present()
14221422
})
14231423

14241424
audiotracksButton.ConnectClicked(func() {
1425-
audiotracksDialog.SetVisible(true)
1425+
audiotracksDialog.Present()
14261426
})
14271427

1428-
for _, d := range []*gtk.Dialog{subtitlesDialog, audiotracksDialog} {
1428+
for _, d := range []*adw.Window{subtitlesDialog, audiotracksDialog} {
14291429
dialog := d
14301430

14311431
escCtrl := gtk.NewEventControllerKey()
14321432
dialog.AddController(escCtrl)
14331433
dialog.SetTransientFor(&window.Window)
14341434

1435-
dialog.ConnectCloseRequest(func() (ok bool) {
1436-
dialog.Close()
1437-
dialog.SetVisible(false)
1438-
1439-
return ok
1440-
})
1441-
14421435
escCtrl.ConnectKeyReleased(func(keyval, keycode uint, state gdk.ModifierType) {
14431436
if keycode == keycodeEscape {
14441437
dialog.Close()
@@ -1469,14 +1462,22 @@ func OpenControlsWindow(
14691462

14701463
subtitlesOKButton.ConnectClicked(func() {
14711464
subtitlesDialog.Close()
1465+
subtitlesDialog.SetVisible(false)
1466+
})
1467+
1468+
audiotracksCancelButton.ConnectClicked(func() {
1469+
audiotracksDialog.Close()
1470+
subtitlesDialog.SetVisible(false)
14721471
})
14731472

14741473
audiotracksCancelButton.ConnectClicked(func() {
14751474
audiotracksDialog.Close()
1475+
subtitlesDialog.SetVisible(false)
14761476
})
14771477

14781478
audiotracksOKButton.ConnectClicked(func() {
14791479
audiotracksDialog.Close()
1480+
subtitlesDialog.SetVisible(false)
14801481
})
14811482

14821483
addSubtitlesFromFileButton.ConnectClicked(func() {

internal/resources/audiotracks.blp

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using Gtk 4.0;
2+
using Adw 1;
3+
4+
Adw.Window audiotracks-dialog {
5+
modal: true;
6+
title: 'Audio Tracks';
7+
default-width: 500;
8+
default-height: 500;
9+
10+
Adw.ToolbarView {
11+
[top]
12+
Adw.HeaderBar {
13+
show-end-title-buttons: false;
14+
show-start-title-buttons: false;
15+
16+
[start]
17+
Button button-cancel {
18+
label: 'Cancel';
19+
}
20+
21+
[end]
22+
Button button-ok {
23+
label: 'OK';
24+
25+
styles [
26+
"suggested-action",
27+
]
28+
}
29+
}
30+
31+
Adw.ToastOverlay toast-overlay {
32+
ScrolledWindow {
33+
Adw.Clamp {
34+
maximum-size: 600;
35+
vexpand: true;
36+
valign: fill;
37+
margin-top: 12;
38+
margin-start: 12;
39+
margin-end: 12;
40+
margin-bottom: 12;
41+
42+
Adw.PreferencesGroup audiotracks {}
43+
}
44+
}
45+
}
46+
}
47+
}

internal/resources/resources.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,15 @@ var GResourcePreferencesPath = path.Join(gResourceAppPath, "preferences.ui")
4747
//go:generate blueprint-compiler compile --output preparing.ui preparing.blp
4848
var GResourcePreparingPath = path.Join(gResourceAppPath, "preparing.ui")
4949

50-
var GResourceErrorPath = path.Join(gResourceAppPath, "error.ui")
51-
var GResourceWarningPath = path.Join(gResourceAppPath, "warning.ui")
50+
//go:generate blueprint-compiler compile --output subtitles.ui subtitles.blp
5251
var GResourceSubtitlesPath = path.Join(gResourceAppPath, "subtitles.ui")
52+
53+
//go:generate blueprint-compiler compile --output audiotracks.ui audiotracks.blp
5354
var GResourceAudiotracksPath = path.Join(gResourceAppPath, "audiotracks.ui")
5455

56+
var GResourceErrorPath = path.Join(gResourceAppPath, "error.ui")
57+
var GResourceWarningPath = path.Join(gResourceAppPath, "warning.ui")
58+
5559
var GResourceStyleCSSPath = path.Join(gResourceAppPath, "style.css")
5660
var GResourceMetainfoPath = path.Join(gResourceAppPath, "com.pojtinger.felicitas.Multiplex.metainfo.xml")
5761

internal/resources/subtitles.blp

+92
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
using Gtk 4.0;
2+
using Adw 1;
3+
4+
Adw.Window subtitles-dialog {
5+
modal: true;
6+
title: 'Subtitles';
7+
default-width: 500;
8+
default-height: 500;
9+
10+
Adw.ToolbarView {
11+
[top]
12+
Adw.HeaderBar {
13+
show-end-title-buttons: false;
14+
show-start-title-buttons: false;
15+
16+
[start]
17+
Button button-cancel {
18+
label: 'Cancel';
19+
}
20+
21+
[title]
22+
Box {
23+
orientation: horizontal;
24+
spacing: 12;
25+
valign: center;
26+
halign: center;
27+
28+
Spinner headerbar-spinner {
29+
tooltip-text: 'Getting metadata ...';
30+
visible: false;
31+
}
32+
33+
Label {
34+
label: 'Subtitles';
35+
36+
styles [
37+
"title",
38+
]
39+
}
40+
}
41+
42+
[end]
43+
Button button-ok {
44+
label: 'OK';
45+
46+
styles [
47+
"suggested-action",
48+
]
49+
}
50+
}
51+
52+
Adw.ToastOverlay toast-overlay {
53+
ScrolledWindow {
54+
Adw.Clamp {
55+
maximum-size: 600;
56+
vexpand: true;
57+
valign: fill;
58+
margin-top: 12;
59+
margin-start: 12;
60+
margin-end: 12;
61+
margin-bottom: 12;
62+
63+
Adw.PreferencesGroup subtitle-tracks {
64+
title: _('Tracks');
65+
66+
[header-suffix]
67+
Button add-from-file-button {
68+
styles [
69+
"flat",
70+
]
71+
72+
valign: center;
73+
74+
Box {
75+
spacing: 6;
76+
77+
Image {
78+
icon-name: 'list-add-symbolic';
79+
}
80+
81+
Label {
82+
label: 'Add from file';
83+
}
84+
}
85+
}
86+
}
87+
}
88+
}
89+
}
90+
}
91+
}
92+

0 commit comments

Comments
 (0)