##// END OF EJS Templates
ok, removed last few unnecessary shortcuts
Paul Ivanov -
Show More
@@ -1,172 +1,170 b''
1 // Copyright (c) IPython Development Team.
1 // Copyright (c) IPython Development Team.
2 // Distributed under the terms of the Modified BSD License.
2 // Distributed under the terms of the Modified BSD License.
3
3
4 //============================================================================
4 //============================================================================
5 // QuickHelp button
5 // QuickHelp button
6 //============================================================================
6 //============================================================================
7
7
8 var IPython = (function (IPython) {
8 var IPython = (function (IPython) {
9 "use strict";
9 "use strict";
10
10
11 var platform = IPython.utils.platform;
11 var platform = IPython.utils.platform;
12
12
13 var QuickHelp = function (selector) {
13 var QuickHelp = function (selector) {
14 };
14 };
15
15
16 var cmd_ctrl = 'Ctrl-';
16 var cmd_ctrl = 'Ctrl-';
17 var platform_specific;
17 var platform_specific;
18
18
19 if (platform === 'MacOS') {
19 if (platform === 'MacOS') {
20 // Mac OS X specific
20 // Mac OS X specific
21 cmd_ctrl = 'Cmd-';
21 cmd_ctrl = 'Cmd-';
22 platform_specific = [
22 platform_specific = [
23 { shortcut: "Cmd-Up", help:"go to cell start" },
23 { shortcut: "Cmd-Up", help:"go to cell start" },
24 { shortcut: "Cmd-Down", help:"go to cell end" },
24 { shortcut: "Cmd-Down", help:"go to cell end" },
25 { shortcut: "Opt-Left", help:"go one word left" },
25 { shortcut: "Opt-Left", help:"go one word left" },
26 { shortcut: "Opt-Right", help:"go one word right" },
26 { shortcut: "Opt-Right", help:"go one word right" },
27 { shortcut: "Opt-Backspace", help:"del word before" },
27 { shortcut: "Opt-Backspace", help:"del word before" },
28 { shortcut: "Opt-Delete", help:"del word after" },
28 { shortcut: "Opt-Delete", help:"del word after" },
29 ];
29 ];
30 } else {
30 } else {
31 // PC specific
31 // PC specific
32 platform_specific = [
32 platform_specific = [
33 { shortcut: "Ctrl-Home", help:"go to cell start" },
33 { shortcut: "Ctrl-Home", help:"go to cell start" },
34 { shortcut: "Alt-Up", help:"go to cell start" },
34 { shortcut: "Ctrl-Up", help:"go to cell start" },
35 { shortcut: "Ctrl-End", help:"go to cell end" },
35 { shortcut: "Ctrl-End", help:"go to cell end" },
36 { shortcut: "Ctrl-Down", help:"go to cell end" },
36 { shortcut: "Ctrl-Down", help:"go to cell end" },
37 { shortcut: "Ctrl-Left", help:"go one word left" },
37 { shortcut: "Ctrl-Left", help:"go one word left" },
38 { shortcut: "Ctrl-Right", help:"go one word right" },
38 { shortcut: "Ctrl-Right", help:"go one word right" },
39 { shortcut: "Alt-Right", help:"go to cell end" },
40 { shortcut: "Ctrl-Backspace", help:"del word before" },
39 { shortcut: "Ctrl-Backspace", help:"del word before" },
41 { shortcut: "Ctrl-Delete", help:"del word after" },
40 { shortcut: "Ctrl-Delete", help:"del word after" },
42 ];
41 ];
43 }
42 }
44
43
45 var cm_shortcuts = [
44 var cm_shortcuts = [
46 { shortcut:"Insert", help:"toggle overwrite" },
47 { shortcut:"Tab", help:"code completion or indent" },
45 { shortcut:"Tab", help:"code completion or indent" },
48 { shortcut:"Shift-Tab", help:"tooltip" },
46 { shortcut:"Shift-Tab", help:"tooltip" },
49 { shortcut: cmd_ctrl + "]", help:"indent" },
47 { shortcut: cmd_ctrl + "]", help:"indent" },
50 { shortcut: cmd_ctrl + "[", help:"dedent" },
48 { shortcut: cmd_ctrl + "[", help:"dedent" },
51 { shortcut: cmd_ctrl + "a", help:"select all" },
49 { shortcut: cmd_ctrl + "a", help:"select all" },
52 { shortcut: cmd_ctrl + "z", help:"undo" },
50 { shortcut: cmd_ctrl + "z", help:"undo" },
53 { shortcut: cmd_ctrl + "Shift-z", help:"redo" },
51 { shortcut: cmd_ctrl + "Shift-z", help:"redo" },
54 { shortcut: cmd_ctrl + "y", help:"redo" },
52 { shortcut: cmd_ctrl + "y", help:"redo" },
55 ].concat( platform_specific );
53 ].concat( platform_specific );
56
54
57
55
58
56
59
57
60
58
61
59
62 QuickHelp.prototype.show_keyboard_shortcuts = function () {
60 QuickHelp.prototype.show_keyboard_shortcuts = function () {
63 // toggles display of keyboard shortcut dialog
61 // toggles display of keyboard shortcut dialog
64 var that = this;
62 var that = this;
65 if ( this.force_rebuild ) {
63 if ( this.force_rebuild ) {
66 this.shortcut_dialog.remove();
64 this.shortcut_dialog.remove();
67 delete(this.shortcut_dialog);
65 delete(this.shortcut_dialog);
68 this.force_rebuild = false;
66 this.force_rebuild = false;
69 }
67 }
70 if ( this.shortcut_dialog ){
68 if ( this.shortcut_dialog ){
71 // if dialog is already shown, close it
69 // if dialog is already shown, close it
72 $(this.shortcut_dialog).modal("toggle");
70 $(this.shortcut_dialog).modal("toggle");
73 return;
71 return;
74 }
72 }
75 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
73 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
76 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
74 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
77 var help, shortcut;
75 var help, shortcut;
78 var i, half, n;
76 var i, half, n;
79 var element = $('<div/>');
77 var element = $('<div/>');
80
78
81 // The documentation
79 // The documentation
82 var doc = $('<div/>').addClass('alert');
80 var doc = $('<div/>').addClass('alert');
83 doc.append(
81 doc.append(
84 $('<button/>').addClass('close').attr('data-dismiss','alert').html('&times;')
82 $('<button/>').addClass('close').attr('data-dismiss','alert').html('&times;')
85 ).append(
83 ).append(
86 'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+
84 'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+
87 'allows you to type code/text into a cell and is indicated by a green cell '+
85 'allows you to type code/text into a cell and is indicated by a green cell '+
88 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+
86 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+
89 'and is indicated by a grey cell border.'
87 'and is indicated by a grey cell border.'
90 );
88 );
91 element.append(doc);
89 element.append(doc);
92
90
93 // Command mode
91 // Command mode
94 var cmd_div = this.build_command_help();
92 var cmd_div = this.build_command_help();
95 element.append(cmd_div);
93 element.append(cmd_div);
96
94
97 // Edit mode
95 // Edit mode
98 var edit_div = this.build_edit_help(cm_shortcuts);
96 var edit_div = this.build_edit_help(cm_shortcuts);
99 element.append(edit_div);
97 element.append(edit_div);
100
98
101 this.shortcut_dialog = IPython.dialog.modal({
99 this.shortcut_dialog = IPython.dialog.modal({
102 title : "Keyboard shortcuts",
100 title : "Keyboard shortcuts",
103 body : element,
101 body : element,
104 destroy : false,
102 destroy : false,
105 buttons : {
103 buttons : {
106 Close : {}
104 Close : {}
107 }
105 }
108 });
106 });
109
107
110 $([IPython.events]).on('rebuild.QuickHelp', function() { that.force_rebuild = true;});
108 $([IPython.events]).on('rebuild.QuickHelp', function() { that.force_rebuild = true;});
111 };
109 };
112
110
113 QuickHelp.prototype.build_command_help = function () {
111 QuickHelp.prototype.build_command_help = function () {
114 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
112 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
115 return build_div('<h4>Command Mode (press <code>Esc</code> to enable)</h4>', command_shortcuts);
113 return build_div('<h4>Command Mode (press <code>Esc</code> to enable)</h4>', command_shortcuts);
116 };
114 };
117
115
118 var special_case = { pageup: "PageUp", pagedown: "Page Down", 'minus': '-' };
116 var special_case = { pageup: "PageUp", pagedown: "Page Down", 'minus': '-' };
119 var prettify = function (s) {
117 var prettify = function (s) {
120 s = s.replace(/-$/, 'minus'); // catch shortcuts using '-' key
118 s = s.replace(/-$/, 'minus'); // catch shortcuts using '-' key
121 var keys = s.split('-');
119 var keys = s.split('-');
122 var k, i;
120 var k, i;
123 for (i in keys) {
121 for (i in keys) {
124 k = keys[i];
122 k = keys[i];
125 if ( k.length == 1 ) {
123 if ( k.length == 1 ) {
126 keys[i] = "<code><strong>" + k + "</strong></code>";
124 keys[i] = "<code><strong>" + k + "</strong></code>";
127 continue; // leave individual keys lower-cased
125 continue; // leave individual keys lower-cased
128 }
126 }
129 keys[i] = ( special_case[k] ? special_case[k] : k.charAt(0).toUpperCase() + k.slice(1) );
127 keys[i] = ( special_case[k] ? special_case[k] : k.charAt(0).toUpperCase() + k.slice(1) );
130 keys[i] = "<code><strong>" + keys[i] + "</strong></code>";
128 keys[i] = "<code><strong>" + keys[i] + "</strong></code>";
131 }
129 }
132 return keys.join('-');
130 return keys.join('-');
133
131
134
132
135 };
133 };
136
134
137 QuickHelp.prototype.build_edit_help = function (cm_shortcuts) {
135 QuickHelp.prototype.build_edit_help = function (cm_shortcuts) {
138 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
136 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
139 jQuery.extend(cm_shortcuts, edit_shortcuts);
137 jQuery.extend(cm_shortcuts, edit_shortcuts);
140 return build_div('<h4>Edit Mode (press <code>Enter</code> to enable)</h4>', cm_shortcuts);
138 return build_div('<h4>Edit Mode (press <code>Enter</code> to enable)</h4>', cm_shortcuts);
141 };
139 };
142
140
143 var build_one = function (s) {
141 var build_one = function (s) {
144 var help = s.help;
142 var help = s.help;
145 var shortcut = prettify(s.shortcut);
143 var shortcut = prettify(s.shortcut);
146 return $('<div>').addClass('quickhelp').
144 return $('<div>').addClass('quickhelp').
147 append($('<span/>').addClass('shortcut_key').append($(shortcut))).
145 append($('<span/>').addClass('shortcut_key').append($(shortcut))).
148 append($('<span/>').addClass('shortcut_descr').text(' : ' + help));
146 append($('<span/>').addClass('shortcut_descr').text(' : ' + help));
149
147
150 };
148 };
151
149
152 var build_div = function (title, shortcuts) {
150 var build_div = function (title, shortcuts) {
153 var i, half, n;
151 var i, half, n;
154 var div = $('<div/>').append($(title));
152 var div = $('<div/>').append($(title));
155 var sub_div = $('<div/>').addClass('hbox');
153 var sub_div = $('<div/>').addClass('hbox');
156 var col1 = $('<div/>').addClass('box-flex1');
154 var col1 = $('<div/>').addClass('box-flex1');
157 var col2 = $('<div/>').addClass('box-flex1');
155 var col2 = $('<div/>').addClass('box-flex1');
158 n = shortcuts.length;
156 n = shortcuts.length;
159 half = ~~(n/2); // Truncate :)
157 half = ~~(n/2); // Truncate :)
160 for (i=0; i<half; i++) { col1.append( build_one(shortcuts[i]) ); }
158 for (i=0; i<half; i++) { col1.append( build_one(shortcuts[i]) ); }
161 for (i=half; i<n; i++) { col2.append( build_one(shortcuts[i]) ); }
159 for (i=half; i<n; i++) { col2.append( build_one(shortcuts[i]) ); }
162 sub_div.append(col1).append(col2);
160 sub_div.append(col1).append(col2);
163 div.append(sub_div);
161 div.append(sub_div);
164 return div;
162 return div;
165 };
163 };
166
164
167 // Set module variables
165 // Set module variables
168 IPython.QuickHelp = QuickHelp;
166 IPython.QuickHelp = QuickHelp;
169
167
170 return IPython;
168 return IPython;
171
169
172 }(IPython));
170 }(IPython));
General Comments 0
You need to be logged in to leave comments. Login now