1
/***************************************************************************
2
A KTextEditor (Kate Part) plugin for speaking text.
5
(C) 2003-2004 by Olaf Schmidt <ojschmidt@kde.org>
6
(C) 2005 by Gary Cramblitt <garycramblitt@comcast.net>
7
(C) 2009 by Laurent Montel <montel@kde.org>
9
Original Author: Olaf Schmidt <ojschmidt@kde.org>
10
***************************************************************************/
12
/***************************************************************************
14
* This program is free software; you can redistribute it and/or modify *
15
* it under the terms of the GNU General Public License as published by *
16
* the Free Software Foundation; either version 2 of the License, or *
17
* (at your option) any later version. *
19
***************************************************************************/
21
// KateKttsdPlugin includes.
22
#include "katekttsd.h"
23
#include "katekttsd.moc"
24
#include <ktexteditor/document.h>
26
#include <QtCore/QTimer>
27
#include <QtDBus/QtDBus>
30
#include <kmessagebox.h>
33
#include <kstandarddirs.h>
34
#include <ktoolinvocation.h>
35
#include <KActionCollection>
37
#include <kate/mainwindow.h>
39
K_PLUGIN_FACTORY(KateKttsdFactory, registerPlugin<KateKttsdPlugin>();)
40
K_EXPORT_PLUGIN(KateKttsdFactory(KAboutData("kate_kttsd","kate_kttsd",ki18n("Jovie Text-to-Speech Plugin"), "0.1", ki18n("Jovie Text-to-Speech Plugin"), KAboutData::License_LGPL_V2)) )
42
KateKttsdPlugin::KateKttsdPlugin(QObject* parent, const QList<QVariant>&)
43
: Kate::Plugin ((Kate::Application*)parent)
47
Kate::PluginView *KateKttsdPlugin::createView (Kate::MainWindow *mainWindow)
49
return new KateKttsdPluginView(mainWindow);
52
KateKttsdPluginView::KateKttsdPluginView( Kate::MainWindow *mw )
53
: Kate::PluginView (mw),
54
Kate::XMLGUIClient(KateKttsdFactory::componentData())
56
KGlobal::locale()->insertCatalog("kttsd");
57
KAction *a = actionCollection()->addAction("tools_kttsd");
58
a->setText(i18n("Speak Text"));
59
a->setIcon(KIcon("preferences-desktop-text-to-speech"));
60
connect( a, SIGNAL(triggered(bool)), this, SLOT(slotReadOut()) );
62
mainWindow()->guiFactory()->addClient(this);
65
KateKttsdPluginView::~KateKttsdPluginView()
67
mainWindow()->guiFactory()->removeClient( this );
71
void KateKttsdPluginView::slotReadOut()
73
KTextEditor::View *v = mainWindow()->activeView();
76
KTextEditor::Document *doc = v->document();
80
text = v->selectionText();
87
// If KTTSD not running, start it.
88
if (!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kttsd"))
91
if (KToolInvocation::startServiceByDesktopName("kttsd", QStringList(), &error))
93
KMessageBox::error(0, i18n( "Starting Jovie Text-to-Speech Service Failed"), error );
98
QDBusInterface kttsd( "org.kde.kttsd", "/KSpeech", "org.kde.KSpeech" );
100
QDBusReply<int> reply = kttsd.call("say", text,0);
101
if ( !reply.isValid())
102
KMessageBox::error( 0, i18n( "D-Bus Call Failed" ),
103
i18n( "The D-Bus call say failed." ));