From 4a2086c6f1e48790cec4a26fd696293b139c3f8f Mon Sep 17 00:00:00 2001 From: kevin Date: Fri, 17 Jul 2026 17:12:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=AB=E6=8F=8F=E6=97=B6=E7=A6=81=E7=94=A8?= =?UTF-8?q?=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/ui/keypad.go | 84 +++++++++++++++++++++++++++-------------- internal/ui/scanform.go | 28 ++++++++++---- 2 files changed, 75 insertions(+), 37 deletions(-) diff --git a/internal/ui/keypad.go b/internal/ui/keypad.go index a1644b9..f269657 100644 --- a/internal/ui/keypad.go +++ b/internal/ui/keypad.go @@ -24,35 +24,61 @@ func clearButton(label string, entry *widget.Entry) *widget.Button { }) } -func newIPKeypad(entry *widget.Entry) fyne.CanvasObject { - presets := container.NewHBox( - keyButton("192.168.", entry), - keyButton("169.254.", entry), - keyButton("10.", entry), - keyButton("100.", entry), - ) - numpad := container.NewGridWithColumns(3, - keyButton("1", entry), keyButton("2", entry), keyButton("3", entry), - keyButton("4", entry), keyButton("5", entry), keyButton("6", entry), - keyButton("7", entry), keyButton("8", entry), keyButton("9", entry), - entButton(entry), keyButton("0", entry), keyButton(".", entry), - keyButton("/", entry), keyButton("-", entry), clearButton("清空IP", entry), - ) - return container.NewVBox(presets, numpad) +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 { - presets := container.NewGridWithColumns(3, - keyButton("1-65535", entry), keyButton("80;443", entry), keyButton("21", entry), - keyButton("22", entry), keyButton("23", entry), keyButton("3389", entry), - keyButton("445", entry), keyButton("25565", entry), keyButton("25;587", entry), - ) - numpad := container.NewGridWithColumns(3, - keyButton("1", entry), keyButton("2", entry), keyButton("3", entry), - keyButton("4", entry), keyButton("5", entry), keyButton("6", entry), - keyButton("7", entry), keyButton("8", entry), keyButton("9", entry), - keyButton("0", entry), keyButton(";", entry), keyButton("-", entry), - entButton(entry), clearButton("清空端口", entry), - ) - return container.NewVBox(presets, numpad) +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 } diff --git a/internal/ui/scanform.go b/internal/ui/scanform.go index 602e462..b69b2a9 100644 --- a/internal/ui/scanform.go +++ b/internal/ui/scanform.go @@ -11,7 +11,7 @@ import ( "fyne.io/fyne/v2/widget" ) -const appVersion = "V1.5.1" +const appVersion = "V0.0.1" const ( ipPlaceholder = "例子:\n127.0.0.1 - 单IP\n192.168.0.0/24 - 掩码IP段\n0.0.0.0-255.255.255.255 - IP段\ndomain.com - 单域名" @@ -28,9 +28,10 @@ type scanForm struct { output *widget.Entry progress *widget.ProgressBar - scanBtn *widget.Button - pingBtn *widget.Button - scanning bool + scanBtn *widget.Button + pingBtn *widget.Button + keypadBtn []*widget.Button + scanning bool } func newScanForm(app fyne.App) *scanForm { @@ -62,13 +63,17 @@ func (f *scanForm) build() fyne.CanvasObject { ipSection := container.NewVBox( widget.NewLabel("IP"), f.ipList, - newIPKeypad(f.ipList), ) + ipKeys, ipBtns := newIPKeypad(f.ipList) + ipSection.Add(ipKeys) portSection := container.NewVBox( widget.NewLabel("端口"), f.portList, - newPortKeypad(f.portList), ) + portKeys, portBtns := newPortKeypad(f.portList) + portSection.Add(portKeys) + f.keypadBtn = append(f.keypadBtn, ipBtns...) + f.keypadBtn = append(f.keypadBtn, portBtns...) topRow := container.New(layout.NewGridLayoutWithColumns(2), ipSection, portSection) controlRow := f.buildControlRow() @@ -78,8 +83,8 @@ func (f *scanForm) build() fyne.CanvasObject { widget.NewLabel(appVersion), layout.NewSpacer(), widget.NewButton("Blog", func() { f.openURL("https://wnfed.com/") }), - widget.NewButton("GitLab", func() { f.openURL("https://git.lmve.net/kevin/tcp_ip_scan") }), - widget.NewButton("GitHub", func() { f.openURL("https://github.com/wuwenfengmi1998/tcp_ip_scan") }), + widget.NewButton("Gitea", func() { f.openURL("https://git.lmve.net/kevin/ip_scan_go") }), + widget.NewButton("GitHub", func() { f.openURL("https://github.com/wuwenfengmi1998") }), ) return container.NewBorder(topArea, footer, nil, nil, f.output) @@ -136,6 +141,13 @@ func (f *scanForm) togglePing() { } func (f *scanForm) setInputsEnabled(enabled bool) { + for _, b := range f.keypadBtn { + if enabled { + b.Enable() + } else { + b.Disable() + } + } if enabled { f.ipList.Enable() f.portList.Enable()