diff --git a/IPython/frontend/html/notebook/static/js/notebook_main.js b/IPython/frontend/html/notebook/static/js/notebook_main.js index 760458c..d4e6ea6 100644 --- a/IPython/frontend/html/notebook/static/js/notebook_main.js +++ b/IPython/frontend/html/notebook/static/js/notebook_main.js @@ -32,6 +32,7 @@ $(document).ready(function () { IPython.pager = new IPython.Pager('div#pager', 'div#pager_splitter'); IPython.left_panel = new IPython.LeftPanel('div#left_panel', 'div#left_panel_splitter'); IPython.save_widget = new IPython.SaveWidget('span#save_widget'); + IPython.print_widget = new IPython.PrintWidget('span#print_widget'); IPython.notebook = new IPython.Notebook('div#notebook'); IPython.kernel_status_widget = new IPython.KernelStatusWidget('#kernel_status'); IPython.kernel_status_widget.status_idle(); diff --git a/IPython/frontend/html/notebook/static/js/printwidget.js b/IPython/frontend/html/notebook/static/js/printwidget.js new file mode 100644 index 0000000..d9d2baf --- /dev/null +++ b/IPython/frontend/html/notebook/static/js/printwidget.js @@ -0,0 +1,54 @@ +var IPython = (function (IPython) { + + var PrintWidget = function (selector) { + this.selector = selector; + if (this.selector !== undefined) { + this.element = $(selector); + this.style(); + this.bind_events(); + } + }; + + PrintWidget.prototype.style = function () { + this.element.find('button#print_notebook').button(); + }; + + PrintWidget.prototype.bind_events = function () { + var that = this; + this.element.find('button#print_notebook').click(function () { + that.print_notebook(); + }); + }; + + PrintWidget.prototype.enable = function () { + this.element.find('button#print_notebook').button('enable'); + }; + + PrintWidget.prototype.disable = function () { + this.element.find('button#print_notebook').button('disable'); + }; + + PrintWidget.prototype.print_notebook = function () { + var w = window.open('', '_blank', 'scrollbars=1,menubar=1'); + var html = '<html><head>' + + $('head').clone().html() + + '<style type="text/css">' + + '@media print { body { overflow: visible !important; } }' + + '.ui-widget-content { border: 0px; }' + + '</style>' + + '</head><body style="overflow: auto;">' + + $('#notebook').clone().html() + + '</body></html>'; + + w.document.open(); + w.document.write(html); + w.document.close(); + + return false; + }; + + IPython.PrintWidget = PrintWidget; + + return IPython; + +}(IPython)); \ No newline at end of file diff --git a/IPython/frontend/html/notebook/static/js/savewidget.js b/IPython/frontend/html/notebook/static/js/savewidget.js index 6650edd..7f54d87 100644 --- a/IPython/frontend/html/notebook/static/js/savewidget.js +++ b/IPython/frontend/html/notebook/static/js/savewidget.js @@ -90,20 +90,23 @@ var IPython = (function (IPython) { SaveWidget.prototype.status_save = function () { - this.element.find('span.ui-button-text').text('Save'); + this.element.find('button#save_notebook').button('option', 'label', 'Save'); this.element.find('button#save_notebook').button('enable'); - }; + IPython.print_widget.enable(); + }; SaveWidget.prototype.status_saving = function () { - this.element.find('span.ui-button-text').text('Saving'); + this.element.find('button#save_notebook').button('option', 'label', 'Saving'); this.element.find('button#save_notebook').button('disable'); - }; + IPython.print_widget.disable(); + }; SaveWidget.prototype.status_loading = function () { - this.element.find('span.ui-button-text').text('Loading'); + this.element.find('button#save_notebook').button('option', 'label', 'Loading'); this.element.find('button#save_notebook').button('disable'); + IPython.print_widget.disable(); }; diff --git a/IPython/frontend/html/notebook/templates/notebook.html b/IPython/frontend/html/notebook/templates/notebook.html index 0bca8ed..3c086d3 100644 --- a/IPython/frontend/html/notebook/templates/notebook.html +++ b/IPython/frontend/html/notebook/templates/notebook.html @@ -68,6 +68,10 @@ </select> </span> <span class="section_row_buttons"> + <span id="print_widget"> + <button id="print_notebook">Print/HTML</button> + </span> + <button id="download_notebook">Export</button> </span> </div> @@ -212,6 +216,7 @@ <script src="static/js/savewidget.js" type="text/javascript" charset="utf-8"></script> <script src="static/js/pager.js" type="text/javascript" charset="utf-8"></script> <script src="static/js/panelsection.js" type="text/javascript" charset="utf-8"></script> +<script src="static/js/printwidget.js" type="text/javascript" charset="utf-8"></script> <script src="static/js/leftpanel.js" type="text/javascript" charset="utf-8"></script> <script src="static/js/notebook.js" type="text/javascript" charset="utf-8"></script> <script src="static/js/notebook_main.js" type="text/javascript" charset="utf-8"></script>