Merge branch 'master' into editbubble

This commit is contained in:
Sebastian Kügler 2011-12-13 21:26:53 +01:00
commit da7412252e
22 changed files with 163 additions and 16 deletions

View File

@ -135,6 +135,11 @@ void DialogProxy::syncMainItem()
return; return;
} }
if (static_cast<QGraphicsObject *>(m_dialog->graphicsWidget()) == m_mainItem.data() ||
(m_declarativeItemContainer && m_declarativeItemContainer->declarativeItem() == m_mainItem.data())) {
return;
}
//not have a scene? go up in the hyerarchy until we find something with a scene //not have a scene? go up in the hyerarchy until we find something with a scene
QGraphicsScene *scene = m_mainItem.data()->scene(); QGraphicsScene *scene = m_mainItem.data()->scene();
if (!scene) { if (!scene) {
@ -194,7 +199,6 @@ void DialogProxy::setVisible(const bool visible)
if (m_dialog->isVisible() != visible) { if (m_dialog->isVisible() != visible) {
m_dialog->setVisible(visible); m_dialog->setVisible(visible);
if (visible) { if (visible) {
m_dialog->setWindowFlags(Qt::FramelessWindowHint|m_flags);
m_dialog->setVisible(visible); m_dialog->setVisible(visible);
m_dialog->raise(); m_dialog->raise();
} }
@ -339,13 +343,22 @@ void DialogProxy::activateWindow()
int DialogProxy::windowFlags() const int DialogProxy::windowFlags() const
{ {
return (int)m_dialog->windowFlags(); return (int)m_flags;
} }
void DialogProxy::setWindowFlags(const int flags) void DialogProxy::setWindowFlags(const int flags)
{ {
m_flags = (Qt::WindowFlags)flags; /*X misbehaviour: the only way to make a window with the Popup flag working, is to create it with that flag from the beginning*/
m_dialog->setWindowFlags((Qt::WindowFlags)flags); if (((Qt::WindowFlags)flags & Qt::Popup) != (m_flags & Qt::Popup)) {
delete m_dialog;
m_flags = (Qt::WindowFlags)flags;
m_dialog = new Plasma::Dialog(0, Qt::FramelessWindowHint|m_flags);
m_margins = new DialogMargins(m_dialog, this);
m_dialog->installEventFilter(this);
} else {
m_flags = (Qt::WindowFlags)flags;
m_dialog->setWindowFlags(Qt::FramelessWindowHint|m_flags);
}
} }
int DialogProxy::location() const int DialogProxy::location() const

View File

@ -163,7 +163,12 @@ void ToolTipProxy::updateToolTip()
Plasma::ToolTipContent data; Plasma::ToolTipContent data;
data.setMainText(m_mainText); data.setMainText(m_mainText);
data.setSubText(m_subText); data.setSubText(m_subText);
data.setImage(KIcon(m_image).pixmap(IconSize(KIconLoader::Desktop))); if (!m_image.isEmpty()) {
KIcon icon(m_image);
if (!icon.isNull()) {
data.setImage(icon.pixmap(IconSize(KIconLoader::Desktop)));
}
}
Plasma::ToolTipManager::self()->setContent(m_widget, data); Plasma::ToolTipManager::self()->setContent(m_widget, data);
} }

View File

@ -19,9 +19,9 @@ INCLUDE_DIRECTORIES(
qt4_automoc(${declarativedragdrop_SRCS}) qt4_automoc(${declarativedragdrop_SRCS})
kde4_add_library(dragdropplugin SHARED ${declarativedragdrop_SRCS}) kde4_add_library(draganddropplugin SHARED ${declarativedragdrop_SRCS})
target_link_libraries(dragdropplugin ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY}) target_link_libraries(draganddropplugin ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY})
install(TARGETS dragdropplugin DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/draganddrop) install(TARGETS draganddropplugin DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/draganddrop)
install(FILES qmldir DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/draganddrop) install(FILES qmldir DESTINATION ${IMPORTS_INSTALL_DIR}/org/kde/draganddrop)

View File

@ -187,6 +187,11 @@ Item {
visible: textEdit.text == "" && !textArea.activeFocus visible: textEdit.text == "" && !textArea.activeFocus
opacity: 0.5 opacity: 0.5
} }
onActiveFocusChanged: {
if (!textField.activeFocus) {
textInput.closeSoftwareInputPanel()
}
}
} }
} }

View File

@ -149,12 +149,17 @@ Item {
verticalCenter: parent.verticalCenter verticalCenter: parent.verticalCenter
// TODO: see what is the correct policy for margins // TODO: see what is the correct policy for margins
leftMargin: 2 * base.margins.left leftMargin: 2 * base.margins.left
rightMargin: 2 * base.margins.right rightMargin: 2 * base.margins.right + (clearButton.opacity > 0 ? clearButton.width : 0)
} }
selectByMouse: true selectByMouse: true
color: theme.textColor color: theme.textColor
enabled: textField.enabled enabled: textField.enabled
clip: true clip: true
onActiveFocusChanged: {
if (!textField.activeFocus) {
textInput.closeSoftwareInputPanel()
}
}
// Proxying keys events is not required by the // Proxying keys events is not required by the
// common API but is desired in the plasma API. // common API but is desired in the plasma API.
@ -163,6 +168,7 @@ Item {
} }
PlasmaCore.SvgItem { PlasmaCore.SvgItem {
id: clearButton
svg: PlasmaCore.Svg {imagePath: "widgets/lineedit"} svg: PlasmaCore.Svg {imagePath: "widgets/lineedit"}
elementId: "clearbutton" elementId: "clearbutton"
width: textInput.height width: textInput.height

View File

@ -124,8 +124,7 @@ Item{
PlasmaCore.FrameSvgItem { PlasmaCore.FrameSvgItem {
id: frameSvg id: frameSvg
imagePath: "widgets/frame" imagePath: "widgets/toolbar"
prefix: "raised"
anchors { anchors {
fill: parent fill: parent
leftMargin: -margins.left leftMargin: -margins.left

View File

@ -13,6 +13,7 @@ Name[en_GB]=plasma-kpart
Name[es]=plasma-kpart Name[es]=plasma-kpart
Name[et]=plasma-kpart Name[et]=plasma-kpart
Name[eu]=plasma-kpart Name[eu]=plasma-kpart
Name[fa]=plasma-kpart
Name[fi]=plasma-kpart Name[fi]=plasma-kpart
Name[fr]=plasma-kpart Name[fr]=plasma-kpart
Name[he]=plasma-kpart Name[he]=plasma-kpart
@ -28,6 +29,7 @@ Name[km]=plasma-kpart
Name[kn]=plasma-kpart Name[kn]=plasma-kpart
Name[ko]=plasma-kpart Name[ko]=plasma-kpart
Name[lt]=plasma-kpart Name[lt]=plasma-kpart
Name[lv]=plasma-kpart
Name[nb]=plasma-kpart Name[nb]=plasma-kpart
Name[nds]=Kpart för Plasma Name[nds]=Kpart för Plasma
Name[nl]=plasma-kpart Name[nl]=plasma-kpart

View File

@ -87,6 +87,7 @@ Description[kk]=Қашықтағы Plasma виджеттер ережелері
Description[km]=ការពារ​ប្រព័ន្ធ​មិន​ឲ្យ​រក្សាទុក​គោលនយោបាយ​របស់​ធាតុក្រាហ្វិក​ប្លាស្មា​ពី​ចម្ងាយ Description[km]=ការពារ​ប្រព័ន្ធ​មិន​ឲ្យ​រក្សាទុក​គោលនយោបាយ​របស់​ធាតុក្រាហ្វិក​ប្លាស្មា​ពី​ចម្ងាយ
Description[ko]=Plasma 원격 위젯 정책을 저장하지 못하도록 합니다 Description[ko]=Plasma 원격 위젯 정책을 저장하지 못하도록 합니다
Description[lt]=Neleidžia sistemai išsaugoti nutolusių plazmos valdiklių taisyklių Description[lt]=Neleidžia sistemai išsaugoti nutolusių plazmos valdiklių taisyklių
Description[lv]=Liedz sistēmai saglabāt plasma attālināto sīkrīku politikas
Description[nb]=Hindrer at systemet lagrer praksiser for plasmaelementer på nettverket Description[nb]=Hindrer at systemet lagrer praksiser for plasmaelementer på nettverket
Description[nds]=Höllt dat Systeem vun't Sekern vun de Regeln för feern Plasma-Lüttprogrammen af Description[nds]=Höllt dat Systeem vun't Sekern vun de Regeln för feern Plasma-Lüttprogrammen af
Description[nl]=Voorkomt het opslaan door het systeem van beleidsregels voor widgets op afstand Description[nl]=Voorkomt het opslaan door het systeem van beleidsregels voor widgets op afstand

View File

@ -21,11 +21,15 @@
#include <QDir> #include <QDir>
#include <KDesktopFile>
#include <KGlobalSettings> #include <KGlobalSettings>
#include <KIO/CopyJob>
#include <KIO/Job> #include <KIO/Job>
#include <KRun> #include <KRun>
#include <KStandardDirs> #include <KStandardDirs>
#include <Plasma/Package>
QScriptValue ScriptEnv::openUrl(QScriptContext *context, QScriptEngine *engine) QScriptValue ScriptEnv::openUrl(QScriptContext *context, QScriptEngine *engine)
{ {
Q_UNUSED(engine) Q_UNUSED(engine)
@ -87,6 +91,67 @@ QScriptValue ScriptEnv::getUrl(QScriptContext *context, QScriptEngine *engine)
return engine->newQObject(job); return engine->newQObject(job);
} }
QScriptValue ScriptEnv::download(QScriptContext *context, QScriptEngine *engine)
{
if (context->argumentCount() == 0) {
return engine->undefinedValue();
}
QScriptValue v = context->argument(0);
KUrl url = v.isString() ? KUrl(v.toString()) : qscriptvalue_cast<KUrl>(v);
if (!url.isValid()) {
return engine->undefinedValue();
}
QString requestedFileName;
if (context->argumentCount() > 1) {
requestedFileName = context->argument(1).toString();
}
ScriptEnv *env = ScriptEnv::findScriptEnv(engine);
if (!env) {
//kDebug() << "findScriptEnv failed";
return engine->undefinedValue();
}
QStringList protocols;
protocols << "http" << "https" << "ftp" << "ftps";
if (!protocols.contains(url.protocol())) {
return engine->undefinedValue();
}
QScriptContext *c = engine->currentContext();
QString destination;
while (c) {
QScriptValue v = c->activationObject().property("__plasma_package");
if (v.isVariant()) {
KDesktopFile config(v.toVariant().value<Plasma::Package>().path() + "/metadata.desktop");
KConfigGroup cg = config.desktopGroup();
const QString pluginName = cg.readEntry("X-KDE-PluginInfo-Name", QString());
destination = KGlobalSettings::downloadPath() + "Plasma/" + pluginName + '/';
break;
}
c = c->parentContext();
}
if (destination.isEmpty()) {
return engine->undefinedValue();
}
requestedFileName.prepend(destination);
QDir dir(requestedFileName);
dir.mkpath(destination);
if (!dir.absolutePath().startsWith(destination)) {
requestedFileName = destination;
}
//TODO: allow showing desktop progress info?
KIO::CopyJob *job = KIO::copy(url, KUrl(requestedFileName), KIO::HideProgressInfo);
return engine->newQObject(job);
}
QScriptValue ScriptEnv::userDataPath(QScriptContext *context, QScriptEngine *engine) QScriptValue ScriptEnv::userDataPath(QScriptContext *context, QScriptEngine *engine)
{ {
Q_UNUSED(engine) Q_UNUSED(engine)

View File

@ -68,7 +68,6 @@ void ScriptEnv::setupGlobalObject()
// property is hidden from scripts. // property is hidden from scripts.
global.setProperty("__plasma_scriptenv", m_engine->newQObject(this), global.setProperty("__plasma_scriptenv", m_engine->newQObject(this),
QScriptValue::ReadOnly|QScriptValue::Undeletable|QScriptValue::SkipInEnumeration); QScriptValue::ReadOnly|QScriptValue::Undeletable|QScriptValue::SkipInEnumeration);
// Add utility functions // Add utility functions
#ifndef DECLARATIVE #ifndef DECLARATIVE
global.setProperty("print", m_engine->newFunction(ScriptEnv::print)); global.setProperty("print", m_engine->newFunction(ScriptEnv::print));
@ -182,6 +181,9 @@ bool ScriptEnv::importBuiltinExtension(const QString &extension, QScriptValue &o
obj.setProperty("userDataPath", m_engine->newFunction(ScriptEnv::userDataPath)); obj.setProperty("userDataPath", m_engine->newFunction(ScriptEnv::userDataPath));
obj.setProperty("runCommand", m_engine->newFunction(ScriptEnv::runCommand)); obj.setProperty("runCommand", m_engine->newFunction(ScriptEnv::runCommand));
return true; return true;
} else if ("download" == extension) {
obj.setProperty("download", m_engine->newFunction(ScriptEnv::download));
return true;
} }
return false; return false;

View File

@ -27,6 +27,11 @@
#include "authorization.h" #include "authorization.h"
namespace Plasma
{
class Package;
} // namespace Plasma
class ScriptEnv : public QObject class ScriptEnv : public QObject
{ {
Q_OBJECT Q_OBJECT
@ -87,6 +92,7 @@ private:
static QScriptValue applicationExists(QScriptContext *context, QScriptEngine *engine); static QScriptValue applicationExists(QScriptContext *context, QScriptEngine *engine);
static QScriptValue openUrl(QScriptContext *context, QScriptEngine *engine); static QScriptValue openUrl(QScriptContext *context, QScriptEngine *engine);
static QScriptValue getUrl(QScriptContext *context, QScriptEngine *engine); static QScriptValue getUrl(QScriptContext *context, QScriptEngine *engine);
static QScriptValue download(QScriptContext *context, QScriptEngine *engine);
static QScriptValue userDataPath(QScriptContext *context, QScriptEngine *engine); static QScriptValue userDataPath(QScriptContext *context, QScriptEngine *engine);
static QScriptValue listAddons(QScriptContext *context, QScriptEngine *engine); static QScriptValue listAddons(QScriptContext *context, QScriptEngine *engine);
static QScriptValue loadAddon(QScriptContext *context, QScriptEngine *engine); static QScriptValue loadAddon(QScriptContext *context, QScriptEngine *engine);

View File

@ -28,6 +28,7 @@ Name[km]=ផ្នែក​បន្ថែម​ Plasma JavaScript
Name[kn]= ಿ Name[kn]= ಿ
Name[ko]=Plasma Name[ko]=Plasma
Name[lt]=Plasma JavaScript priedas Name[lt]=Plasma JavaScript priedas
Name[lv]=Plasma JavaScript papildinājums
Name[nb]=Plasma JavaScript-tillegg Name[nb]=Plasma JavaScript-tillegg
Name[nds]=JavaScript-Verwiedern för Plasma Name[nds]=JavaScript-Verwiedern för Plasma
Name[nl]=Addon voor Plasma JavaScript Name[nl]=Addon voor Plasma JavaScript

View File

@ -28,6 +28,7 @@ Name[km]=ផ្នែក​បន្ថែម Javascript
Name[kn]=ಿ Name[kn]=ಿ
Name[ko]= Name[ko]=
Name[lt]=Javascript priedas Name[lt]=Javascript priedas
Name[lv]=JavaScript papildinājums
Name[nb]=JavaScript-tillegg Name[nb]=JavaScript-tillegg
Name[nds]=JavaScript-Verwiedern Name[nds]=JavaScript-Verwiedern
Name[nl]=Addon voor JavaScript Name[nl]=Addon voor JavaScript
@ -82,6 +83,7 @@ Comment[kk]=Javascript Plasma плагиніне қосымшасы
Comment[km]= Javascript Plasma Comment[km]= Javascript Plasma
Comment[ko]= Plasma Comment[ko]= Plasma
Comment[lt]=Javascript Plasma papildinio priedai Comment[lt]=Javascript Plasma papildinio priedai
Comment[lv]=Papildinājumi Javascript Plasma spraudņiem
Comment[nb]=Tillegg for JavaSript Plasma-programtillegg Comment[nb]=Tillegg for JavaSript Plasma-programtillegg
Comment[nds]=Verwiedern för Plasma sien JavaScript-Modulen Comment[nds]=Verwiedern för Plasma sien JavaScript-Modulen
Comment[nl]=Addons voor Javascript Plasma plugins Comment[nl]=Addons voor Javascript Plasma plugins

View File

@ -24,6 +24,7 @@ Name[kk]=Мәлімдеме виджеті
Name[km]= Name[km]=
Name[ko]=Declarative Name[ko]=Declarative
Name[lt]=Deklaratyvus valdiklis Name[lt]=Deklaratyvus valdiklis
Name[lv]=Deklaratīvais sīkrīks
Name[nb]=Deklarativt skjermelement Name[nb]=Deklarativt skjermelement
Name[nds]=Stüerelement för Verkloren Name[nds]=Stüerelement för Verkloren
Name[nl]=Widget voor declaratie Name[nl]=Widget voor declaratie
@ -77,6 +78,7 @@ Comment[km]=ធាតុ​ក្រាហ្វិក​ប្លា​ស្
Comment[kn]=QML ಿ ಿ ಿ ಿ (ಿ) Comment[kn]=QML ಿ ಿ ಿ ಿ (ಿ)
Comment[ko]=QML Plasma Comment[ko]=QML Plasma
Comment[lt]=Nuosavas Plasma valdiklis parašytas QML ir JavaScript kalba Comment[lt]=Nuosavas Plasma valdiklis parašytas QML ir JavaScript kalba
Comment[lv]=Plasma sīkrīks, rakstīts QML un JavaScript valodās
Comment[nb]=Plasmaelement for dette systemet, skrevet i QML og JavaScript Comment[nb]=Plasmaelement for dette systemet, skrevet i QML og JavaScript
Comment[nds]=En orginaal Plasmaelement, schreven in QML un JavaScript Comment[nds]=En orginaal Plasmaelement, schreven in QML un JavaScript
Comment[nl]=Hier thuishorend Plasma-widget geschreven in QML en JavaScript Comment[nl]=Hier thuishorend Plasma-widget geschreven in QML en JavaScript

View File

@ -76,7 +76,6 @@ QNetworkReply *PackageAccessManager::createRequest(QNetworkAccessManager::Operat
(!m_auth->authorizeRequiredExtension("networkio"))) { (!m_auth->authorizeRequiredExtension("networkio"))) {
return new ErrorReply(op, req); return new ErrorReply(op, req);
} else { } else {
return KIO::AccessManager::createRequest(op, req, outgoingData);
#ifndef PLASMA_NO_KIO #ifndef PLASMA_NO_KIO
return KIO::AccessManager::createRequest(op, req, outgoingData); return KIO::AccessManager::createRequest(op, req, outgoingData);
#else #else

View File

@ -22,12 +22,14 @@
#include "appletinterface.h" #include "appletinterface.h"
#include <QAction> #include <QAction>
#include <QDir>
#include <QFile> #include <QFile>
#include <QScriptEngine> #include <QScriptEngine>
#include <QSignalMapper> #include <QSignalMapper>
#include <QTimer> #include <QTimer>
#include <KDebug> #include <KDebug>
#include <KGlobalSettings>
#include <KIcon> #include <KIcon>
#include <KService> #include <KService>
#include <KServiceTypeTrader> #include <KServiceTypeTrader>
@ -412,6 +414,23 @@ AppletInterface::ItemStatus AppletInterface::status() const
return (AppletInterface::ItemStatus)((int)(applet()->status())); return (AppletInterface::ItemStatus)((int)(applet()->status()));
} }
/*
QString AppletInterface::downloadPath(const QString &file)
{
KDesktopFile config(v.toVariant().value<Plasma::Package>().path() + "/metadata.desktop");
KConfigGroup cg = config.desktopGroup();
const QString pluginName = cg.readEntry("X-KDE-PluginInfo-Name", QString());
destination = KGlobalSettings::downloadPath() + "/Plasma/" + pluginName + '/';
}
*/
QStringList AppletInterface::downloadedFiles() const
{
const QString downloadDir = KGlobalSettings::downloadPath() + "/Plasma/" + applet()->pluginName();
QDir dir(downloadDir);
return dir.entryList(QDir::Files | QDir::NoSymLinks | QDir::Readable);
}
void AppletInterface::gc() void AppletInterface::gc()
{ {
QTimer::singleShot(0, m_appletScriptEngine, SLOT(collectGarbage())); QTimer::singleShot(0, m_appletScriptEngine, SLOT(collectGarbage()));

View File

@ -304,6 +304,9 @@ enum IntervalAlignment {
void setStatus(const ItemStatus &status); void setStatus(const ItemStatus &status);
ItemStatus status() const; ItemStatus status() const;
// Q_INVOKABLE QString downloadPath(const QString &file);
Q_INVOKABLE QStringList downloadedFiles() const;
Q_SIGNALS: Q_SIGNALS:
void releaseVisualFocus(); void releaseVisualFocus();
void configNeedsSaving(); void configNeedsSaving();

View File

@ -390,6 +390,10 @@ void DeclarativeAppletScript::setupObjects()
QScriptValue global = m_engine->globalObject(); QScriptValue global = m_engine->globalObject();
QScriptValue v = m_engine->newVariant(QVariant::fromValue(*applet()->package()));
global.setProperty("__plasma_package", v,
QScriptValue::ReadOnly | QScriptValue::Undeletable | QScriptValue::SkipInEnumeration);
m_self = m_engine->newQObject(m_interface); m_self = m_engine->newQObject(m_interface);
m_self.setScope(global); m_self.setScope(global);
global.setProperty("plasmoid", m_self); global.setProperty("plasmoid", m_self);

View File

@ -510,6 +510,10 @@ void SimpleJavaScriptApplet::setupObjects()
global.setProperty("AnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::animationGroup)); global.setProperty("AnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::animationGroup));
global.setProperty("ParallelAnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::parallelAnimationGroup)); global.setProperty("ParallelAnimationGroup", m_engine->newFunction(SimpleJavaScriptApplet::parallelAnimationGroup));
QScriptValue v = m_engine->newVariant(QVariant::fromValue(*applet()->package()));
global.setProperty("__plasma_package", v,
QScriptValue::ReadOnly | QScriptValue::Undeletable | QScriptValue::SkipInEnumeration);
// Bindings for data engine // Bindings for data engine
bindI18N(m_engine); bindI18N(m_engine);

View File

@ -21,6 +21,10 @@
#include <QtCore/QSharedData> #include <QtCore/QSharedData>
#include <QPixmap>
Q_DECLARE_METATYPE(QPixmap*)
Q_DECLARE_METATYPE(QPixmap)
#define DECLARE_SELF(Class, __fn__) \ #define DECLARE_SELF(Class, __fn__) \
Class* self = qscriptvalue_cast<Class*>(ctx->thisObject()); \ Class* self = qscriptvalue_cast<Class*>(ctx->thisObject()); \
if (!self) { \ if (!self) { \

View File

@ -50,6 +50,14 @@ static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
{ {
if (ctx->argumentCount() > 0) { if (ctx->argumentCount() > 0) {
QPaintDevice *device = qscriptvalue_cast<QPaintDevice*>(ctx->argument(0)); QPaintDevice *device = qscriptvalue_cast<QPaintDevice*>(ctx->argument(0));
if (!device) {
QPixmap *pixmap = qscriptvalue_cast<QPixmap *>(ctx->argument(0));
if (pixmap) {
return newPainter(eng, new QPainter(pixmap));
} else {
return newPainter(eng, new QPainter());
}
}
return newPainter(eng, new QPainter(device)); return newPainter(eng, new QPainter(device));
} else { } else {
return newPainter(eng, new QPainter()); return newPainter(eng, new QPainter());

View File

@ -23,9 +23,6 @@
#include "backportglobal.h" #include "backportglobal.h"
#include "plasmoid/appletinterface.h" #include "plasmoid/appletinterface.h"
Q_DECLARE_METATYPE(QPixmap*)
Q_DECLARE_METATYPE(QPixmap)
static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng) static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng)
{ {
if (ctx->argumentCount() == 1 && ctx->argument(0).isString()) { if (ctx->argumentCount() == 1 && ctx->argument(0).isString()) {