aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2021-08-13 01:51:35 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2021-08-13 03:45:59 +0200
commite1ae9dfc3419751b0ab1960724c8e85f45c209b1 (patch)
tree2caba896434bd6cee7cddd9458ec726ed8ba8e15 /ui
parentui: follow layout variable pattern in tunnelspage (diff)
downloadwireguard-windows-e1ae9dfc3419751b0ab1960724c8e85f45c209b1.tar.xz
wireguard-windows-e1ae9dfc3419751b0ab1960724c8e85f45c209b1.zip
ui: add visible knob for kernel testing [revert me please!]
I really, really hate visible knobs. But we need some way of getting wider testing of this, and a lot of people who are interested in dare devilish things might not to think to flip some registry knobs. Hopefully this commit will be reverted as soon as possible. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Diffstat (limited to 'ui')
-rw-r--r--ui/confview.go56
1 files changed, 51 insertions, 5 deletions
diff --git a/ui/confview.go b/ui/confview.go
index 3d16f38f..430f8ef6 100644
--- a/ui/confview.go
+++ b/ui/confview.go
@@ -41,6 +41,7 @@ type labelTextLine struct {
type toggleActiveLine struct {
composite *walk.Composite
button *walk.PushButton
+ betaTest *walk.CheckBox
}
type interfaceView struct {
@@ -211,6 +212,12 @@ func (tal *toggleActiveLine) widgets() (walk.Widget, walk.Widget) {
func (tal *toggleActiveLine) updateGlobal(globalState manager.TunnelState) {
tal.button.SetEnabled(globalState == manager.TunnelStarted || globalState == manager.TunnelStopped)
+ tal.betaTest.SetVisible(globalState == manager.TunnelStopped && IsAdmin)
+ if globalState == manager.TunnelStopped && IsAdmin {
+ tal.composite.Layout().SetMargins(walk.Margins{})
+ } else {
+ tal.composite.Layout().SetMargins(walk.Margins{0, 0, 0, 6})
+ }
}
func (tal *toggleActiveLine) update(state manager.TunnelState) {
@@ -246,17 +253,56 @@ func newToggleActiveLine(parent walk.Container) (*toggleActiveLine, error) {
return nil, err
}
disposables.Add(tal.composite)
- layout := walk.NewHBoxLayout()
- layout.SetMargins(walk.Margins{0, 0, 0, 6})
- tal.composite.SetLayout(layout)
+ vlayout := walk.NewVBoxLayout()
+ vlayout.SetMargins(walk.Margins{})
+ vlayout.SetSpacing(0)
+ tal.composite.SetLayout(vlayout)
- if tal.button, err = walk.NewPushButton(tal.composite); err != nil {
+ buttonComposite, err := walk.NewComposite(tal.composite)
+ if err != nil {
+ return nil, err
+ }
+ hlayout := walk.NewHBoxLayout()
+ hlayout.SetMargins(walk.Margins{})
+ buttonComposite.SetLayout(hlayout)
+ if tal.button, err = walk.NewPushButton(buttonComposite); err != nil {
return nil, err
}
disposables.Add(tal.button)
- walk.NewHSpacer(tal.composite)
+ walk.NewHSpacer(buttonComposite)
tal.update(manager.TunnelStopped)
+ betaComposite, err := walk.NewComposite(tal.composite)
+ if err != nil {
+ return nil, err
+ }
+ hlayout = walk.NewHBoxLayout()
+ hlayout.SetMargins(walk.Margins{})
+ betaComposite.SetLayout(hlayout)
+ if tal.betaTest, err = walk.NewCheckBox(betaComposite); err != nil {
+ return nil, err
+ }
+ tal.betaTest.SetText(l18n.Sprintf("&Test experimental kernel driver"))
+ tal.betaTest.SetVisible(IsAdmin)
+ const experimentalKernelDriver = "ExperimentalKernelDriver"
+ tal.betaTest.SetChecked(conf.AdminBool(experimentalKernelDriver))
+ tal.betaTest.CheckedChanged().Attach(func() {
+ if tal.betaTest.Checked() {
+ if walk.MsgBox(parent.Form(), l18n.Sprintf("Enable experimental kernel driver?"),
+ l18n.Sprintf("The WireGuard project is currently testing a high performance kernel driver "+
+ "called WireGuardNT. It will eventually be enabled by default, but for now the project needs "+
+ "testers to try it out. Whether you encounter problems or you find that it works well, please do "+
+ "email team@wireguard.com about your experience.\n\nWould you like to enable the experimental "+
+ "kernel driver?"), walk.MsgBoxIconQuestion|walk.MsgBoxYesNo) != walk.DlgCmdYes {
+ tal.betaTest.SetChecked(false)
+ }
+ }
+ if conf.SetAdminBool(experimentalKernelDriver, tal.betaTest.Checked()) != nil {
+ tal.betaTest.SetChecked(conf.AdminBool(experimentalKernelDriver))
+ }
+ })
+ walk.NewHSpacer(betaComposite)
+
disposables.Spare()
return tal, nil