Select Git revision
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
scrnplt.go 2.00 KiB
// 25 Jan 2020
// Given a buffer or two with a plot picture, send it to the screen
// +build !no_gfx
package ui
import (
"bytes"
"fmt"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/storage"
)
func tryfsave(uriw fyne.URIWriteCloser, err error, data []byte, parent fyne.Window) {
if err != nil {
dialog.ShowError(err, parent)
return
}
if uriw == nil {
return // cancel
}
if _, err := uriw.Write(data); err != nil {
fmt.Println("error writing")
}
if err := uriw.Close(); err != nil {
fmt.Println("error closing")
}
}
func fsave(parent fyne.Window, fdata []byte, suggested string) {
filter := storage.NewExtensionFileFilter([]string{"png", "PNG"})
ts := func(uriw fyne.URIWriteCloser, err error) {
tryfsave(uriw, err, fdata, parent)
}
t := dialog.NewFileSave(ts, parent)
t.SetFileName(suggested)
t.SetFilter(filter)
t.Show()
}
func topmenu(parent fyne.Window, fdata, xdata []byte) *fyne.Menu {
ds := func() { fsave(parent, fdata, "func_val.png") } // function values
xs := func() { fsave(parent, xdata, "x_trj.png") }
c := fyne.NewMenuItem("save func plot", ds)
d := fyne.NewMenuItem("save X trajectory plot", xs)
return fyne.NewMenu("actions", c, d)
}
func fileSaved(f fyne.URIWriteCloser, w fyne.Window) {
defer f.Close()
_, err := f.Write([]byte("Written by Fyne demo\n"))
if err != nil {
dialog.ShowError(err, w)
}
err = f.Close()
if err != nil {
dialog.ShowError(err, w)
}
fmt.Println("Saved to...", f.URI())
}
func nothing(...interface{}) {}
func breaker(...interface{}) {}
func scrnplt(fdata, xdata []byte) *fyne.Container {
fImage := canvas.NewImageFromReader(bytes.NewReader(fdata), "func.png")
fImage.FillMode = canvas.ImageFillContain
xImage := canvas.NewImageFromReader(bytes.NewReader(xdata), "xdata.png")
xImage.FillMode = canvas.ImageFillContain
content := container.NewGridWithRows(2, fImage, xImage)
// w.Resize(fyne.NewSize(500, 600))
// w.SetContent(content)
// w.ShowAndRun()
return content
}