rawcell.js
86 lines
| 2.7 KiB
| application/javascript
|
JavascriptLexer
Jonathan Frederic
|
r17217 | // Copyright (c) IPython Development Team. | ||
// Distributed under the terms of the Modified BSD License. | ||||
MinRK
|
r13671 | |||
Jonathan Frederic
|
r17217 | define([ | ||
'jquery', | ||||
'notebook/js/celltoolbar', | ||||
'base/js/dialog', | ||||
'base/js/keyboard', | ||||
], function($, celltoolbar, dialog, keyboard) { | ||||
"use strict"; | ||||
MinRK
|
r13671 | |||
Jonathan Frederic
|
r17217 | var CellToolbar = celltoolbar.CellToolbar; | ||
MinRK
|
r13671 | var raw_cell_preset = []; | ||
var select_type = CellToolbar.utils.select_ui_generator([ | ||||
["None", "-"], | ||||
["LaTeX", "text/latex"], | ||||
MinRK
|
r13780 | ["reST", "text/restructuredtext"], | ||
MinRK
|
r13671 | ["HTML", "text/html"], | ||
MinRK
|
r13780 | ["Markdown", "text/markdown"], | ||
Thomas Kluyver
|
r13832 | ["Python", "text/x-python"], | ||
MinRK
|
r13675 | ["Custom", "dialog"], | ||
MinRK
|
r13671 | |||
], | ||||
// setter | ||||
function(cell, value) { | ||||
MinRK
|
r13675 | if (value === "-") { | ||
delete cell.metadata.raw_mimetype; | ||||
MinRK
|
r13671 | } else if (value === 'dialog'){ | ||
MinRK
|
r13675 | var dialog = $('<div/>').append( | ||
$("<p/>") | ||||
Matthias BUSSONNIER
|
r14634 | .text("Set the MIME type of the raw cell:") | ||
MinRK
|
r13675 | ).append( | ||
$("<br/>") | ||||
).append( | ||||
$('<input/>').attr('type','text').attr('size','25') | ||||
.val(cell.metadata.raw_mimetype || "-") | ||||
); | ||||
Jonathan Frederic
|
r17217 | dialog.modal({ | ||
MinRK
|
r13675 | title: "Raw Cell MIME Type", | ||
body: dialog, | ||||
buttons : { | ||||
"Cancel": {}, | ||||
"OK": { | ||||
class: "btn-primary", | ||||
click: function () { | ||||
console.log(cell); | ||||
cell.metadata.raw_mimetype = $(this).find('input').val(); | ||||
console.log(cell.metadata); | ||||
} | ||||
} | ||||
}, | ||||
open : function (event, ui) { | ||||
var that = $(this); | ||||
// Upon ENTER, click the OK button. | ||||
that.find('input[type="text"]').keydown(function (event, ui) { | ||||
Jonathan Frederic
|
r17217 | if (event.which === keyboard.keycodes.enter) { | ||
MinRK
|
r13675 | that.find('.btn-primary').first().click(); | ||
return false; | ||||
} | ||||
}); | ||||
that.find('input[type="text"]').focus().select(); | ||||
} | ||||
}); | ||||
MinRK
|
r13671 | } else { | ||
MinRK
|
r13675 | cell.metadata.raw_mimetype = value; | ||
MinRK
|
r13671 | } | ||
}, | ||||
//getter | ||||
function(cell) { | ||||
MinRK
|
r13675 | return cell.metadata.raw_mimetype || ""; | ||
MinRK
|
r13671 | }, | ||
// name | ||||
Raffaele De Feo
|
r16437 | "Raw NBConvert Format" | ||
MinRK
|
r13671 | ); | ||
Matthias BUSSONNIER
|
r17454 | var register = function (notebook) { | ||
Jonathan Frederic
|
r17217 | CellToolbar.register_callback('raw_cell.select', select_type, ['raw']); | ||
raw_cell_preset.push('raw_cell.select'); | ||||
MinRK
|
r13671 | |||
Matthias BUSSONNIER
|
r17454 | CellToolbar.register_preset('Raw Cell Format', raw_cell_preset, notebook); | ||
Jonathan Frederic
|
r17217 | console.log('Raw Cell Format toolbar preset loaded.'); | ||
}; | ||||
return {'register': register}; | ||||
MinRK
|
r13671 | |||
Jonathan Frederic
|
r17217 | }); | ||