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

List:       kde-commits
Subject:    [kwin/scripting2] scripting: ASDFA ASDFASDFEWRWER
From:       David Edmundson <null () kde ! org>
Date:       2018-07-31 21:37:18
Message-ID: E1fkcKU-0001yG-RK () code ! kde ! org
[Download RAW message or body]

Git commit a8393c8b8249262317593d02ac959c9dc4bab565 by David Edmundson.
Committed on 31/07/2018 at 20:28.
Pushed by davidedmundson into branch 'scripting2'.

ASDFA ASDFASDFEWRWER

M  +104  -109  scripting/scriptedeffect.cpp
M  +6    -2    scripting/scriptedeffect.h

https://commits.kde.org/kwin/a8393c8b8249262317593d02ac959c9dc4bab565

diff --git a/scripting/scriptedeffect.cpp b/scripting/scriptedeffect.cpp
index 1a2e9109b..a642b7717 100644
--- a/scripting/scriptedeffect.cpp
+++ b/scripting/scriptedeffect.cpp
@@ -103,108 +103,95 @@ AnimationSettings \
animationSettingsFromObject(QJSValue &object)  //takes exactly one \
argument, an object  //returns list of animations and the effect window
 
-//QList<AnimationSettings> animationSettings(QScriptContext *context, \
                ScriptedEffect *effect, EffectWindow **window)
-//{
-//    QList<AnimationSettings> settings;
-//    if (!effect) {
-//        context->throwError(QScriptContext::ReferenceError, \
                QStringLiteral("Internal Scripted KWin Effect error"));
-//        return settings;
-//    }
-//    if (context->argumentCount() != 1) {
-//        context->throwError(QScriptContext::SyntaxError, \
                QStringLiteral("Exactly one argument expected"));
-//        return settings;
-//    }
-//    if (!context->argument(0).isObject()) {
-//        context->throwError(QScriptContext::TypeError, \
                QStringLiteral("Argument needs to be an object"));
-//        return settings;
-//    }
-//    QJSValue object = context->argument(0);
-//    QJSValue windowProperty = object.property(QStringLiteral("window"));
-//    if (!windowProperty.isValid() || !windowProperty.isObject()) {
+QList<AnimationSettings> animationSettings(const QJSValue& object \
EffectWindow **window) +{
+   QList<AnimationSettings> settings;
+   QJSValue windowProperty = object.property(QStringLiteral("window"));
+   if (!windowProperty.isValid() || !windowProperty.isObject()) {
 //        context->throwError(QScriptContext::TypeError, \
                QStringLiteral("Window property missing in animation \
                options"));
-//        return settings;
-//    }
-//    *window = qobject_cast<EffectWindow*>(windowProperty.toQObject());
-
-//    settings << animationSettingsFromObject(object); // global
-
-//    QJSValue animations = object.property(QStringLiteral("animations")); \
                // array
-//    if (!animations.isNull()) {
-//        if (!animations.isArray()) {
-//            context->throwError(QScriptContext::TypeError, \
                QStringLiteral("Animations provided but not an array"));
-//            settings.clear();
-//            return settings;
-//        }
-//        const int length = \
static_cast<int>(animations.property(QStringLiteral("length")).toInteger());
                
-//        for (int i=0; i<length; ++i) {
-//            QJSValue value = animations.property(QString::number(i));
-//            if (!value.isValid()) {
-//                continue;
-//            }
-//            if (value.isObject()) {
-//                AnimationSettings s = \
                animationSettingsFromObject(value);
-//                const uint set = s.set | settings.at(0).set;
-//                // Catch show stoppers (incompletable animation)
-//                if (!(set & AnimationSettings::Type)) {
-//                    context->throwError(QScriptContext::TypeError, \
                QStringLiteral("Type property missing in animation \
                options"));
-//                    continue;
-//                }
-//                if (!(set & AnimationSettings::Duration)) {
-//                    context->throwError(QScriptContext::TypeError, \
                QStringLiteral("Duration property missing in animation \
                options"));
-//                    continue;
-//                }
-//                // Complete local animations from global settings
-//                if (!(s.set & AnimationSettings::Duration)) {
-//                    s.duration = settings.at(0).duration;
-//                }
-//                if (!(s.set & AnimationSettings::Curve)) {
-//                    s.curve = settings.at(0).curve;
-//                }
-//                if (!(s.set & AnimationSettings::Delay)) {
-//                    s.delay = settings.at(0).delay;
-//                }
-
-//                s.metaData = 0;
-//                typedef QMap<AnimationEffect::MetaType, QString> \
                MetaTypeMap;
-//                static MetaTypeMap metaTypes({
-//                    {AnimationEffect::SourceAnchor, \
                QStringLiteral("sourceAnchor")},
-//                    {AnimationEffect::TargetAnchor, \
                QStringLiteral("targetAnchor")},
-//                    {AnimationEffect::RelativeSourceX, \
                QStringLiteral("relativeSourceX")},
-//                    {AnimationEffect::RelativeSourceY, \
                QStringLiteral("relativeSourceY")},
-//                    {AnimationEffect::RelativeTargetX, \
                QStringLiteral("relativeTargetX")},
-//                    {AnimationEffect::RelativeTargetY, \
                QStringLiteral("relativeTargetY")},
-//                    {AnimationEffect::Axis, QStringLiteral("axis")}
-//                });
-
-//                for (MetaTypeMap::const_iterator it = \
                metaTypes.constBegin(),
-//                                                end = \
                metaTypes.constEnd(); it != end; ++it) {
-//                    QJSValue metaVal = value.property(*it);
-//                    if (metaVal.isNumber()) {
-//                        AnimationEffect::setMetaData(it.key(), \
                metaVal.toInt(), s.metaData);
-//                    }
-//                }
-
-//                settings << s;
-//            }
-//        }
-//    }
-
-//    if (settings.count() == 1) {
-//        const uint set = settings.at(0).set;
-//        if (!(set & AnimationSettings::Type)) {
-//            context->throwError(QScriptContext::TypeError, \
                QStringLiteral("Type property missing in animation \
                options"));
-//            settings.clear();
-//        }
-//        if (!(set & AnimationSettings::Duration)) {
-//            context->throwError(QScriptContext::TypeError, \
                QStringLiteral("Duration property missing in animation \
                options"));
-//            settings.clear();
-//        }
-//    } else if (!(settings.at(0).set & AnimationSettings::Type)) { // \
                invalid global
-//        settings.removeAt(0); // -> get rid of it, only used to complete \
                the others
-//    }
-
-//    return settings;
-//}
+       return settings;
+   }
+   *window = qobject_cast<EffectWindow*>(windowProperty.toQObject());
+
+   settings << animationSettingsFromObject(object); // global
+
+   QJSValue animations = object.property(QStringLiteral("animations")); // \
array +   if (!animations.isNull()) {
+       if (!animations.isArray()) {
+           context->throwError(QScriptContext::TypeError, \
QStringLiteral("Animations provided but not an array")); +           \
settings.clear(); +           return settings;
+       }
+       const int length = \
static_cast<int>(animations.property(QStringLiteral("length")).toInteger());
 +       for (int i=0; i<length; ++i) {
+           QJSValue value = animations.property(QString::number(i));
+           if (!value.isValid()) {
+               continue;
+           }
+           if (value.isObject()) {
+               AnimationSettings s = animationSettingsFromObject(value);
+               const uint set = s.set | settings.at(0).set;
+               // Catch show stoppers (incompletable animation)
+               if (!(set & AnimationSettings::Type)) {
+                   context->throwError(QScriptContext::TypeError, \
QStringLiteral("Type property missing in animation options")); +            \
continue; +               }
+               if (!(set & AnimationSettings::Duration)) {
+                   context->throwError(QScriptContext::TypeError, \
QStringLiteral("Duration property missing in animation options")); +        \
continue; +               }
+               // Complete local animations from global settings
+               if (!(s.set & AnimationSettings::Duration)) {
+                   s.duration = settings.at(0).duration;
+               }
+               if (!(s.set & AnimationSettings::Curve)) {
+                   s.curve = settings.at(0).curve;
+               }
+               if (!(s.set & AnimationSettings::Delay)) {
+                   s.delay = settings.at(0).delay;
+               }
+
+               s.metaData = 0;
+               typedef QMap<AnimationEffect::MetaType, QString> \
MetaTypeMap; +               static MetaTypeMap metaTypes({
+                   {AnimationEffect::SourceAnchor, \
QStringLiteral("sourceAnchor")}, +                   \
{AnimationEffect::TargetAnchor, QStringLiteral("targetAnchor")}, +          \
{AnimationEffect::RelativeSourceX, QStringLiteral("relativeSourceX")}, +    \
{AnimationEffect::RelativeSourceY, QStringLiteral("relativeSourceY")}, +    \
{AnimationEffect::RelativeTargetX, QStringLiteral("relativeTargetX")}, +    \
{AnimationEffect::RelativeTargetY, QStringLiteral("relativeTargetY")}, +    \
{AnimationEffect::Axis, QStringLiteral("axis")} +               });
+
+               for (MetaTypeMap::const_iterator it = \
metaTypes.constBegin(), +                                               end \
= metaTypes.constEnd(); it != end; ++it) { +                   QJSValue \
metaVal = value.property(*it); +                   if (metaVal.isNumber()) \
{ +                       AnimationEffect::setMetaData(it.key(), \
metaVal.toInt(), s.metaData); +                   }
+               }
+
+               settings << s;
+           }
+       }
+   }
+
+   if (settings.count() == 1) {
+       const uint set = settings.at(0).set;
+       if (!(set & AnimationSettings::Type)) {
+           context->throwError(QScriptContext::TypeError, \
QStringLiteral("Type property missing in animation options")); +           \
settings.clear(); +       }
+       if (!(set & AnimationSettings::Duration)) {
+           context->throwError(QScriptContext::TypeError, \
QStringLiteral("Duration property missing in animation options")); +        \
settings.clear(); +       }
+   } else if (!(settings.at(0).set & AnimationSettings::Type)) { // \
invalid global +       settings.removeAt(0); // -> get rid of it, only used \
to complete the others +   }
+
+   return settings;
+}
 
 QJSValue kwinEffectAnimate(QScriptContext *context, QJSEngine *engine)
 {
@@ -415,19 +402,13 @@ bool ScriptedEffect::init(const QString &effectName, \
                const QString &pathToScript
     engine()->globalObject().setProperty("registerTouchScreenEdge", \
                selfWrapper.property("registerTouchScreenEdge"));
     engine()->globalObject().setProperty("unregisterTouchScreenEdge", \
selfWrapper.property("unregisterTouchScreenEdge"));  
-//    engine()->globalObject().setProperty("animate", \
                selfWrapper.property("animateInternal"));
-//     engine()->globalObject().setProperty("set", \
selfWrapper.property("setInternal")); +    \
engine()->globalObject().setProperty("animate", \
selfWrapper.property("animateGlobal")); +    \
engine()->globalObject().setProperty("set", \
                selfWrapper.property("setGlobal"));
     engine()->globalObject().setProperty("retarget", \
                selfWrapper.property("retarget"));
     engine()->globalObject().setProperty("cancel", \
selfWrapper.property("cancel"));  
     engine()->globalObject().setProperty("print", \
selfWrapper.property("print"));  
-
-//    MetaScripting::registration(m_engine);
-//    qScriptRegisterMetaType<KWin::FPx2>(m_engine, fpx2ToScriptValue, \
                fpx2FromScriptValue);
-//    qScriptRegisterSequenceMetaType<QList< KWin::EffectWindow* > \
                >(m_engine);
-
-
     QJSValue ret = m_engine->evaluate(QString::fromUtf8(scriptFile.readAll()));
  
     if (ret.isError()) {
@@ -522,6 +503,20 @@ bool ScriptedEffect::retarget(QList<quint64> \
animationIds, const QJSValue &newTa  return true;
 }
 
+QJSValue ScriptedEffect::animateGlobal(const QJSValue &args)
+{
+    return startAnimation(args, false);
+}
+
+QJSValue ScriptedEffect::setGlobal(const QJSValue &args)
+{
+    return startAnimation(args, true);
+}
+
+QJSValue startAnimation(const QJSValue &value, bool set)
+{
+}
+
 bool ScriptedEffect::cancel(quint64 animationId)
 {
     return AnimationEffect::cancel(animationId);
diff --git a/scripting/scriptedeffect.h b/scripting/scriptedeffect.h
index eca4d61ed..a56ca6794 100644
--- a/scripting/scriptedeffect.h
+++ b/scripting/scriptedeffect.h
@@ -115,8 +115,10 @@ public Q_SLOTS:
     bool cancel(quint64 animationId);
     bool cancel(QList<quint64> animationIds);
 
-//     QJSValue animateInternal(const QJSValue &args) {}
-//     QJSValue setInternal(const QJSValue &args) {}
+    //takes a big object blob of data, returns an array of
+    //or throws an error
+    QJSValue animateGlobal(const QJSValue &args);
+    QJSValue setGlobal(const QJSValue &args);
 
     bool borderActivated(ElectricBorder border) override;
 
@@ -134,6 +136,8 @@ protected:
     void animationEnded(KWin::EffectWindow *w, Attribute a, uint meta);
 
 private:
+    //wrapper round animateGlobal/setGlobal that parses the animations \
blob. +    QJSValue startAnimation(const QJSValue &value, bool set);
     QJSEngine *m_engine;
     QString m_effectName;
     QString m_scriptFile;


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

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