!7 static DynamicVStack stack; static O module; static S moduleID; static java.util.Timer moduleRestarter; p-subst { autoRestart(); defaultFrameIcon(#1101180); stack = dynamicVStack(); showFrame(jscroll(stack)); repeat with sleep 1 { updateModule(); L> l = (L) quickImport(callOpt(module, 'suggest)); if (l != null) { stack.clearComponents(); for (Pair p : l) stack.addComponent(jMarginButton(p.a, p.b)); } } } svoid updateModule { S moduleID = first(mL("Best suggester module")); if (neq(moduleID, main.moduleID)) { if (main.moduleID != null) print("Switching to module " + moduleID); stopTimer(moduleRestarter); main.moduleID = moduleID; moduleRestarter = loadAndAutoRestartModule('module, moduleID); } }