##// END OF EJS Templates
jslint 1
Matthias BUSSONNIER -
Show More
@@ -1,141 +1,141 b''
1 //----------------------------------------------------------------------------
1 //----------------------------------------------------------------------------
2 // Copyright (C) 2012 The IPython Development Team
2 // Copyright (C) 2012 The IPython Development Team
3 //
3 //
4 // Distributed under the terms of the BSD License. The full license is in
4 // Distributed under the terms of the BSD License. The full license is in
5 // the file COPYING, distributed as part of this software.
5 // the file COPYING, distributed as part of this software.
6 //----------------------------------------------------------------------------
6 //----------------------------------------------------------------------------
7
7
8 //============================================================================
8 //============================================================================
9 // Notification widget
9 // Notification widget
10 //============================================================================
10 //============================================================================
11
11
12 var IPython = (function (IPython) {
12 var IPython = (function (IPython) {
13 "use strict";
13 "use strict";
14 var utils = IPython.utils;
14 var utils = IPython.utils;
15
15
16
16
17 var NotificationArea = function (selector) {
17 var NotificationArea = function (selector) {
18 this.selector = selector;
18 this.selector = selector;
19 if (this.selector !== undefined) {
19 if (this.selector !== undefined) {
20 this.element = $(selector);
20 this.element = $(selector);
21 }
21 }
22 this.widget_dict = {};
22 this.widget_dict = {};
23 };
23 };
24
24
25 NotificationArea.prototype.temp_message = function (msg, timeout, css_class) {
25 NotificationArea.prototype.temp_message = function (msg, timeout, css_class) {
26 var uuid = utils.uuid();
26 var uuid = utils.uuid();
27 if( css_class == 'danger'){css_class = 'ui-state-error'}
27 if( css_class == 'danger') {css_class = 'ui-state-error';}
28 if( css_class == 'warning'){css_class = 'ui-state-highlight'}
28 if( css_class == 'warning') {css_class = 'ui-state-highlight';}
29 var tdiv = $('<div>')
29 var tdiv = $('<div>')
30 .attr('id',uuid)
30 .attr('id',uuid)
31 .addClass('notification_widget ui-widget ui-widget-content ui-corner-all')
31 .addClass('notification_widget ui-widget ui-widget-content ui-corner-all')
32 .addClass('border-box-sizing')
32 .addClass('border-box-sizing')
33 .addClass(css_class)
33 .addClass(css_class)
34 .hide()
34 .hide()
35 .text(msg);
35 .text(msg);
36
36
37 $(this.selector).append(tdiv);
37 $(this.selector).append(tdiv);
38 var tmout = Math.max(1500,(timeout||1500));
38 var tmout = Math.max(1500,(timeout||1500));
39 tdiv.fadeIn(100);
39 tdiv.fadeIn(100);
40
40
41 setTimeout(function () {
41 setTimeout(function () {
42 tdiv.fadeOut(100, function () {tdiv.remove();});
42 tdiv.fadeOut(100, function () {tdiv.remove();});
43 }, tmout)
43 }, tmout);
44 };
44 };
45
45
46 NotificationArea.prototype.widget = function(name){
46 NotificationArea.prototype.widget = function(name) {
47 if(this.widget_dict[name] == undefined){
47 if(this.widget_dict[name] == undefined) {
48 return this.new_notification_widget(name)
48 return this.new_notification_widget(name);
49 }
49 }
50 return this.get_widget(name)
50 return this.get_widget(name);
51 }
51 };
52
52
53 NotificationArea.prototype.get_widget = function(name) {
53 NotificationArea.prototype.get_widget = function(name) {
54 if(this.widget_dict[name] == undefined){
54 if(this.widget_dict[name] == undefined) {
55 throw('no widgets with this name');
55 throw('no widgets with this name');
56 }
56 }
57 return this.widget_dict[name];
57 return this.widget_dict[name];
58 }
58 };
59
59
60 NotificationArea.prototype.new_notification_widget = function(name) {
60 NotificationArea.prototype.new_notification_widget = function(name) {
61 if(this.widget_dict[name] != undefined){
61 if(this.widget_dict[name] != undefined) {
62 throw('widget with that name already exists ! ');
62 throw('widget with that name already exists ! ');
63 }
63 }
64 var div = $('<div/>').attr('id','notification_'+name);
64 var div = $('<div/>').attr('id','notification_'+name);
65 $(this.selector).append(div)
65 $(this.selector).append(div);
66 this.widget_dict[name] = new IPython.NotificationWidget('#notification_'+name)
66 this.widget_dict[name] = new IPython.NotificationWidget('#notification_'+name);
67 return this.widget_dict[name];
67 return this.widget_dict[name];
68 }
68 };
69
69
70 NotificationArea.prototype.init_notification_widgets = function() {
70 NotificationArea.prototype.init_notification_widgets = function() {
71 var knw = this.new_notification_widget('kernel');
71 var knw = this.new_notification_widget('kernel');
72
72
73 // Kernel events
73 // Kernel events
74 $([IPython.events]).on('status_idle.Kernel',function () {
74 $([IPython.events]).on('status_idle.Kernel',function () {
75 IPython.save_widget.update_document_title();
75 IPython.save_widget.update_document_title();
76 knw.set_message('Kernel Idle',200);
76 knw.set_message('Kernel Idle',200);
77 }
77 }
78 );
78 );
79
79
80 $([IPython.events]).on('status_busy.Kernel',function () {
80 $([IPython.events]).on('status_busy.Kernel',function () {
81 window.document.title='(Busy) '+window.document.title;
81 window.document.title='(Busy) '+window.document.title;
82 knw.set_message("Kernel busy");
82 knw.set_message("Kernel busy");
83 });
83 });
84
84
85 $([IPython.events]).on('status_restarting.Kernel',function () {
85 $([IPython.events]).on('status_restarting.Kernel',function () {
86 IPython.save_widget.update_document_title();
86 IPython.save_widget.update_document_title();
87 knw.set_message("Restarting kernel",1000);
87 knw.set_message("Restarting kernel",1000);
88 });
88 });
89
89
90 $([IPython.events]).on('status_interrupting.Kernel',function () {
90 $([IPython.events]).on('status_interrupting.Kernel',function () {
91 knw.set_message("Interrupting kernel");
91 knw.set_message("Interrupting kernel");
92 });
92 });
93
93
94 $([IPython.events]).on('status_dead.Kernel',function () {
94 $([IPython.events]).on('status_dead.Kernel',function () {
95 var dialog = $('<div/>');
95 var dialog = $('<div/>');
96 dialog.html('The kernel has died, would you like to restart it? If you do not restart the kernel, you will be able to save the notebook, but running code will not work until the notebook is reopened.');
96 dialog.html('The kernel has died, would you like to restart it? If you do not restart the kernel, you will be able to save the notebook, but running code will not work until the notebook is reopened.');
97 $(document).append(dialog);
97 $(document).append(dialog);
98 dialog.dialog({
98 dialog.dialog({
99 resizable: false,
99 resizable: false,
100 modal: true,
100 modal: true,
101 title: "Dead kernel",
101 title: "Dead kernel",
102 buttons : {
102 buttons : {
103 "Restart": function () {
103 "Restart": function () {
104 $([IPython.events]).trigger('status_restarting.Kernel');
104 $([IPython.events]).trigger('status_restarting.Kernel');
105 IPython.notebook.start_kernel();
105 IPython.notebook.start_kernel();
106 $(this).dialog('close');
106 $(this).dialog('close');
107 },
107 },
108 "Continue running": function () {
108 "Continue running": function () {
109 $(this).dialog('close');
109 $(this).dialog('close');
110 }
110 }
111 }
111 }
112 });
112 });
113 });
113 });
114
114
115 var nnw = this.new_notification_widget('notebook');
115 var nnw = this.new_notification_widget('notebook');
116
116
117 // Notebook events
117 // Notebook events
118 $([IPython.events]).on('notebook_loading.Notebook', function () {
118 $([IPython.events]).on('notebook_loading.Notebook', function () {
119 nnw.set_message("Loading notebook",500);
119 nnw.set_message("Loading notebook",500);
120 });
120 });
121 $([IPython.events]).on('notebook_loaded.Notebook', function () {
121 $([IPython.events]).on('notebook_loaded.Notebook', function () {
122 nnw.set_message("Notebook loaded",500);
122 nnw.set_message("Notebook loaded",500);
123 });
123 });
124 $([IPython.events]).on('notebook_saving.Notebook', function () {
124 $([IPython.events]).on('notebook_saving.Notebook', function () {
125 nnw.set_message("Saving notebook",500);
125 nnw.set_message("Saving notebook",500);
126 });
126 });
127 $([IPython.events]).on('notebook_saved.Notebook', function () {
127 $([IPython.events]).on('notebook_saved.Notebook', function () {
128 nnw.set_message("Notebook saved",2000);
128 nnw.set_message("Notebook saved",2000);
129 });
129 });
130 $([IPython.events]).on('notebook_save_failed.Notebook', function () {
130 $([IPython.events]).on('notebook_save_failed.Notebook', function () {
131 nnw.set_message("Notebook save failed");
131 nnw.set_message("Notebook save failed");
132 });
132 });
133
133
134 }
134 };
135
135
136 IPython.NotificationArea = NotificationArea;
136 IPython.NotificationArea = NotificationArea;
137
137
138 return IPython;
138 return IPython;
139
139
140 }(IPython));
140 }(IPython));
141
141
General Comments 0
You need to be logged in to leave comments. Login now