mirror of
https://github.com/schollz/croc.git
synced 2025-10-11 13:21:00 +02:00
improve ui
This commit is contained in:
parent
00c41387ba
commit
7fa4fc154a
1 changed files with 36 additions and 86 deletions
122
src/win/main.go
122
src/win/main.go
|
@ -1,11 +1,11 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"image"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
|
||||||
|
|
||||||
"fyne.io/fyne"
|
"fyne.io/fyne"
|
||||||
"fyne.io/fyne/app"
|
"fyne.io/fyne/app"
|
||||||
|
@ -17,32 +17,40 @@ import (
|
||||||
nativedialog "github.com/sqweek/dialog"
|
nativedialog "github.com/sqweek/dialog"
|
||||||
)
|
)
|
||||||
|
|
||||||
func welcomeScreen(a fyne.App) fyne.CanvasObject {
|
var logoImage image.Image
|
||||||
logo := canvas.NewImageFromResource(theme.FyneLogo())
|
|
||||||
logo.SetMinSize(fyne.NewSize(128, 128))
|
|
||||||
|
|
||||||
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 {
|
if err != nil {
|
||||||
fyne.LogError("Could not parse URL", err)
|
fyne.LogError("Could not parse URL", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return widget.NewVBox(
|
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(),
|
layout.NewSpacer(),
|
||||||
widget.NewHBox(layout.NewSpacer(), logo, 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(),
|
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() {
|
func main() {
|
||||||
a := app.New()
|
a := app.New()
|
||||||
a.Settings().SetTheme(theme.LightTheme())
|
a.Settings().SetTheme(theme.LightTheme())
|
||||||
w := a.NewWindow("Hello")
|
w := a.NewWindow("croc")
|
||||||
w.Resize(fyne.Size{200, 200})
|
w.Resize(fyne.Size{400, 200})
|
||||||
out := widget.NewEntry()
|
|
||||||
out.Text = "Hello"
|
|
||||||
|
|
||||||
progress := widget.NewProgressBar()
|
progress := widget.NewProgressBar()
|
||||||
var sendFileButton *widget.Button
|
var sendFileButton *widget.Button
|
||||||
|
@ -98,6 +104,7 @@ func main() {
|
||||||
sendFileButton.SetText(fnames[len(fnames)-1])
|
sendFileButton.SetText(fnames[len(fnames)-1])
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
currentInfo := widget.NewLabel("")
|
||||||
|
|
||||||
sendScreen := widget.NewVBox(
|
sendScreen := widget.NewVBox(
|
||||||
widget.NewLabelWithStyle("Send a file", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
|
widget.NewLabelWithStyle("Send a file", fyne.TextAlignCenter, fyne.TextStyle{Bold: true}),
|
||||||
|
@ -106,9 +113,7 @@ func main() {
|
||||||
fmt.Println("send")
|
fmt.Println("send")
|
||||||
}),
|
}),
|
||||||
layout.NewSpacer(),
|
layout.NewSpacer(),
|
||||||
widget.NewHBox(
|
currentInfo,
|
||||||
widget.NewLabel("Code phrase: something"),
|
|
||||||
),
|
|
||||||
widget.NewHBox(
|
widget.NewHBox(
|
||||||
widget.NewLabel("Progress:"),
|
widget.NewLabel("Progress:"),
|
||||||
progress,
|
progress,
|
||||||
|
@ -141,6 +146,7 @@ func main() {
|
||||||
fmt.Println("codePhraseToReceive")
|
fmt.Println("codePhraseToReceive")
|
||||||
}),
|
}),
|
||||||
layout.NewSpacer(),
|
layout.NewSpacer(),
|
||||||
|
currentInfo,
|
||||||
widget.NewHBox(
|
widget.NewHBox(
|
||||||
widget.NewLabel("Progress:"),
|
widget.NewLabel("Progress:"),
|
||||||
progress,
|
progress,
|
||||||
|
@ -159,69 +165,13 @@ func main() {
|
||||||
top, bottom, left, right, sendScreen)
|
top, bottom, left, right, sendScreen)
|
||||||
receiveScreenWrap := fyne.NewContainerWithLayout(borderLayout,
|
receiveScreenWrap := fyne.NewContainerWithLayout(borderLayout,
|
||||||
top, bottom, left, right, receiveScreen)
|
top, bottom, left, right, receiveScreen)
|
||||||
|
welcomeScreenWrap := fyne.NewContainerWithLayout(borderLayout,
|
||||||
box1 := widget.NewVBox(
|
top, bottom, left, right, welcomeScreen(a))
|
||||||
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
|
|
||||||
|
|
||||||
tabs := widget.NewTabContainer(
|
tabs := widget.NewTabContainer(
|
||||||
widget.NewTabItemWithIcon("Welcome", theme.HomeIcon(), welcomeScreen(a)),
|
widget.NewTabItemWithIcon("Welcome", theme.HomeIcon(), welcomeScreenWrap),
|
||||||
widget.NewTabItemWithIcon("Send", theme.MailSendIcon(), sendScreenWrap),
|
widget.NewTabItemWithIcon("Send", theme.MailSendIcon(), sendScreenWrap),
|
||||||
widget.NewTabItemWithIcon("Receive", theme.MailSendIcon(), receiveScreenWrap),
|
widget.NewTabItemWithIcon("Receive", theme.MailReplyIcon(), receiveScreenWrap),
|
||||||
)
|
)
|
||||||
tabs.SetTabLocation(widget.TabLocationLeading)
|
tabs.SetTabLocation(widget.TabLocationLeading)
|
||||||
w.SetContent(tabs)
|
w.SetContent(tabs)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue