!7 module CategorizeRandomSpeechLogLines { S line, category, answer; start { setModuleName("Categorize Random Speech Log Line (of " + n2(dm_speechLog(), "line") + ")"); } visualize { JLabel lbl = makeBold(fontSizePlus(3, dm_centeredFieldLabel('line))); awtCalcEvery(lbl, 0.0, 5.0, r { if (!mouseInComponent(dm_frame())) next() }); ret northCenterAndSouth( withMargin(rightAlignedLine(jbutton("Next", rThread next))), lbl, withMargin(vstackWithSpacing( westCenterAndEastWithMargin(jlabel("Is this line"), dm_fieldTextField('category), jlabel("?")), westCenterAndEastWithMargin( leftAlignedButtons( "Yes", rThread { save("yes") }, "No", rThread { save("no") }), onEnter(dm_fieldTextField('answer), rThread save), jbutton("Save", rThread save)) ))); } void save(S answer) enter { setField(+answer); save(); } void save enter { if (empty(answer) || empty(line) || empty(category)) ret; dm_callModule(dm_requireModule("#1020558/LineToCategory"), 'setAnswer, line, category, answer); next(); } void next enter { setField(line := random(dm_speechLog())); } }