!7 static ImageSurface is; static int i; p-substance { if (l(args) == 0) fail("Need command line argument (image path)"); showFile(new File(args[0])); } svoid showFile(final File file) { assertTrue("File not found: " + absolutePath(file), file.exists()); BufferedImage img = loadBufferedImage(file); if (is != null) is.setImage(img); else { is = showImage_centered(file.getName(), img); File dir = file.getParentFile(); final L files = asList(listFiles(dir)); i = indexOfPred(files, func(File f) { eq(f.getName(), file.getName()) }); if (l(files) < 2) ret; registerLeftKey(getFrame(is), r { i = mod(i-1, l(files)); showFile(files.get(i)); }); registerRightKey(getFrame(is), r { i = (i+1) % l(files); showFile(files.get(i)); }); registerMinusKeys(is, r { is.zoomOut(1.5) }); registerPlusKeys(is, r { is.zoomIn(1.5) }); registerKey(is, KeyEvent.VK_A, "A", r { is.setZoom(1.0) }); registerKey(is, KeyEvent.VK_W, "W", r { is.zoomToWindow() }); hideConsole(); } }