MCPcopy Create free account
hub / github.com/efogdev/mpris-timer / NewPrefsWindow

Function NewPrefsWindow

internal/ui/prefs.go:32–92  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

30)
31
32func NewPrefsWindow() {
33 if prefsWin != nil {
34 return
35 }
36
37 prefsWin = adw.NewWindow()
38 prefsWin.SetTitle("Preferences")
39 prefsWin.SetSizeRequest(prefsMinWidth, prefsMinHeight)
40 prefsWin.SetDefaultSize(prefsDefaultWidth, prefsDefaultHeight)
41
42 prefsWin.ConnectCloseRequest(func() bool {
43 prefsWin = nil
44 return false
45 })
46
47 escCtrl := gtk.NewEventControllerKey()
48 escCtrl.SetPropagationPhase(gtk.PhaseCapture)
49 escCtrl.ConnectKeyPressed(func(keyval, keycode uint, state gdk.ModifierType) (ok bool) {
50 if slices.Contains(core.KeyEsc.GdkKeyvals(), keyval) {
51 prefsWin.Close()
52 return true
53 }
54
55 return false
56 })
57
58 header := adw.NewHeaderBar()
59 view := adw.NewToolbarView()
60 view.SetTopBarStyle(adw.ToolbarFlat)
61 view.AddTopBar(header)
62
63 box := gtk.NewBox(gtk.OrientationVertical, 8)
64 box.SetVExpand(true)
65 box.AddCSSClass("prefs-inner")
66
67 NewPrefsWidgets(box)
68
69 content := gtk.NewBox(gtk.OrientationVertical, 0)
70 content.Append(box)
71
72 scrolledWindow := gtk.NewScrolledWindow()
73 scrolledWindow.SetVExpand(true)
74 scrolledWindow.SetHExpand(true)
75 scrolledWindow.SetOverlayScrolling(true)
76 scrolledWindow.SetChild(content)
77
78 outerBox := gtk.NewBox(gtk.OrientationVertical, 0)
79 outerBox.Append(header)
80 outerBox.Append(scrolledWindow)
81
82 view.SetContent(outerBox)
83 prefsWin.AddController(escCtrl)
84 prefsWin.SetContent(view)
85 prefsWin.SetVisible(true)
86 prefsWin.Activate()
87 prefsWin.GrabFocus()
88
89 // ToDo debug freezes w/o this

Callers 1

NewContentFunction · 0.85

Calls 3

NewPrefsWidgetsFunction · 0.85
renderPreviewFunction · 0.85
GdkKeyvalsMethod · 0.80

Tested by

no test coverage detected