~ubuntu-branches/ubuntu/saucy/kate/saucy

« back to all changes in this revision

Viewing changes to kate/plugins/kttsd/katekttsd.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell, Rohan Garg, Jonathan Riddell
  • Date: 2013-06-21 00:48:29 UTC
  • mfrom: (1.1.28)
  • Revision ID: package-import@ubuntu.com-20130621004829-y2ui02eg0j47h94y
Tags: 4:4.10.80-0ubuntu1
[ Rohan Garg ]
* New upstream release
  - Update and sort install files
  - Drop kubuntu_pate_find_python.diff, kubuntu_kate_initial_preference.patch,
    kubuntu_find_python.diff from debian/patches , not required

[ Jonathan Riddell ]
* New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/***************************************************************************
2
 
  A KTextEditor (Kate Part) plugin for speaking text.
3
 
 
4
 
  Copyright:
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>
8
 
 
9
 
  Original Author: Olaf Schmidt <ojschmidt@kde.org>
10
 
 ***************************************************************************/
11
 
 
12
 
/***************************************************************************
13
 
 *                                                                         *
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.                                   *
18
 
 *                                                                         *
19
 
 ***************************************************************************/
20
 
 
21
 
// KateKttsdPlugin includes.
22
 
#include "katekttsd.h"
23
 
#include "katekttsd.moc"
24
 
#include <ktexteditor/document.h>
25
 
// Qt includes.
26
 
#include <QtCore/QTimer>
27
 
#include <QtDBus/QtDBus>
28
 
 
29
 
// KDE includes.
30
 
#include <kmessagebox.h>
31
 
#include <kaction.h>
32
 
#include <klocale.h>
33
 
#include <kstandarddirs.h>
34
 
#include <ktoolinvocation.h>
35
 
#include <KActionCollection>
36
 
#include <KAboutData>
37
 
#include <kate/mainwindow.h>
38
 
 
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)) )
41
 
 
42
 
KateKttsdPlugin::KateKttsdPlugin(QObject* parent, const QList<QVariant>&)
43
 
    : Kate::Plugin ((Kate::Application*)parent)
44
 
{
45
 
}
46
 
 
47
 
Kate::PluginView *KateKttsdPlugin::createView (Kate::MainWindow *mainWindow)
48
 
{
49
 
    return new KateKttsdPluginView(mainWindow);
50
 
}
51
 
 
52
 
KateKttsdPluginView::KateKttsdPluginView( Kate::MainWindow *mw )
53
 
    : Kate::PluginView (mw),
54
 
    Kate::XMLGUIClient(KateKttsdFactory::componentData())
55
 
{
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()) );
61
 
 
62
 
    mainWindow()->guiFactory()->addClient(this);
63
 
}
64
 
 
65
 
KateKttsdPluginView::~KateKttsdPluginView()
66
 
{
67
 
    mainWindow()->guiFactory()->removeClient( this );
68
 
}
69
 
 
70
 
 
71
 
void KateKttsdPluginView::slotReadOut()
72
 
{
73
 
    KTextEditor::View *v = mainWindow()->activeView();
74
 
    if ( !v )
75
 
        return;
76
 
    KTextEditor::Document *doc = v->document();
77
 
    QString text;
78
 
    if ( v->selection() )
79
 
    {
80
 
        text = v->selectionText();
81
 
    }
82
 
    else
83
 
        text = doc->text();
84
 
    if ( text.isEmpty() )
85
 
        return;
86
 
 
87
 
    // If KTTSD not running, start it.
88
 
    if (!QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.kttsd"))
89
 
    {
90
 
        QString error;
91
 
        if (KToolInvocation::startServiceByDesktopName("kttsd", QStringList(), &error))
92
 
        {
93
 
            KMessageBox::error(0, i18n( "Starting Jovie Text-to-Speech Service Failed"), error );
94
 
            return;
95
 
        }
96
 
    }
97
 
 
98
 
    QDBusInterface kttsd( "org.kde.kttsd", "/KSpeech", "org.kde.KSpeech" );
99
 
 
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." ));
104
 
}
105