!7 concept Entry { S path; //LS alternatePaths; S comment; bool shouldBeBackedUp, monitor, isPrivate; sS _fieldOrder = "path comment shouldBeBackedUp monitor isPrivate"; } cmodule UserDirectories > DynCRUD { start { // Add some default stuff add(userDir(), "Your home directory"); add(javaxDataDir(), "JavaX data directory"); cset(add(javaxSecretDir(), "JavaX secret directory"), isPrivate := true); add(javaxCachesDir(), "JavaX cache directory"); add(javaxCodeDir(), "JavaX code directory"); add(desktopDir(), "Your desktop"); add(downloadsDir(), "Your downloads"); } afterVisualize { makeSortable(); onTableCellLeftClick(table(), voidfunc(int col, int row) { if (col == 3) cflipBool(selected(), 'shouldBeBackedUp); else if (col == 4) cflipBool(selected(), 'monitor); }); } // API // only sets comment if it was empty Entry add(File dir, S comment) { Entry e = uniq(Entry, path := f2s(dir)); if (emptyAfterTrim(e.comment)) cset(e, +comment); ret e; } }