//---------------------------------------------------------------------------- // Copyright (C) 2008-2011 The IPython Development Team // // Distributed under the terms of the BSD License. The full license is in // the file COPYING, distributed as part of this software. //---------------------------------------------------------------------------- //============================================================================ // QuickHelp button //============================================================================ var IPython = (function (IPython) { "use strict"; var QuickHelp = function (selector) { }; QuickHelp.prototype.show_keyboard_shortcuts = function () { // toggles display of keyboard shortcut dialog var that = this; if ( this.shortcut_dialog ){ // if dialog is already shown, close it $(this.shortcut_dialog).modal("toggle"); return; } var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help(); var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help(); var help, shortcut; var i, half, n; var element = $('<div/>'); // The documentation var doc = $('<div/>').addClass('alert'); doc.append( $('<button/>').addClass('close').attr('data-dismiss','alert').html('×') ).append( 'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+ 'allow you the type code/text into a cell and is indicated by a green cell '+ 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+ 'and is indicated by a grey cell border.' ) element.append(doc); // Command mode var cmd_div = this.build_command_help(); element.append(cmd_div); // Edit mode var edit_div = this.build_edit_help(); element.append(edit_div); this.shortcut_dialog = IPython.dialog.modal({ title : "Keyboard shortcuts", body : element, destroy : false, buttons : { Close : {} } }); }; QuickHelp.prototype.build_command_help = function () { var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help(); var help, shortcut; var i, half, n; // Command mode var cmd_div = $('<div/>').append($('<h4>Command Mode (press ESC to enable)</h4>')); var cmd_sub_div = $('<div/>').addClass('hbox'); var cmd_col1 = $('<div/>').addClass('box-flex0'); var cmd_col2 = $('<div/>').addClass('box-flex0'); n = command_shortcuts.length; half = ~~(n/2); // Truncate :) for (i=0; i<half; i++) { help = command_shortcuts[i]['help']; shortcut = command_shortcuts[i]['shortcut']; cmd_col1.append($('<div>').addClass('quickhelp'). append($('<span/>').addClass('shortcut_key').html(shortcut)). append($('<span/>').addClass('shortcut_descr').html(' : ' + help)) ); }; for (i=half; i<n; i++) { help = command_shortcuts[i]['help']; shortcut = command_shortcuts[i]['shortcut']; cmd_col2.append($('<div>').addClass('quickhelp'). append($('<span/>').addClass('shortcut_key').html(shortcut)). append($('<span/>').addClass('shortcut_descr').html(' : ' + help)) ); }; cmd_sub_div.append(cmd_col1).append(cmd_col2); cmd_div.append(cmd_sub_div); return cmd_div; } QuickHelp.prototype.build_edit_help = function () { var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help(); var help, shortcut; var i, half, n; // Edit mode var edit_div = $('<div/>').append($('<h4>Edit Mode (press ENTER to enable)</h4>')); var edit_sub_div = $('<div/>').addClass('hbox'); var edit_col1 = $('<div/>').addClass('box-flex0'); var edit_col2 = $('<div/>').addClass('box-flex0'); n = edit_shortcuts.length; half = ~~(n/2); // Truncate :) for (i=0; i<half; i++) { help = edit_shortcuts[i]['help']; shortcut = edit_shortcuts[i]['shortcut']; edit_col1.append($('<div>').addClass('quickhelp'). append($('<span/>').addClass('shortcut_key').html(shortcut)). append($('<span/>').addClass('shortcut_descr').html(' : ' + help)) ); }; for (i=half; i<n; i++) { help = edit_shortcuts[i]['help']; shortcut = edit_shortcuts[i]['shortcut']; edit_col2.append($('<div>').addClass('quickhelp'). append($('<span/>').addClass('shortcut_key').html(shortcut)). append($('<span/>').addClass('shortcut_descr').html(' : ' + help)) ); }; edit_sub_div.append(edit_col1).append(edit_col2); edit_div.append(edit_sub_div); return edit_div; } // Set module variables IPython.QuickHelp = QuickHelp; return IPython; }(IPython));