From 0c66bdb2b01794448b7676a1b2b5ee5fd8c83371 Mon Sep 17 00:00:00 2001 From: Dominik Wenger Date: Tue, 29 Jan 2008 21:54:43 +0000 Subject: 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 --- rbutil/rbutilqt/encoders.cpp | 133 +++------------------------ rbutil/rbutilqt/encoders.h | 15 ---- rbutil/rbutilqt/encodersgui.cpp | 170 +++++++++++++++++++++++++++++++++++ rbutil/rbutilqt/encodersgui.h | 77 ++++++++++++++++ rbutil/rbutilqt/rbsettings.cpp | 66 +++++++------- rbutil/rbutilqt/rbutilqt.pro | 4 + rbutil/rbutilqt/tts.cpp | 159 +++------------------------------ rbutil/rbutilqt/tts.h | 35 +++----- rbutil/rbutilqt/ttsgui.cpp | 193 ++++++++++++++++++++++++++++++++++++++++ rbutil/rbutilqt/ttsgui.h | 71 +++++++++++++++ 10 files changed, 583 insertions(+), 340 deletions(-) create mode 100644 rbutil/rbutilqt/encodersgui.cpp create mode 100644 rbutil/rbutilqt/encodersgui.h create mode 100644 rbutil/rbutilqt/ttsgui.cpp create mode 100644 rbutil/rbutilqt/ttsgui.h 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 @@ #include "encoders.h" #include "browsedirtree.h" +#ifndef CONSOLE +#include "encodersgui.h" +#endif static QMap encoderList; static QMap encoderCache; @@ -92,11 +95,6 @@ EncExes::EncExes(QString name,QWidget *parent) : EncBase(parent) m_name = name; m_TemplateMap["lame"] = "\"%exe\" %options \"%input\" \"%output\""; - - ui.setupUi(this); - this->hide(); - connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); - connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); } bool EncExes::start() @@ -131,67 +129,13 @@ bool EncExes::encode(QString input,QString output) return true; } -void EncExes::reset() -{ - ui.encoderpath->setText(""); - ui.encoderoptions->setText(""); -} - -void EncExes::showCfg() -{ - // try to get config from settings - QString exepath =settings->encoderPath(m_name); - ui.encoderoptions->setText(settings->encoderOptions(m_name)); - - if(exepath == "") - { - - // try to autodetect encoder -#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) - QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); -#elif defined(Q_OS_WIN) - QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); -#endif - qDebug() << path; - - for(int i = 0; i < path.size(); i++) - { - QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; -#if defined(Q_OS_WIN) - executable += ".exe"; - QStringList ex = executable.split("\"", QString::SkipEmptyParts); - executable = ex.join(""); -#endif - if(QFileInfo(executable).isExecutable()) - { - qDebug() << "found:" << executable; - exepath = QDir::toNativeSeparators(executable); - break; - } - } - } - - ui.encoderpath->setText(exepath); - - //show dialog - this->exec(); - -} -void EncExes::accept(void) -{ - //save settings in user config - settings->setEncoderPath(m_name,ui.encoderpath->text()); - settings->setEncoderOptions(m_name,ui.encoderoptions->text()); - - // sync settings - settings->sync(); - this->close(); -} -void EncExes::reject(void) +void EncExes::showCfg() { - this->close(); + EncExesGui gui; + gui.setCfg(settings); + gui.showCfg(m_name); } bool EncExes::configOk() @@ -204,34 +148,14 @@ bool EncExes::configOk() return false; } -void EncExes::browse() -{ - BrowseDirtree browser(this); - browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); - if(QFileInfo(ui.encoderpath->text()).isDir()) - { - browser.setDir(ui.encoderpath->text()); - } - if(browser.exec() == QDialog::Accepted) - { - qDebug() << browser.getSelected(); - QString exe = browser.getSelected(); - if(!QFileInfo(exe).isExecutable()) - return; - ui.encoderpath->setText(exe); - } -} /********************************************************************* * RB SPEEX ENCODER **********************************************************************/ EncRbSpeex::EncRbSpeex(QWidget *parent) : EncBase(parent) { - ui.setupUi(this); - this->hide(); - connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); - + defaultQuality = 8.f; defaultVolume = 1.f; defaultComplexity = 10; @@ -282,49 +206,14 @@ bool EncRbSpeex::encode(QString input,QString output) return true; } -void EncRbSpeex::reset() -{ - ui.volume->setValue(defaultVolume); - ui.quality->setValue(defaultQuality); - ui.complexity->setValue(defaultComplexity); - ui.narrowband->setChecked(Qt::Unchecked); -} void EncRbSpeex::showCfg() { - //fill in the usersettings - ui.volume->setValue(settings->encoderVolume("rbspeex")); - ui.quality->setValue(settings->encoderQuality("rbspeex")); - ui.complexity->setValue(settings->encoderComplexity("rbspeex")); - - if(settings->encoderNarrowband("rbspeex")) - ui.narrowband->setCheckState(Qt::Checked); - else - ui.narrowband->setCheckState(Qt::Unchecked); - - //show dialog - this->exec(); -} - -void EncRbSpeex::accept(void) -{ - //save settings in user config - settings->setEncoderVolume("rbspeex",ui.volume->value()); - settings->setEncoderQuality("rbspeex",ui.quality->value()); - settings->setEncoderComplexity("rbspeex",ui.complexity->value()); - settings->setEncoderNarrowband("rbspeex",ui.narrowband->isChecked() ? true : false); - - // sync settings - settings->sync(); - this->close(); + EncRbSpeexGui gui; + gui.setCfg(settings); + gui.showCfg(defaultQuality,defaultVolume,defaultComplexity,defaultBand); } -void EncRbSpeex::reject(void) -{ - this->close(); -} - - bool EncRbSpeex::configOk() { 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 @@ #include -#include "ui_rbspeexcfgfrm.h" -#include "ui_encexescfgfrm.h" #include "rbsettings.h" extern "C" @@ -78,14 +76,7 @@ public: virtual void showCfg(); virtual bool configOk(); -public slots: - virtual void accept(void); - virtual void reject(void); - virtual void reset(void); - void browse(void); - private: - Ui::EncExesCfgFrm ui; QString m_name; QString m_EncExec; QString m_EncOpts; @@ -104,13 +95,7 @@ public: virtual void showCfg(); virtual bool configOk(); -public slots: - virtual void accept(void); - virtual void reject(void); - virtual void reset(void); - private: - Ui::RbSpeexCfgFrm ui; float quality; float volume; 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 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id: encodersgui.cpp 15212 2007-10-19 21:49:07Z 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 "encodersgui.h" + +#include "rbsettings.h" +#include "browsedirtree.h" + +EncExesGui::EncExesGui(QDialog* parent) : QDialog(parent) +{ + ui.setupUi(this); + this->hide(); + connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); + connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); +} + +void EncExesGui::showCfg(QString name) +{ + m_name = name; + // try to get config from settings + QString exepath =settings->encoderPath(m_name); + ui.encoderoptions->setText(settings->encoderOptions(m_name)); + + if(exepath == "") + { + + // try to autodetect encoder +#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) + QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); +#elif defined(Q_OS_WIN) + QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); +#endif + qDebug() << path; + + for(int i = 0; i < path.size(); i++) + { + QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; +#if defined(Q_OS_WIN) + executable += ".exe"; + QStringList ex = executable.split("\"", QString::SkipEmptyParts); + executable = ex.join(""); +#endif + if(QFileInfo(executable).isExecutable()) + { + qDebug() << "found:" << executable; + exepath = QDir::toNativeSeparators(executable); + break; + } + } + } + + ui.encoderpath->setText(exepath); + + //show dialog + this->exec(); + +} + +void EncExesGui::accept(void) +{ + //save settings in user config + settings->setEncoderPath(m_name,ui.encoderpath->text()); + settings->setEncoderOptions(m_name,ui.encoderoptions->text()); + + // sync settings + settings->sync(); + this->close(); +} + +void EncExesGui::reject(void) +{ + this->close(); +} + +void EncExesGui::reset() +{ + ui.encoderpath->setText(""); + ui.encoderoptions->setText(""); +} + +void EncExesGui::browse() +{ + BrowseDirtree browser(this); + browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); + + if(QFileInfo(ui.encoderpath->text()).isDir()) + { + browser.setDir(ui.encoderpath->text()); + } + if(browser.exec() == QDialog::Accepted) + { + qDebug() << browser.getSelected(); + QString exe = browser.getSelected(); + if(!QFileInfo(exe).isExecutable()) + return; + ui.encoderpath->setText(exe); + } +} + + +EncRbSpeexGui::EncRbSpeexGui(QDialog* parent) : QDialog(parent) +{ + ui.setupUi(this); + this->hide(); + connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); + +} + +void EncRbSpeexGui::showCfg(float defQ,float defV,float defC, bool defB) +{ + defaultQuality =defQ; + defaultVolume = defV; + defaultComplexity = defC; + defaultBand =defB; + + //fill in the usersettings + ui.volume->setValue(settings->encoderVolume("rbspeex")); + ui.quality->setValue(settings->encoderQuality("rbspeex")); + ui.complexity->setValue(settings->encoderComplexity("rbspeex")); + + if(settings->encoderNarrowband("rbspeex")) + ui.narrowband->setCheckState(Qt::Checked); + else + ui.narrowband->setCheckState(Qt::Unchecked); + + //show dialog + this->exec(); +} + +void EncRbSpeexGui::accept(void) +{ + //save settings in user config + settings->setEncoderVolume("rbspeex",ui.volume->value()); + settings->setEncoderQuality("rbspeex",ui.quality->value()); + settings->setEncoderComplexity("rbspeex",ui.complexity->value()); + settings->setEncoderNarrowband("rbspeex",ui.narrowband->isChecked() ? true : false); + + // sync settings + settings->sync(); + this->close(); +} + +void EncRbSpeexGui::reject(void) +{ + this->close(); +} + +void EncRbSpeexGui::reset() +{ + ui.volume->setValue(defaultVolume); + ui.quality->setValue(defaultQuality); + ui.complexity->setValue(defaultComplexity); + ui.narrowband->setChecked(Qt::Unchecked); +} 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 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id: encodersgui.h 15212 2007-10-19 21:49:07Z 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 ENCODERSGUI_H +#define ENCODERSGUI_H + +#include + +class RbSettings; + +#include "ui_rbspeexcfgfrm.h" +#include "ui_encexescfgfrm.h" + + +class EncExesGui : public QDialog +{ + Q_OBJECT +public: + EncExesGui(QDialog* parent = NULL); + + void showCfg(QString m_name); + void setCfg(RbSettings* sett){settings = sett;} + +public slots: + virtual void accept(void); + virtual void reject(void); + virtual void reset(void); + void browse(void); + +private: + Ui::EncExesCfgFrm ui; + RbSettings* settings; + QString m_name; +}; + +class EncRbSpeexGui : public QDialog +{ + Q_OBJECT +public: + EncRbSpeexGui(QDialog* parent = NULL); + + void showCfg(float defQ,float defV,float defC, bool defB); + void setCfg(RbSettings* sett){settings = sett;} + +public slots: + virtual void accept(void); + virtual void reject(void); + virtual void reset(void); + +private: + Ui::RbSpeexCfgFrm ui; + RbSettings* settings; + float defaultQuality; + float defaultVolume; + int defaultComplexity; + bool defaultBand; +}; + + + +#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() QString RbSettings::ttsPath(QString tts) { - devices->beginGroup(tts); - QString path = devices->value("ttspath").toString(); - devices->endGroup(); + userSettings->beginGroup(tts); + QString path = userSettings->value("ttspath").toString(); + userSettings->endGroup(); return path; } QString RbSettings::ttsOptions(QString tts) { - devices->beginGroup(tts); - QString op = devices->value("ttsoptions").toString(); - devices->endGroup(); + userSettings->beginGroup(tts); + QString op = userSettings->value("ttsoptions").toString(); + userSettings->endGroup(); return op; } QString RbSettings::ttsVoice(QString tts) { - devices->beginGroup(tts); - QString op = devices->value("ttsvoice").toString(); - devices->endGroup(); + userSettings->beginGroup(tts); + QString op = userSettings->value("ttsvoice").toString(); + userSettings->endGroup(); return op; } int RbSettings::ttsSpeed(QString tts) { - devices->beginGroup(tts); - int sp = devices->value("ttsspeed",0).toInt(); - devices->endGroup(); + userSettings->beginGroup(tts); + int sp = userSettings->value("ttsspeed",0).toInt(); + userSettings->endGroup(); return sp; } QString RbSettings::ttsLang(QString tts) { - devices->beginGroup(tts); - QString op = devices->value("ttslanguage").toString(); - devices->endGroup(); + userSettings->beginGroup(tts); + QString op = userSettings->value("ttslanguage").toString(); + userSettings->endGroup(); return op; } QString RbSettings::encoderPath(QString enc) { - devices->beginGroup(enc); - QString path = devices->value("encoderpath").toString(); - devices->endGroup(); + userSettings->beginGroup(enc); + QString path = userSettings->value("encoderpath").toString(); + userSettings->endGroup(); return path; } QString RbSettings::encoderOptions(QString enc) { - devices->beginGroup(enc); - QString op = devices->value("encoderpath").toString(); - devices->endGroup(); + userSettings->beginGroup(enc); + QString op = userSettings->value("encoderpath").toString(); + userSettings->endGroup(); return op; } double RbSettings::encoderQuality(QString enc) { - devices->beginGroup(enc); - double q = devices->value("quality",8.f).toDouble(); - devices->endGroup(); + userSettings->beginGroup(enc); + double q =userSettings->value("quality",8.f).toDouble(); + userSettings->endGroup(); return q; } int RbSettings::encoderComplexity(QString enc) { - devices->beginGroup(enc); - int c = devices->value("complexity",1.f).toInt(); - devices->endGroup(); + userSettings->beginGroup(enc); + int c = userSettings->value("complexity",1.f).toInt(); + userSettings->endGroup(); return c; } double RbSettings::encoderVolume(QString enc) { - devices->beginGroup(enc); - double v = devices->value("volume",10).toDouble(); - devices->endGroup(); + userSettings->beginGroup(enc); + double v = userSettings->value("volume",10).toDouble(); + userSettings->endGroup(); return v; } bool RbSettings::encoderNarrowband(QString enc) { - devices->beginGroup(enc); - bool nb = devices->value("narrowband",false).toBool(); - devices->endGroup(); + userSettings->beginGroup(enc); + bool nb = userSettings->value("narrowband",false).toBool(); + userSettings->endGroup(); return nb; } 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 \ browseof.cpp \ preview.cpp \ encoders.cpp \ + encodersgui.cpp \ tts.cpp \ + ttsgui.cpp \ ../../tools/wavtrim.c \ ../../tools/voicefont.c \ voicefile.cpp \ @@ -91,7 +93,9 @@ HEADERS += rbutilqt.h \ browseof.h \ preview.h \ encoders.h \ + encodersgui.h \ tts.h \ + ttsgui.h \ ../../tools/wavtrim.h \ ../../tools/voicefont.h \ 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 @@ #include "tts.h" -#include "browsedirtree.h" + static QMap ttsList; static QMap ttsCache; @@ -82,7 +82,7 @@ QStringList getTTSList() /********************************************************************* * TTS Base **********************************************************************/ -TTSBase::TTSBase(QWidget *parent): QDialog(parent) +TTSBase::TTSBase(): QObject() { } @@ -90,7 +90,7 @@ TTSBase::TTSBase(QWidget *parent): QDialog(parent) /********************************************************************* * General TTS Exes **********************************************************************/ -TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent) +TTSExes::TTSExes(QString name) : TTSBase() { m_name = name; @@ -98,10 +98,6 @@ TTSExes::TTSExes(QString name,QWidget *parent) : TTSBase(parent) m_TemplateMap["flite"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; m_TemplateMap["swift"] = "\"%exe\" \"%options\" -o \"%wavfile\" \"%text\""; - ui.setupUi(this); - this->hide(); - connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); - connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); } bool TTSExes::start(QString *errStr) @@ -137,68 +133,11 @@ bool TTSExes::voice(QString text,QString wavfile) } - -void TTSExes::reset() -{ - ui.ttspath->setText(""); - ui.ttsoptions->setText(""); -} - void TTSExes::showCfg() { - // try to get config from settings - QString exepath =settings->ttsPath(m_name); - ui.ttsoptions->setText(settings->ttsOptions(m_name)); - - if(exepath == "") - { - - //try autodetect tts -#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) - QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); -#elif defined(Q_OS_WIN) - QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); -#endif - qDebug() << path; - for(int i = 0; i < path.size(); i++) - { - QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; -#if defined(Q_OS_WIN) - executable += ".exe"; - QStringList ex = executable.split("\"", QString::SkipEmptyParts); - executable = ex.join(""); -#endif - qDebug() << executable; - if(QFileInfo(executable).isExecutable()) - { - exepath= QDir::toNativeSeparators(executable); - break; - } - } - - } - - ui.ttspath->setText(exepath); - - //show dialog - this->exec(); - -} - -void TTSExes::accept(void) -{ - //save settings in user config - settings->setTTSPath(m_name,ui.ttspath->text()); - settings->setTTSOptions(m_name,ui.ttsoptions->text()); - // sync settings - settings->sync(); - - this->close(); -} - -void TTSExes::reject(void) -{ - this->close(); + TTSExesGui gui; + gui.setCfg(settings); + gui.showCfg(m_name); } bool TTSExes::configOk() @@ -211,36 +150,14 @@ bool TTSExes::configOk() return false; } -void TTSExes::browse() -{ - BrowseDirtree browser(this); - browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); - - if(QFileInfo(ui.ttspath->text()).isDir()) - { - browser.setDir(ui.ttspath->text()); - } - if(browser.exec() == QDialog::Accepted) - { - qDebug() << browser.getSelected(); - QString exe = browser.getSelected(); - if(!QFileInfo(exe).isExecutable()) - return; - ui.ttspath->setText(exe); - } -} - /********************************************************************* * TTS Sapi **********************************************************************/ -TTSSapi::TTSSapi(QWidget *parent) : TTSBase(parent) +TTSSapi::TTSSapi() : TTSBase() { m_TTSTemplate = "cscript //nologo \"%exe\" /language:%lang /voice:\"%voice\" /speed:%speed \"%options\""; defaultLanguage ="english"; - ui.setupUi(this); - this->hide(); - connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); - connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); + } @@ -329,14 +246,7 @@ QStringList TTSSapi::getVoiceList(QString language) return result; } -void TTSSapi::updateVoices(QString language) -{ - QStringList Voices = getVoiceList(language); - ui.voicecombo->clear(); - ui.voicecombo->addItems(Voices); - -} bool TTSSapi::voice(QString text,QString wavfile) { @@ -363,58 +273,11 @@ bool TTSSapi::stop() } -void TTSSapi::reset() -{ - ui.ttsoptions->setText(""); - ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(defaultLanguage)); -} - void TTSSapi::showCfg() { - // try to get config from settings - ui.ttsoptions->setText(settings->ttsOptions("sapi")); - QString selLang = settings->ttsLang("sapi"); - QString selVoice = settings->ttsVoice("sapi"); - ui.speed->setValue(settings->ttsSpeed("sapi")); - - - // fill in language combobox - QStringList languages = settings->allLanguages(); - - languages.sort(); - ui.languagecombo->clear(); - ui.languagecombo->addItems(languages); - - // set saved lang - ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(selLang)); - - // fill in voice combobox - updateVoices(selLang); - - // set saved lang - ui.voicecombo->setCurrentIndex(ui.voicecombo->findText(selVoice)); - - //show dialog - this->exec(); - -} - -void TTSSapi::accept(void) -{ - //save settings in user config - settings->setTTSOptions("sapi",ui.ttsoptions->text()); - settings->setTTSLang("sapi",ui.languagecombo->currentText()); - settings->setTTSVoice("sapi",ui.voicecombo->currentText()); - settings->setTTSSpeed("sapi",ui.speed->value()); - // sync settings - settings->sync(); - - this->close(); -} - -void TTSSapi::reject(void) -{ - this->close(); + TTSSapiGui gui(this); + gui.setCfg(settings); + gui.showCfg(); } 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 @@ #ifndef TTS_H #define TTS_H -#include "ui_ttsexescfgfrm.h" -#include "ui_sapicfgfrm.h" + #include "rbsettings.h" #include +#ifndef CONSOLE +#include "ttsgui.h" +#endif class TTSBase; @@ -37,11 +39,11 @@ TTSBase* getTTS(QString ttsname); QStringList getTTSList(); -class TTSBase : public QDialog +class TTSBase : public QObject { Q_OBJECT public: - TTSBase(QWidget *parent ); + TTSBase(); virtual bool voice(QString text,QString wavfile) {return false;} virtual bool start(QString *errStr){return false;} virtual bool stop(){return false;} @@ -63,23 +65,16 @@ class TTSSapi : public TTSBase { Q_OBJECT public: - TTSSapi(QWidget *parent = NULL); + TTSSapi(); virtual bool voice(QString text,QString wavfile); virtual bool start(QString *errStr); virtual bool stop(); virtual void showCfg(); virtual bool configOk(); - -public slots: - virtual void accept(void); - virtual void reject(void); - virtual void reset(void); - - void updateVoices(QString language); + + QStringList getVoiceList(QString language); private: - QStringList getVoiceList(QString language); - - Ui::SapiCfgFrm ui; + QProcess* voicescript; QString defaultLanguage; @@ -97,21 +92,17 @@ class TTSExes : public TTSBase { Q_OBJECT public: - TTSExes(QString name,QWidget *parent = NULL); + TTSExes(QString name); virtual bool voice(QString text,QString wavfile); virtual bool start(QString *errStr); virtual bool stop() {return true;} virtual void showCfg(); virtual bool configOk(); -public slots: - virtual void accept(void); - virtual void reject(void); - virtual void reset(void); - void browse(void); + private: - Ui::TTSExesCfgFrm ui; + QString m_name; QString m_TTSexec; 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 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id: tts.cpp 15212 2007-10-19 21:49:07Z 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 "ttsgui.h" + +#include "rbsettings.h" +#include "tts.h" +#include "browsedirtree.h" + +TTSSapiGui::TTSSapiGui(TTSSapi* sapi,QDialog* parent) : QDialog(parent) +{ + m_sapi= sapi; + ui.setupUi(this); + this->hide(); + connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); + connect(ui.languagecombo,SIGNAL(currentIndexChanged(QString)),this,SLOT(updateVoices(QString))); + +} + +void TTSSapiGui::showCfg() +{ + // try to get config from settings + ui.ttsoptions->setText(settings->ttsOptions("sapi")); + QString selLang = settings->ttsLang("sapi"); + QString selVoice = settings->ttsVoice("sapi"); + ui.speed->setValue(settings->ttsSpeed("sapi")); + + + // fill in language combobox + QStringList languages = settings->allLanguages(); + + languages.sort(); + ui.languagecombo->clear(); + ui.languagecombo->addItems(languages); + + // set saved lang + ui.languagecombo->setCurrentIndex(ui.languagecombo->findText(selLang)); + + // fill in voice combobox + updateVoices(selLang); + + // set saved lang + ui.voicecombo->setCurrentIndex(ui.voicecombo->findText(selVoice)); + + //show dialog + this->exec(); + +} + + +void TTSSapiGui::reset() +{ + ui.ttsoptions->setText(""); + ui.languagecombo->setCurrentIndex(ui.languagecombo->findText("english")); +} + + + +void TTSSapiGui::accept(void) +{ + //save settings in user config + settings->setTTSOptions("sapi",ui.ttsoptions->text()); + settings->setTTSLang("sapi",ui.languagecombo->currentText()); + settings->setTTSVoice("sapi",ui.voicecombo->currentText()); + settings->setTTSSpeed("sapi",ui.speed->value()); + // sync settings + settings->sync(); + + this->close(); +} + +void TTSSapiGui::reject(void) +{ + this->close(); +} + +void TTSSapiGui::updateVoices(QString language) +{ + QStringList Voices = m_sapi->getVoiceList(language); + ui.voicecombo->clear(); + ui.voicecombo->addItems(Voices); + +} + +TTSExesGui::TTSExesGui(QDialog* parent) : QDialog(parent) +{ + ui.setupUi(this); + this->hide(); + connect(ui.reset,SIGNAL(clicked()),this,SLOT(reset())); + connect(ui.browse,SIGNAL(clicked()),this,SLOT(browse())); +} + + +void TTSExesGui::reset() +{ + ui.ttspath->setText(""); + ui.ttsoptions->setText(""); +} + +void TTSExesGui::showCfg(QString name) +{ + m_name = name; + // try to get config from settings + QString exepath =settings->ttsPath(m_name); + ui.ttsoptions->setText(settings->ttsOptions(m_name)); + + if(exepath == "") + { + + //try autodetect tts +#if defined(Q_OS_LINUX) || defined(Q_OS_MACX) + QStringList path = QString(getenv("PATH")).split(":", QString::SkipEmptyParts); +#elif defined(Q_OS_WIN) + QStringList path = QString(getenv("PATH")).split(";", QString::SkipEmptyParts); +#endif + qDebug() << path; + for(int i = 0; i < path.size(); i++) + { + QString executable = QDir::fromNativeSeparators(path.at(i)) + "/" + m_name; +#if defined(Q_OS_WIN) + executable += ".exe"; + QStringList ex = executable.split("\"", QString::SkipEmptyParts); + executable = ex.join(""); +#endif + qDebug() << executable; + if(QFileInfo(executable).isExecutable()) + { + exepath= QDir::toNativeSeparators(executable); + break; + } + } + + } + + ui.ttspath->setText(exepath); + + //show dialog + this->exec(); + +} + +void TTSExesGui::accept(void) +{ + //save settings in user config + settings->setTTSPath(m_name,ui.ttspath->text()); + settings->setTTSOptions(m_name,ui.ttsoptions->text()); + // sync settings + settings->sync(); + + this->close(); +} + +void TTSExesGui::reject(void) +{ + this->close(); +} + + +void TTSExesGui::browse() +{ + BrowseDirtree browser(this); + browser.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); + + if(QFileInfo(ui.ttspath->text()).isDir()) + { + browser.setDir(ui.ttspath->text()); + } + if(browser.exec() == QDialog::Accepted) + { + qDebug() << browser.getSelected(); + QString exe = browser.getSelected(); + if(!QFileInfo(exe).isExecutable()) + return; + ui.ttspath->setText(exe); + } +} + 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 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id: ttsgui.h 15212 2007-10-19 21:49:07Z 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 TTSGUI_H +#define TTSGUI_H + +#include + +#include "ui_ttsexescfgfrm.h" +#include "ui_sapicfgfrm.h" + +class RbSettings; +class TTSSapi; + +class TTSSapiGui : public QDialog +{ + Q_OBJECT +public: + TTSSapiGui(TTSSapi* sapi,QDialog* parent = NULL); + + void showCfg(); + void setCfg(RbSettings* sett){settings = sett;} +public slots: + + virtual void accept(void); + virtual void reject(void); + virtual void reset(void); + void updateVoices(QString language); +private: + Ui::SapiCfgFrm ui; + RbSettings* settings; + TTSSapi* m_sapi; +}; + +class TTSExesGui : public QDialog +{ + Q_OBJECT +public: + TTSExesGui(QDialog* parent = NULL); + + void showCfg(QString m_name); + void setCfg(RbSettings* sett){settings = sett;} + +public slots: + virtual void accept(void); + virtual void reject(void); + virtual void reset(void); + void browse(void); +private: + Ui::TTSExesCfgFrm ui; + RbSettings* settings; + QString m_name; +}; + +#endif -- cgit v1.2.3