Warning: session_start(): open(/var/lib/php/sessions/sess_rn8ohcdegu53kujtcccph54e8k, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
srecord noeq G22ChallengePanel(G22Challenge challenge) is Swingable {
transient int randomSeed = randomInt();
//transient JPanel imagesPanel = jline();
transient DynamicHStack imagesPanel;
transient L images = syncL();
transient JComponent imagesSection;
transient GazelleV_LeftArrowScript.Script parsedScript;
transient settable new G22Utils g22utils;
settable double timeoutPerImage = 10.0;
settable int imagesToPaint = 3;
settable int interval = 1000;
settable int imageDisplayHeight = 150;
visualize {
imagesPanel = (DynamicHStack) dynamicHStack().spacing(20);
awtCalcEvery(imagesPanel, interval, r _paintAnImage);
ret withCenteredBoldTitle(str(challenge),
withTopMargin(jvsplit(
northAndCenterWithMargin(
jRightAlignedLine(withLabel("Random seed:", jlabel(intToHex_upper(randomSeed)))),
imagesSection = jCenteredRaisedSection("Images", jscrollHorizontal(imagesPanel))
),
jCenteredSection("Analysis",
jTodo()
)
)));
}
void _paintAnImage {
if (l(images) >= imagesToPaint) ret;
try {
if (parsedScript == null) {
var parser = g22utils.leftArrowParser();
parsedScript = parser.parse(challenge.code);
}
new VarContext ctx;
var result = evalWithTimeout(timeoutPerImage, -> parsedScript.get(ctx));
if (result.isA()) {
var returnedObject = result.a();
if (returnedObject instanceof MakesBufferedImage
|| returnedObject instanceof Image)
returnedObject = toBufferedImage(returnedObject);
if (returnedObject cast BufferedImage) {
addImage(returnedObject);
} else {
addImage(null, jcenteredlabel("Script did not return an image but instead " + aOrAn(className(returnedObject))));
}
} else {
addImage(null, jcenteredlabel("Script timed out after " + nSeconds(iceil(timeoutPerImage))));
}
} catch print e {
addImage(null, jError(e));
}
}
void addImage(BufferedImage image, JComponent component) {
images.add(image);
addAndRevalidate(imagesPanel, component);
setSectionTitle(imagesSection, firstToUpper(nImages(images)) + " calculated");
}
void addImage(BufferedImage image) {
addImage(image, imageToComponent(image));
}
JComponent imageToComponent(BufferedImage image) {
// var is = g22utils.stdImageSurface(image);
// jFixedSize(image.getWidth(), image.getHeight(), is);
// ret is;
JButton b = jimageButton(image);
resizeImageButtonToMax(b, imageDisplayHeight);
setMargin(10, b);
ret b;
}
}