Warning: session_start(): open(/var/lib/php/sessions/sess_60iarh1pdma45djmic634vqlgi, 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;
static S name;
p {
db();
substance();
swing {
canvas = cal.show(500, 300);
setCAL(cal);
updateDrawingsMenu();
addToWindow(canvas, withMargin(jcenteredline(
jbutton("New Circle...", f newCircle),
jbutton("Save drawing", f saveDrawing),
jbutton("PUBLISH drawing to server", f publish)));
addToWindow(canvas, withMargin(jcenteredlabel("Create connections by dragging between circles with right mouse button")));
hideConsole();
}
}
svoid newCircle {
final JTextField text = jtextfield();
showFormTitled("New Circle", "Text", text, r-thread { loading {
cal.circle_autoVis(getTextTrim(text), random(0.2, 0.8), random(0.2, 0.8));
canvas.update();
}});
}
static Drawing saveDrawing() {
if (empty(name)) {
final JTextField tfName = jtextfield();
showFormTitled("Name drawing",
"Name", tfName,
r {
name = getTextTrim(tfName);
saveDrawing();
});
null;
}
S s = structure(cal);
Drawing d = cnew(Drawing, calStructure := s, +name);
infoBox("Drawing saved. ID: " + d.id + ", " + lUtf8(quote(s)) + " bytes");
updateDrawingsMenu();
ret d;
}
svoid newDrawing {
setCAL(new CirclesAndLines);
name = "";
}
svoid updateDrawingsMenu {
L params = ll("New drawing", r { newDrawing() });
for (final Drawing d : reversed(list(Drawing)))
addAll(params, "Load " + (nempty(d.name) ? quote(d.name) : str(d.id)) + " (made " + renderDate(d.created) + ")", r { loadDrawing(d) });
addMenu(canvas, "Drawings", toObjectArray(params));
}
svoid setCAL(CirclesAndLines cal) {
main.cal = cal;
Canvas c = canvas;
canvas = cal.makeCanvas();
awtReplaceComponent(c, canvas);
new CirclesRelater(canvas, cal);
}
svoid loadDrawing(Drawing d) {
CirclesAndLines cal = cast unstructure(d.calStructure);
cal_setAutoVis(cal);
setCAL(cal);
}
svoid publish {
fS globalID = aGlobalID();
final JTextField tfName = jtextfield(name);
showFormTitled("Publish drawing to server?",
"Global ID" := globalID,
"Name" := tfName,
r-thread { loading {
name = getTextTrim(tfName);
Drawing d = saveDrawing();
cset(d, +globalID, +name);
S fullName = "Drawing " + globalID + " " + renderDate(now())
+ " - " + or2(name, "Untitled");
S url = uploadToImageServer(canvas.getImage(), fullName);
infoBox("Image uploaded to server! " + url);
S id = createSuperHighSnippet(structure(d), fullName, 56 /*SN_AI_DRAWING*/, null, null);
infoBox("Drawing uploaded. " + fsI(id));
}});
}