package ui import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" ) func keyButton(label string, entry *widget.Entry) *widget.Button { return widget.NewButton(label, func() { entry.Append(label) }) } func entButton(entry *widget.Entry) *widget.Button { return widget.NewButton("ENT", func() { entry.Append("\n") }) } func clearButton(label string, entry *widget.Entry) *widget.Button { return widget.NewButton(label, func() { entry.SetText("") }) } func newIPKeypad(entry *widget.Entry) (fyne.CanvasObject, []*widget.Button) { var btns []*widget.Button p1 := keyButton("192.168.", entry) p2 := keyButton("169.254.", entry) p3 := keyButton("10.", entry) p4 := keyButton("100.", entry) btns = append(btns, p1, p2, p3, p4) presets := container.NewHBox(p1, p2, p3, p4) n := []struct{ label string }{ {"1"}, {"2"}, {"3"}, {"4"}, {"5"}, {"6"}, {"7"}, {"8"}, {"9"}, {"0"}, {"/"}, {"-"}, {"."}, } var grid []fyne.CanvasObject for _, v := range n { b := keyButton(v.label, entry) btns = append(btns, b) grid = append(grid, b) } ent := entButton(entry) btns = append(btns, ent) grid = append(grid, ent) clr := clearButton("清空IP", entry) btns = append(btns, clr) grid = append(grid, clr) numpad := container.NewGridWithColumns(3, grid...) return container.NewVBox(presets, numpad), btns } func newPortKeypad(entry *widget.Entry) (fyne.CanvasObject, []*widget.Button) { var btns []*widget.Button presetLabels := []string{"1-65535", "80;443", "21", "22", "23", "3389", "445", "25565", "25;587"} var presetObjs []fyne.CanvasObject for _, l := range presetLabels { b := keyButton(l, entry) btns = append(btns, b) presetObjs = append(presetObjs, b) } presets := container.NewGridWithColumns(3, presetObjs...) numLabels := []string{"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ";", "-"} var grid []fyne.CanvasObject for _, l := range numLabels { b := keyButton(l, entry) btns = append(btns, b) grid = append(grid, b) } ent := entButton(entry) btns = append(btns, ent) grid = append(grid, ent) clr := clearButton("清空端口", entry) btns = append(btns, clr) grid = append(grid, clr) numpad := container.NewGridWithColumns(3, grid...) return container.NewVBox(presets, numpad), btns }