diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 00bb99ac80741fc50ef8a289719373032f2391eb (patch) | |
tree | 3a5a9bf72f942784b38bf77dd66c534662fab5f2 /kttsd/app-plugins/kate/katekttsd.cpp | |
download | tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.tar.gz tdeaccessibility-00bb99ac80741fc50ef8a289719373032f2391eb.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdeaccessibility@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kttsd/app-plugins/kate/katekttsd.cpp')
-rw-r--r-- | kttsd/app-plugins/kate/katekttsd.cpp | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/kttsd/app-plugins/kate/katekttsd.cpp b/kttsd/app-plugins/kate/katekttsd.cpp new file mode 100644 index 0000000..a2e64e6 --- /dev/null +++ b/kttsd/app-plugins/kate/katekttsd.cpp @@ -0,0 +1,120 @@ +/*************************************************************************** + A KTextEditor (Kate Part) plugin for speaking text. + + Copyright: + (C) 2003-2004 by Olaf Schmidt <ojschmidt@kde.org> + (C) 2005 by Gary Cramblitt <garycramblitt@comcast.net> + + Original Author: Olaf Schmidt <ojschmidt@kde.org> + ***************************************************************************/ + +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +// Qt includes. +#include <qmessagebox.h> +#include <dcopclient.h> +#include <qtimer.h> + +// KDE includes. +#include <ktexteditor/editinterface.h> +#include <ktexteditor/selectioninterface.h> + +#include <kaction.h> +#include <klocale.h> +#include <kstandarddirs.h> +#include <kapplication.h> +#include <kgenericfactory.h> + +// KateKttsdPlugin includes. +#include "katekttsd.h" +#include "katekttsd.moc" + +K_EXPORT_COMPONENT_FACTORY( ktexteditor_kttsd, KGenericFactory<KateKttsdPlugin>( "ktexteditor_kttsd" ) ) + +KateKttsdPlugin::KateKttsdPlugin( QObject *parent, const char* name, const QStringList& ) + : KTextEditor::Plugin ( (KTextEditor::Document*) parent, name ) +{ +} + +KateKttsdPlugin::~KateKttsdPlugin() +{ +} + + +void KateKttsdPlugin::addView(KTextEditor::View *view) +{ + KateKttsdPluginView *nview = new KateKttsdPluginView (view, "KTTSD Plugin"); + m_views.append (nview); +} + +void KateKttsdPlugin::removeView(KTextEditor::View *view) +{ + for (uint z=0; z < m_views.count(); ++z) + if (m_views.at(z)->parentClient() == view) + { + KateKttsdPluginView *nview = m_views.at(z); + m_views.remove (nview); + delete nview; + } + KGlobal::locale()->removeCatalogue("kttsd"); +} + + +KateKttsdPluginView::KateKttsdPluginView( KTextEditor::View *view, const char *name ) + : QObject( view, name ), + KXMLGUIClient( view ) +{ + view->insertChildClient( this ); + setInstance( KGenericFactory<KateKttsdPlugin>::instance() ); + KGlobal::locale()->insertCatalogue("kttsd"); + (void) new KAction( i18n("Speak Text"), "kttsd", 0, this, SLOT(slotReadOut()), actionCollection(), "tools_kttsd" ); + setXMLFile( "ktexteditor_kttsdui.rc" ); +} + +void KateKttsdPluginView::slotReadOut() +{ + KTextEditor::View *v = (KTextEditor::View*)parent(); + KTextEditor::SelectionInterface *si = KTextEditor::selectionInterface( v->document() ); + QString text; + + if ( si->hasSelection() ) + text = si->selection(); + else { + KTextEditor::EditInterface *ei = KTextEditor::editInterface( v->document() ); + text = ei->text(); + } + + DCOPClient *client = kapp->dcopClient(); + // If KTTSD not running, start it. + if (!client->isApplicationRegistered("kttsd")) + { + QString error; + if (kapp->startServiceByDesktopName("kttsd", QStringList(), &error)) + QMessageBox::warning(0, i18n( "Starting KTTSD Failed"), error ); + } + QByteArray data; + QByteArray data2; + QCString replyType; + QByteArray replyData; + QDataStream arg(data, IO_WriteOnly); + arg << text << ""; + if ( !client->call("kttsd", "KSpeech", "setText(QString,QString)", + data, replyType, replyData, true) ) + QMessageBox::warning( 0, i18n( "DCOP Call Failed" ), + i18n( "The DCOP call setText failed." )); + QDataStream arg2(data2, IO_WriteOnly); + + arg2 << 0; + if ( !client->call("kttsd", "KSpeech", "startText(uint)", + data2, replyType, replyData, true) ) + QMessageBox::warning( 0, i18n( "DCOP Call Failed" ), + i18n( "The DCOP call startText failed." )); +} + |