jupyterlab-emrys
Version:
A computational environment for Jupyter. Powered by Emrys
104 lines (103 loc) • 2.71 kB
JavaScript
// Copyright (c) Jupyter Development Team.
// Distributed under the terms of the Modified BSD License.
"use strict";
var docregistry_1 = require('../docregistry');
var widgettracker_1 = require('../widgettracker');
var widget_1 = require('./widget');
/**
* The list of file extensions for images.
*/
var EXTENSIONS = ['.png', '.gif', '.jpeg', '.jpg', '.svg', '.bmp', '.ico',
'.xbm', '.tiff', '.tif'];
/**
* The image file handler extension.
*/
exports.imageHandlerExtension = {
id: 'jupyter.extensions.imageHandler',
requires: [docregistry_1.DocumentRegistry],
activate: activateImageWidget
};
/**
* Activate the image widget extension.
*/
function activateImageWidget(app, registry) {
var zoomInImage = 'ImageWidget:zoomIn';
var zoomOutImage = 'ImageWidget:zoomOut';
var resetZoomImage = 'ImageWidget:resetZoom';
var tracker = new widgettracker_1.WidgetTracker();
var image = new widget_1.ImageWidgetFactory();
var options = {
fileExtensions: EXTENSIONS,
displayName: 'Image',
modelName: 'base64',
defaultFor: EXTENSIONS,
preferKernel: false,
canStartKernel: false
};
registry.addWidgetFactory(image, options);
image.widgetCreated.connect(function (sender, newWidget) {
tracker.addWidget(newWidget);
});
app.commands.add([
{
id: zoomInImage,
handler: zoomIn
},
{
id: zoomOutImage,
handler: zoomOut
},
{
id: resetZoomImage,
handler: resetZoom
}
]);
app.palette.add([
{
command: zoomInImage,
category: 'Image Widget',
text: 'Zoom In',
},
{
command: zoomOutImage,
category: 'Image Widget',
text: 'Zoom Out',
},
{
command: resetZoomImage,
category: 'Image Widget',
text: 'Reset Zoom',
},
]);
function zoomIn() {
if (!tracker.activeWidget) {
return;
}
var widget = tracker.activeWidget;
if (widget.scale > 1) {
widget.scale += .5;
}
else {
widget.scale *= 2;
}
}
function zoomOut() {
if (!tracker.activeWidget) {
return;
}
var widget = tracker.activeWidget;
if (widget.scale > 1) {
widget.scale -= .5;
}
else {
widget.scale /= 2;
}
}
function resetZoom() {
if (!tracker.activeWidget) {
return;
}
var widget = tracker.activeWidget;
widget.scale = 1;
}
}