[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/runtime/plasma/scriptengines/javascript/plasmoid
From:       Marco Martin <notmart () gmail ! com>
Date:       2010-10-22 10:12:36
Message-ID: 20101022101236.121C1AC897 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1188406 by mart:

add loadUi from the js engine


 M  +26 -0     declarativeappletscript.cpp  
 M  +1 -0      declarativeappletscript.h  


--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/plasmoid/declarativeappletscript.cpp \
#1188405:1188406 @@ -22,10 +22,13 @@
 #include <QDeclarativeContext>
 #include <QDeclarativeEngine>
 #include <QDeclarativeExpression>
+#include <QFile>
 #include <QGraphicsLinearLayout>
 #include <QScriptEngine>
 #include <QScriptValueIterator>
 #include <QTimer>
+#include <QUiLoader>
+#include <QWidget>
 
 #include <KConfigGroup>
 #include <KDebug>
@@ -152,6 +155,25 @@
     m_env->callEventListeners("configchanged");
 }
 
+QScriptValue DeclarativeAppletScript::loadui(QScriptContext *context, QScriptEngine \
*engine) +{
+    if (context->argumentCount() != 1) {
+        return context->throwError(i18n("loadui() takes one argument"));
+    }
+
+    QString filename = context->argument(0).toString();
+    QFile f(filename);
+    if (!f.open(QIODevice::ReadOnly)) {
+        return context->throwError(i18n("Unable to open '%1'",filename));
+    }
+
+    QUiLoader loader;
+    QWidget *w = loader.load(&f);
+    f.close();
+
+    return engine->newQObject(w, QScriptEngine::AutoOwnership);
+}
+
 QScriptValue DeclarativeAppletScript::newPlasmaSvg(QScriptContext *context, \
QScriptEngine *engine)  {
     if (context->argumentCount() == 0) {
@@ -339,6 +361,10 @@
     }
     global.setProperty("startupArguments", args);
 
+    // Add a global loadui method for ui files
+    QScriptValue fun = m_engine->newFunction(DeclarativeAppletScript::loadui);
+    global.setProperty("loadui", fun);
+
     bindI18N(m_engine);
     global.setProperty("dataEngine", \
                m_engine->newFunction(DeclarativeAppletScript::dataEngine));
     global.setProperty("service", \
                m_engine->newFunction(DeclarativeAppletScript::service));
--- trunk/KDE/kdebase/runtime/plasma/scriptengines/javascript/plasmoid/declarativeappletscript.h \
#1188405:1188406 @@ -61,6 +61,7 @@
 
     QScriptValue variantToScriptValue(QVariant var);
 
+    static QScriptValue loadui(QScriptContext *context, QScriptEngine *engine);
     static QScriptValue newPlasmaSvg(QScriptContext *context, QScriptEngine \
                *engine);
     static QScriptValue newPlasmaFrameSvg(QScriptContext *context, QScriptEngine \
                *engine);
     static QScriptValue newPlasmaExtenderItem(QScriptContext *context, QScriptEngine \
*engine);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic