From 114a878c64ce6f8223cfd22d76a20eb16d177e5e Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdevelop@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- lib/util/kscriptactionmanager.h | 139 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 lib/util/kscriptactionmanager.h (limited to 'lib/util/kscriptactionmanager.h') diff --git a/lib/util/kscriptactionmanager.h b/lib/util/kscriptactionmanager.h new file mode 100644 index 00000000..234e4a3c --- /dev/null +++ b/lib/util/kscriptactionmanager.h @@ -0,0 +1,139 @@ +/*************************************************************************** +* 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., * +* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * +***************************************************************************/ +#ifndef KScriptAction_H +#define KScriptAction_H + +#include +#include +#include + +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 + */ +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 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 m_actions; + KActionCollection *m_ac; +}; +#endif -- cgit v1.2.3