mirror of
https://invent.kde.org/graphics/okular
synced 2024-09-12 20:51:17 +00:00
d3a549ca25
Summary: This adds a new data object "Event" that can be used to carry information in and out of JavaScript execution contexts. The Event Object is defined in the Adobe JavaScript scripting reference. The implementation now adds handling for the FieldCalculate Event. It should be extensible enough so that in the future more events could be supported. Reviewers: #okular Subscribers: aacid Tags: #okular Maniphest Tasks: T7805 Differential Revision: https://phabricator.kde.org/D10073
78 lines
1.8 KiB
C++
78 lines
1.8 KiB
C++
/***************************************************************************
|
|
* Copyright (C) 2008 by Pino Toscano <pino@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. *
|
|
***************************************************************************/
|
|
|
|
#include "scripter.h"
|
|
|
|
#include <QtCore/QDebug>
|
|
|
|
#include "debug_p.h"
|
|
#include "script/executor_kjs_p.h"
|
|
|
|
using namespace Okular;
|
|
|
|
class Okular::ScripterPrivate
|
|
{
|
|
public:
|
|
ScripterPrivate( DocumentPrivate *doc )
|
|
: m_doc( doc ), m_kjs( nullptr ), m_event( nullptr )
|
|
{
|
|
}
|
|
|
|
~ScripterPrivate()
|
|
{
|
|
delete m_kjs;
|
|
}
|
|
|
|
DocumentPrivate *m_doc;
|
|
ExecutorKJS *m_kjs;
|
|
Event *m_event;
|
|
};
|
|
|
|
Scripter::Scripter( DocumentPrivate *doc )
|
|
: d( new ScripterPrivate( doc ) )
|
|
{
|
|
}
|
|
|
|
Scripter::~Scripter()
|
|
{
|
|
delete d;
|
|
}
|
|
|
|
QString Scripter::execute( ScriptType type, const QString &script )
|
|
{
|
|
qCDebug(OkularCoreDebug) << "executing the script:";
|
|
#if 0
|
|
if ( script.length() < 1000 )
|
|
qDebug() << script;
|
|
else
|
|
qDebug() << script.left( 1000 ) << "[...]";
|
|
#endif
|
|
switch ( type )
|
|
{
|
|
case JavaScript:
|
|
if ( !d->m_kjs )
|
|
{
|
|
d->m_kjs = new ExecutorKJS( d->m_doc );
|
|
}
|
|
d->m_kjs->execute( script, d->m_event );
|
|
break;
|
|
}
|
|
return QString();
|
|
}
|
|
|
|
void Scripter::setEvent( Event *event )
|
|
{
|
|
d->m_event = event;
|
|
}
|
|
|
|
Event *Scripter::event() const
|
|
{
|
|
return d->m_event;
|
|
}
|