diff --git a/IPython/frontend/html/notebook/static/js/codecell.js b/IPython/frontend/html/notebook/static/js/codecell.js index 0addd73..cc47079 100644 --- a/IPython/frontend/html/notebook/static/js/codecell.js +++ b/IPython/frontend/html/notebook/static/js/codecell.js @@ -84,7 +84,7 @@ var IPython = (function (IPython) { // whatever key is pressed, first, cancel the tooltip request before // they are sent, and remove tooltip if any if(event.type === 'keydown' ) { - that.remove_and_cancel_tooltip(); + IPython.tooltip.remove_and_cancel_tooltip(); }; @@ -159,16 +159,6 @@ var IPython = (function (IPython) { return false; }; - CodeCell.prototype.remove_and_cancel_tooltip = function() { - // note that we don't handle closing directly inside the calltip - // as in the completer, because it is not focusable, so won't - // get the event. - if (this.tooltip_timeout != null){ - clearTimeout(this.tooltip_timeout); - $('#tooltip').addClass('hidden'); - this.tooltip_timeout = null; - } - } CodeCell.prototype.finish_tooltip = function (reply) { IPython.tooltip.show(reply,this.code_mirror.cursorCoords()); @@ -218,7 +208,7 @@ var IPython = (function (IPython) { morelink.click(function(){ var msg_id = IPython.notebook.kernel.execute(name+"?"); IPython.notebook.msg_cell_map[msg_id] = IPython.notebook.get_selected_cell().cell_id; - that.remove_and_cancel_tooltip(); + IPython.tooltip.remove_and_cancel_tooltip(); setTimeout(function(){that.code_mirror.focus();}, 50); }); @@ -232,7 +222,7 @@ var IPython = (function (IPython) { closespan.addClass('ui-icon-close'); closelink.append(closespan); closelink.click(function(){ - that.remove_and_cancel_tooltip(); + IPython.tooltip.remove_and_cancel_tooltip(); setTimeout(function(){that.code_mirror.focus();}, 50); }); //construct the tooltip diff --git a/IPython/frontend/html/notebook/static/js/tooltip.js b/IPython/frontend/html/notebook/static/js/tooltip.js index 18be999..014f1d1 100644 --- a/IPython/frontend/html/notebook/static/js/tooltip.js +++ b/IPython/frontend/html/notebook/static/js/tooltip.js @@ -12,12 +12,15 @@ // Todo : // use codemirror highlight example to // highlight the introspection request and introspect on mouse hove ... +// +// var IPython = (function (IPython) { var utils = IPython.utils; var Tooltip = function (notebook) { this.tooltip = $('#tooltip'); + var that = this; // contain the button in the upper right corner this.buttons = $('
') @@ -41,7 +44,7 @@ var IPython = (function (IPython) { .click(function(){ text.removeClass('smalltooltip'); text.addClass('bigtooltip'); - $('#expanbutton').remove(); + $('#expanbutton').addClass('hidden'); //setTimeout(function(){that.code_mirror.focus();}, 50); }) .append( @@ -74,7 +77,7 @@ var IPython = (function (IPython) { closespan.addClass('ui-icon-close'); closelink.append(closespan); closelink.click(function(){ - tooltip.addClass('hide'); + that.hide(); }); //construct the tooltip @@ -92,7 +95,17 @@ var IPython = (function (IPython) { this.tooltip.append(this.text); }; - + // deal with all the logic of hiding the tooltip + // and reset it's status + Tooltip.prototype.hide = function() + { + this.tooltip.addClass('hide'); + $('#expanbutton').removeClass('hidden'); + this.text.removeClass('bigtooltip'); + this.text.addClass('smalltooltip'); + // keep scroll top to be sure to always see the first line + this.text.scrollTop(0); + } //TODO, try to diminish the number of parameters. Tooltip.prototype.request_tooltip_after_time = function (pre_cursor,time){ @@ -103,12 +116,13 @@ var IPython = (function (IPython) { // note that we don't handle closing directly inside the calltip // as in the completer, because it is not focusable, so won't // get the event. + this.hide(); if (this.tooltip_timeout != null){ clearTimeout(this.tooltip_timeout); - $('#tooltip').remove(); this.tooltip_timeout = null; } } + Tooltip.prototype.show = function(reply,pos) { this.tooltip.css('left',pos.x-30+'px'); @@ -133,7 +147,9 @@ var IPython = (function (IPython) { var defstring_html = $('
').html(utils.fixConsole(defstring));
             this.text.append(defstring_html);
         }
-        this.text.append(pre)
+        this.text.append(pre);
+	// keep scroll top to be sure to always see the first line
+	this.text.scrollTop(0);
 
 
     }	
@@ -145,60 +161,6 @@ var IPython = (function (IPython) {
         setTimeout(function(){that.code_mirror.focus();}, 50);
     }
 
-    Tooltip.prototype.finish_tooltip = function (reply) {
-
-        var expandlink=$('').attr('href',"#");
-            expandlink.addClass("ui-corner-all"); //rounded corner
-            expandlink.attr('role',"button");
-
-        var expandspan=$('').text('Expand');
-            expandspan.addClass('ui-icon');
-            expandspan.addClass('ui-icon-plus');
-
-        expandlink.append(expandspan);
-        expandlink.attr('id','expanbutton');
-        expandlink.click(function(){
-            tooltip.removeClass('smalltooltip');
-            tooltip.addClass('bigtooltip');
-            $('#expanbutton').remove();
-            setTimeout(function(){that.code_mirror.focus();}, 50);
-        });
-
-        var morelink=$('').attr('href',"#");
-            morelink.attr('role',"button");
-            morelink.addClass('ui-button');
-        var morespan=$('').text('Open in Pager');
-            morespan.addClass('ui-icon');
-            morespan.addClass('ui-icon-arrowstop-l-n');
-        morelink.append(morespan);
-        morelink.click(function(){
-            this.showInPager();
-        });
-
-
-        var closelink=$('').attr('href',"#");
-            closelink.attr('role',"button");
-            closelink.addClass('ui-button');
-
-        var closespan=$('').text('Close');
-            closespan.addClass('ui-icon');
-            closespan.addClass('ui-icon-close');
-        closelink.append(closespan);
-        closelink.click(function(){
-            that.remove_and_cancel_tooltip();
-            setTimeout(function(){that.code_mirror.focus();}, 50);
-            });
-        //construct the tooltip
-        tooltip.append(closelink);
-        tooltip.append(expandlink);
-        tooltip.append(morelink);
-        
-        var pos = this.code_mirror.cursorCoords();
-        tooltip.css('left',pos.x+'px');
-        tooltip.css('top',pos.yBot+'px');
-
-    };
-
 
     IPython.Tooltip = Tooltip;