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

List:       kwin
Subject:    Re: Review Request: JavaScript bindings for KWin Effects
From:       Martin_Gräßlin <kde () martin-graesslin ! com>
Date:       2012-03-09 12:25:37
Message-ID: 20120309122537.22143.59199 () vidsolbach ! de
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/103823/
-----------------------------------------------------------

(Updated March 9, 2012, 12:25 p.m.)


Review request for kwin.


Changes
-------

* rebased on current master
* new approach to meta: added a QObject derived class where the user can set \
properties. Tested with Sheet effect which cannot be ported properly to scripts as z \
scaling is not available ;-)

Example looks like the following:
var duration;
function loadConfig() {
    // TODO: read from KConfig
    duration = animationTime(500);
}
loadConfig();
effect.configChanged.connect(loadConfig);

effects.windowAdded.connect(function(window) {
    if (window.modal) {
        var anim = new AnimationData();
        anim.axis = Effect.XAxis;
        var windows = effects.stackingOrder;
        var parentWindow = 0;
        for (var i=0; i<windows.length; i++) {
            if (windows[i].findModal() == window) {
                parentWindow = windows[i].y;
                break;
            }
        }
        effect.animate(window, Effect.Translation, duration, 0.0, {value1: 0.0, \
                value2: (parentWindow - window.y)});
        effect.animate(window, Effect.Scale, duration, {value1: 1.0, value2: 1.0}, \
                {value1: 1.0, value2: 0.0});
        effect.animate(window, Effect.Rotation, duration, 0.0, 60.0, anim);
    }
});


Description
-------

The bindings are based on AnimationEffect. So Thomas please have a look whether I use \
it correctly :-) The method is exported multiple times as I did not want to wrap the \
FPx2 class.

An example script for fade effect:
var duration = 250;
effects.windowAdded.connect(function(w) {
    effect.animate(w, Effect.Opacity, duration, 1.0);
});
effects.windowClosed.connect(function(w) {
    effect.animate(w, Effect.Opacity, duration, 0.0, 1.0);
});

There is quite some work to be done. EffectWindow does not yet have properties, for \
EffectsHandler probably some more methods might be exported.

Unfortunately I had to change the signature of the signals as QtScript needs the type \
being exported as a metatype and metatypes want full name.


Diffs (updated)
-----

  kwin/CMakeLists.txt 0b89d98 
  kwin/effects.h 40f219c 
  kwin/effects.cpp 372d844 
  kwin/effects/CMakeLists.txt f09a855 
  kwin/effects/blur/blur.h 9b51aae 
  kwin/effects/blur/blur.cpp b4174b6 
  kwin/effects/boxswitch/boxswitch.h cfb6b47 
  kwin/effects/boxswitch/boxswitch.cpp 68a820c 
  kwin/effects/coverswitch/coverswitch.h b49a36e 
  kwin/effects/coverswitch/coverswitch.cpp bdf2fbe 
  kwin/effects/cube/cubeslide.h ffbda88 
  kwin/effects/cube/cubeslide.cpp ed1f518 
  kwin/effects/dashboard/dashboard.h 46d3e98 
  kwin/effects/dashboard/dashboard.cpp 4f6dc65 
  kwin/effects/desktopgrid/desktopgrid.h b420389 
  kwin/effects/desktopgrid/desktopgrid.cpp e0beace 
  kwin/effects/dialogparent/dialogparent.h 439c67e 
  kwin/effects/dialogparent/dialogparent.cpp ac9493a 
  kwin/effects/diminactive/diminactive.h 24a80de 
  kwin/effects/diminactive/diminactive.cpp 6978f36 
  kwin/effects/dimscreen/dimscreen.h ee8c114 
  kwin/effects/dimscreen/dimscreen.cpp fd4c15a 
  kwin/effects/explosion/explosion.h 8a343c7 
  kwin/effects/explosion/explosion.cpp dc9cd14 
  kwin/effects/fade/CMakeLists.txt 865afb7 
  kwin/effects/fade/fade.cpp 213516b 
  kwin/effects/fade/fade.desktop 3b29244 
  kwin/effects/fade/fade.h 38c0040 
  kwin/effects/fade/package/contents/code/main.js PRE-CREATION 
  kwin/effects/fade/package/contents/config/main.xml PRE-CREATION 
  kwin/effects/fade/package/metadata.desktop PRE-CREATION 
  kwin/effects/fadedesktop/CMakeLists.txt 61bd4fc 
  kwin/effects/fadedesktop/fadedesktop.h d5d8b36 
  kwin/effects/fadedesktop/fadedesktop.cpp 5d71ef7 
  kwin/effects/fadedesktop/fadedesktop.desktop 8b64b70 
  kwin/effects/fadedesktop/package/contents/code/main.js PRE-CREATION 
  kwin/effects/fadedesktop/package/metadata.desktop PRE-CREATION 
  kwin/effects/fallapart/fallapart.h acc1446 
  kwin/effects/fallapart/fallapart.cpp 5db5ee7 
  kwin/effects/flipswitch/flipswitch.h 559e88b 
  kwin/effects/flipswitch/flipswitch.cpp 2603645 
  kwin/effects/glide/glide.h 0003345 
  kwin/effects/glide/glide.cpp 99a8c8b 
  kwin/effects/highlightwindow/highlightwindow.h 8b46bd4 
  kwin/effects/highlightwindow/highlightwindow.cpp e57a6f9 
  kwin/effects/invert/invert.h 3dc49fb 
  kwin/effects/invert/invert.cpp 6f0efb3 
  kwin/effects/login/login.h db30044 
  kwin/effects/login/login.cpp a9da287 
  kwin/effects/logout/logout.h f08152f 
  kwin/effects/logout/logout.cpp 4e97ebe 
  kwin/effects/magiclamp/magiclamp.h 8000081 
  kwin/effects/magiclamp/magiclamp.cpp f7f73b4 
  kwin/effects/minimizeanimation/minimizeanimation.h 27e0dd3 
  kwin/effects/minimizeanimation/minimizeanimation.cpp 44d15ec 
  kwin/effects/presentwindows/presentwindows.h 08aa262 
  kwin/effects/presentwindows/presentwindows.cpp db1e86a 
  kwin/effects/resize/resize.h 0411d6d 
  kwin/effects/resize/resize.cpp 84bdd7f 
  kwin/effects/scalein/scalein.h 8ae7504 
  kwin/effects/scalein/scalein.cpp 25d78df 
  kwin/effects/screenshot/screenshot.h 22385a3 
  kwin/effects/screenshot/screenshot.cpp 6bd18e3 
  kwin/effects/sheet/sheet.h 7ec739b 
  kwin/effects/sheet/sheet.cpp 9156f0d 
  kwin/effects/slideback/slideback.h 0cba556 
  kwin/effects/slideback/slideback.cpp 74abcdd 
  kwin/effects/slidingpopups/slidingpopups.h eca9e2e 
  kwin/effects/slidingpopups/slidingpopups.cpp 74346ce 
  kwin/effects/snaphelper/snaphelper.h ee60f8f 
  kwin/effects/snaphelper/snaphelper.cpp a30cc60 
  kwin/effects/taskbarthumbnail/taskbarthumbnail.h 77e5294 
  kwin/effects/taskbarthumbnail/taskbarthumbnail.cpp ac68876 
  kwin/effects/thumbnailaside/thumbnailaside.h 323e2fd 
  kwin/effects/thumbnailaside/thumbnailaside.cpp 3a1b4e0 
  kwin/effects/translucency/translucency.h fa7b85c 
  kwin/effects/translucency/translucency.cpp e11e2a0 
  kwin/effects/windowgeometry/windowgeometry.h ba20c05 
  kwin/effects/windowgeometry/windowgeometry.cpp a9fd796 
  kwin/effects/wobblywindows/wobblywindows.h d4844d3 
  kwin/effects/wobblywindows/wobblywindows.cpp 4855570 
  kwin/libkwineffects/kwinanimationeffect.h 106155c 
  kwin/libkwineffects/kwinanimationeffect.cpp 00a7887 
  kwin/libkwineffects/kwineffects.h 582a8cb 
  kwin/libkwineffects/kwineffects.cpp efaca5d 
  kwin/scripting/scriptedeffect.h PRE-CREATION 
  kwin/scripting/scriptedeffect.cpp PRE-CREATION 
  kwin/thumbnailitem.cpp 73441a0 

Diff: http://git.reviewboard.kde.org/r/103823/diff/


Testing
-------


Thanks,

Martin Gräßlin


[Attachment #5 (text/html)]

<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 \
solid;">  <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/103823/">http://git.reviewboard.kde.org/r/103823/</a>
  </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" \
style="background-image: \
url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); \
background-position: left top; background-repeat: repeat-x; border: 1px black \
solid;">  <tr>
  <td>

<div>Review request for kwin.</div>
<div>By Martin Gräßlin.</div>


<p style="color: grey;"><i>Updated March 9, 2012, 12:25 p.m.</i></p>



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Changes</h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: \
1px solid #b8b5a0">  <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
                break-word;">* rebased on current master
* new approach to meta: added a QObject derived class where the user can set \
properties. Tested with Sheet effect which cannot be ported properly to scripts as z \
scaling is not available ;-)

Example looks like the following:
var duration;
function loadConfig() {
    // TODO: read from KConfig
    duration = animationTime(500);
}
loadConfig();
effect.configChanged.connect(loadConfig);

effects.windowAdded.connect(function(window) {
    if (window.modal) {
        var anim = new AnimationData();
        anim.axis = Effect.XAxis;
        var windows = effects.stackingOrder;
        var parentWindow = 0;
        for (var i=0; i&lt;windows.length; i++) {
            if (windows[i].findModal() == window) {
                parentWindow = windows[i].y;
                break;
            }
        }
        effect.animate(window, Effect.Translation, duration, 0.0, {value1: 0.0, \
                value2: (parentWindow - window.y)});
        effect.animate(window, Effect.Scale, duration, {value1: 1.0, value2: 1.0}, \
                {value1: 1.0, value2: 0.0});
        effect.animate(window, Effect.Rotation, duration, 0.0, 60.0, anim);
    }
});
</pre>
  </td>
 </tr>
</table>




<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" \
style="border: 1px solid #b8b5a0">  <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: \
-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: \
break-word;">The bindings are based on AnimationEffect. So Thomas please have a look \
whether I use it correctly :-) The method is exported multiple times as I did not \
want to wrap the FPx2 class.

An example script for fade effect:
var duration = 250;
effects.windowAdded.connect(function(w) {
    effect.animate(w, Effect.Opacity, duration, 1.0);
});
effects.windowClosed.connect(function(w) {
    effect.animate(w, Effect.Opacity, duration, 0.0, 1.0);
});

There is quite some work to be done. EffectWindow does not yet have properties, for \
EffectsHandler probably some more methods might be exported.

Unfortunately I had to change the signature of the signals as QtScript needs the type \
being exported as a metatype and metatypes want full name.</pre>  </td>
 </tr>
</table>





<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> \
(updated)</h1> <ul style="margin-left: 3em; padding-left: 0;">

 <li>kwin/CMakeLists.txt <span style="color: grey">(0b89d98)</span></li>

 <li>kwin/effects.h <span style="color: grey">(40f219c)</span></li>

 <li>kwin/effects.cpp <span style="color: grey">(372d844)</span></li>

 <li>kwin/effects/CMakeLists.txt <span style="color: grey">(f09a855)</span></li>

 <li>kwin/effects/blur/blur.h <span style="color: grey">(9b51aae)</span></li>

 <li>kwin/effects/blur/blur.cpp <span style="color: grey">(b4174b6)</span></li>

 <li>kwin/effects/boxswitch/boxswitch.h <span style="color: \
grey">(cfb6b47)</span></li>

 <li>kwin/effects/boxswitch/boxswitch.cpp <span style="color: \
grey">(68a820c)</span></li>

 <li>kwin/effects/coverswitch/coverswitch.h <span style="color: \
grey">(b49a36e)</span></li>

 <li>kwin/effects/coverswitch/coverswitch.cpp <span style="color: \
grey">(bdf2fbe)</span></li>

 <li>kwin/effects/cube/cubeslide.h <span style="color: grey">(ffbda88)</span></li>

 <li>kwin/effects/cube/cubeslide.cpp <span style="color: grey">(ed1f518)</span></li>

 <li>kwin/effects/dashboard/dashboard.h <span style="color: \
grey">(46d3e98)</span></li>

 <li>kwin/effects/dashboard/dashboard.cpp <span style="color: \
grey">(4f6dc65)</span></li>

 <li>kwin/effects/desktopgrid/desktopgrid.h <span style="color: \
grey">(b420389)</span></li>

 <li>kwin/effects/desktopgrid/desktopgrid.cpp <span style="color: \
grey">(e0beace)</span></li>

 <li>kwin/effects/dialogparent/dialogparent.h <span style="color: \
grey">(439c67e)</span></li>

 <li>kwin/effects/dialogparent/dialogparent.cpp <span style="color: \
grey">(ac9493a)</span></li>

 <li>kwin/effects/diminactive/diminactive.h <span style="color: \
grey">(24a80de)</span></li>

 <li>kwin/effects/diminactive/diminactive.cpp <span style="color: \
grey">(6978f36)</span></li>

 <li>kwin/effects/dimscreen/dimscreen.h <span style="color: \
grey">(ee8c114)</span></li>

 <li>kwin/effects/dimscreen/dimscreen.cpp <span style="color: \
grey">(fd4c15a)</span></li>

 <li>kwin/effects/explosion/explosion.h <span style="color: \
grey">(8a343c7)</span></li>

 <li>kwin/effects/explosion/explosion.cpp <span style="color: \
grey">(dc9cd14)</span></li>

 <li>kwin/effects/fade/CMakeLists.txt <span style="color: grey">(865afb7)</span></li>

 <li>kwin/effects/fade/fade.cpp <span style="color: grey">(213516b)</span></li>

 <li>kwin/effects/fade/fade.desktop <span style="color: grey">(3b29244)</span></li>

 <li>kwin/effects/fade/fade.h <span style="color: grey">(38c0040)</span></li>

 <li>kwin/effects/fade/package/contents/code/main.js <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/effects/fade/package/contents/config/main.xml <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/effects/fade/package/metadata.desktop <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/effects/fadedesktop/CMakeLists.txt <span style="color: \
grey">(61bd4fc)</span></li>

 <li>kwin/effects/fadedesktop/fadedesktop.h <span style="color: \
grey">(d5d8b36)</span></li>

 <li>kwin/effects/fadedesktop/fadedesktop.cpp <span style="color: \
grey">(5d71ef7)</span></li>

 <li>kwin/effects/fadedesktop/fadedesktop.desktop <span style="color: \
grey">(8b64b70)</span></li>

 <li>kwin/effects/fadedesktop/package/contents/code/main.js <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/effects/fadedesktop/package/metadata.desktop <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/effects/fallapart/fallapart.h <span style="color: \
grey">(acc1446)</span></li>

 <li>kwin/effects/fallapart/fallapart.cpp <span style="color: \
grey">(5db5ee7)</span></li>

 <li>kwin/effects/flipswitch/flipswitch.h <span style="color: \
grey">(559e88b)</span></li>

 <li>kwin/effects/flipswitch/flipswitch.cpp <span style="color: \
grey">(2603645)</span></li>

 <li>kwin/effects/glide/glide.h <span style="color: grey">(0003345)</span></li>

 <li>kwin/effects/glide/glide.cpp <span style="color: grey">(99a8c8b)</span></li>

 <li>kwin/effects/highlightwindow/highlightwindow.h <span style="color: \
grey">(8b46bd4)</span></li>

 <li>kwin/effects/highlightwindow/highlightwindow.cpp <span style="color: \
grey">(e57a6f9)</span></li>

 <li>kwin/effects/invert/invert.h <span style="color: grey">(3dc49fb)</span></li>

 <li>kwin/effects/invert/invert.cpp <span style="color: grey">(6f0efb3)</span></li>

 <li>kwin/effects/login/login.h <span style="color: grey">(db30044)</span></li>

 <li>kwin/effects/login/login.cpp <span style="color: grey">(a9da287)</span></li>

 <li>kwin/effects/logout/logout.h <span style="color: grey">(f08152f)</span></li>

 <li>kwin/effects/logout/logout.cpp <span style="color: grey">(4e97ebe)</span></li>

 <li>kwin/effects/magiclamp/magiclamp.h <span style="color: \
grey">(8000081)</span></li>

 <li>kwin/effects/magiclamp/magiclamp.cpp <span style="color: \
grey">(f7f73b4)</span></li>

 <li>kwin/effects/minimizeanimation/minimizeanimation.h <span style="color: \
grey">(27e0dd3)</span></li>

 <li>kwin/effects/minimizeanimation/minimizeanimation.cpp <span style="color: \
grey">(44d15ec)</span></li>

 <li>kwin/effects/presentwindows/presentwindows.h <span style="color: \
grey">(08aa262)</span></li>

 <li>kwin/effects/presentwindows/presentwindows.cpp <span style="color: \
grey">(db1e86a)</span></li>

 <li>kwin/effects/resize/resize.h <span style="color: grey">(0411d6d)</span></li>

 <li>kwin/effects/resize/resize.cpp <span style="color: grey">(84bdd7f)</span></li>

 <li>kwin/effects/scalein/scalein.h <span style="color: grey">(8ae7504)</span></li>

 <li>kwin/effects/scalein/scalein.cpp <span style="color: grey">(25d78df)</span></li>

 <li>kwin/effects/screenshot/screenshot.h <span style="color: \
grey">(22385a3)</span></li>

 <li>kwin/effects/screenshot/screenshot.cpp <span style="color: \
grey">(6bd18e3)</span></li>

 <li>kwin/effects/sheet/sheet.h <span style="color: grey">(7ec739b)</span></li>

 <li>kwin/effects/sheet/sheet.cpp <span style="color: grey">(9156f0d)</span></li>

 <li>kwin/effects/slideback/slideback.h <span style="color: \
grey">(0cba556)</span></li>

 <li>kwin/effects/slideback/slideback.cpp <span style="color: \
grey">(74abcdd)</span></li>

 <li>kwin/effects/slidingpopups/slidingpopups.h <span style="color: \
grey">(eca9e2e)</span></li>

 <li>kwin/effects/slidingpopups/slidingpopups.cpp <span style="color: \
grey">(74346ce)</span></li>

 <li>kwin/effects/snaphelper/snaphelper.h <span style="color: \
grey">(ee60f8f)</span></li>

 <li>kwin/effects/snaphelper/snaphelper.cpp <span style="color: \
grey">(a30cc60)</span></li>

 <li>kwin/effects/taskbarthumbnail/taskbarthumbnail.h <span style="color: \
grey">(77e5294)</span></li>

 <li>kwin/effects/taskbarthumbnail/taskbarthumbnail.cpp <span style="color: \
grey">(ac68876)</span></li>

 <li>kwin/effects/thumbnailaside/thumbnailaside.h <span style="color: \
grey">(323e2fd)</span></li>

 <li>kwin/effects/thumbnailaside/thumbnailaside.cpp <span style="color: \
grey">(3a1b4e0)</span></li>

 <li>kwin/effects/translucency/translucency.h <span style="color: \
grey">(fa7b85c)</span></li>

 <li>kwin/effects/translucency/translucency.cpp <span style="color: \
grey">(e11e2a0)</span></li>

 <li>kwin/effects/windowgeometry/windowgeometry.h <span style="color: \
grey">(ba20c05)</span></li>

 <li>kwin/effects/windowgeometry/windowgeometry.cpp <span style="color: \
grey">(a9fd796)</span></li>

 <li>kwin/effects/wobblywindows/wobblywindows.h <span style="color: \
grey">(d4844d3)</span></li>

 <li>kwin/effects/wobblywindows/wobblywindows.cpp <span style="color: \
grey">(4855570)</span></li>

 <li>kwin/libkwineffects/kwinanimationeffect.h <span style="color: \
grey">(106155c)</span></li>

 <li>kwin/libkwineffects/kwinanimationeffect.cpp <span style="color: \
grey">(00a7887)</span></li>

 <li>kwin/libkwineffects/kwineffects.h <span style="color: \
grey">(582a8cb)</span></li>

 <li>kwin/libkwineffects/kwineffects.cpp <span style="color: \
grey">(efaca5d)</span></li>

 <li>kwin/scripting/scriptedeffect.h <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/scripting/scriptedeffect.cpp <span style="color: \
grey">(PRE-CREATION)</span></li>

 <li>kwin/thumbnailitem.cpp <span style="color: grey">(73441a0)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/103823/diff/" style="margin-left: \
3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>



_______________________________________________
kwin mailing list
kwin@kde.org
https://mail.kde.org/mailman/listinfo/kwin


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

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