Skip to content

Commit

Permalink
Update screenshot.go
Browse files Browse the repository at this point in the history
  • Loading branch information
mc-oofert committed Nov 16, 2023
1 parent 953fbe1 commit c937fc0
Showing 1 changed file with 23 additions and 12 deletions.
35 changes: 23 additions & 12 deletions internal/app/ui/cpwsarea/wsmap/pmap/psettings/screenshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ func (p *Panel) showScreenshot() {
imgui.SameLine()

imgui.SetNextItemWidth(-1)
imgui.BeginDisabledV(p.sessionScreenshot.toClipboardMode)
imgui.InputText("##screenshot_dir", &cfg.ScreenshotDir)
imgui.EndDisabled()

if imgui.Checkbox("Screenshot in Selection", &p.sessionScreenshot.inSelectionMode) {
tools.SetSelected(tools.TNGrab)
Expand Down Expand Up @@ -129,30 +131,39 @@ func (p *Panel) ProcessUnit(u unit.Unit) bool {
}

func (p *Panel) saveScreenshot(pixels []byte, w, h int) error {
if err := os.MkdirAll(cfg.ScreenshotDir, os.ModeDir); err != nil {
log.Print("unable to create screenshot directory:", err)
return err
if !p.sessionScreenshot.toClipboardMode {
if err := os.MkdirAll(cfg.ScreenshotDir, os.ModeDir); err != nil {
log.Print("unable to create screenshot directory:", err)
return err
}
}

out, _ := os.Create(cfg.ScreenshotDir + "/" + time.Now().Format(util.TimeFormat) + ".png")
var directory string
if p.sessionScreenshot.toClipboardMode {
defer fileToClipboardAndDelete(out.Name())
directory = os.TempDir()
} else {
directory = cfg.ScreenshotDir
}
defer out.Close()

return png.Encode(out, util.PixelsToRGBA(pixels, w, h))
}
out, _ := os.Create(directory + "/" + time.Now().Format(util.TimeFormat) + ".png")
filename := out.Name()
encode_error := png.Encode(out, util.PixelsToRGBA(pixels, w, h))
out.Close()

if !p.sessionScreenshot.toClipboardMode || encode_error != nil {
return encode_error // past here we start handling clipboard stuff so this also returns if there is no error but clipboard isnt on
}

func fileToClipboardAndDelete(filename string) {
if err := clipboard.Init(); err != nil {
log.Print("unable to init clipboard:", err)
return
return err
}
contents, err := os.ReadFile(filename)
if err != nil {
log.Print("unable to read resulting screenshot file:", err)
return
return err
}
clipboard.Write(clipboard.FmtImage, contents)
os.Remove(filename)

return os.Remove(filename)
}

0 comments on commit c937fc0

Please sign in to comment.