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

Function setupTimeEntry

internal/ui/input.go:12–213  ·  view source on GitHub ↗
(entry *gtk.Entry, prev *gtk.Widget, next *gtk.Widget, maxVal int, finish func())

Source from the content-addressed store, hash-verified

10)
11
12func setupTimeEntry(entry *gtk.Entry, prev *gtk.Widget, next *gtk.Widget, maxVal int, finish func()) {
13 if maxVal <= 0 {
14 maxVal = 59
15 }
16
17 entry.AddCSSClass("monospace")
18 entry.AddCSSClass("entry")
19 entry.AddCSSClass("timer-entry")
20 entry.SetSensitive(true)
21 entry.SetCanFocus(true)
22 entry.SetCanTarget(true)
23 entry.SetMaxWidthChars(2)
24 entry.SetWidthChars(2)
25 entry.SetOverflow(gtk.OverflowHidden)
26 entry.SetHExpand(false)
27 entry.SetHAlign(gtk.AlignCenter)
28 entry.SetVAlign(gtk.AlignCenter)
29 entry.SetAlignment(.5)
30 entry.SetText("00")
31
32 formatValue := func() {
33 val := entry.Text()
34
35 if len(val) == 0 {
36 entry.SetText("00")
37 }
38
39 if len(val) == 1 {
40 entry.SetText("0" + val)
41 }
42 }
43
44 clickCtrl := gtk.NewGestureClick()
45 clickCtrl.SetPropagationPhase(gtk.PhaseCapture)
46 clickCtrl.ConnectReleased(func(nPress int, x, y float64) {
47 _, _, ok := entry.SelectionBounds()
48
49 if !ok {
50 entry.SelectRegion(0, -1)
51 }
52 })
53
54 focusCtrl := gtk.NewEventControllerFocus()
55 focusCtrl.SetPropagationPhase(gtk.PhaseTarget)
56 focusCtrl.ConnectLeave(func() {
57 formatValue()
58 entry.SelectRegion(0, 0)
59 })
60
61 kbCtrl := gtk.NewEventControllerKey()
62 kbCtrl.SetPropagationPhase(gtk.PhaseCapture)
63 kbCtrl.SetPropagationLimit(gtk.LimitNone)
64 kbCtrl.ConnectKeyPressed(func(keyval, keycode uint, state gdk.ModifierType) (ok bool) {
65 // allow some basic keys
66 allowedKeyvals := []uint{
67 gdk.KEY_Tab,
68 gdk.KEY_ISO_Left_Tab,
69 gdk.KEY_3270_BackTab,

Callers 1

NewContentFunction · 0.85

Calls 3

IsGdkKeyvalNumberFunction · 0.92
NumToLabelTextFunction · 0.92
GdkKeyvalsMethod · 0.80

Tested by

no test coverage detected