mirror of
https://github.com/linuxserver/core.git
synced 2026-02-20 05:07:19 +08:00
SVG images were opened in the XML text editor by default. This change opens them in the image previewer instead. Assuming that most SVG images will be created and exported from graphics software like Adobe Illustrator or Inkscape, previewing the file content is the better default. Also changes the behaviour of `editors#register()` in that the latest registered editor is used with the highest instead of lowest priority.
139 lines
4.5 KiB
JavaScript
139 lines
4.5 KiB
JavaScript
define(function(require, exports, module) {
|
|
main.consumes = ["Editor", "editors", "ui", "save", "vfs"];
|
|
main.provides = ["imgview"];
|
|
return main;
|
|
|
|
function main(options, imports, register) {
|
|
var ui = imports.ui;
|
|
var vfs = imports.vfs;
|
|
var save = imports.save;
|
|
var Editor = imports.Editor;
|
|
var editors = imports.editors;
|
|
|
|
/***** Initialization *****/
|
|
|
|
var extensions = ["gif", "ico", "svg"];
|
|
|
|
function ImageEditor(){
|
|
var plugin = new Editor("Ajax.org", main.consumes, extensions);
|
|
var editor;
|
|
|
|
var BGCOLOR = "#3D3D3D";
|
|
|
|
plugin.on("draw", function(e) {
|
|
// Create UI element
|
|
editor = e.tab.appendChild(new ui.img({
|
|
flex: "1",
|
|
anchors: "0 0 0 0",
|
|
visible: "false",
|
|
style: "background-color:" + BGCOLOR
|
|
}));
|
|
|
|
plugin.addElement(editor);
|
|
|
|
save.on("beforeSave", function(e) {
|
|
var path = e.document.tab.path;
|
|
if (!path)
|
|
return;
|
|
|
|
// don't save images for now.
|
|
if (editor.value == path)
|
|
return false;
|
|
}, plugin);
|
|
|
|
editor.show();
|
|
});
|
|
|
|
/***** Method *****/
|
|
|
|
function setPath(path, doc) {
|
|
if (!path) return;
|
|
|
|
// Caption is the filename
|
|
doc.title = (doc.changed ? "*" : "") +
|
|
path.substr(path.lastIndexOf("/") + 1);
|
|
|
|
// Tooltip is the full path
|
|
doc.tooltip = path;
|
|
|
|
var fullpath = path.match(/^\w+:\/\//)
|
|
? path
|
|
: vfs.url(path);
|
|
|
|
editor.setProperty("value", apf.escapeXML(fullpath));
|
|
}
|
|
|
|
/***** Lifecycle *****/
|
|
|
|
plugin.on("documentLoad", function(e) {
|
|
var doc = e.doc;
|
|
doc.tab.on("setPath", function(e) {
|
|
setPath(e.path, doc);
|
|
}, doc.getSession());
|
|
doc.tab.backgroundColor = BGCOLOR;
|
|
doc.tab.classList.add("dark");
|
|
});
|
|
|
|
plugin.on("documentActivate", function(e) {
|
|
setPath(e.doc.tab.path || e.doc.value, e.doc);
|
|
});
|
|
|
|
/***** Register and define API *****/
|
|
|
|
/**
|
|
* The imgview handle, responsible for events that involve all
|
|
* ImageEditor instances. This is the object you get when you request
|
|
* the imgview service in your plugin.
|
|
*
|
|
* Example:
|
|
*
|
|
* define(function(require, exports, module) {
|
|
* main.consumes = ["imgview"];
|
|
* main.provides = ["myplugin"];
|
|
* return main;
|
|
*
|
|
* function main(options, imports, register) {
|
|
* var imgviewHandle = imports.imgview;
|
|
* });
|
|
* });
|
|
*
|
|
*
|
|
* @class imgview
|
|
* @extends Plugin
|
|
* @singleton
|
|
*/
|
|
/**
|
|
* Read Only Image Viewer for Cloud9
|
|
*
|
|
* Example of instantiating a new terminal:
|
|
*
|
|
* tabManager.openFile("/test.png", true, function(err, tab) {
|
|
* if (err) throw err;
|
|
*
|
|
* var imgview = tab.editor;
|
|
* });
|
|
*
|
|
* @class imgview.ImageEditor
|
|
* @extends Editor
|
|
**/
|
|
/**
|
|
* The type of editor. Use this to create the terminal using
|
|
* {@link tabManager#openEditor} or {@link editors#createEditor}.
|
|
* @property {"imgview"} type
|
|
* @readonly
|
|
*/
|
|
plugin.freezePublicAPI({});
|
|
|
|
plugin.load(null, "imgview");
|
|
|
|
return plugin;
|
|
}
|
|
ImageEditor.autoload = false;
|
|
|
|
register(null, {
|
|
imgview: editors.register("imgview", "Image Viewer",
|
|
ImageEditor, extensions)
|
|
});
|
|
}
|
|
});
|