From a6814949fcca3fac2a9d32162f554cb75e457add Mon Sep 17 00:00:00 2001 From: Brett Zamir Date: Mon, 14 Oct 2013 00:10:43 +0000 Subject: [PATCH] Add WebAppFind extension and icon (depends on WebAppFind add-on and executables) git-svn-id: http://svg-edit.googlecode.com/svn/trunk@2587 eee81c28-f429-11dd-99c0-75d572ba1ddd --- editor/extensions/ext-webappfind.js | 67 +++++++++++++++++++++++++++ editor/extensions/webappfind-icon.svg | 23 +++++++++ 2 files changed, 90 insertions(+) create mode 100644 editor/extensions/ext-webappfind.js create mode 100644 editor/extensions/webappfind-icon.svg diff --git a/editor/extensions/ext-webappfind.js b/editor/extensions/ext-webappfind.js new file mode 100644 index 00000000..cce8a5ca --- /dev/null +++ b/editor/extensions/ext-webappfind.js @@ -0,0 +1,67 @@ +/*globals svgEditor*/ +/* +Depends on Firefox add-on and executables from https://github.com/brettz9/webappfind + +Todos: +1. See WebAppFind Readme for other SVG-related todos +*/ +(function () {'use strict'; + +var pathID, + saveMessage = 'webapp-save', + readMessage = 'webapp-read', + excludedMessages = [readMessage, saveMessage]; + +window.addEventListener('message', function(e) { + if (e.origin !== window.location.origin || // PRIVACY AND SECURITY! (for viewing and saving, respectively) + (!Array.isArray(e.data) || excludedMessages.indexOf(e.data[0]) > -1) // Validate format and avoid our post below + ) { + return; + } + var svgString, + messageType = e.data[0]; + switch (messageType) { + case 'webapp-view': + // Populate the contents + pathID = e.data[1]; + + svgString = e.data[2]; + svgEditor.loadFromString(svgString); + + /*if ($('#tool_save_file')) { + $('#tool_save_file').disabled = false; + }*/ + break; + case 'webapp-save-end': + alert('save complete for pathID ' + e.data[1] + '!'); + break; + default: + throw 'Unexpected method'; + } +}, false); + +window.postMessage([readMessage], window.location.origin); + +svgEditor.addExtension('WebAppFind', function() { + + return { + name: 'WebAppFind', + svgicons: 'extensions/webappfind-icon.svg', + buttons: [{ + id: 'webappfind_save', // + type: 'app_menu', + title: 'Save Image back to Disk', + position: 4, // Before 0-based index position 4 (after the regular "Save Image (S)") + events: { + click: function () { + if (!pathID) { // Not ready yet as haven't received first payload + return; + } + window.postMessage([saveMessage, pathID, svgEditor.canvas.getSvgString()], window.location.origin); + } + } + }] + }; +}); + +}()); diff --git a/editor/extensions/webappfind-icon.svg b/editor/extensions/webappfind-icon.svg new file mode 100644 index 00000000..a64d461e --- /dev/null +++ b/editor/extensions/webappfind-icon.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file