Skip to content
Snippets Groups Projects
Commit 2583f46c authored by Andrew E. Torda's avatar Andrew E. Torda
Browse files

Menu for saving function values and X trajectories.

parent 2b409335
No related branches found
No related tags found
No related merge requests found
...@@ -8,48 +8,51 @@ package ui ...@@ -8,48 +8,51 @@ package ui
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"fyne.io/fyne/v2" "fyne.io/fyne/v2"
"fyne.io/fyne/v2/app" "fyne.io/fyne/v2/app"
"fyne.io/fyne/v2/canvas" "fyne.io/fyne/v2/canvas"
"fyne.io/fyne/v2/container" "fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/storage" "fyne.io/fyne/v2/storage"
"fyne.io/fyne/v2/widget"
) )
func coffee() { func tryfsave(uriw fyne.URIWriteCloser, err error, data []byte, parent fyne.Window) {
print("coffee\n") 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 tea() { fmt.Printf("trydsave called with %+v %+v", uriw, err)
print("tea\n")
} }
func trydsave(uriwc fyne.URIWriteCloser, err error) { func fsave(parent fyne.Window, fdata []byte, suggested string) {
uriwc.Write([]byte("hello from trydsave\n")) filter := storage.NewExtensionFileFilter([]string{"png", "PNG"})
fmt.Printf("trydsave called with %+v %+v", uriwc, err) ts := func(uriw fyne.URIWriteCloser, err error) {
tryfsave(uriw, err, fdata, parent)
} }
func dsave(parent fyne.Window) { t := dialog.NewFileSave(ts, parent)
filter := storage.NewExtensionFileFilter([]string{"csv", "abc"}) t.SetFileName(suggested)
t := dialog.NewFileSave(trydsave, parent)
t.SetFileName("f_val.csv")
t.SetFilter(filter) t.SetFilter(filter)
t.Show() t.Show()
fmt.Println("dsave called and returning")
}
func stopme() { fmt.Println("dsave called and returning")
print("stopme\n")
} }
type fssavefunc func(fyne.URIReadCloser, error) func topmenu(parent fyne.Window, fdata, xdata []byte) *fyne.Menu {
ds := func() { fsave(parent, fdata, "func_val.png") } // function values
func topmenu(parent fyne.Window) *fyne.Menu { xs := func() { fsave(parent, xdata, "x_trj.png") }
ds := func() { dsave(parent) }
a := fyne.NewMenuItem("coffee", coffee)
b := fyne.NewMenuItem("tea", tea)
c := fyne.NewMenuItem("save func plot", ds) c := fyne.NewMenuItem("save func plot", ds)
d := fyne.NewMenuItem("frueh feierabend", stopme) d := fyne.NewMenuItem("save X trajectory plot", xs)
return fyne.NewMenu("a simple menu", a, b, c, d) return fyne.NewMenu("actions", c, d)
} }
func fileSaved(f fyne.URIWriteCloser, w fyne.Window) { func fileSaved(f fyne.URIWriteCloser, w fyne.Window) {
...@@ -64,44 +67,22 @@ func fileSaved(f fyne.URIWriteCloser, w fyne.Window) { ...@@ -64,44 +67,22 @@ func fileSaved(f fyne.URIWriteCloser, w fyne.Window) {
} }
fmt.Println("Saved to...", f.URI()) fmt.Println("Saved to...", f.URI())
} }
func nothing(...interface{}) {}
// buf2file takes an array of bytes and writes them to a file.
func buf2file(buf []byte) {
var z fyne.URIWriteCloser
// NewFileSave(callback func(fyne.URIWriteCloser, error), parent fyne.Window) *FileDialog
var win fyne.Window
fs := widget.NewButton("File Save", func() {
dialog.ShowFileSave(func(writer fyne.URIWriteCloser, err error) {
if err != nil {
dialog.ShowError(err, win)
return
}
if writer == nil {
fmt.Println("Cancelled")
return
}
fileSaved(writer, win)
}, win)
})
nothing(fs, z)
}
func nothing(...interface{}) {}
func breaker(...interface{}) {} func breaker(...interface{}) {}
func Scrnplt(fdata []byte, xdata []byte) { func Scrnplt(fdata, xdata []byte) {
a := app.NewWithID("ackley") // Find a way to check if it is happy a := app.NewWithID("ackley") // Find a way to check if it is happy
w := a.NewWindow("container") w := a.NewWindow("Monte Carlo")
w.SetMainMenu(fyne.NewMainMenu(topmenu(w))) w.SetMainMenu(fyne.NewMainMenu(topmenu(w, fdata, xdata)))
fImage := canvas.NewImageFromReader(bytes.NewReader(fdata), "func.png") fImage := canvas.NewImageFromReader(bytes.NewReader(fdata), "func.png")
fImage.FillMode = canvas.ImageFillContain fImage.FillMode = canvas.ImageFillContain
xImage := canvas.NewImageFromReader(bytes.NewReader(xdata), "xdata.png") xImage := canvas.NewImageFromReader(bytes.NewReader(xdata), "xdata.png")
xImage.FillMode = canvas.ImageFillContain xImage.FillMode = canvas.ImageFillContain
content := container.NewGridWithRows(2, fImage, xImage) content := container.NewGridWithRows(2, fImage, xImage)
w.Resize(fyne.NewSize(500, 300)) w.Resize(fyne.NewSize(500, 600))
w.SetContent(content) w.SetContent(content)
w.ShowAndRun() w.ShowAndRun()
fmt.Println("This was executed after the graphics finished")
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment