/
newpreset_dialog.go
73 lines (65 loc) · 1.53 KB
/
newpreset_dialog.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package mainwindow
import (
"log"
"github.com/shivas/abyss-blackbox/internal/config"
"github.com/lxn/walk"
. "github.com/lxn/walk/declarative" //nolint:stylecheck,revive // we needs side effects
)
func RunNewPresetDialog(owner walk.Form, presetValue config.Preset, c *config.CaptureConfig) (int, error) {
var (
dlg *walk.Dialog
db *walk.DataBinder
acceptPB, cancelPB *walk.PushButton
PresetNameEdit *walk.LineEdit
)
data := map[string]interface{}{"Name": ""}
return Dialog{
AssignTo: &dlg,
Title: "New preset",
DefaultButton: &acceptPB,
CancelButton: &cancelPB,
DataBinder: DataBinder{
AssignTo: &db,
DataSource: data,
OnSubmitted: func() {
log.Printf("new preset saving: %#v with values: %v", data, presetValue)
if c.Presets == nil {
c.Presets = make(map[string]config.Preset)
}
c.Presets[data["Name"].(string)] = presetValue
},
},
Layout: VBox{},
Children: []Widget{
TextLabel{
Text: "Preset name:",
},
LineEdit{
Text: Bind("Name"),
AssignTo: &PresetNameEdit,
},
Composite{
Layout: HBox{},
Children: []Widget{
HSpacer{},
PushButton{
AssignTo: &acceptPB,
Text: "OK",
OnClicked: func() {
if err := db.Submit(); err != nil {
log.Print(err)
return
}
dlg.Accept()
},
},
PushButton{
AssignTo: &cancelPB,
Text: "Cancel",
OnClicked: func() { dlg.Cancel() },
},
},
},
},
}.Run(owner)
}