You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdevelop/lib/util/kscriptactionmanager.h

140 lines
4.6 KiB

/***************************************************************************
* Copyright (C) 2004 by ian geiser *
* geiseri@sourcextreme.com *
* *
* 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. *
* *
* 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 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. *
***************************************************************************/
#ifndef KScriptAction_H
#define KScriptAction_H
#include <scriptclientinterface.h>
#include <qobject.h>
#include <qptrlist.h>
class KAction;
class KActionCollection;
class KScriptInterface;
class KScriptActionManager;
class QTimer;
/**
* Connects a KAction to a script runner.
*
* @author ian geiser geiseri@sourcextreme.com
*/
class KScriptAction : public QObject, public KScriptClientInterface {
Q_OBJECT
public:
KScriptAction( const QString &scriptDesktopFile, QObject *interface, KActionCollection *ac );
virtual ~KScriptAction();
/**
* KAction for the current script
*/
KAction *action();
/**
* Returns the validity of the current script.
*/
bool isValid() const;
signals:
// Reimplemented from KScript
void error ( const QString &msg );
void warning ( const QString &msg );
void output ( const QString &msg );
void progress ( int percent );
void done ( KScriptClientInterface::Result result, const QVariant &returned );
signals:
void scriptError ( const QString &msg );
void scriptWarning ( const QString &msg );
void scriptOutput ( const QString &msg );
void scriptProgress ( int percent );
void scriptDone ( KScriptClientInterface::Result result, const QVariant &returned );
private slots:
void activate();
void cleanup();
void scriptFinished();
private:
KAction *m_action;
QString m_scriptName;
QString m_scriptType;
QString m_scriptFile;
QString m_scriptMethod;
KScriptInterface *m_interface;
bool m_isValid;
QTimer *m_timeout;
uint m_refs;
};
/**
* Provides an actionlist of scripts that are currently available.
* Scripts are not actually loaded until they are actually executed.
* @author ian geiser <geiseri@sourcextreme.com>
*/
class KScriptActionManager : public QObject {
Q_OBJECT
public:
/**
* Create a script manager that is attached to an action collection.
*/
KScriptActionManager( QObject *parent, KActionCollection *ac );
~KScriptActionManager();
/**
* Return all currently loaded scripts in a direcotry and attaches them
* to a QObject interface. If the dirs are empty the current applications
* scripts directory is used. The dirs are actual directories to search
* in the $KDEPATH/data/ direcories. So if you add "coolapp/data" then
* the manager will search in $KDEPATH/data/coolapp/data for all desktop
* files that are scripts.
*/
QPtrList<KAction> scripts( QObject *interface, const QStringList &dirs = QStringList() ) const;
signals:
/**
* Returns an error message from a script.
*/
void scriptError ( const QString &msg );
/**
* Returns a warning message from a script.
*/
void scriptWarning ( const QString &msg );
/**
* Returns a standard out message from a script.
*/
void scriptOutput ( const QString &msg );
/**
* Returns the percentage complete of an operation in the script.
*/
void scriptProgress ( int percent );
/**
* Notifies that the script has finished.
*/
void scriptDone( KScriptClientInterface::Result result, const QVariant &returned );
private:
mutable QPtrList<KScriptAction> m_actions;
KActionCollection *m_ac;
};
#endif