Warning: session_start(): open(/var/lib/php/sessions/sess_b3h5a59eu7thjdru517u5i2jdq, 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
static JTextField tf;
static SingleComponentPanel scp;
static Canvas canvas;
static Q q; // action queue
static volatile bool boss; // boss mode (after pressing Escape)
static L aiConcepts;
!include #1007377 // traits for CirclesAndLines
p-substance-thread {
aiConcepts = loadAIConcepts();
//final S word = getString(random(aiConcepts), /*"name"*/"globalID");
final S word = "paul + marie";
swing {
q = new Q(true);
JFrame frame = showFrame(northAndCenter(tf = setTextFieldFontSize(jCenteredTextField(word), 20), scp = new SingleComponentPanel));
registerEscape(frame, r { boss = true; tf.setText(""); scp.noComponent(); });
centerFrame(frameInnerSize(frame, 600, 600));
addMenu(frame, "Menu!", "Show AI Concepts", r { startOrActivate(#1006463) });
onEnterAndNow(tf, r {
boss = false;
awt { tf.selectAll(); }
final S text = getTextTrim(tf);
q.add(r {
if (boss) ret;
long time = sysNow();
loading {
final CirclesAndLines cal = renderText(text);
if (boss) ret;
awt {
scp.setComponent(centerAndSouth(
/*jscroll_centered*/(cal.makeCanvas()),
setFont(sansSerifBold(20), jcenteredlabel(text))));
}
}
sleepUntilSys(time+1000); // min display time
});
});
hideConsole();
}
}
static CirclesAndLines renderText(S text) {
if (possibleGlobalID(text)) {
AIConcept c = findWhere(aiConcepts, globalID := text);
if (c != null) {
print("Have concept (" + c.globalID + " - " + c.name + ")");
ret renderConcept(c);
}
}
new CirclesAndLines cal;
for (S s : splitAtPlus(text)) cal.circle_autoVis(s, 0.5, 0.5);
autoPositionCircles(cal);
ret cal;
}
static CirclesAndLines renderConcept(AIConcept c) {
new CirclesAndLines cal;
conceptCircle(cal, c, true);
ret cal;
}
static Circle conceptCircle(CirclesAndLines cal, S conceptID, bool withRelations) {
AIConcept c = aiConcepts_cached().get(conceptID);
if (c == null) ret cal.circle(conceptID + " [?]", 0.5, 0.5);
ret conceptCircle(cal, c, withRelations);
}
static Circle conceptCircle(CirclesAndLines cal, AIConcept c, bool withRelations) {
BufferedImage img = getConceptImage(c);
Circle cc;
if (img != null)
cc = cal.circle(img, 0.5, 0.5, c.name);
else
cc = cal.circle_autoVis(c.name, 0.5, 0.5);
cc.addTrait(c.globalID);
if (withRelations)
findRelations(cal, cc, c);
ret cc;
}
svoid findRelations(CirclesAndLines cal, Circle cc, AIConcept c) {
S id = c.globalID;
for (S s : trueStatements_cached()) {
Lisp l = clParse(s);
if (l.size() == 3 && l.headIs("yppdjirdezcvlhhg") && eq(l.getString(0), id)) {
Circle dd = conceptCircle(cal, l.getString(1), false);
cal.arrow(cc, "SYNONYM", dd);
}
}
}