!7 // Show programs with data as nice buttons p-noconsole { autoRestart(); L ids = programsWithData(); final SS programNames = getSnippetTitles_cached(ids); showNiceButtons( map(ids, func(fS progID) -> TextImageAction { TextImageAction(programNames.get(progID), #1101229, r-thread { showProgramDir(progID) }) })); } svoid showProgramDir(S progID) { File[] files = listFiles(programDir(progID)); frameTitle("Files of: " + getSnippetTitle_cached(progID) + " [" + progID + "]", showNiceButtons( map(files, func(final File f) -> TextImageAction { TextImageAction(f.getName(), #1101231, r-thread { openFile(f) }) }))); } svoid openFile(File f) { infoBox("TODO"); }