diff options
author | Dominik Wenger <domonoky@googlemail.com> | 2008-01-29 21:54:43 +0000 |
---|---|---|
committer | Dominik Wenger <domonoky@googlemail.com> | 2008-01-29 21:54:43 +0000 |
commit | 0c66bdb2b01794448b7676a1b2b5ee5fd8c83371 (patch) | |
tree | 847eba2bd686d6639a002d602a102f36207c554e /rbutil/rbutilqt | |
parent | 51f937c2e445eaef345d3a9d15782436bb5e5c27 (diff) | |
download | rockbox-0c66bdb2b01794448b7676a1b2b5ee5fd8c83371.tar.gz rockbox-0c66bdb2b01794448b7676a1b2b5ee5fd8c83371.zip |
rbutil: fix a bug in the new settings object. Seperate the config gui from tts and encoders. (in preparation for cli interface).
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16183 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r-- | rbutil/rbutilqt/encoders.cpp | 133 | ||||
-rw-r--r-- | rbutil/rbutilqt/encoders.h | 15 | ||||
-rw-r--r-- | rbutil/rbutilqt/encodersgui.cpp | 170 | ||||
-rw-r--r-- | rbutil/rbutilqt/encodersgui.h | 77 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbsettings.cpp | 66 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pro | 4 | ||||
-rw-r--r-- | rbutil/rbutilqt/tts.cpp | 159 | ||||
-rw-r--r-- | rbutil/rbutilqt/tts.h | 35 | ||||
-rw-r--r-- | rbutil/rbutilqt/ttsgui.cpp | 193 | ||||
-rw-r--r-- | rbutil/rbutilqt/ttsgui.h | 71 |
10 files changed, 583 insertions, 340 deletions
diff --git a/rbutil/rbutilqt/encoders.cpp b/rbutil/rbutilqt/encoders.cpp index 56fcd7c80d..1399ddff75 100644 --- a/rbutil/rbutilqt/encoders.cpp +++ b/rbutil/rbutilqt/encoders.cpp | |||
@@ -20,6 +20,9 @@ | |||
20 | #include "encoders.h" | 20 | #include "encoders.h" |
21 | #include "browsedirtree.h" | 21 | #include "browsedirtree.h" |
22 | 22 | ||
23 | #ifndef CONSOLE | ||
24 | #include "encodersgui.h" | ||
25 | #endif | ||
23 | 26 | ||
24 | static QMap<QString,QString> encoderList; | 27 | static QMap<QString,QString> encoderList; |
25 | static QMap<QString,EncBase*> encoderCache; | 28 | static QMap<QString,EncBase*> encoderCache; |
@@ -92,11 +95,6 @@ EncExes::EncExes(QString name,QWidget *parent) : EncBase(parent) | |||
92 | m_name = name; | 95 | m_name = name; |
93 | 96 | ||
94 | m_TemplateMap["lame"] = "\"%exe\" %options \"%input\" \"%output\""; | 97 | m_TemplateMap["lame"] = "\"%exe\" %options \"%input\" \"%output\""; |
95 | |||
96 | ui.setupUi(this); | ||
97 | this->hide(); | ||
98 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
99 | connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); | ||
100 | } | 98 | } |
101 | 99 | ||
102 | bool EncExes::start() | 100 | bool EncExes::start() |
@@ -131,67 +129,13 @@ bool EncExes::encode(QString input,QString output) | |||
131 | return true; | 129 | return true; |
132 | } | 130 | } |
133 | 131 | ||
134 | void EncExes::reset() | ||
135 | { | ||
136 | ui.encoderpath->setText(""); | ||
137 | ui.encoderoptions->setText(""); | ||
138 | } | ||
139 | |||
140 | void EncExes::showCfg() | ||
141 | { | ||
142 | // try to get config from settings | ||
143 | QString exepath =settings->encoderPath(m_name); | ||
144 | ui.encoderoptions->setText(settings->encoderOptions(m_name)); | ||
145 | |||
146 | if(exepath == "") | ||
147 | { | ||
148 | |||
149 | // try to autodetect encoder | ||
150 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) | ||
151 | QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); | ||
152 | #elif defined(Q_OS_WIN) | ||
153 | QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); | ||
154 | #endif | ||
155 | qDebug() << path; | ||
156 | |||
157 | for(int i = 0; i < path.size(); i++) | ||
158 | { | ||
159 | QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; | ||
160 | #if defined(Q_OS_WIN) | ||
161 | executable += ".exe"; | ||
162 | QStringList ex = executable.split("\"", QString::SkipEmptyParts); | ||
163 | executable = ex.join(""); | ||
164 | #endif | ||
165 | if(QFileInfo(executable).isExecutable()) | ||
166 | { | ||
167 | qDebug() << "found:" << executable; | ||
168 | exepath = QDir::toNativeSeparators(executable); | ||
169 | break; | ||
170 | } | ||
171 | } | ||
172 | } | ||
173 | |||
174 | ui.encoderpath->setText(exepath); | ||
175 | |||
176 | //show dialog | ||
177 | this->exec(); | ||
178 | |||
179 | } | ||
180 | 132 | ||
181 | void EncExes::accept(void) | ||
182 | { | ||
183 | //save settings in user config | ||
184 | settings->setEncoderPath(m_name,ui.encoderpath->text()); | ||
185 | settings->setEncoderOptions(m_name,ui.encoderoptions->text()); | ||
186 | |||
187 | // sync settings | ||
188 | settings->sync(); | ||
189 | this->close(); | ||
190 | } | ||
191 | 133 | ||
192 | void EncExes::reject(void) | 134 | void EncExes::showCfg() |
193 | { | 135 | { |
194 | this->close(); | 136 | EncExesGui gui; |
137 | gui.setCfg(settings); | ||
138 | gui.showCfg(m_name); | ||
195 | } | 139 | } |
196 | 140 | ||
197 | bool EncExes::configOk() | 141 | bool EncExes::configOk() |
@@ -204,34 +148,14 @@ bool EncExes::configOk() | |||
204 | return false; | 148 | return false; |
205 | } | 149 | } |
206 | 150 | ||
207 | void EncExes::browse() | ||
208 | { | ||
209 | BrowseDirtree browser(this); | ||
210 | browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); | ||
211 | 151 | ||
212 | if(QFileInfo(ui.encoderpath->text()).isDir()) | ||
213 | { | ||
214 | browser.setDir(ui.encoderpath->text()); | ||
215 | } | ||
216 | if(browser.exec() == QDialog::Accepted) | ||
217 | { | ||
218 | qDebug() << browser.getSelected(); | ||
219 | QString exe = browser.getSelected(); | ||
220 | if(!QFileInfo(exe).isExecutable()) | ||
221 | return; | ||
222 | ui.encoderpath->setText(exe); | ||
223 | } | ||
224 | } | ||
225 | 152 | ||
226 | /********************************************************************* | 153 | /********************************************************************* |
227 | * RB SPEEX ENCODER | 154 | * RB SPEEX ENCODER |
228 | **********************************************************************/ | 155 | **********************************************************************/ |
229 | EncRbSpeex::EncRbSpeex(QWidget *parent) : EncBase(parent) | 156 | EncRbSpeex::EncRbSpeex(QWidget *parent) : EncBase(parent) |
230 | { | 157 | { |
231 | ui.setupUi(this); | 158 | |
232 | this->hide(); | ||
233 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
234 | |||
235 | defaultQuality = 8.f; | 159 | defaultQuality = 8.f; |
236 | defaultVolume = 1.f; | 160 | defaultVolume = 1.f; |
237 | defaultComplexity = 10; | 161 | defaultComplexity = 10; |
@@ -282,49 +206,14 @@ bool EncRbSpeex::encode(QString input,QString output) | |||
282 | return true; | 206 | return true; |
283 | } | 207 | } |
284 | 208 | ||
285 | void EncRbSpeex::reset() | ||
286 | { | ||
287 | ui.volume->setValue(defaultVolume); | ||
288 | ui.quality->setValue(defaultQuality); | ||
289 | ui.complexity->setValue(defaultComplexity); | ||
290 | ui.narrowband->setChecked(Qt::Unchecked); | ||
291 | } | ||
292 | 209 | ||
293 | void EncRbSpeex::showCfg() | 210 | void EncRbSpeex::showCfg() |
294 | { | 211 | { |
295 | //fill in the usersettings | 212 | EncRbSpeexGui gui; |
296 | ui.volume->setValue(settings->encoderVolume("rbspeex")); | 213 | gui.setCfg(settings); |
297 | ui.quality->setValue(settings->encoderQuality("rbspeex")); | 214 | gui.showCfg(defaultQuality,defaultVolume,defaultComplexity,defaultBand); |
298 | ui.complexity->setValue(settings->encoderComplexity("rbspeex")); | ||
299 | |||
300 | if(settings->encoderNarrowband("rbspeex")) | ||
301 | ui.narrowband->setCheckState(Qt::Checked); | ||
302 | else | ||
303 | ui.narrowband->setCheckState(Qt::Unchecked); | ||
304 | |||
305 | //show dialog | ||
306 | this->exec(); | ||
307 | } | ||
308 | |||
309 | void EncRbSpeex::accept(void) | ||
310 | { | ||
311 | //save settings in user config | ||
312 | settings->setEncoderVolume("rbspeex",ui.volume->value()); | ||
313 | settings->setEncoderQuality("rbspeex",ui.quality->value()); | ||
314 | settings->setEncoderComplexity("rbspeex",ui.complexity->value()); | ||
315 | settings->setEncoderNarrowband("rbspeex",ui.narrowband->isChecked() ? true : false); | ||
316 | |||
317 | // sync settings | ||
318 | settings->sync(); | ||
319 | this->close(); | ||
320 | } | 215 | } |
321 | 216 | ||
322 | void EncRbSpeex::reject(void) | ||
323 | { | ||
324 | this->close(); | ||
325 | } | ||
326 | |||
327 | |||
328 | bool EncRbSpeex::configOk() | 217 | bool EncRbSpeex::configOk() |
329 | { | 218 | { |
330 | bool result=true; | 219 | bool result=true; |
diff --git a/rbutil/rbutilqt/encoders.h b/rbutil/rbutilqt/encoders.h index ab59e52060..7a234a3b6f 100644 --- a/rbutil/rbutilqt/encoders.h +++ b/rbutil/rbutilqt/encoders.h | |||
@@ -22,8 +22,6 @@ | |||
22 | 22 | ||
23 | #include <QtGui> | 23 | #include <QtGui> |
24 | 24 | ||
25 | #include "ui_rbspeexcfgfrm.h" | ||
26 | #include "ui_encexescfgfrm.h" | ||
27 | #include "rbsettings.h" | 25 | #include "rbsettings.h" |
28 | 26 | ||
29 | extern "C" | 27 | extern "C" |
@@ -78,14 +76,7 @@ public: | |||
78 | virtual void showCfg(); | 76 | virtual void showCfg(); |
79 | virtual bool configOk(); | 77 | virtual bool configOk(); |
80 | 78 | ||
81 | public slots: | ||
82 | virtual void accept(void); | ||
83 | virtual void reject(void); | ||
84 | virtual void reset(void); | ||
85 | void browse(void); | ||
86 | |||
87 | private: | 79 | private: |
88 | Ui::EncExesCfgFrm ui; | ||
89 | QString m_name; | 80 | QString m_name; |
90 | QString m_EncExec; | 81 | QString m_EncExec; |
91 | QString m_EncOpts; | 82 | QString m_EncOpts; |
@@ -104,13 +95,7 @@ public: | |||
104 | virtual void showCfg(); | 95 | virtual void showCfg(); |
105 | virtual bool configOk(); | 96 | virtual bool configOk(); |
106 | 97 | ||
107 | public slots: | ||
108 | virtual void accept(void); | ||
109 | virtual void reject(void); | ||
110 | virtual void reset(void); | ||
111 | |||
112 | private: | 98 | private: |
113 | Ui::RbSpeexCfgFrm ui; | ||
114 | float quality; | 99 | float quality; |
115 | float volume; | 100 | float volume; |
116 | int complexity; | 101 | int complexity; |
diff --git a/rbutil/rbutilqt/encodersgui.cpp b/rbutil/rbutilqt/encodersgui.cpp new file mode 100644 index 0000000000..76d0acf5c8 --- /dev/null +++ b/rbutil/rbutilqt/encodersgui.cpp | |||
@@ -0,0 +1,170 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2007 by Dominik Wenger | ||
10 | * $Id: encodersgui.cpp 15212 2007-10-19 21:49:07Z domonoky $ | ||
11 | * | ||
12 | * All files in this archive are subject to the GNU General Public License. | ||
13 | * See the file COPYING in the source tree root for full license agreement. | ||
14 | * | ||
15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | * KIND, either express or implied. | ||
17 | * | ||
18 | ****************************************************************************/ | ||
19 | |||
20 | #include "encodersgui.h" | ||
21 | |||
22 | #include "rbsettings.h" | ||
23 | #include "browsedirtree.h" | ||
24 | |||
25 | EncExesGui::EncExesGui(QDialog* parent) : QDialog(parent) | ||
26 | { | ||
27 | ui.setupUi(this); | ||
28 | this->hide(); | ||
29 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
30 | connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); | ||
31 | } | ||
32 | |||
33 | void EncExesGui::showCfg(QString name) | ||
34 | { | ||
35 | m_name = name; | ||
36 | // try to get config from settings | ||
37 | QString exepath =settings->encoderPath(m_name); | ||
38 | ui.encoderoptions->setText(settings->encoderOptions(m_name)); | ||
39 | |||
40 | if(exepath == "") | ||
41 | { | ||
42 | |||
43 | // try to autodetect encoder | ||
44 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) | ||
45 | QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); | ||
46 | #elif defined(Q_OS_WIN) | ||
47 | QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); | ||
48 | #endif | ||
49 | qDebug() << path; | ||
50 | |||
51 | for(int i = 0; i < path.size(); i++) | ||
52 | { | ||
53 | QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; | ||
54 | #if defined(Q_OS_WIN) | ||
55 | executable += ".exe"; | ||
56 | QStringList ex = executable.split("\"", QString::SkipEmptyParts); | ||
57 | executable = ex.join(""); | ||
58 | #endif | ||
59 | if(QFileInfo(executable).isExecutable()) | ||
60 | { | ||
61 | qDebug() << "found:" << executable; | ||
62 | exepath = QDir::toNativeSeparators(executable); | ||
63 | break; | ||
64 | } | ||
65 | } | ||
66 | } | ||
67 | |||
68 | ui.encoderpath->setText(exepath); | ||
69 | |||
70 | //show dialog | ||
71 | this->exec(); | ||
72 | |||
73 | } | ||
74 | |||
75 | void EncExesGui::accept(void) | ||
76 | { | ||
77 | //save settings in user config | ||
78 | settings->setEncoderPath(m_name,ui.encoderpath->text()); | ||
79 | settings->setEncoderOptions(m_name,ui.encoderoptions->text()); | ||
80 | |||
81 | // sync settings | ||
82 | settings->sync(); | ||
83 | this->close(); | ||
84 | } | ||
85 | |||
86 | void EncExesGui::reject(void) | ||
87 | { | ||
88 | this->close(); | ||
89 | } | ||
90 | |||
91 | void EncExesGui::reset() | ||
92 | { | ||
93 | ui.encoderpath->setText(""); | ||
94 | ui.encoderoptions->setText(""); | ||
95 | } | ||
96 | |||
97 | void EncExesGui::browse() | ||
98 | { | ||
99 | BrowseDirtree browser(this); | ||
100 | browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); | ||
101 | |||
102 | if(QFileInfo(ui.encoderpath->text()).isDir()) | ||
103 | { | ||
104 | browser.setDir(ui.encoderpath->text()); | ||
105 | } | ||
106 | if(browser.exec() == QDialog::Accepted) | ||
107 | { | ||
108 | qDebug() << browser.getSelected(); | ||
109 | QString exe = browser.getSelected(); | ||
110 | if(!QFileInfo(exe).isExecutable()) | ||
111 | return; | ||
112 | ui.encoderpath->setText(exe); | ||
113 | } | ||
114 | } | ||
115 | |||
116 | |||
117 | EncRbSpeexGui::EncRbSpeexGui(QDialog* parent) : QDialog(parent) | ||
118 | { | ||
119 | ui.setupUi(this); | ||
120 | this->hide(); | ||
121 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
122 | |||
123 | } | ||
124 | |||
125 | void EncRbSpeexGui::showCfg(float defQ,float defV,float defC, bool defB) | ||
126 | { | ||
127 | defaultQuality =defQ; | ||
128 | defaultVolume = defV; | ||
129 | defaultComplexity = defC; | ||
130 | defaultBand =defB; | ||
131 | |||
132 | //fill in the usersettings | ||
133 | ui.volume->setValue(settings->encoderVolume("rbspeex")); | ||
134 | ui.quality->setValue(settings->encoderQuality("rbspeex")); | ||
135 | ui.complexity->setValue(settings->encoderComplexity("rbspeex")); | ||
136 | |||
137 | if(settings->encoderNarrowband("rbspeex")) | ||
138 | ui.narrowband->setCheckState(Qt::Checked); | ||
139 | else | ||
140 | ui.narrowband->setCheckState(Qt::Unchecked); | ||
141 | |||
142 | //show dialog | ||
143 | this->exec(); | ||
144 | } | ||
145 | |||
146 | void EncRbSpeexGui::accept(void) | ||
147 | { | ||
148 | //save settings in user config | ||
149 | settings->setEncoderVolume("rbspeex",ui.volume->value()); | ||
150 | settings->setEncoderQuality("rbspeex",ui.quality->value()); | ||
151 | settings->setEncoderComplexity("rbspeex",ui.complexity->value()); | ||
152 | settings->setEncoderNarrowband("rbspeex",ui.narrowband->isChecked() ? true : false); | ||
153 | |||
154 | // sync settings | ||
155 | settings->sync(); | ||
156 | this->close(); | ||
157 | } | ||
158 | |||
159 | void EncRbSpeexGui::reject(void) | ||
160 | { | ||
161 | this->close(); | ||
162 | } | ||
163 | |||
164 | void EncRbSpeexGui::reset() | ||
165 | { | ||
166 | ui.volume->setValue(defaultVolume); | ||
167 | ui.quality->setValue(defaultQuality); | ||
168 | ui.complexity->setValue(defaultComplexity); | ||
169 | ui.narrowband->setChecked(Qt::Unchecked); | ||
170 | } | ||
diff --git a/rbutil/rbutilqt/encodersgui.h b/rbutil/rbutilqt/encodersgui.h new file mode 100644 index 0000000000..f889823ac8 --- /dev/null +++ b/rbutil/rbutilqt/encodersgui.h | |||
@@ -0,0 +1,77 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2007 by Dominik Wenger | ||
10 | * $Id: encodersgui.h 15212 2007-10-19 21:49:07Z domonoky $ | ||
11 | * | ||
12 | * All files in this archive are subject to the GNU General Public License. | ||
13 | * See the file COPYING in the source tree root for full license agreement. | ||
14 | * | ||
15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | * KIND, either express or implied. | ||
17 | * | ||
18 | ****************************************************************************/ | ||
19 | |||
20 | #ifndef ENCODERSGUI_H | ||
21 | #define ENCODERSGUI_H | ||
22 | |||
23 | #include <QtGui> | ||
24 | |||
25 | class RbSettings; | ||
26 | |||
27 | #include "ui_rbspeexcfgfrm.h" | ||
28 | #include "ui_encexescfgfrm.h" | ||
29 | |||
30 | |||
31 | class EncExesGui : public QDialog | ||
32 | { | ||
33 | Q_OBJECT | ||
34 | public: | ||
35 | EncExesGui(QDialog* parent = NULL); | ||
36 | |||
37 | void showCfg(QString m_name); | ||
38 | void setCfg(RbSettings* sett){settings = sett;} | ||
39 | |||
40 | public slots: | ||
41 | virtual void accept(void); | ||
42 | virtual void reject(void); | ||
43 | virtual void reset(void); | ||
44 | void browse(void); | ||
45 | |||
46 | private: | ||
47 | Ui::EncExesCfgFrm ui; | ||
48 | RbSettings* settings; | ||
49 | QString m_name; | ||
50 | }; | ||
51 | |||
52 | class EncRbSpeexGui : public QDialog | ||
53 | { | ||
54 | Q_OBJECT | ||
55 | public: | ||
56 | EncRbSpeexGui(QDialog* parent = NULL); | ||
57 | |||
58 | void showCfg(float defQ,float defV,float defC, bool defB); | ||
59 | void setCfg(RbSettings* sett){settings = sett;} | ||
60 | |||
61 | public slots: | ||
62 | virtual void accept(void); | ||
63 | virtual void reject(void); | ||
64 | virtual void reset(void); | ||
65 | |||
66 | private: | ||
67 | Ui::RbSpeexCfgFrm ui; | ||
68 | RbSettings* settings; | ||
69 | float defaultQuality; | ||
70 | float defaultVolume; | ||
71 | int defaultComplexity; | ||
72 | bool defaultBand; | ||
73 | }; | ||
74 | |||
75 | |||
76 | |||
77 | #endif | ||
diff --git a/rbutil/rbutilqt/rbsettings.cpp b/rbutil/rbutilqt/rbsettings.cpp index 736921ce81..2dd19965b9 100644 --- a/rbutil/rbutilqt/rbsettings.cpp +++ b/rbutil/rbutilqt/rbsettings.cpp | |||
@@ -272,82 +272,82 @@ int RbSettings::wavtrimTh() | |||
272 | 272 | ||
273 | QString RbSettings::ttsPath(QString tts) | 273 | QString RbSettings::ttsPath(QString tts) |
274 | { | 274 | { |
275 | devices->beginGroup(tts); | 275 | userSettings->beginGroup(tts); |
276 | QString path = devices->value("ttspath").toString(); | 276 | QString path = userSettings->value("ttspath").toString(); |
277 | devices->endGroup(); | 277 | userSettings->endGroup(); |
278 | return path; | 278 | return path; |
279 | 279 | ||
280 | } | 280 | } |
281 | QString RbSettings::ttsOptions(QString tts) | 281 | QString RbSettings::ttsOptions(QString tts) |
282 | { | 282 | { |
283 | devices->beginGroup(tts); | 283 | userSettings->beginGroup(tts); |
284 | QString op = devices->value("ttsoptions").toString(); | 284 | QString op = userSettings->value("ttsoptions").toString(); |
285 | devices->endGroup(); | 285 | userSettings->endGroup(); |
286 | return op; | 286 | return op; |
287 | } | 287 | } |
288 | QString RbSettings::ttsVoice(QString tts) | 288 | QString RbSettings::ttsVoice(QString tts) |
289 | { | 289 | { |
290 | devices->beginGroup(tts); | 290 | userSettings->beginGroup(tts); |
291 | QString op = devices->value("ttsvoice").toString(); | 291 | QString op = userSettings->value("ttsvoice").toString(); |
292 | devices->endGroup(); | 292 | userSettings->endGroup(); |
293 | return op; | 293 | return op; |
294 | } | 294 | } |
295 | int RbSettings::ttsSpeed(QString tts) | 295 | int RbSettings::ttsSpeed(QString tts) |
296 | { | 296 | { |
297 | devices->beginGroup(tts); | 297 | userSettings->beginGroup(tts); |
298 | int sp = devices->value("ttsspeed",0).toInt(); | 298 | int sp = userSettings->value("ttsspeed",0).toInt(); |
299 | devices->endGroup(); | 299 | userSettings->endGroup(); |
300 | return sp; | 300 | return sp; |
301 | } | 301 | } |
302 | QString RbSettings::ttsLang(QString tts) | 302 | QString RbSettings::ttsLang(QString tts) |
303 | { | 303 | { |
304 | devices->beginGroup(tts); | 304 | userSettings->beginGroup(tts); |
305 | QString op = devices->value("ttslanguage").toString(); | 305 | QString op = userSettings->value("ttslanguage").toString(); |
306 | devices->endGroup(); | 306 | userSettings->endGroup(); |
307 | return op; | 307 | return op; |
308 | } | 308 | } |
309 | 309 | ||
310 | QString RbSettings::encoderPath(QString enc) | 310 | QString RbSettings::encoderPath(QString enc) |
311 | { | 311 | { |
312 | devices->beginGroup(enc); | 312 | userSettings->beginGroup(enc); |
313 | QString path = devices->value("encoderpath").toString(); | 313 | QString path = userSettings->value("encoderpath").toString(); |
314 | devices->endGroup(); | 314 | userSettings->endGroup(); |
315 | return path; | 315 | return path; |
316 | } | 316 | } |
317 | QString RbSettings::encoderOptions(QString enc) | 317 | QString RbSettings::encoderOptions(QString enc) |
318 | { | 318 | { |
319 | devices->beginGroup(enc); | 319 | userSettings->beginGroup(enc); |
320 | QString op = devices->value("encoderpath").toString(); | 320 | QString op = userSettings->value("encoderpath").toString(); |
321 | devices->endGroup(); | 321 | userSettings->endGroup(); |
322 | return op; | 322 | return op; |
323 | } | 323 | } |
324 | 324 | ||
325 | double RbSettings::encoderQuality(QString enc) | 325 | double RbSettings::encoderQuality(QString enc) |
326 | { | 326 | { |
327 | devices->beginGroup(enc); | 327 | userSettings->beginGroup(enc); |
328 | double q = devices->value("quality",8.f).toDouble(); | 328 | double q =userSettings->value("quality",8.f).toDouble(); |
329 | devices->endGroup(); | 329 | userSettings->endGroup(); |
330 | return q; | 330 | return q; |
331 | } | 331 | } |
332 | int RbSettings::encoderComplexity(QString enc) | 332 | int RbSettings::encoderComplexity(QString enc) |
333 | { | 333 | { |
334 | devices->beginGroup(enc); | 334 | userSettings->beginGroup(enc); |
335 | int c = devices->value("complexity",1.f).toInt(); | 335 | int c = userSettings->value("complexity",1.f).toInt(); |
336 | devices->endGroup(); | 336 | userSettings->endGroup(); |
337 | return c; | 337 | return c; |
338 | } | 338 | } |
339 | double RbSettings::encoderVolume(QString enc) | 339 | double RbSettings::encoderVolume(QString enc) |
340 | { | 340 | { |
341 | devices->beginGroup(enc); | 341 | userSettings->beginGroup(enc); |
342 | double v = devices->value("volume",10).toDouble(); | 342 | double v = userSettings->value("volume",10).toDouble(); |
343 | devices->endGroup(); | 343 | userSettings->endGroup(); |
344 | return v; | 344 | return v; |
345 | } | 345 | } |
346 | bool RbSettings::encoderNarrowband(QString enc) | 346 | bool RbSettings::encoderNarrowband(QString enc) |
347 | { | 347 | { |
348 | devices->beginGroup(enc); | 348 | userSettings->beginGroup(enc); |
349 | bool nb = devices->value("narrowband",false).toBool(); | 349 | bool nb = userSettings->value("narrowband",false).toBool(); |
350 | devices->endGroup(); | 350 | userSettings->endGroup(); |
351 | return nb; | 351 | return nb; |
352 | } | 352 | } |
353 | 353 | ||
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro index 252d116a86..d64edb1086 100644 --- a/rbutil/rbutilqt/rbutilqt.pro +++ b/rbutil/rbutilqt/rbutilqt.pro | |||
@@ -48,7 +48,9 @@ SOURCES += rbutilqt.cpp \ | |||
48 | browseof.cpp \ | 48 | browseof.cpp \ |
49 | preview.cpp \ | 49 | preview.cpp \ |
50 | encoders.cpp \ | 50 | encoders.cpp \ |
51 | encodersgui.cpp \ | ||
51 | tts.cpp \ | 52 | tts.cpp \ |
53 | ttsgui.cpp \ | ||
52 | ../../tools/wavtrim.c \ | 54 | ../../tools/wavtrim.c \ |
53 | ../../tools/voicefont.c \ | 55 | ../../tools/voicefont.c \ |
54 | voicefile.cpp \ | 56 | voicefile.cpp \ |
@@ -91,7 +93,9 @@ HEADERS += rbutilqt.h \ | |||
91 | browseof.h \ | 93 | browseof.h \ |
92 | preview.h \ | 94 | preview.h \ |
93 | encoders.h \ | 95 | encoders.h \ |
96 | encodersgui.h \ | ||
94 | tts.h \ | 97 | tts.h \ |
98 | ttsgui.h \ | ||
95 | ../../tools/wavtrim.h \ | 99 | ../../tools/wavtrim.h \ |
96 | ../../tools/voicefont.h \ | 100 | ../../tools/voicefont.h \ |
97 | voicefile.h \ | 101 | voicefile.h \ |
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() |
diff --git a/rbutil/rbutilqt/tts.h b/rbutil/rbutilqt/tts.h index 90c402d8cc..9c73bfa5e5 100644 --- a/rbutil/rbutilqt/tts.h +++ b/rbutil/rbutilqt/tts.h | |||
@@ -21,11 +21,13 @@ | |||
21 | #ifndef TTS_H | 21 | #ifndef TTS_H |
22 | #define TTS_H | 22 | #define TTS_H |
23 | 23 | ||
24 | #include "ui_ttsexescfgfrm.h" | 24 | |
25 | #include "ui_sapicfgfrm.h" | ||
26 | #include "rbsettings.h" | 25 | #include "rbsettings.h" |
27 | #include <QtGui> | 26 | #include <QtGui> |
28 | 27 | ||
28 | #ifndef CONSOLE | ||
29 | #include "ttsgui.h" | ||
30 | #endif | ||
29 | 31 | ||
30 | class TTSBase; | 32 | class TTSBase; |
31 | 33 | ||
@@ -37,11 +39,11 @@ TTSBase* getTTS(QString ttsname); | |||
37 | QStringList getTTSList(); | 39 | QStringList getTTSList(); |
38 | 40 | ||
39 | 41 | ||
40 | class TTSBase : public QDialog | 42 | class TTSBase : public QObject |
41 | { | 43 | { |
42 | Q_OBJECT | 44 | Q_OBJECT |
43 | public: | 45 | public: |
44 | TTSBase(QWidget *parent ); | 46 | TTSBase(); |
45 | virtual bool voice(QString text,QString wavfile) {return false;} | 47 | virtual bool voice(QString text,QString wavfile) {return false;} |
46 | virtual bool start(QString *errStr){return false;} | 48 | virtual bool start(QString *errStr){return false;} |
47 | virtual bool stop(){return false;} | 49 | virtual bool stop(){return false;} |
@@ -63,23 +65,16 @@ class TTSSapi : public TTSBase | |||
63 | { | 65 | { |
64 | Q_OBJECT | 66 | Q_OBJECT |
65 | public: | 67 | public: |
66 | TTSSapi(QWidget *parent = NULL); | 68 | TTSSapi(); |
67 | virtual bool voice(QString text,QString wavfile); | 69 | virtual bool voice(QString text,QString wavfile); |
68 | virtual bool start(QString *errStr); | 70 | virtual bool start(QString *errStr); |
69 | virtual bool stop(); | 71 | virtual bool stop(); |
70 | virtual void showCfg(); | 72 | virtual void showCfg(); |
71 | virtual bool configOk(); | 73 | virtual bool configOk(); |
72 | 74 | ||
73 | public slots: | 75 | QStringList getVoiceList(QString language); |
74 | virtual void accept(void); | ||
75 | virtual void reject(void); | ||
76 | virtual void reset(void); | ||
77 | |||
78 | void updateVoices(QString language); | ||
79 | private: | 76 | private: |
80 | QStringList getVoiceList(QString language); | 77 | |
81 | |||
82 | Ui::SapiCfgFrm ui; | ||
83 | QProcess* voicescript; | 78 | QProcess* voicescript; |
84 | 79 | ||
85 | QString defaultLanguage; | 80 | QString defaultLanguage; |
@@ -97,21 +92,17 @@ class TTSExes : public TTSBase | |||
97 | { | 92 | { |
98 | Q_OBJECT | 93 | Q_OBJECT |
99 | public: | 94 | public: |
100 | TTSExes(QString name,QWidget *parent = NULL); | 95 | TTSExes(QString name); |
101 | virtual bool voice(QString text,QString wavfile); | 96 | virtual bool voice(QString text,QString wavfile); |
102 | virtual bool start(QString *errStr); | 97 | virtual bool start(QString *errStr); |
103 | virtual bool stop() {return true;} | 98 | virtual bool stop() {return true;} |
104 | virtual void showCfg(); | 99 | virtual void showCfg(); |
105 | virtual bool configOk(); | 100 | virtual bool configOk(); |
106 | 101 | ||
107 | public slots: | 102 | |
108 | virtual void accept(void); | ||
109 | virtual void reject(void); | ||
110 | virtual void reset(void); | ||
111 | void browse(void); | ||
112 | 103 | ||
113 | private: | 104 | private: |
114 | Ui::TTSExesCfgFrm ui; | 105 | |
115 | QString m_name; | 106 | QString m_name; |
116 | QString m_TTSexec; | 107 | QString m_TTSexec; |
117 | QString m_TTSOpts; | 108 | QString m_TTSOpts; |
diff --git a/rbutil/rbutilqt/ttsgui.cpp b/rbutil/rbutilqt/ttsgui.cpp new file mode 100644 index 0000000000..76488c5411 --- /dev/null +++ b/rbutil/rbutilqt/ttsgui.cpp | |||
@@ -0,0 +1,193 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2007 by Dominik Wenger | ||
10 | * $Id: tts.cpp 15212 2007-10-19 21:49:07Z domonoky $ | ||
11 | * | ||
12 | * All files in this archive are subject to the GNU General Public License. | ||
13 | * See the file COPYING in the source tree root for full license agreement. | ||
14 | * | ||
15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | * KIND, either express or implied. | ||
17 | * | ||
18 | ****************************************************************************/ | ||
19 | |||
20 | #include "ttsgui.h" | ||
21 | |||
22 | #include "rbsettings.h" | ||
23 | #include "tts.h" | ||
24 | #include "browsedirtree.h" | ||
25 | |||
26 | TTSSapiGui::TTSSapiGui(TTSSapi* sapi,QDialog* parent) : QDialog(parent) | ||
27 | { | ||
28 | m_sapi= sapi; | ||
29 | ui.setupUi(this); | ||
30 | this->hide(); | ||
31 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
32 | connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); | ||
33 | |||
34 | } | ||
35 | |||
36 | void TTSSapiGui::showCfg() | ||
37 | { | ||
38 | // try to get config from settings | ||
39 | ui.ttsoptions->setText(settings->ttsOptions("sapi")); | ||
40 | QString selLang = settings->ttsLang("sapi"); | ||
41 | QString selVoice = settings->ttsVoice("sapi"); | ||
42 | ui.speed->setValue(settings->ttsSpeed("sapi")); | ||
43 | |||
44 | |||
45 | // fill in language combobox | ||
46 | QStringList languages = settings->allLanguages(); | ||
47 | |||
48 | languages.sort(); | ||
49 | ui.languagecombo->clear(); | ||
50 | ui.languagecombo->addItems(languages); | ||
51 | |||
52 | // set saved lang | ||
53 | ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(selLang)); | ||
54 | |||
55 | // fill in voice combobox | ||
56 | updateVoices(selLang); | ||
57 | |||
58 | // set saved lang | ||
59 | ui.voicecombo->setCurrentIndex(ui.voicecombo->findText(selVoice)); | ||
60 | |||
61 | //show dialog | ||
62 | this->exec(); | ||
63 | |||
64 | } | ||
65 | |||
66 | |||
67 | void TTSSapiGui::reset() | ||
68 | { | ||
69 | ui.ttsoptions->setText(""); | ||
70 | ui.languagecombo->setCurrentIndex(ui.languagecombo->findText("english")); | ||
71 | } | ||
72 | |||
73 | |||
74 | |||
75 | void TTSSapiGui::accept(void) | ||
76 | { | ||
77 | //save settings in user config | ||
78 | settings->setTTSOptions("sapi",ui.ttsoptions->text()); | ||
79 | settings->setTTSLang("sapi",ui.languagecombo->currentText()); | ||
80 | settings->setTTSVoice("sapi",ui.voicecombo->currentText()); | ||
81 | settings->setTTSSpeed("sapi",ui.speed->value()); | ||
82 | // sync settings | ||
83 | settings->sync(); | ||
84 | |||
85 | this->close(); | ||
86 | } | ||
87 | |||
88 | void TTSSapiGui::reject(void) | ||
89 | { | ||
90 | this->close(); | ||
91 | } | ||
92 | |||
93 | void TTSSapiGui::updateVoices(QString language) | ||
94 | { | ||
95 | QStringList Voices = m_sapi->getVoiceList(language); | ||
96 | ui.voicecombo->clear(); | ||
97 | ui.voicecombo->addItems(Voices); | ||
98 | |||
99 | } | ||
100 | |||
101 | TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent) | ||
102 | { | ||
103 | ui.setupUi(this); | ||
104 | this->hide(); | ||
105 | connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); | ||
106 | connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); | ||
107 | } | ||
108 | |||
109 | |||
110 | void TTSExesGui::reset() | ||
111 | { | ||
112 | ui.ttspath->setText(""); | ||
113 | ui.ttsoptions->setText(""); | ||
114 | } | ||
115 | |||
116 | void TTSExesGui::showCfg(QString name) | ||
117 | { | ||
118 | m_name = name; | ||
119 | // try to get config from settings | ||
120 | QString exepath =settings->ttsPath(m_name); | ||
121 | ui.ttsoptions->setText(settings->ttsOptions(m_name)); | ||
122 | |||
123 | if(exepath == "") | ||
124 | { | ||
125 | |||
126 | //try autodetect tts | ||
127 | #if defined(Q_OS_LINUX) || defined(Q_OS_MACX) | ||
128 | QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); | ||
129 | #elif defined(Q_OS_WIN) | ||
130 | QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); | ||
131 | #endif | ||
132 | qDebug() << path; | ||
133 | for(int i = 0; i < path.size(); i++) | ||
134 | { | ||
135 | QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; | ||
136 | #if defined(Q_OS_WIN) | ||
137 | executable += ".exe"; | ||
138 | QStringList ex = executable.split("\"", QString::SkipEmptyParts); | ||
139 | executable = ex.join(""); | ||
140 | #endif | ||
141 | qDebug() << executable; | ||
142 | if(QFileInfo(executable).isExecutable()) | ||
143 | { | ||
144 | exepath= QDir::toNativeSeparators(executable); | ||
145 | break; | ||
146 | } | ||
147 | } | ||
148 | |||
149 | } | ||
150 | |||
151 | ui.ttspath->setText(exepath); | ||
152 | |||
153 | //show dialog | ||
154 | this->exec(); | ||
155 | |||
156 | } | ||
157 | |||
158 | void TTSExesGui::accept(void) | ||
159 | { | ||
160 | //save settings in user config | ||
161 | settings->setTTSPath(m_name,ui.ttspath->text()); | ||
162 | settings->setTTSOptions(m_name,ui.ttsoptions->text()); | ||
163 | // sync settings | ||
164 | settings->sync(); | ||
165 | |||
166 | this->close(); | ||
167 | } | ||
168 | |||
169 | void TTSExesGui::reject(void) | ||
170 | { | ||
171 | this->close(); | ||
172 | } | ||
173 | |||
174 | |||
175 | void TTSExesGui::browse() | ||
176 | { | ||
177 | BrowseDirtree browser(this); | ||
178 | browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); | ||
179 | |||
180 | if(QFileInfo(ui.ttspath->text()).isDir()) | ||
181 | { | ||
182 | browser.setDir(ui.ttspath->text()); | ||
183 | } | ||
184 | if(browser.exec() == QDialog::Accepted) | ||
185 | { | ||
186 | qDebug() << browser.getSelected(); | ||
187 | QString exe = browser.getSelected(); | ||
188 | if(!QFileInfo(exe).isExecutable()) | ||
189 | return; | ||
190 | ui.ttspath->setText(exe); | ||
191 | } | ||
192 | } | ||
193 | |||
diff --git a/rbutil/rbutilqt/ttsgui.h b/rbutil/rbutilqt/ttsgui.h new file mode 100644 index 0000000000..427dcd288c --- /dev/null +++ b/rbutil/rbutilqt/ttsgui.h | |||
@@ -0,0 +1,71 @@ | |||
1 | /*************************************************************************** | ||
2 | * __________ __ ___. | ||
3 | * Open \______ \ ____ ____ | | _\_ |__ _______ ___ | ||
4 | * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / | ||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | ||
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | ||
7 | * \/ \/ \/ \/ \/ | ||
8 | * | ||
9 | * Copyright (C) 2007 by Dominik Wenger | ||
10 | * $Id: ttsgui.h 15212 2007-10-19 21:49:07Z domonoky $ | ||
11 | * | ||
12 | * All files in this archive are subject to the GNU General Public License. | ||
13 | * See the file COPYING in the source tree root for full license agreement. | ||
14 | * | ||
15 | * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY | ||
16 | * KIND, either express or implied. | ||
17 | * | ||
18 | ****************************************************************************/ | ||
19 | |||
20 | #ifndef TTSGUI_H | ||
21 | #define TTSGUI_H | ||
22 | |||
23 | #include <QtGui> | ||
24 | |||
25 | #include "ui_ttsexescfgfrm.h" | ||
26 | #include "ui_sapicfgfrm.h" | ||
27 | |||
28 | class RbSettings; | ||
29 | class TTSSapi; | ||
30 | |||
31 | class TTSSapiGui : public QDialog | ||
32 | { | ||
33 | Q_OBJECT | ||
34 | public: | ||
35 | TTSSapiGui(TTSSapi* sapi,QDialog* parent = NULL); | ||
36 | |||
37 | void showCfg(); | ||
38 | void setCfg(RbSettings* sett){settings = sett;} | ||
39 | public slots: | ||
40 | |||
41 | virtual void accept(void); | ||
42 | virtual void reject(void); | ||
43 | virtual void reset(void); | ||
44 | void updateVoices(QString language); | ||
45 | private: | ||
46 | Ui::SapiCfgFrm ui; | ||
47 | RbSettings* settings; | ||
48 | TTSSapi* m_sapi; | ||
49 | }; | ||
50 | |||
51 | class TTSExesGui : public QDialog | ||
52 | { | ||
53 | Q_OBJECT | ||
54 | public: | ||
55 | TTSExesGui(QDialog* parent = NULL); | ||
56 | |||
57 | void showCfg(QString m_name); | ||
58 | void setCfg(RbSettings* sett){settings = sett;} | ||
59 | |||
60 | public slots: | ||
61 | virtual void accept(void); | ||
62 | virtual void reject(void); | ||
63 | virtual void reset(void); | ||
64 | void browse(void); | ||
65 | private: | ||
66 | Ui::TTSExesCfgFrm ui; | ||
67 | RbSettings* settings; | ||
68 | QString m_name; | ||
69 | }; | ||
70 | |||
71 | #endif | ||