X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=aoview%2Faoview_voice.c;h=24422df6d7025e7f5afd2f36d5402f9f464f5742;hp=7f4e576e88dbaaac39c95633f6da0c92bc64ef22;hb=a5782398d968e7cb11f7203afada7c216f233b3b;hpb=4ca2d910f3be689fd3c78a4f1be0555d6b1a30c1 diff --git a/aoview/aoview_voice.c b/aoview/aoview_voice.c index 7f4e576e..24422df6 100644 --- a/aoview/aoview_voice.c +++ b/aoview/aoview_voice.c @@ -24,14 +24,16 @@ FILE *aoview_flite; void aoview_voice_open(void) { + int err; + if (!aoview_flite) - aoview_flite = popen("aoview_flite", "w"); + aoview_flite = aoview_flite_start(); } void aoview_voice_close(void) { if (aoview_flite) { - pclose(aoview_flite); + aoview_flite_stop(); aoview_flite = NULL; } } @@ -65,26 +67,55 @@ void aoview_voice_speak(char *format, ...) static GtkCheckMenuItem *voice_enable; +#define ALTOS_VOICE_PATH "/apps/aoview/voice" + static void aoview_voice_enable(GtkWidget *widget, gpointer data) { - if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))) { + gboolean enabled = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); + GError *error; + GConfClient *gconf_client; + + if (enabled) { aoview_voice_open(); - aoview_voice_speak("enable voice system\n"); + aoview_voice_speak("enable voice\n"); } else { - aoview_voice_speak("disable voice system\n"); + aoview_voice_speak("disable voice\n"); aoview_voice_close(); } + gconf_client = gconf_client_get_default(); + gconf_client_set_bool(gconf_client, + ALTOS_VOICE_PATH, + enabled, + &error); } void aoview_voice_init(GladeXML *xml) { - aoview_voice_open(); + gboolean enabled; + GConfClient *gconf_client; voice_enable = GTK_CHECK_MENU_ITEM(glade_xml_get_widget(xml, "voice_enable")); assert(voice_enable); + gconf_client = gconf_client_get_default(); + enabled = TRUE; + if (gconf_client) + { + GError *error; + + error = NULL; + enabled = gconf_client_get_bool(gconf_client, + ALTOS_VOICE_PATH, + &error); + if (error) + enabled = TRUE; + } + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(voice_enable), enabled); + if (enabled) + aoview_voice_open(); + g_signal_connect(G_OBJECT(voice_enable), "toggled", G_CALLBACK(aoview_voice_enable), voice_enable);