!7 cmodule ChooseBackgroundImage > DynImageSurface { start { set useUpdateHack; setImage(dm_loadBackgroundImage()); } visualize { ret withCenteredButtons(super.visualize(), "Load image...", rThread { selectFile("Background Image (JPG/PNG)", voidfunc(File f) { setImage(loadImage2(f)); }); }, "Use as background image", r { File f = putImageInDirectory_jpeg(getImage(), stefansOS_backgroundDir()); saveTextFile(stefansOS_backgroundFile(), f2s(f)); set(dm_os(), background := fileToURI(f)); updateImage(); }, "Restore default image", r { deleteFile(stefansOS_backgroundFile()); set(dm_os(), background := dm_getOS('defaultBackground)); updateImage(); }); } void updateImage { infoBox("Background image changed!"); set(dm_desktopPane(), image := dm_loadBackgroundImage()); dm_desktopPane().repaint(); } }