[IPython-dev] Playing with cells in the notebook... and some problems.

Damián Avila damianavila@gmail....
Thu Aug 8 01:01:29 CDT 2013


El 07/08/13 04:40, Matthias BUSSONNIER escribió:
> Le 7 août 2013 à 07:23, Damián Avila a écrit :
>
>> Ah... if I "wrapinner", the cell is executed without problems, but I
>> need to wrap outer, I mean add html elements enclosing the current cell...
> Cell object are attached to a DOM element, if yo wrap outer, you "change" this element
> so the binding do not exist anymore.
>
> it's  like this slight difference between (teleporting someone), and (cloning him and burn the original immediately)
> from an outsider perspective it's the same.
>
> You could probably re-attach cell.element to the wrapped tag, I think it is doable. But code mirror might also
> have some assumption on the DOM.
>
> I don't quite remember how are cell inserted and everything, but I would try when wrapping to do
> 	cell.to_json,
> 	create the sections
> 	create n <div>
> 	cell.from_json on each of theses div.
>

Hi Matthias, thank for you feedback...

I was experimenting in the notebook with no successful results.

Let me paste a little code to explain more deeply...

Essentially, I follow your guidelines... I select a cell marked as a 
fragment and pass it to JSON.
I created a new div prepended to the 'div#notebook-container'
Then I create a new code cell (I took the "kernel" status from the 
current cells, is there a better way to do it?) and pass back from JSON 
to this new "ccell".
Finally, I append the "ccell.element" to the new div...
In this way, I get the a copy of the cell but it is not executable...
If I do the same, but instead of appending the "ccell.element" to the 
new div, I append it to the 'div#notebook-container', the cell is 
executable again... so I think I am losing the DOM again...
(ah... in both cases I get the cell, but the input form is minimized and 
you have to click on it to expand it and write content... but this is 
not the main problem... just a detail for now...)

```
%%javascript
var cells = IPython.notebook.get_cells();
var jcell;
for(var i in cells){
   var cell = cells[i];
     if (cell.metadata.slideshow.slide_type == 'fragment') {
       jcell = cell.toJSON();
     }
}

$('div#notebook-container').prepend('<div id="slide"></div>');

var kernel = cells[0].kernel
var ccell = new IPython.CodeCell(kernel);
ccell.fromJSON(jcell);

$("div#slide").append(ccell.element);
```

Any insights?

Cheers.

Damián.


More information about the IPython-dev mailing list