erm/internal/app/darktile/gui/screenshots.go

42 lines
865 B
Go

package gui
import (
"fmt"
"image"
"image/png"
"os"
"path/filepath"
"time"
)
func (g *GUI) RequestScreenshot(filename string) {
g.screenshotRequested = true
if filename == "" {
filename = fmt.Sprintf("darktile-screenshot-%d.png", time.Now().UnixNano())
targetdir, err := os.UserHomeDir()
if err != nil {
targetdir = "/tmp"
}
filename = filepath.Join(targetdir, filename)
}
g.screenshotFilename = filename
}
func (g *GUI) takeScreenshot(screen image.Image) {
g.screenshotRequested = false
file, err := os.Create(g.screenshotFilename)
if err != nil {
g.ShowError(fmt.Sprintf("Screenshot failed: %s", err))
return
}
defer file.Close()
if err := png.Encode(file, screen); err != nil {
g.ShowError(fmt.Sprintf("Screenshot failed: %s", err))
return
}
g.ShowMessage(fmt.Sprintf("Screenshot saved: %s", g.screenshotFilename))
}