Warning: session_start(): open(/var/lib/php/sessions/sess_4deaua77m7rqvvlkvcfl6iidcu, 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
!7
concept Drawing {
S globalID = aGlobalID();
S name;
S calStructure;
}
static new CirclesAndLines cal;
static Canvas canvas;
p {
db();
substance();
swing {
canvas = cal.show(800, 600);
new CirclesRelater(canvas, cal);
updateDrawingsMenu();
addToWindow(canvas, withMargin(jcenteredline(
jbutton("New Circle...", f newCircle),
jbutton("Save drawing", f saveDrawing),
jbutton("PUBLISH drawing to server", f publish)));
}
}
svoid newCircle {
final JTextField text = jtextfield();
showFormTitled("New Circle", "Text", text, r-thread {
cal.circle_autoVis(getTextTrim(text), random(0.2, 0.8), random(0.2, 0.8));
canvas.update();
});
}
static Drawing saveDrawing() {
S s = structure(cal);
Drawing d = cnew(Drawing, calStructure := s);
infoBox("Drawing saved. ID: " + d.id + ", " + lUtf8(quote(s)) + " bytes");
updateDrawingsMenu();
ret d;
}
svoid updateDrawingsMenu {
new L params;
for (final Drawing d)
addAll(params, "Load drawing " + d.id + " (made " + renderDate(d.created) + ")", r { loadDrawing(d) });
addMenu(canvas, "Drawings", toObjectArray(params));
}
svoid loadDrawing(Drawing d) {
cal = (CirclesAndLines) unstructure(d.calStructure);
Canvas c = canvas;
canvas = cal.makeCanvas();
awtReplaceComponent(c, canvas);
}
svoid publish {
S globalID = aGlobalID();
final JTextField tfName = jtextfield();
showFormTitled("Publish drawing to server?",
"Global ID" := globalID,
"Name" := tfName,
r {
Drawing d = saveDrawing();
cset(d, +globalID, name := getTextTrim(tfName));
S fullName = "Drawing " + globalID + " " + renderDate(now())
+ " - " + or2(name, "Untitled");
S url = uploadToImageServer(canvas.getImage(), fullName);
infoBox("Uploaded to server! " + url);
});
}