!7 compact module AutoGoogleImage > DynImageSurface { S typingText; transient S text; bool listen; start { dm_onTopInput_q(voidfunc(S s) { if (listen) show(s) }); } enhanceFrame { minFrameSize(f, 300, 300); } visualize { ret northCenterSouthWithMargins(dm_bigInputAndSubmit('typingText, "Visualize", rThread { show(typingText) }), super.visualize(), vstackWithSpacing( centeredLiveValueLabel(dm_fieldLiveValue('text)), dm_rightAlignedCheckBox('listen))); } // API void show(S query) q { setField(typingText := query); BufferedImage img = quickVisualize(query); if (img == null) ret; setImage(img); setField(text := query); } }