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 | 90825e2392b2d70e43c7a25b8a3752299a933894 (patch) | |
tree | e33aa27f02b74604afbfd0ea4f1cfca8833d882a /kjsembed/jsconsolewidget.h | |
download | tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.tar.gz tdebindings-90825e2392b2d70e43c7a25b8a3752299a933894.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/kdebindings@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kjsembed/jsconsolewidget.h')
-rw-r--r-- | kjsembed/jsconsolewidget.h | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/kjsembed/jsconsolewidget.h b/kjsembed/jsconsolewidget.h new file mode 100644 index 00000000..cd173080 --- /dev/null +++ b/kjsembed/jsconsolewidget.h @@ -0,0 +1,153 @@ +// -*- c++ -*- + +/* + * Copyright (C) 2001-2003, Richard J. Moore <rich@kde.org> + * + * This library 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 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +#ifndef KJSEMBEDJSCONSOLEWIDGET_H +#define KJSEMBEDJSCONSOLEWIDGET_H + +#include <qframe.h> +#include <kjsembed/global.h> + +class QPushButton; +class QHBox; + +class KLineEdit; +class KPopupTitle; +class KProcess; +class KShellProcess; +class KTextEdit; + +namespace KJS { + class Value; +} + +namespace KJSEmbed { + +class KJSEmbedPart; + +/** + * A QWidget that provides a console for executing Javascript commands. Creating + * a JS console is easy, as you can see below: + * + * <pre> + * KJS::Object global( new KJS::ObjectImp() ); + * KJS::Interpreter *js = new KJS::Interpreter( global ); + * KJSEmbed::JSConsoleWidget *win = new KJSEmbed::JSConsoleWidget( js ); + * win->addBindings( js->globalExec(), global ); + * </pre> + * + * This example creates a console for a JS interpreter and adds a print function + * to the interpreter. + * + * @version $Id$ + * @author Richard Moore, rich@kde.org + */ +class KJSEMBED_EXPORT JSConsoleWidget : public QFrame +{ + Q_OBJECT + +public: + JSConsoleWidget( KJSEmbedPart *js, QWidget *parent=0, const char *name=0 ); + virtual ~JSConsoleWidget(); + +public slots: + /** Returns the KJSEmbedPart the console is using. */ + KJSEmbed::KJSEmbedPart *jscript() const { return js; } + + /** Returns the message widget. */ + KTextEdit *messages() const { return log; } + + /** Returns the title widget. */ + KPopupTitle *title() const { return ttl; } + + /** + * Returns the QHBox used to layout the entry part of the console. This + * can be used by clients to hide and show the interactive parts of the + * console, or to add new buttons etc. + */ + QHBox *commandBox() const { return cmdBox; } + + /** Invokes the content of the command entry field. */ + void invoke(); + + /** Invokes the specified command string. */ + virtual bool execute( const QString &cmd ); + + bool execute( const QString &cmd, const KJS::Value &self ); + + /** Prints the specified string to the console. */ + virtual void println( const QString &text ); + + /** + * Prints the specified string to the console as a warning, the default + * implementation prints the text in red. + */ + virtual void warn( const QString &text ); + + /** + * Runs the specified command using KShellProcess. The output of the + * command is displayed in the console. Any output sent to stdout is + * displayed as normal text, anything sent to stderr is displayed as + * a warning. Once the command has finished the exit status is printed + * if it is non-zero. + * + * Note that there is no extra layer of security to prevent this method + * being called from a script because in general a script that can + * access this object can also write content to a file then execute the + * file. If you intend to run untrusted scripts, it is your responsibility + * to ensure that you only expose safe objects and methods to the + * interpreter. + */ + virtual bool run( const QString &shellCmd ); + +protected: + /** Creates the console view. */ + void createView(); + +protected slots: + /** Called when the process exits. */ + void childExited(); + + /** Called when the process sends message to stdout. */ + void receivedStdOutput(KProcess *, char *, int); + + /** Called when the process sends message to stderr. */ + void receivedStdError(KProcess *, char *, int); + +private: + KJSEmbedPart *js; + KShellProcess *proc; + + KTextEdit *log; + QHBox *cmdBox; + KLineEdit *cmd; + QPushButton *go; + KPopupTitle *ttl; + + class JSConsoleWidgetPrivate *d; +}; + +} // namespace KJSEmbed + +#endif // KJSEMBEDJSCONSOLEWIDGET_H + +// Local Variables: +// c-basic-offset: 4 +// End: |