Repeatedly try to take a screenshot until we get an acceptable one.

This commit is contained in:
yrriban 2025-04-16 22:52:48 -04:00
parent 1094c3aba9
commit 3d010a2609

View file

@ -1,16 +1,36 @@
from tkinter import messagebox
import dcc.config import dcc.config
import dcc.doom_base import dcc.doom_base
import sys
import wand.display
import wand.image import wand.image
class SS(dcc.doom_base.WadMap): class SS(dcc.doom_base.WadMap):
def get_parser(self, prog_name): def get_parser(self, prog_name):
parser = super().get_parser(prog_name) parser = super().get_parser(prog_name)
parser.add_argument("-g", "--gravity", default="center") parser.add_argument("-g", "--gravity", default="center")
parser.add_argument("-y", "--yolo", action="store_true")
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
with wand.image.Image(width=THUMB_WIDTH, height=THUMB_HEIGHT, pseudo="x:") as img: def try_screenshot():
img.reset_coords() with wand.image.Image(width=dcc.config.THUMB_WIDTH, height=dcc.config.THUMB_HEIGHT, pseudo="x:") as img:
img.crop(width=THUMB_WIDTH,height=THUMB_HEIGHT,gravity="center") img.reset_coords()
img.reset_coords() if img.size[0] < dcc.config.THUMB_WIDTH or img.size[1] < dcc.config.THUMB_HEIGHT:
img.save(filename=dcc.config.BaseThumbPath(parsed_args.wad, parsed_args.map)) if not messagebox.askretrycancel(title="DCC", message="Image too small. Try again?"):
sys.exit("Gave up trying to select an image.")
return False
img.crop(width=dcc.config.THUMB_WIDTH,height=dcc.config.THUMB_HEIGHT,gravity=parsed_args.gravity)
img.reset_coords()
if not parsed_args.yolo:
wand.display.display(img)
accepted = messagebox.askyesnocancel(title="DCC", message="Is this image acceptable?")
if accepted is None:
sys.exit("Gave up on image verification")
if not accepted:
return False
img.save(filename=dcc.config.BaseThumbPath(parsed_args.wad, parsed_args.map))
return True
while not try_screenshot():
pass