Warning: session_start(): open(/var/lib/php/sessions/sess_698nb94rm7amp1rb5fv52o2jpk, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
module ShowRandomColor > DynModule {
RGB color;
S myGuess, yourName;
bool voiceMode = true; // voice input & output
transient JPanel colorPanel;
transient JTextField tfYourName;
transient JButton btnSave;
visualize {
if (color == null) setField(color := makeRandomColor());
dm_onTopInput(voidfunc(S s) {
if (!dm_isActiveModule(module())) ret with print("not active");
JComponent popup = dm_generalMap_get('yesPopup);
if "yes that's right"
simulateClick(btnSave);
else if "yes|okay|ok" {
if (isShowing(popup) && getOpt(popup, 'forComponent) == btnSave) {
removeFromParent(popup);
simulateClick(btnSave);
}
} else if "no"
removeFromParent(popup);
else if "new color|next color"
newColor();
else {
print("Got input: " + s);
setField(yourName := s);
dm_showYesToAcceptPopupAbove(btnSave);
}
});
JComponent theForm = vstackWithSpacing(
makeBold(fontSize(20, liveValueLabel(mapLiveValue(dm_fieldLiveValue('myGuess), S, func(S s) -> S { "I call this color: " + or2(s, "Uh... no idea.") })))),
westCenterAndEastWithMargin(withRightMargin(15, fontSize(20, jBoldLabel("How do you call this color?"))),
onEnter(tfYourName = focusOnShow(selectAllOnFocus(
fontSize(20, dm_fieldTextField('yourName))), rThread saveName)),
btnSave = jBoldButton("SAVE", rThread saveName)),
withTopMargin(rightAlignedLine(jBoldButton("NEXT ONE", rThread newColor))));
ret centerAndSouthWithMargin(
northAndCenterWithMargins(
westAndCenter(dm_fieldCheckBox('voiceMode),
rightAlignedLine(
withLabel("Color Code:", jBoldLiveValueLabel(mapLiveValue(func(O color) -> S { "#" + color }, S, dm_fieldLiveValue('color)))),
jPopDownButton_noText("Choose color...", rThread chooseColor))),
jCenteredSectionWithFont(sansSerifBold(18), " HERE'S THE COLOR ", colorPanel = singleColorPanel(toColor(color)))),
withBottomMargin(withSideMargin(15, theForm)));
}
void newColor enter {
setColor(makeRandomColor());
}
void setColor(RGB color) enter {
setField(+color);
setField(myGuess := or((S) dm_callModule(dm_colorNamesModule(), 'getClosestColorName, color.getColor()), "no idea"));
setField(yourName := myGuess);
changeSingleColorPanel(colorPanel, color.getColor());
selectAll(tfYourName);
}
void saveName enter {
setField(yourName := trim(yourName));
if (empty(yourName)) ret;
if (eqic(myGuess, yourName))
dm_infoBoxOrTalk(voiceMode, randomLL(
"Got this one right!",
"I'm good!",
"I'm so smart.",
"Yay!"));
else
dm_infoBoxOrTalk(voiceMode, quote(yourName) + (voiceMode ? "," : "...") + " I see.");
dm_callModule(dm_colorNamesModule(), 'addColorName, color.getColor(), yourName, "");
newColor();
}
RGB makeRandomColor() { ret randomHSBColor(); }
void chooseColor enter {
inputText("Choose a color (RRGGBB)", color.getHexString(), voidfunc(S s) enter {
setColor(rgbFromHex(s))
});
}
S switchableFields() { ret 'voiceMode; }
}