From 1da827df50de9aa8bfe2fa4ab1ebbc74b51ed4ba 2013-10-23 03:11:38 From: MinRK <benjaminrk@gmail.com> Date: 2013-10-23 03:11:38 Subject: [PATCH] allow callbacks on status messages --- diff --git a/IPython/html/static/services/kernels/js/kernel.js b/IPython/html/static/services/kernels/js/kernel.js index 0dcdf7b..9aa91aa 100644 --- a/IPython/html/static/services/kernels/js/kernel.js +++ b/IPython/html/static/services/kernels/js/kernel.js @@ -481,12 +481,22 @@ var IPython = (function (IPython) { Kernel.prototype._handle_status_message = function (msg) { var execution_state = msg.content.execution_state; + var parent_id = msg.parent_header.msg_id; + + // dispatch status msg callbacks, if any + var callbacks = this.get_callbacks_for_msg(parent_id); + if (callbacks && callbacks.iopub && callbacks.iopub.status) { + try { + callbacks.iopub.status(msg); + } catch (e) { + console.log("Exception in status msg handler", e); + } + } + if (execution_state === 'busy') { $([IPython.events]).trigger('status_busy.Kernel', {kernel: this}); } else if (execution_state === 'idle') { - // clear callbacks - var parent_id = msg.parent_header.msg_id; - var callbacks = this.get_callbacks_for_msg(parent_id); + // clear callbacks on idle, there can be no more if (callbacks !== undefined) { delete callbacks.iopub; delete callbacks.input; @@ -494,7 +504,7 @@ var IPython = (function (IPython) { this.clear_callbacks_for_msg(parent_id); } } - + // trigger status_idle event $([IPython.events]).trigger('status_idle.Kernel', {kernel: this}); } else if (execution_state === 'restarting') { // autorestarting is distinct from restarting,