##// END OF EJS Templates
first pass at capitalizing keyboard shortcuts
Paul Ivanov -
Show More
@@ -1,139 +1,146 b''
1 1 //----------------------------------------------------------------------------
2 2 // Copyright (C) 2008-2011 The IPython Development Team
3 3 //
4 4 // Distributed under the terms of the BSD License. The full license is in
5 5 // the file COPYING, distributed as part of this software.
6 6 //----------------------------------------------------------------------------
7 7
8 8 //============================================================================
9 9 // QuickHelp button
10 10 //============================================================================
11 11
12 12 var IPython = (function (IPython) {
13 13 "use strict";
14 14
15 15 var QuickHelp = function (selector) {
16 16 };
17 17
18 18 QuickHelp.prototype.show_keyboard_shortcuts = function () {
19 19 // toggles display of keyboard shortcut dialog
20 20 var that = this;
21 21 if ( this.force_rebuild ) {
22 22 delete(this.shortcut_dialog);
23 23 this.force_rebuild = false;
24 24 }
25 25 if ( this.shortcut_dialog ){
26 26 // if dialog is already shown, close it
27 27 $(this.shortcut_dialog).modal("toggle");
28 28 return;
29 29 }
30 30 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
31 31 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
32 32 var help, shortcut;
33 33 var i, half, n;
34 34 var element = $('<div/>');
35 35
36 36 // The documentation
37 37 var doc = $('<div/>').addClass('alert');
38 38 doc.append(
39 39 $('<button/>').addClass('close').attr('data-dismiss','alert').html('&times;')
40 40 ).append(
41 41 'The IPython Notebook has two different keyboard input modes. <b>Edit mode</b> '+
42 42 'allows you to type code/text into a cell and is indicated by a green cell '+
43 43 'border. <b>Command mode</b> binds the keyboard to notebook level actions '+
44 44 'and is indicated by a grey cell border.'
45 45 )
46 46 element.append(doc);
47 47
48 48 // Command mode
49 49 var cmd_div = this.build_command_help();
50 50 element.append(cmd_div);
51 51
52 52 // Edit mode
53 53 var edit_div = this.build_edit_help();
54 54 element.append(edit_div);
55 55
56 56 this.shortcut_dialog = IPython.dialog.modal({
57 57 title : "Keyboard shortcuts",
58 58 body : element,
59 59 destroy : false,
60 60 buttons : {
61 61 Close : {}
62 62 }
63 63 });
64 64
65 65 $([IPython.events]).on('rebuild.QuickHelp', function() { that.force_rebuild = true;});
66 66 };
67 67
68 68 QuickHelp.prototype.build_command_help = function () {
69 69 var command_shortcuts = IPython.keyboard_manager.command_shortcuts.help();
70 70 var help, shortcut;
71 71 var i, half, n;
72 72
73 73 // Command mode
74 74 var cmd_div = $('<div/>').append($('<h4>Command Mode (press <code>esc</code> to enable)</h4>'));
75 75 var cmd_sub_div = $('<div/>').addClass('hbox');
76 76 var cmd_col1 = $('<div/>').addClass('box-flex0');
77 77 var cmd_col2 = $('<div/>').addClass('box-flex0');
78 78 n = command_shortcuts.length;
79 79 half = ~~(n/2); // Truncate :)
80 80 for (i=0; i<half; i++) {
81 81 help = command_shortcuts[i]['help'];
82 shortcut = command_shortcuts[i]['shortcut'];
82 shortcut = shortcut_name(command_shortcuts[i]['shortcut']);
83 83 cmd_col1.append($('<div>').addClass('quickhelp').
84 84 append($('<span/>').addClass('shortcut_key').text(shortcut)).
85 85 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
86 86 );
87 87 };
88 88 for (i=half; i<n; i++) {
89 89 help = command_shortcuts[i]['help'];
90 shortcut = command_shortcuts[i]['shortcut'];
90 shortcut = shortcut_name(command_shortcuts[i]['shortcut']);
91 91 cmd_col2.append($('<div>').addClass('quickhelp').
92 92 append($('<span/>').addClass('shortcut_key').text(shortcut)).
93 93 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
94 94 );
95 95 };
96 96 cmd_sub_div.append(cmd_col1).append(cmd_col2);
97 97 cmd_div.append(cmd_sub_div);
98 98 return cmd_div;
99 99 }
100 100
101 var special_case = { pageup: "PageUp", pagedown: "Page Down" };
102 var shortcut_name = function (s) {
103 return ( special_case[s] ? special_case[s] : s.charAt(0).toUpperCase() + s.slice(1) );
104
105
106 };
107
101 108 QuickHelp.prototype.build_edit_help = function () {
102 109 var edit_shortcuts = IPython.keyboard_manager.edit_shortcuts.help();
103 110 var help, shortcut;
104 111 var i, half, n;
105 112
106 113 // Edit mode
107 114 var edit_div = $('<div/>').append($('<h4>Edit Mode (press <code>enter</code> to enable)</h4>'));
108 115 var edit_sub_div = $('<div/>').addClass('hbox');
109 116 var edit_col1 = $('<div/>').addClass('box-flex0');
110 117 var edit_col2 = $('<div/>').addClass('box-flex0');
111 118 n = edit_shortcuts.length;
112 119 half = ~~(n/2); // Truncate :)
113 120 for (i=0; i<half; i++) {
114 121 help = edit_shortcuts[i]['help'];
115 shortcut = edit_shortcuts[i]['shortcut'];
122 shortcut = shortcut_name(edit_shortcuts[i]['shortcut']);
116 123 edit_col1.append($('<div>').addClass('quickhelp').
117 124 append($('<span/>').addClass('shortcut_key').text(shortcut)).
118 125 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
119 126 );
120 127 };
121 128 for (i=half; i<n; i++) {
122 129 help = edit_shortcuts[i]['help'];
123 shortcut = edit_shortcuts[i]['shortcut'];
130 shortcut = shortcut_name(edit_shortcuts[i]['shortcut']);
124 131 edit_col2.append($('<div>').addClass('quickhelp').
125 132 append($('<span/>').addClass('shortcut_key').text(shortcut)).
126 133 append($('<span/>').addClass('shortcut_descr').text(' : ' + help))
127 134 );
128 135 };
129 136 edit_sub_div.append(edit_col1).append(edit_col2);
130 137 edit_div.append(edit_sub_div);
131 138 return edit_div;
132 139 }
133 140
134 141 // Set module variables
135 142 IPython.QuickHelp = QuickHelp;
136 143
137 144 return IPython;
138 145
139 146 }(IPython));
General Comments 0
You need to be logged in to leave comments. Login now