Spaces:
Running
Running
""" | |
Gradio interface for plotting a board. | |
""" | |
import chess | |
import chess.svg | |
import gradio as gr | |
from lczerolens.board import LczeroBoard | |
from ..utils import create_board_figure | |
def make_board_plot(board_fen, arrows, square): | |
try: | |
board = LczeroBoard(board_fen) | |
except ValueError: | |
board = LczeroBoard() | |
gr.Warning("Invalid FEN, using starting position.") | |
filepath = create_board_figure(board, arrows=arrows, square=square, name="board") | |
return filepath | |
with gr.Blocks() as interface: | |
with gr.Row(): | |
with gr.Column(): | |
board_fen = gr.Textbox( | |
label="Board starting FEN", | |
lines=1, | |
max_lines=1, | |
value=chess.STARTING_FEN, | |
) | |
arrows = gr.Textbox( | |
label="Arrows", | |
lines=1, | |
max_lines=1, | |
value="", | |
placeholder="e2e4 e7e5", | |
) | |
square = gr.Textbox( | |
label="Square", | |
lines=1, | |
max_lines=1, | |
value="", | |
placeholder="e4", | |
) | |
with gr.Column(): | |
image = gr.Image(label="Board", interactive=False) | |
inputs = [ | |
board_fen, | |
arrows, | |
square, | |
] | |
interface.load(make_board_plot, inputs=inputs, outputs=image) | |
board_fen.submit(make_board_plot, inputs=inputs, outputs=image) | |
arrows.submit(make_board_plot, inputs=inputs, outputs=image) | |
square.submit(make_board_plot, inputs=inputs, outputs=image) | |