aboutsummaryrefslogtreecommitdiff
path: root/settings.go
diff options
context:
space:
mode:
Diffstat (limited to 'settings.go')
-rw-r--r--settings.go247
1 files changed, 247 insertions, 0 deletions
diff --git a/settings.go b/settings.go
new file mode 100644
index 0000000..f2b6920
--- /dev/null
+++ b/settings.go
@@ -0,0 +1,247 @@
+package main
+
+import (
+ "github.com/lxn/walk"
+ "github.com/lxn/walk/declarative"
+)
+
+func runSettingsDG(owner walk.Form, settings *SerIPscan) (int, error) {
+
+ var settingsGuiHolder struct {
+ dlg *walk.Dialog
+ db *walk.DataBinder
+ acceptPB, cancelPB *walk.PushButton
+ valueEdit, pEdi *walk.NumberEdit
+ slv, slx *walk.Slider
+ gbox, gpibox *walk.GroupBox
+ }
+ return declarative.Dialog{
+ AssignTo: &settingsGuiHolder.dlg,
+ FixedSize: true,
+ Title: "IP Scanner Settings",
+ DefaultButton: &settingsGuiHolder.acceptPB,
+ CancelButton: &settingsGuiHolder.cancelPB,
+ DataBinder: declarative.DataBinder{
+ AssignTo: &settingsGuiHolder.db,
+ Name: "Setting",
+ DataSource: settings,
+ ErrorPresenter: declarative.ToolTipErrorPresenter{},
+ },
+ MinSize: declarative.Size{Width: 300, Height: 300},
+ Layout: declarative.VBox{},
+ Children: []declarative.Widget{
+ declarative.GroupBox{
+ Title: "IP Scanner Settings",
+ Layout: declarative.VBox{},
+ Children: []declarative.Widget{
+ declarative.Composite{
+ Layout: declarative.Grid{Columns: 1},
+ Children: []declarative.Widget{
+ declarative.Composite{
+ Layout: declarative.HBox{Spacing: 0},
+ Children: []declarative.Widget{
+ declarative.RadioButtonGroupBox{
+ Title: "Port Scan",
+ Layout: declarative.Grid{Columns: 1},
+ DataMember: "PscanTOF",
+ Buttons: []declarative.RadioButton{
+ {MaxSize: declarative.Size{Width: 60}, Text: "True", Value: true, OnClicked: func() { settingsGuiHolder.gbox.SetEnabled(true) }},
+ {MaxSize: declarative.Size{Width: 60}, Text: "False", Value: false, OnClicked: func() { settingsGuiHolder.gbox.SetEnabled(false) }},
+ },
+ },
+ declarative.RadioButtonGroupBox{
+ Title: "Manufacture",
+ Layout: declarative.Grid{Columns: 1},
+ DataMember: "NetBs",
+ Buttons: []declarative.RadioButton{
+ {MaxSize: declarative.Size{Width: 60}, Text: "True", Value: true},
+ {MaxSize: declarative.Size{Width: 60}, Text: "False", Value: false},
+ },
+ },
+ declarative.RadioButtonGroupBox{
+ Title: "Ping Hosts",
+ Layout: declarative.Grid{Columns: 1},
+ DataMember: "Pong",
+ Buttons: []declarative.RadioButton{
+ {Text: "True", Value: true, MaxSize: declarative.Size{Width: 60}, OnClicked: func() { settingsGuiHolder.gpibox.SetEnabled(true) }},
+ {Text: "False", Value: false, MaxSize: declarative.Size{Width: 60}, OnClicked: func() { settingsGuiHolder.gpibox.SetEnabled(false) }},
+ },
+ },
+ },
+ },
+ declarative.GroupBox{
+ AssignTo: &settingsGuiHolder.gbox,
+ Title: "Port Number To Scan",
+ Layout: declarative.Grid{Columns: 4},
+ Children: []declarative.Widget{
+ declarative.Label{
+ Text: "Port Number:",
+ },
+ declarative.NumberEdit{
+ MaxSize: declarative.Size{Width: 45},
+ Value: declarative.Bind("Pscan1.Nm", declarative.Range{Min: 1, Max: 65535}),
+ },
+ declarative.RadioButtonGroup{
+ DataMember: "Pscan1.Tp",
+ Buttons: []declarative.RadioButton{
+ {Text: "TCP", Value: "TCP", MaxSize: declarative.Size{Width: 55}},
+ {Text: "UDP", Value: "UDP", MaxSize: declarative.Size{Width: 55}},
+ },
+ },
+ declarative.Label{
+ Text: "Port Number:",
+ },
+ declarative.NumberEdit{
+ MaxSize: declarative.Size{Width: 45},
+ Value: declarative.Bind("Pscan2.Nm", declarative.Range{Min: 1, Max: 65535}),
+ },
+ declarative.RadioButtonGroup{
+ DataMember: "Pscan2.Tp",
+ Buttons: []declarative.RadioButton{
+ {Text: "TCP", Value: "TCP", MaxSize: declarative.Size{Width: 55}},
+ {Text: "UDP", Value: "UDP", MaxSize: declarative.Size{Width: 55}},
+ },
+ },
+ declarative.Label{
+ Text: "Port Number:",
+ },
+ declarative.NumberEdit{
+ MaxSize: declarative.Size{Width: 45},
+ Value: declarative.Bind("Pscan3.Nm", declarative.Range{Min: 1, Max: 65535}),
+ },
+ declarative.RadioButtonGroup{
+ DataMember: "Pscan3.Tp",
+ Buttons: []declarative.RadioButton{
+ {Text: "TCP", Value: "TCP", MaxSize: declarative.Size{Width: 55}},
+ {Text: "UDP", Value: "UDP", MaxSize: declarative.Size{Width: 55}},
+ },
+ },
+ declarative.Label{
+ Text: "Port Number:",
+ },
+ declarative.NumberEdit{
+ MaxSize: declarative.Size{Width: 45},
+ Value: declarative.Bind("Pscan4.Nm", declarative.Range{Min: 1, Max: 65535}),
+ },
+ declarative.RadioButtonGroup{
+ DataMember: "Pscan4.Tp",
+ Buttons: []declarative.RadioButton{
+ {Text: "TCP", Value: "TCP", MaxSize: declarative.Size{Width: 55}},
+ {Text: "UDP", Value: "UDP", MaxSize: declarative.Size{Width: 55}},
+ },
+ },
+ declarative.Label{
+ Text: "Port Number:",
+ },
+ declarative.NumberEdit{
+ MaxSize: declarative.Size{Width: 45},
+ Value: declarative.Bind("Pscan5.Nm", declarative.Range{Min: 1, Max: 65535}),
+ },
+ declarative.RadioButtonGroup{
+ DataMember: "Pscan5.Tp",
+ Buttons: []declarative.RadioButton{
+ {Text: "TCP", Value: "TCP", MaxSize: declarative.Size{Width: 55}},
+ {Text: "UDP", Value: "UDP", MaxSize: declarative.Size{Width: 55}},
+ },
+ },
+ },
+ },
+ declarative.GroupBox{
+ AssignTo: &settingsGuiHolder.gpibox,
+ Title: "Ping Timeout",
+ Layout: declarative.Grid{Columns: 3},
+ Children: []declarative.Widget{
+ declarative.Label{
+ Text: "Timeoute:",
+ },
+ declarative.Slider{
+ AssignTo: &settingsGuiHolder.slx,
+ Value: declarative.Bind("Ptime"),
+ MaxValue: 8,
+ MinValue: 1,
+ RowSpan: 2,
+ MinSize: declarative.Size{Width: 130},
+
+ ToolTipText: "Timeout in second",
+
+ OnValueChanged: func() {
+ settings.Ptime = settingsGuiHolder.slx.Value()
+ settingsGuiHolder.pEdi.SetValue(float64(settings.Ptime))
+
+ },
+ },
+ declarative.NumberEdit{
+ AssignTo: &settingsGuiHolder.pEdi,
+ Value: declarative.Bind("Ptime", declarative.Range{Min: 1, Max: 8}),
+ MaxSize: declarative.Size{Width: 45},
+ OnValueChanged: func() {
+ settings.Ptime = int(settingsGuiHolder.pEdi.Value())
+ settingsGuiHolder.slx.SetValue(int(settings.Ptime))
+ },
+ },
+ },
+ },
+ declarative.GroupBox{
+ Title: "Performace Setting",
+ Layout: declarative.Grid{Columns: 3},
+ Children: []declarative.Widget{
+ declarative.Label{
+ Text: "Threads:",
+ MinSize: declarative.Size{Width: 48},
+ },
+ declarative.Slider{
+ AssignTo: &settingsGuiHolder.slv,
+ Value: declarative.Bind("GreenThreads"),
+ MaxValue: 256,
+ MinValue: 8,
+ RowSpan: 2,
+ MinSize: declarative.Size{Width: 130},
+
+ ToolTipText: "Number of threads (GreenThreads)",
+
+ OnValueChanged: func() {
+ settings.GreenThreads = settingsGuiHolder.slv.Value()
+ settingsGuiHolder.valueEdit.SetValue(float64(settings.GreenThreads))
+
+ },
+ },
+ declarative.NumberEdit{
+ AssignTo: &settingsGuiHolder.valueEdit,
+ MaxSize: declarative.Size{Width: 45},
+ Value: declarative.Bind("GreenThreads", declarative.Range{Min: 8, Max: 256}),
+ OnValueChanged: func() {
+ settings.GreenThreads = int(settingsGuiHolder.valueEdit.Value())
+ settingsGuiHolder.slv.SetValue(settings.GreenThreads)
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ },
+ declarative.Composite{
+ Layout: declarative.HBox{},
+ Children: []declarative.Widget{
+ declarative.HSpacer{},
+ declarative.PushButton{
+ AssignTo: &settingsGuiHolder.acceptPB,
+ Text: "OK",
+ OnClicked: func() {
+ if err := settingsGuiHolder.db.Submit(); err != nil {
+ return
+ }
+
+ settingsGuiHolder.dlg.Accept()
+ },
+ },
+ declarative.PushButton{
+ AssignTo: &settingsGuiHolder.cancelPB,
+ Text: "Cancel",
+ OnClicked: func() { settingsGuiHolder.dlg.Cancel() },
+ },
+ },
+ },
+ },
+ }.Run(owner)
+}

Snix LLC Git Repository Holder Copyright(C) 2022 All Rights Reserved Email To Snix.IR