!7 module VoiceMatrix extends DynObjectTable { SS map; // module lib ID => "+" or "-" void update { setData(map(map, func(S moduleID, S value) { litorderedmap("Module ID" := moduleID, "Speech Output Enabled" := eq(value, "+") ? "Yes" : "No") }); } visualize { ret withCenteredButtons(super.visualize(), "Enable", r { setValue(firstValue(selected()), "+") }, "Disable", r { setValue(firstValue(selected()), "-") }); } void setValue(S moduleID, S value) { if (syncPut_trueIfChanged(map, moduleID, value)) persistMe(); } }