(toAdd []string)
| 439 | } |
| 440 | |
| 441 | func RenderPresets(toAdd []string) { |
| 442 | newPresets := toAdd |
| 443 | if len(toAdd) == 0 { |
| 444 | newPresets = core.UserPrefs.Presets |
| 445 | } |
| 446 | |
| 447 | for _, preset := range newPresets { |
| 448 | row := adw.NewActionRow() |
| 449 | row.SetTitle(preset) |
| 450 | |
| 451 | container := gtk.NewListBoxRow() |
| 452 | container.SetChild(row) |
| 453 | |
| 454 | box := gtk.NewBox(gtk.OrientationHorizontal, 16) |
| 455 | box.SetVAlign(gtk.AlignCenter) |
| 456 | box.AddCSSClass("presets-list-item") |
| 457 | |
| 458 | title := gtk.NewEditableLabel(preset) |
| 459 | title.AddCSSClass("presets-list-title") |
| 460 | title.SetVAlign(gtk.AlignStart) |
| 461 | title.SetAlignment(0) |
| 462 | title.SetHExpand(true) |
| 463 | |
| 464 | container.ConnectActivate(func() { |
| 465 | title.GrabFocus() |
| 466 | title.SelectRegion(0, -1) |
| 467 | }) |
| 468 | |
| 469 | cleanTitle := func() { |
| 470 | title.GrabFocus() |
| 471 | title.SetText("00:01") |
| 472 | } |
| 473 | |
| 474 | formatTitle := func() { |
| 475 | parts := strings.Split(title.Text(), ":") |
| 476 | if len(parts) < 1 && len(parts) > 3 { |
| 477 | cleanTitle() |
| 478 | return |
| 479 | } |
| 480 | |
| 481 | var vals []int |
| 482 | for _, v := range parts { |
| 483 | val, err := strconv.Atoi(v) |
| 484 | if err != nil || val < 0 || val > 59 { |
| 485 | cleanTitle() |
| 486 | return |
| 487 | } |
| 488 | |
| 489 | vals = append(vals, val) |
| 490 | } |
| 491 | |
| 492 | var newText string |
| 493 | if len(vals) == 1 { |
| 494 | newText = fmt.Sprintf("00:%02d", vals[0]) |
| 495 | } else if len(vals) == 2 { |
| 496 | newText = fmt.Sprintf("%02d:%02d", vals[0], vals[1]) |
| 497 | } else if len(vals) == 3 { |
| 498 | newText = fmt.Sprintf("%02d:%02d:%02d", vals[0], vals[1], vals[2]) |
no test coverage detected