Skip to content
Snippets Groups Projects
Select Git revision
  • 6f9b667cbe28f81995418a865facea3085a8ac59
  • master default protected
  • devel
  • adaptive_step_size
4 results

scrnplt.go

Blame
  • user avatar
    Andrew E. Torda authored
    First version which runs and puts results in a new window. Still to be done - things like putting the rest of the parameters into the input tab.
    27c8e3bb
    History
    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
    }