diff options
Diffstat (limited to 'rbutil/rbutilqt/tts.cpp')
-rw-r--r-- | rbutil/rbutilqt/tts.cpp | 159 |
1 files changed, 11 insertions, 148 deletions
diff --git a/rbutil/rbutilqt/tts.cpp b/rbutil/rbutilqt/tts.cpp index be2a20a31e..da15497c14 100644 --- a/rbutil/rbutilqt/tts.cpp +++ b/rbutil/rbutilqt/tts.cpp | |||
@@ -19,7 +19,7 @@ | |||
19 | 19 | ||
20 | #include "tts.h" | 20 | #include "tts.h" |
21 | 21 | ||
22 | #include "browsedirtree.h" | 22 | |
23 | 23 | ||
24 | static QMap<QString,QString> ttsList; | 24 | static QMap<QString,QString> ttsList; |
25 | static QMap<QString,TTSBase*> ttsCache; | 25 | static QMap<QString,TTSBase*> ttsCache; |
@@ -82,7 +82,7 @@ QStringList getTTSList() | |||
82 | /********************************************************************* | 82 | /********************************************************************* |
83 | * TTS Base | 83 | * TTS Base |
84 | **********************************************************************/ | 84 | **********************************************************************/ |
85 | TTSBase::TTSBase(QWidget *parent): QDialog(parent) | 85 | TTSBase::TTSBase(): QObject() |
86 | { | 86 | { |
87 | 87 | ||
88 | } | 88 | } |
@@ -90,7 +90,7 @@ TTSBase::TTSBase(QWidget *parent): QDialog(parent) | |||
90 | /********************************************************************* | 90 | /********************************************************************* |
91 | * General TTS Exes | 91 | * General TTS Exes |
92 | **********************************************************************/ | 92 | **********************************************************************/ |
93 | TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent) | 93 | TTSExes::TTSExes(QString name) : TTSBase() |
94 | { | 94 | { |
95 | m_name = name; | 95 | m_name = name; |
96 | 96 | ||
@@ -98,10 +98,6 @@ TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent) | |||
98 | m_TemplateMap["flite"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; | 98 | m_TemplateMap["flite"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; |
99 | m_TemplateMap["swift"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; | 99 | m_TemplateMap["swift"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; |
100 | 100 | ||
101 | ui.setupUi(this); | ||
102 | this->hide(); | ||
103 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
104 | connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); | ||
105 | } | 101 | } |
106 | 102 | ||
107 | bool TTSExes::start(QString *errStr) | 103 | bool TTSExes::start(QString *errStr) |
@@ -137,68 +133,11 @@ bool TTSExes::voice(QString text,QString wavfile) | |||
137 | 133 | ||
138 | } | 134 | } |
139 | 135 | ||
140 | |||
141 | void TTSExes::reset() | ||
142 | { | ||
143 | ui.ttspath->setText(""); | ||
144 | ui.ttsoptions->setText(""); | ||
145 | } | ||
146 | |||
147 | void TTSExes::showCfg() | 136 | void TTSExes::showCfg() |
148 | { | 137 | { |
149 | // try to get config from settings | 138 | TTSExesGui gui; |
150 | QString exepath =settings->ttsPath(m_name); | 139 | gui.setCfg(settings); |
151 | ui.ttsoptions->setText(settings->ttsOptions(m_name)); | 140 | gui.showCfg(m_name); |
152 | |||
153 | if(exepath == "") | ||
154 | { | ||
155 | |||
156 | //try autodetect tts | ||
157 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) | ||
158 | QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); | ||
159 | #elif defined(Q_OS_WIN) | ||
160 | QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); | ||
161 | #endif | ||
162 | qDebug() << path; | ||
163 | for(int i = 0; i < path.size(); i++) | ||
164 | { | ||
165 | QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; | ||
166 | #if defined(Q_OS_WIN) | ||
167 | executable += ".exe"; | ||
168 | QStringList ex = executable.split("\"", QString::SkipEmptyParts); | ||
169 | executable = ex.join(""); | ||
170 | #endif | ||
171 | qDebug() << executable; | ||
172 | if(QFileInfo(executable).isExecutable()) | ||
173 | { | ||
174 | exepath= QDir::toNativeSeparators(executable); | ||
175 | break; | ||
176 | } | ||
177 | } | ||
178 | |||
179 | } | ||
180 | |||
181 | ui.ttspath->setText(exepath); | ||
182 | |||
183 | //show dialog | ||
184 | this->exec(); | ||
185 | |||
186 | } | ||
187 | |||
188 | void TTSExes::accept(void) | ||
189 | { | ||
190 | //save settings in user config | ||
191 | settings->setTTSPath(m_name,ui.ttspath->text()); | ||
192 | settings->setTTSOptions(m_name,ui.ttsoptions->text()); | ||
193 | // sync settings | ||
194 | settings->sync(); | ||
195 | |||
196 | this->close(); | ||
197 | } | ||
198 | |||
199 | void TTSExes::reject(void) | ||
200 | { | ||
201 | this->close(); | ||
202 | } | 141 | } |
203 | 142 | ||
204 | bool TTSExes::configOk() | 143 | bool TTSExes::configOk() |
@@ -211,36 +150,14 @@ bool TTSExes::configOk() | |||
211 | return false; | 150 | return false; |
212 | } | 151 | } |
213 | 152 | ||
214 | void TTSExes::browse() | ||
215 | { | ||
216 | BrowseDirtree browser(this); | ||
217 | browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); | ||
218 | |||
219 | if(QFileInfo(ui.ttspath->text()).isDir()) | ||
220 | { | ||
221 | browser.setDir(ui.ttspath->text()); | ||
222 | } | ||
223 | if(browser.exec() == QDialog::Accepted) | ||
224 | { | ||
225 | qDebug() << browser.getSelected(); | ||
226 | QString exe = browser.getSelected(); | ||
227 | if(!QFileInfo(exe).isExecutable()) | ||
228 | return; | ||
229 | ui.ttspath->setText(exe); | ||
230 | } | ||
231 | } | ||
232 | |||
233 | /********************************************************************* | 153 | /********************************************************************* |
234 | * TTS Sapi | 154 | * TTS Sapi |
235 | **********************************************************************/ | 155 | **********************************************************************/ |
236 | TTSSapi::TTSSapi(QWidget *parent) : TTSBase(parent) | 156 | TTSSapi::TTSSapi() : TTSBase() |
237 | { | 157 | { |
238 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\""; | 158 | m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\""; |
239 | defaultLanguage ="english"; | 159 | defaultLanguage ="english"; |
240 | ui.setupUi(this); | 160 | |
241 | this->hide(); | ||
242 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
243 | connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); | ||
244 | } | 161 | } |
245 | 162 | ||
246 | 163 | ||
@@ -329,14 +246,7 @@ QStringList TTSSapi::getVoiceList(QString language) | |||
329 | return result; | 246 | return result; |
330 | } | 247 | } |
331 | 248 | ||
332 | void TTSSapi::updateVoices(QString language) | ||
333 | { | ||
334 | QStringList Voices = getVoiceList(language); | ||
335 | ui.voicecombo->clear(); | ||
336 | ui.voicecombo->addItems(Voices); | ||
337 | |||
338 | 249 | ||
339 | } | ||
340 | 250 | ||
341 | bool TTSSapi::voice(QString text,QString wavfile) | 251 | bool TTSSapi::voice(QString text,QString wavfile) |
342 | { | 252 | { |
@@ -363,58 +273,11 @@ bool TTSSapi::stop() | |||
363 | } | 273 | } |
364 | 274 | ||
365 | 275 | ||
366 | void TTSSapi::reset() | ||
367 | { | ||
368 | ui.ttsoptions->setText(""); | ||
369 | ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(defaultLanguage)); | ||
370 | } | ||
371 | |||
372 | void TTSSapi::showCfg() | 276 | void TTSSapi::showCfg() |
373 | { | 277 | { |
374 | // try to get config from settings | 278 | TTSSapiGui gui(this); |
375 | ui.ttsoptions->setText(settings->ttsOptions("sapi")); | 279 | gui.setCfg(settings); |
376 | QString selLang = settings->ttsLang("sapi"); | 280 | gui.showCfg(); |
377 | QString selVoice = settings->ttsVoice("sapi"); | ||
378 | ui.speed->setValue(settings->ttsSpeed("sapi")); | ||
379 | |||
380 | |||
381 | // fill in language combobox | ||
382 | QStringList languages = settings->allLanguages(); | ||
383 | |||
384 | languages.sort(); | ||
385 | ui.languagecombo->clear(); | ||
386 | ui.languagecombo->addItems(languages); | ||
387 | |||
388 | // set saved lang | ||
389 | ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(selLang)); | ||
390 | |||
391 | // fill in voice combobox | ||
392 | updateVoices(selLang); | ||
393 | |||
394 | // set saved lang | ||
395 | ui.voicecombo->setCurrentIndex(ui.voicecombo->findText(selVoice)); | ||
396 | |||
397 | //show dialog | ||
398 | this->exec(); | ||
399 | |||
400 | } | ||
401 | |||
402 | void TTSSapi::accept(void) | ||
403 | { | ||
404 | //save settings in user config | ||
405 | settings->setTTSOptions("sapi",ui.ttsoptions->text()); | ||
406 | settings->setTTSLang("sapi",ui.languagecombo->currentText()); | ||
407 | settings->setTTSVoice("sapi",ui.voicecombo->currentText()); | ||
408 | settings->setTTSSpeed("sapi",ui.speed->value()); | ||
409 | // sync settings | ||
410 | settings->sync(); | ||
411 | |||
412 | this->close(); | ||
413 | } | ||
414 | |||
415 | void TTSSapi::reject(void) | ||
416 | { | ||
417 | this->close(); | ||
418 | } | 281 | } |
419 | 282 | ||
420 | bool TTSSapi::configOk() | 283 | bool TTSSapi::configOk() |