修订gui代码

This commit is contained in:
e1732a364fed
2000-01-01 00:00:00 +00:00
parent ded4d099ee
commit 82c58529d1
2 changed files with 147 additions and 158 deletions

View File

@@ -3,7 +3,6 @@
package main
// gui界面, 所属计划为 vsc 计划即versyimple client计划使用图形界面. 服务端无需gui所以我们叫client
//tun 的支持 通过在这里引入 proxy/tun 包 实现.
import (
"flag"
@@ -105,19 +104,33 @@ func setupDefaultPref() {
func makeBasicControlsPage() ui.Control {
vbox := ui.NewVerticalBox()
vbox.SetPadded(true)
vbox.Append(ui.NewLabel("开启或关闭vs代理"), false)
hbox := ui.NewHorizontalBox()
hbox.SetPadded(true)
vbox.Append(hbox, false)
vsHbox := ui.NewHorizontalBox()
vsHbox.SetPadded(true)
vsToggleGroup := ui.NewGroup("开启或关闭vs代理")
vsToggleGroup.SetMargined(true)
vsVbox := ui.NewVerticalBox()
vsVbox.SetPadded(true)
vsToggleGroup.SetChild(vsVbox)
vsHbox.Append(vsToggleGroup, true)
vbox.Append(vsHbox, true)
//vbox.Append(ui.NewLabel("开启或关闭vs代理"), false)
toggleHbox := ui.NewHorizontalBox()
toggleHbox.SetPadded(true)
vsVbox.Append(toggleHbox, false)
toggleCheckbox := ui.NewCheckbox("Enable")
stopBtn := ui.NewButton("Stop")
startBtn := ui.NewButton("Start")
hbox.Append(toggleCheckbox, false)
hbox.Append(stopBtn, false)
hbox.Append(startBtn, false)
toggleHbox.Append(toggleCheckbox, false)
toggleHbox.Append(stopBtn, false)
toggleHbox.Append(startBtn, false)
{
var updateState = func(btn, cbx bool) {
@@ -184,90 +197,147 @@ func makeBasicControlsPage() ui.Control {
}
vsFileGroup := ui.NewGroup("选择配置文件")
vsFileVbox := ui.NewVerticalBox()
vsFileGroup.SetChild(vsFileVbox)
vsHbox.Append(vsFileGroup, true)
{
vsFileGroup.SetMargined(true)
vsFileVbox.SetPadded(true)
grid := ui.NewGrid()
grid.SetPadded(true)
vsFileVbox.Append(grid, false)
button := ui.NewButton("选择文件")
entry := ui.NewEntry()
entry.SetReadOnly(true)
button.OnClicked(func(*ui.Button) {
filename := ui.OpenFile(mainwin)
if filename == "" {
filename = "(cancelled)"
}
entry.SetText(filename)
})
grid.Append(button,
0, 0, 1, 1,
false, ui.AlignFill, false, ui.AlignFill)
grid.Append(entry,
1, 0, 1, 1,
true, ui.AlignFill, false, ui.AlignFill)
button = ui.NewButton("保存文件")
entry2 := ui.NewEntry()
entry2.SetReadOnly(true)
button.OnClicked(func(*ui.Button) {
filename := ui.SaveFile(mainwin)
if filename == "" {
filename = "(cancelled)"
}
entry2.SetText(filename)
})
grid.Append(button,
0, 1, 1, 1,
false, ui.AlignFill, false, ui.AlignFill)
grid.Append(entry2,
1, 1, 1, 1,
true, ui.AlignFill, false, ui.AlignFill)
}
vbox.Append(ui.NewHorizontalSeparator(), false)
systemGroup := ui.NewGroup("系统代理")
systemGroup.SetMargined(true)
systemHbox := ui.NewHorizontalBox()
systemHbox.SetPadded(true)
systemHbox.Append(systemGroup, true)
vbox.Append(systemHbox, true)
{
systemGroup.SetMargined(true)
systemHbox.SetPadded(true)
proxyForm := ui.NewForm()
proxyForm.SetPadded(true)
systemGroup.SetChild(proxyForm)
// systemProxyHbox.Append(proxyForm, true)
vbox.Append(systemHbox, true)
var newProxyToggle = func(form *ui.Form, isSocks5 bool) {
gp := currentUserPreference.Gui
var port = gp.HttpPort
var addr = gp.HttpAddr
proxyForm := ui.NewForm()
proxyForm.SetPadded(true)
systemGroup.SetChild(proxyForm)
// systemProxyHbox.Append(proxyForm, true)
str := "http"
var newProxyToggle = func(form *ui.Form, isSocks5 bool) {
gp := currentUserPreference.Gui
var port = gp.HttpPort
var addr = gp.HttpAddr
if isSocks5 {
str = "socks5"
port = gp.Socks5Port
addr = gp.Socks5Addr
str := "http"
if isSocks5 {
str = "socks5"
port = gp.Socks5Port
addr = gp.Socks5Addr
}
addrE := ui.NewEntry()
addrE.SetText(addr)
addrE.OnChanged(func(e *ui.Entry) {
if isSocks5 {
gp.Socks5Addr = e.Text()
} else {
gp.HttpAddr = e.Text()
}
})
portE := ui.NewEntry()
portE.SetText(port)
portE.OnChanged(func(e *ui.Entry) {
if isSocks5 {
gp.Socks5Port = e.Text()
} else {
gp.HttpPort = e.Text()
}
})
cb := ui.NewCheckbox("系统" + str)
cb.OnToggled(func(c *ui.Checkbox) {
netLayer.ToggleSystemProxy(isSocks5, addrE.Text(), portE.Text(), c.Checked())
})
proxyForm.Append("开关系统"+str, cb, false)
proxyForm.Append(str+"地址", addrE, false)
proxyForm.Append(str+"端口", portE, false)
}
addrE := ui.NewEntry()
addrE.SetText(addr)
addrE.OnChanged(func(e *ui.Entry) {
if isSocks5 {
gp.Socks5Addr = e.Text()
} else {
gp.HttpAddr = e.Text()
}
})
newProxyToggle(proxyForm, true)
portE := ui.NewEntry()
portE.SetText(port)
portE.OnChanged(func(e *ui.Entry) {
if isSocks5 {
gp.Socks5Port = e.Text()
} else {
gp.HttpPort = e.Text()
}
})
cb := ui.NewCheckbox("系统" + str)
cb.OnToggled(func(c *ui.Checkbox) {
netLayer.ToggleSystemProxy(isSocks5, addrE.Text(), portE.Text(), c.Checked())
})
proxyForm.Append("开关系统"+str, cb, false)
proxyForm.Append(str+"地址", addrE, false)
proxyForm.Append(str+"端口", portE, false)
newProxyToggle(proxyForm, false)
}
newProxyToggle(proxyForm, true)
newProxyToggle(proxyForm, false)
dnsGroup := ui.NewGroup("系统dns")
dnsGroup.SetMargined(true)
systemHbox.Append(dnsGroup, true)
dnsentryForm := ui.NewForm()
dnsentryForm.SetPadded(true)
dnsGroup.SetChild(dnsentryForm)
{
dnsGroup.SetMargined(true)
dnsEntry := ui.NewEntry()
dnsentryForm.Append("dns", dnsEntry, false)
dnsentryForm := ui.NewForm()
dnsentryForm.SetPadded(true)
dnsGroup.SetChild(dnsentryForm)
dnsConfirmBtn := ui.NewButton("提交")
dnsConfirmBtn.OnClicked(func(b *ui.Button) {
str := dnsEntry.Text()
ip := net.ParseIP(str)
if ip == nil {
return
dnsEntry := ui.NewEntry()
if ds := netLayer.GetSystemDNS(); len(ds) > 0 {
dnsEntry.SetText(ds[0])
}
netLayer.SetSystemDNS(str)
})
dnsentryForm.Append("提交", dnsConfirmBtn, false)
dnsentryForm.Append("dns", dnsEntry, false)
dnsConfirmBtn := ui.NewButton("提交")
dnsConfirmBtn.OnClicked(func(b *ui.Button) {
str := dnsEntry.Text()
ip := net.ParseIP(str)
if ip == nil {
return
}
netLayer.SetSystemDNS(str)
})
dnsentryForm.Append("提交", dnsConfirmBtn, false)
}
entriesGroup = ui.NewGroup("Entries")
entriesGroup.Hide()
@@ -370,92 +440,6 @@ func makeConfPage() ui.Control {
return result
}
func makeDataChoosersPage() ui.Control {
hbox := ui.NewHorizontalBox()
hbox.SetPadded(true)
vbox := ui.NewVerticalBox()
vbox.SetPadded(true)
hbox.Append(vbox, false)
// vbox.Append(ui.NewDatePicker(), false)
// vbox.Append(ui.NewTimePicker(), false)
// vbox.Append(ui.NewDateTimePicker(), false)
// vbox.Append(ui.NewFontButton(), false)
// vbox.Append(ui.NewColorButton(), false)
hbox.Append(ui.NewVerticalSeparator(), false)
vbox = ui.NewVerticalBox()
vbox.SetPadded(true)
hbox.Append(vbox, true)
grid := ui.NewGrid()
grid.SetPadded(true)
vbox.Append(grid, false)
button := ui.NewButton("Open File")
entry := ui.NewEntry()
entry.SetReadOnly(true)
button.OnClicked(func(*ui.Button) {
filename := ui.OpenFile(mainwin)
if filename == "" {
filename = "(cancelled)"
}
entry.SetText(filename)
})
grid.Append(button,
0, 0, 1, 1,
false, ui.AlignFill, false, ui.AlignFill)
grid.Append(entry,
1, 0, 1, 1,
true, ui.AlignFill, false, ui.AlignFill)
button = ui.NewButton("Save File")
entry2 := ui.NewEntry()
entry2.SetReadOnly(true)
button.OnClicked(func(*ui.Button) {
filename := ui.SaveFile(mainwin)
if filename == "" {
filename = "(cancelled)"
}
entry2.SetText(filename)
})
grid.Append(button,
0, 1, 1, 1,
false, ui.AlignFill, false, ui.AlignFill)
grid.Append(entry2,
1, 1, 1, 1,
true, ui.AlignFill, false, ui.AlignFill)
// msggrid := ui.NewGrid()
// msggrid.SetPadded(true)
// grid.Append(msggrid,
// 0, 2, 2, 1,
// false, ui.AlignCenter, false, ui.AlignStart)
// button = ui.NewButton("Message Box")
// button.OnClicked(func(*ui.Button) {
// ui.MsgBox(mainwin,
// "This is a normal message box.",
// "More detailed information can be shown here.")
// })
// msggrid.Append(button,
// 0, 0, 1, 1,
// false, ui.AlignFill, false, ui.AlignFill)
// button = ui.NewButton("Error Box")
// button.OnClicked(func(*ui.Button) {
// ui.MsgBoxError(mainwin,
// "This message box describes an error.",
// "More detailed information can be shown here.")
// })
// msggrid.Append(button,
// 1, 0, 1, 1,
// false, ui.AlignFill, false, ui.AlignFill)
return hbox
}
func windowClose(*ui.Window) bool {
return true
}
@@ -484,7 +468,7 @@ func setupUI() {
tab.Append("基础控制", makeBasicControlsPage())
tab.Append("配置控制", makeConfPage())
tab.Append("Data Choosers", makeDataChoosersPage())
//tab.Append("Data Choosers", makeDataChoosersPage())
for i := 0; i < tab.NumPages(); i++ {
tab.SetMargined(i, true)

View File

@@ -11,6 +11,11 @@ Package main 读取配置文件,然后进行代理转发, 并选择性运行 c
若 noquic给出则不引用 advLayer/quic否则 默认引用 advLayer/quic。
quic大概占用 2MB 大小。
若 notun给出则不引用 proxy/tun, 否则 默认引用 proxy/tun
tun大概占用 3.5MB 大小
若gui给出则会编译出 vs_gui 可执行文件, 会增加几MB大小.
*/
package main