Warning: session_start(): open(/var/lib/php/sessions/sess_b5ev6891pmksdgcgmihut560gb, 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
cmodule VoiceRecognitionStatus {
transient S modeOff = "off",
modeListenAllTheTime = "listen",
modeListenOnNoise = "listen on noise";
transient LS userSelectedModes = ll(
modeOff,
modeListenAllTheTime,
modeListenOnNoise);
// left-click on tray icon cycles only through these states
transient LS cycleList = ll(modeOff, modeListenOnNoise);
S userSelectedMode;
switchable bool showHostTrayIcon = true;
transient TrayIcon hostTrayIcon;
transient ButtonGroup buttons;
transient long listeningUntil; // optional
transient bool listening;
start {
dm_reloadOnFieldChange showHostTrayIcon();
if (showHostTrayIcon)
hostTrayIcon = dm_systemTrayIcon(makeImage(), makeTooltip(),
flattenArray_recursive(
rThread nextMode, // left-click command
map(userSelectedModes, mode -> ll(mode, rThread { setModeWithInfoBox(mode) })), // modes
"---",
"type", rThread { dm_focusAIBar() } // allow user to type in AI bar
));
dm_watchFieldAndNow userSelectedMode(r {
selectRadioButton(buttons, indexOfIC(userSelectedModes, userSelectedMode));
if (eqic(userSelectedMode, modeOff)) {
// turn off Listen On Noise & actual recognizer
dm_call(dm_listenOnNoiseModuleOpt(), 'setEnabled, false);
dm_stopListening();
dm_findAndCall("#1020629/SpeechRecognitionControl", 'cancelAll);
} else if (eqic(userSelectedMode, modeListenOnNoise)) {
dm_call(dm_listenOnNoiseModule(), 'setEnabled, true);
dm_startGoogleSpeechRecognition();
} else if (eqic(userSelectedMode, modeListenAllTheTime)) {
dm_call(dm_listenOnNoiseModuleOpt(), 'setEnabled, false);
dm_startGoogleSpeechRecognition();
}
setToolTip(hostTrayIcon, makeTooltip());
setTrayIconImage(hostTrayIcon, makeImage());
});
}
visualize {
buttons = jRadioButtons(userSelectedModes);
selectRadioButton(buttons, indexOfIC(userSelectedModes, userSelectedMode));
onRadioButtonChange(buttons, voidfunc(int i) {
setField(userSelectedMode := _get(userSelectedModes, i));
});
ret jfullcenter(vstackWithSpacing(buttonsInGroup(buttons)));
}
void nextMode {
setModeWithInfoBox(nextInCyclicList(userSelectedMode, cycleList));
}
void setModeWithInfoBox(S mode) {
infoBox("New mode: " + mode, 1.0);
setField(userSelectedMode := mode);
}
S makeTooltip() { ret userSelectedMode + " - voice recognition 3-way switch"; }
S makeImage() { ret eqic(userSelectedMode, modeOff) ? #1102870 : #1101635; }
}