[tuxdroid-svn] r354 - software/tuxgi/trunk
Status: Beta
Brought to you by:
ks156
From: remi <c2m...@c2...> - 2007-06-06 08:45:02
|
Author: remi Date: 2007-06-06 10:44:58 +0200 (Wed, 06 Jun 2007) New Revision: 354 Modified: software/tuxgi/trunk/tuxgi.py software/tuxgi/trunk/tuxgi2.glade Log: UPD Automatic update of the voices list. Minor changes for the compatibility with the last api. Modified: software/tuxgi/trunk/tuxgi.py =================================================================== --- software/tuxgi/trunk/tuxgi.py 2007-06-06 08:16:20 UTC (rev 353) +++ software/tuxgi/trunk/tuxgi.py 2007-06-06 08:44:58 UTC (rev 354) @@ -65,6 +65,10 @@ ('xterm', '-e'), # X ] # list of tuple instead of a dictionary as the order matters +voice_list_changed = False +voice_list = gtk.ListStore(gobject.TYPE_STRING) +voice_dic = {} +current_voice = "" if not os.popen('type ipython').close(): py_cmd = 'ipython' else: @@ -93,9 +97,10 @@ # On new window #-------------------------------------------------------------------------- def new(self): - self.get_widget("comboboxentry1").set_active(2) + self.update_voice_list() tux.tts.on_sound_on=self.on_sound_on tux.tts.on_sound_off=self.on_sound_off + tux.tts.on_voice_list=self.on_voice_list tux.event.on_status=self.on_status tux.event.on_left_blue_led_on=self.on_right_blue_led_on tux.event.on_left_blue_led_off=self.on_right_blue_led_off @@ -115,43 +120,43 @@ toggled_by_event=True tux.destroy() sys.exit(0) - + #-------------------------------------------------------------------------- # On left blue led status is on - #-------------------------------------------------------------------------- + #-------------------------------------------------------------------------- def on_left_blue_led_on(self): global toggled_by_event toggled_by_event=True - self.get_widget("checkbutton1").set_active(True) - toggled_by_event=False - + self.get_widget("checkbutton1").set_active(True) + toggled_by_event=False + #-------------------------------------------------------------------------- # On left blue led status is off - #-------------------------------------------------------------------------- + #-------------------------------------------------------------------------- def on_left_blue_led_off(self): global toggled_by_event toggled_by_event=True - self.get_widget("checkbutton1").set_active(False) - toggled_by_event=False - + self.get_widget("checkbutton1").set_active(False) + toggled_by_event=False + #-------------------------------------------------------------------------- # On right blue led status is on - #-------------------------------------------------------------------------- + #-------------------------------------------------------------------------- def on_right_blue_led_on(self): global toggled_by_event toggled_by_event=True - self.get_widget("checkbutton2").set_active(True) - toggled_by_event=False - + self.get_widget("checkbutton2").set_active(True) + toggled_by_event=False + #-------------------------------------------------------------------------- # On right blue led status is off - #-------------------------------------------------------------------------- + #-------------------------------------------------------------------------- def on_right_blue_led_off(self): global toggled_by_event toggled_by_event=True - self.get_widget("checkbutton2").set_active(False) - toggled_by_event=False - + self.get_widget("checkbutton2").set_active(False) + toggled_by_event=False + #-------------------------------------------------------------------------- # On mouth stop #-------------------------------------------------------------------------- @@ -163,10 +168,10 @@ else: self.get_widget("radiobutton4").set_active(True) toggled_by_event=False - + #-------------------------------------------------------------------------- # On eyes stop - #-------------------------------------------------------------------------- + #-------------------------------------------------------------------------- def on_eyes_stop(self): global toggled_by_event toggled_by_event=True @@ -175,21 +180,21 @@ else: self.get_widget("radiobutton2").set_active(True) toggled_by_event=False - + #-------------------------------------------------------------------------- # Event on status #-------------------------------------------------------------------------- - def on_status(self): + def on_status(self,frame): global status_list_st global status_list_changed - explicite_status=tux.explicit_status() + explicite_status=tux.explicit_status(frame) if explicite_status.find("RF connected->") != 0: status_list_changed=True status_list_st.append(explicite_status) if len(status_list_st)==50: for i in range(1): status_list_st.pop(0) - + #-------------------------------------------------------------------------- # Status viewer refreshing thread #-------------------------------------------------------------------------- @@ -198,6 +203,8 @@ global status_list_changed global onpause global onplay + global voice_list_changed + last_tuxdaemon_connect=False last_tuxttsdaemon_connect=False last_rf_state=False @@ -210,7 +217,7 @@ string="" if self.get_widget("checkbutton3").get_active(): for i in range(len(status_list_st)): - string=status_list_st[i]+"\n"+string + string=status_list_st[i]+"\n"+string else: string=status_list_st[len(status_list_st)-1]+"\n" statusview_b.insert(startiter,string) @@ -226,36 +233,40 @@ soundcard = tux.hw.alsa_device self.get_widget("togglebutton3").set_active(False) toggled_by_event=False - self.get_widget("image2").set_from_stock(gtk.STOCK_APPLY, - gtk.ICON_SIZE_BUTTON) + self.get_widget("image2").set_from_stock(gtk.STOCK_APPLY\ + ,gtk.ICON_SIZE_BUTTON) self.on_mouth_stop() self.on_eyes_stop() tux.cmd.leds_blink(2,1) else: - self.get_widget("image2").set_from_stock(gtk.STOCK_CANCEL, - gtk.ICON_SIZE_BUTTON) + self.get_widget("image2").set_from_stock(gtk.STOCK_CANCEL\ + ,gtk.ICON_SIZE_BUTTON) tux.status.rf_connected = False if tux.tts.connected!=last_tuxttsdaemon_connect: last_tuxttsdaemon_connect=tux.tts.connected if tux.tts.connected: - self.get_widget("image3").set_from_stock(gtk.STOCK_APPLY, - gtk.ICON_SIZE_BUTTON) + self.get_widget("image3").set_from_stock(gtk.STOCK_APPLY\ + ,gtk.ICON_SIZE_BUTTON) else: - self.get_widget("image3").set_from_stock(gtk.STOCK_CANCEL, - gtk.ICON_SIZE_BUTTON) + self.get_widget("image3").set_from_stock(gtk.STOCK_CANCEL\ + ,gtk.ICON_SIZE_BUTTON) if tux.status.rf_state()!=last_rf_state: last_rf_state = tux.status.rf_connected if last_rf_state: - self.get_widget("image4").set_from_stock(gtk.STOCK_APPLY, - gtk.ICON_SIZE_BUTTON) + self.get_widget("image4").set_from_stock(gtk.STOCK_APPLY\ + ,gtk.ICON_SIZE_BUTTON) else: - self.get_widget("image4").set_from_stock(gtk.STOCK_CANCEL, - gtk.ICON_SIZE_BUTTON) + self.get_widget("image4").set_from_stock(gtk.STOCK_CANCEL\ + ,gtk.ICON_SIZE_BUTTON) + if voice_list_changed: + voice_list_changed = False + self.update_voice_list() + tux.sys.wait(0.5) # ----------------------------------------------------------------------------- # Tab "main" events # ----------------------------------------------------------------------------- - + #-------------------------------------------------------------------------- # On left led checkbox toggled #-------------------------------------------------------------------------- @@ -285,7 +296,7 @@ def _funct(): num_sb=self.get_widget("spinbutton1") tux.cmd.leds_blink(int(num_sb.get_value()),15) - + thread.start_new_thread(_funct,()) #-------------------------------------------------------------------------- @@ -349,7 +360,7 @@ tux.cmd.raw(0x31,0,0,0) tux.event.wait_status(DATAS_STATUS_WINGS_POSITION_COUNTER,0,5) tux.cmd.wings_on(1) - + thread.start_new_thread(_funct,()) #-------------------------------------------------------------------------- @@ -362,7 +373,7 @@ if widget.get_active(): tux.cmd.raw(0x31,0,0,0) tux.event.wait_status(DATAS_STATUS_WINGS_POSITION_COUNTER,0,5) - + thread.start_new_thread(_funct,()) #-------------------------------------------------------------------------- @@ -381,8 +392,8 @@ tux.cmd.spinl_on_free(int(num_sb.get_value())) else: tux.cmd.spinr_on_free(int(num_sb.get_value())) - + #-------------------------------------------------------------------------- # On "Send command" button clicked #-------------------------------------------------------------------------- @@ -423,6 +434,10 @@ #-------------------------------------------------------------------------- def on_tts_play_bt_clicked(self, widget, *args): global toggled_by_event + global voice_dic + global voice_list + global current_voice + if toggled_by_event: return global onplay if onplay: @@ -430,7 +445,9 @@ else: voice_cb=self.get_widget("comboboxentry1") pitch_sb=self.get_widget("spinbutton6") - tux.tts.select_voice(voice_cb.get_active()+1,pitch_sb.get_value()) + voice_id = voice_dic[voice_list[voice_cb.get_active()][0]] + current_voice = voice_list[voice_cb.get_active()][0] + tux.tts.select_voice(voice_id,pitch_sb.get_value()) tux.tts.stop() textedit=self.get_widget("textview2") buffer=textedit.get_buffer() @@ -456,7 +473,7 @@ textedit=self.get_widget("textview2") buffer=textedit.get_buffer() buffer.set_text("") - + #-------------------------------------------------------------------------- # On TTS sound on event #-------------------------------------------------------------------------- @@ -468,7 +485,7 @@ toggled_by_event=False onplay=True tux.cmd.mouth_open() - + #-------------------------------------------------------------------------- # On TTS sound off event #-------------------------------------------------------------------------- @@ -481,6 +498,37 @@ onplay=False tux.cmd.mouth_close() + #-------------------------------------------------------------------------- + # On new authorized voices list event + #-------------------------------------------------------------------------- + def on_voice_list(self): + global voice_list_changed + + voice_list_changed = True + + #-------------------------------------------------------------------------- + # Update the voices list in the combobox + #-------------------------------------------------------------------------- + def update_voice_list(self): + global voice_list + global voice_dic + global current_voice + + voice_dic = {} + voice_list.clear() + for voice_id in tux.tts.authorized_voices_list: + voice_list.append([LANG_OF_SPK_LIST[voice_id],]) + voice_dic[LANG_OF_SPK_LIST[voice_id]] = voice_id + 1 + self.get_widget("comboboxentry1").set_model(voice_list) + if voice_dic.has_key(current_voice): + for i, voice_name in enumerate(voice_list): + if voice_name[0] == current_voice: + self.get_widget("comboboxentry1").set_active(i) + break + else: + self.get_widget("comboboxentry1").set_active(0) + + # ----------------------------------------------------------------------------- # Tab "Audio" events # ----------------------------------------------------------------------------- @@ -500,8 +548,8 @@ def on_wave_external_play_bt_clicked(self, widget, *args): if str(self.get_widget("filechooserbutton1").get_filename())=="None": return tux.sys.shell_free("aplay -D %s %s"% (soundcard, - self.get_widget("filechooserbutton1").get_filename())) - + self.get_widget("filechooserbutton1").get_filename())) + #-------------------------------------------------------------------------- # On select original sounds #-------------------------------------------------------------------------- @@ -523,7 +571,7 @@ wavs.wav_paths=[] wavs.wav_sizes=[] self.refresh_wav_list() - + #-------------------------------------------------------------------------- # On select internal wave file event #-------------------------------------------------------------------------- @@ -550,10 +598,10 @@ wavs.wav_sizes.pop(index-1) wavs.wav_paths.pop(index-1) self.refresh_wav_list() - + #-------------------------------------------------------------------------- # Refreshing wave list function - #-------------------------------------------------------------------------- + #-------------------------------------------------------------------------- def refresh_wav_list(self): wav_te=self.get_widget("textview3") wav_buffer=wav_te.get_buffer() @@ -578,10 +626,10 @@ #-------------------------------------------------------------------------- def on_wave_internal_store_bt_clicked(self, widget, *args): thread.start_new_thread(self.sound_storing,()) - + #-------------------------------------------------------------------------- # Store sound function - #-------------------------------------------------------------------------- + #-------------------------------------------------------------------------- def sound_storing(self): if tux.status.rf_state() == 0: return if len(wavs.wav_sizes)==0: return @@ -589,26 +637,26 @@ wav_buffer=wav_te.get_buffer() if not wavs.wavs_merging("merged.wav"): print wav_buffer.insert(wav_buffer.get_end_iter(), - "Sound storing : Error : file merged is too big\n") + "Sound storing : Error : file merged is too big\n") return wav_buffer.insert(wav_buffer.get_end_iter(), - "Sound storing : Erase flash\n") + "Sound storing : Erase flash\n") tux.cmd.sound_storing(len(wavs.wav_sizes)) tux.sys.wait(10) current_pos=0x0400 tux.sys.wait(0.1) wav_buffer.insert(wav_buffer.get_end_iter(), - "Sound storing : Indexes\n") + "Sound storing : Indexes\n") tux.cmd.sound_store_index(0x00,0x04,0x00) for size in wavs.wav_sizes: current_pos=current_pos+size tux.sys.wait(0.1) tux.cmd.sound_store_index((current_pos & 0xFF0000)>>16, - (current_pos & 0x00FF00)>>8,current_pos & 0x0000FF) + (current_pos & 0x00FF00)>>8,current_pos & 0x0000FF) wav_buffer.insert(wav_buffer.get_end_iter(),"Sound storing : Record\n") tux.sys.shell("aplay -D %s merged.wav"%soundcard) wav_buffer.insert(wav_buffer.get_end_iter(), - "Sound storing : Storage done.\n") + "Sound storing : Storage done.\n") tux.sys.wait(0.3) #-------------------------------------------------------------------------- @@ -618,7 +666,7 @@ def _funct(): index=self.get_widget("spinbutton7").get_value() tux.cmd.sound_play(int(index),0) - + thread.start_new_thread(_funct,()) #-------------------------------------------------------------------------- @@ -714,7 +762,7 @@ #-------------------------------------------------------------------------- def new(self): print "A new %s has been created" % self.__class__.__name__ - + #-------------------------------------------------------------------------- # On window destroy #-------------------------------------------------------------------------- @@ -727,7 +775,7 @@ def on_sendcommand_bt_clicked(self, widget, *args): commandst=self.get_widget("entry1").get_text() commands=commandst.split(" ") - if len(commands)<4: + if len(commands)<4: return else: commandp=[0,0,0,0] @@ -737,7 +785,7 @@ else: commandp[i]=int(commands[i]) tux.cmd.raw(int(commandp[0]),int(commandp[1]),int(commandp[2]), - int(commandp[3])) + int(commandp[3])) #------------------------------------------------------------------------------ Modified: software/tuxgi/trunk/tuxgi2.glade =================================================================== --- software/tuxgi/trunk/tuxgi2.glade 2007-06-06 08:16:20 UTC (rev 353) +++ software/tuxgi/trunk/tuxgi2.glade 2007-06-06 08:44:58 UTC (rev 354) @@ -1323,13 +1323,15 @@ <child> <widget class="GtkComboBoxEntry" id="comboboxentry1"> - <property name="width_request">187</property> + <property name="width_request">300</property> <property name="height_request">27</property> <property name="visible">True</property> <property name="items" translatable="yes">FR male FR female US male -US female</property> +US female +NL male +NL female</property> <property name="add_tearoffs">False</property> <property name="has_frame">True</property> <property name="focus_on_click">True</property> |