From e1ae9dfc3419751b0ab1960724c8e85f45c209b1 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 13 Aug 2021 01:51:35 +0200 Subject: 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 --- ui/confview.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 51 insertions(+), 5 deletions(-) (limited to 'ui') 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 -- cgit v1.2.3-59-g8ed1b