##// END OF EJS Templates
Merge pull request #7204 from jasongrout/widget-warning2...
Merge pull request #7204 from jasongrout/widget-warning2 Make the widget warning brief and easy to filter

File last commit:

r19427:ad73ac4a
r19550:ca2f5b76 merge
Show More
quickhelp.js
269 lines | 8.9 KiB | application/javascript | JavascriptLexer
MinRK
remove weird unicode space in the new copyright header...
r16141 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
Fernando Perez
Add quick help button: broken ATM, style and binding aren't working....
r5023
Jonathan Frederic
Pager
r17197 define([
'base/js/namespace',
Jonathan Frederic
MWE,...
r17200 'jquery',
Jonathan Frederic
Pager
r17197 'base/js/utils',
'base/js/dialog',
Jonathan Frederic
Fix imports of "modules",...
r17202 ], function(IPython, $, utils, dialog) {
Matthias BUSSONNIER
"use strict" in most (if not all) our javascript...
r12103 "use strict";
Jonathan Frederic
Almost done!...
r17198 var platform = utils.platform;
Fernando Perez
Add quick help button: broken ATM, style and binding aren't working....
r5023
jon
In person review with @ellisonbg
r17210 var QuickHelp = function (options) {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* Constructor
*
* Parameters:
* options: dictionary
* Dictionary of keyword arguments.
* events: $(Events) instance
* keyboard_manager: KeyboardManager instance
* notebook: Notebook instance
*/
jon
In person review with @ellisonbg
r17210 this.keyboard_manager = options.keyboard_manager;
Jonathan Frederic
Some JS test fixes
r17212 this.notebook = options.notebook;
jon
In person review with @ellisonbg
r17210 this.keyboard_manager.quick_help = this;
this.events = options.events;
Fernando Perez
Add quick help button: broken ATM, style and binding aren't working....
r5023 };
Paul Ivanov
move hyphen to cmd_ctrl
r16045 var cmd_ctrl = 'Ctrl-';
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 var platform_specific;
Paul Ivanov
Hi, I'm a Mac. And I'm a PC.
r16029
if (platform === 'MacOS') {
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032 // Mac OS X specific
Paul Ivanov
move hyphen to cmd_ctrl
r16045 cmd_ctrl = 'Cmd-';
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 platform_specific = [
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032 { shortcut: "Cmd-Up", help:"go to cell start" },
{ shortcut: "Cmd-Down", help:"go to cell end" },
Matthias Bussonnier
Add notion of action that differs from shortcuts....
r18390 { shortcut: "Alt-Left", help:"go one word left" },
{ shortcut: "Alt-Right", help:"go one word right" },
{ shortcut: "Alt-Backspace", help:"del word before" },
{ shortcut: "Alt-Delete", help:"del word after" },
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 ];
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032 } else {
// PC specific
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 platform_specific = [
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032 { shortcut: "Ctrl-Home", help:"go to cell start" },
Paul Ivanov
ok, removed last few unnecessary shortcuts
r16051 { shortcut: "Ctrl-Up", help:"go to cell start" },
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032 { shortcut: "Ctrl-End", help:"go to cell end" },
{ shortcut: "Ctrl-Down", help:"go to cell end" },
{ shortcut: "Ctrl-Left", help:"go one word left" },
{ shortcut: "Ctrl-Right", help:"go one word right" },
{ shortcut: "Ctrl-Backspace", help:"del word before" },
{ shortcut: "Ctrl-Delete", help:"del word after" },
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 ];
Paul Ivanov
Hi, I'm a Mac. And I'm a PC.
r16029 }
Fernando Perez
Add quick help button: broken ATM, style and binding aren't working....
r5023
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032 var cm_shortcuts = [
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 { shortcut:"Tab", help:"code completion or indent" },
{ shortcut:"Shift-Tab", help:"tooltip" },
Paul Ivanov
move hyphen to cmd_ctrl
r16045 { shortcut: cmd_ctrl + "]", help:"indent" },
{ shortcut: cmd_ctrl + "[", help:"dedent" },
{ shortcut: cmd_ctrl + "a", help:"select all" },
{ shortcut: cmd_ctrl + "z", help:"undo" },
{ shortcut: cmd_ctrl + "Shift-z", help:"redo" },
{ shortcut: cmd_ctrl + "y", help:"redo" },
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032 ].concat( platform_specific );
Bussonnier Matthias
Fix comments...
r19425
var mac_humanize_map = {
// all these are unicode, will probably display badly on anything except macs.
// these are the standard symbol that are used in MacOS native menus
Bussonnier Matthias
complete unicode mac symbol
r19426 // cf http://apple.stackexchange.com/questions/55727/
// for htmlentities and/or unicode value
Bussonnier Matthias
Fix comments...
r19425 'cmd':'⌘',
'shift':'⇧',
'alt':'⌥',
'up':'↑',
'down':'↓',
'left':'←',
'right':'→',
'eject':'⏏',
'tab':'⇥',
Bussonnier Matthias
complete unicode mac symbol
r19426 'backtab':'⇤',
'capslock':'⇪',
Bussonnier Matthias
Fix comments...
r19425 'esc':'⎋',
'ctrl':'⌃',
'enter':'↩',
'pageup':'⇞',
'pagedown':'⇟',
'home':'↖',
'end':'↘',
'altenter':'⌤',
'space':'␣',
Bussonnier Matthias
complete unicode mac symbol
r19426 'delete':'⌦',
'backspace':'⌫',
Bussonnier Matthias
Fix comments...
r19425 'apple':'',
};
var default_humanize_map = {
'shift':'Shift',
'alt':'Alt',
'up':'Up',
'down':'Down',
'left':'Left',
'right':'Right',
'tab':'Tab',
'capslock':'Caps Lock',
'esc':'Esc',
'ctrl':'Ctrl',
'enter':'Enter',
'pageup':'Page Up',
'pagedown':'Page Down',
'home':'Home',
'end':'End',
'space':'Space',
Matthias Bussonnier
adresses Min comments x2
r19427 'backspace':'Backspace',
Bussonnier Matthias
Fix comments...
r19425 };
var humanize_map;
if (platform === 'MacOS'){
humanize_map = mac_humanize_map;
} else {
humanize_map = default_humanize_map;
}
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032
Matthias Bussonnier
add an humanize function that prettify shortcut on macos
r19422 function humanize_key(key){
if (key.length === 1){
key = key.toUpperCase();
}
Bussonnier Matthias
Fix comments...
r19425 return humanize_map[key.toLowerCase()]||key;
Matthias Bussonnier
add an humanize function that prettify shortcut on macos
r19422 }
function humanize_sequence(sequence){
Bussonnier Matthias
fix john coments
r19424 var joinchar = ',';
Matthias Bussonnier
add an humanize function that prettify shortcut on macos
r19422 var hum = _.map(sequence.replace(/meta/g, 'cmd').split(','), humanize_shortcut).join(joinchar);
return hum;
}
function humanize_shortcut(shortcut){
var joinchar = '-';
if (platform === 'MacOS'){
joinchar = '';
}
var sh = _.map(shortcut.split('-'), humanize_key ).join(joinchar);
return sh;
}
Paul Ivanov
completed both sets of platform-specific shortcuts
r16032
Brian Granger
Cleaning up menu code....
r5858 QuickHelp.prototype.show_keyboard_shortcuts = function () {
Jonathan Frederic
Ran function comment conversion tool
r19176 /**
* toggles display of keyboard shortcut dialog
*/
Fernando Perez
Add quick help button: broken ATM, style and binding aren't working....
r5023 var that = this;
Paul Ivanov
rebuild.QuickHelp event sets the dirty bit...
r15771 if ( this.force_rebuild ) {
Paul Ivanov
remove stale modal dialog from the DOM
r15844 this.shortcut_dialog.remove();
Paul Ivanov
rebuild.QuickHelp event sets the dirty bit...
r15771 delete(this.shortcut_dialog);
this.force_rebuild = false;
}
Brian Granger
Cleaning up menu code....
r5858 if ( this.shortcut_dialog ){
// if dialog is already shown, close it
MinRK
tweak quick-help...
r10939 $(this.shortcut_dialog).modal("toggle");
Brian Granger
Cleaning up menu code....
r5858 return;
}
Jonathan Frederic
Fix all the bugs!
r17203 var command_shortcuts = this.keyboard_manager.command_shortcuts.help();
var edit_shortcuts = this.keyboard_manager.edit_shortcuts.help();
Brian E. Granger
Fixing bugs and adding automatic KB shortcut help.
r14037 var help, shortcut;
Brian E. Granger
Adding sorting and better layout to the KB shortcuts.
r14093 var i, half, n;
Brian E. Granger
Fixing bugs and adding automatic KB shortcut help.
r14037 var element = $('<div/>');
Brian E. Granger
Adding back doc in Keyboard Shortcut.
r14066 // The documentation
Jonathan Frederic
Review comments
r16957 var doc = $('<div/>').addClass('alert alert-warning');
Brian E. Granger
Adding back doc in Keyboard Shortcut.
r14066 doc.append(
Matthias BUSSONNIER
some $.html( -> $.text(...
r14634 $('<button/>').addClass('close').attr('data-dismiss','alert').html('&times;')
Brian E. Granger
Adding back doc in Keyboard Shortcut.
r14066 ).append(
'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+
Preston Holmes
Fixed typos in quick-help text
r14949 'allows you to type code/text into a cell and is indicated by a green cell '+
Brian E. Granger
Adding sorting and better layout to the KB shortcuts.
r14093 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+
'and is indicated by a grey cell border.'
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 );
Brian E. Granger
Adding back doc in Keyboard Shortcut.
r14066 element.append(doc);
Brian E. Granger
Fixing bugs and adding automatic KB shortcut help.
r14037 // Command mode
Brian E. Granger
Fixing design of quickhelp.
r14096 var cmd_div = this.build_command_help();
element.append(cmd_div);
// Edit mode
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 var edit_div = this.build_edit_help(cm_shortcuts);
Brian E. Granger
Fixing design of quickhelp.
r14096 element.append(edit_div);
Jonathan Frederic
Fix imports of "modules",...
r17202 this.shortcut_dialog = dialog.modal({
Brian E. Granger
Fixing design of quickhelp.
r14096 title : "Keyboard shortcuts",
body : element,
destroy : false,
buttons : {
Close : {}
Jonathan Frederic
Some JS test fixes
r17212 },
notebook: this.notebook,
keyboard_manager: this.keyboard_manager,
Brian E. Granger
Fixing design of quickhelp.
r14096 });
MinRK
use modal_stretch on keyboard shortcut dialog
r16023 this.shortcut_dialog.addClass("modal_stretch");
Paul Ivanov
rebuild.QuickHelp event sets the dirty bit...
r15771
Jonathan Frederic
Pager
r17197 this.events.on('rebuild.QuickHelp', function() { that.force_rebuild = true;});
Brian E. Granger
Fixing design of quickhelp.
r14096 };
QuickHelp.prototype.build_command_help = function () {
Jonathan Frederic
Fix all the bugs!
r17203 var command_shortcuts = this.keyboard_manager.command_shortcuts.help();
Paul Ivanov
DRY: style in one place, removed code duplication
r15801 return build_div('<h4>Command Mode (press <code>Esc</code> to enable)</h4>', command_shortcuts);
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 };
Brian E. Granger
Fixing design of quickhelp.
r14096
Paul Ivanov
better handling of minus
r15876 var special_case = { pageup: "PageUp", pagedown: "Page Down", 'minus': '-' };
Paul Ivanov
prettify combo keyboard shortcuts
r15782 var prettify = function (s) {
Paul Ivanov
really fix the '-' key shortcuts now
r15877 s = s.replace(/-$/, 'minus'); // catch shortcuts using '-' key
Paul Ivanov
use - for shortcut separators
r15873 var keys = s.split('-');
Paul Ivanov
prettify combo keyboard shortcuts
r15782 var k, i;
Paul Ivanov
one more place
r16227 for (i=0; i < keys.length; i++) {
Paul Ivanov
prettify combo keyboard shortcuts
r15782 k = keys[i];
Paul Ivanov
DRY: style in one place, removed code duplication
r15801 if ( k.length == 1 ) {
keys[i] = "<code><strong>" + k + "</strong></code>";
continue; // leave individual keys lower-cased
}
Matthias Bussonnier
Add notion of action that differs from shortcuts....
r18390 if (k.indexOf(',') === -1){
keys[i] = ( special_case[k] ? special_case[k] : k.charAt(0).toUpperCase() + k.slice(1) );
}
Paul Ivanov
DRY: style in one place, removed code duplication
r15801 keys[i] = "<code><strong>" + keys[i] + "</strong></code>";
Paul Ivanov
prettify combo keyboard shortcuts
r15782 }
return keys.join('-');
Paul Ivanov
first pass at capitalizing keyboard shortcuts
r15781
};
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 QuickHelp.prototype.build_edit_help = function (cm_shortcuts) {
Jonathan Frederic
Fix all the bugs!
r17203 var edit_shortcuts = this.keyboard_manager.edit_shortcuts.help();
Nile Geisinger
Fixing bug #5607...
r16279 jQuery.merge(cm_shortcuts, edit_shortcuts);
Paul Ivanov
remove no-op placeholder edit mode "shortcuts"
r16034 return build_div('<h4>Edit Mode (press <code>Enter</code> to enable)</h4>', cm_shortcuts);
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 };
Paul Ivanov
DRY: style in one place, removed code duplication
r15801
var build_one = function (s) {
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 var help = s.help;
Matthias Bussonnier
add an humanize function that prettify shortcut on macos
r19422 var shortcut = '';
if(s.shortcut){
shortcut = prettify(humanize_sequence(s.shortcut));
}
Paul Ivanov
DRY: style in one place, removed code duplication
r15801 return $('<div>').addClass('quickhelp').
append($('<span/>').addClass('shortcut_key').append($(shortcut))).
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 append($('<span/>').addClass('shortcut_descr').text(' : ' + help));
Paul Ivanov
DRY: style in one place, removed code duplication
r15801
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 };
Paul Ivanov
DRY: style in one place, removed code duplication
r15801
var build_div = function (title, shortcuts) {
var i, half, n;
var div = $('<div/>').append($(title));
var sub_div = $('<div/>').addClass('hbox');
MinRK
use box-flex to layout quickhelp
r15899 var col1 = $('<div/>').addClass('box-flex1');
var col2 = $('<div/>').addClass('box-flex1');
Paul Ivanov
DRY: style in one place, removed code duplication
r15801 n = shortcuts.length;
Brian E. Granger
Adding sorting and better layout to the KB shortcuts.
r14093 half = ~~(n/2); // Truncate :)
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 for (i=0; i<half; i++) { col1.append( build_one(shortcuts[i]) ); }
for (i=half; i<n; i++) { col2.append( build_one(shortcuts[i]) ); }
Paul Ivanov
DRY: style in one place, removed code duplication
r15801 sub_div.append(col1).append(col2);
div.append(sub_div);
return div;
Paul Ivanov
semicolon fixes buttress half of my js commits
r15840 };
Fernando Perez
Add quick help button: broken ATM, style and binding aren't working....
r5023
Jonathan Frederic
Pager
r17197 // Backwards compatability.
MinRK
fix quickhelp widget...
r5066 IPython.QuickHelp = QuickHelp;
Fernando Perez
Add quick help button: broken ATM, style and binding aren't working....
r5023
Jonathan Frederic
Return dicts instead of classes,...
r17201 return {'QuickHelp': QuickHelp};
Jonathan Frederic
Pager
r17197 });