quickhelp.js
133 lines
| 5.1 KiB
| application/javascript
|
JavascriptLexer
Fernando Perez
|
r5023 | //---------------------------------------------------------------------------- | ||
// 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. | ||||
//---------------------------------------------------------------------------- | ||||
//============================================================================ | ||||
MinRK
|
r5066 | // QuickHelp button | ||
Fernando Perez
|
r5023 | //============================================================================ | ||
var IPython = (function (IPython) { | ||||
Matthias BUSSONNIER
|
r12103 | "use strict"; | ||
Fernando Perez
|
r5023 | |||
MinRK
|
r5066 | var QuickHelp = function (selector) { | ||
Fernando Perez
|
r5023 | }; | ||
Brian Granger
|
r5858 | QuickHelp.prototype.show_keyboard_shortcuts = function () { | ||
// toggles display of keyboard shortcut dialog | ||||
Fernando Perez
|
r5023 | var that = this; | ||
Brian Granger
|
r5858 | if ( this.shortcut_dialog ){ | ||
// if dialog is already shown, close it | ||||
MinRK
|
r10939 | $(this.shortcut_dialog).modal("toggle"); | ||
Brian Granger
|
r5858 | return; | ||
} | ||||
Brian E. Granger
|
r14037 | var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help(); | ||
var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help(); | ||||
var help, shortcut; | ||||
Brian E. Granger
|
r14093 | var i, half, n; | ||
Brian E. Granger
|
r14037 | var element = $('<div/>'); | ||
Brian E. Granger
|
r14066 | // The documentation | ||
var doc = $('<div/>').addClass('alert'); | ||||
doc.append( | ||||
Matthias BUSSONNIER
|
r14634 | $('<button/>').addClass('close').attr('data-dismiss','alert').html('×') | ||
Brian E. Granger
|
r14066 | ).append( | ||
'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+ | ||||
Preston Holmes
|
r14949 | 'allows you to type code/text into a cell and is indicated by a green cell '+ | ||
Brian E. Granger
|
r14093 | 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+ | ||
'and is indicated by a grey cell border.' | ||||
Brian E. Granger
|
r14066 | ) | ||
element.append(doc); | ||||
Brian E. Granger
|
r14037 | // Command mode | ||
Brian E. Granger
|
r14096 | 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 | ||||
Brian E. Granger
|
r14093 | 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++) { | ||||
Brian E. Granger
|
r14037 | help = command_shortcuts[i]['help']; | ||
shortcut = command_shortcuts[i]['shortcut']; | ||||
Brian E. Granger
|
r14093 | cmd_col1.append($('<div>').addClass('quickhelp'). | ||
Matthias BUSSONNIER
|
r14634 | append($('<span/>').addClass('shortcut_key').text(shortcut)). | ||
append($('<span/>').addClass('shortcut_descr').text(' : ' + help)) | ||||
Brian E. Granger
|
r14093 | ); | ||
Brian E. Granger
|
r14037 | }; | ||
Brian E. Granger
|
r14093 | for (i=half; i<n; i++) { | ||
help = command_shortcuts[i]['help']; | ||||
shortcut = command_shortcuts[i]['shortcut']; | ||||
cmd_col2.append($('<div>').addClass('quickhelp'). | ||||
Matthias BUSSONNIER
|
r14634 | append($('<span/>').addClass('shortcut_key').text(shortcut)). | ||
append($('<span/>').addClass('shortcut_descr').text(' : ' + help)) | ||||
Brian E. Granger
|
r14093 | ); | ||
}; | ||||
cmd_sub_div.append(cmd_col1).append(cmd_col2); | ||||
cmd_div.append(cmd_sub_div); | ||||
Brian E. Granger
|
r14096 | 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; | ||||
Brian E. Granger
|
r14037 | |||
// Edit mode | ||||
Brian E. Granger
|
r14093 | 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++) { | ||||
Brian E. Granger
|
r14037 | help = edit_shortcuts[i]['help']; | ||
shortcut = edit_shortcuts[i]['shortcut']; | ||||
Brian E. Granger
|
r14093 | edit_col1.append($('<div>').addClass('quickhelp'). | ||
Matthias BUSSONNIER
|
r14634 | append($('<span/>').addClass('shortcut_key').text(shortcut)). | ||
append($('<span/>').addClass('shortcut_descr').text(' : ' + help)) | ||||
Brian E. Granger
|
r14093 | ); | ||
}; | ||||
for (i=half; i<n; i++) { | ||||
help = edit_shortcuts[i]['help']; | ||||
shortcut = edit_shortcuts[i]['shortcut']; | ||||
edit_col2.append($('<div>').addClass('quickhelp'). | ||||
Matthias BUSSONNIER
|
r14634 | append($('<span/>').addClass('shortcut_key').text(shortcut)). | ||
append($('<span/>').addClass('shortcut_descr').text(' : ' + help)) | ||||
Brian E. Granger
|
r14093 | ); | ||
Brian Granger
|
r5858 | }; | ||
Brian E. Granger
|
r14093 | edit_sub_div.append(edit_col1).append(edit_col2); | ||
edit_div.append(edit_sub_div); | ||||
Brian E. Granger
|
r14096 | return edit_div; | ||
} | ||||
Fernando Perez
|
r5023 | |||
// Set module variables | ||||
MinRK
|
r5066 | IPython.QuickHelp = QuickHelp; | ||
Fernando Perez
|
r5023 | |||
return IPython; | ||||
}(IPython)); | ||||