Change language

This commit is contained in:
Ruben van de Ven 2019-01-25 11:59:03 +01:00
parent c66ca30a45
commit 46299d2dac
5 changed files with 53 additions and 21 deletions

View File

@ -338,18 +338,24 @@ class HugveyState(object):
self.restart()
if event['event'] == 'resume':
self.resume()
if event['event'] == 'change_language':
self.setLanguage(event['lang_code'])
self.eventQueue = None
def setLanguage(self, language_code):
if language_code not in self.command.languages:
raise Exception("Invalid language {}".format(language_code))
self.logger.info(f"set language: {language_code}")
self.language_code = language_code
self.google.setLanguage(language_code)
self.restart()
self.story.reset()
self.story.setStoryData(self.command.languages[language_code])
# self.story.reset()
# self.story.setStoryData(self.command.languages[language_code])
def pause(self):
self.logger.info('Pause')
@ -372,7 +378,7 @@ class HugveyState(object):
def restart(self):
self.logger.info('Restart')
if self.story:
self.story.reset()
self.story.stop()
self.resume()
self.isRunning.set()

View File

@ -45,14 +45,19 @@ def getWebSocketHandler(central_command):
msg = json.loads(message)
if msg['action'] == 'init':
self.msgInit()
if msg['action'] == 'get_status':
elif msg['action'] == 'get_status':
self.msgStatus()
if msg['action'] == 'resume':
elif msg['action'] == 'resume':
self.msgResume(msg['hugvey'])
if msg['action'] == 'pause':
elif msg['action'] == 'pause':
self.msgPause(msg['hugvey'])
if msg['action'] == 'restart':
elif msg['action'] == 'restart':
self.msgRestart(msg['hugvey'])
elif msg['action'] == 'change_language':
self.msgChangeLanguage(msg['hugvey'], msg['lang_code'])
else:
self.send({'alert': 'Unknown request: {}'.format(message)})
logger.warn('Unknown request: {}'.format(message))
except Exception as e:
self.send({'alert': 'Invalid request: {}'.format(e)})
@ -88,6 +93,9 @@ def getWebSocketHandler(central_command):
def msgRestart(self, hv_id):
central_command.hugveys[hv_id].eventQueue.put_nowait({'event': 'restart'})
def msgChangeLanguage(self, hv_id, lang_code):
central_command.hugveys[hv_id].eventQueue.put_nowait({'event': 'change_language', 'lang_code': lang_code})
return WebSocketHandler

View File

@ -69,6 +69,7 @@ class GoogleVoiceClient(object):
while not self.toBeShutdown:
try:
self.isRunning.wait()
logger.info("Starting Google Voice")
self.speech_client = speech.SpeechClient()
config = types.RecognitionConfig(

View File

@ -33,7 +33,14 @@
{{ hv.id }}
</h1>
<div class='status'>{{ hv.status }}</div>
<div v-if="hv.status != 'off' && hv.status != 'gone'">
<div v-if="hv.status != 'off' && hv.status != 'gone' && hv.status != 'loading'">
<select v-model="hv.language" @change="change_lang(hv, hv.language)">
<option v-for="lang in languages" :title="lang.file"
:value="lang.code">
<span :class="['flag-icon', lang.code]"></span>
{{lang.code}}
</option>
</select>
{{ hv.language }}
<div v-if="hv.finished != false"><img class='icon' :src="'/images/icon-finished.svg'" title="Finished"> {{timer(hv,
'finished')}}</div>
@ -43,14 +50,14 @@
{{c}}
</div>
<div class='position'>
<img class='icon' :src="'/images/icon-position.svg'" :title="key">
{{ hv.msg }}
<img class='icon' src="/images/icon-position.svg" title="position">
{{ hv.msg }}
</div>
</div>
<div class='btn' v-if="hv.status == 'running'" @click="pause(hv.id)">Pause</div>
<div class='btn' v-if="hv.status == 'paused'" @click="resume(hv.id)">Resume</div>
<div class='btn' v-if="hv.status == 'finished'" @click="restart(hv.id)">Restart</div>
</div>
<div class='btn' v-if="hv.status == 'running'" @click="pause(hv)">Pause</div>
<div class='btn' v-if="hv.status == 'paused'" @click="resume(hv)">Resume</div>
<div class='btn' v-if="hv.status == 'finished'" @click="restart(hv)">Restart</div>
</div>
</div>
</div>
<div id='story'>

View File

@ -22,14 +22,21 @@ class Panopticon {
loadNarrative: function( code, file ) {
return panopticon.loadNarrative( code, file );
},
pause: function(hv_id) {
return panopticon.pause(hv_id);
pause: function(hv) {
hv.status = "loading";
return panopticon.pause(hv.id);
},
resume: function(hv_id) {
return panopticon.resume(hv_id);
resume: function(hv) {
hv.status = "loading";
return panopticon.resume(hv.id);
},
restart: function(hv_id) {
return panopticon.restart(hv_id);
restart: function(hv) {
hv.status = "loading";
return panopticon.restart(hv.id);
},
change_lang: function(hv, lang_code) {
hv.status = "loading";
return panopticon.change_language(hv.id, lang_code);
}
}
} );
@ -127,6 +134,9 @@ class Panopticon {
restart( hv_id ) {
this.send( { action: 'restart', hugvey: hv_id } )
}
change_language( hv_id, lang_code ) {
this.send( { action: 'change_language', hugvey: hv_id, lang_code: lang_code } );
}
}