// Copyright 2008 Simon Edwards <simon@simonzone.com>

//                 Generated by twine

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as
// published by the Free Software Foundation; either version 2, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details

// You should have received a copy of the GNU Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.


namespace Plasma
{

class RunnerScript : Plasma::ScriptEngine
{
%TypeHeaderCode
#include <plasma/scripting/runnerscript.h>
%End

public:
    explicit                RunnerScript (QObject* parent /TransferThis/ = 0);
    void                    setRunner (Plasma::AbstractRunner* runner);
    Plasma::AbstractRunner*  runner () const;
    virtual void            match (Plasma::RunnerContext& search);
    virtual void            run (const Plasma::RunnerContext& search, const Plasma::QueryMatch& action);

protected:
    QString                 mainScript () const;
    const Plasma::Package*  package () const;
public:
    ~RunnerScript ();
signals:
    void                    prepare ();
    void                    teardown ();
    void                    createRunOptions (QWidget* widget);
    void                    reloadConfiguration ();
protected:
    KConfigGroup            config () const;
    void                    setIgnoredTypes (Plasma::RunnerContext::Types types);
    void                    setHasRunOptions (bool hasRunOptions);
    void                    setSpeed (Plasma::AbstractRunner::Speed newSpeed);
    void                    setPriority (Plasma::AbstractRunner::Priority newPriority);
    KService::List          serviceQuery (const QString& serviceType, const QString& constraint = QString()) const;
    QAction*                addAction (const QString& id, const QIcon& icon, const QString& text);
    void                    addAction (const QString& id, QAction* action);
    void                    removeAction (const QString& id);
    QAction*                action (const QString& id) const;
    QHash<QString,QAction*>  actions () const;
    void                    clearActions ();
    void                    addSyntax (const Plasma::RunnerSyntax& syntax);
    void                    setSyntaxes (const QList<Plasma::RunnerSyntax>& syns);
signals:
    void                    actionsForMatch (const Plasma::QueryMatch& match, QList<QAction*>* actions);
protected:
    KPluginInfo             description () const;
    Plasma::DataEngine*     dataEngine (const QString& name);
};
// RunnerScript

};
// Plasma


