//---------------------------------------------------------------------------- // Copyright (C) 2008 The IPython Development Team // // Distributed under the terms of the BSD License. The full license is in // the file COPYING, distributed as part of this software. //---------------------------------------------------------------------------- //============================================================================ // ToolBar //============================================================================ var IPython = (function (IPython) { var ToolBar = function (selector) { this.selector = selector; if (this.selector !== undefined) { this.construct(); this.addDropDownList(); this.element = $(selector); this.style(); this.bind_events(); } }; // add a group of button into the current toolbar. // // First argument : Mandatory // list of dict as argument, each dict should contain // 3 mandatory keys and values : // 'label' : string -- the text to show on hover // 'icon' : string -- the jQuery-ui icon to add on this button // 'callback' : function -- the callback to execute on a click // // and optionnaly an 'id' key that is assigned to the button element // // Second Argument, optionnal, // string reprensenting the id to give to the button group. // // Example // // IPython.toolbar.addButtonsGroup([ // {'label':'my button', // 'icon':'ui-icon-disk', // 'callback':function(){alert('hoho'), // 'id' : 'my_button_id', // this is optionnal // } // }, // {'label':'my second button', // 'icon':'ui-icon-scissors', // 'callback':function(){alert('be carefull I cut')} // } // ], // "my_button_group_id" // ) // ToolBar.prototype.addButtonsGroup = function(list, group_id){ var span_group = $('<span/>'); if( group_id != undefined ) span_group.attr('id',group_id) for(var el in list) { var button = $('<button/>').button({ icons : {primary: list[el]['icon']}, text : false, label: list[el]['label'], }); var id = list[el]['id']; if( id != undefined ) button.attr('id',id); var fun = list[el]['callback'] button.click(fun); span_group.append(button); } span_group.buttonset(); $(this.selector).append(span_group) } ToolBar.prototype.style = function () { this.element.addClass('border-box-sizing'). addClass('ui-widget ui-widget-content toolbar'). css('border-top-style','none'). css('border-left-style','none'). css('border-right-style','none'); }; ToolBar.prototype.addDropDownList = function() { var select = $(this.selector) .append($('<select/>') .attr('id','cell_type') .addClass('ui-widget ui-widget-content') .append($('<option/>').attr('value','code').text('Code')) .append($('<option/>').attr('value','markdown').text('Markdown')) .append($('<option/>').attr('value','raw').text('Raw Text')) .append($('<option/>').attr('value','heading1').text('Heading 1')) .append($('<option/>').attr('value','heading2').text('Heading 2')) .append($('<option/>').attr('value','heading3').text('Heading 3')) .append($('<option/>').attr('value','heading4').text('Heading 4')) .append($('<option/>').attr('value','heading5').text('Heading 5')) .append($('<option/>').attr('value','heading6').text('Heading 6')) .append($('<option/>').attr('value','heading7').text('Heading 7')) .append($('<option/>').attr('value','heading8').text('Heading 8')) ); } ToolBar.prototype.construct = function() { this.addButtonsGroup([ { 'id':'save_b', 'label':'Save', 'icon':'ui-icon-disk', 'callback':function(){ IPython.notebook.save_notebook(); }, }, ]); this.addButtonsGroup([ { 'id':'cut_b', 'label':'Cut Cell', 'icon':'ui-icon-scissors', 'callback':function(){ IPython.notebook.cut_cell(); }, }, { 'id':'copy_b', 'label':'Copy Cell', 'icon':'ui-icon-copy', 'callback':function(){ IPython.notebook.copy_cell(); }, }, { 'id':'paste_b', 'label':'Paste Cell', 'icon':'ui-icon-clipboard', 'callback':function(){ IPython.notebook.paste_cell(); }, }, ],'cut_copy_paste'); this.addButtonsGroup([ { 'id':'move_up_b', 'label':'Move Cell Up', 'icon':'ui-icon-arrowthick-1-n', 'callback':function(){ IPython.notebook.move_cell_up(); }, }, { 'id':'move_down_b', 'label':'Move Cell Down', 'icon':'ui-icon-arrowthick-1-s', 'callback':function(){ IPython.notebook.move_cell_down(); }, }, ],'move_up_down'); this.addButtonsGroup([ { 'id':'insert_above_b', 'label':'Insert Cell Above', 'icon':'ui-icon-arrowthickstop-1-n', 'callback':function(){ IPython.notebook.insert_cell_above('code'); }, }, { 'id':'insert_below_b', 'label':'Insert Cell Below', 'icon':'ui-icon-arrowthickstop-1-s', 'callback':function(){ IPython.notebook.insert_cell_below('code'); }, }, ],'insert_above_below'); this.addButtonsGroup([ { 'id':'run_b', 'label':'Run Cell', 'icon':'ui-icon-play', 'callback':function(){ IPython.notebook.execute_selected_cell(); }, }, { 'id':'interrupt_b', 'label':'Interrupt', 'icon':'ui-icon-stop', 'callback':function(){ IPython.notebook.kernel.interrupt(); }, }, ],'run_int'); } ToolBar.prototype.bind_events = function () { var that = this; this.element.find('#cell_type').change(function () { var cell_type = $(this).val(); if (cell_type === 'code') { IPython.notebook.to_code(); } else if (cell_type === 'markdown') { IPython.notebook.to_markdown(); } else if (cell_type === 'raw') { IPython.notebook.to_raw(); } else if (cell_type === 'heading1') { IPython.notebook.to_heading(undefined, 1); } else if (cell_type === 'heading2') { IPython.notebook.to_heading(undefined, 2); } else if (cell_type === 'heading3') { IPython.notebook.to_heading(undefined, 3); } else if (cell_type === 'heading4') { IPython.notebook.to_heading(undefined, 4); } else if (cell_type === 'heading5') { IPython.notebook.to_heading(undefined, 5); } else if (cell_type === 'heading6') { IPython.notebook.to_heading(undefined, 6); }; }); $([IPython.events]).on('selected_cell_type_changed.Notebook', function (event, data) { if (data.cell_type === 'heading') { that.element.find('#cell_type').val(data.cell_type+data.level); } else { that.element.find('#cell_type').val(data.cell_type); } }); }; ToolBar.prototype.toggle = function () { this.element.toggle(); IPython.layout_manager.do_resize(); }; IPython.ToolBar = ToolBar; return IPython; }(IPython));