!7 sclass VoiceOutput > DynTextArea { S voice; JComponent visualize() { bindComboBoxToLiveValue_debug.set(true); JComponent c = super.visualize(); enableWordWrapForTextArea(textArea); ret centerAndSouthWithMargins(c, centerAndEast(withLabel("Voice:", jLiveValueComboBox(cereprocVoices(), dm_fieldLiveValue('voice))), jbutton("Say", rThread sayIt))); } void sayIt { S s = trim(getText()); if (empty(s) || empty(voice)) ret; if (isCereprocVoice(voice)) cereproc(voice, s); else print("Missing voice: " + voice); } void clear() { setText(""); } }