diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | e9ae80694875f869892f13f4fcaf1170a00dea41 (patch) | |
tree | aa2f8d8a217e2d376224c8d46b7397b68d35de2d /kommander/widget/kommanderwidget.h | |
download | tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.tar.gz tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.zip |
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/kdewebdev@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kommander/widget/kommanderwidget.h')
-rw-r--r-- | kommander/widget/kommanderwidget.h | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/kommander/widget/kommanderwidget.h b/kommander/widget/kommanderwidget.h new file mode 100644 index 00000000..90a748b2 --- /dev/null +++ b/kommander/widget/kommanderwidget.h @@ -0,0 +1,162 @@ +/*************************************************************************** + kommanderwidget.h - Text widget core functionality + ------------------- + copyright : (C) 2002-2003 Marc Britton <consume@optusnet.com.au> + (C) 2004 Michal Rudolf <mrudolf@kdewebdwev.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. * + * * + ***************************************************************************/ + +#ifndef _HAVE_KOMMANDERWIDGET_H_ +#define _HAVE_KOMMANDERWIDGET_H_ + +/* KDE INCLUDES */ +#include <kprocess.h> + +#include "kommander_export.h" +/* QT INCLUDES */ +#include <qmap.h> +#include <qobject.h> +#include <qpair.h> +#include <qstring.h> +#include <qstringlist.h> + +class ParserData; + +class KOMMANDER_EXPORT KommanderWidget +{ + friend class MyProcess; +public: + KommanderWidget(QObject *); + virtual ~KommanderWidget(); + + //List of available states. Most widgets have only one state, but f. e. radiobutton has both + // 'checked' and 'unchecked' + virtual QStringList states() const; + virtual QStringList displayStates() const; + virtual QString currentState() const = 0; + + virtual bool isKommanderWidget() const = 0; + + // Associated script + virtual void setAssociatedText(const QStringList& a_associations); + virtual QStringList associatedText() const; + virtual bool hasAssociatedText(); + + // Execute default script, expanding all @macros. + virtual QString evalAssociatedText(); + // Execute given script, expanding all @macros. + virtual QString evalAssociatedText(const QString&); + // Evaluate given Kommander function using given args. + virtual QString evalFunction(const QString& function, const QStringList& args); + // Parse and evaluate function for given widget, converting it to appropriate DCOP call. + virtual QString evalWidgetFunction(const QString& identifier, const QString& s, int& pos); + // Evaluate given array function using given args. + virtual QString evalArrayFunction(const QString&, const QStringList&); + // Parse and evaluate given execBegin..execEnd block. + virtual QString evalExecBlock(const QStringList&, const QString& s, int& pos); + // Parse and evaluate given forEach..end block. + virtual QString evalForEachBlock(const QStringList&, const QString& s, int& pos); + // Parse and evaluate given for..end block. + virtual QString evalForBlock(const QStringList&, const QString& s, int& pos); + // Parse and evaluate given switch..case..end block. + virtual QString evalSwitchBlock(const QStringList&, const QString& s, int& pos); + // Parse and evaluate given if..endif block. + virtual QString evalIfBlock(const QStringList&, const QString& s, int& pos); + // Population text. It will become widgetText after populate() is called + virtual QString populationText() const; + virtual void setPopulationText(const QString&); + virtual void populate() = 0; + + // Handles all widget-specific DCOP calls + virtual QString handleDCOP(int function, const QStringList& args = QStringList()); + // Checks if appropriate function is supported by widget. By default all functions + // are reported as supported: use this to allow recognizing incorrect function calls. + virtual bool isFunctionSupported(int function); + // Checks if the function is common widget function (i. e. supported by all widgets) + virtual bool isCommonFunction(int function); + // Checks if the string is a valid widget name) + virtual bool isWidget(const QString& a_name) const; + // Returns widget from name + virtual KommanderWidget* widgetByName(const QString& a_name) const; + // Returns current widget name; + virtual QString widgetName() const; + // Returns filename associated with the dialog + virtual QString fileName(); + + QObject* object() { return m_thisObject;} + + + // Recognizes editor vs executor mode + static bool inEditor; + // Prints errors in message boxes, not in stderr + static bool showErrors; + // Default parser + static bool useInternalParser; + // Return global variable value + QString global(const QString& variableName); + // Set global variable value + void setGlobal(const QString& variableName, const QString& value); + +protected: + virtual void setStates(const QStringList& a_states); + virtual void setDisplayStates(const QStringList& a_displayStates); + + // Execute DCOP query and return its result or null on failure + // Only QString and int are now handled + QString DCOPQuery(const QStringList& args); + QString localDCOPQuery(const QString function, const QStringList& args = QStringList()); + QString localDCOPQuery(const QString function, const QString& arg1, + const QString& arg2, const QString& arg3 = QString::null, + const QString& arg4 = QString::null); + // Execute given command, return its result + QString execCommand(const QString& a_command, const QString& a_shell = QString::null) const; + // Find and run dialog (with optional parameters) + QString runDialog(const QString& a_dialog, const QString& a_params = QString::null); + // Display error message a_error; display current class name if no other is given + void printError(const QString& a_error) const; + // Auxiliary functions for parser + // Find matching brackets starting from current position + QString parseBrackets(const QString& s, int& from, bool& ok) const; + // Return identifier: the longest string of letters and numbers starting from i + QString parseIdentifier(const QString& s, int& from) const; + // Parse arguments for given function. Returns list of arguments without quotations + QStringList parseArgs(const QString& s, bool &ok); + // Remove quotes from given identifier + QString parseQuotes(const QString& s) const; + // Parse function + QStringList parseFunction(const QString& group, const QString& function, + const QString& s, int& from, bool& ok); + // Detect and return block boundary + int parseBlockBoundary(const QString& s, int from, const QStringList& args) const; + + // Parse given identifier as widget name + KommanderWidget* parseWidget(const QString& name) const; + // Return parent dialog of this widget + QWidget* parentDialog() const; + QString substituteVariable(QString text, QString variable, QString value) const; + + ParserData* internalParserData() const; + + QObject *m_thisObject; + QStringList m_states; + QStringList m_displayStates; + QStringList m_associatedText; + QString m_populationText; + + // Internal parser data + static ParserData* m_parserData; +}; + + +#define ESCCHAR '@' + +#endif |