<br><br><div class="gmail_quote">On Sun, Mar 24, 2013 at 12:08 PM, Matthias BUSSONNIER <span dir="ltr">&lt;<a href="mailto:bussonniermatthias@gmail.com" target="_blank">bussonniermatthias@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Le 24 mars 2013 à 19:51, MinRK a écrit :<br>
<div class="im"><br>
&gt;&gt;<br>
&gt;&gt; With one clarification on #2:  There is not a hook for you to add css classes to the cells live in the notebook, but this can certainly be added.  The cell metadata is how you would do this, but interpreting the metadata to add the class to the div will need to be added.<br>


&gt; Understood --- but that seems like it _ought_ to be a pretty simple extension (he said hopefully).<br>
&gt;<br>
&gt; It certainly should be - one thing we would need to do to support such an extension is add a hook for the &#39;cell-metadata-changed&#39; event.<br>
<br>
</div>No need to, the setters provided by the extensions just have to emit events.<br>
<br>
To take back an example from<br>
<a href="http://elacave.lmdb.eu/~carreau/yui/classes/IPython.CellToolbar.html" target="_blank">http://elacave.lmdb.eu/~carreau/yui/classes/IPython.CellToolbar.html</a><br>
<br>
(setters and getters are defined inline, but they could be provided separately and be imported )<br>
<br>
     * @example<br>
     *<br>
     *      var select_type = CellToolbar.utils.select_ui_generator([<br>
     *              [&quot;&lt;None&gt;&quot;            , undefined      ],<br>
     *              [&quot;Header Slide&quot; , &quot;header_slide&quot; ],<br>
     *              [&quot;Slide&quot;        , &quot;slide&quot;        ],<br>
     *              [&quot;Fragment&quot;     , &quot;fragment&quot;     ],<br>
     *              [&quot;Skip&quot;         , &quot;skip&quot;         ],<br>
     *              ],<br>
     *              // setter<br>
     *              function(cell, value){<br>
     *                  // we check that the slideshow namespace exist and create it if needed<br>
     *                  if (cell.metadata.slideshow == undefined){cell.metadata.slideshow = {}}<br>
     *                  // set the value<br>
     *                  // ONE CAN EMMIT THE CHANGED VALUE HERE<br>
     *                  cell.metadata.slideshow.slide_type = value<br>
     *                  },<br>
     *              //geter<br>
     *              function(cell){ var ns = cell.metadata.slideshow;<br>
     *                  // if the slideshow namespace does not exist return `undefined`<br>
     *                  // (will be interpreted as `false` by checkbox) otherwise<br>
     *                  // return the value<br>
     *                  return (ns == undefined)? undefined: ns.slide_type<br>
     *                  }<br>
     *      CellToolbar.register_callback(&#39;slideshow.select&#39;, select_type);<br>
     *<br>
     */<br>
<br>
This allow people to rely on other plugin, and the plugin author can change the way the metadata are store/read al long as the getters/setters are exposed.<br>
See what I mean ? Or I should write an example ?<br></blockquote><div><br></div><div>That&#39;s exactly what I was expecting, I just didn&#39;t know it was done already.</div><div>Thanks!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<span class="HOEnZb"><font color="#888888"><br>
--<br>
Matthias<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</div></div></blockquote></div><br>