Warning: session_start(): open(/var/lib/php/sessions/sess_6sbkocj48r6anc3rd2al82eouo, 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
static Class _classMigration_LastImagesInDirectory = ImagesInDirectory; // not implemented yet
sclass ImagesInDirectory 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 = ImagesInDirectory_popupMenu(this, tia);
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();
}
}
static VF1 ImagesInDirectory_popupMenu(ImagesInDirectory m, final TextImageAction tia) {
// Haha, not even used
//final WeakReference me = new(m);
ret voidfunc(JPopupMenu menu) {
addPopupItemsForImageFile(menu, filesForNiceButtons_map.get(tia))
};
}