diff --git a/src/win/main.go b/src/win/main.go index 98faa378..6ca3bab5 100644 --- a/src/win/main.go +++ b/src/win/main.go @@ -1,11 +1,11 @@ package main import ( - "errors" "fmt" + "image" "net/url" + "os" "strings" - "time" "fyne.io/fyne" "fyne.io/fyne/app" @@ -17,32 +17,40 @@ import ( nativedialog "github.com/sqweek/dialog" ) -func welcomeScreen(a fyne.App) fyne.CanvasObject { - logo := canvas.NewImageFromResource(theme.FyneLogo()) - logo.SetMinSize(fyne.NewSize(128, 128)) +var logoImage image.Image - link, err := url.Parse("https://fyne.io/") +func init() { + infile, err := os.Open("croc.png") + if err != nil { + panic(err) + } + defer infile.Close() + + // Decode will figure out what type of image is in the file on its own. + // We just have to be sure all the image packages we want are imported. + logoImage, _, err = image.Decode(infile) + if err != nil { + panic(err) + } +} + +func welcomeScreen(a fyne.App) fyne.CanvasObject { + logo := canvas.NewImageFromImage(logoImage) + logo.SetMinSize(fyne.NewSize(256, 128)) + + link, err := url.Parse("https://github.com/schollz/croc") if err != nil { fyne.LogError("Could not parse URL", err) } return widget.NewVBox( - widget.NewLabelWithStyle("Welcome to the Fyne toolkit demo app", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}), + widget.NewLabelWithStyle("croc - securely send a file", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}), layout.NewSpacer(), widget.NewHBox(layout.NewSpacer(), logo, layout.NewSpacer()), - widget.NewHyperlinkWithStyle("fyne.io", link, fyne.TextAlignCenter, fyne.TextStyle{}), + widget.NewLabel(`Send files using a secure PAKE-encrypted +peer-to-peer connection.`), + widget.NewHyperlinkWithStyle("help", link, fyne.TextAlignCenter, fyne.TextStyle{}), layout.NewSpacer(), - - widget.NewGroup("Theme", - fyne.NewContainerWithLayout(layout.NewGridLayout(2), - widget.NewButton("Dark", func() { - a.Settings().SetTheme(theme.DarkTheme()) - }), - widget.NewButton("Light", func() { - a.Settings().SetTheme(theme.LightTheme()) - }), - ), - ), ) } @@ -84,10 +92,8 @@ func makeCell() fyne.CanvasObject { func main() { a := app.New() a.Settings().SetTheme(theme.LightTheme()) - w := a.NewWindow("Hello") - w.Resize(fyne.Size{200, 200}) - out := widget.NewEntry() - out.Text = "Hello" + w := a.NewWindow("croc") + w.Resize(fyne.Size{400, 200}) progress := widget.NewProgressBar() var sendFileButton *widget.Button @@ -98,6 +104,7 @@ func main() { sendFileButton.SetText(fnames[len(fnames)-1]) } }) + currentInfo := widget.NewLabel("") sendScreen := widget.NewVBox( widget.NewLabelWithStyle("Send a file", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}), @@ -106,9 +113,7 @@ func main() { fmt.Println("send") }), layout.NewSpacer(), - widget.NewHBox( - widget.NewLabel("Code phrase: something"), - ), + currentInfo, widget.NewHBox( widget.NewLabel("Progress:"), progress, @@ -141,6 +146,7 @@ func main() { fmt.Println("codePhraseToReceive") }), layout.NewSpacer(), + currentInfo, widget.NewHBox( widget.NewLabel("Progress:"), progress, @@ -159,69 +165,13 @@ func main() { top, bottom, left, right, sendScreen) receiveScreenWrap := fyne.NewContainerWithLayout(borderLayout, top, bottom, left, right, receiveScreen) - - box1 := widget.NewVBox( - widget.NewLabel("Hello Fyne!"), - makeFormTab(), - widget.NewButton("Send", func() { - filename, err := nativedialog.File().Title("Select a file to send").Load() - fmt.Println(filename) - fmt.Println(err) - codeDialog := dialog.NewInformation("Info", "Your passphrase is: x1", w) - codeDialog.Show() - }), - widget.NewButton("Set directory to save", func() { - filename, err := nativedialog.Directory().Title("Now find a dir").Browse() - fmt.Println(filename) - fmt.Println(err) - }), - - widget.NewButton("Receive", func() { - filename, err := nativedialog.Directory().Title("Now find a dir").Browse() - fmt.Println(filename) - fmt.Println(err) - prog := dialog.NewProgress("MyProgress", "Nearly there...", w) - - go func() { - num := 0.0 - for num < 1.0 { - time.Sleep(50 * time.Millisecond) - prog.SetValue(num) - num += 0.01 - } - - prog.SetValue(1) - prog.Hide() - }() - - prog.Show() - }), - widget.NewButton("Custom", func() { - content := widget.NewEntry() - content.SetPlaceHolder("Enter code phrase:") - content.OnChanged = func(text string) { - fmt.Println("Entered", text) - } - dialog.ShowCustom("Custom dialog", "Done", content, w) - fmt.Println("closed dialog") - }), - widget.NewButton("Error", func() { - err := errors.New("A dummy error message") - dialog.ShowError(err, w) - }), - widget.NewButton("Confirm", func() { - cnf := dialog.NewConfirm("Confirmation", "Are you enjoying this demo?", confirmCallback, w) - cnf.SetDismissText("Nah") - cnf.SetConfirmText("Oh Yes!") - cnf.Show() - }), - ) - _ = box1 + welcomeScreenWrap := fyne.NewContainerWithLayout(borderLayout, + top, bottom, left, right, welcomeScreen(a)) tabs := widget.NewTabContainer( - widget.NewTabItemWithIcon("Welcome", theme.HomeIcon(), welcomeScreen(a)), + widget.NewTabItemWithIcon("Welcome", theme.HomeIcon(), welcomeScreenWrap), widget.NewTabItemWithIcon("Send", theme.MailSendIcon(), sendScreenWrap), - widget.NewTabItemWithIcon("Receive", theme.MailSendIcon(), receiveScreenWrap), + widget.NewTabItemWithIcon("Receive", theme.MailReplyIcon(), receiveScreenWrap), ) tabs.SetTabLocation(widget.TabLocationLeading) w.SetContent(tabs)