Warning: session_start(): open(/var/lib/php/sessions/sess_i77sugg6v8tcc3mif8se2cnvdc, 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
sclass DynSCP extends DynModule {
SingleComponentPanel scp;
final JComponent visualize() { ret scp = singleComponentPanel(visualize2()); }
void unvisualize2() { scp = null; }
JComponent visualize2() { null; }
void revisualize2() {
lock lock;
if (scp != null) scp.setComponent(visualize2());
}
}
sclass LastImagesInDirectory extends DynSCP {
/*DirectoryInfo*/O mate;
S dir;
L allFiles, imageFiles;
transient DynamicHStack stack;
transient ButtonImageLoader imageLoader;
File dirObject() { ret newFile(dir); }
JComponent visualize2() {
if (stack == null) stack = makeNiceButtons();
if (imageLoader == null) imageLoader = new ButtonImageLoader(buttons);
if (mate == null) ret jcenteredlabel("Need directory");
ret jHigherScrollPane(jfullcenter(stack));
}
void update {
lock lock;
int oldChangeCount = changeCount;
try {
if (mate == null)
if (setField(mate := dm_findMateOfType(this, 'DirectoryInfo)))
revisualize2();
if (mate == null) ret;
setField(dir := (S) call(mate, 'getDir));
L allFiles = castCall(mate, 'getFiles);
if (this.allFiles != allFiles) {
setField(+allFiles);
setField(imageFiles := filterOrNull(allFiles, f isImageFileName));
}
} finally {
if (changeCount != oldChangeCount) updateButtons();
}
}
void updateButtons {
replaceNiceButtons(buttons,
filesForNiceButtons(sortFilesByDate(
fileNamesInDirToFile(dir, imageFiles)), f showImage));
imageLoader.update();
}
}