Show More
@@ -278,6 +278,20 var IPython = (function (IPython) { | |||
|
278 | 278 | needs_height_reset = true; |
|
279 | 279 | } |
|
280 | 280 | |
|
281 | // We must release the animation fixed height in a callback since Gecko | |
|
282 | // (FireFox) doesn't render the image immediately as the data is | |
|
283 | // available. | |
|
284 | var that = this; | |
|
285 | var handle_appended = function () { | |
|
286 | // Only reset the height to automatic if the height is currently | |
|
287 | // fixed (done by wait=True flag on clear_output). | |
|
288 | console.log('appended'); | |
|
289 | if (needs_height_reset) { | |
|
290 | that.element.height(''); | |
|
291 | } | |
|
292 | that.element.trigger('resize'); | |
|
293 | }; | |
|
294 | ||
|
281 | 295 | // validate output data types |
|
282 | 296 | json = this.validate_output(json); |
|
283 | 297 | |
@@ -285,26 +299,18 var IPython = (function (IPython) { | |||
|
285 | 299 | this.append_pyout(json); |
|
286 | 300 | } else if (json.output_type === 'pyerr') { |
|
287 | 301 | this.append_pyerr(json); |
|
288 | } else if (json.output_type === 'display_data') { | |
|
289 | this.append_display_data(json); | |
|
290 | 302 | } else if (json.output_type === 'stream') { |
|
291 | 303 | this.append_stream(json); |
|
292 | 304 | } |
|
293 | 305 | |
|
306 | if (json.output_type === 'display_data') { | |
|
307 | this.append_display_data(json, handle_appended); | |
|
308 | } else { | |
|
309 | handle_appended(); | |
|
310 | } | |
|
311 | ||
|
294 | 312 | this.outputs.push(json); |
|
295 | 313 | |
|
296 | // We must release the animation fixed height in a timeout since Gecko | |
|
297 | // (FireFox) doesn't render the image immediately as the data is | |
|
298 | // available. | |
|
299 | var that = this; | |
|
300 | setTimeout(function(){ | |
|
301 | // Only reset the height to automatic if the height is currently | |
|
302 | // fixed (done by wait=True flag on clear_output). | |
|
303 | if (needs_height_reset) { | |
|
304 | that.element.height(''); | |
|
305 | } | |
|
306 | that.element.trigger('resize'); | |
|
307 | }, 250); | |
|
308 | 314 | }; |
|
309 | 315 | |
|
310 | 316 | |
@@ -479,9 +485,9 var IPython = (function (IPython) { | |||
|
479 | 485 | }; |
|
480 | 486 | |
|
481 | 487 | |
|
482 | OutputArea.prototype.append_display_data = function (json) { | |
|
488 | OutputArea.prototype.append_display_data = function (json, handle_inserted) { | |
|
483 | 489 | var toinsert = this.create_output_area(); |
|
484 | if (this.append_mime_type(json, toinsert)) { | |
|
490 | if (this.append_mime_type(json, toinsert, handle_inserted)) { | |
|
485 | 491 | this._safe_append(toinsert); |
|
486 | 492 | // If we just output latex, typeset it. |
|
487 | 493 | if ((json['text/latex'] !== undefined) || (json['text/html'] !== undefined)) { |
@@ -498,7 +504,7 var IPython = (function (IPython) { | |||
|
498 | 504 | 'image/jpeg' : true |
|
499 | 505 | }; |
|
500 | 506 | |
|
501 | OutputArea.prototype.append_mime_type = function (json, element) { | |
|
507 | OutputArea.prototype.append_mime_type = function (json, element, handle_inserted) { | |
|
502 | 508 | for (var type_i in OutputArea.display_order) { |
|
503 | 509 | var type = OutputArea.display_order[type_i]; |
|
504 | 510 | var append = OutputArea.append_map[type]; |
@@ -515,7 +521,14 var IPython = (function (IPython) { | |||
|
515 | 521 | } |
|
516 | 522 | } |
|
517 | 523 | var md = json.metadata || {}; |
|
518 | var toinsert = append.apply(this, [value, md, element]); | |
|
524 | var toinsert = append.apply(this, [value, md, element, handle_inserted]); | |
|
525 | // Since only the png and jpeg mime types call the inserted | |
|
526 | // callback, if the mim type is something other we must call the | |
|
527 | // inserted callback only when the element is actually inserted | |
|
528 | // into the DOM. Use a timeout of 0 to do this. | |
|
529 | if (['image/png', 'image/jpeg'].indexOf() < 0 && handle_inserted !== undefined) { | |
|
530 | setTimeout(handle_inserted, 0); | |
|
531 | } | |
|
519 | 532 | $([IPython.events]).trigger('output_appended.OutputArea', [type, value, md, toinsert]); |
|
520 | 533 | return toinsert; |
|
521 | 534 | } |
@@ -615,10 +628,13 var IPython = (function (IPython) { | |||
|
615 | 628 | if (width !== undefined) img.attr('width', width); |
|
616 | 629 | }; |
|
617 | 630 | |
|
618 | var append_png = function (png, md, element) { | |
|
631 | var append_png = function (png, md, element, handle_inserted) { | |
|
619 | 632 | var type = 'image/png'; |
|
620 | 633 | var toinsert = this.create_output_subarea(md, "output_png", type); |
|
621 | 634 | var img = $("<img/>").attr('src','data:image/png;base64,'+png); |
|
635 | if (handle_inserted !== undefined) { | |
|
636 | img.load(handle_inserted); | |
|
637 | } | |
|
622 | 638 | set_width_height(img, md, 'image/png'); |
|
623 | 639 | this._dblclick_to_reset_size(img); |
|
624 | 640 | toinsert.append(img); |
@@ -627,10 +643,13 var IPython = (function (IPython) { | |||
|
627 | 643 | }; |
|
628 | 644 | |
|
629 | 645 | |
|
630 | var append_jpeg = function (jpeg, md, element) { | |
|
646 | var append_jpeg = function (jpeg, md, element, handle_inserted) { | |
|
631 | 647 | var type = 'image/jpeg'; |
|
632 | 648 | var toinsert = this.create_output_subarea(md, "output_jpeg", type); |
|
633 | 649 | var img = $("<img/>").attr('src','data:image/jpeg;base64,'+jpeg); |
|
650 | if (handle_inserted !== undefined) { | |
|
651 | img.load(handle_inserted); | |
|
652 | } | |
|
634 | 653 | set_width_height(img, md, 'image/jpeg'); |
|
635 | 654 | this._dblclick_to_reset_size(img); |
|
636 | 655 | toinsert.append(img); |
General Comments 0
You need to be logged in to leave comments.
Login now