Warning: session_start(): open(/var/lib/php/sessions/sess_dmh8s4tcograuan6s3j7nshunf, 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
// class AIConcept comes from #1007160
static JTable table;
p-substance {
conceptsAndBot();
showConceptsTable_postProcess.set(f reversedList);
table = makeConceptsTable(AIConcept, func(AIConcept c) {
litorderedmap("Concept ID" := c.globalID, "Name/Description" := c.name, "Comments" := c.comment, "Has Image?" := ynShort(c.pngFile.has()))
});
showFrame("My AI Concepts", tableWithSearcher(table));
onDoubleClick(table, r { editConcept(selectedConcept()) });
addToWindow(table, jRightAlignedLine(
jbutton("New Concept...", f newConcept),
tableDependButton(table, "Edit", r { editConcept(selectedConcept()) })));
tablePopupMenu(table, voidfunc(JPopupMenu menu, final int row) {
addMenuItem(menu, "Edit...", r {
final S globalID = (S) getTableCell(table, row, 0);
editConcept(findConcept(AIConcept, +globalID));
});
addMenuItem(menu, "Delete", r {
final S globalID = (S) getTableCell(table, row, 0);
withDBLock(r { deleteConceptsWhere(AIConcept, +globalID) });
});
});
hideConsole();
}
svoid editConcept(final AIConcept c) {
if (c == null) ret;
final JTextField a = jTextField(c.name);
final JTextField b = jTextField(c.comment);
final JTextField cc = jTextField(c.globalID);
final ImageChooser ic = new ImageChooser(c.pngFile.has() ? c.pngFile->getImage() : null);
Runnable r = r {
BufferedImage image = ic.getImage();
if (image == null && c.pngFile.has()) {
//c.pngFile->delete();
c.pngFile.clear();
} else if (image != null &&
(!c.pngFile.has() || !imagesIdentical(c.pngFile->getImage(), image))) {
//if (c.pngFile.has()) c.pngFile->delete();
c.pngFile.set(new PNGFile(image));
}
cset(c,
name := getTextTrim(a), comment := getTextTrim(b),
globalID := getTextTrim(cc));
};
O[] params = {
"Description/Name", a,
"Comment (optional)", b,
"Global ID", cc,
"Example Image (optional)", ic,
r };
//for i over params: print("#" + i + ": " + params[i]);
renameSubmitButton("Save", showFormTitled("Edit concept " + c.globalID, params));
}
svoid newConcept {
final new JTextField a;
final JTextField b = jTextField();
final JTextField cc = jTextField(aGlobalID());
final new ImageChooser ic;
Runnable r = r {
cnew(AIConcept,
name := getTextTrim(a), comment := getTextTrim(b), globalID := getTextTrim(cc),
pngFile := ic.createPNGFile())
};
renameSubmitButton("Create", showFormTitled("New concept",
"Description/Name", a,
"Comment (optional)", b,
"Global ID", cc,
"Example Image (optional)", ic,
r));
}
static AIConcept selectedConcept() {
ret findConcept(AIConcept, globalID := selectedTableCell(table, 0));
}