diff options
| -rw-r--r-- | xA/xA.go | 33 | 
1 files changed, 28 insertions, 5 deletions
| @@ -22,6 +22,7 @@ import (  	"fyne.io/fyne/v2"  	"fyne.io/fyne/v2/app"  	"fyne.io/fyne/v2/container" +	"fyne.io/fyne/v2/dialog"  	"fyne.io/fyne/v2/theme"  	"fyne.io/fyne/v2/widget"  ) @@ -943,18 +944,16 @@ func inputSubmit(text string) bool {  func main() {  	flag.Usage = func() {  		fmt.Fprintf(flag.CommandLine.Output(), -			"Usage: %s [OPTION...] CONNECT\n\n", os.Args[0]) +			"Usage: %s [OPTION...] [CONNECT]\n\n", os.Args[0])  		flag.PrintDefaults()  	}  	flag.Parse() -	if flag.NArg() < 1 || flag.NArg() > 1 { +	if flag.NArg() > 1 {  		flag.Usage()  		os.Exit(1)  	} -	backendAddress = flag.Arg(0) -  	a := app.New()  	a.Settings().SetTheme(&customTheme{})  	wWindow = a.NewWindow(projectName) @@ -1020,7 +1019,31 @@ func main() {  	split.SetOffset(0.25)  	wWindow.SetContent(container.NewBorder(top, bottom, nil, nil, split)) -	go relayRun() +	connectAddress := widget.NewEntry() +	connectAddress.SetPlaceHolder("host:port") +	connectAddress.Validator = func(text string) error { +		_, _, err := net.SplitHostPort(text) +		return err +	} +	connectForm := dialog.NewForm("Connect to relay", "Connect", "Exit", +		[]*widget.FormItem{ +			{Text: "Address:", Widget: connectAddress}, +		}, func(ok bool) { +			if !ok { +				a.Quit() +			} else { +				backendAddress = connectAddress.Text +				go relayRun() +			} +		}, wWindow) + +	if flag.NArg() >= 1 { +		backendAddress = flag.Arg(0) +		connectAddress.SetText(backendAddress) +		go relayRun() +	} else { +		connectForm.Show() +	}  	wWindow.ShowAndRun()  } | 
