Warning: session_start(): open(/var/lib/php/sessions/sess_an0qibn1iem6re350dpmcmlhod, 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 LastImagesInDirectory extends DynSCP {
new DynModuleRef mate;
S dir;
L allFiles, imageFiles;
transient DynamicHStack buttons;
transient ButtonImageLoader imageLoader;
File dirObject() { ret newFile(dir); }
JComponent visualize2() {
if (buttons == null) { buttons = makeNiceButtons(); updateButtons(); }
if (imageLoader == null) imageLoader = new ButtonImageLoader(buttons);
if (mate! == null) ret jcenteredlabel("Need directory");
ret jHigherScrollPane(jfullcenter(buttons));
}
void update {
lock lock;
int oldChangeCount = mate! == null ? -1 : changeCount;
try {
if (mate! != null && !dm_moduleStillThere(mate!)) mate.set(null);
if (mate! == null)
if (setField(mate := DynModuleRef(print("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 {
if (dir == null || buttons == null) ret with setModuleName("Images in directory");
L l = filesForNiceButtons(sortFilesByDate(
fileNamesInDirToFile(new File(dir), imageFiles)), f showImage);
for (final TextImageAction tia : l)
tia.popupMenuMaker = voidfunc(JPopupMenu menu) {
final File f = filesForNiceButtons_map.get(tia);
if (f != null && !hasJPEGExtension(f))
addMenuItem(menu, "Convert to JPEG (save space by lossy compression)", r-thread { jpegify(f) });
};
replaceNiceButtons(buttons, l);
setModuleName(imageFiles == null
? "Not allowed to look in directory " + fileName(dirObject())
: n2(l, "image") + " in directory " + fileName(dirObject()));
if (imageLoader != null) imageLoader.update();
}
}