summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2007-08-05 16:17:35 +0000
committerDominik Wenger <domonoky@googlemail.com>2007-08-05 16:17:35 +0000
commite70f7f4ca857e9e88a6e076360b6c9c235d7739b (patch)
treec5528e6abc91f74ac14192f9f2844f856588fdc0 /rbutil/rbutilqt
parent1d9f693658fda6e76d6c473fce8aa42b07f1b898 (diff)
rbutilQt: added Talkfile creation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14197 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r--rbutil/rbutilqt/installbl.cpp33
-rw-r--r--rbutil/rbutilqt/installtalkfrm.ui268
-rw-r--r--rbutil/rbutilqt/installtalkwindow.cpp264
-rw-r--r--rbutil/rbutilqt/installtalkwindow.h66
-rw-r--r--rbutil/rbutilqt/rbutil.ini18
-rw-r--r--rbutil/rbutilqt/rbutilqt.cpp14
-rw-r--r--rbutil/rbutilqt/rbutilqt.h1
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro7
-rw-r--r--rbutil/rbutilqt/rbutilqt.qrc1
-rw-r--r--rbutil/rbutilqt/rbutilqtfrm.ui35
-rw-r--r--rbutil/rbutilqt/talkfile.cpp212
-rw-r--r--rbutil/rbutilqt/talkfile.h105
12 files changed, 1001 insertions, 23 deletions
diff --git a/rbutil/rbutilqt/installbl.cpp b/rbutil/rbutilqt/installbl.cpp
index 627fa961b6..9d9dba4760 100644
--- a/rbutil/rbutilqt/installbl.cpp
+++ b/rbutil/rbutilqt/installbl.cpp
@@ -152,27 +152,26 @@ void InstallBl::done(bool error)
void InstallBl::setDeviceSettings(QSettings *dev)
{
devices = dev;
-
- if(userSettings->value("defaults/platform").toString() == "h100" ||
- userSettings->value("defaults/platform").toString() == "h120" ||
- userSettings->value("defaults/platform").toString() == "h300")
- {
- ui.buttonBrowseOF->show();
- ui.lineOriginalFirmware->show();
- ui.label_3->show();
- needextrafile = true;
- }
- else
- {
- ui.buttonBrowseOF->hide();
- ui.lineOriginalFirmware->hide();
- ui.label_3->hide();
- needextrafile = false;
- }
qDebug() << "Install::setDeviceSettings:" << devices;
}
void InstallBl::setUserSettings(QSettings *user)
{
userSettings = user;
+ if(userSettings->value("defaults/platform").toString() == "h100" ||
+ userSettings->value("defaults/platform").toString() == "h120" ||
+ userSettings->value("defaults/platform").toString() == "h300")
+ {
+ ui.buttonBrowseOF->show();
+ ui.lineOriginalFirmware->show();
+ ui.label_3->show();
+ needextrafile = true;
+ }
+ else
+ {
+ ui.buttonBrowseOF->hide();
+ ui.lineOriginalFirmware->hide();
+ ui.label_3->hide();
+ needextrafile = false;
+ }
}
diff --git a/rbutil/rbutilqt/installtalkfrm.ui b/rbutil/rbutilqt/installtalkfrm.ui
new file mode 100644
index 0000000000..d43326dd6e
--- /dev/null
+++ b/rbutil/rbutilqt/installtalkfrm.ui
@@ -0,0 +1,268 @@
+<ui version="4.0" >
+ <class>InstallTalkFrm</class>
+ <widget class="QDialog" name="InstallTalkFrm" >
+ <property name="windowModality" >
+ <enum>Qt::WindowModal</enum>
+ </property>
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>681</width>
+ <height>516</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Install Talk Files</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item rowspan="5" row="0" column="0" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="pixmap" >
+ <pixmap resource="rbutilqt.qrc" >:/icons/icons/wizard.xpm</pixmap>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1" colspan="5" >
+ <widget class="QLabel" name="label_2" >
+ <property name="text" >
+ <string>Select the Folder to generate Talkfiles for.</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1" colspan="4" >
+ <widget class="QLineEdit" name="lineTalkFolder" />
+ </item>
+ <item row="1" column="5" >
+ <widget class="QPushButton" name="buttonBrowse" >
+ <property name="text" >
+ <string>&amp;Browse</string>
+ </property>
+ <property name="icon" >
+ <iconset resource="rbutilqt.qrc" >:/icons/icons/system-search.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="5" >
+ <widget class="QGroupBox" name="groupBox" >
+ <property name="title" >
+ <string>TTS Engine</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" colspan="2" >
+ <widget class="QLabel" name="label_3" >
+ <property name="text" >
+ <string>Select a TTS Engine</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2" >
+ <widget class="QComboBox" name="TTScbx" />
+ </item>
+ <item row="2" column="0" colspan="2" >
+ <widget class="QLabel" name="label_4" >
+ <property name="text" >
+ <string>Select the TTS executable in your Filesystem</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" >
+ <widget class="QLineEdit" name="TTSpath" />
+ </item>
+ <item row="3" column="1" >
+ <widget class="QPushButton" name="buttonBrowseTTS" >
+ <property name="text" >
+ <string>Browse</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" >
+ <widget class="QLabel" name="label_7" >
+ <property name="text" >
+ <string>TTS Options</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2" >
+ <widget class="QLineEdit" name="TTSOptions" />
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="3" column="1" colspan="5" >
+ <widget class="QGroupBox" name="groupBox_2" >
+ <property name="title" >
+ <string>Encoder Engine</string>
+ </property>
+ <layout class="QGridLayout" >
+ <item row="0" column="0" colspan="2" >
+ <widget class="QLabel" name="label_5" >
+ <property name="text" >
+ <string>Select an Encoder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2" >
+ <widget class="QComboBox" name="Encodercbx" />
+ </item>
+ <item row="2" column="0" colspan="2" >
+ <widget class="QLabel" name="label_6" >
+ <property name="text" >
+ <string>Select the Encoder executable in your Filesystem</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" >
+ <widget class="QLineEdit" name="Encoderpath" />
+ </item>
+ <item row="3" column="1" >
+ <widget class="QPushButton" name="buttonBrowseEncoder" >
+ <property name="text" >
+ <string>Browse</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" >
+ <widget class="QLabel" name="label_8" >
+ <property name="text" >
+ <string>Encoder Options</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2" >
+ <widget class="QLineEdit" name="EncoderOptions" />
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="4" column="1" >
+ <widget class="QCheckBox" name="OverwriteWav" >
+ <property name="text" >
+ <string>Overwrite Wavefiles</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2" >
+ <widget class="QCheckBox" name="RemoveWav" >
+ <property name="text" >
+ <string>Remove Wavefiles</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="3" colspan="2" >
+ <widget class="QCheckBox" name="recursive" >
+ <property name="text" >
+ <string>Run recursive</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1" >
+ <widget class="QCheckBox" name="OverwriteTalk" >
+ <property name="text" >
+ <string>Overwrite Talkfiles</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="2" >
+ <widget class="QCheckBox" name="StripExtensions" >
+ <property name="text" >
+ <string>Strip Extensions</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="4" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>20</width>
+ <height>111</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="6" column="1" colspan="3" >
+ <spacer>
+ <property name="orientation" >
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" >
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="6" column="4" colspan="2" >
+ <layout class="QHBoxLayout" >
+ <item>
+ <widget class="QPushButton" name="buttonOk" >
+ <property name="text" >
+ <string>&amp;Ok</string>
+ </property>
+ <property name="icon" >
+ <iconset resource="rbutilqt.qrc" >:/icons/icons/go-next.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="buttonCancel" >
+ <property name="text" >
+ <string>&amp;Cancel</string>
+ </property>
+ <property name="icon" >
+ <iconset resource="rbutilqt.qrc" >:/icons/icons/process-stop.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="rbutilqt.qrc" />
+ </resources>
+ <connections>
+ <connection>
+ <sender>buttonOk</sender>
+ <signal>clicked()</signal>
+ <receiver>InstallTalkFrm</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>472</x>
+ <y>418</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>382</x>
+ <y>328</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonCancel</sender>
+ <signal>clicked()</signal>
+ <receiver>InstallTalkFrm</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel" >
+ <x>561</x>
+ <y>428</y>
+ </hint>
+ <hint type="destinationlabel" >
+ <x>522</x>
+ <y>332</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/rbutil/rbutilqt/installtalkwindow.cpp b/rbutil/rbutilqt/installtalkwindow.cpp
new file mode 100644
index 0000000000..4d1cdb1491
--- /dev/null
+++ b/rbutil/rbutilqt/installtalkwindow.cpp
@@ -0,0 +1,264 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Riebeling
+ * $Id: installtalkwindow.cpp 14151 2007-08-02 22:27:51Z bluebrother $
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "installtalkwindow.h"
+#include "ui_installtalkfrm.h"
+
+InstallTalkWindow::InstallTalkWindow(QWidget *parent) : QDialog(parent)
+{
+ ui.setupUi(this);
+ talkcreator = new TalkFileCreator(this);
+
+ connect(ui.buttonBrowse, SIGNAL(clicked()), this, SLOT(browseFolder()));
+ connect(ui.buttonBrowseTTS, SIGNAL(clicked()), this, SLOT(browseTTS()));
+ connect(ui.buttonBrowseEncoder, SIGNAL(clicked()), this, SLOT(browseEncoder()));
+
+ connect(ui.Encodercbx,SIGNAL(currentIndexChanged(int)),this,SLOT(setEncoderOptions(int)));
+ connect(ui.TTScbx,SIGNAL(currentIndexChanged(int)),this,SLOT(setTTSOptions(int)));
+
+ ui.OverwriteWav->setChecked(true);
+ ui.RemoveWav->setChecked(true);
+ ui.recursive->setChecked(true);
+ ui.OverwriteTalk->setChecked(true);
+ ui.StripExtensions->setChecked(true);
+
+
+}
+
+void InstallTalkWindow::browseFolder()
+{
+ QFileDialog browser(this);
+ if(QFileInfo(ui.lineTalkFolder->text()).isDir())
+ browser.setDirectory(ui.lineTalkFolder->text());
+ else
+ browser.setDirectory("/media");
+ browser.setReadOnly(true);
+ browser.setFileMode(QFileDialog::DirectoryOnly);
+ browser.setAcceptMode(QFileDialog::AcceptOpen);
+ if(browser.exec()) {
+ qDebug() << browser.directory();
+ QStringList files = browser.selectedFiles();
+ setTalkFolder(files.at(0));
+ }
+}
+
+void InstallTalkWindow::setTalkFolder(QString folder)
+{
+ ui.lineTalkFolder->clear();
+ ui.lineTalkFolder->insert(folder);
+}
+
+void InstallTalkWindow::browseTTS()
+{
+ QFileDialog browser(this);
+ if(QFileInfo(ui.TTSpath->text()).isDir())
+ browser.setDirectory(ui.TTSpath->text());
+ else
+ browser.setDirectory("/media");
+ browser.setReadOnly(true);
+ browser.setFileMode(QFileDialog::ExistingFile);
+ browser.setAcceptMode(QFileDialog::AcceptOpen);
+ if(browser.exec()) {
+ qDebug() << browser.directory();
+ QStringList files = browser.selectedFiles();
+ setTTSExec(files.at(0));
+ }
+}
+
+void InstallTalkWindow::setTTSExec(QString path)
+{
+ ui.TTSpath->clear();
+ ui.TTSpath->insert(path);
+}
+
+void InstallTalkWindow::browseEncoder()
+{
+ QFileDialog browser(this);
+ if(QFileInfo(ui.Encoderpath->text()).isDir())
+ browser.setDirectory(ui.Encoderpath->text());
+ else
+ browser.setDirectory("/media");
+ browser.setReadOnly(true);
+ browser.setFileMode(QFileDialog::ExistingFile);
+ browser.setAcceptMode(QFileDialog::AcceptOpen);
+ if(browser.exec()) {
+ qDebug() << browser.directory();
+ QStringList files = browser.selectedFiles();
+ setEncoderExec(files.at(0));
+ }
+}
+
+void InstallTalkWindow::setEncoderExec(QString path)
+{
+ ui.Encoderpath->clear();
+ ui.Encoderpath->insert(path);
+}
+
+void InstallTalkWindow::setEncoderOptions(int index)
+{
+ QString options = talkcreator->getEncOpts(ui.Encodercbx->itemText(index));
+ setEncoderOptions(options);
+}
+void InstallTalkWindow::setEncoderOptions(QString options)
+{
+ ui.EncoderOptions->clear();
+ ui.EncoderOptions->insert(options);
+}
+void InstallTalkWindow::setTTSOptions(QString options)
+{
+ ui.TTSOptions->clear();
+ ui.TTSOptions->insert(options);
+}
+void InstallTalkWindow::setTTSOptions(int index)
+{
+ QString options = talkcreator->getTTsOpts(ui.TTScbx->itemText(index));
+ setEncoderOptions(options);
+}
+
+void InstallTalkWindow::accept()
+{
+ logger = new ProgressLoggerGui(this);
+ logger->show();
+
+ QString folderToTalk = ui.lineTalkFolder->text();
+ QString pathEncoder = ui.Encoderpath->text();
+ QString pathTTS = ui.TTSpath->text();
+
+ if(!QFileInfo(folderToTalk).isDir())
+ {
+ logger->addItem(tr("The Folder to Talk is wrong!"),LOGERROR);
+ logger->abort();
+ return;
+ }
+
+ if(!QFileInfo(pathEncoder).exists())
+ {
+ logger->addItem(tr("Path to Encoder is wrong!"),LOGERROR);
+ logger->abort();
+ return;
+ }
+
+ if(!QFileInfo(pathTTS).exists())
+ {
+ logger->addItem(tr("Path to TTS is wrong!"),LOGERROR);
+ logger->abort();
+ return;
+ }
+
+ userSettings->setValue("defaults/folderToTalk",folderToTalk);
+ userSettings->setValue("defaults/pathEncoder",pathEncoder);
+ userSettings->setValue("defaults/pathTTS",pathTTS);
+
+ userSettings->sync();
+
+ talkcreator->setDir(folderToTalk);
+ talkcreator->setTTSexe(pathTTS);
+ talkcreator->setEncexe(pathEncoder);
+ talkcreator->setEncOpts(ui.EncoderOptions->text());
+ talkcreator->setTTsOpts(ui.TTSOptions->text());
+ talkcreator->setTTsType(ui.TTScbx->currentText());
+ talkcreator->setEncType(ui.Encodercbx->currentText());
+
+ talkcreator->setOverwriteTalk(ui.OverwriteTalk->isChecked());
+ talkcreator->setOverwriteWav(ui.OverwriteWav->isChecked());
+ talkcreator->setRemoveWav(ui.RemoveWav->isChecked());
+ talkcreator->setRecursive(ui.recursive->isChecked());
+ talkcreator->setStripExtensions(ui.StripExtensions->isChecked());
+
+ talkcreator->createTalkFiles(logger);
+}
+
+
+void InstallTalkWindow::setDeviceSettings(QSettings *dev)
+{
+ devices = dev;
+ qDebug() << "Install::setDeviceSettings:" << devices;
+
+ QStringList encoders;
+ QStringList encodersOpts;
+ QStringList encodersTemplates;
+
+ QStringList tts;
+ QStringList ttsOpts;
+ QStringList ttsTemplates;
+
+ devices->beginGroup("encoders");
+ QStringList keys = devices->allKeys();
+ qDebug() << keys;
+ for(int i=0; i < keys.size();i++)
+ {
+ encoders << devices->value(keys.at(i),"null").toString();
+ }
+ qDebug() << encoders;
+ devices->endGroup();
+ for(int i=0; i < encoders.size();i++)
+ {
+ devices->beginGroup(encoders.at(i));
+ encodersOpts << devices->value("options","null").toString();
+ encodersTemplates << devices->value("template","null").toString();
+ devices->endGroup();
+ }
+ qDebug() << encodersOpts;
+ qDebug() << encodersTemplates;
+
+ devices->beginGroup("tts");
+ keys = devices->allKeys();
+ qDebug() << keys;
+ for(int i=0; i < keys.size();i++)
+ {
+ tts << devices->value(keys.at(i),"null").toString();
+ }
+ qDebug() << tts;
+ devices->endGroup();
+ for(int i= 0; i < tts.size();i++)
+ {
+ devices->beginGroup(tts.at(i));
+ ttsOpts << devices->value("options","null").toString();
+ ttsTemplates << devices->value("template","null").toString();
+ devices->endGroup();
+ }
+ qDebug() << ttsOpts;
+ qDebug() << ttsTemplates;
+
+ talkcreator->setSupportedEnc(encoders);
+ talkcreator->setSupportedEncOptions(encodersOpts);
+ talkcreator->setSupportedEncTemplates(encodersTemplates);
+
+ talkcreator->setSupportedTTS(tts);
+ talkcreator->setSupportedTTSOptions(ttsOpts);
+ talkcreator->setSupportedTTSTemplates(ttsTemplates);
+
+ ui.Encodercbx->insertItems(0,talkcreator->getSupportedEnc());
+ ui.TTScbx->insertItems(0,talkcreator->getSupportedTTS());
+
+}
+
+
+
+
+void InstallTalkWindow::setUserSettings(QSettings *user)
+{
+ userSettings = user;
+
+
+
+ setTalkFolder(userSettings->value("defaults/folderToTalk").toString());
+ setEncoderExec(userSettings->value("defaults/pathEncoder").toString());
+ setTTSExec(userSettings->value("defaults/pathTTS").toString());
+}
diff --git a/rbutil/rbutilqt/installtalkwindow.h b/rbutil/rbutilqt/installtalkwindow.h
new file mode 100644
index 0000000000..1962d36a52
--- /dev/null
+++ b/rbutil/rbutilqt/installtalkwindow.h
@@ -0,0 +1,66 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Wenger
+ * $Id: installtalkwindow.h 14151 2007-08-02 22:27:51Z domonoky $
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef INSTALLTALKWINDOW_H
+#define INSTALLTALKWINDOW_H
+
+#include <QtGui>
+
+#include <QSettings>
+
+#include "ui_installtalkfrm.h"
+#include "progressloggergui.h"
+#include "talkfile.h"
+
+class InstallTalkWindow : public QDialog
+{
+ Q_OBJECT
+ public:
+ InstallTalkWindow(QWidget *parent = 0);
+ void setUserSettings(QSettings*);
+ void setDeviceSettings(QSettings*);
+
+ public slots:
+ void accept(void);
+
+ private slots:
+ void browseFolder(void);
+ void browseTTS(void);
+ void browseEncoder(void);
+
+ void setTalkFolder(QString folder);
+ void setTTSExec(QString path);
+ void setEncoderExec(QString path);
+
+ void setEncoderOptions(int index);
+ void setTTSOptions(int index);
+ void setEncoderOptions(QString options);
+ void setTTSOptions(QString options);
+
+ private:
+ TalkFileCreator* talkcreator;
+ Ui::InstallTalkFrm ui;
+ ProgressLoggerGui* logger;
+ QSettings *devices;
+ QSettings *userSettings;
+
+};
+
+
+#endif
diff --git a/rbutil/rbutilqt/rbutil.ini b/rbutil/rbutilqt/rbutil.ini
index c3d962952a..4052ef45e5 100644
--- a/rbutil/rbutilqt/rbutil.ini
+++ b/rbutil/rbutilqt/rbutil.ini
@@ -337,3 +337,21 @@ resolution=176x220x16
manualname=
brand=Sandisk
+[encoders]
+encoder01 = lame
+
+[tts]
+tts01 = espeak
+tts02 = flite
+
+[lame]
+options = ""
+template = "\"%exe\" %options \"%input\" \"%output\""
+
+[espeak]
+options = ""
+template = "\"%exe\" %options -w \"%wavfile\" \"%text\""
+
+[flite]
+options = ""
+template = "\"%exe\" %options -o \"%wavfile\" \"%text\"" \ No newline at end of file
diff --git a/rbutil/rbutilqt/rbutilqt.cpp b/rbutil/rbutilqt/rbutilqt.cpp
index 5fcfc39d18..8cacdfc78b 100644
--- a/rbutil/rbutilqt/rbutilqt.cpp
+++ b/rbutil/rbutilqt/rbutilqt.cpp
@@ -26,6 +26,7 @@
#include "configure.h"
#include "install.h"
#include "installbl.h"
+#include "installtalkwindow.h"
#include "httpget.h"
#include "installbootloader.h"
@@ -78,7 +79,9 @@ RbUtilQt::RbUtilQt(QWidget *parent) : QMainWindow(parent)
connect(ui.buttonBootloader, SIGNAL(clicked()), this, SLOT(installBl()));
connect(ui.buttonFonts, SIGNAL(clicked()), this, SLOT(installFonts()));
connect(ui.buttonGames, SIGNAL(clicked()), this, SLOT(installDoom()));
-
+ connect(ui.buttonTalk, SIGNAL(clicked()), this, SLOT(createTalkFiles()));
+
+
// disable unimplemented stuff
ui.buttonThemes->setEnabled(false);
ui.buttonSmall->setEnabled(false);
@@ -345,3 +348,12 @@ void RbUtilQt::installDoom()
}
+
+void RbUtilQt::createTalkFiles(void)
+{
+ InstallTalkWindow *installWindow = new InstallTalkWindow(this);
+ installWindow->setUserSettings(userSettings);
+ installWindow->setDeviceSettings(devices);
+ installWindow->show();
+
+}
diff --git a/rbutil/rbutilqt/rbutilqt.h b/rbutil/rbutilqt/rbutilqt.h
index 50bca0b4fa..e23188a136 100644
--- a/rbutil/rbutilqt/rbutilqt.h
+++ b/rbutil/rbutilqt/rbutilqt.h
@@ -59,6 +59,7 @@ class RbUtilQt : public QMainWindow
void installBl(void);
void installFonts(void);
void installDoom(void);
+ void createTalkFiles(void);
void downloadDone(bool);
void downloadDone(int, bool);
void downloadInfo(void);
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index 217451cf1b..56d471df65 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -9,6 +9,8 @@ SOURCES += rbutilqt.cpp \
installbootloader.cpp \
installbl.cpp \
progressloggergui.cpp \
+ installtalkwindow.cpp \
+ talkfile.cpp \
../ipodpatcher/ipodpatcher.c \
../sansapatcher/sansapatcher.c \
irivertools/irivertools.cpp \
@@ -29,6 +31,8 @@ HEADERS += rbutilqt.h \
installzip.h \
installbootloader.h \
installbl.h \
+ installtalkwindow.h \
+ talkfile.h \
progressloggerinterface.h \
progressloggergui.h \
../ipodpatcher/ipodpatcher.h \
@@ -55,7 +59,8 @@ FORMS += rbutilqtfrm.ui \
installfrm.ui \
installprogressfrm.ui \
configurefrm.ui \
- installbootloaderfrm.ui
+ installbootloaderfrm.ui \
+ installtalkfrm.ui
RESOURCES += rbutilqt.qrc
diff --git a/rbutil/rbutilqt/rbutilqt.qrc b/rbutil/rbutilqt/rbutilqt.qrc
index e1ba2a2093..3f62c786da 100644
--- a/rbutil/rbutilqt/rbutilqt.qrc
+++ b/rbutil/rbutilqt/rbutilqt.qrc
@@ -21,6 +21,7 @@
<file>icons/rembootloader_btn.png</file>
<file>icons/remrb_btn.png</file>
<file>icons/system-search.png</file>
+ <file>icons/talkfile_btn.png</file>
<file>icons/themes_btn.png</file>
<file>icons/wizard.xpm</file>
</qresource>
diff --git a/rbutil/rbutilqt/rbutilqtfrm.ui b/rbutil/rbutilqt/rbutilqtfrm.ui
index c8135de184..afa3bb0e76 100644
--- a/rbutil/rbutilqt/rbutilqtfrm.ui
+++ b/rbutil/rbutilqt/rbutilqtfrm.ui
@@ -130,7 +130,7 @@ p, li { white-space: pre-wrap; }
<item row="2" column="0" >
<widget class="QTabWidget" name="tabWidget" >
<property name="currentIndex" >
- <number>0</number>
+ <number>2</number>
</property>
<widget class="QWidget" name="quickStart" >
<attribute name="title" >
@@ -436,7 +436,7 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
- <item row="3" column="0" >
+ <item row="4" column="0" >
<spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
@@ -449,7 +449,7 @@ p, li { white-space: pre-wrap; }
</property>
</spacer>
</item>
- <item row="3" column="1" >
+ <item row="4" column="1" >
<spacer>
<property name="orientation" >
<enum>Qt::Vertical</enum>
@@ -462,6 +462,33 @@ p, li { white-space: pre-wrap; }
</property>
</spacer>
</item>
+ <item row="3" column="0" >
+ <widget class="QToolButton" name="buttonTalk" >
+ <property name="text" >
+ <string>Install Talk files</string>
+ </property>
+ <property name="icon" >
+ <iconset resource="rbutilqt.qrc" >:/icons/icons/talkfile_btn.png</iconset>
+ </property>
+ <property name="iconSize" >
+ <size>
+ <width>56</width>
+ <height>46</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1" >
+ <widget class="QLabel" name="label" >
+ <property name="text" >
+ <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Create Talk Files&lt;/span>&lt;/p>
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">&lt;span style=" font-weight:400;">Talkfiles are needed to let Rockbox speak File and Foldernames&lt;/span>&lt;/p>&lt;/body>&lt;/html></string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<widget class="QWidget" name="uninstall" >
@@ -675,7 +702,7 @@ p, li { white-space: pre-wrap; }
<x>0</x>
<y>0</y>
<width>600</width>
- <height>29</height>
+ <height>21</height>
</rect>
</property>
<widget class="QMenu" name="menu_File" >
diff --git a/rbutil/rbutilqt/talkfile.cpp b/rbutil/rbutilqt/talkfile.cpp
new file mode 100644
index 0000000000..da532e327c
--- /dev/null
+++ b/rbutil/rbutilqt/talkfile.cpp
@@ -0,0 +1,212 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Wenger
+ * $Id: talkfile.cpp 14027 2007-07-27 17:42:49Z domonoky $
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "talkfile.h"
+
+TalkFileCreator::TalkFileCreator(QObject* parent): QObject(parent)
+{
+
+}
+
+void TalkFileCreator::setTTsType(QString tts)
+{
+ m_curTTS = tts;
+ int index = m_supportedTTS.indexOf(m_curTTS);
+ m_curTTSTemplate = m_supportedTTSTemplates.at(index);
+}
+
+void TalkFileCreator::setEncType(QString enc)
+{
+ m_curEnc = enc;
+ int index = m_supportedEnc.indexOf(m_curEnc);
+ m_curEncTemplate = m_supportedEncTemplates.at(index);
+}
+
+bool TalkFileCreator::initEncoder()
+{
+ QFileInfo enc(m_EncExec);
+ if(enc.exists())
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool TalkFileCreator::initTTS()
+{
+ QFileInfo tts(m_TTSexec);
+
+ if(tts.exists())
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool TalkFileCreator::createTalkFiles(ProgressloggerInterface* logger)
+{
+ m_abort = false;
+ m_logger = logger;
+ m_logger->addItem("Starting Talkfile generation",LOGINFO);
+ if(!initTTS())
+ {
+ m_logger->addItem("Init of TTS engine failed",LOGERROR);
+ return false;
+ }
+ if(!initEncoder())
+ {
+ m_logger->addItem("Init of encoder failed",LOGERROR);
+ return false;
+ }
+ QApplication::processEvents();
+
+ connect(logger,SIGNAL(aborted()),this,SLOT(abort()));
+ m_logger->setProgressMax(0);
+ QDirIterator it(m_dir,QDirIterator::Subdirectories);
+ // iterate over all entrys
+ while (it.hasNext())
+ {
+ if(m_abort)
+ {
+ m_logger->addItem("Talkfile creation aborted",LOGERROR);
+ return false;
+ }
+
+ QApplication::processEvents();
+ QFileInfo fileInf = it.fileInfo();
+ QString toSpeak;
+ QString filename;
+ QString wavfilename;
+
+ if(fileInf.fileName() == "." || fileInf.fileName() == ".." || fileInf.suffix() == "talk")
+ {
+ it.next();
+ continue;
+ }
+ if(fileInf.isDir()) // if it is a dir
+ {
+ toSpeak = fileInf.fileName();
+ filename = fileInf.absolutePath() + "/_dirname.talk";
+ }
+ else // if it is a file
+ {
+ if(m_stripExtensions)
+ toSpeak = fileInf.baseName();
+ else
+ toSpeak = fileInf.fileName();
+ filename = fileInf.absoluteFilePath() + ".talk";
+ }
+ wavfilename = filename + ".wav";
+
+ QFileInfo filenameInf(filename);
+ QFileInfo wavfilenameInf(wavfilename);
+
+ if(!filenameInf.exists() || m_overwriteTalk)
+ {
+ if(!wavfilenameInf.exists() || m_overwriteWav)
+ {
+ m_logger->addItem("Voicing of " + toSpeak,LOGINFO);
+ if(!voice(toSpeak,wavfilename))
+ {
+ m_logger->addItem("Voicing of " + toSpeak + " failed",LOGERROR);
+ m_logger->abort();
+ return false;
+ }
+ }
+ m_logger->addItem("Encoding of " + toSpeak,LOGINFO);
+ if(!encode(wavfilename,filename))
+ {
+ m_logger->addItem("Encoding of " + wavfilename + " failed",LOGERROR);
+ m_logger->abort();
+ return false;
+ }
+ }
+
+ if(m_removeWav)
+ {
+ QFile wavfile(wavfilename);
+ wavfile.remove();
+ }
+
+ it.next();
+ }
+
+ m_logger->addItem("Finished creating Talkfiles",LOGOK);
+ m_logger->setProgressMax(1);
+ m_logger->setProgressValue(1);
+ m_logger->abort();
+
+ return true;
+
+}
+
+void TalkFileCreator::abort()
+{
+ m_abort = true;
+}
+
+bool TalkFileCreator::voice(QString text,QString wavfile)
+{
+
+ QString execstring = m_curTTSTemplate;
+
+ execstring.replace("%exe",m_TTSexec);
+ execstring.replace("%options",m_TTSOpts);
+ execstring.replace("%wavfile",wavfile);
+ execstring.replace("%text",text);
+
+ QProcess::execute(execstring);
+ return true;
+
+}
+
+bool TalkFileCreator::encode(QString input,QString output)
+{
+ QString execstring = m_curEncTemplate;
+
+ execstring.replace("%exe",m_EncExec);
+ execstring.replace("%options",m_EncOpts);
+ execstring.replace("%input",input);
+ execstring.replace("%output",output);
+
+ QProcess::execute(execstring);
+ return true;
+
+}
+
+QString TalkFileCreator::getTTsOpts(QString ttsname)
+{
+ int index = m_supportedTTS.indexOf(ttsname);
+
+ return m_supportedTTSOpts.at(index);
+}
+
+QString TalkFileCreator::getEncOpts(QString encname)
+{
+ int index = m_supportedEnc.indexOf(encname);
+
+ return m_supportedEncOpts.at(index);
+}
+
diff --git a/rbutil/rbutilqt/talkfile.h b/rbutil/rbutilqt/talkfile.h
new file mode 100644
index 0000000000..20bf1e5a70
--- /dev/null
+++ b/rbutil/rbutilqt/talkfile.h
@@ -0,0 +1,105 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Wenger
+ * $Id: talkfile.h 14027 2007-07-27 17:42:49Z domonoky $
+ *
+ * All files in this archive are subject to the GNU General Public License.
+ * See the file COPYING in the source tree root for full license agreement.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+
+#ifndef TALKFILE_H
+#define TALKFILE_H
+
+#include "progressloggerinterface.h"
+
+class TalkFileCreator :public QObject
+{
+ Q_OBJECT
+
+public:
+ TalkFileCreator(QObject* parent=0);
+
+ bool createTalkFiles(ProgressloggerInterface* logger);
+
+ void setTTSexe(QString exe){m_TTSexec=exe;}
+ void setEncexe(QString exe){m_EncExec=exe;}
+
+ void setSupportedTTS(QStringList list) {m_supportedTTS=list;}
+ void setSupportedTTSOptions(QStringList list) {m_supportedTTSOpts=list;}
+ void setSupportedTTSTemplates(QStringList list) {m_supportedTTSTemplates=list;}
+
+ QStringList getSupportedTTS(){return m_supportedTTS;}
+ void setTTsType(QString tts);
+ QString getTTsOpts(QString ttsname);
+ void setTTsOpts(QString opts) {m_TTSOpts=opts;}
+
+ void setSupportedEnc(QStringList list) {m_supportedEnc=list;}
+ void setSupportedEncOptions(QStringList list) {m_supportedEncOpts=list;}
+ void setSupportedEncTemplates(QStringList list) {m_supportedEncTemplates=list;}
+
+ QStringList getSupportedEnc(){return m_supportedEnc;}
+ void setEncType(QString enc);
+ QString getEncOpts(QString encname);
+ void setEncOpts(QString opts) {m_EncOpts=opts;}
+
+ void setDir(QString dir){m_dir = dir; }
+
+ void setOverwriteTalk(bool ov) {m_overwriteTalk = ov;}
+ void setOverwriteWav(bool ov) {m_overwriteWav = ov;}
+ void setRemoveWav(bool ov) {m_removeWav = ov;}
+ void setRecursive(bool ov) {m_recursive = ov;}
+ void setStripExtensions(bool ov) {m_stripExtensions = ov;}
+
+private slots:
+ void abort();
+
+private:
+
+ bool initTTS();
+ bool stopTTS();
+ bool initEncoder();
+
+ bool encode(QString input,QString output);
+ bool voice(QString text,QString wavfile);
+
+ QString m_dir;
+
+ QString m_curTTS;
+ QString m_TTSexec;
+ QStringList m_supportedTTS;
+ QStringList m_supportedTTSOpts;
+ QStringList m_supportedTTSTemplates;
+ QString m_TTSOpts;
+ QString m_curTTSTemplate;
+
+ QString m_curEnc;
+ QString m_EncExec;
+ QStringList m_supportedEnc;
+ QStringList m_supportedEncOpts;
+ QStringList m_supportedEncTemplates;
+ QString m_EncOpts;
+ QString m_curEncTemplate;
+
+ bool m_overwriteTalk;
+ bool m_overwriteWav;
+ bool m_removeWav;
+ bool m_recursive;
+ bool m_stripExtensions;
+
+ ProgressloggerInterface* m_logger;
+
+ bool m_abort;
+};
+
+#endif