• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

kjsembed

  • sources
  • kde-4.14
  • kdelibs
  • kjsembed
  • kjsembed
iosupport.cpp
Go to the documentation of this file.
1 /* This file is part of the KDE libraries
2  Copyright (C) 2005, 2006 Ian Reinhart Geiser <geiseri@kde.org>
3  Copyright (C) 2005, 2006 Matt Broadstone <mbroadst@gmail.com>
4  Copyright (C) 2005, 2006 Richard J. Moore <rich@kde.org>
5  Copyright (C) 2005, 2006 Erik L. Bunce <kde@bunce.us>
6 
7  This library is free software; you can redistribute it and/or
8  modify it under the terms of the GNU Library General Public
9  License as published by the Free Software Foundation; either
10  version 2 of the License, or (at your option) any later version.
11 
12  This library is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  Library General Public License for more details.
16 
17  You should have received a copy of the GNU Library General Public License
18  along with this library; see the file COPYING.LIB. If not, write to
19  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20  Boston, MA 02110-1301, USA.
21 */
22 #include "iosupport.h"
23 #include "static_binding.h"
24 #include "kjseglobal.h"
25 
26 #include <kjs/object.h>
27 #include <QtCore/QDebug>
28 
29 #include <QtCore/QStringList>
30 #include <QtCore/QProcess>
31 
32 using namespace KJSEmbed;
33 
34 KJS::JSValue *callPrint( KJS::ExecState *exec, KJS::JSObject * /*self*/, const KJS::List &args )
35 {
36  (*KJSEmbed::conout()) << toQString(args[0]->toString(exec));
37  return KJS::jsNull();
38 }
39 
40 KJS::JSValue * callPrintLn( KJS::ExecState *exec, KJS::JSObject * /*self*/, const KJS::List &args )
41 {
42  (*KJSEmbed::conout()) << toQString(args[0]->toString(exec)) << endl;
43  return KJS::jsNull();
44 }
45 
46 KJS::JSValue * callDebug( KJS::ExecState *exec, KJS::JSObject * /*self*/, const KJS::List &args )
47 {
48  //(*KJSEmbed::conerr()) << "Debug: " << toQString(args[0]->toString(exec)) << endl;
49  qDebug() << "Debug: " << toQString(args[0]->toString(exec));
50  return KJS::jsNull();
51 }
52 
53 KJS::JSValue * callReadLine( KJS::ExecState *exec, KJS::JSObject * /*self*/, const KJS::List &args )
54 {
55  Q_UNUSED(exec);
56  Q_UNUSED(args);
57  QString line = conin()->readLine();
58  return KJS::jsString( line );
59 }
60 
61 KJS::JSValue * callSystem( KJS::ExecState *exec, KJS::JSObject * /*self*/, const KJS::List &args )
62 {
63  QProcess systemProcess;
64  QStringList processArgs = toQString(args[0]->toString(exec)).split( ' ' );
65  QString app = processArgs[0];
66  processArgs.pop_front();
67 
68  systemProcess.start( app, processArgs );
69  if (!systemProcess.waitForStarted())
70  {
71  return KJS::throwError(exec, KJS::GeneralError, "Application could not start.");
72  }
73  if (!systemProcess.waitForFinished())
74  {
75  return KJS::throwError(exec, KJS::GeneralError, "Application crashed.");
76  }
77  return KJS::jsString( systemProcess.readAll().data() );
78 }
79 
80 const Method IoFactory::IoMethods[] =
81 {
82  {"debug", 1, KJS::DontDelete|KJS::ReadOnly, &callDebug },
83  {"print", 1, KJS::DontDelete|KJS::ReadOnly, &callPrint },
84  {"println", 1, KJS::DontDelete|KJS::ReadOnly, &callPrintLn },
85  {"readln", 0, KJS::DontDelete|KJS::ReadOnly, &callReadLine },
86  {"system", 1, KJS::DontDelete|KJS::ReadOnly, &callSystem },
87  {0, 0, 0, 0 }
88 };
89 
90 //kate: indent-spaces on; indent-width 4; replace-tabs on; indent-mode cstyle;
callPrintLn
KJS::JSValue * callPrintLn(KJS::ExecState *exec, KJS::JSObject *, const KJS::List &args)
Definition: iosupport.cpp:40
callSystem
KJS::JSValue * callSystem(KJS::ExecState *exec, KJS::JSObject *, const KJS::List &args)
Definition: iosupport.cpp:61
QTextStream::readLine
QString readLine(qint64 maxlen)
QString::split
QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const
callPrint
KJS::JSValue * callPrint(KJS::ExecState *exec, KJS::JSObject *, const KJS::List &args)
Definition: iosupport.cpp:34
KJSEmbed::conin
KJSEMBED_EXPORT QTextStream * conin()
Definition: kjseglobal.cpp:118
KJSEmbed::Method
Method structure.
Definition: binding_support.h:294
callDebug
KJS::JSValue * callDebug(KJS::ExecState *exec, KJS::JSObject *, const KJS::List &args)
Definition: iosupport.cpp:46
QList::pop_front
void pop_front()
KJSEmbed::IoFactory::IoMethods
static const Method IoMethods[]
Definition: iosupport.h:34
QProcess
QIODevice::readAll
QByteArray readAll()
callReadLine
KJS::JSValue * callReadLine(KJS::ExecState *exec, KJS::JSObject *, const KJS::List &args)
Definition: iosupport.cpp:53
iosupport.h
KJSEmbed::conout
KJSEMBED_EXPORT QTextStream * conout()
Definition: kjseglobal.cpp:130
QString
QStringList
QProcess::waitForStarted
bool waitForStarted(int msecs)
kjseglobal.h
KJS::jsString
KJS::JSCell * jsString(const QString &s)
Definition: kjseglobal.h:73
List
Definition: variant_binding.cpp:130
static_binding.h
QByteArray::data
char * data()
KJS::throwError
JSObject * throwError(ExecState *e, ErrorType t, const QString &m)
Definition: binding_support.h:241
QProcess::start
void start(const QString &program, const QStringList &arguments, QFlags< QIODevice::OpenModeFlag > mode)
QProcess::waitForFinished
bool waitForFinished(int msecs)
KJSEmbed::toQString
QString toQString(const KJS::UString &u)
Definition: kjseglobal.h:58
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:22:53 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kjsembed

Skip menu "kjsembed"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal