Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/apps.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Hülsmann <fh@cbix.de>2012-03-12 03:03:25 +0400
committerFlorian Hülsmann <fh@cbix.de>2012-03-12 03:03:25 +0400
commitde32191cc49f4ebc246739418ccabf95f4490b2b (patch)
tree96c17856b651d6df9e41240167d5adfde110e328 /files_svgedit
parent4675415ef15d211c7d7360e25e30fb55c662e38b (diff)
first tests
Diffstat (limited to 'files_svgedit')
-rw-r--r--files_svgedit/appinfo/app.php30
-rw-r--r--files_svgedit/appinfo/info.xml10
-rw-r--r--files_svgedit/css/jgraduate/LICENSE202
-rw-r--r--files_svgedit/css/jgraduate/README3
-rw-r--r--files_svgedit/css/jgraduate/css/jPicker-1.0.12.css191
-rw-r--r--files_svgedit/css/jgraduate/css/jgraduate.css270
-rw-r--r--files_svgedit/css/jgraduate/images/AlphaBar.pngbin0 -> 2195 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/Bars.pngbin0 -> 349 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/Maps.pngbin0 -> 81378 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/NoColor.pngbin0 -> 268 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/bar-opacity.pngbin0 -> 134 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/map-opacity.pngbin0 -> 139 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/mappoint.gifbin0 -> 93 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/mappoint_c.pngbin0 -> 252 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/mappoint_f.pngbin0 -> 255 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/picker.gifbin0 -> 146 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/preview-opacity.pngbin0 -> 135 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/rangearrows.gifbin0 -> 94 bytes
-rw-r--r--files_svgedit/css/jgraduate/images/rangearrows2.gifbin0 -> 93 bytes
-rw-r--r--files_svgedit/css/spinbtn/JQuerySpinBtn.css41
-rw-r--r--files_svgedit/css/spinbtn/spinbtn_updn.pngbin0 -> 666 bytes
-rw-r--r--files_svgedit/css/svg-editor.css1203
-rw-r--r--files_svgedit/extensions/closepath_icons.svg41
-rw-r--r--files_svgedit/extensions/ext-arrows.js298
-rw-r--r--files_svgedit/extensions/ext-closepath.js92
-rw-r--r--files_svgedit/extensions/ext-connector.js579
-rw-r--r--files_svgedit/extensions/ext-eyedropper.js101
-rw-r--r--files_svgedit/extensions/ext-foreignobject.js277
-rw-r--r--files_svgedit/extensions/ext-helloworld.js78
-rw-r--r--files_svgedit/extensions/ext-markers.js572
-rw-r--r--files_svgedit/extensions/ext-server_opensave.js179
-rw-r--r--files_svgedit/extensions/eyedropper-icon.xml34
-rw-r--r--files_svgedit/extensions/eyedropper.pngbin0 -> 718 bytes
-rw-r--r--files_svgedit/extensions/foreignobject-icons.xml96
-rw-r--r--files_svgedit/extensions/helloworld-icon.xml21
-rw-r--r--files_svgedit/extensions/markers-icons.xml115
-rw-r--r--files_svgedit/images/README.txt61
-rw-r--r--files_svgedit/images/align-bottom.pngbin0 -> 291 bytes
-rw-r--r--files_svgedit/images/align-bottom.svg277
-rw-r--r--files_svgedit/images/align-center.pngbin0 -> 449 bytes
-rw-r--r--files_svgedit/images/align-center.svg252
-rw-r--r--files_svgedit/images/align-left.pngbin0 -> 305 bytes
-rw-r--r--files_svgedit/images/align-left.svg235
-rw-r--r--files_svgedit/images/align-middle.pngbin0 -> 459 bytes
-rw-r--r--files_svgedit/images/align-middle.svg250
-rw-r--r--files_svgedit/images/align-right.pngbin0 -> 339 bytes
-rw-r--r--files_svgedit/images/align-right.svg233
-rw-r--r--files_svgedit/images/align-top.pngbin0 -> 287 bytes
-rw-r--r--files_svgedit/images/align-top.svg233
-rw-r--r--files_svgedit/images/bold.pngbin0 -> 2976 bytes
-rw-r--r--files_svgedit/images/cancel.pngbin0 -> 1389 bytes
-rw-r--r--files_svgedit/images/circle.pngbin0 -> 1040 bytes
-rw-r--r--files_svgedit/images/clear.pngbin0 -> 812 bytes
-rw-r--r--files_svgedit/images/clone.pngbin0 -> 715 bytes
-rw-r--r--files_svgedit/images/conn.svg29
-rw-r--r--files_svgedit/images/copy.pngbin0 -> 852 bytes
-rw-r--r--files_svgedit/images/cut.pngbin0 -> 1294 bytes
-rw-r--r--files_svgedit/images/delete.pngbin0 -> 663 bytes
-rw-r--r--files_svgedit/images/document-properties.pngbin0 -> 688 bytes
-rw-r--r--files_svgedit/images/dropdown.gifbin0 -> 49 bytes
-rw-r--r--files_svgedit/images/ellipse.pngbin0 -> 811 bytes
-rw-r--r--files_svgedit/images/eye.pngbin0 -> 750 bytes
-rw-r--r--files_svgedit/images/fhpath.pngbin0 -> 1218 bytes
-rw-r--r--files_svgedit/images/flyouth.pngbin0 -> 109 bytes
-rw-r--r--files_svgedit/images/flyup.gifbin0 -> 48 bytes
-rw-r--r--files_svgedit/images/freehand-circle.pngbin0 -> 1257 bytes
-rw-r--r--files_svgedit/images/freehand-square.pngbin0 -> 903 bytes
-rw-r--r--files_svgedit/images/go-down.pngbin0 -> 683 bytes
-rw-r--r--files_svgedit/images/go-up.pngbin0 -> 652 bytes
-rw-r--r--files_svgedit/images/image.pngbin0 -> 900 bytes
-rw-r--r--files_svgedit/images/italic.pngbin0 -> 2972 bytes
-rw-r--r--files_svgedit/images/line.pngbin0 -> 1026 bytes
-rw-r--r--files_svgedit/images/link_controls.pngbin0 -> 919 bytes
-rw-r--r--files_svgedit/images/logo.pngbin0 -> 3983 bytes
-rw-r--r--files_svgedit/images/logo.svg32
-rw-r--r--files_svgedit/images/move_bottom.pngbin0 -> 737 bytes
-rw-r--r--files_svgedit/images/move_top.pngbin0 -> 663 bytes
-rwxr-xr-xfiles_svgedit/images/node_clone.pngbin0 -> 571 bytes
-rwxr-xr-xfiles_svgedit/images/node_delete.pngbin0 -> 589 bytes
-rw-r--r--files_svgedit/images/none.pngbin0 -> 136 bytes
-rw-r--r--files_svgedit/images/open.pngbin0 -> 919 bytes
-rw-r--r--files_svgedit/images/paste.pngbin0 -> 906 bytes
-rw-r--r--files_svgedit/images/path.pngbin0 -> 854 bytes
-rw-r--r--files_svgedit/images/polygon.pngbin0 -> 881 bytes
-rw-r--r--files_svgedit/images/polygon.svg219
-rw-r--r--files_svgedit/images/rect.pngbin0 -> 404 bytes
-rw-r--r--files_svgedit/images/redo.pngbin0 -> 921 bytes
-rw-r--r--files_svgedit/images/reorient.pngbin0 -> 980 bytes
-rw-r--r--files_svgedit/images/rotate.pngbin0 -> 1500 bytes
-rw-r--r--files_svgedit/images/save.pngbin0 -> 1272 bytes
-rw-r--r--files_svgedit/images/select.pngbin0 -> 712 bytes
-rw-r--r--files_svgedit/images/select_node.pngbin0 -> 828 bytes
-rw-r--r--files_svgedit/images/sep.pngbin0 -> 93 bytes
-rw-r--r--files_svgedit/images/shape_group.pngbin0 -> 553 bytes
-rw-r--r--files_svgedit/images/shape_ungroup.pngbin0 -> 666 bytes
-rw-r--r--files_svgedit/images/source.pngbin0 -> 1110 bytes
-rw-r--r--files_svgedit/images/spinbtn_updn_big.pngbin0 -> 2049 bytes
-rw-r--r--files_svgedit/images/square.pngbin0 -> 422 bytes
-rw-r--r--files_svgedit/images/svg_edit_icons.svg975
-rw-r--r--files_svgedit/images/svg_edit_icons.svgzbin0 -> 5493 bytes
-rw-r--r--files_svgedit/images/text.pngbin0 -> 1032 bytes
-rw-r--r--files_svgedit/images/text.svg157
-rw-r--r--files_svgedit/images/to_path.pngbin0 -> 1153 bytes
-rw-r--r--files_svgedit/images/undo.pngbin0 -> 1122 bytes
-rw-r--r--files_svgedit/images/view-refresh.pngbin0 -> 912 bytes
-rw-r--r--files_svgedit/images/wave.pngbin0 -> 2005 bytes
-rw-r--r--files_svgedit/images/wireframe.pngbin0 -> 466 bytes
-rw-r--r--files_svgedit/images/zoom.pngbin0 -> 1197 bytes
-rw-r--r--files_svgedit/index.php16
-rw-r--r--files_svgedit/js/jgraduate/LICENSE202
-rw-r--r--files_svgedit/js/jgraduate/README3
-rw-r--r--files_svgedit/js/jgraduate/jpicker-1.0.12.min.js1
-rw-r--r--files_svgedit/js/jgraduate/jquery.jgraduate.min.js1
-rw-r--r--files_svgedit/js/jquerybbq/jquery.bbq.min.js18
-rw-r--r--files_svgedit/js/js-hotkeys/README.md45
-rw-r--r--files_svgedit/js/js-hotkeys/jquery.hotkeys.min.js15
-rw-r--r--files_svgedit/js/locale/README.txt17
-rw-r--r--files_svgedit/js/locale/lang.af.js173
-rw-r--r--files_svgedit/js/locale/lang.ar.js173
-rw-r--r--files_svgedit/js/locale/lang.az.js173
-rw-r--r--files_svgedit/js/locale/lang.be.js173
-rw-r--r--files_svgedit/js/locale/lang.bg.js173
-rw-r--r--files_svgedit/js/locale/lang.ca.js173
-rw-r--r--files_svgedit/js/locale/lang.cs.js176
-rw-r--r--files_svgedit/js/locale/lang.cy.js173
-rw-r--r--files_svgedit/js/locale/lang.da.js173
-rw-r--r--files_svgedit/js/locale/lang.de.js173
-rw-r--r--files_svgedit/js/locale/lang.el.js173
-rw-r--r--files_svgedit/js/locale/lang.en.js176
-rw-r--r--files_svgedit/js/locale/lang.es.js174
-rw-r--r--files_svgedit/js/locale/lang.et.js173
-rw-r--r--files_svgedit/js/locale/lang.fa.js174
-rw-r--r--files_svgedit/js/locale/lang.fi.js173
-rw-r--r--files_svgedit/js/locale/lang.fr.js176
-rw-r--r--files_svgedit/js/locale/lang.fy.js173
-rw-r--r--files_svgedit/js/locale/lang.ga.js156
-rw-r--r--files_svgedit/js/locale/lang.gl.js173
-rwxr-xr-xfiles_svgedit/js/locale/lang.he.js173
-rw-r--r--files_svgedit/js/locale/lang.hi.js174
-rw-r--r--files_svgedit/js/locale/lang.hr.js173
-rw-r--r--files_svgedit/js/locale/lang.hu.js173
-rw-r--r--files_svgedit/js/locale/lang.hy.js173
-rw-r--r--files_svgedit/js/locale/lang.id.js173
-rw-r--r--files_svgedit/js/locale/lang.is.js173
-rw-r--r--files_svgedit/js/locale/lang.it.js173
-rw-r--r--files_svgedit/js/locale/lang.ja.js174
-rw-r--r--files_svgedit/js/locale/lang.ko.js173
-rw-r--r--files_svgedit/js/locale/lang.lt.js173
-rw-r--r--files_svgedit/js/locale/lang.lv.js173
-rw-r--r--files_svgedit/js/locale/lang.mk.js173
-rw-r--r--files_svgedit/js/locale/lang.ms.js173
-rw-r--r--files_svgedit/js/locale/lang.mt.js173
-rw-r--r--files_svgedit/js/locale/lang.nl.js176
-rw-r--r--files_svgedit/js/locale/lang.no.js173
-rw-r--r--files_svgedit/js/locale/lang.pl.js173
-rw-r--r--files_svgedit/js/locale/lang.pt-BR.js157
-rw-r--r--files_svgedit/js/locale/lang.pt-PT.js173
-rw-r--r--files_svgedit/js/locale/lang.ro.js173
-rw-r--r--files_svgedit/js/locale/lang.ru.js176
-rw-r--r--files_svgedit/js/locale/lang.sk.js176
-rw-r--r--files_svgedit/js/locale/lang.sl.js173
-rw-r--r--files_svgedit/js/locale/lang.sq.js173
-rw-r--r--files_svgedit/js/locale/lang.sr.js173
-rw-r--r--files_svgedit/js/locale/lang.sv.js173
-rw-r--r--files_svgedit/js/locale/lang.sw.js173
-rw-r--r--files_svgedit/js/locale/lang.th.js173
-rw-r--r--files_svgedit/js/locale/lang.tl.js173
-rw-r--r--files_svgedit/js/locale/lang.tr.js173
-rw-r--r--files_svgedit/js/locale/lang.uk.js173
-rw-r--r--files_svgedit/js/locale/lang.vi.js173
-rw-r--r--files_svgedit/js/locale/lang.yi.js173
-rw-r--r--files_svgedit/js/locale/lang.zh-CN.js174
-rw-r--r--files_svgedit/js/locale/lang.zh-HK.js174
-rw-r--r--files_svgedit/js/locale/lang.zh-TW.js174
-rw-r--r--files_svgedit/js/locale/locale.js84
-rw-r--r--files_svgedit/js/locale/locale.min.js1
-rw-r--r--files_svgedit/js/ocsvg.js10
-rw-r--r--files_svgedit/js/spinbtn/JQuerySpinBtn.min.js1
-rw-r--r--files_svgedit/js/svg-editor.min.js1
-rw-r--r--files_svgedit/js/svgcanvas.min.js1
-rw-r--r--files_svgedit/js/svgicons/jquery.svgicons.js457
-rw-r--r--files_svgedit/js/svgicons/jquery.svgicons.min.js1
-rw-r--r--files_svgedit/templates/editor.php628
183 files changed, 18741 insertions, 0 deletions
diff --git a/files_svgedit/appinfo/app.php b/files_svgedit/appinfo/app.php
new file mode 100644
index 000000000..9e233dd0c
--- /dev/null
+++ b/files_svgedit/appinfo/app.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+* ownCloud - SVG editor application - http://ocsvg.cbix.de
+*
+* @author Florian Hülsmann
+* @copyright 2012 Florian Hülsmann <fh@cbix.de>
+*
+* This library is free software; you can redistribute it and/or
+* modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
+* License as published by the Free Software Foundation; either
+* version 3 of the License, or any later version.
+*
+* This library is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License along with this library. If not, see <http://www.gnu.org/licenses/>.
+*
+*/
+OC_Util::addScript('files_svgedit', 'ocsvg');
+OC_App::register(array(
+ 'order' => 80,
+ 'id' => 'apptemplate',
+ 'name' => 'App Template'
+ ));
+
+?>
diff --git a/files_svgedit/appinfo/info.xml b/files_svgedit/appinfo/info.xml
new file mode 100644
index 000000000..fcadc15d0
--- /dev/null
+++ b/files_svgedit/appinfo/info.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<info>
+ <id>files_svgedit</id>
+ <name>SVG Editor</name>
+ <description>A complete javascript interface to view, modify and create vector graphics directly in ownCloud.</description>
+ <version>0.1</version>
+ <licence>LGPL</licence>
+ <author>Florian Hülsmann</author>
+ <require>2</require>
+</info>
diff --git a/files_svgedit/css/jgraduate/LICENSE b/files_svgedit/css/jgraduate/LICENSE
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/files_svgedit/css/jgraduate/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/files_svgedit/css/jgraduate/README b/files_svgedit/css/jgraduate/README
new file mode 100644
index 000000000..ef3e21ff8
--- /dev/null
+++ b/files_svgedit/css/jgraduate/README
@@ -0,0 +1,3 @@
+jGraduate - A jQuery plugin for picking gradients
+
+Licensed under the Apache License 2. See LICENSE for more information.
diff --git a/files_svgedit/css/jgraduate/css/jPicker-1.0.12.css b/files_svgedit/css/jgraduate/css/jPicker-1.0.12.css
new file mode 100644
index 000000000..c943ae16f
--- /dev/null
+++ b/files_svgedit/css/jgraduate/css/jPicker-1.0.12.css
@@ -0,0 +1,191 @@
+.jPicker_Picker {
+ display: inline-block;
+ height: 24px; /* change this value if using a different sized color picker icon */
+ position: relative; /* make this element an absolute positioning container */
+ text-align: left; /* make the zero width children position to the left of container */
+ width: 25px; /* change this value if using a different sized color picker icon */
+}
+.jPicker_Color, .jPicker_Alpha {
+ background-position: 2px 2px;
+ display: block;
+ height: 100%;
+ left: 0px;
+ position: absolute;
+ top: 0px;
+ width: 100%;
+}
+.jPicker_Icon {
+ background-repeat: no-repeat;
+ cursor: pointer;
+ display: block;
+ height: 100%;
+ left: 0px;
+ position: absolute;
+ top: 0px;
+ width: 100%;
+}
+.jPicker_Container {
+ display: none;
+ z-index: 10; /* make sure container draws above color picker icon in Firefox/Safari/Chrome/Opera/etc. -
+ IE calculates z-index so this won't work - we will hide all color picker icons placed after the selected one in code when shown in IE */
+}
+.jPicker_table {
+ background-color: #efefef;
+ border: 1px outset #666;
+ font-family: Arial, Helvetica, Sans-Serif;
+ font-size: 12px;
+ margin: 0px;
+ padding: 5px;
+ width: 550px;
+}
+.jPicker_table td {
+ margin: 0px;
+ padding: 0px;
+ vertical-align: top;
+}
+.jPicker_MoveBar {
+ background-color: #dddddd;
+ border: 1px outset #aaa;
+ cursor: move;
+ height: 12px;
+}
+.jPicker_Title {
+ font-size: 11px !important;
+ font-weight: bold;
+ margin: -2px 0px 0px 0px;
+ padding: 0px;
+ text-align: center;
+ width: 100%;
+}
+.jPicker_ColorMap {
+ border: 2px inset #eee;
+ cursor: crosshair;
+ height: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
+ margin: 0px 5px 0px 5px;
+ overflow: hidden; /* hide the overdraw of the Color Map icon when at edge of viewing box */
+ padding: 0px;
+ position: relative; /* make this element an absolute positioning container */
+ width: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
+}
+div[class="jPicker_ColorMap"] {
+ height: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
+ width: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
+}
+.jPicker_ColorBar {
+ border: 2px inset #eee;
+ cursor: n-resize;
+ height: 260px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 256px later */
+ margin: 12px 10px 0px 5px;
+ padding: 0px;
+ position: relative;
+ width: 24px; /* IE 6 incorrectly draws border inside the width and height instead of outside - We will fix this to 20px later */
+}
+div[class="jPicker_ColorBar"] {
+ height: 256px; /* correct to 256px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
+ width: 20px; /* correct to 20px for browsers that support the "[class="xxx"]" selector (IE7+,Firefox,Safari,Chrome,Opera,etc.) */
+}
+.jPicker_ColorMap_l1, .jPicker_ColorMap_l2, .jPicker_ColorMap_l3, .jPicker_ColorBar_l1, .jPicker_ColorBar_l2, .jPicker_ColorBar_l3, .jPicker_ColorBar_l4, .jPicker_ColorBar_l5, .jPicker_ColorBar_l6 {
+ background-color: transparent;
+ background-image: none;
+ display: block;
+ height: 256px; /* must specific pixel height. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
+ would not be drawn if its overflow is set to hidden. */
+ left: 0px;
+ position: absolute;
+ top: 0px;
+}
+.jPicker_ColorMap_l1, .jPicker_ColorMap_l2, .jPicker_ColorMap_l3 {
+ width: 256px; /* must specific pixel width. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
+ would not be drawn if its overflow is set to hidden. */
+}
+.jPicker_ColorBar_l1, .jPicker_ColorBar_l2, .jPicker_ColorBar_l3, .jPicker_ColorBar_l4, .jPicker_ColorBar_l5, .jPicker_ColorBar_l6 {
+ width: 20px; /* must specific pixel width. IE7/8 Quirks mode ignores opacity for an absolutely positioned item in a relative container with "overflow: visible". The marker in the colorBar
+ would not be drawn if its overflow is set to hidden. */
+}
+.jPicker_ColorMap_l1, .jPicker_ColorMap_l2, .jPicker_ColorBar_l6 {
+ background-repeat: no-repeat;
+}
+.jPicker_ColorMap_l3, .jPicker_ColorBar_l5 {
+ background-repeat: repeat;
+}
+.jPicker_ColorBar_l1, .jPicker_ColorBar_l2, .jPicker_ColorBar_l3, .jPicker_ColorBar_l4 {
+ background-repeat: repeat-x;
+}
+.jPicker_ColorMap_Arrow {
+ display: block;
+ position: absolute;
+}
+.jPicker_ColorBar_Arrow {
+ display: block;
+ left: -10px; /* (arrow width / 2) - (element width / 2) - position arrows' center in elements' center */
+ position: absolute;
+}
+.jPicker_Preview {
+ font-size: x-small;
+ text-align: center;
+}
+.jPicker_Preview div {
+ border: 2px inset #eee;
+ height: 62px;
+ margin: 0px auto;
+ padding: 0px;
+ width: 62px;
+}
+.jPicker_Preview div span {
+ border: 1px solid #000;
+ display: block;
+ height: 30px;
+ margin: 0px auto;
+ padding: 0px;
+ width: 60px;
+}
+.jPicker_Preview div span.jPicker_Active {
+ border-bottom-width: 0px;
+}
+.jPicker_Preview div span.jPicker_Current {
+ border-top-width: 0px;
+ cursor: pointer;
+}
+.jPicker_OkCancel {
+ text-align: center;
+ width: 120px;
+}
+.jPicker_OkCancel input {
+ width: 100px;
+}
+.jPicker_OkCancel input.jPicker_Ok {
+ margin: 12px 0px 5px 0px;
+}
+.jPicker_Text {
+ text-align: left;
+}
+.jPicker_HueText, .jPicker_SaturationText, .jPicker_BrightnessText, .jPicker_RedText, .jPicker_GreenText, .jPicker_BlueText, .jPicker_AlphaText {
+ background-color: #fff;
+ border: 1px inset #aaa;
+ margin: 0px 0px 0px 5px;
+ text-align: left;
+ width: 30px;
+}
+.jPicker_HexText {
+ background-color: #fff;
+ border: 1px inset #aaa;
+ margin: 0px 0px 0px 5px;
+ width: 65px;
+}
+.jPicker_Grid {
+ text-align: center;
+}
+span.jPicker_QuickColor {
+ border: 1px inset #aaa;
+ cursor: pointer;
+ display: block;
+ float: left;
+ height: 13px;
+ line-height: 13px;
+ margin: 2px 2px 1px 2px;
+ padding: 0px;
+ width: 15px;
+}
+span[class="jPicker_QuickColor"] {
+ width: 13px;
+} \ No newline at end of file
diff --git a/files_svgedit/css/jgraduate/css/jgraduate.css b/files_svgedit/css/jgraduate/css/jgraduate.css
new file mode 100644
index 000000000..06ab1708b
--- /dev/null
+++ b/files_svgedit/css/jgraduate/css/jgraduate.css
@@ -0,0 +1,270 @@
+/*
+ * jGraduate Default CSS
+ *
+ * Copyright (c) 2009 Jeff Schiller
+ *
+ * Licensed under the Apache License Version 2
+ */
+
+h2.jGraduate_Title {
+ font-family: Arial, Helvetica, Sans-Serif;
+ font-size: 11px !important;
+ font-weight: bold;
+ margin: -13px 0px 0px 0px;
+ padding: 0px;
+ text-align: center;
+}
+
+.jGraduate_Picker {
+ font-family: Arial, Helvetica, Sans-Serif;
+ font-size: 12px;
+ border-style: solid;
+ border-color: lightgrey black black lightgrey;
+ border-width: 1px;
+ background-color: #EFEFEF;
+ position: absolute;
+ padding: 10px;
+}
+
+.jGraduate_tabs li {
+ background-color: #ccc;
+ display: inline;
+ border: solid 1px grey;
+ padding: 3px;
+ margin: 2px;
+ cursor: pointer;
+}
+
+li.jGraduate_tab_current {
+ background-color: #EFEFEF;
+ display: inline;
+ padding: 3px;
+ margin: 2px;
+ border: solid 1px black;
+ cursor: pointer;
+}
+
+.jGraduate_colPick {
+ display: none;
+}
+
+.jGraduate_lgPick {
+ display: none;
+ border: outset 1px #666;
+ padding: 10px 7px 5px 5px;
+ overflow: auto;
+}
+
+.jGraduate_rgPick {
+ display: none;
+ border: outset 1px #666;
+ padding: 10px 7px 5px 5px;
+ overflow: auto;
+/* position: relative;*/
+}
+
+.jGraduate_tabs {
+ position: relative;
+ background-color: #EFEFEF;
+ padding: 0px;
+ margin: 0px;
+ margin-bottom: 5px;
+}
+
+div.jGraduate_Swatch {
+ float: left;
+ margin: 8px;
+}
+div.jGraduate_GradContainer {
+ border: 2px inset #EEE;
+ background-image: url(../images/map-opacity.png);
+ background-position: 0px 0px;
+ height: 256px;
+}
+
+.jGraduate_AlphaArrows {
+ position: absolute;
+ margin-top: -10px;
+ margin-left: 250.5px;
+}
+
+div.jGraduate_Opacity {
+ border: 2px inset #eee;
+ margin-top: 14px;
+ background-color: black;
+ background-image: url(../images/Maps.png);
+ background-position: 0px -2816px;
+ height: 20px;
+ cursor: ew-resize;
+}
+
+div.lg_jGraduate_OpacityField {
+ position: absolute;
+ bottom: 25px;
+ left: 292px;
+}
+
+div.jGraduate_Form {
+ float: left;
+ width: 140px;
+ margin: -3px 3px 0px 4px;
+}
+
+div.jGraduate_StopSection {
+ width: 120px;
+ text-align: center;
+}
+
+div.jGraduate_RadiusField {
+
+ text-align: center;
+ float: left;
+}
+
+div.jGraduate_RadiusField input {
+ margin-top: 10px;
+}
+
+.jGraduate_RadiusField .jGraduate_Form_Section {
+ width: 250px;
+ padding: 2px;
+ height: 80px;
+ overflow: visible;
+}
+
+.jGraduate_Form_Section input[type=text] {
+ width: 38px;
+}
+
+.jGraduate_Radius {
+ border:1px solid #BBB;
+ cursor:ew-resize;
+ height:20px;
+ margin-top:14px;
+ position: relative;
+}
+
+
+.jGraduate_RadiusArrows {
+ top: 0;
+ left: 0;
+ position: absolute;
+ margin-top: -10px;
+ margin-left: 250.5px;
+}
+
+
+div.jGraduate_OkCancel {
+ float: left;
+ width: 113px;
+}
+
+input.jGraduate_Ok, input.jGraduate_Cancel {
+ display: block;
+ width: 100px;
+ margin-left: -4px;
+ margin-right: -4px;
+}
+input.jGraduate_Ok {
+ margin: 9px -4px 5px -4px;
+}
+
+.colorBox {
+ float: left;
+ height: 16px;
+ width: 16px;
+ border: 1px solid #808080;
+ cursor: pointer;
+ margin: 4px 4px 4px 30px;
+}
+
+.colorBox + label {
+ float: left;
+ margin-top: 7px;
+}
+
+label.jGraduate_Form_Heading {
+ position: relative;
+ top: 10px;
+ background-color: #EFEFEF;
+ padding: 2px;
+ font-weight: bold;
+ font-size: 13px;
+}
+
+div.jGraduate_Form_Section {
+ border-style: solid;
+ border-width: 1px;
+ border-color: grey;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ padding: 15px 5px 5px 5px;
+ margin: 2px;
+ width: 110px;
+ text-align: center;
+ overflow: auto;
+}
+
+div.jGraduate_LightBox {
+ position: fixed;
+ top: 0px;
+ left: 0px;
+ right: 0px;
+ bottom: 0px;
+ background-color: #000;
+ opacity: 0.5;
+ display: none;
+}
+
+div.jGraduate_stopPicker {
+ position: absolute;
+ display: none;
+ background: #E8E8E8;
+}
+
+
+.jGraduate_rgPick {
+ width: 530px;
+}
+
+.jGraduate_rgPick div.jGraduate_Form {
+ width: 270px;
+ position: absolute;
+ left: 284px;
+ width: 266px;
+ top: 130px;
+ margin: -3px 3px 0px 4px;
+}
+
+.jGraduate_Colorblocks {
+ display: table;
+ border-spacing: 0 5px;
+}
+
+.jGraduate_colorblock {
+ display: table-row;
+}
+
+.jGraduate_Colorblocks .jGraduate_colorblock > * {
+ display: table-cell;
+ vertical-align: middle;
+ margin: 0;
+ float: none;
+}
+
+.jGraduate_rgPick div.jGraduate_StopSection {
+ float: left;
+ width: 133px;
+ margin: 0;
+}
+
+.jGraduate_rgPick .jGraduate_OkCancel {
+ position: absolute;
+ right: 0;
+}
+
+.rg_jGraduate_OpacityField {
+ position: absolute;
+ left: 288px;
+ bottom: 24px;
+} \ No newline at end of file
diff --git a/files_svgedit/css/jgraduate/images/AlphaBar.png b/files_svgedit/css/jgraduate/images/AlphaBar.png
new file mode 100644
index 000000000..2950daeb8
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/AlphaBar.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/Bars.png b/files_svgedit/css/jgraduate/images/Bars.png
new file mode 100644
index 000000000..a9801ec19
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/Bars.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/Maps.png b/files_svgedit/css/jgraduate/images/Maps.png
new file mode 100644
index 000000000..de33e3de2
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/Maps.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/NoColor.png b/files_svgedit/css/jgraduate/images/NoColor.png
new file mode 100644
index 000000000..ae3614551
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/NoColor.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/bar-opacity.png b/files_svgedit/css/jgraduate/images/bar-opacity.png
new file mode 100644
index 000000000..e42ad0812
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/bar-opacity.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/map-opacity.png b/files_svgedit/css/jgraduate/images/map-opacity.png
new file mode 100644
index 000000000..6756cee6d
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/map-opacity.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/mappoint.gif b/files_svgedit/css/jgraduate/images/mappoint.gif
new file mode 100644
index 000000000..f5f855745
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/mappoint.gif
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/mappoint_c.png b/files_svgedit/css/jgraduate/images/mappoint_c.png
new file mode 100644
index 000000000..d0a6e1cea
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/mappoint_c.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/mappoint_f.png b/files_svgedit/css/jgraduate/images/mappoint_f.png
new file mode 100644
index 000000000..563ff87c2
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/mappoint_f.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/picker.gif b/files_svgedit/css/jgraduate/images/picker.gif
new file mode 100644
index 000000000..374d89104
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/picker.gif
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/preview-opacity.png b/files_svgedit/css/jgraduate/images/preview-opacity.png
new file mode 100644
index 000000000..0dd9a2f8b
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/preview-opacity.png
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/rangearrows.gif b/files_svgedit/css/jgraduate/images/rangearrows.gif
new file mode 100644
index 000000000..218872ccc
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/rangearrows.gif
Binary files differ
diff --git a/files_svgedit/css/jgraduate/images/rangearrows2.gif b/files_svgedit/css/jgraduate/images/rangearrows2.gif
new file mode 100644
index 000000000..fdeb54a10
--- /dev/null
+++ b/files_svgedit/css/jgraduate/images/rangearrows2.gif
Binary files differ
diff --git a/files_svgedit/css/spinbtn/JQuerySpinBtn.css b/files_svgedit/css/spinbtn/JQuerySpinBtn.css
new file mode 100644
index 000000000..7a279a09e
--- /dev/null
+++ b/files_svgedit/css/spinbtn/JQuerySpinBtn.css
@@ -0,0 +1,41 @@
+/*
+ Styles to make ordinary <INPUT type="text"/> look like a spinbutton/spinbox control.
+ Use with JQuerySpinBtn.js to provide the spin functionality by reacting to mouse etc.
+ (Requires a reference to the JQuery library found at http://jquery.com/src/latest/)
+ (Hats-off to John Resig for creating the excellent JQuery library. It is fab.)
+
+ This control is achieved with no extra html markup whatsoever and uses unobtrusive javascript.
+
+ Written by George Adamson, Software Unity (george.jquery@softwareunity.com) September 2006.
+ Big improvements added by Mark Gibson, (mgibson@designlinks.net) September 2006.
+
+ Do contact me with comments and suggestions but please don't ask for support.
+ As much as I'd love to help with specific problems I have plenty to get on with already!
+
+ Go ahead and use it in your own projects. This code is provided 'as is'.
+ Sure I've tested in heaps of ways. Its good for me, but you use it at your own risk.
+ SoftwareUnity and I are certainly not responsible if your computer sets fire to the sofa,
+ hacks into the pentagon, hijacks a plane or gives you any kind of hassle whatsoever.
+
+ If you'd like your spin-button image in a different place then you'll need to alter both
+ the CSS below and the javascript isMouseOverUpDn() function to accommodate the new position.
+ You could even have left and right buttons either side of the textbox.
+*/
+
+INPUT.spin-button {
+ /* explicitly put padding for top/bottom/left in here so that Opera displays it better */
+ padding: 2px 20px 2px 2px;
+ background-repeat:no-repeat; /* Warning: Img may disappear in Firefox if you use 'background-attachment:fixed' ! */
+ background-position:100% 0%;
+ background-image:url('spinbtn_updn.png');
+ background-color:white; /* Needed for Opera */
+}
+
+INPUT.spin-button.up { /* Change button img when mouse is over the UP-arrow */
+ cursor:pointer;
+ background-position:100% -18px; /* 18px matches height of 2 visible buttons */
+}
+INPUT.spin-button.down { /* Change button img when mouse is over the DOWN-arrow */
+ cursor:pointer;
+ background-position:100% -36px; /* 36px matches height of 2x2 visible buttons */
+}
diff --git a/files_svgedit/css/spinbtn/spinbtn_updn.png b/files_svgedit/css/spinbtn/spinbtn_updn.png
new file mode 100644
index 000000000..8baa1b0cc
--- /dev/null
+++ b/files_svgedit/css/spinbtn/spinbtn_updn.png
Binary files differ
diff --git a/files_svgedit/css/svg-editor.css b/files_svgedit/css/svg-editor.css
new file mode 100644
index 000000000..016ca7bca
--- /dev/null
+++ b/files_svgedit/css/svg-editor.css
@@ -0,0 +1,1203 @@
+body {
+ background: #D8D8D8;
+}
+
+#svg_editor {
+ font-size: 8pt;
+ font-family: Verdana, Helvetica, Arial;
+ color: #000000;
+}
+
+#svg_editor a {
+ color: #0000FF;
+}
+
+#svg_editor hr {
+ border: none;
+ border-bottom: 1px solid #808080;
+}
+
+#svg_editor select {
+ margin-top: 4px;
+}
+
+#svg_editor #svgroot {
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+#svg_editor #svgcanvas {
+ line-height: normal;
+ display: inline-block;
+ background-color: #A0A0A0;
+ text-align: center;
+ vertical-align: middle;
+ width: 640px;
+ height: 480px;
+ -apple-dashboard-region:dashboard-region(control rectangle 0px 0px 0px 0px); /* for widget regions that shouldn't react to dragging */
+ position: relative;
+ /*
+ A subtle gradient effect in the canvas.
+ Just experimenting - not sure if this is worth it.
+ */
+ background: -moz-radial-gradient(45deg,#bbb,#222);
+ background: -webkit-gradient(radial, center center, 3, center center, 1000, from(#bbb), to(#222));
+}
+
+#svg_editor div#palette_holder {
+ overflow-x: scroll;
+ overflow-y: hidden;
+ height: 31px;
+ border: 1px solid #808080;
+ border-top: none;
+ margin-top: 2px;
+ margin-left: 4px;
+ position: relative;
+ z-index: 2;
+}
+
+#svg_editor #stroke_bg,
+#svg_editor #fill_bg {
+ height: 16px;
+ width: 16px;
+ margin: 1px;
+}
+
+#svg_editor #fill_color, #svg_editor #stroke_color {
+ height: 16px;
+ width: 16px;
+ border: 1px solid #808080;
+ cursor: pointer;
+ margin-top: -18px;
+ margin-left: 1px;
+}
+
+#tool_stroke select {
+ margin-top: 0;
+}
+
+#svg_editor #color_tools .icon_label {
+ padding: 3px 19%;
+ width: 28px;
+ height: 100%;
+ cursor: pointer;
+
+}
+
+#svg_editor #group_opacityLabel,
+#svg_editor #zoomLabel {
+ cursor: pointer;
+ margin-right: 5px;
+ padding-top: 4px
+}
+
+#color_tools .icon_label > * {
+ position: relative;
+ top: 1px;
+}
+
+#svg_editor div#palette {
+ float: left;
+ width: 672px;
+ height: 16px;
+}
+
+#svg_editor div#workarea {
+ display: inline-table-cell;
+ position:absolute;
+ top: 75px;
+ left: 40px;
+ bottom: 62px;
+ right: 14px;
+ background-color: #A0A0A0;
+ border: 1px solid #808080;
+ overflow: auto;
+ text-align: center;
+}
+
+#svg_editor #sidepanels {
+ display: inline-block;
+ position:absolute;
+ top: 75px;
+ bottom: 60px;
+ right: 0px;
+ width: 2px;
+ padding: 10px;
+ border-color: #808080;
+ border-style: solid;
+ border-width: 1px;
+ border-left: none;
+}
+
+#svg_editor #layerpanel {
+ display: inline-block;
+ position:absolute;
+ top: 1px;
+ bottom: 0px;
+ right: 0px;
+ width: 0px;
+ overflow: auto;
+ margin: 0px;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+
+}
+
+/*
+ border-style: solid;
+ border-color: #666;
+ border-width: 0px 0px 0px 1px;
+*/
+#svg_editor #sidepanel_handle {
+ display: inline-block;
+ position: absolute;
+ background-color: #D8D8D8;
+ font-weight: bold;
+ left: 0px;
+ top: 40%;
+ width: 1em;
+ padding: 5px 1px 5px 5px;
+ margin-left: 3px;
+ cursor: pointer;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+}
+
+#svg_editor #sidepanel_handle:hover {
+ font-weight: bold;
+}
+
+#svg_editor #sidepanel_handle * {
+ cursor: pointer;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+}
+#svg_editor #layerbuttons {
+ margin: 0px;
+ padding: 0px;
+ padding-left: 2px;
+ padding-right: 2px;
+ width: 106px;
+ height: 20px;
+ border-right: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF;
+ border-left: 1px solid #808080;
+ border-top: 1px solid #808080;
+ overflow: auto;
+}
+
+#svg_editor .layer_button {
+ width: 14px;
+ height: 14px;
+ padding: 1px;
+ border-left: 1px solid #FFFFFF;
+ border-top: 1px solid #FFFFFF;
+ border-right: 1px solid #808080;
+ border-bottom: 1px solid #808080;
+ cursor: pointer;
+ float: left;
+ margin-right: 3px;
+}
+
+#svg_editor .layer_buttonpressed {
+ width: 14px;
+ height: 14px;
+ padding: 1px;
+ border-right: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF;
+ border-left: 1px solid #808080;
+ border-top: 1px solid #808080;
+ cursor: pointer;
+}
+
+#svg_editor #layerlist {
+ margin: 1px;
+ padding: 0px;
+ width: 110px;
+ border-collapse: collapse;
+ border: 1px solid #808080;
+ background-color: #FFFFFF;
+}
+
+#svg_editor #layerlist tr.layer {
+ background-color: #FFFFFF;
+ margin: 0px;
+ padding: 0px;
+}
+#svg_editor #layerlist tr.layersel {
+ border: 1px solid #808080;
+ background-color: #CCCCCC;
+}
+
+#svg_editor #layerlist td.layervis {
+ width: 22px;
+ cursor:pointer;
+}
+#svg_editor #layerlist td.layerinvis {
+ background-image: none;
+ cursor:pointer;
+}
+
+#svg_editor #layerlist td.layervis * {
+ display: block;
+}
+
+#svg_editor #layerlist td.layerinvis * {
+ display: none;
+}
+
+#svg_editor #layerlist td.layername {
+ cursor: pointer;
+}
+
+#svg_editor #layerlist tr.layersel td.layername {
+ font-weight: bold;
+}
+
+#svg_editor #selLayerLabel {
+ white-space: nowrap;
+}
+
+#svg_editor #selLayerNames {
+ display: block;
+}
+
+#svg_editor div.palette_item {
+ height: 16px;
+ width: 16px;
+ float: left;
+}
+
+#svg_editor #main_button {
+ position: absolute;
+ top: 4px;
+ left: 4px;
+}
+
+
+#svg_editor #main_icon {
+ background: #E8E8E8;
+ position: relative;
+ top: -2px;
+ left: -2px;
+ padding: 1px 0 2px 1px;
+ width: 44px;
+ height: 30px;
+ border-left: 1px solid #FFF;
+ border-top: 1px solid #FFF;
+ border-right: 1px solid #808080;
+ border-bottom: 1px solid #808080;
+ border-radius: 8px;
+ -moz-border-radius: 8px;
+ -webkit-border-radius: 8px;
+}
+
+#svg_editor .tool_button:hover,
+#svg_editor .push_button:hover,
+#svg_editor .buttonup:hover,
+#svg_editor .buttondown,
+#svg_editor .tool_button_current,
+#svg_editor .push_button_pressed
+{
+ border-left: 1px #fcd9ba solid !important;
+ border-top: 1px #fcd9ba solid !important;
+ border-right: 1px #e0a874 solid !important;
+ border-bottom: 1px #e0a874 solid !important;
+ background-color: #FFC !important;
+}
+
+#svg_editor .tool_button_current,
+#svg_editor .push_button_pressed,
+#svg_editor .buttondown {
+ background-color: #f4e284 !important;
+ border-top: 1px solid #630 !important;
+ border-left: 1px solid #630 !important;
+}
+
+#svg_editor #main_icon span {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ display: block;
+ z-index: 2;
+}
+
+#svg_editor #main_menu {
+ z-index: 12;
+ background: #E8E8E8;
+ position: relative;
+ width: 200px;
+ padding: 5px;
+ -moz-box-shadow: #555 1px 1px 4px;
+ -webkit-box-shadow: #555 1px 1px 4px;
+ font-size: 1.1em;
+ display: none;
+ overflow: hidden;
+ border: 1px outset gray;
+ clear: both;
+}
+
+#svg_editor #main_menu ul,
+#svg_editor #main_menu li {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+#svg_editor #main_menu li {
+/* height: 35px;*/
+ line-height: 22px;
+ padding-top: 7px;
+ padding-left: 7px;
+ margin: -5px;
+ overflow: auto;
+ cursor: default;
+}
+
+#svg_editor #main_menu li:hover {
+ background: #FFC;
+}
+
+#svg_editor #main_menu li > div {
+ float: left;
+ padding-right: 5px;
+}
+
+#svg_editor #main_menu p {
+ margin-top: 5px;
+}
+
+#svg_editor #logo img {
+ border: 0;
+ width: 32px;
+ height: 32px;
+}
+
+
+
+#main_icon > div {
+ float: left;
+}
+
+#svg_editor #main_button .dropdown {
+ padding-top: 28%;
+ margin-left: -1px;
+}
+
+
+
+#svg_editor #tools_top {
+ position: absolute;
+ left: 50px;
+ right: 2px;
+ top: 2px;
+ height: 72px;
+ border-bottom: none;
+ /* Ideally this should be auto (makes scrollbar if needed), but currently hides
+ the .dropdown lists.
+/* overflow: auto;*/
+}
+
+#svg_editor #tools_left {
+ position: absolute;
+ border-right: none;
+ width: 32px;
+ top: 75px;
+ left: 0;
+ padding-left: 2px;
+ background: #D8D8D8; /* Needed so flyout icons don't appear on the left */
+ z-index: 4;
+}
+
+#workarea.wireframe #svgcontent * {
+ fill: none;
+ stroke: #000;
+ stroke-width: 1px;
+ stroke-opacity: 1.0;
+ stroke-dasharray: 0;
+ opacity: 1;
+ pointer-events: stroke;
+ vector-effect: non-scaling-stroke;
+ filter: none;
+}
+
+#workarea.wireframe #svgcontent text {
+ fill: #000;
+ stroke: none;
+}
+
+#workarea.wireframe #canvasBackground rect {
+ fill: #FFF !important;
+}
+
+#svg_editor #selected_panel,
+#svg_editor #multiselected_panel,
+#svg_editor #g_panel,
+#svg_editor #rect_panel,
+#svg_editor #circle_panel,
+#svg_editor #ellipse_panel,
+#svg_editor #line_panel,
+#svg_editor #image_panel,
+#svg_editor #text_panel,
+#svg_editor #path_node_panel {
+ display: none;
+}
+
+#svg_editor #multiselected_panel .selected_tool {
+ vertical-align: 12px;
+}
+
+#svg_editor #tools_top > div, #tools_top {
+ line-height: 26px;
+}
+
+#svg_editor div.toolset,
+#svg_editor div.toolset > * {
+ float: left;
+}
+
+#svg_editor div.toolset {
+ height: 34px;
+}
+
+
+#tools_top > div > * {
+ float: left;
+ margin-right: 2px;
+}
+
+#tools_top label {
+ margin-top: 0;
+ margin-left: 5px;
+}
+
+#tools_top input {
+ margin-top: 5px;
+ height: 15px;
+}
+
+#svg_editor #tools_left .tool_button,
+#svg_editor #tools_left .tool_button_current {
+ position: relative;
+ z-index: 11;
+}
+
+#svg_editor .flyout_arrow_horiz {
+ position: absolute;
+ bottom: -1px;
+ right: 0;
+ z-index: 10;
+}
+
+
+span.zoom_tool {
+ line-height: 26px;
+ padding: 3px;
+}
+
+#zoom_panel {
+ margin-top: 5px;
+}
+
+.dropdown {
+ position: relative;
+}
+
+#svg_editor .dropdown button {
+ width: 15px;
+ height: 21px;
+ margin: 6px 0 0 1px;
+ padding: 0;
+ border-left: 1px solid #FFFFFF;
+ border-top: 1px solid #FFFFFF;
+ border-right: 1px solid #808080;
+ border-bottom: 1px solid #808080;
+ background-color: #E8E8E8;
+}
+
+.dropdown button.down {
+ border-left: 1px solid #808080;
+ border-top: 1px solid #808080;
+ border-right: 1px solid #FFFFFF;
+ border-bottom: 1px solid #FFFFFF;
+ background-color: #B0B0B0;
+}
+
+.dropdown ul {
+ list-style: none;
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ left: -80px;
+ top: 26px;
+ z-index: 4;
+ display: none;
+}
+
+.dropup ul {
+ top: auto;
+ bottom: 26px;
+}
+
+.dropdown li {
+ display: block;
+ width: 120px;
+ padding: 4px;
+ background: #E8E8E8;
+ border: 1px solid #B0B0B0;
+ margin: 0 0 -1px 0;
+ line-height: 16px;
+}
+
+.dropdown li:hover {
+ background-color: #FFC;
+}
+
+.dropdown li.special {
+ padding: 10px 4px;
+}
+
+.dropdown li.special:hover {
+ background: #FFC;
+}
+
+#font_family_dropdown li {
+ font-size: 1.4em;
+}
+
+#font_family {
+ margin-left: 5px;
+ margin-right: 0;
+}
+
+
+#svg_editor .tool_button,
+#svg_editor .push_button,
+#svg_editor .tool_button_current,
+#svg_editor .push_button_pressed
+{
+ height: 24px;
+ width: 24px;
+ margin: 2px;
+ padding: 2px;
+ border-left: 1px solid #FFF;
+ border-top: 1px solid #FFF;
+ border-right: 1px solid #808080;
+ border-bottom: 1px solid #808080;
+ background-color: #E8E8E8;
+ cursor: pointer;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+#svg_editor #main_menu li#tool_open, #svg_editor #main_menu li#tool_import {
+ position: relative;
+ overflow: hidden;
+}
+
+#tool_image {
+ overflow: hidden;
+}
+
+#tool_open input,
+#tool_import input,
+#tool_image input {
+ position: absolute;
+ opacity: 0;
+ font-size: 10em;
+ top: -5px;
+ right: -5px;
+ margin: 0;
+ cursor: pointer; /* Sadly doesn't appear to have an effect */
+}
+
+#svg_editor .disabled {
+ opacity: 0.5;
+ cursor: default;
+}
+
+#svg_editor .tool_sep {
+ width: 1px;
+ background: #888;
+ border-left: 1px outset #EEE;
+ margin: 2px 3px;
+ padding: 0;
+ height: 24px;
+
+}
+
+#svg_editor .icon_label {
+ float: left;
+ padding-top: 3px;
+ padding-right: 3px;
+ box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ height: 0;
+}
+
+#svg_editor .width_label {
+ padding-right: 5px;
+}
+
+#tool_bold, #tool_italic {
+ font: bold 2.1em/1.1em serif;
+ text-align: center;
+ padding-left: 2px;
+ position: relative;
+}
+
+#text {
+ position: absolute;
+ left: -9999px;
+}
+
+#tool_bold span, #tool_italic span {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0; left: 0;
+ background: #000;
+ opacity: 0;
+}
+
+#tool_italic {
+ font-weight: normal;
+ font-style: italic;
+}
+
+#url_notice {
+ padding-top: 4px;
+ display: none;
+}
+
+#svg_editor #color_picker {
+ position: absolute;
+ display: none;
+ background: #E8E8E8;
+ height: 350px;
+ z-index: 4;
+}
+
+#svg_editor .tools_flyout {
+ position: absolute;
+ display: none;
+ cursor: pointer;
+ width: 400px;
+}
+
+#svg_editor .tools_flyout_v {
+ position: absolute;
+ display: none;
+ cursor: pointer;
+ width: 30px;
+}
+
+#svg_editor .tools_flyout .tool_button {
+ float: left;
+ background-color: #E8E8E8;
+ border-left: 1px solid #FFFFFF;
+ border-top: 1px solid #FFFFFF;
+ border-right: 1px solid #808080;
+ border-bottom: 1px solid #808080;
+ height: 28px;
+ width: 28px;
+}
+
+#svg_editor #tools_bottom {
+ position: absolute;
+ left: 40px;
+ right: 0;
+ bottom: 0;
+ height: 64px;
+ overflow: visible;
+}
+
+#svg_editor #tools_bottom_1 {
+ width: 115px;
+ float: left;
+}
+
+#svg_editor #tools_bottom_2 {
+ width: 165px;
+ position: relative;
+ float: left;
+}
+
+#tools_bottom input[type=text] {
+ width: 2.2em;
+}
+
+#svg_editor #color_tools {
+ display: table;
+ margin-top: 1px;
+ border-spacing: 0 3px;
+ clip: rect(0,0,10px,0);
+}
+
+.color_tool {
+ display: table-row;
+ overflow: hidden;
+ height: 26px;
+ padding: 0 4px;
+}
+
+.color_tool > * {
+ display: table-cell;
+ background: #f0f0f0;
+ padding: 0 5px 0 0;
+ vertical-align: middle;
+/* height: 25px;*/
+}
+
+#toggle_stroke_tools {
+ letter-spacing: -.2em;
+ padding-right: 8px;
+}
+
+#toggle_stroke_tools:hover {
+ cursor: pointer;
+ background: #FFC;
+}
+
+.stroke_tool {
+ display: none;
+ white-space: nowrap;
+}
+
+#svg_editor .stroke_tool button {
+ margin-top: 3px;
+ background: #F0F0F0;
+}
+
+#svg_editor .stroke_tool div div {
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ width: 20px;
+ height: 20px;
+ margin: 1px 0;
+ padding: 1px;
+ border: 1px solid #DDD;
+}
+
+#svg_editor .stroke_tool:hover div > * {
+ background-color: #FFC;
+}
+
+#svg_editor .stroke_tool.down div div,
+#svg_editor .stroke_tool.down button,
+#tools_top .dropdown.down > * {
+ border: 1px inset gray;
+ background: #F4E284;
+}
+
+.stroke_tool > div {
+ width: 42px;
+}
+
+.stroke_tool > div > * {
+ float: left;
+}
+
+
+#tools_top .dropdown .icon_label {
+ border: 1px solid transparent;
+ margin-top: 3px;
+ height: auto;
+}
+
+#option_lists ul {
+ display: none;
+ position: absolute;
+ height: auto;
+ z-index: 3;
+ margin: 0;
+ list-style: none;
+ padding-left: 0;
+}
+
+#option_lists .optcols2 {
+ width: 70px;
+ margin-left: -15px;
+}
+
+#option_lists .optcols3 {
+ width: 90px;
+ margin-left: -31px;
+}
+
+#option_lists .optcols4 {
+ width: 130px;
+ margin-left: -44px;
+}
+
+#option_lists ul[class^=optcols] li {
+ float: left;
+}
+
+#svg_editor ul li.current {
+ background-color: #F4E284;
+}
+
+#svg_editor #option_lists ul li {
+ margin: 0;
+ border-radius: 0;
+ -moz-border-radius: 0;
+ -webkit-border-radius: 0;
+}
+
+.color_tool > *:first-child {
+ -moz-border-radius-topleft: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ padding-right: 0;
+}
+
+.color_tool > *:last-child {
+ -moz-border-radius-topright: 4px;
+ -moz-border-radius-bottomright: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+}
+
+#svg_editor #tool_opacity {
+ position: absolute;
+ top: 4px;
+ right: 2px;
+ background: #f0f0f0;
+ height: 26px;
+ border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-radius: 4px;
+ padding: 0 3px;
+}
+
+#tools_bottom .dropdown button {
+ margin-top: 2px;
+}
+
+#opacity_dropdown li {
+ width: 140px;
+}
+
+#svg_editor #copyright {
+ text-align: right;
+ padding-right: .3em;
+}
+
+#svg_source_editor {
+ display: none;
+}
+
+#svg_source_editor #svg_source_overlay {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ left: 0px;
+ bottom: 0px;
+ background-color: black;
+ opacity: 0.6;
+ z-index: 5;
+}
+
+#svg_source_editor #svg_source_container {
+ position: absolute;
+ top: 30px;
+ left: 30px;
+ right: 30px;
+ bottom: 30px;
+ background-color: #B0B0B0;
+ opacity: 1.0;
+ text-align: center;
+ border: 1px outset #777;
+ z-index: 6;
+}
+
+#bg_blocks {
+ overflow: auto;
+ margin-left: 30px;
+}
+
+#svg_docprops #svg_docprops_container {
+ position: absolute;
+ top: 50px;
+ padding: 10px;
+ background-color: #B0B0B0;
+ border: 1px outset #777;
+ opacity: 1.0;
+/* width: 450px;*/
+ font-family: Verdana, Helvetica, sans-serif;
+ font-size: .8em;
+ z-index: 20001;
+}
+
+#svg_docprops .error {
+ border: 1px solid red;
+ padding: 3px;
+}
+
+#svg_docprops #resolution {
+ max-width: 14em;
+}
+
+#tool_docprops_back {
+ margin-left: 1em;
+ overflow: auto;
+}
+
+#svg_docprops_container #svg_docprops_docprops,
+#svg_docprops_container #svg_docprops_prefs {
+ float: left;
+ width: 221px;
+ margin: 5px .7em;
+ overflow: hidden;
+}
+
+#svg_docprops_container #svg_docprops_prefs {
+ float: right;
+}
+
+#svg_docprops legend {
+ max-width: 195px;
+}
+
+#svg_docprops_docprops > legend, #svg_docprops_prefs > legend {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+
+#svg_docprops_container fieldset {
+ padding: 5px;
+ margin: 5px;
+ border: 1px solid #DDD;
+}
+
+#svg_docprops_container label {
+ display: block;
+ margin: .5em;
+}
+
+#svginfo_bg_note {
+ font-size: .9em;
+ font-style: italic;
+ color: #444;
+}
+
+#canvas_title {
+ display: block;
+}
+
+#svg_source_editor #svg_source_textarea {
+ position: relative;
+ width: 95%;
+ top: 5px;
+ height: 250px;
+ padding: 5px;
+ font-size: 12px;
+}
+
+#svg_source_editor #tool_source_back {
+ text-align: left;
+ padding-left: 20px;
+}
+
+#svg_docprops_container div.color_block {
+ float: left;
+ margin: 2px;
+ padding: 20px;
+}
+
+#change_background div.cur_background {
+ border: 2px solid blue;
+ padding: 18px;
+}
+
+#background_img {
+ position: absolute;
+ top: 0;
+ left: 0;
+ text-align: left;
+}
+
+#svg_docprops button {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+
+#svg_docprops {
+ display: none;
+}
+
+#image_save_opts label {
+ font-size: .9em;
+}
+
+#image_save_opts input {
+ margin-left: 0;
+}
+
+#svg_docprops #svg_docprops_overlay {
+ position: absolute;
+ top: 0px;
+ right: 0px;
+ left: 0px;
+ bottom: 0px;
+ background-color: black;
+ opacity: 0.6;
+ z-index: 20000;
+}
+
+.toolbar_button button {
+ border:1px solid #dedede;
+ line-height:130%;
+ float: left;
+ background: #E8E8E8 none;
+ padding:5px 10px 5px 7px; /* Firefox */
+ line-height:17px; /* Safari */
+ margin: 5px 20px 0 0;
+
+ border: 1px #808080 solid;
+ border-top-color: #FFF;
+ border-left-color: #FFF;
+
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+.toolbar_button button:hover {
+ border: 1px #e0a874 solid;
+ border-top-color: #fcd9ba;
+ border-left-color: #fcd9ba;
+ background-color: #FFC;
+}
+.toolbar_button button:active {
+ background-color: #F4E284;
+ border-left: 1px solid #663300;
+ border-top: 1px solid #663300;
+}
+
+.toolbar_button button .svg_icon {
+ margin:0 3px -3px 0 !important;
+ padding:0;
+ border:none;
+ width:16px;
+ height:16px;
+}
+
+#dialog_box {
+ display: none;
+}
+
+#dialog_box_overlay {
+ background: black;
+ opacity: .5;
+ height:100%;
+ left:0;
+ position:absolute;
+ top:0;
+ width:100%;
+ z-index: 6;
+}
+
+#dialog_content {
+ height: 95px;
+ margin: 10px 10px 5px 10px;
+ background: #DDD;
+ overflow: auto;
+ text-align: left;
+ border: 1px solid #B0B0B0;
+}
+
+#dialog_content.prompt {
+ height: 75px;
+}
+
+#dialog_content p {
+ margin: 10px;
+ line-height: 1.3em;
+}
+
+#dialog_container {
+ position: absolute;
+ font-family: Verdana;
+ text-align: center;
+ left: 50%;
+ top: 50%;
+ width: 300px;
+ margin-left: -150px;
+ height: 150px;
+ margin-top: -80px;
+ position:fixed;
+ z-index:50001;
+ background: #CCC;
+ border: 1px outset #777;
+ font-family:Verdana,Helvetica,sans-serif;
+ font-size:0.8em;
+}
+
+#dialog_container, #dialog_content {
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+#dialog_buttons input[type=text] {
+ width: 90%;
+ display: block;
+ margin: 0 0 5px 11px;
+}
+
+#dialog_buttons input[type=button] {
+ margin: 0 1em;
+}
+
+
+/* Slider
+----------------------------------*/
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }
+
+.ui-slider {
+ border: 1px solid #B0B0B0;
+}
+
+.ui-slider-handle {
+ background: #B0B0B0;
+ border: 1px solid #000;
+}
+
+/* Necessary to keep the flyouts sized properly */
+#svg_editor .tools_flyout .tool_button,
+#svg_editor .tools_flyout .tool_flyout {
+ padding: 2px;
+ width: 24px;
+ height: 24px;
+ margin: 0;
+ border-radius: 0px;
+ -moz-border-radius: 0px;
+ -webkit-border-radius: 0px;
+}
+
diff --git a/files_svgedit/extensions/closepath_icons.svg b/files_svgedit/extensions/closepath_icons.svg
new file mode 100644
index 000000000..7294f5ead
--- /dev/null
+++ b/files_svgedit/extensions/closepath_icons.svg
@@ -0,0 +1,41 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<g id="tool_closepath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+ <title>Layer 1</title>
+ <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+ <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+ <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+ <g stroke-width="15" stroke="#00f" fill="#0ff">
+ <circle r="30" cy="41" cx="123"/>
+ <circle r="30" cy="146" cx="40"/>
+ <circle r="30" cy="260" cx="69"/>
+ <circle r="30" cy="260" cx="228"/>
+ <circle r="30" cy="148" cx="260"/>
+ </g>
+ </g>
+</svg>
+</g>
+<g id="tool_openpath">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+ <title>Layer 1</title>
+ <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+ <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+ <g stroke-width="15" stroke="#00f" fill="#0ff">
+ <circle r="30" cy="41" cx="123"/>
+ <circle r="30" cy="146" cx="40"/>
+ <circle r="30" cy="260" cx="69"/>
+ <circle r="30" cy="260" cx="228"/>
+ <circle r="30" cy="148" cx="260"/>
+ </g>
+ <g stroke="#A00" stroke-width="15" fill="none">
+ <line x1="168" y1="24" x2="210" y2="150"/>
+ <line x1="210" y1="24" x2="168" y2="150"/>
+ </g>
+ </g>
+</svg>
+</g>
+
+<g id="svg_eof"/>
+</svg> \ No newline at end of file
diff --git a/files_svgedit/extensions/ext-arrows.js b/files_svgedit/extensions/ext-arrows.js
new file mode 100644
index 000000000..ebc3930cf
--- /dev/null
+++ b/files_svgedit/extensions/ext-arrows.js
@@ -0,0 +1,298 @@
+/*
+ * ext-arrows.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+
+svgEditor.addExtension("Arrows", function(S) {
+ var svgcontent = S.svgcontent,
+ addElem = S.addSvgElementFromJson,
+ nonce = S.nonce,
+ randomize_ids = S.randomize_ids,
+ selElems;
+
+ svgCanvas.bind('setarrownonce', setArrowNonce);
+ svgCanvas.bind('unsetsetarrownonce', unsetArrowNonce);
+
+ var lang_list = {
+ "en":[
+ {"id": "arrow_none", "textContent": "No arrow" }
+ ],
+ "fr":[
+ {"id": "arrow_none", "textContent": "Sans flèche" }
+ ]
+ };
+
+ var prefix = 'se_arrow_';
+ if (randomize_ids) {
+ var arrowprefix = prefix + nonce + '_';
+ } else {
+ var arrowprefix = prefix;
+ }
+
+ var pathdata = {
+ fw: {d:"m0,0l10,5l-10,5l5,-5l-5,-5z", refx:8, id: arrowprefix + 'fw'},
+ bk: {d:"m10,0l-10,5l10,5l-5,-5l5,-5z", refx:2, id: arrowprefix + 'bk'}
+ }
+
+ function setArrowNonce(window, n) {
+ randomize_ids = true;
+ arrowprefix = prefix + n + '_';
+ pathdata.fw.id = arrowprefix + 'fw';
+ pathdata.bk.id = arrowprefix + 'bk';
+ }
+
+ function unsetArrowNonce(window) {
+ randomize_ids = false;
+ arrowprefix = prefix;
+ pathdata.fw.id = arrowprefix + 'fw';
+ pathdata.bk.id = arrowprefix + 'bk';
+ }
+
+ function getLinked(elem, attr) {
+ var str = elem.getAttribute(attr);
+ if(!str) return null;
+ var m = str.match(/\(\#(.*)\)/);
+ if(!m || m.length !== 2) {
+ return null;
+ }
+ return S.getElem(m[1]);
+ }
+
+ function showPanel(on) {
+ $('#arrow_panel').toggle(on);
+
+ if(on) {
+ var el = selElems[0];
+ var end = el.getAttribute("marker-end");
+ var start = el.getAttribute("marker-start");
+ var mid = el.getAttribute("marker-mid");
+ var val;
+
+ if(end && start) {
+ val = "both";
+ } else if(end) {
+ val = "end";
+ } else if(start) {
+ val = "start";
+ } else if(mid) {
+ val = "mid";
+ if(mid.indexOf("bk") != -1) {
+ val = "mid_bk";
+ }
+ }
+
+ if(!start && !mid && !end) {
+ val = "none";
+ }
+
+ $("#arrow_list").val(val);
+ }
+ }
+
+ function resetMarker() {
+ var el = selElems[0];
+ el.removeAttribute("marker-start");
+ el.removeAttribute("marker-mid");
+ el.removeAttribute("marker-end");
+ }
+
+ function addMarker(dir, type, id) {
+ // TODO: Make marker (or use?) per arrow type, since refX can be different
+ id = id || arrowprefix + dir;
+
+ var marker = S.getElem(id);
+
+ var data = pathdata[dir];
+
+ if(type == "mid") {
+ data.refx = 5;
+ }
+
+ if(!marker) {
+ marker = addElem({
+ "element": "marker",
+ "attr": {
+ "viewBox": "0 0 10 10",
+ "id": id,
+ "refY": 5,
+ "markerUnits": "strokeWidth",
+ "markerWidth": 5,
+ "markerHeight": 5,
+ "orient": "auto",
+ "style": "pointer-events:none" // Currently needed for Opera
+ }
+ });
+ var arrow = addElem({
+ "element": "path",
+ "attr": {
+ "d": data.d,
+ "fill": "#000000"
+ }
+ });
+ marker.appendChild(arrow);
+ S.findDefs().appendChild(marker);
+ }
+
+ marker.setAttribute('refX', data.refx);
+
+ return marker;
+ }
+
+ function setArrow() {
+ var type = this.value;
+ resetMarker();
+
+ if(type == "none") {
+ return;
+ }
+
+ // Set marker on element
+ var dir = "fw";
+ if(type == "mid_bk") {
+ type = "mid";
+ dir = "bk";
+ } else if(type == "both") {
+ addMarker("bk", type);
+ svgCanvas.changeSelectedAttribute("marker-start", "url(#" + pathdata.bk.id + ")");
+ type = "end";
+ dir = "fw";
+ } else if (type == "start") {
+ dir = "bk";
+ }
+
+ addMarker(dir, type);
+ svgCanvas.changeSelectedAttribute("marker-"+type, "url(#" + pathdata[dir].id + ")");
+ S.call("changed", selElems);
+ }
+
+ function colorChanged(elem) {
+ var color = elem.getAttribute('stroke');
+
+ var mtypes = ['start','mid','end'];
+ var defs = S.findDefs();
+
+ $.each(mtypes, function(i, type) {
+ var marker = getLinked(elem, 'marker-'+type);
+ if(!marker) return;
+
+ var cur_color = $(marker).children().attr('fill');
+ var cur_d = $(marker).children().attr('d');
+ var new_marker = null;
+ if(cur_color === color) return;
+
+ var all_markers = $(defs).find('marker');
+ // Different color, check if already made
+ all_markers.each(function() {
+ var attrs = $(this).children().attr(['fill', 'd']);
+ if(attrs.fill === color && attrs.d === cur_d) {
+ // Found another marker with this color and this path
+ new_marker = this;
+ }
+ });
+
+ if(!new_marker) {
+ // Create a new marker with this color
+ var last_id = marker.id;
+ var dir = last_id.indexOf('_fw') !== -1?'fw':'bk';
+
+ new_marker = addMarker(dir, type, arrowprefix + dir + all_markers.length);
+
+ $(new_marker).children().attr('fill', color);
+ }
+
+ $(elem).attr('marker-'+type, "url(#" + new_marker.id + ")");
+
+ // Check if last marker can be removed
+ var remove = true;
+ $(S.svgcontent).find('line, polyline, path, polygon').each(function() {
+ var elem = this;
+ $.each(mtypes, function(j, mtype) {
+ if($(elem).attr('marker-' + mtype) === "url(#" + marker.id + ")") {
+ return remove = false;
+ }
+ });
+ if(!remove) return false;
+ });
+
+ // Not found, so can safely remove
+ if(remove) {
+ $(marker).remove();
+ }
+
+ });
+
+ }
+
+ return {
+ name: "Arrows",
+ context_tools: [{
+ type: "select",
+ panel: "arrow_panel",
+ title: "Select arrow type",
+ id: "arrow_list",
+ options: {
+ none: "No arrow",
+ end: "----&gt;",
+ start: "&lt;----",
+ both: "&lt;---&gt;",
+ mid: "--&gt;--",
+ mid_bk: "--&lt;--"
+ },
+ defval: "none",
+ events: {
+ change: setArrow
+ }
+ }],
+ callback: function() {
+ $('#arrow_panel').hide();
+ // Set ID so it can be translated in locale file
+ $('#arrow_list option')[0].id = 'connector_no_arrow';
+ },
+ addLangData: function(lang) {
+ return {
+ data: lang_list[lang]
+ };
+ },
+ selectedChanged: function(opts) {
+
+ // Use this to update the current selected elements
+ selElems = opts.elems;
+
+ var i = selElems.length;
+ var marker_elems = ['line','path','polyline','polygon'];
+
+ while(i--) {
+ var elem = selElems[i];
+ if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
+ if(opts.selectedElement && !opts.multiselected) {
+ showPanel(true);
+ } else {
+ showPanel(false);
+ }
+ } else {
+ showPanel(false);
+ }
+ }
+ },
+ elementChanged: function(opts) {
+ var elem = opts.elems[0];
+ if(elem && (
+ elem.getAttribute("marker-start") ||
+ elem.getAttribute("marker-mid") ||
+ elem.getAttribute("marker-end")
+ )) {
+ // var start = elem.getAttribute("marker-start");
+ // var mid = elem.getAttribute("marker-mid");
+ // var end = elem.getAttribute("marker-end");
+ // Has marker, so see if it should match color
+ colorChanged(elem);
+ }
+
+ }
+ };
+});
diff --git a/files_svgedit/extensions/ext-closepath.js b/files_svgedit/extensions/ext-closepath.js
new file mode 100644
index 000000000..bf8e72c94
--- /dev/null
+++ b/files_svgedit/extensions/ext-closepath.js
@@ -0,0 +1,92 @@
+/*
+ * ext-closepath.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+// This extension adds a simple button to the contextual panel for paths
+// The button toggles whether the path is open or closed
+svgEditor.addExtension("ClosePath", function(S) {
+ var selElems,
+ updateButton = function(path) {
+ var seglist = path.pathSegList,
+ closed = seglist.getItem(seglist.numberOfItems - 1).pathSegType==1,
+ showbutton = closed ? '#tool_openpath' : '#tool_closepath',
+ hidebutton = closed ? '#tool_closepath' : '#tool_openpath';
+ $(hidebutton).hide();
+ $(showbutton).show();
+ },
+ showPanel = function(on) {
+ $('#closepath_panel').toggle(on);
+ if (on) {
+ var path = selElems[0];
+ if (path) updateButton(path);
+ }
+ },
+
+ toggleClosed = function() {
+ var path = selElems[0];
+ if (path) {
+ var seglist = path.pathSegList,
+ last = seglist.numberOfItems - 1;
+ // is closed
+ if(seglist.getItem(last).pathSegType == 1) {
+ seglist.removeItem(last);
+ }
+ else {
+ seglist.appendItem(path.createSVGPathSegClosePath());
+ }
+ updateButton(path);
+ }
+ };
+
+ return {
+ name: "ClosePath",
+ svgicons: "extensions/closepath_icons.svg",
+ buttons: [{
+ id: "tool_openpath",
+ type: "context",
+ panel: "closepath_panel",
+ title: "Open path",
+ events: {
+ 'click': function() {
+ toggleClosed();
+ }
+ }
+ },
+ {
+ id: "tool_closepath",
+ type: "context",
+ panel: "closepath_panel",
+ title: "Close path",
+ events: {
+ 'click': function() {
+ toggleClosed();
+ }
+ }
+ }],
+ callback: function() {
+ $('#closepath_panel').hide();
+ },
+ selectedChanged: function(opts) {
+ selElems = opts.elems;
+ var i = selElems.length;
+
+ while(i--) {
+ var elem = selElems[i];
+ if(elem && elem.tagName == 'path') {
+ if(opts.selectedElement && !opts.multiselected) {
+ showPanel(true);
+ } else {
+ showPanel(false);
+ }
+ } else {
+ showPanel(false);
+ }
+ }
+ }
+ };
+});
diff --git a/files_svgedit/extensions/ext-connector.js b/files_svgedit/extensions/ext-connector.js
new file mode 100644
index 000000000..2f1990a1d
--- /dev/null
+++ b/files_svgedit/extensions/ext-connector.js
@@ -0,0 +1,579 @@
+/*
+ * ext-connector.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+svgEditor.addExtension("Connector", function(S) {
+ var svgcontent = S.svgcontent,
+ svgroot = S.svgroot,
+ getNextId = S.getNextId,
+ getElem = S.getElem,
+ addElem = S.addSvgElementFromJson,
+ selManager = S.selectorManager,
+ curConfig = svgEditor.curConfig,
+ started = false,
+ start_x,
+ start_y,
+ cur_line,
+ start_elem,
+ end_elem,
+ connections = [],
+ conn_sel = ".se_connector",
+ se_ns,
+// connect_str = "-SE_CONNECT-",
+ selElems = [];
+
+ var lang_list = {
+ "en":[
+ {"id": "mode_connect", "title": "Connect two objects" }
+ ],
+ "fr":[
+ {"id": "mode_connect", "title": "Connecter deux objets"}
+ ]
+ };
+
+ function getOffset(side, line) {
+ var give_offset = !!line.getAttribute('marker-' + side);
+// var give_offset = $(line).data(side+'_off');
+
+ // TODO: Make this number (5) be based on marker width/height
+ var size = line.getAttribute('stroke-width') * 5;
+ return give_offset ? size : 0;
+ }
+
+ function showPanel(on) {
+ var conn_rules = $('#connector_rules');
+ if(!conn_rules.length) {
+ conn_rules = $('<style id="connector_rules"><\/style>').appendTo('head');
+ }
+ conn_rules.text(!on?"":"#tool_clone, #tool_topath, #tool_angle, #xy_panel { display: none !important; }");
+ $('#connector_panel').toggle(on);
+ }
+
+ function setPoint(elem, pos, x, y, setMid) {
+ var pts = elem.points;
+ var pt = svgroot.createSVGPoint();
+ pt.x = x;
+ pt.y = y;
+ if(pos === 'end') pos = pts.numberOfItems-1;
+ // TODO: Test for this on init, then use alt only if needed
+ try {
+ pts.replaceItem(pt, pos);
+ } catch(err) {
+ // Should only occur in FF which formats points attr as "n,n n,n", so just split
+ var pt_arr = elem.getAttribute("points").split(" ");
+ for(var i=0; i< pt_arr.length; i++) {
+ if(i == pos) {
+ pt_arr[i] = x + ',' + y;
+ }
+ }
+ elem.setAttribute("points",pt_arr.join(" "));
+ }
+
+ if(setMid) {
+ // Add center point
+ var pt_start = pts.getItem(0);
+ var pt_end = pts.getItem(pts.numberOfItems-1);
+ setPoint(elem, 1, (pt_end.x + pt_start.x)/2, (pt_end.y + pt_start.y)/2);
+ }
+ }
+
+ function updateLine(diff_x, diff_y) {
+ // Update line with element
+ var i = connections.length;
+ while(i--) {
+ var conn = connections[i];
+ var line = conn.connector;
+ var elem = conn.elem;
+
+ var pre = conn.is_start?'start':'end';
+// var sw = line.getAttribute('stroke-width') * 5;
+
+ // Update bbox for this element
+ var bb = $(line).data(pre+'_bb');
+ bb.x = conn.start_x + diff_x;
+ bb.y = conn.start_y + diff_y;
+ $(line).data(pre+'_bb', bb);
+
+ var alt_pre = conn.is_start?'end':'start';
+
+ // Get center pt of connected element
+ var bb2 = $(line).data(alt_pre+'_bb');
+ var src_x = bb2.x + bb2.width/2;
+ var src_y = bb2.y + bb2.height/2;
+
+ // Set point of element being moved
+ var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line)); // $(line).data(pre+'_off')?sw:0
+ setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+
+ // Set point of connected element
+ var pt2 = getBBintersect(pt.x, pt.y, $(line).data(alt_pre + '_bb'), getOffset(alt_pre, line));
+ setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+
+ }
+ }
+
+ function findConnectors(elems) {
+ if(!elems) elems = selElems;
+ var connectors = $(svgcontent).find(conn_sel);
+ connections = [];
+
+ // Loop through connectors to see if one is connected to the element
+ connectors.each(function() {
+ var start = $(this).data("c_start");
+ var end = $(this).data("c_end");
+
+ var parts = [getElem(start), getElem(end)];
+ for(var i=0; i<2; i++) {
+ var c_elem = parts[i];
+ var add_this = false;
+ // The connected element might be part of a selected group
+ $(c_elem).parents().each(function() {
+ if($.inArray(this, elems) !== -1) {
+ // Pretend this element is selected
+ add_this = true;
+ }
+ });
+
+ if(!c_elem || !c_elem.parentNode) {
+ $(this).remove();
+ continue;
+ }
+ if($.inArray(c_elem, elems) !== -1 || add_this) {
+ var bb = svgCanvas.getStrokedBBox([c_elem]);
+ connections.push({
+ elem: c_elem,
+ connector: this,
+ is_start: (i === 0),
+ start_x: bb.x,
+ start_y: bb.y
+ });
+ }
+ }
+ });
+ }
+
+ function updateConnectors(elems) {
+ // Updates connector lines based on selected elements
+ // Is not used on mousemove, as it runs getStrokedBBox every time,
+ // which isn't necessary there.
+ findConnectors(elems);
+ if(connections.length) {
+ // Update line with element
+ var i = connections.length;
+ while(i--) {
+ var conn = connections[i];
+ var line = conn.connector;
+ var elem = conn.elem;
+
+ var sw = line.getAttribute('stroke-width') * 5;
+ var pre = conn.is_start?'start':'end';
+
+ // Update bbox for this element
+ var bb = svgCanvas.getStrokedBBox([elem]);
+ bb.x = conn.start_x;
+ bb.y = conn.start_y;
+ $(line).data(pre+'_bb', bb);
+ var add_offset = $(line).data(pre+'_off');
+
+ var alt_pre = conn.is_start?'end':'start';
+
+ // Get center pt of connected element
+ var bb2 = $(line).data(alt_pre+'_bb');
+ var src_x = bb2.x + bb2.width/2;
+ var src_y = bb2.y + bb2.height/2;
+
+ // Set point of element being moved
+ var pt = getBBintersect(src_x, src_y, bb, getOffset(pre, line));
+ setPoint(line, conn.is_start?0:'end', pt.x, pt.y, true);
+
+ // Set point of connected element
+ var pt2 = getBBintersect(pt.x, pt.y, $(line).data(alt_pre + '_bb'), getOffset(alt_pre, line));
+ setPoint(line, conn.is_start?'end':0, pt2.x, pt2.y, true);
+
+ // Update points attribute manually for webkit
+ if(navigator.userAgent.indexOf('AppleWebKit') != -1) {
+ var pts = line.points;
+ var len = pts.numberOfItems;
+ var pt_arr = Array(len);
+ for(var j=0; j< len; j++) {
+ var pt = pts.getItem(j);
+ pt_arr[j] = pt.x + ',' + pt.y;
+ }
+ line.setAttribute("points",pt_arr.join(" "));
+ }
+
+ }
+ }
+ }
+
+ function getBBintersect(x, y, bb, offset) {
+ if(offset) {
+ offset -= 0;
+ bb = $.extend({}, bb);
+ bb.width += offset;
+ bb.height += offset;
+ bb.x -= offset/2;
+ bb.y -= offset/2;
+ }
+
+ var mid_x = bb.x + bb.width/2;
+ var mid_y = bb.y + bb.height/2;
+ var len_x = x - mid_x;
+ var len_y = y - mid_y;
+
+ var slope = Math.abs(len_y/len_x);
+
+ var ratio;
+
+ if(slope < bb.height/bb.width) {
+ ratio = (bb.width/2) / Math.abs(len_x);
+ } else {
+ ratio = (bb.height/2) / Math.abs(len_y);
+ }
+
+
+ return {
+ x: mid_x + len_x * ratio,
+ y: mid_y + len_y * ratio
+ }
+ }
+
+ // Do once
+ (function() {
+ var gse = svgCanvas.groupSelectedElements;
+
+ svgCanvas.groupSelectedElements = function() {
+ svgCanvas.removeFromSelection($(conn_sel).toArray());
+ gse();
+ }
+
+ var mse = svgCanvas.moveSelectedElements;
+
+ svgCanvas.moveSelectedElements = function() {
+ svgCanvas.removeFromSelection($(conn_sel).toArray());
+ mse.apply(this, arguments);
+ updateConnectors();
+ }
+
+ se_ns = svgCanvas.getEditorNS();
+ }());
+
+ // Do on reset
+ function init() {
+ // Make sure all connectors have data set
+ $(svgcontent).find('*').each(function() {
+ var conn = this.getAttributeNS(se_ns, "connector");
+ if(conn) {
+ this.setAttribute('class', conn_sel.substr(1));
+ var conn_data = conn.split(' ');
+ var sbb = svgCanvas.getStrokedBBox([getElem(conn_data[0])]);
+ var ebb = svgCanvas.getStrokedBBox([getElem(conn_data[1])]);
+ $(this).data('c_start',conn_data[0])
+ .data('c_end',conn_data[1])
+ .data('start_bb', sbb)
+ .data('end_bb', ebb);
+ svgCanvas.getEditorNS(true);
+ }
+ });
+// updateConnectors();
+ }
+
+// $(svgroot).parent().mousemove(function(e) {
+// // if(started
+// // || svgCanvas.getMode() != "connector"
+// // || e.target.parentNode.parentNode != svgcontent) return;
+//
+// console.log('y')
+// // if(e.target.parentNode.parentNode === svgcontent) {
+// //
+// // }
+// });
+
+ return {
+ name: "Connector",
+ svgicons: "images/conn.svg",
+ buttons: [{
+ id: "mode_connect",
+ type: "mode",
+ icon: "images/cut.png",
+ title: "Connect two objects",
+ key: "Shift+3",
+ includeWith: {
+ button: '#tool_line',
+ isDefault: false,
+ position: 1
+ },
+ events: {
+ 'click': function() {
+ svgCanvas.setMode("connector");
+ }
+ }
+ }],
+ addLangData: function(lang) {
+ return {
+ data: lang_list[lang]
+ };
+ },
+ mouseDown: function(opts) {
+ var e = opts.event;
+ start_x = opts.start_x,
+ start_y = opts.start_y;
+ var mode = svgCanvas.getMode();
+
+ if(mode == "connector") {
+
+ if(started) return;
+
+ var mouse_target = e.target;
+
+ var parents = $(mouse_target).parents();
+
+ if($.inArray(svgcontent, parents) != -1) {
+ // Connectable element
+
+ // If child of foreignObject, use parent
+ var fo = $(mouse_target).closest("foreignObject");
+ start_elem = fo.length ? fo[0] : mouse_target;
+
+ // Get center of source element
+ var bb = svgCanvas.getStrokedBBox([start_elem]);
+ var x = bb.x + bb.width/2;
+ var y = bb.y + bb.height/2;
+
+ started = true;
+ cur_line = addElem({
+ "element": "polyline",
+ "attr": {
+ "id": getNextId(),
+ "points": (x+','+y+' '+x+','+y+' '+start_x+','+start_y),
+ "stroke": '#' + curConfig.initStroke.color,
+ "stroke-width": (!start_elem.stroke_width || start_elem.stroke_width == 0) ? curConfig.initStroke.width : start_elem.stroke_width,
+ "fill": "none",
+ "opacity": curConfig.initStroke.opacity,
+ "style": "pointer-events:none"
+ }
+ });
+ $(cur_line).data('start_bb', bb);
+ }
+ return {
+ started: true
+ };
+ } else if(mode == "select") {
+ findConnectors();
+ }
+ },
+ mouseMove: function(opts) {
+ var zoom = svgCanvas.getZoom();
+ var e = opts.event;
+ var x = opts.mouse_x/zoom;
+ var y = opts.mouse_y/zoom;
+
+ var diff_x = x - start_x,
+ diff_y = y - start_y;
+
+ var mode = svgCanvas.getMode();
+
+ if(mode == "connector" && started) {
+
+ var sw = cur_line.getAttribute('stroke-width') * 3;
+ // Set start point (adjusts based on bb)
+ var pt = getBBintersect(x, y, $(cur_line).data('start_bb'), getOffset('start', cur_line));
+ start_x = pt.x;
+ start_y = pt.y;
+
+ setPoint(cur_line, 0, pt.x, pt.y, true);
+
+ // Set end point
+ setPoint(cur_line, 'end', x, y, true);
+ } else if(mode == "select") {
+ var slen = selElems.length;
+
+ while(slen--) {
+ var elem = selElems[slen];
+ // Look for selected connector elements
+ if(elem && $(elem).data('c_start')) {
+ // Remove the "translate" transform given to move
+ svgCanvas.removeFromSelection([elem]);
+ svgCanvas.getTransformList(elem).clear();
+
+ }
+ }
+ if(connections.length) {
+ updateLine(diff_x, diff_y);
+
+
+ }
+ }
+ },
+ mouseUp: function(opts) {
+ var zoom = svgCanvas.getZoom();
+ var e = opts.event,
+ x = opts.mouse_x/zoom,
+ y = opts.mouse_y/zoom,
+ mouse_target = e.target;
+
+ if(svgCanvas.getMode() == "connector") {
+ var fo = $(mouse_target).closest("foreignObject");
+ if(fo.length) mouse_target = fo[0];
+
+ var parents = $(mouse_target).parents();
+
+ if(mouse_target == start_elem) {
+ // Start line through click
+ started = true;
+ return {
+ keep: true,
+ element: null,
+ started: started
+ }
+ } else if($.inArray(svgcontent, parents) === -1) {
+ // Not a valid target element, so remove line
+ $(cur_line).remove();
+ started = false;
+ return {
+ keep: false,
+ element: null,
+ started: started
+ }
+ } else {
+ // Valid end element
+ end_elem = mouse_target;
+
+ var start_id = start_elem.id, end_id = end_elem.id;
+ var conn_str = start_id + " " + end_id;
+ var alt_str = end_id + " " + start_id;
+ // Don't create connector if one already exists
+ var dupe = $(svgcontent).find(conn_sel).filter(function() {
+ var conn = this.getAttributeNS(se_ns, "connector");
+ if(conn == conn_str || conn == alt_str) return true;
+ });
+ if(dupe.length) {
+ $(cur_line).remove();
+ return {
+ keep: false,
+ element: null,
+ started: false
+ }
+ }
+
+ var bb = svgCanvas.getStrokedBBox([end_elem]);
+
+ var pt = getBBintersect(start_x, start_y, bb, getOffset('start', cur_line));
+ setPoint(cur_line, 'end', pt.x, pt.y, true);
+ $(cur_line)
+ .data("c_start", start_id)
+ .data("c_end", end_id)
+ .data("end_bb", bb);
+ se_ns = svgCanvas.getEditorNS(true);
+ cur_line.setAttributeNS(se_ns, "se:connector", conn_str);
+ cur_line.setAttribute('class', conn_sel.substr(1));
+ cur_line.setAttribute('opacity', 1);
+ svgCanvas.addToSelection([cur_line]);
+ svgCanvas.moveToBottomSelectedElement();
+ selManager.requestSelector(cur_line).showGrips(false);
+ started = false;
+ return {
+ keep: true,
+ element: cur_line,
+ started: started
+ }
+ }
+ }
+ },
+ selectedChanged: function(opts) {
+
+ // Use this to update the current selected elements
+ selElems = opts.elems;
+
+ var i = selElems.length;
+
+ while(i--) {
+ var elem = selElems[i];
+ if(elem && $(elem).data('c_start')) {
+ selManager.requestSelector(elem).showGrips(false);
+ if(opts.selectedElement && !opts.multiselected) {
+ // TODO: Set up context tools and hide most regular line tools
+ showPanel(true);
+ } else {
+ showPanel(false);
+ }
+ } else {
+ showPanel(false);
+ }
+ }
+ updateConnectors();
+ },
+ elementChanged: function(opts) {
+ var elem = opts.elems[0];
+ if (elem && elem.tagName == 'svg' && elem.id == "svgcontent") {
+ // Update svgcontent (can change on import)
+ svgcontent = elem;
+ init();
+ }
+
+ // Has marker, so change offset
+ if(elem && (
+ elem.getAttribute("marker-start") ||
+ elem.getAttribute("marker-mid") ||
+ elem.getAttribute("marker-end")
+ )) {
+ var start = elem.getAttribute("marker-start");
+ var mid = elem.getAttribute("marker-mid");
+ var end = elem.getAttribute("marker-end");
+ cur_line = elem;
+ $(elem)
+ .data("start_off", !!start)
+ .data("end_off", !!end);
+
+ if(elem.tagName == "line" && mid) {
+ // Convert to polyline to accept mid-arrow
+
+ var x1 = elem.getAttribute('x1')-0;
+ var x2 = elem.getAttribute('x2')-0;
+ var y1 = elem.getAttribute('y1')-0;
+ var y2 = elem.getAttribute('y2')-0;
+ var id = elem.id;
+
+ var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
+ var pline = addElem({
+ "element": "polyline",
+ "attr": {
+ "points": (x1+','+y1+ mid_pt +x2+','+y2),
+ "stroke": elem.getAttribute('stroke'),
+ "stroke-width": elem.getAttribute('stroke-width'),
+ "marker-mid": mid,
+ "fill": "none",
+ "opacity": elem.getAttribute('opacity') || 1
+ }
+ });
+ $(elem).after(pline).remove();
+ svgCanvas.clearSelection();
+ pline.id = id;
+ svgCanvas.addToSelection([pline]);
+ elem = pline;
+ }
+ }
+ // Update line if it's a connector
+ if(elem.getAttribute('class') == conn_sel.substr(1)) {
+ var start = getElem($(elem).data('c_start'));
+ updateConnectors([start]);
+ } else {
+ updateConnectors();
+ }
+ },
+ toolButtonStateUpdate: function(opts) {
+ if(opts.nostroke) {
+ if ($('#mode_connect').hasClass('tool_button_current')) {
+ clickSelect();
+ }
+ }
+ $('#mode_connect')
+ .toggleClass('disabled',opts.nostroke);
+ }
+ };
+});
diff --git a/files_svgedit/extensions/ext-eyedropper.js b/files_svgedit/extensions/ext-eyedropper.js
new file mode 100644
index 000000000..257650d7b
--- /dev/null
+++ b/files_svgedit/extensions/ext-eyedropper.js
@@ -0,0 +1,101 @@
+/*
+ * ext-eyedropper.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jeff Schiller
+ *
+ */
+
+svgEditor.addExtension("eyedropper", function(S) {
+ var svgcontent = S.svgcontent,
+ svgns = "http://www.w3.org/2000/svg",
+ svgdoc = S.svgroot.parentNode.ownerDocument,
+ ChangeElementCommand = svgCanvas.getPrivateMethods().ChangeElementCommand,
+ addToHistory = svgCanvas.getPrivateMethods().addCommandToHistory,
+ currentStyle = {fillPaint: "red", fillOpacity: 1.0,
+ strokePaint: "black", strokeOpacity: 1.0,
+ strokeWidth: 5, strokeDashArray: null,
+ opacity: 1.0,
+ strokeLinecap: 'butt',
+ strokeLinejoin: 'miter',
+ };
+
+ function getStyle(opts) {
+ // if we are in eyedropper mode, we don't want to disable the eye-dropper tool
+ var mode = svgCanvas.getMode();
+ if (mode == "eyedropper") return;
+
+ var elem = null;
+ var tool = $('#tool_eyedropper');
+ // enable-eye-dropper if one element is selected
+ if (opts.elems.length == 1 && opts.elems[0] &&
+ $.inArray(opts.elems[0].nodeName, ['svg', 'g', 'use']) == -1)
+ {
+ elem = opts.elems[0];
+ tool.removeClass('disabled');
+ // grab the current style
+ currentStyle.fillPaint = elem.getAttribute("fill") || "black";
+ currentStyle.fillOpacity = elem.getAttribute("fill-opacity") || 1.0;
+ currentStyle.strokePaint = elem.getAttribute("stroke");
+ currentStyle.strokeOpacity = elem.getAttribute("stroke-opacity") || 1.0;
+ currentStyle.strokeWidth = elem.getAttribute("stroke-width");
+ currentStyle.strokeDashArray = elem.getAttribute("stroke-dasharray");
+ currentStyle.strokeLinecap = elem.getAttribute("stroke-linecap");
+ currentStyle.strokeLinejoin = elem.getAttribute("stroke-linejoin");
+ currentStyle.opacity = elem.getAttribute("opacity") || 1.0;
+ }
+ // disable eye-dropper tool
+ else {
+ tool.addClass('disabled');
+ }
+
+ }
+
+ return {
+ name: "eyedropper",
+ svgicons: "extensions/eyedropper-icon.xml",
+ buttons: [{
+ id: "tool_eyedropper",
+ type: "mode",
+ title: "Eye Dropper Tool",
+ events: {
+ "click": function() {
+ svgCanvas.setMode("eyedropper");
+ }
+ }
+ }],
+
+ // if we have selected an element, grab its paint and enable the eye dropper button
+ selectedChanged: getStyle,
+ elementChanged: getStyle,
+
+ mouseDown: function(opts) {
+ var mode = svgCanvas.getMode();
+ if (mode == "eyedropper") {
+ var e = opts.event;
+ var target = e.target;
+ if ($.inArray(target.nodeName, ['svg', 'g', 'use']) == -1) {
+ var changes = {};
+
+ var change = function(elem, attrname, newvalue) {
+ changes[attrname] = elem.getAttribute(attrname);
+ elem.setAttribute(attrname, newvalue);
+ };
+
+ if (currentStyle.fillPaint) change(target, "fill", currentStyle.fillPaint);
+ if (currentStyle.fillOpacity) change(target, "fill-opacity", currentStyle.fillOpacity);
+ if (currentStyle.strokePaint) change(target, "stroke", currentStyle.strokePaint);
+ if (currentStyle.strokeOpacity) change(target, "stroke-opacity", currentStyle.strokeOpacity);
+ if (currentStyle.strokeWidth) change(target, "stroke-width", currentStyle.strokeWidth);
+ if (currentStyle.strokeDashArray) change(target, "stroke-dasharray", currentStyle.strokeDashArray);
+ if (currentStyle.opacity) change(target, "opacity", currentStyle.opacity);
+ if (currentStyle.strokeLinecap) change(target, "stroke-linecap", currentStyle.strokeLinecap);
+ if (currentStyle.strokeLinejoin) change(target, "stroke-linejoin", currentStyle.strokeLinejoin);
+
+ addToHistory(new ChangeElementCommand(target, changes));
+ }
+ }
+ },
+ };
+});
diff --git a/files_svgedit/extensions/ext-foreignobject.js b/files_svgedit/extensions/ext-foreignobject.js
new file mode 100644
index 000000000..9d401825a
--- /dev/null
+++ b/files_svgedit/extensions/ext-foreignobject.js
@@ -0,0 +1,277 @@
+/*
+ * ext-foreignobject.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Jacques Distler
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+svgEditor.addExtension("foreignObject", function(S) {
+ var svgcontent = S.svgcontent,
+ addElem = S.addSvgElementFromJson,
+ selElems,
+ svgns = "http://www.w3.org/2000/svg",
+ xlinkns = "http://www.w3.org/1999/xlink",
+ xmlns = "http://www.w3.org/XML/1998/namespace",
+ xmlnsns = "http://www.w3.org/2000/xmlns/",
+ se_ns = "http://svg-edit.googlecode.com",
+ htmlns = "http://www.w3.org/1999/xhtml",
+ mathns = "http://www.w3.org/1998/Math/MathML",
+ editingforeign = false,
+ svgdoc = S.svgroot.parentNode.ownerDocument,
+ started,
+ newFO;
+
+
+ var properlySourceSizeTextArea = function(){
+ // TODO: remove magic numbers here and get values from CSS
+ var height = $('#svg_source_container').height() - 80;
+ $('#svg_source_textarea').css('height', height);
+ };
+
+ function showPanel(on) {
+ var fc_rules = $('#fc_rules');
+ if(!fc_rules.length) {
+ fc_rules = $('<style id="fc_rules"><\/style>').appendTo('head');
+ }
+ fc_rules.text(!on?"":" #tool_topath { display: none !important; }");
+ $('#foreignObject_panel').toggle(on);
+ }
+
+ function toggleSourceButtons(on) {
+ $('#tool_source_save, #tool_source_cancel').toggle(!on);
+ $('#foreign_save, #foreign_cancel').toggle(on);
+ }
+
+
+ // Function: setForeignString(xmlString, elt)
+ // This function sets the content of element elt to the input XML.
+ //
+ // Parameters:
+ // xmlString - The XML text.
+ // elt - the parent element to append to
+ //
+ // Returns:
+ // This function returns false if the set was unsuccessful, true otherwise.
+ function setForeignString(xmlString) {
+ var elt = selElems[0];
+ try {
+ // convert string into XML document
+ var newDoc = Utils.text2xml('<svg xmlns="'+svgns+'" xmlns:xlink="'+xlinkns+'">'+xmlString+'</svg>');
+ // run it through our sanitizer to remove anything we do not support
+ S.sanitizeSvg(newDoc.documentElement);
+ elt.parentNode.replaceChild(svgdoc.importNode(newDoc.documentElement.firstChild, true), elt);
+ S.call("changed", [elt]);
+ svgCanvas.clearSelection();
+ } catch(e) {
+ console.log(e);
+ return false;
+ }
+
+ return true;
+ };
+
+ function showForeignEditor() {
+ var elt = selElems[0];
+ if (!elt || editingforeign) return;
+ editingforeign = true;
+ toggleSourceButtons(true);
+ elt.removeAttribute('fill');
+
+ var str = S.svgToString(elt, 0);
+ $('#svg_source_textarea').val(str);
+ $('#svg_source_editor').fadeIn();
+ properlySourceSizeTextArea();
+ $('#svg_source_textarea').focus();
+ }
+
+ function setAttr(attr, val) {
+ svgCanvas.changeSelectedAttribute(attr, val);
+ S.call("changed", selElems);
+ }
+
+
+ return {
+ name: "foreignObject",
+ svgicons: "extensions/foreignobject-icons.xml",
+ buttons: [{
+ id: "tool_foreign",
+ type: "mode",
+ title: "Foreign Object Tool",
+ events: {
+ 'click': function() {
+ svgCanvas.setMode('foreign')
+ }
+ }
+ },{
+ id: "edit_foreign",
+ type: "context",
+ panel: "foreignObject_panel",
+ title: "Edit ForeignObject Content",
+ events: {
+ 'click': function() {
+ showForeignEditor();
+ }
+ }
+ }],
+
+ context_tools: [{
+ type: "input",
+ panel: "foreignObject_panel",
+ title: "Change foreignObject's width",
+ id: "foreign_width",
+ label: "w",
+ size: 3,
+ events: {
+ change: function() {
+ setAttr('width', this.value);
+ }
+ }
+ },{
+ type: "input",
+ panel: "foreignObject_panel",
+ title: "Change foreignObject's height",
+ id: "foreign_height",
+ label: "h",
+ events: {
+ change: function() {
+ setAttr('height', this.value);
+ }
+ }
+ }, {
+ type: "input",
+ panel: "foreignObject_panel",
+ title: "Change foreignObject's font size",
+ id: "foreign_font_size",
+ label: "font-size",
+ size: 2,
+ defval: 16,
+ events: {
+ change: function() {
+ setAttr('font-size', this.value);
+ }
+ }
+ }
+
+
+ ],
+ callback: function() {
+ $('#foreignObject_panel').hide();
+
+ var endChanges = function() {
+ $('#svg_source_editor').hide();
+ editingforeign = false;
+ $('#svg_source_textarea').blur();
+ toggleSourceButtons(false);
+ }
+
+ // TODO: Needs to be done after orig icon loads
+ setTimeout(function() {
+ // Create source save/cancel buttons
+ var save = $('#tool_source_save').clone()
+ .hide().attr('id', 'foreign_save').unbind()
+ .appendTo("#tool_source_back").click(function() {
+
+ if (!editingforeign) return;
+
+ if (!setForeignString($('#svg_source_textarea').val())) {
+ $.confirm("Errors found. Revert to original?", function(ok) {
+ if(!ok) return false;
+ endChanges();
+ });
+ } else {
+ endChanges();
+ }
+ // setSelectMode();
+ });
+
+ var cancel = $('#tool_source_cancel').clone()
+ .hide().attr('id', 'foreign_cancel').unbind()
+ .appendTo("#tool_source_back").click(function() {
+ endChanges();
+ });
+
+ }, 3000);
+ },
+ mouseDown: function(opts) {
+ var e = opts.event;
+
+ if(svgCanvas.getMode() == "foreign") {
+
+ started = true;
+ newFO = S.addSvgElementFromJson({
+ "element": "foreignObject",
+ "attr": {
+ "x": opts.start_x,
+ "y": opts.start_y,
+ "id": S.getNextId(),
+ "font-size": 16, //cur_text.font_size,
+ "width": "48",
+ "height": "20",
+ "style": "pointer-events:inherit"
+ }
+ });
+ var m = svgdoc.createElementNS(mathns, 'math');
+ m.setAttributeNS(xmlnsns, 'xmlns', mathns);
+ m.setAttribute('display', 'inline');
+ var mi = svgdoc.createElementNS(mathns, 'mi');
+ mi.setAttribute('mathvariant', 'normal');
+ mi.textContent = "\u03A6";
+ var mo = svgdoc.createElementNS(mathns, 'mo');
+ mo.textContent = "\u222A";
+ var mi2 = svgdoc.createElementNS(mathns, 'mi');
+ mi2.textContent = "\u2133";
+ m.appendChild(mi);
+ m.appendChild(mo);
+ m.appendChild(mi2);
+ newFO.appendChild(m);
+ return {
+ started: true
+ }
+ }
+ },
+ mouseUp: function(opts) {
+ var e = opts.event;
+ if(svgCanvas.getMode() == "foreign" && started) {
+ var attrs = $(newFO).attr(["width", "height"]);
+ keep = (attrs.width != 0 || attrs.height != 0);
+ svgCanvas.addToSelection([newFO], true);
+
+ return {
+ keep: keep,
+ element: newFO
+ }
+
+ }
+
+ },
+ selectedChanged: function(opts) {
+ // Use this to update the current selected elements
+ selElems = opts.elems;
+
+ var i = selElems.length;
+
+ while(i--) {
+ var elem = selElems[i];
+ if(elem && elem.tagName == "foreignObject") {
+ if(opts.selectedElement && !opts.multiselected) {
+ $('#foreign_font_size').val(elem.getAttribute("font-size"));
+ $('#foreign_width').val(elem.getAttribute("width"));
+ $('#foreign_height').val(elem.getAttribute("height"));
+
+ showPanel(true);
+ } else {
+ showPanel(false);
+ }
+ } else {
+ showPanel(false);
+ }
+ }
+ },
+ elementChanged: function(opts) {
+ var elem = opts.elems[0];
+ }
+ };
+});
diff --git a/files_svgedit/extensions/ext-helloworld.js b/files_svgedit/extensions/ext-helloworld.js
new file mode 100644
index 000000000..a35c24107
--- /dev/null
+++ b/files_svgedit/extensions/ext-helloworld.js
@@ -0,0 +1,78 @@
+/*
+ * ext-helloworld.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+/*
+ This is a very basic SVG-Edit extension. It adds a "Hello World" button in
+ the left panel. Clicking on the button, and then the canvas will show the
+ user the point on the canvas that was clicked on.
+*/
+
+svgEditor.addExtension("Hello World", function() {
+
+ return {
+ name: "Hello World",
+ // For more notes on how to make an icon file, see the source of
+ // the hellorworld-icon.xml
+ svgicons: "extensions/helloworld-icon.xml",
+
+ // Multiple buttons can be added in this array
+ buttons: [{
+ // Must match the icon ID in helloworld-icon.xml
+ id: "hello_world",
+
+ // This indicates that the button will be added to the "mode"
+ // button panel on the left side
+ type: "mode",
+
+ // Tooltip text
+ title: "Say 'Hello World'",
+
+ // Events
+ events: {
+ 'click': function() {
+ // The action taken when the button is clicked on.
+ // For "mode" buttons, any other button will
+ // automatically be de-pressed.
+ svgCanvas.setMode("hello_world");
+ }
+ }
+ }],
+ // This is triggered when the main mouse button is pressed down
+ // on the editor canvas (not the tool panels)
+ mouseDown: function() {
+ // Check the mode on mousedown
+ if(svgCanvas.getMode() == "hello_world") {
+
+ // The returned object must include "started" with
+ // a value of true in order for mouseUp to be triggered
+ return {started: true};
+ }
+ },
+
+ // This is triggered from anywhere, but "started" must have been set
+ // to true (see above). Note that "opts" is an object with event info
+ mouseUp: function(opts) {
+ // Check the mode on mouseup
+ if(svgCanvas.getMode() == "hello_world") {
+ var zoom = svgCanvas.getZoom();
+
+ // Get the actual coordinate by dividing by the zoom value
+ var x = opts.mouse_x / zoom;
+ var y = opts.mouse_y / zoom;
+
+ var text = "Hello World!\n\nYou clicked here: "
+ + x + ", " + y;
+
+ // Show the text using the custom alert function
+ $.alert(text);
+ }
+ }
+ };
+});
+
diff --git a/files_svgedit/extensions/ext-markers.js b/files_svgedit/extensions/ext-markers.js
new file mode 100644
index 000000000..25b08be9c
--- /dev/null
+++ b/files_svgedit/extensions/ext-markers.js
@@ -0,0 +1,572 @@
+/*
+ * ext-markers.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Will Schleter
+ * based on ext-arrows.js by Copyright(c) 2010 Alexis Deveria
+ *
+ * This extension provides for the addition of markers to the either end
+ * or the middle of a line, polyline, path, polygon.
+ *
+ * Markers may be either a graphic or arbitary text
+ *
+ * to simplify the coding and make the implementation as robust as possible,
+ * markers are not shared - every object has its own set of markers.
+ * this relationship is maintained by a naming convention between the
+ * ids of the markers and the ids of the object
+ *
+ * The following restrictions exist for simplicty of use and programming
+ * objects and their markers to have the same color
+ * marker size is fixed
+ * text marker font, size, and attributes are fixed
+ * an application specific attribute - se_type - is added to each marker element
+ * to store the type of marker
+ *
+ * TODO:
+ * remove some of the restrictions above
+ * add option for keeping text aligned to horizontal
+ * add support for dimension extension lines
+ *
+ */
+
+svgEditor.addExtension("Markers", function(S) {
+ var svgcontent = S.svgcontent,
+ addElem = S.addSvgElementFromJson,
+ selElems;
+
+ var mtypes = ['start','mid','end'];
+
+ var marker_prefix = 'se_marker_';
+ var id_prefix = 'mkr_';
+
+ // note - to add additional marker types add them below with a unique id
+ // and add the associated icon(s) to marker-icons.svg
+ // the geometry is normallized to a 100x100 box with the origin at lower left
+ // Safari did not like negative values for low left of viewBox
+ // remember that the coordinate system has +y downward
+ var marker_types = {
+ nomarker: {},
+ leftarrow:
+ {element:'path', attr:{d:'M0,50 L100,90 L70,50 L100,10 Z'}},
+ rightarrow:
+ {element:'path', attr:{d:'M100,50 L0,90 L30,50 L0,10 Z'}},
+ textmarker:
+ {element:'text', attr: {x:0, y:0,'stroke-width':0,'stroke':'none','font-size':75,'font-family':'serif','text-anchor':'left',
+ 'xml:space': 'preserve'}},
+ forwardslash:
+ {element:'path', attr:{d:'M30,100 L70,0'}},
+ reverseslash:
+ {element:'path', attr:{d:'M30,0 L70,100'}},
+ verticalslash:
+ {element:'path', attr:{d:'M50,0 L50,100'}},
+ box:
+ {element:'path', attr:{d:'M20,20 L20,80 L80,80 L80,20 Z'}},
+ star:
+ {element:'path', attr:{d:'M10,30 L90,30 L20,90 L50,10 L80,90 Z'}},
+ xmark:
+ {element:'path', attr:{d:'M20,80 L80,20 M80,80 L20,20'}},
+ triangle:
+ {element:'path', attr:{d:'M10,80 L50,20 L80,80 Z'}},
+ mcircle:
+ {element:'circle', attr:{r:30, cx:50, cy:50}},
+ }
+
+
+ var lang_list = {
+ "en":[
+ {id: "start_marker_list", title: "Select start marker type" },
+ {id: "mid_marker_list", title: "Select mid marker type" },
+ {id: "end_marker_list", title: "Select end marker type" },
+ {id: "nomarker", title: "No Marker" },
+ {id: "leftarrow", title: "Left Arrow" },
+ {id: "rightarrow", title: "Right Arrow" },
+ {id: "textmarker", title: "Text Marker" },
+ {id: "forwardslash", title: "Forward Slash" },
+ {id: "reverseslash", title: "Reverse Slash" },
+ {id: "verticalslash", title: "Vertical Slash" },
+ {id: "box", title: "Box" },
+ {id: "star", title: "Star" },
+ {id: "xmark", title: "X" },
+ {id: "triangle", title: "Triangle" },
+ {id: "mcircle", title: "Circle" },
+ {id: "leftarrow_o", title: "Open Left Arrow" },
+ {id: "rightarrow_o", title: "Open Right Arrow" },
+ {id: "box_o", title: "Open Box" },
+ {id: "star_o", title: "Open Star" },
+ {id: "triangle_o", title: "Open Triangle" },
+ {id: "mcircle_o", title: "Open Circle" },
+ ]
+ };
+
+
+ // duplicate shapes to support unfilled (open) marker types with an _o suffix
+ $.each(['leftarrow','rightarrow','box','star','mcircle','triangle'],function(i,v) {
+ marker_types[v+'_o'] = marker_types[v];
+ });
+
+ // elem = a graphic element will have an attribute like marker-start
+ // attr - marker-start, marker-mid, or marker-end
+ // returns the marker element that is linked to the graphic element
+ function getLinked(elem, attr) {
+ var str = elem.getAttribute(attr);
+ if(!str) return null;
+ var m = str.match(/\(\#(.*)\)/);
+ if(!m || m.length !== 2) {
+ return null;
+ }
+ return S.getElem(m[1]);
+ }
+
+ //toggles context tool panel off/on
+ //sets the controls with the selected element's settings
+ function showPanel(on) {
+ $('#marker_panel').toggle(on);
+
+ if(on) {
+ var el = selElems[0];
+ var val;
+ var ci;
+
+ $.each(mtypes, function(i, pos) {
+ var m=getLinked(el,"marker-"+pos);
+ var txtbox = $('#'+pos+'_marker');
+ if (!m) {
+ val='\\nomarker';
+ ci=val;
+ txtbox.hide() // hide text box
+ } else {
+ if (!m.attributes.se_type) return; // not created by this extension
+ val='\\'+m.attributes.se_type.textContent;
+ ci=val;
+ if (val=='\\textmarker') {
+ val=m.lastChild.textContent;
+ //txtbox.show(); // show text box
+ } else {
+ txtbox.hide() // hide text box
+ }
+ }
+ txtbox.val(val);
+ setIcon(pos,ci);
+ })
+ }
+ }
+
+ function addMarker(id, val) {
+ var txt_box_bg = '#ffffff';
+ var txt_box_border = 'none';
+ var txt_box_stroke_width = 0;
+
+ var marker = S.getElem(id);
+
+ if (marker) return;
+
+ if (val=='' || val=='\\nomarker') return;
+
+ var el = selElems[0];
+ var color = el.getAttribute('stroke');
+ //NOTE: Safari didn't like a negative value in viewBox
+ //so we use a standardized 0 0 100 100
+ //with 50 50 being mapped to the marker position
+ var refX = 50;
+ var refY = 50;
+ var viewBox = "0 0 100 100";
+ var markerWidth = 5;
+ var markerHeight = 5;
+ var strokeWidth = 10;
+ if (val.substr(0,1)=='\\') se_type=val.substr(1);
+ else se_type='textmarker';
+
+ if (!marker_types[se_type]) return; // an unknown type!
+
+ // create a generic marker
+ marker = addElem({
+ "element": "marker",
+ "attr": {
+ "id": id,
+ "markerUnits": "strokeWidth",
+ "orient": "auto",
+ "style": "pointer-events:none",
+ "se_type": se_type
+ }
+ });
+
+ if (se_type!='textmarker') {
+ var mel = addElem(marker_types[se_type]);
+ var fillcolor = color;
+ if (se_type.substr(-2)=='_o') fillcolor='none';
+ mel.setAttribute('fill',fillcolor);
+ mel.setAttribute('stroke',color);
+ mel.setAttribute('stroke-width',strokeWidth);
+ marker.appendChild(mel);
+ } else {
+ var text = addElem(marker_types[se_type]);
+ // have to add text to get bounding box
+ text.textContent = val;
+ var tb=text.getBBox();
+ //alert( tb.x + " " + tb.y + " " + tb.width + " " + tb.height);
+ var pad=1;
+ var bb = tb;
+ bb.x = 0;
+ bb.y = 0;
+ bb.width += pad*2;
+ bb.height += pad*2;
+ // shift text according to its size
+ text.setAttribute('x', pad);
+ text.setAttribute('y', bb.height - pad - tb.height/4); // kludge?
+ text.setAttribute('fill',color);
+ refX = bb.width/2+pad;
+ refY = bb.height/2+pad;
+ viewBox = bb.x + " " + bb.y + " " + bb.width + " " + bb.height;
+ markerWidth =bb.width/10;
+ markerHeight = bb.height/10;
+
+ var box = addElem({
+ "element": "rect",
+ "attr": {
+ "x": bb.x,
+ "y": bb.y,
+ "width": bb.width,
+ "height": bb.height,
+ "fill": txt_box_bg,
+ "stroke": txt_box_border,
+ "stroke-width": txt_box_stroke_width
+ }
+ });
+ marker.setAttribute("orient",0);
+ marker.appendChild(box);
+ marker.appendChild(text);
+ }
+
+ marker.setAttribute("viewBox",viewBox);
+ marker.setAttribute("markerWidth", markerWidth);
+ marker.setAttribute("markerHeight", markerHeight);
+ marker.setAttribute("refX", refX);
+ marker.setAttribute("refY", refY);
+ S.findDefs().appendChild(marker);
+
+ return marker;
+ }
+
+
+ function setMarker() {
+ var poslist={'start_marker':'start','mid_marker':'mid','end_marker':'end'};
+ var pos = poslist[this.id];
+ var marker_name = 'marker-'+pos;
+ var val = this.value;
+ var el = selElems[0];
+ var marker = getLinked(el, marker_name);
+ if (marker) $(marker).remove();
+ el.removeAttribute(marker_name);
+ if (val=='') val='\\nomarker';
+ if (val=='\\nomarker') {
+ setIcon(pos,val);
+ S.call("changed", selElems);
+ return;
+ }
+ // Set marker on element
+ var id = marker_prefix + pos + '_' + el.id;
+ addMarker(id, val);
+ svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
+ if (el.tagName == "line" && pos=='mid') el=convertline(el);
+ S.call("changed", selElems);
+ setIcon(pos,val);
+ }
+
+ function convertline(elem) {
+ // this routine came from the connectors extension
+ // it is needed because midpoint markers don't work with line elements
+ if (!(elem.tagName == "line")) return elem;
+
+ // Convert to polyline to accept mid-arrow
+
+ var x1 = elem.getAttribute('x1')-0;
+ var x2 = elem.getAttribute('x2')-0;
+ var y1 = elem.getAttribute('y1')-0;
+ var y2 = elem.getAttribute('y2')-0;
+ var id = elem.id;
+
+ var mid_pt = (' '+((x1+x2)/2)+','+((y1+y2)/2) + ' ');
+ var pline = addElem({
+ "element": "polyline",
+ "attr": {
+ "points": (x1+','+y1+ mid_pt +x2+','+y2),
+ "stroke": elem.getAttribute('stroke'),
+ "stroke-width": elem.getAttribute('stroke-width'),
+ "fill": "none",
+ "opacity": elem.getAttribute('opacity') || 1
+ }
+ });
+ $.each(mtypes, function(i, pos) { // get any existing marker definitions
+ var nam = 'marker-'+pos;
+ var m = elem.getAttribute(nam);
+ if (m) pline.setAttribute(nam,elem.getAttribute(nam));
+ });
+
+ var batchCmd = new S.BatchCommand();
+ batchCmd.addSubCommand(new S.RemoveElementCommand(elem, elem.parentNode));
+ batchCmd.addSubCommand(new S.InsertElementCommand(pline));
+
+ $(elem).after(pline).remove();
+ svgCanvas.clearSelection();
+ pline.id = id;
+ svgCanvas.addToSelection([pline]);
+ S.addCommandToHistory(batchCmd);
+ return pline;
+ }
+
+ // called when the main system modifies an object
+ // this routine changes the associated markers to be the same color
+ function colorChanged(elem) {
+ var color = elem.getAttribute('stroke');
+
+ $.each(mtypes, function(i, pos) {
+ var marker = getLinked(elem, 'marker-'+pos);
+ if (!marker) return;
+ if (!marker.attributes.se_type) return; //not created by this extension
+ var ch = marker.lastElementChild;
+ if (!ch) return;
+ var curfill = ch.getAttribute("fill");
+ var curstroke = ch.getAttribute("stroke")
+ if (curfill && curfill!='none') ch.setAttribute("fill",color);
+ if (curstroke && curstroke!='none') ch.setAttribute("stroke",color);
+ });
+ }
+
+ // called when the main system creates or modifies an object
+ // primary purpose is create new markers for cloned objects
+ function updateReferences(el) {
+ $.each(mtypes, function (i,pos) {
+ var id = marker_prefix + pos + '_' + el.id;
+ var marker_name = 'marker-'+pos;
+ var marker = getLinked(el, marker_name);
+ if (!marker || !marker.attributes.se_type) return; //not created by this extension
+ var url = el.getAttribute(marker_name);
+ if (url) {
+ var len = el.id.length;
+ var linkid = url.substr(-len-1,len);
+ if (el.id != linkid) {
+ var val = $('#'+pos+'_marker').attr('value');
+ addMarker(id, val);
+ svgCanvas.changeSelectedAttribute(marker_name, "url(#" + id + ")");
+ if (el.tagName == "line" && pos=='mid') el=convertline(el);
+ S.call("changed", selElems);
+ }
+ }
+ });
+ }
+
+ // simulate a change event a text box that stores the current element's marker type
+ function triggerTextEntry(pos,val) {
+ $('#'+pos+'_marker').val(val);
+ $('#'+pos+'_marker').change();
+ var txtbox = $('#'+pos+'_marker');
+ //if (val.substr(0,1)=='\\') txtbox.hide();
+ //else txtbox.show();
+ }
+
+ function setIcon(pos,id) {
+ if (id.substr(0,1)!='\\') id='\\textmarker'
+ var ci = '#'+id_prefix+pos+'_'+id.substr(1);
+ svgEditor.setIcon('#cur_' + pos +'_marker_list', $(ci).children());
+ $(ci).addClass('current').siblings().removeClass('current');
+ }
+
+ function setMarkerSet(obj) {
+ var parts = this.id.split('_');
+ var set = parts[2];
+ switch (set) {
+ case 'off':
+ triggerTextEntry('start','\\nomarker');
+ triggerTextEntry('mid','\\nomarker');
+ triggerTextEntry('end','\\nomarker');
+ break;
+ case 'dimension':
+ triggerTextEntry('start','\\leftarrow');
+ triggerTextEntry('end','\\rightarrow');
+ showTextPrompt('mid');
+ break;
+ case 'label':
+ triggerTextEntry('mid','\\nomarker');
+ triggerTextEntry('end','\\rightarrow');
+ showTextPrompt('start');
+ break;
+ }
+ }
+
+ function showTextPrompt(pos) {
+ var def = $('#'+pos+'_marker').val();
+ if (def.substr(0,1)=='\\') def='';
+ $.prompt('Enter text for ' + pos + ' marker', def , function(txt) { if (txt) triggerTextEntry(pos,txt); });
+ }
+
+ // callback function for a toolbar button click
+ function setArrowFromButton(obj) {
+
+ var parts = this.id.split('_');
+ var pos = parts[1];
+ var val = parts[2];
+ if (parts[3]) val+='_'+parts[3];
+
+ if (val!='textmarker') {
+ triggerTextEntry(pos,'\\'+val);
+ } else {
+ showTextPrompt(pos);
+ }
+ }
+
+ function getTitle(lang,id) {
+ var list = lang_list[lang];
+ for (var i in list) {
+ if (list[i].id==id) return list[i].title;
+ }
+ return id;
+ }
+
+
+ // build the toolbar button array from the marker definitions
+ // TODO: need to incorporate language specific titles
+ function buildButtonList() {
+ var buttons=[];
+ var i=0;
+/*
+ buttons.push({
+ id:id_prefix + 'markers_off',
+ title:'Turn off all markers',
+ type:'context',
+ events: { 'click': setMarkerSet },
+ panel: 'marker_panel'
+ });
+ buttons.push({
+ id:id_prefix + 'markers_dimension',
+ title:'Dimension',
+ type:'context',
+ events: { 'click': setMarkerSet },
+ panel: 'marker_panel'
+ });
+ buttons.push({
+ id:id_prefix + 'markers_label',
+ title:'Label',
+ type:'context',
+ events: { 'click': setMarkerSet },
+ panel: 'marker_panel'
+ });
+*/
+ $.each(mtypes,function(k,pos) {
+ var listname = pos + "_marker_list";
+ var def = true;
+ $.each(marker_types,function(id,v) {
+ var title = getTitle('en',id);
+ buttons.push({
+ id:id_prefix + pos + "_" + id,
+ svgicon:id,
+ title:title,
+ type:'context',
+ events: { 'click': setArrowFromButton },
+ panel:'marker_panel',
+ list: listname,
+ isDefault: def
+ });
+ def = false;
+ });
+ });
+ return buttons;
+ }
+
+ return {
+ name: "Markers",
+ svgicons: "extensions/markers-icons.xml",
+ buttons: buildButtonList(),
+ context_tools: [
+ {
+ type: "input",
+ panel: "marker_panel",
+ title: "Start marker",
+ id: "start_marker",
+ label: "s",
+ size: 3,
+ events: { change: setMarker }
+ },{
+ type: "button-select",
+ panel: "marker_panel",
+ title: getTitle('en','start_marker_list'),
+ id: "start_marker_list",
+ colnum: 3,
+ events: { change: setArrowFromButton }
+ },{
+ type: "input",
+ panel: "marker_panel",
+ title: "Middle marker",
+ id: "mid_marker",
+ label: "m",
+ defval: "",
+ size: 3,
+ events: { change: setMarker }
+ },{
+ type: "button-select",
+ panel: "marker_panel",
+ title: getTitle('en','mid_marker_list'),
+ id: "mid_marker_list",
+ colnum: 3,
+ events: { change: setArrowFromButton }
+ },{
+ type: "input",
+ panel: "marker_panel",
+ title: "End marker",
+ id: "end_marker",
+ label: "e",
+ size: 3,
+ events: { change: setMarker }
+ },{
+ type: "button-select",
+ panel: "marker_panel",
+ title: getTitle('en','end_marker_list'),
+ id: "end_marker_list",
+ colnum: 3,
+ events: { change: setArrowFromButton }
+ } ],
+ callback: function() {
+ $('#marker_panel').addClass('toolset').hide();
+
+ },
+ addLangData: function(lang) {
+ return { data: lang_list[lang] };
+ },
+
+ selectedChanged: function(opts) {
+ // Use this to update the current selected elements
+ //console.log('selectChanged',opts);
+ selElems = opts.elems;
+
+ var i = selElems.length;
+ var marker_elems = ['line','path','polyline','polygon'];
+
+ while(i--) {
+ var elem = selElems[i];
+ if(elem && $.inArray(elem.tagName, marker_elems) != -1) {
+ if(opts.selectedElement && !opts.multiselected) {
+ showPanel(true);
+ } else {
+ showPanel(false);
+ }
+ } else {
+ showPanel(false);
+ }
+ }
+ },
+
+ elementChanged: function(opts) {
+ //console.log('elementChanged',opts);
+ var elem = opts.elems[0];
+ if(elem && (
+ elem.getAttribute("marker-start") ||
+ elem.getAttribute("marker-mid") ||
+ elem.getAttribute("marker-end")
+ )) {
+ colorChanged(elem);
+ updateReferences(elem);
+ }
+ changing_flag = false;
+ }
+ };
+});
diff --git a/files_svgedit/extensions/ext-server_opensave.js b/files_svgedit/extensions/ext-server_opensave.js
new file mode 100644
index 000000000..ff236b6ef
--- /dev/null
+++ b/files_svgedit/extensions/ext-server_opensave.js
@@ -0,0 +1,179 @@
+/*
+ * ext-server_opensave.js
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+svgEditor.addExtension("server_opensave", {
+ callback: function() {
+
+ var save_svg_action = 'extensions/filesave.php';
+ var save_png_action = 'extensions/filesave.php';
+
+ // Create upload target (hidden iframe)
+ var target = $('<iframe name="output_frame" src="#"/>').hide().appendTo('body');
+
+ svgEditor.setCustomHandlers({
+ save: function(win, data) {
+ var svg = '<?xml version="1.0"?>' + data;
+
+ var title = svgCanvas.getDocumentTitle();
+ var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_');
+
+ var form = $('<form>').attr({
+ method: 'post',
+ action: save_svg_action,
+ target: 'output_frame'
+ }) .append('<input type="hidden" name="output_svg" value="' + encodeURI(svg) + '">')
+ .append('<input type="hidden" name="filename" value="' + filename + '">')
+ .appendTo('body')
+ .submit().remove();
+ },
+ pngsave: function(win, data) {
+ var issues = data.issues;
+
+ if(!$('#export_canvas').length) {
+ $('<canvas>', {id: 'export_canvas'}).hide().appendTo('body');
+ }
+ var c = $('#export_canvas')[0];
+
+ c.width = svgCanvas.contentW;
+ c.height = svgCanvas.contentH;
+ canvg(c, data.svg);
+ var datauri = c.toDataURL('image/png');
+
+ var uiStrings = svgEditor.uiStrings;
+ var note = '';
+
+ // Check if there's issues
+ if(issues.length) {
+ var pre = "\n \u2022 ";
+ note += ("\n\n" + pre + issues.join(pre));
+ }
+
+ if(note.length) {
+ alert(note);
+ }
+
+ var title = svgCanvas.getDocumentTitle();
+ var filename = title.replace(/[^a-z0-9\.\_\-]+/gi, '_');
+
+ var form = $('<form>').attr({
+ method: 'post',
+ action: save_png_action,
+ target: 'output_frame'
+ }) .append('<input type="hidden" name="output_png" value="' + datauri + '">')
+ .append('<input type="hidden" name="filename" value="' + filename + '">')
+ .appendTo('body')
+ .submit().remove();
+
+
+ }
+ });
+
+ // Do nothing if client support is found
+ if(window.FileReader) return;
+
+ var cancelled = false;
+
+ // Change these to appropriate script file
+ var open_svg_action = 'extensions/fileopen.php?type=load_svg';
+ var import_svg_action = 'extensions/fileopen.php?type=import_svg';
+ var import_img_action = 'extensions/fileopen.php?type=import_img';
+
+ // Set up function for PHP uploader to use
+ svgEditor.processFile = function(str64, type) {
+ if(cancelled) {
+ cancelled = false;
+ return;
+ }
+
+ $('#dialog_box').hide();
+
+ if(type != 'import_img') {
+ var xmlstr = svgCanvas.Utils.decode64(str64);
+ }
+
+ switch ( type ) {
+ case 'load_svg':
+ svgCanvas.clear();
+ svgCanvas.setSvgString(xmlstr);
+ svgEditor.updateCanvas();
+ break;
+ case 'import_svg':
+ svgCanvas.importSvgString(xmlstr);
+ svgEditor.updateCanvas();
+ break;
+ case 'import_img':
+ svgCanvas.setGoodImage(str64);
+ break;
+ }
+ }
+
+ // Create upload form
+ var open_svg_form = $('<form>');
+ open_svg_form.attr({
+ enctype: 'multipart/form-data',
+ method: 'post',
+ action: open_svg_action,
+ target: 'output_frame'
+ });
+
+ // Create import form
+ var import_svg_form = open_svg_form.clone().attr('action', import_svg_action);
+
+ // Create image form
+ var import_img_form = open_svg_form.clone().attr('action', import_img_action);
+
+ // It appears necessory to rebuild this input every time a file is
+ // selected so the same file can be picked and the change event can fire.
+ function rebuildInput(form) {
+ form.empty();
+ var inp = $('<input type="file" name="svg_file">').appendTo(form);
+
+
+ function submit() {
+ // This submits the form, which returns the file data using svgEditor.uploadSVG
+ form.submit();
+
+ rebuildInput(form);
+ $.process_cancel("Uploading...", function() {
+ cancelled = true;
+ $('#dialog_box').hide();
+ });
+ }
+
+ if(form[0] == open_svg_form[0]) {
+ inp.change(function() {
+ // This takes care of the "are you sure" dialog box
+ svgEditor.openPrep(function(ok) {
+ if(!ok) {
+ rebuildInput(form);
+ return;
+ }
+ submit();
+ });
+ });
+ } else {
+ inp.change(function() {
+ // This submits the form, which returns the file data using svgEditor.uploadSVG
+ submit();
+ });
+ }
+ }
+
+ // Create the input elements
+ rebuildInput(open_svg_form);
+ rebuildInput(import_svg_form);
+ rebuildInput(import_img_form);
+
+ // Add forms to buttons
+ $("#tool_open").show().prepend(open_svg_form);
+ $("#tool_import").show().prepend(import_svg_form);
+ $("#tool_image").prepend(import_img_form);
+ }
+});
+
diff --git a/files_svgedit/extensions/eyedropper-icon.xml b/files_svgedit/extensions/eyedropper-icon.xml
new file mode 100644
index 000000000..c05576aa2
--- /dev/null
+++ b/files_svgedit/extensions/eyedropper-icon.xml
@@ -0,0 +1,34 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+
+<g id="tool_eyedropper">
+<svg viewBox="0 0 320 320" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <radialGradient id="eyedropper_svg_6" cx="0.5" cy="0.5" r="0.5">
+ <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#e5e5e5" stop-opacity="0.38"/>
+ </radialGradient>
+ <linearGradient id="eyedropper_svg_15" x1="0" y1="0" x2="0.58594" y2="0.55078">
+ <stop offset="0" stop-color="#ffffff" stop-opacity="0.57"/>
+ <stop offset="1" stop-color="#000056" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="eyedropper_svg_19" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#ffffff" stop-opacity="0"/>
+ </linearGradient>
+ </defs>
+ <g display="inline">
+ <title>Layer 1</title>
+ <path d="m193.899994,73l-119.899979,118l-15,39.5l10.25,4.5l43.750015,-20l108.999969,-112l-28.100006,-30z" id="svg_3" fill="none" stroke="#000000" stroke-width="5"/>
+ <path d="m58.649994,232c-2.75,28.200012 -26.399994,28.950012 -21.899994,59c4.5,30.049988 55,28 55.5,-1.25c0.5,-29.25 -20.25,-28.75 -22.25,-54.75l-11.350006,-3z" id="svg_4" fill="#aa56ff" stroke="#000000" stroke-width="7"/>
+ <path d="m45.474976,269.275024l13.775024,0.474976l-0.75,16.75l-14.25,-1.25l1.224976,-15.974976z" id="svg_5" fill="url(#eyedropper_svg_6)" stroke-width="5" fill-opacity="0.73"/>
+ <path d="m217.899994,46c21.5,-101.549999 141.600006,20.449997 28.100006,33l-5,44l-63,-66l39.899994,-11z" id="svg_2" fill="#000000" stroke-width="5"/>
+ <path d="m206.825012,61.075008c3.712494,-2.46249 7.637482,-3.53751 14.424988,-5.575008c10.125,-16.5 32.875,-41.5 40.5,-35c7.625,6.5 -21.25,35.625 -37.5,39.25c-5.5,10.125 -8,13.875 -17.25,16.5c-2.837494,-8.162514 -4.262482,-12.337486 -0.174988,-15.174992z" id="svg_7" fill="url(#eyedropper_svg_15)" stroke-width="5"/>
+ <path d="m133.049988,134.75l46.950012,9.25l-66,70l-42.5,20.5l-11.5,-5l14,-37.5l59.049988,-57.25z" id="svg_11" fill="#aa56ff" stroke="#000000" stroke-width="7"/>
+ <path d="m71.425034,212.350006l9.050888,-20.022537l51.516724,-49.327469l8.507355,0.97197l-69.074966,68.378036z" id="svg_16" fill="url(#eyedropper_svg_19)" stroke-width="5"/>
+ </g>
+</svg>
+</g>
+
+ <g id="svg_eof"/>
+</svg> \ No newline at end of file
diff --git a/files_svgedit/extensions/eyedropper.png b/files_svgedit/extensions/eyedropper.png
new file mode 100644
index 000000000..61987c4bd
--- /dev/null
+++ b/files_svgedit/extensions/eyedropper.png
Binary files differ
diff --git a/files_svgedit/extensions/foreignobject-icons.xml b/files_svgedit/extensions/foreignobject-icons.xml
new file mode 100644
index 000000000..0d34654a7
--- /dev/null
+++ b/files_svgedit/extensions/foreignobject-icons.xml
@@ -0,0 +1,96 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+ <g id="tool_foreign">
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 84 84">
+ <g fill="#444" opacity="0.2" transform="translate(6,6)">
+ <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+ c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+ c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+ c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+ c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+ </g>
+ <g fill="#444" opacity="0.3" transform="translate(4,4)">
+ <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+ c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+ c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+ c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+ c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+ </g>
+ <g fill="#444" opacity="0.5" transform="translate(2,2)">
+ <path d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+ c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+ c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+ c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+ c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+ </g>
+ <g fill="#0000CC">
+ <path id="xyz321" d="M42.8,74.3c0,4.3,0,5.9,11.8,5.9l4.1,0l0,3.8c-4.5-0.4-16.1-0.4-21.2-0.3c-5.1,0-16.6,0-21,0.4l0-3.8l4.1,0
+ c11.8,0,11.8-1.7,11.8-5.9l0-6.9C13.9,65.6,0,54.6,0,42c0-12.2,13.3-23.5,32.4-25.4l0-6.9c0-4.3,0-5.9-11.8-5.9l-4.1,0l0-3.8
+ c4.5,0.4,16.1,0.4,21.2,0.3c5.1,0,16.6,0,21-0.4l0,3.8l-4.1,0c-11.8,0-11.8,1.7-11.8,5.9l0,6.9C61.6,18.1,75.8,29.2,75.8,42
+ c0,12.4-13.8,23.9-33.1,25.4L42.8,74.3z M32.4,19.4c-18.7,2.5-19.9,16.2-19.9,22.6c0,7.6,2.3,20.2,20,22.5L32.4,19.4z M42.7,64.7
+ c18.8-2.2,20.7-15.4,20.6-22.8c0-9.3-3.5-20.6-20.7-22.6L42.7,64.7z"/>
+ </g>
+ </svg>
+ </g>
+
+ <g id="edit_foreign">
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="34 38 170 170" overflow="hidden">
+ <g fill="#000088">
+ <path d="M30.1,63.9v-4.3l30.2-14.9V50L36.5,61.7l23.8,11.7v5.3L30.1,63.9z"/>
+ <path d="M106.1,79.7v-1.1c4.2-0.5,4.8-1.1,4.8-5.2V58.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+ c0,4.5,1.1,5.7,5.2,5.8v1.1H86.8v-1.1c4.1-0.3,4.9-1.1,4.9-5.1V57.9c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+ c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V55.4c0-3.5-0.6-4.6-2.5-4.6
+ c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+ c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H106.1z"/>
+ <path d="M147.3,80.5c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+ c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+ c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+ c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C151.3,79.6,149.8,80.5,147.3,80.5z M142.6,60.5c-8.7,3.2-11.7,5.8-11.7,10v0.3
+ c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V60.5z"/>
+ <path d="M165.3,80.5c-4.2,0-6.3-3.1-6.3-9.1V49.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+ c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+ c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C171.8,78.7,169,80.5,165.3,80.5z"/>
+ <path d="M193.8,79.7v-1.1c4.1-0.4,4.9-1.3,4.9-6.2V58.1c0-5-1.8-7.6-5.4-7.6c-2.8,0-5,1.2-8,4.5v17.4
+ c0,5,0.7,5.8,4.9,6.3v1.1h-15.6v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V38.5c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2l1.9-0.6
+ c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c3.3-4.3,6.3-6,10.6-6c5.9,0,8.9,3.9,8.9,11.5v14.3c0,5,0.4,5.5,4.3,6.3v1.1h-15.2V79.7z"/>
+ <path d="M59.1,116.1v-4.3l30.2-14.9v5.3l-23.8,11.7l23.8,11.7v5.3L59.1,116.1z"/>
+ <path d="M135.1,131.9v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.1c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+ c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.7c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+ c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5v-18.2c0-3.5-0.6-4.6-2.5-4.6
+ c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+ c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H135.1z"/>
+ <path d="M152.1,131.9v-1.1c5-0.3,5.7-1.1,5.7-6.3v-16.6c0-3.2-0.6-4.3-2.4-4.3c-0.6,0-1.6,0.1-2.4,0.2l-0.6,0.1v-1.1
+ l11.2-4L164,99v25.6c0,5.2,0.6,5.9,5.3,6.3v1.1L152.1,131.9L152.1,131.9z M160.8,93.1c-2,0-3.7-1.6-3.7-3.7c0-2,1.7-3.7,3.7-3.7
+ c2.1,0,3.7,1.7,3.7,3.7C164.6,91.6,163,93.1,160.8,93.1z"/>
+ <path d="M175.8,131v-5.3l23.7-11.8l-23.7-11.7v-5.3l30.1,14.9v4.3L175.8,131z"/>
+ <path d="M31.1,169.5v-4.3l30.2-14.9v5.3l-23.8,11.7L61.3,179v5.3L31.1,169.5z"/>
+ <path d="M71.3,186.4h-4.9l16.5-49.7h4.8L71.3,186.4z"/>
+ <path d="M127.1,185.3v-1.1c4.2-0.5,4.8-1.1,4.8-5.2v-15.2c0-6-1.3-7.9-5.4-7.9c-3.3,0-5.7,1.3-7.8,4.4v18.1
+ c0,4.5,1.1,5.7,5.2,5.8v1.1h-16.1v-1.1c4.1-0.3,4.9-1.1,4.9-5.1v-15.6c0-5-1.6-7.6-4.8-7.6c-2.5,0-5.6,1.2-7.4,2.9
+ c-0.5,0.5-1.1,1.4-1.1,1.4v20.3c0,2.8,1.1,3.6,4.9,3.7v1.1h-16v-1.1c4-0.1,5-1.2,5-5V161c0-3.5-0.6-4.6-2.5-4.6
+ c-0.8,0-1.4,0.1-2.3,0.3v-1.2c4-1.1,6.4-1.9,10.1-3.2l0.5,0.1v5.4c6-4.5,8-5.5,11.2-5.5c3.9,0,6.3,1.9,7.6,6c3.9-4.2,7.6-6,11.7-6
+ c5.5,0,8.4,4.3,8.4,12.8v14.8c0,2.8,0.9,4.1,3.1,4.2l1.9,0.1v1.1H127.1L127.1,185.3z"/>
+ <path d="M168.3,186.1c-3,0-4.2-1.4-4.6-5.3c-4.4,3.7-7.3,5.3-10.5,5.3c-4.5,0-7.6-3.2-7.6-7.7c0-2.4,1-4.8,2.6-6.3
+ c3.1-2.7,4.3-3.3,15.4-7.8v-4.4c0-3.9-1.9-6-5.5-6c-2.9,0-5.2,1.6-5.2,3.5c0,0.5,0.1,1.1,0.2,1.7c0.1,0.5,0.1,0.9,0.1,1.2
+ c0,1.6-1.5,3-3.2,3s-3.1-1.4-3.1-3.1c0-1.8,1.2-3.9,3-5.4c2-1.7,5.5-2.7,9.1-2.7c4.4,0,7.5,1.4,9,4.2c1,1.7,1.4,3.7,1.4,7.3v14
+ c0,3.2,0.5,4.2,2.2,4.2c1.1,0,1.9-0.4,3.2-1.4v1.9C172.3,185.2,170.8,186.1,168.3,186.1z M163.8,166.1c-8.7,3.2-11.7,5.8-11.7,10
+ v0.3c0,3.1,2,5.5,4.5,5.5c1.5,0,3.5-0.6,5.3-1.6c1.5-0.9,1.9-1.6,1.9-3.8V166.1z"/>
+ <path d="M186.3,186.1c-4.2,0-6.3-3.1-6.3-9.1v-21.7h-3.8c-0.2-0.1-0.3-0.3-0.3-0.5c0-0.4,0.4-0.9,1.2-1.4
+ c1.9-1.1,4.3-3.7,7-7.7c0.5-0.6,1-1.3,1.4-2c0.4,0,0.5,0.2,0.5,0.9v8.4h7.3v2.3h-7.3v20.6c0,4.6,1.1,6.5,3.7,6.5
+ c1.6,0,2.7-0.6,4.3-2.5l0.9,0.8C192.8,184.3,190,186.1,186.3,186.1z"/>
+ <path d="M209.1,185.3h-13.4v-1.1c4.2-0.6,4.6-1.2,4.6-6.3V144c0-3.1-0.6-3.7-3.7-3.7c-0.4,0-0.6,0-0.9,0.1v-1.2
+ l1.9-0.6c4-1.2,5.8-1.7,8.3-2.6l0.4,0.2v21.9c0.9-1.2,1.9-2.2,2.8-3.1"/>
+ <path d="M209.1,157.9c-0.8,0.7-1.7,1.5-2.7,2.6v17.4c0,4,0.4,5.3,2.7,5.9"/>
+ </g>
+ <g>
+ <polyline opacity="0.2" fill="#231F20" points="209.1,76.4 118.7,186.5 139.1,186.4 209.1,121 209.1,76.4 "/>
+ <polyline opacity="0.4" fill="#231F20" points="209.1,76.2 118.5,186.5 129.7,186.4 200.2,120.3 209.1,100.8 209.1,76.4 "/>
+ <path fill="#FFD761" d="M121.6,88.7l0.8,87.5l62.3-56.7c0,0-15.3-25.8-24.8-30C151.1,85.6,121.6,88.7,121.6,88.7z"/>
+ <path fill="#FEA01E" d="M209.1,19.5h-54l-33.5,69.2c0,0,29.7-3.4,38.3,0.8c8.9,4.4,25,30.8,25,30.8l24.2-50V19.5z"/>
+ <path d="M120.4,153.7l-0.6,25l23.8-16.9c0,0-8-7-11.2-8.1C129.4,152.8,120.4,153.7,120.4,153.7z"/>
+ <polyline fill="none" stroke="#231F20" stroke-width="5" points="153.9,19.5 121.6,88.7 120.7,181.2 186.6,120.3 209.1,70.3 "/>
+ </g>
+ </svg>
+ </g>
+
+ <g id="svg_eof"/>
+</svg> \ No newline at end of file
diff --git a/files_svgedit/extensions/helloworld-icon.xml b/files_svgedit/extensions/helloworld-icon.xml
new file mode 100644
index 000000000..0b1ba1a04
--- /dev/null
+++ b/files_svgedit/extensions/helloworld-icon.xml
@@ -0,0 +1,21 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!--
+ Sample icons file. This file looks like an SVG file with groups as its
+ children. Each group element has an ID that must match the ID of the button given
+ in the extension. The SVG inside the group makes up the actual icon, and
+ needs use a viewBox instead of width/height for it to scale properly.
+
+ Multiple icons can be included, each within their own group.
+-->
+ <g id="hello_world">
+ <svg width="102" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <g>
+ <title>Layer 1</title>
+ <rect ry="30" rx="30" x="2.5" y="2.5" width="97" height="97" id="svg_3" fill="#008000" stroke="#000000" stroke-width="5"/>
+ <text x="52.668" y="42.5" id="svg_1" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve">Hello</text>
+ <text x="52.668" y="71.5" fill="#ffffff" stroke="#000000" stroke-width="0" font-size="24" font-family="Monospace" text-anchor="middle" xml:space="preserve" id="svg_2">World!</text>
+ </g>
+ </svg>
+ </g>
+</svg> \ No newline at end of file
diff --git a/files_svgedit/extensions/markers-icons.xml b/files_svgedit/extensions/markers-icons.xml
new file mode 100644
index 000000000..6d122b051
--- /dev/null
+++ b/files_svgedit/extensions/markers-icons.xml
@@ -0,0 +1,115 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <g id="nomarker">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,0"/>
+ </svg>
+ </g>
+ <g id="leftarrow">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-50,0l100,40l-30,-40l30,-40z"/>
+ </svg>
+ </g>
+ <g id="rightarrow">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m50,0l-100,40l30,-40l-30,-40z"/>
+ </svg>
+ </g>
+ <g id="leftarrow_o">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-50,0l100,40l-30,-40l30,-40z"/>
+ </svg>
+ </g>
+ <g id="rightarrow_o">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="m50,0l-100,40l30,-40l-30,-40z"/>
+ </svg>
+ </g>
+ <g id="forwardslash">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,50l40,-100"/>
+ </svg>
+ </g>
+ <g id="reverseslash">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-20,-50l40,100"/>
+ </svg>
+ </g>
+ <g id="verticalslash">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="m0,-50l0,100"/>
+ </svg>
+ </g>
+ <g id="mcircle">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <circle stroke-width="10" stroke="#ff7f00" fill="#ff7f00" cy="0" cx="0" r="30"/>
+ </svg>
+ </g>
+ <g id="mcircle_o">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <circle stroke-width="10" stroke="#ff7f00" fill="none" cy="0" cx="0" r="30"/>
+ </svg>
+ </g>
+ <g id="xmark">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,30l60,-60m0,60l-60,-60"/>
+ </svg>
+ </g>
+ <g id="box">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-30,-30l0,60l60,0l0,-60z"/>
+ </svg>
+ </g>
+ <g id="star">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/>
+ </svg>
+ </g>
+ <g id="box_o">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-30,-30l0,60l60,0l0,-60z"/>
+ </svg>
+ </g>
+ <g id="star_o">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="m-40,-20l80,0l-70,60l30,-80l30,80z"/>
+ </svg>
+ </g>
+ <g id="triangle_o">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="none" d="M-30,30 L0,-30 L30,30 Z"/>
+ </svg>
+ </g>
+ <g id="triangle">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="10" stroke="#ff7f00" fill="#ff7f00" d="M-30,30 L0,-30 L30,30 Z"/>
+ </svg>
+ </g>
+ <g id="textmarker">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <text xml:space="preserve" text-anchor="middle" font-family="serif" font-size="120" y="40" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>
+ </svg>
+ </g>
+ <g id="mkr_markers_off">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <line y2="0" x2="50" y1="0" x1="-50" stroke-width="5" stroke="#ff7f00" fill="none"/>
+ </svg>
+ </g>
+ <g id="mkr_markers_dimension">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <line y2="0" x2="40" y1="0" x1="20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+ <line y2="0" x2="-40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+ <text text-anchor="middle" font-family="serif" font-size="80" y="20" x="0" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>
+ <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M-50,0 L-30,-15 L-30,15 Z"/>
+ <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/>
+ </svg>
+ </g>
+ <g id="mkr_markers_label">
+ <svg viewBox="-60 -60 120 120" xmlns="http://www.w3.org/2000/svg">
+ <line y2="0" x2="40" y1="0" x1="-20" stroke-width="5" stroke="#ff7f00" fill="none"/>
+ <text text-anchor="middle" font-family="serif" font-size="80" y="20" x="-40" stroke-width="0" stroke="#ff7f00" fill="#ff7f00">T</text>
+ <path stroke-width="5" stroke="#ff7f00" fill="#ff7f00" d="M50,0 L30,-15 L30,15 Z"/>
+ </svg>
+ </g>
+ <g id="svg_eof"/>
+</svg>
diff --git a/files_svgedit/images/README.txt b/files_svgedit/images/README.txt
new file mode 100644
index 000000000..9224bc1cf
--- /dev/null
+++ b/files_svgedit/images/README.txt
@@ -0,0 +1,61 @@
+filename origin
+
+align-bottom.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.png
+align-bottom.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-bottom.svg
+align-center.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.png
+align-center.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-center.svg
+align-left.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.png
+align-left.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-left.svg
+align-middle.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.png
+align-middle.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-center.svg
+align-right.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.png
+align-right.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-horizontal-right.svg
+align-top.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.png
+align-top.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/actions/align-vertical-top.svg
+bold.png
+cancel.png
+circle.png
+clear.png
+clone.png
+copy.png
+cut.png
+delete.png
+document-properties.png
+dropdown.gif
+ellipse.png
+eye.png
+flyouth.png
+flyup.gif
+freehand-circle.png
+freehand-square.png
+go-down.png
+go-up.png
+image.png
+italic.png
+line.png
+logo.png
+logo.svg
+move_bottom.png
+move_top.png
+none.png
+open.png
+paste.png
+path.png
+polygon.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.png
+polygon.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-polygon.svg
+rect.png
+redo.png
+rotate.png
+save.png
+select.png
+sep.png
+shape_group.png
+shape_ungroup.png
+source.png
+square.png
+text.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.png
+text.svg http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/draw-text.svg
+undo.png
+view-refresh.png
+wave.png
+zoom.png http://tango.freedesktop.org/static/cvs/tango-art-libre/22x22/tools/page-magnifier.png
diff --git a/files_svgedit/images/align-bottom.png b/files_svgedit/images/align-bottom.png
new file mode 100644
index 000000000..be5dfe54d
--- /dev/null
+++ b/files_svgedit/images/align-bottom.png
Binary files differ
diff --git a/files_svgedit/images/align-bottom.svg b/files_svgedit/images/align-bottom.svg
new file mode 100644
index 000000000..36f8efe2c
--- /dev/null
+++ b/files_svgedit/images/align-bottom.svg
@@ -0,0 +1,277 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22"
+ height="22"
+ id="svg5741"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
+ sodipodi:docname="align-bottom-vertical.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-bottom-vertical.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs5743">
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2968"
+ id="linearGradient6938"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2974"
+ id="linearGradient6936"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2986"
+ id="linearGradient6934"
+ gradientUnits="userSpaceOnUse"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2980"
+ id="linearGradient6932"
+ gradientUnits="userSpaceOnUse"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ id="linearGradient2968"
+ inkscape:collect="always">
+ <stop
+ id="stop2970"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2972"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2968"
+ id="linearGradient6930"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2974"
+ inkscape:collect="always">
+ <stop
+ id="stop2976"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2978"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2974"
+ id="linearGradient6928"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ id="linearGradient2986"
+ inkscape:collect="always">
+ <stop
+ id="stop2988"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2990"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2986"
+ id="linearGradient6926"
+ gradientUnits="userSpaceOnUse"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2980"
+ inkscape:collect="always">
+ <stop
+ id="stop2982"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2984"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2980"
+ id="linearGradient6924"
+ gradientUnits="userSpaceOnUse"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.197802"
+ inkscape:cx="8"
+ inkscape:cy="9.8019802"
+ inkscape:current-layer="g6828"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ width="22px"
+ height="22px"
+ inkscape:window-width="1078"
+ inkscape:window-height="786"
+ inkscape:window-x="243"
+ inkscape:window-y="71" />
+ <metadata
+ id="metadata5746">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ style="display:inline"
+ id="g6828"
+ transform="translate(30.00011,90.000366)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <g
+ style="display:inline"
+ id="g6838"
+ transform="translate(-30.00009,-1.0002798)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3052"
+ width="12"
+ height="7"
+ x="69.500122"
+ y="12.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect3054"
+ width="10"
+ height="5.0000305"
+ x="70.500122"
+ y="13.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ rx="0"
+ ry="0"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g3056"
+ transform="translate(-127,-559)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="129.49626"
+ x="-489.49979"
+ height="7.0035982"
+ width="17.999748"
+ id="rect3058"
+ style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="130.50006"
+ x="-488.50009"
+ height="4.9998937"
+ width="15.999757"
+ id="rect3060"
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ rx="0"
+ ry="0" />
+ </g>
+ <g
+ id="g3294"
+ transform="translate(-187,-560)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ y="489.5"
+ x="196.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3296"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient6932);fill-opacity:1;stroke:url(#linearGradient6934);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
+ id="path3298"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient6936);fill-opacity:1;stroke:url(#linearGradient6938);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
+ id="path3300"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/files_svgedit/images/align-center.png b/files_svgedit/images/align-center.png
new file mode 100644
index 000000000..d1f0c5bcb
--- /dev/null
+++ b/files_svgedit/images/align-center.png
Binary files differ
diff --git a/files_svgedit/images/align-center.svg b/files_svgedit/images/align-center.svg
new file mode 100644
index 000000000..ddf49fcec
--- /dev/null
+++ b/files_svgedit/images/align-center.svg
@@ -0,0 +1,252 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22"
+ height="22"
+ id="svg10958"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
+ sodipodi:docname="align-horisontal-center.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-center.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs10960">
+ <linearGradient
+ id="linearGradient2968"
+ inkscape:collect="always">
+ <stop
+ id="stop2970"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2972"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2968"
+ id="linearGradient4708"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-395.9999,-981)"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2974"
+ inkscape:collect="always">
+ <stop
+ id="stop2976"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2978"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2974"
+ id="linearGradient4706"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-395.9999,-981)"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ id="linearGradient2986"
+ inkscape:collect="always">
+ <stop
+ id="stop2988"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2990"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2986"
+ id="linearGradient4704"
+ gradientUnits="userSpaceOnUse"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2980"
+ inkscape:collect="always">
+ <stop
+ id="stop2982"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2984"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2980"
+ id="linearGradient4702"
+ gradientUnits="userSpaceOnUse"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.197802"
+ inkscape:cx="16"
+ inkscape:cy="11.460711"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ width="22px"
+ height="22px"
+ inkscape:window-width="797"
+ inkscape:window-height="628"
+ inkscape:window-x="0"
+ inkscape:window-y="47" />
+ <metadata
+ id="metadata10963">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ style="display:inline"
+ id="g4044"
+ transform="matrix(0,-1,1,0,-59.999911,-168.00002)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ id="rect3851"
+ width="12"
+ height="7"
+ x="-76.499878"
+ y="-177.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="translate(-317,-410)"
+ id="g3853"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display:inline">
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="129.49626"
+ x="-489.49979"
+ height="7.0035982"
+ width="17.999748"
+ id="rect3855"
+ style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="130.50006"
+ x="-488.50009"
+ height="4.9998937"
+ width="15.999757"
+ id="rect3857"
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ rx="0"
+ ry="0" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ id="rect3859"
+ width="10"
+ height="5.0000305"
+ x="-75.499878"
+ y="-176.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ rx="0"
+ ry="0"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g3861"
+ transform="translate(-377,-420)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display:inline">
+ <rect
+ y="489.5"
+ x="186.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3863"
+ style="fill:url(#linearGradient4702);fill-opacity:1;stroke:url(#linearGradient4704);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="489.5"
+ x="191.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3865"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="489.5"
+ x="196.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3867"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="489.5"
+ x="201.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3869"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ transform="scale(-1,-1)"
+ y="-491.5"
+ x="-209.49998"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3871"
+ style="fill:url(#linearGradient4706);fill-opacity:1;stroke:url(#linearGradient4708);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/files_svgedit/images/align-left.png b/files_svgedit/images/align-left.png
new file mode 100644
index 000000000..41fa8bcc1
--- /dev/null
+++ b/files_svgedit/images/align-left.png
Binary files differ
diff --git a/files_svgedit/images/align-left.svg b/files_svgedit/images/align-left.svg
new file mode 100644
index 000000000..b1a24a5a6
--- /dev/null
+++ b/files_svgedit/images/align-left.svg
@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22"
+ height="22"
+ id="svg11272"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
+ sodipodi:docname="align-horisontal-left.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-left.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs11274">
+ <linearGradient
+ id="linearGradient2968"
+ inkscape:collect="always">
+ <stop
+ id="stop2970"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2972"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2968"
+ id="linearGradient4716"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2974"
+ inkscape:collect="always">
+ <stop
+ id="stop2976"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2978"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2974"
+ id="linearGradient4714"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ id="linearGradient2986"
+ inkscape:collect="always">
+ <stop
+ id="stop2988"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2990"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2986"
+ id="linearGradient4712"
+ gradientUnits="userSpaceOnUse"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2980"
+ inkscape:collect="always">
+ <stop
+ id="stop2982"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2984"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2980"
+ id="linearGradient4710"
+ gradientUnits="userSpaceOnUse"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.197802"
+ inkscape:cx="16"
+ inkscape:cy="14.269093"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ width="22px"
+ height="22px"
+ inkscape:window-width="797"
+ inkscape:window-height="628"
+ inkscape:window-x="0"
+ inkscape:window-y="47" />
+ <metadata
+ id="metadata11277">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ style="display:inline"
+ id="g4065"
+ transform="matrix(0,-1,1,0,8.9287758e-5,51.99998)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <g
+ id="g3883"
+ transform="translate(-127,-473)"
+ style="fill:#d3d7cf;stroke:#888a85;display:inline"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ transform="matrix(0,1,1,0,0,0)"
+ y="169.5"
+ x="475.50012"
+ height="7"
+ width="12"
+ id="rect3885"
+ style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ ry="0"
+ rx="0"
+ transform="matrix(0,1,1,0,0,0)"
+ y="170.5"
+ x="476.50012"
+ height="5.0000305"
+ width="10"
+ id="rect3887"
+ style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g3889"
+ transform="translate(-97,-469)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display:inline">
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="129.49626"
+ x="-489.49979"
+ height="7.0035982"
+ width="17.999748"
+ id="rect3891"
+ style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="130.50006"
+ x="-488.50009"
+ height="4.9998937"
+ width="15.999757"
+ id="rect3893"
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ rx="0"
+ ry="0" />
+ </g>
+ <g
+ id="g3903"
+ transform="translate(-157,-488)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display:inline">
+ <rect
+ y="489.5"
+ x="196.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3905"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4710);fill-opacity:1;stroke:url(#linearGradient4712);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
+ id="path3907"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4714);fill-opacity:1;stroke:url(#linearGradient4716);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
+ id="path3909"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/files_svgedit/images/align-middle.png b/files_svgedit/images/align-middle.png
new file mode 100644
index 000000000..f72bbb799
--- /dev/null
+++ b/files_svgedit/images/align-middle.png
Binary files differ
diff --git a/files_svgedit/images/align-middle.svg b/files_svgedit/images/align-middle.svg
new file mode 100644
index 000000000..d2b42e6a3
--- /dev/null
+++ b/files_svgedit/images/align-middle.svg
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22"
+ height="22"
+ id="svg10625"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
+ sodipodi:docname="align-vertical-center.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-vertical-center.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs10627">
+ <linearGradient
+ id="linearGradient2968"
+ inkscape:collect="always">
+ <stop
+ id="stop2970"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2972"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2968"
+ id="linearGradient6962"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-395.9999,-981)"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2974"
+ inkscape:collect="always">
+ <stop
+ id="stop2976"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2978"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2974"
+ id="linearGradient6960"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-395.9999,-981)"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ id="linearGradient2986"
+ inkscape:collect="always">
+ <stop
+ id="stop2988"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2990"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2986"
+ id="linearGradient6958"
+ gradientUnits="userSpaceOnUse"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2980"
+ inkscape:collect="always">
+ <stop
+ id="stop2982"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2984"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2980"
+ id="linearGradient6956"
+ gradientUnits="userSpaceOnUse"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.197802"
+ inkscape:cx="16"
+ inkscape:cy="16"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ width="22px"
+ height="22px"
+ inkscape:window-width="797"
+ inkscape:window-height="628"
+ inkscape:window-x="0"
+ inkscape:window-y="47" />
+ <metadata
+ id="metadata10630">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ style="display:inline"
+ id="g6849"
+ transform="translate(-29.999893,91.000089)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1933"
+ width="12"
+ height="7"
+ x="73.500122"
+ y="42.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ transform="translate(-97,-560)"
+ id="g2063"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="129.49626"
+ x="-489.49979"
+ height="7.0035982"
+ width="17.999748"
+ id="rect1935"
+ style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="130.50006"
+ x="-488.50009"
+ height="4.9998937"
+ width="15.999757"
+ id="rect1937"
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ rx="0"
+ ry="0" />
+ </g>
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect1939"
+ width="10"
+ height="5.0000305"
+ x="74.500122"
+ y="43.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ rx="0"
+ ry="0"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g2992"
+ transform="translate(-157,-570)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ y="489.5"
+ x="186.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect2994"
+ style="fill:url(#linearGradient6956);fill-opacity:1;stroke:url(#linearGradient6958);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="489.5"
+ x="191.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect2996"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="489.5"
+ x="196.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect2998"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ y="489.5"
+ x="201.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3000"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ transform="scale(-1,-1)"
+ y="-491.5"
+ x="-209.49998"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3002"
+ style="fill:url(#linearGradient6960);fill-opacity:1;stroke:url(#linearGradient6962);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/files_svgedit/images/align-right.png b/files_svgedit/images/align-right.png
new file mode 100644
index 000000000..5ca99caa4
--- /dev/null
+++ b/files_svgedit/images/align-right.png
Binary files differ
diff --git a/files_svgedit/images/align-right.svg b/files_svgedit/images/align-right.svg
new file mode 100644
index 000000000..c2f8f19e3
--- /dev/null
+++ b/files_svgedit/images/align-right.svg
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22"
+ height="22"
+ id="svg11187"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
+ sodipodi:docname="align-horisontal-right.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ sodipodi:modified="TRUE"
+ inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-horisontal-right.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs11189">
+ <linearGradient
+ id="linearGradient2968"
+ inkscape:collect="always">
+ <stop
+ id="stop2970"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2972"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2968"
+ id="linearGradient4732"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2974"
+ inkscape:collect="always">
+ <stop
+ id="stop2976"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2978"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2974"
+ id="linearGradient4730"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ id="linearGradient2986"
+ inkscape:collect="always">
+ <stop
+ id="stop2988"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2990"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2986"
+ id="linearGradient4728"
+ gradientUnits="userSpaceOnUse"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2980"
+ inkscape:collect="always">
+ <stop
+ id="stop2982"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2984"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2980"
+ id="linearGradient4726"
+ gradientUnits="userSpaceOnUse"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.197802"
+ inkscape:cx="16"
+ inkscape:cy="16"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ width="22px"
+ height="22px"
+ inkscape:window-width="797"
+ inkscape:window-height="628"
+ inkscape:window-x="0"
+ inkscape:window-y="47" />
+ <metadata
+ id="metadata11192">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ style="display:inline"
+ id="g4025"
+ transform="matrix(0,-1,1,0,-60.999914,-198.00011)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ id="rect3873"
+ width="12"
+ height="7"
+ x="-80.499878"
+ y="-207.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ id="rect3875"
+ width="10"
+ height="5.0000305"
+ x="-79.499878"
+ y="-206.5"
+ transform="matrix(0,-1,1,0,0,0)"
+ rx="0"
+ ry="0"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ id="g3877"
+ transform="translate(-347,-409)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display:inline">
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="129.49626"
+ x="-489.49979"
+ height="7.0035982"
+ width="17.999748"
+ id="rect3879"
+ style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="130.50006"
+ x="-488.50009"
+ height="4.9998937"
+ width="15.999757"
+ id="rect3881"
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ rx="0"
+ ry="0" />
+ </g>
+ <g
+ id="g3919"
+ transform="translate(-407,-410)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ style="display:inline">
+ <rect
+ y="489.5"
+ x="196.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3921"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient4726);fill-opacity:1;stroke:url(#linearGradient4728);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
+ id="path3923"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient4730);fill-opacity:1;stroke:url(#linearGradient4732);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
+ id="path3925"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/files_svgedit/images/align-top.png b/files_svgedit/images/align-top.png
new file mode 100644
index 000000000..51bfc2ecd
--- /dev/null
+++ b/files_svgedit/images/align-top.png
Binary files differ
diff --git a/files_svgedit/images/align-top.svg b/files_svgedit/images/align-top.svg
new file mode 100644
index 000000000..f314f32d1
--- /dev/null
+++ b/files_svgedit/images/align-top.svg
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22"
+ height="22"
+ id="svg10699"
+ sodipodi:version="0.32"
+ inkscape:version="0.44+devel"
+ version="1.0"
+ sodipodi:docbase="/home/andreas/project/inkscape/22x22/actions"
+ sodipodi:docname="align-vertical-bottom.svg"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape"
+ inkscape:export-filename="/home/andreas/project/inkscape/22x22/actions/align-vertical-bottom.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ sodipodi:modified="true">
+ <defs
+ id="defs10701">
+ <linearGradient
+ id="linearGradient2968"
+ inkscape:collect="always">
+ <stop
+ id="stop2970"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2972"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2968"
+ id="linearGradient6954"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2974"
+ inkscape:collect="always">
+ <stop
+ id="stop2976"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2978"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2974"
+ id="linearGradient6952"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(-1,0,0,-1,395.9999,981)"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ <linearGradient
+ id="linearGradient2986"
+ inkscape:collect="always">
+ <stop
+ id="stop2988"
+ offset="0"
+ style="stop-color:#ce5c00;stop-opacity:1" />
+ <stop
+ id="stop2990"
+ offset="1"
+ style="stop-color:#ce5c00;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2986"
+ id="linearGradient6950"
+ gradientUnits="userSpaceOnUse"
+ x1="187.60938"
+ y1="489.35938"
+ x2="186.93732"
+ y2="489.35938" />
+ <linearGradient
+ id="linearGradient2980"
+ inkscape:collect="always">
+ <stop
+ id="stop2982"
+ offset="0"
+ style="stop-color:#fcaf3e;stop-opacity:1" />
+ <stop
+ id="stop2984"
+ offset="1"
+ style="stop-color:#fcaf3e;stop-opacity:0" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2980"
+ id="linearGradient6948"
+ gradientUnits="userSpaceOnUse"
+ x1="187.81554"
+ y1="489.54688"
+ x2="187.1716"
+ y2="489.54688" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.197802"
+ inkscape:cx="16"
+ inkscape:cy="16"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ width="22px"
+ height="22px"
+ inkscape:window-width="797"
+ inkscape:window-height="628"
+ inkscape:window-x="0"
+ inkscape:window-y="47" />
+ <metadata
+ id="metadata10704">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <g
+ style="display:inline"
+ id="g6862"
+ transform="translate(-59.99998,90)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <g
+ id="g3084"
+ transform="translate(-97,-563)"
+ style="fill:#d3d7cf;stroke:#888a85"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ transform="matrix(0,1,1,0,0,0)"
+ y="169.5"
+ x="475.50012"
+ height="7"
+ width="12"
+ id="rect3086"
+ style="fill:#d3d7cf;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <rect
+ ry="0"
+ rx="0"
+ transform="matrix(0,1,1,0,0,0)"
+ y="170.5"
+ x="476.50012"
+ height="5.0000305"
+ width="10"
+ id="rect3088"
+ style="opacity:1;fill:#d3d7cf;fill-opacity:1;stroke:#ffffff;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ </g>
+ <g
+ id="g3090"
+ transform="translate(-67,-559)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="129.49626"
+ x="-489.49979"
+ height="7.0035982"
+ width="17.999748"
+ id="rect3092"
+ style="color:#000000;fill:#d3d7cf;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00024867;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
+ <rect
+ transform="matrix(0,-1,1,0,0,0)"
+ y="130.50006"
+ x="-488.50009"
+ height="4.9998937"
+ width="15.999757"
+ id="rect3094"
+ style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.00024891;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:2;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:inline"
+ rx="0"
+ ry="0" />
+ </g>
+ <g
+ id="g3262"
+ transform="translate(-127,-578)"
+ inkscape:export-filename="/home/lapo/Desktop/align-distribute.tar.gz_FILES/align-stuff.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ y="489.5"
+ x="196.49989"
+ height="1.9999999"
+ width="3.0000916"
+ id="rect3264"
+ style="fill:#fcaf3e;fill-opacity:1;stroke:#ce5c00;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <path
+ style="fill:url(#linearGradient6948);fill-opacity:1;stroke:url(#linearGradient6950);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 197.49998,491.5 L 186.49989,491.5 L 186.49989,489.5 L 197.49998,489.5"
+ id="path3266"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:url(#linearGradient6952);fill-opacity:1;stroke:url(#linearGradient6954);stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:0;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 198.49989,489.5 L 209.49998,489.5 L 209.49998,491.5 L 198.49989,491.5"
+ id="path3268"
+ sodipodi:nodetypes="cccc" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/files_svgedit/images/bold.png b/files_svgedit/images/bold.png
new file mode 100644
index 000000000..19ac5bbd7
--- /dev/null
+++ b/files_svgedit/images/bold.png
Binary files differ
diff --git a/files_svgedit/images/cancel.png b/files_svgedit/images/cancel.png
new file mode 100644
index 000000000..8595f5d97
--- /dev/null
+++ b/files_svgedit/images/cancel.png
Binary files differ
diff --git a/files_svgedit/images/circle.png b/files_svgedit/images/circle.png
new file mode 100644
index 000000000..e7bd228b7
--- /dev/null
+++ b/files_svgedit/images/circle.png
Binary files differ
diff --git a/files_svgedit/images/clear.png b/files_svgedit/images/clear.png
new file mode 100644
index 000000000..514710d12
--- /dev/null
+++ b/files_svgedit/images/clear.png
Binary files differ
diff --git a/files_svgedit/images/clone.png b/files_svgedit/images/clone.png
new file mode 100644
index 000000000..c8713c80b
--- /dev/null
+++ b/files_svgedit/images/clone.png
Binary files differ
diff --git a/files_svgedit/images/conn.svg b/files_svgedit/images/conn.svg
new file mode 100644
index 000000000..1af5e9a4d
--- /dev/null
+++ b/files_svgedit/images/conn.svg
@@ -0,0 +1,29 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+ <g id="mode_connect">
+ <svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+
+ <line stroke-width="5" fill="none" stroke="#000000" id="svg_2" y2="121" x2="136" y1="7" x1="136">
+ <stop stop-opacity="1" stop-color="#4687a0"/>
+ <stop stop-opacity="1" stop-color="#ffffff"/>
+ </line>
+ <linearGradient y2="0.18359" x2="0.29688" y1="0.92188" x1="0.62109" id="svg_3">
+ <stop stop-opacity="1" stop-color="#417dad" offset="0"/>
+ <stop stop-opacity="1" stop-color="#ffffff" offset="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <title>Layer 1</title>
+ <line x1="5.64676" y1="5.60056" x2="18.50037" y2="18.62557" id="svg_5" stroke="#000000" fill="none"/>
+ <rect opacity="0.75" stroke-width="0.5" x="0.5" y="0.5" width="9.625" height="5.125" id="svg_1" fill="url(#svg_3)" stroke="#000000"/>
+ <rect opacity="0.75" id="svg_4" stroke-width="0.5" x="13.75" y="18.25" width="9.625" height="5.125" fill="url(#svg_3)" stroke="#000000"/>
+ <g id="svg_9">
+ <path d="m14.57119,9.12143l-0.98244,5.18852l2.70861,-4.36084" id="svg_6" fill="#a0a0a0" stroke="#000000"/>
+ <path d="m14.27564,6.76258c-0.25872,0.72562 -0.40735,1.65632 -0.33812,2.15432l2.90784,1.2509c0.30961,-0.21212 1.08198,-1.1814 1.08198,-1.73736" id="svg_7" fill="url(#svg_3)" stroke="#000000"/>
+ <path d="m16.28893,0.37519l-2.46413,5.9304l4.76481,2.39435l2.13178,-4.96735" id="svg_8" fill="url(#svg_3)" stroke="#000000"/>
+ </g>
+ </g>
+ </svg>
+ </g>
+ <g id="svg_eof"/>
+</svg> \ No newline at end of file
diff --git a/files_svgedit/images/copy.png b/files_svgedit/images/copy.png
new file mode 100644
index 000000000..23ba357bc
--- /dev/null
+++ b/files_svgedit/images/copy.png
Binary files differ
diff --git a/files_svgedit/images/cut.png b/files_svgedit/images/cut.png
new file mode 100644
index 000000000..d586098e2
--- /dev/null
+++ b/files_svgedit/images/cut.png
Binary files differ
diff --git a/files_svgedit/images/delete.png b/files_svgedit/images/delete.png
new file mode 100644
index 000000000..e71dd96fe
--- /dev/null
+++ b/files_svgedit/images/delete.png
Binary files differ
diff --git a/files_svgedit/images/document-properties.png b/files_svgedit/images/document-properties.png
new file mode 100644
index 000000000..a5ad72875
--- /dev/null
+++ b/files_svgedit/images/document-properties.png
Binary files differ
diff --git a/files_svgedit/images/dropdown.gif b/files_svgedit/images/dropdown.gif
new file mode 100644
index 000000000..4180d5eba
--- /dev/null
+++ b/files_svgedit/images/dropdown.gif
Binary files differ
diff --git a/files_svgedit/images/ellipse.png b/files_svgedit/images/ellipse.png
new file mode 100644
index 000000000..1402a2d8d
--- /dev/null
+++ b/files_svgedit/images/ellipse.png
Binary files differ
diff --git a/files_svgedit/images/eye.png b/files_svgedit/images/eye.png
new file mode 100644
index 000000000..564a1a971
--- /dev/null
+++ b/files_svgedit/images/eye.png
Binary files differ
diff --git a/files_svgedit/images/fhpath.png b/files_svgedit/images/fhpath.png
new file mode 100644
index 000000000..9255cc50f
--- /dev/null
+++ b/files_svgedit/images/fhpath.png
Binary files differ
diff --git a/files_svgedit/images/flyouth.png b/files_svgedit/images/flyouth.png
new file mode 100644
index 000000000..5822ed833
--- /dev/null
+++ b/files_svgedit/images/flyouth.png
Binary files differ
diff --git a/files_svgedit/images/flyup.gif b/files_svgedit/images/flyup.gif
new file mode 100644
index 000000000..c027e137c
--- /dev/null
+++ b/files_svgedit/images/flyup.gif
Binary files differ
diff --git a/files_svgedit/images/freehand-circle.png b/files_svgedit/images/freehand-circle.png
new file mode 100644
index 000000000..43cb17f90
--- /dev/null
+++ b/files_svgedit/images/freehand-circle.png
Binary files differ
diff --git a/files_svgedit/images/freehand-square.png b/files_svgedit/images/freehand-square.png
new file mode 100644
index 000000000..328fc77d1
--- /dev/null
+++ b/files_svgedit/images/freehand-square.png
Binary files differ
diff --git a/files_svgedit/images/go-down.png b/files_svgedit/images/go-down.png
new file mode 100644
index 000000000..3dd7fccdf
--- /dev/null
+++ b/files_svgedit/images/go-down.png
Binary files differ
diff --git a/files_svgedit/images/go-up.png b/files_svgedit/images/go-up.png
new file mode 100644
index 000000000..fa9a7d71b
--- /dev/null
+++ b/files_svgedit/images/go-up.png
Binary files differ
diff --git a/files_svgedit/images/image.png b/files_svgedit/images/image.png
new file mode 100644
index 000000000..10f46719d
--- /dev/null
+++ b/files_svgedit/images/image.png
Binary files differ
diff --git a/files_svgedit/images/italic.png b/files_svgedit/images/italic.png
new file mode 100644
index 000000000..63485dea9
--- /dev/null
+++ b/files_svgedit/images/italic.png
Binary files differ
diff --git a/files_svgedit/images/line.png b/files_svgedit/images/line.png
new file mode 100644
index 000000000..37975742e
--- /dev/null
+++ b/files_svgedit/images/line.png
Binary files differ
diff --git a/files_svgedit/images/link_controls.png b/files_svgedit/images/link_controls.png
new file mode 100644
index 000000000..516a094b3
--- /dev/null
+++ b/files_svgedit/images/link_controls.png
Binary files differ
diff --git a/files_svgedit/images/logo.png b/files_svgedit/images/logo.png
new file mode 100644
index 000000000..7c04931c3
--- /dev/null
+++ b/files_svgedit/images/logo.png
Binary files differ
diff --git a/files_svgedit/images/logo.svg b/files_svgedit/images/logo.svg
new file mode 100644
index 000000000..e71308bea
--- /dev/null
+++ b/files_svgedit/images/logo.svg
@@ -0,0 +1,32 @@
+<svg viewBox="0 0 478 472" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient id="svg_5" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" stop-color="#ffffe0" stop-opacity="1"/>
+ <stop offset="1" stop-color="#edc39c" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="svg_10" x1="0.57031" y1="0.78125" x2="0.28906" y2="0.41406">
+ <stop offset="0" stop-color="#ff7f00" stop-opacity="1"/>
+ <stop offset="1" stop-color="#ffff00"/>
+ </linearGradient>
+ <linearGradient id="svg_18" x1="0.37891" y1="0.35938" x2="1" y2="1">
+ <stop offset="0" stop-color="#e0e0e0" stop-opacity="1"/>
+ <stop offset="1" stop-color="#666666" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <title>Layer 1</title>
+ <path d="m68.82031,270.04688l-22,-33l17,-35l34,2l25,15l7,-35l28,-16l25,12l100,102l21,23l-15,35l-36,9l20,49l-31,24l-49,-17l-1,31l-33,21l-31,-19l-13,-35l-30,21l-30,-9l-5,-35l16,-31l-32,-6l-15,-19l3,-36l47,-18z" id="svg_19" fill="#ffffff"/>
+ <path fill="#1a171a" fill-rule="nonzero" id="path2902" d="m158.96452,155.03685c-25.02071,0 -45.37077,20.35121 -45.37077,45.3775c0,0.72217 0.01794,1.4399 0.0471,2.15645c-0.49339,-0.53604 -0.99355,-1.06085 -1.50603,-1.58452c-8.56077,-8.55519 -19.95982,-13.28413 -32.07432,-13.28413c-12.12122,0 -23.52027,4.72334 -32.08778,13.29646c-17.69347,17.69464 -17.69347,46.4619 0,64.17445c0.51809,0.51697 1.0485,1.0126 1.59015,1.50601c-0.72891,-0.03586 -1.45782,-0.04822 -2.19234,-0.04822c-25.02071,0 -45.37189,20.35117 -45.37189,45.37747c0,25.01398 20.35119,45.36517 45.37189,45.36517c0.72891,0 1.45221,-0.01236 2.1744,-0.04828c-0.5293,0.48221 -1.05412,0.98801 -1.56547,1.49368c-17.70021,17.68906 -17.70021,46.48654 -0.00628,64.18677c8.57872,8.56747 19.96655,13.2785 32.08778,13.2785c12.1145,0 23.5012,-4.71103 32.07433,-13.2785c0.51247,-0.51694 1.01823,-1.04849 1.50603,-1.57895c-0.02915,0.71213 -0.04709,1.44669 -0.04709,2.15759c0,25.01511 20.35007,45.37747 45.37077,45.37747c25.01398,0 45.37079,-20.3624 45.37079,-45.37747c0,-0.7222 -0.01689,-1.44553 -0.05266,-2.18112c0.48105,0.52933 0.97562,1.04849 1.48697,1.56662c8.57982,8.57977 19.97775,13.2908 32.1057,13.2908c12.11003,0 23.51358,-4.71103 32.0687,-13.2785c17.68906,-17.70013 17.68906,-46.48538 0,-64.17441c-0.50577,-0.4946 -1.01141,-1.00034 -1.54306,-1.48248c0.69983,0.03592 1.42316,0.04828 2.16992,0.04828c25.01514,0 45.35284,-20.35123 45.35284,-45.36517c0,-25.02631 -20.33774,-45.37747 -45.35284,-45.37747c-0.74683,0 -1.47009,0.01236 -2.19345,0.04822c0.53152,-0.49341 1.06082,-0.98904 1.59128,-1.50601c8.55521,-8.55521 13.2785,-19.94186 13.2785,-32.07545c0,-12.12793 -4.72336,-23.52028 -13.30319,-32.0934c-8.55515,-8.56076 -19.95866,-13.2841 -32.0687,-13.2841c-12.12122,0 -23.52025,4.72334 -32.08777,13.2841c-0.51137,0.5181 -1.01822,1.04851 -1.5049,1.57895c0.03586,-0.72331 0.05266,-1.43991 0.05266,-2.16881c0,-25.02629 -20.35681,-45.3775 -45.37079,-45.3775m0,20.71901c13.61607,0 24.65851,11.03122 24.65851,24.65849c0,6.62749 -2.651,12.62137 -6.9101,17.04979l0,51.67419l36.53975,-36.53523c0.12001,-6.14418 2.48277,-12.24686 7.18146,-16.94667c4.81305,-4.81305 11.12094,-7.22409 17.44116,-7.22409c6.30228,0 12.61577,2.41104 17.43552,7.22409c9.62166,9.63287 9.62166,25.24948 0,34.87669c-4.69977,4.68634 -10.80803,7.04915 -16.95334,7.18147l-36.5341,36.53305l51.66742,0c4.42841,-4.25351 10.42905,-6.90451 17.08008,-6.90451c13.59137,0 24.62933,11.03799 24.62933,24.66525c0,13.61606 -11.03796,24.66519 -24.62933,24.66519c-6.65106,0 -12.65167,-2.66333 -17.08008,-6.91681l-51.64836,0l36.50273,36.50946c6.16995,0.14465 12.26587,2.50522 16.96568,7.20618c9.6216,9.61487 9.6216,25.23151 0,34.85757c-4.80856,4.81979 -11.13327,7.22974 -17.43556,7.22974c-6.32019,0 -12.63371,-2.40991 -17.44786,-7.22974c-4.68074,-4.68744 -7.04802,-10.79572 -7.17473,-16.94098l-36.53975,-36.53415l0,51.66742c4.25908,4.44635 6.9101,10.43466 6.9101,17.0621c0,13.62729 -11.04243,24.66415 -24.65851,24.66415c-13.62166,0 -24.65848,-11.0369 -24.65848,-24.66415c0,-6.62744 2.64539,-12.61575 6.90335,-17.0621l0,-51.66742l-36.53864,36.54648c-0.12672,6.14413 -2.48838,12.26477 -7.18147,16.94098c-4.81416,4.81873 -11.12206,7.22974 -17.42882,7.22974c-6.31461,0 -12.6225,-2.41101 -17.43555,-7.22974c-9.63284,-9.62833 -9.63284,-25.24277 0,-34.8699c4.68073,-4.67627 10.79012,-7.05026 16.94101,-7.18262l36.533,-36.53302l-51.66632,0c-4.44075,4.25348 -10.42902,6.91681 -17.06211,6.91681c-13.61606,0 -24.65288,-11.04913 -24.65288,-24.66519c0,-13.62726 11.03682,-24.66525 24.65288,-24.66525c6.63309,0 12.62136,2.651 17.06211,6.90451l51.68537,0l-36.55208,-36.54538c-6.14527,-0.12 -12.25354,-2.49403 -16.94775,-7.19377c-9.62611,-9.61493 -9.62611,-25.23715 0,-34.86441c4.81419,-4.81305 11.12769,-7.22406 17.44228,-7.22406c6.30676,0 12.61465,2.41101 17.42883,7.22406c4.69978,4.69307 7.06034,10.80246 7.18144,16.94777l36.5386,36.53299l0,-51.66074c-4.25795,-4.42841 -6.90334,-10.42229 -6.90334,-17.04979c0,-13.62726 11.03682,-24.65848 24.65848,-24.65848"/>
+ <path d="m188.82031,210.04688l16,-47l155,-148l107,100l-158,156.99999l-44,12l-76,-74z" id="svg_6" fill="url(#svg_10)" stroke="#ffffff" stroke-width="0"/>
+ <path d="m335.57031,40.29688c-11.5,39.75 55.5,115.25 109.25,98.75l21,-20.99999l-103,-101l-27.25,23.25z" id="svg_11" fill="url(#svg_18)" stroke="#ffffff" stroke-width="0"/>
+ <rect x="272.80404" y="20.76382" width="42.35197" height="232.66835" id="svg_13" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 293.98, 137.1)" opacity="0.4"/>
+ <rect x="282.80404" y="22.76382" width="14" height="232.66835" fill="#ffffff" stroke="#ffffff" stroke-width="0" transform="rotate(45.9094, 289.805, 139.1)" opacity="0.4" id="svg_14"/>
+ <ellipse cx="415.13312" cy="64.38066" id="svg_12" fill="#ea7598" stroke="#ffffff" stroke-width="0" rx="67.79251" ry="34.82026" transform="rotate(39.4735, 415.133, 64.379)"/>
+ <path d="m212.07031,166.04688c-8.5,47 36.25,103.75 99.25,96.75l-152.5,53.25l53.25,-150z" id="svg_4" fill="url(#svg_5)" stroke="#ffffff" stroke-width="0"/>
+ <path d="m181.32031,242.54688c0.5,20.5 26.75,45 46.75,48.5l-66.25,20l19.5,-68.5z" id="svg_3" fill="#27382f" stroke="#ffffff" stroke-width="0"/>
+ </g>
+ <g>
+ <title>Layer 2</title>
+ <path d="m152.82031,317.04688l51,-152l157,-153c40,-12.00001 118,48 105,105l-157,152.99999l-156,47z" id="svg_1" fill="none" stroke="#800000" stroke-width="17"/>
+ </g>
+</svg>
diff --git a/files_svgedit/images/move_bottom.png b/files_svgedit/images/move_bottom.png
new file mode 100644
index 000000000..6b1325075
--- /dev/null
+++ b/files_svgedit/images/move_bottom.png
Binary files differ
diff --git a/files_svgedit/images/move_top.png b/files_svgedit/images/move_top.png
new file mode 100644
index 000000000..9d54b6a48
--- /dev/null
+++ b/files_svgedit/images/move_top.png
Binary files differ
diff --git a/files_svgedit/images/node_clone.png b/files_svgedit/images/node_clone.png
new file mode 100755
index 000000000..2187d0739
--- /dev/null
+++ b/files_svgedit/images/node_clone.png
Binary files differ
diff --git a/files_svgedit/images/node_delete.png b/files_svgedit/images/node_delete.png
new file mode 100755
index 000000000..ea3f7e687
--- /dev/null
+++ b/files_svgedit/images/node_delete.png
Binary files differ
diff --git a/files_svgedit/images/none.png b/files_svgedit/images/none.png
new file mode 100644
index 000000000..04c0765f6
--- /dev/null
+++ b/files_svgedit/images/none.png
Binary files differ
diff --git a/files_svgedit/images/open.png b/files_svgedit/images/open.png
new file mode 100644
index 000000000..254a6b814
--- /dev/null
+++ b/files_svgedit/images/open.png
Binary files differ
diff --git a/files_svgedit/images/paste.png b/files_svgedit/images/paste.png
new file mode 100644
index 000000000..ad983155c
--- /dev/null
+++ b/files_svgedit/images/paste.png
Binary files differ
diff --git a/files_svgedit/images/path.png b/files_svgedit/images/path.png
new file mode 100644
index 000000000..c75a8d712
--- /dev/null
+++ b/files_svgedit/images/path.png
Binary files differ
diff --git a/files_svgedit/images/polygon.png b/files_svgedit/images/polygon.png
new file mode 100644
index 000000000..bcd640c20
--- /dev/null
+++ b/files_svgedit/images/polygon.png
Binary files differ
diff --git a/files_svgedit/images/polygon.svg b/files_svgedit/images/polygon.svg
new file mode 100644
index 000000000..a7f955d8f
--- /dev/null
+++ b/files_svgedit/images/polygon.svg
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="draw-polygon.svg"
+ sodipodi:docbase="/home/andreas/projekt/tango/22"
+ inkscape:version="0.42"
+ id="svg8728"
+ height="22.000000px"
+ width="22.000000px"
+ inkscape:export-filename="/home/andreas/projekt/tango/22/draw-polygon.png"
+ inkscape:export-xdpi="90.000000"
+ inkscape:export-ydpi="90.000000">
+ <defs
+ id="defs3">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3941">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop3943" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop3945" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient6581">
+ <stop
+ style="stop-color:#eeeeec;stop-opacity:1;"
+ offset="0"
+ id="stop6583" />
+ <stop
+ style="stop-color:#e0e0de;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop6585" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient14920">
+ <stop
+ id="stop14922"
+ offset="0"
+ style="stop-color:#5a7aa4;stop-opacity:1;" />
+ <stop
+ id="stop14924"
+ offset="1.0000000"
+ style="stop-color:#1f2b3a;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient13390">
+ <stop
+ id="stop13392"
+ offset="0.0000000"
+ style="stop-color:#81a2cd;stop-opacity:1.0000000;" />
+ <stop
+ id="stop13394"
+ offset="1.0000000"
+ style="stop-color:#2a415f;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ id="linearGradient10325">
+ <stop
+ id="stop10327"
+ offset="0"
+ style="stop-color:#5a7aa4;stop-opacity:1;" />
+ <stop
+ id="stop10329"
+ offset="1.0000000"
+ style="stop-color:#455e7e;stop-opacity:1.0000000;" />
+ </linearGradient>
+ <linearGradient
+ gradientUnits="userSpaceOnUse"
+ y2="39.486301"
+ x2="37.746555"
+ y1="23.992306"
+ x1="23.598076"
+ gradientTransform="matrix(0.363308,0,0,0.363571,1.976073,1.180651)"
+ id="linearGradient13217"
+ xlink:href="#linearGradient6581"
+ inkscape:collect="always" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3941"
+ id="radialGradient3947"
+ cx="2.25"
+ cy="16"
+ fx="2.25"
+ fy="16"
+ r="16.875"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.333333,-5.774893e-15,10.66667)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6581"
+ id="linearGradient2398"
+ x1="10.769515"
+ y1="8.7196503"
+ x2="15.923767"
+ y2="15.039417"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6581"
+ id="linearGradient2403"
+ gradientUnits="userSpaceOnUse"
+ x1="10.769515"
+ y1="8.7196503"
+ x2="15.923767"
+ y2="15.039417"
+ gradientTransform="matrix(0.874941,0.000000,0.000000,0.868551,1.339139,1.349650)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient6581"
+ id="linearGradient2405"
+ gradientUnits="userSpaceOnUse"
+ x1="10.769515"
+ y1="8.7196503"
+ x2="15.923767"
+ y2="15.039417"
+ gradientTransform="matrix(1.001575,0.000000,0.000000,1.000000,-3.040037e-3,0.000000)" />
+ </defs>
+ <sodipodi:namedview
+ inkscape:window-y="25"
+ inkscape:window-x="0"
+ inkscape:window-height="949"
+ inkscape:window-width="1280"
+ inkscape:document-units="px"
+ inkscape:grid-bbox="true"
+ showgrid="false"
+ inkscape:current-layer="layer1"
+ inkscape:cy="10.249014"
+ inkscape:cx="16.435231"
+ inkscape:zoom="15.999999"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="0.08235294"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:showpageshadow="false"
+ stroke="#888a85" />
+ <metadata
+ id="metadata4">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title>Draw Rectangle</dc:title>
+ <dc:date>2005-10-10</dc:date>
+ <dc:creator>
+ <cc:Agent>
+ <dc:title>Andreas Nilsson</dc:title>
+ </cc:Agent>
+ </dc:creator>
+ <dc:subject>
+ <rdf:Bag>
+ <rdf:li>draw</rdf:li>
+ <rdf:li>rectangle</rdf:li>
+ <rdf:li>square</rdf:li>
+ </rdf:Bag>
+ </dc:subject>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/2.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/2.0/">
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/Distribution" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Notice" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/Attribution" />
+ <cc:permits
+ rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.60000000;color:#000000;fill:url(#radialGradient3947);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:block;overflow:visible"
+ id="path2193"
+ sodipodi:cx="2.2500000"
+ sodipodi:cy="16.000000"
+ sodipodi:rx="16.875000"
+ sodipodi:ry="5.6250000"
+ d="M 19.125000 16.000000 A 16.875000 5.6250000 0 1 1 -14.625000,16.000000 A 16.875000 5.6250000 0 1 1 19.125000 16.000000 z"
+ transform="matrix(0.503704,0.000000,0.000000,0.349014,9.366667,12.45257)" />
+ <path
+ style="fill:url(#linearGradient2405);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#888a85;stroke-width:1.0000002px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 10.376363,3.6237647 L 18.439333,9.5822222 L 15.644242,18.503298 L 5.3933717,18.503298 L 2.5694122,9.5814367 L 10.376363,3.6237647 z "
+ id="path1661"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:url(#linearGradient2403);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#fdfdfb;stroke-width:0.99999976px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
+ d="M 10.383801,4.6223366 L 17.428917,9.8682235 L 14.894231,17.502140 L 6.1335005,17.494329 L 3.6135882,9.9131875 L 10.383801,4.6223366 z "
+ id="path2401"
+ sodipodi:nodetypes="cccccc" />
+ </g>
+</svg>
diff --git a/files_svgedit/images/rect.png b/files_svgedit/images/rect.png
new file mode 100644
index 000000000..4fd15f837
--- /dev/null
+++ b/files_svgedit/images/rect.png
Binary files differ
diff --git a/files_svgedit/images/redo.png b/files_svgedit/images/redo.png
new file mode 100644
index 000000000..1169fc3b4
--- /dev/null
+++ b/files_svgedit/images/redo.png
Binary files differ
diff --git a/files_svgedit/images/reorient.png b/files_svgedit/images/reorient.png
new file mode 100644
index 000000000..9455a82c0
--- /dev/null
+++ b/files_svgedit/images/reorient.png
Binary files differ
diff --git a/files_svgedit/images/rotate.png b/files_svgedit/images/rotate.png
new file mode 100644
index 000000000..afa68c6fd
--- /dev/null
+++ b/files_svgedit/images/rotate.png
Binary files differ
diff --git a/files_svgedit/images/save.png b/files_svgedit/images/save.png
new file mode 100644
index 000000000..9c4c8d9da
--- /dev/null
+++ b/files_svgedit/images/save.png
Binary files differ
diff --git a/files_svgedit/images/select.png b/files_svgedit/images/select.png
new file mode 100644
index 000000000..1d741f16d
--- /dev/null
+++ b/files_svgedit/images/select.png
Binary files differ
diff --git a/files_svgedit/images/select_node.png b/files_svgedit/images/select_node.png
new file mode 100644
index 000000000..5ed97db95
--- /dev/null
+++ b/files_svgedit/images/select_node.png
Binary files differ
diff --git a/files_svgedit/images/sep.png b/files_svgedit/images/sep.png
new file mode 100644
index 000000000..6b9027779
--- /dev/null
+++ b/files_svgedit/images/sep.png
Binary files differ
diff --git a/files_svgedit/images/shape_group.png b/files_svgedit/images/shape_group.png
new file mode 100644
index 000000000..bb2ff516d
--- /dev/null
+++ b/files_svgedit/images/shape_group.png
Binary files differ
diff --git a/files_svgedit/images/shape_ungroup.png b/files_svgedit/images/shape_ungroup.png
new file mode 100644
index 000000000..3a6f369a5
--- /dev/null
+++ b/files_svgedit/images/shape_ungroup.png
Binary files differ
diff --git a/files_svgedit/images/source.png b/files_svgedit/images/source.png
new file mode 100644
index 000000000..c1f079449
--- /dev/null
+++ b/files_svgedit/images/source.png
Binary files differ
diff --git a/files_svgedit/images/spinbtn_updn_big.png b/files_svgedit/images/spinbtn_updn_big.png
new file mode 100644
index 000000000..3873736f8
--- /dev/null
+++ b/files_svgedit/images/spinbtn_updn_big.png
Binary files differ
diff --git a/files_svgedit/images/square.png b/files_svgedit/images/square.png
new file mode 100644
index 000000000..0ca71a67f
--- /dev/null
+++ b/files_svgedit/images/square.png
Binary files differ
diff --git a/files_svgedit/images/svg_edit_icons.svg b/files_svgedit/images/svg_edit_icons.svg
new file mode 100644
index 000000000..2255ba5ea
--- /dev/null
+++ b/files_svgedit/images/svg_edit_icons.svg
@@ -0,0 +1,975 @@
+<svg xmlns="http://www.w3.org/2000/svg">
+<!-- All images created with SVG-edit - http://svg-edit.googlecode.com/ -->
+
+<g id="logo">
+<svg viewBox="0 0 478 472" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient id="svg_5" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" stop-color="#ffffe0" stop-opacity="1"/>
+ <stop offset="1" stop-color="#edc39c" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="svg_10" x1="0.57031" y1="0.78125" x2="0.28906" y2="0.41406">
+ <stop offset="0" stop-color="#ff7f00" stop-opacity="1"/>
+ <stop offset="1" stop-color="#ffff00"/>
+ </linearGradient>
+ <linearGradient id="svg_18" x1="0.37891" y1="0.35938" x2="1" y2="1">
+ <stop offset="0" stop-color="#e0e0e0" stop-opacity="1"/>
+ <stop offset="1" stop-color="#666666" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <path d="m68.82031,270.04688l-22,-33l17,-35l34,2l25,15l7,-35l28,-16l25,12l100,102l21,23l-15,35l-36,9l20,49l-31,24l-49,-17l-1,31l-33,21l-31,-19l-13,-35l-30,21l-30,-9l-5,-35l16,-31l-32,-6l-15,-19l3,-36l47,-18z" id="svg_19" fill="#ffffff"/>
+ <path fill="#1a171a" fill-rule="nonzero" id="path2902" d="m158.96452,155.03685c-25.02071,0 -45.37077,20.35121 -45.37077,45.3775c0,0.72217 0.01794,1.4399 0.0471,2.15645c-0.49339,-0.53604 -0.99355,-1.06085 -1.50603,-1.58452c-8.56077,-8.55519 -19.95982,-13.28413 -32.07432,-13.28413c-12.12122,0 -23.52027,4.72334 -32.08778,13.29646c-17.69347,17.69464 -17.69347,46.4619 0,64.17445c0.51809,0.51697 1.0485,1.0126 1.59015,1.50601c-0.72891,-0.03586 -1.45782,-0.04822 -2.19234,-0.04822c-25.02071,0 -45.37189,20.35117 -45.37189,45.37747c0,25.01398 20.35119,45.36517 45.37189,45.36517c0.72891,0 1.45221,-0.01236 2.1744,-0.04828c-0.5293,0.48221 -1.05412,0.98801 -1.56547,1.49368c-17.70021,17.68906 -17.70021,46.48654 -0.00628,64.18677c8.57872,8.56747 19.96655,13.2785 32.08778,13.2785c12.1145,0 23.5012,-4.71103 32.07433,-13.2785c0.51247,-0.51694 1.01823,-1.04849 1.50603,-1.57895c-0.02915,0.71213 -0.04709,1.44669 -0.04709,2.15759c0,25.01511 20.35007,45.37747 45.37077,45.37747c25.01398,0 45.37079,-20.3624 45.37079,-45.37747c0,-0.7222 -0.01689,-1.44553 -0.05266,-2.18112c0.48105,0.52933 0.97562,1.04849 1.48697,1.56662c8.57982,8.57977 19.97775,13.2908 32.1057,13.2908c12.11003,0 23.51358,-4.71103 32.0687,-13.2785c17.68906,-17.70013 17.68906,-46.48538 0,-64.17441c-0.50577,-0.4946 -1.01141,-1.00034 -1.54306,-1.48248c0.69983,0.03592 1.42316,0.04828 2.16992,0.04828c25.01514,0 45.35284,-20.35123 45.35284,-45.36517c0,-25.02631 -20.33774,-45.37747 -45.35284,-45.37747c-0.74683,0 -1.47009,0.01236 -2.19345,0.04822c0.53152,-0.49341 1.06082,-0.98904 1.59128,-1.50601c8.55521,-8.55521 13.2785,-19.94186 13.2785,-32.07545c0,-12.12793 -4.72336,-23.52028 -13.30319,-32.0934c-8.55515,-8.56076 -19.95866,-13.2841 -32.0687,-13.2841c-12.12122,0 -23.52025,4.72334 -32.08777,13.2841c-0.51137,0.5181 -1.01822,1.04851 -1.5049,1.57895c0.03586,-0.72331 0.05266,-1.43991 0.05266,-2.16881c0,-25.02629 -20.35681,-45.3775 -45.37079,-45.3775m0,20.71901c13.61607,0 24.65851,11.03122 24.65851,24.65849c0,6.62749 -2.651,12.62137 -6.9101,17.04979l0,51.67419l36.53975,-36.53523c0.12001,-6.14418 2.48277,-12.24686 7.18146,-16.94667c4.81305,-4.81305 11.12094,-7.22409 17.44116,-7.22409c6.30228,0 12.61577,2.41104 17.43552,7.22409c9.62166,9.63287 9.62166,25.24948 0,34.87669c-4.69977,4.68634 -10.80803,7.04915 -16.95334,7.18147l-36.5341,36.53305l51.66742,0c4.42841,-4.25351 10.42905,-6.90451 17.08008,-6.90451c13.59137,0 24.62933,11.03799 24.62933,24.66525c0,13.61606 -11.03796,24.66519 -24.62933,24.66519c-6.65106,0 -12.65167,-2.66333 -17.08008,-6.91681l-51.64836,0l36.50273,36.50946c6.16995,0.14465 12.26587,2.50522 16.96568,7.20618c9.6216,9.61487 9.6216,25.23151 0,34.85757c-4.80856,4.81979 -11.13327,7.22974 -17.43556,7.22974c-6.32019,0 -12.63371,-2.40991 -17.44786,-7.22974c-4.68074,-4.68744 -7.04802,-10.79572 -7.17473,-16.94098l-36.53975,-36.53415l0,51.66742c4.25908,4.44635 6.9101,10.43466 6.9101,17.0621c0,13.62729 -11.04243,24.66415 -24.65851,24.66415c-13.62166,0 -24.65848,-11.0369 -24.65848,-24.66415c0,-6.62744 2.64539,-12.61575 6.90335,-17.0621l0,-51.66742l-36.53864,36.54648c-0.12672,6.14413 -2.48838,12.26477 -7.18147,16.94098c-4.81416,4.81873 -11.12206,7.22974 -17.42882,7.22974c-6.31461,0 -12.6225,-2.41101 -17.43555,-7.22974c-9.63284,-9.62833 -9.63284,-25.24277 0,-34.8699c4.68073,-4.67627 10.79012,-7.05026 16.94101,-7.18262l36.533,-36.53302l-51.66632,0c-4.44075,4.25348 -10.42902,6.91681 -17.06211,6.91681c-13.61606,0 -24.65288,-11.04913 -24.65288,-24.66519c0,-13.62726 11.03682,-24.66525 24.65288,-24.66525c6.63309,0 12.62136,2.651 17.06211,6.90451l51.68537,0l-36.55208,-36.54538c-6.14527,-0.12 -12.25354,-2.49403 -16.94775,-7.19377c-9.62611,-9.61493 -9.62611,-25.23715 0,-34.86441c4.81419,-4.81305 11.12769,-7.22406 17.44228,-7.22406c6.30676,0 12.61465,2.41101 17.42883,7.22406c4.69978,4.69307 7.06034,10.80246 7.18144,16.94777l36.5386,36.53299l0,-51.66074c-4.25795,-4.42841 -6.90334,-10.42229 -6.90334,-17.04979c0,-13.62726 11.03682,-24.65848 24.65848,-24.65848"/>
+ <path d="m188.82031,210.04688l16,-47l155,-148l107,100l-158,156.99999l-44,12l-76,-74z" id="svg_6" fill="url(#svg_10)" stroke="none"/>
+ <path d="m335.57031,40.29688c-11.5,39.75 55.5,115.25 109.25,98.75l21,-20.99999l-103,-101l-27.25,23.25z" id="svg_11" fill="url(#svg_18)" stroke="none"/>
+ <rect x="272.80404" y="20.76382" width="42.35197" height="232.66835" id="svg_13" fill="#ffffff" stroke="none" transform="rotate(45.9094, 293.98, 137.1)" opacity="0.4"/>
+ <rect x="282.80404" y="22.76382" width="14" height="232.66835" fill="#ffffff" stroke="none" transform="rotate(45.9094, 289.805, 139.1)" opacity="0.4" id="svg_14"/>
+ <ellipse cx="415.13312" cy="64.38066" id="svg_12" fill="#ea7598" stroke="none" rx="67.79251" ry="34.82026" transform="rotate(39.4735, 415.133, 64.379)"/>
+ <path d="m212.07031,166.04688c-8.5,47 36.25,103.75 99.25,96.75l-152.5,53.25l53.25,-150z" id="svg_4" fill="url(#svg_5)" stroke="none"/>
+ <path d="m181.32031,242.54688c0.5,20.5 26.75,45 46.75,48.5l-66.25,20l19.5,-68.5z" id="svg_3" fill="#27382f" stroke="none"/>
+ </g>
+ <g>
+ <title>Layer 2</title>
+ <path d="m152.82031,317.04688l51,-152l157,-153c40,-12.00001 118,48 105,105l-157,152.99999l-156,47z" id="svg_1" fill="none" stroke="#800000" stroke-width="17"/>
+ </g>
+</svg>
+</g>
+
+
+<g id="select">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <path stroke="#ffffff" fill="#000000" id="svg_13" d="m7.38168,2.46948l0.07502,17.03258l3.30083,-2.62617l2.62566,5.62751l4.20105,-2.62617l-3.30082,-4.80214l4.57614,-0.37517l-11.47787,-12.23044z"/>
+ </svg>
+</g>
+
+<g id="select_node">
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <circle stroke="#0000ff" fill="#00ffff" id="svg_44" r="3.87891" cy="5.3" cx="8.7" stroke-width="1.5"/>
+ <path d="m9.18161,5.6695l0.07763,15.16198l3.41588,-2.33775l2.71718,5.00947l4.34748,-2.33775l-3.41587,-4.27474l4.73565,-0.33397l-11.87794,-10.88723z" id="svg_13" fill="#000000" stroke="#ffffff"/>
+ </svg>
+</g>
+
+<g id="square">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs>
+ <linearGradient id="svg_2" x1="0.36328" y1="0.10156" x2="1" y2="1">
+ <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#3b7e9b" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <rect x="1.5" y="1.5" width="20" height="20" id="svg_1" fill="url(#svg_2)" stroke="#000000"/>
+ </svg>
+</g>
+
+<g id="rect">
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2">
+ <stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
+ <stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect transform="matrix(1, 0, 0, 1, 0, 0)" stroke="#000000" fill="url(#svg_2)" id="svg_1" height="12" width="20" y="5.5" x="1.5"/>
+ </svg>
+</g>
+
+<g id="fh_rect">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 52 52">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="0.10156" x1="0.36328" id="svg_2">
+
+ <stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
+ <stop stop-opacity="1" stop-color="#3b7e9b" offset="1"/>
+ </linearGradient>
+ <linearGradient y2="0.3945" x2="0.6132" y1="0.1093" x1="0.3046" id="svg_9">
+ <stop stop-opacity="1" stop-color="#f9d225" offset="0"/>
+ <stop stop-opacity="1" stop-color="#bf5f00" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect stroke="#000000" stroke-width="2" fill="url(#svg_2)" id="svg_1" height="50" width="50" y="0.75" x="1.25"/>
+ <path stroke-width="2" stroke="#000000" fill="url(#svg_9)" id="svg_2" d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5"/>
+ <path stroke-width="2" stroke="#000000" fill="#fce0a9" id="svg_10" d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z"/>
+ <path id="svg_11" stroke-width="2" stroke="#000000" fill="#000000" d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z"/>
+</svg>
+</g>
+
+
+<g id="circle">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54">
+ <defs>
+ <linearGradient y2="1.0" x2="1.0" y1="0.1875" x1="0.171875" id="svg_4">
+ <stop stop-opacity="1" stop-color="#ffffff" offset="0.0"/>
+ <stop stop-opacity="1" stop-color="#ff6666" offset="1.0"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <circle stroke-opacity="1" fill-opacity="1" stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" r="23" cy="27" cx="27"/>
+ </g>
+</svg>
+</g>
+
+<g id="ellipse">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 54 54">
+ <defs>
+ <linearGradient y2="1.0" x2="1.0" y1="0.1875" x1="0.171875" id="svg_4">
+ <stop stop-opacity="1" stop-color="#ffffff" offset="0.0"/>
+ <stop stop-opacity="1" stop-color="#ff6666" offset="1.0"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <ellipse stroke-opacity="1" fill-opacity="1" stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" rx="23" ry="15" cy="27" cx="27"/>
+ </g>
+</svg>
+</g>
+
+<g id="fh_ellipse">
+<svg viewBox="0 0 52 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945">
+ <stop offset="0" stop-color="#f9d225" stop-opacity="1"/>
+ <stop offset="1" stop-color="#bf5f00" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="svg_4" x1="0.17188" y1="0.1875" x2="1" y2="1">
+ <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#ff6666" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <ellipse stroke-width="2" stroke="#000000" fill="url(#svg_4)" id="svg_1" rx="23" ry="12" cy="37" cx="27"/>
+ <path d="m31.5,0l-8.75,20.25l0.75,24l16.5,-16.5l6,-12.5" id="svg_2" fill="url(#svg_9)" stroke="#000000" stroke-width="2"/>
+ <path d="m39.5,28.5c-2,-9.25 -10.25,-11.75 -17,-7.4375l0.4843,24.4414z" id="svg_10" fill="#fce0a9" stroke="#000000" stroke-width="2"/>
+ <path d="m26.9318,41.1745c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905l0.1087,6.2126z" fill="#000000" stroke="#000000" stroke-width="2" id="svg_11"/>
+ </svg>
+</g>
+
+<g id="pencil">
+<svg viewBox="0 0 48 52" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_9" x1="0.3046" y1="0.1093" x2="0.6132" y2="0.3945">
+ <stop offset="0.0" stop-color="#f9d225" stop-opacity="1"/>
+ <stop offset="1.0" stop-color="#bf5f00" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <path d="M31.5,0 l-8.75,20.25 l0.75,24 l16.5,-16.5 l6,-12.5" id="svg_2" fill="url(#svg_9)" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/>
+ <path d="M39.5,28.5 c-2,-9.25 -10.25,-11.75 -17,-7.4375 l0.4843,24.4414z" id="svg_10" fill="#fce0a9" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/>
+ <path d="M26.9318,41.1745 c-0.4491,-2.3511 -2.3021,-2.9866 -3.8181,-1.8905 l0.1087,6.2126z" fill="#000000" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1" id="svg_11"/>
+ <path d="M2.3132,4.6197 c12.4998,-1.6891 10.4729,7.0945 0,21.6215 c22.9729,-4.0539 12.1620,5.4053 12.1620,13.1756 c-0.3377,4.0539 8.7836,21.9594 26.0135,-1.3513" id="svg_12" fill="none" stroke="#000000" stroke-width="2" fill-opacity="1" stroke-opacity="1"/>
+</svg>
+</g>
+
+<g id="pen">
+ <svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_16" x1="0.46484" y1="0.15625" x2="0.9375" y2="0.39453">
+ <stop offset="0" stop-color="#f2feff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#14609b" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="svg_19" x1="0.18359" y1="0.26172" x2="0.77734" y2="0.56641">
+ <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#fce564" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <line x1="0.99844" y1="1.49067" x2="12.97691" y2="21.14149" id="svg_5" stroke="#000000" fill="none"/>
+ <path d="m14.05272,13.68732l-1.46451,7.52632l4.03769,-6.32571" id="svg_6" fill="#a0a0a0" stroke="#000000"/>
+ <path d="m13.61215,10.26563c-0.38567,1.05257 -0.60723,2.40261 -0.50403,3.125l4.33468,1.81452c0.46153,-0.30769 1.6129,-1.71371 1.6129,-2.52016" id="svg_7" fill="url(#svg_19)" stroke="#000000"/>
+ <path d="m16.61335,1.00028l-3.67325,8.60247l7.10285,3.47318l3.17783,-7.20549" id="svg_8" fill="url(#svg_16)" stroke="#000000"/>
+ </svg>
+</g>
+
+<g id="text">
+ <svg viewBox="0 0 158 128" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <text x="58" y="120" id="svg_1" fill="#000000" stroke="none" font-size="120pt" font-family="sans-serif" text-anchor="middle" fill-opacity="1" stroke-opacity="1" font-weight="bold">A</text>
+ <line x1="136" y1="7" x2="136" y2="121" id="svg_2" stroke="#000000" fill="none" fill-opacity="1" stroke-opacity="1" stroke-width="5"/>
+ <line x1="120" y1="4" x2="152" y2="4" id="svg_3" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1"/>
+ <line x1="120" y1="124" x2="152" y2="124" stroke="#000000" stroke-width="5" fill="none" fill-opacity="1" stroke-opacity="1" id="svg_4"/>
+ </svg>
+</g>
+
+
+<g id="path">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="0.28125" x1="0.33594" id="svg_4">
+ <stop stop-opacity="1" stop-color="#ffffff" offset="0"/>
+ <stop stop-opacity="1" stop-color="#33a533" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path stroke-dasharray="null" stroke-width="4" stroke="#000000" fill="url(#svg_4)" id="svg_1" d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z"/>
+ </svg>
+</g>
+
+<g id="add_subpath">
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 124 124" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_4" x1="0.33594" y1="0.28125" x2="1" y2="1">
+ <stop offset="0" stop-color="#ffffff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#33a533" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <path d="m6,103l55,-87c85,33.64 -26,37.12 55,87l-110,0z" id="svg_1" fill="url(#svg_4)" stroke="#000000" stroke-width="4" stroke-dasharray="null"/>
+ <g id="svg_7">
+ <circle stroke-dasharray="null" stroke-width="5" stroke="#000000" fill="#ffffff" id="svg_6" r="22.63281" cy="88.5" cx="45.5"/>
+ <line stroke-dasharray="null" stroke-width="7" stroke="#000000" id="svg_2" y2="104.03768" x2="45.5" y1="72.96232" x1="45.5"/>
+ <line stroke-dasharray="null" stroke-width="7" stroke="#000000" id="svg_3" y2="88.5" x2="61.03768" y1="88.5" x1="29.96232"/>
+ </g>
+ </g>
+ </svg>
+</g>
+
+<g id="close_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+ <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m121.5,40l-84,106l27,115l166,2l29,-111"/>
+ <line x1="240" y1="136" x2="169.5" y2="74" stroke="#A00" stroke-width="25" fill="none"/>
+ <path stroke="none" fill ="#A00" d="m158,65l31,74l-3,-50l51,-3z"/>
+ <g stroke-width="15" stroke="#00f" fill="#0ff">
+ <circle r="30" cy="41" cx="123"/>
+ <circle r="30" cy="146" cx="40"/>
+ <circle r="30" cy="260" cx="69"/>
+ <circle r="30" cy="260" cx="228"/>
+ <circle r="30" cy="148" cx="260"/>
+ </g>
+ </g>
+</svg>
+</g>
+
+<g id="open_path">
+<svg viewBox="0 0 300 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g>
+ <path stroke="#000" stroke-width="15" fill="#ffc8c8" d="m123.5,38l-84,106l27,115l166,2l29,-111"/>
+ <line x1="276.5" y1="153" x2="108.5" y2="24" stroke="#000" stroke-width="10" fill="none"/>
+ <g stroke-width="15" stroke="#00f" fill="#0ff">
+ <circle r="30" cy="41" cx="123"/>
+ <circle r="30" cy="146" cx="40"/>
+ <circle r="30" cy="260" cx="69"/>
+ <circle r="30" cy="260" cx="228"/>
+ <circle r="30" cy="148" cx="260"/>
+ </g>
+ <g stroke="#A00" stroke-width="15" fill="none">
+ <line x1="168" y1="24" x2="210" y2="150"/>
+ <line x1="210" y1="24" x2="168" y2="150"/>
+ </g>
+ </g>
+</svg>
+</g>
+
+
+<g id="image">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_25">
+ <stop stop-opacity="1" stop-color="#10284c" offset="0"/>
+ <stop stop-opacity="1" stop-color="#5374ad" offset="1"/>
+ </linearGradient>
+ <linearGradient y2="0.75781" x2="0.99609" y1="0" x1="1" id="svg_23">
+ <stop stop-opacity="1" stop-color="#162e84" offset="0"/>
+ <stop stop-opacity="1" stop-color="#97c4ef" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect x="1" y="3.83333" width="22" height="17" id="svg_18" fill="#202020" stroke="none"/>
+ <rect stroke-width="1.2" stroke="#ffffff" fill="#232947" id="svg_15" height="14" width="19" y="5.33333" x="2.5"/>
+ <rect fill="url(#svg_23)" id="svg_20" height="7.02244" width="15.96424" y="6.7266" x="4"/>
+ <rect fill="url(#svg_25)" id="svg_24" height="4.02393" width="15.96303" y="13.77454" x="4"/>
+ <circle fill="#ffffad" id="svg_26" r="1.83333" cy="9.82002" cx="7.13254"/>
+ <path d="m14.5696,13.77458l0.70243,-4.85313l-3.12899,4.85313l2.42656,0z" id="svg_14" fill="#404040" stroke="none"/>
+ <path d="m15.27203,8.98531c2.74584,0.06386 2.42657,4.21456 -0.63857,4.85313c0.70243,-1.27714 1.66028,-3.63985 0.63857,-4.85313z" id="svg_17" fill="#404040" stroke="none"/>
+</svg>
+</g>
+
+<g id="zoom">
+ <svg viewBox="0 0 150 150" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_30" x1="0" y1="0" x2="1" y2="0">
+ <stop offset="0" stop-color="#d3d3d3" stop-opacity="1"/>
+ <stop offset="1" stop-color="#424242" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <path d="m107.14774,101.03477l-0.64774,43.96523c5.00857,4.72089 14.00811,5.27188 19,0l-0.31667,-44.16l-9.61514,-19.84l-8.42046,20.03477z" id="svg_29" fill="url(#svg_30)" stroke="#202020" stroke-width="2" transform="rotate(-45, 116, 114)"/>
+ <circle cx="58" cy="58" r="51" id="svg_22" fill="#c0c0c0" stroke="#202020" stroke-width="5"/>
+ <circle cx="58" cy="58" r="43" id="svg_27" fill="#aaccff" stroke="none"/>
+ <path d="m15.68604,61.46511c38.13954,17.67442 48.13954,15.34883 85.11628,-0.46511c1.39536,18.60465 -19.30231,41.86047 -42.7907,40.93023c-21.6279,-0.93023 -42.7907,-21.86046 -42.32558,-40.46511z" id="svg_28" fill="#8cbaff" stroke="none"/>
+ </svg>
+</g>
+
+<g id="arrow_right">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 25 50">
+ <path stroke="#000000" fill="#000000" d="m0,0l0,50l25,-25l-25,-25z"/>
+ </svg>
+</g>
+
+<g id="arrow_right_big">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 50">
+ <path stroke="#000000" fill="#000000" d="m0,0l0,50l25,-25l-25,-25z"/>
+ </svg>
+</g>
+
+<g id="arrow_down">
+ <svg viewBox="0 0 50 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <path transform="rotate(90, 26, 13)" d="m14,-12l0,50l25,-25l-25,-25z" fill="#000000" stroke="#000000"/>
+ </svg>
+</g>
+
+<g id="fill">
+<svg width="32" height="33" xmlns="http://www.w3.org/2000/svg">
+ <g id="svg_5">
+ <path id="svg_4" d="m17.49167,10.97621c6.9875,-0.325 12.1875,2.70833 12.13333,7.36667l-0.325,10.075c-0.75833,4.0625 -2.275,3.0875 -3.03333,0.10833l0.21667,-9.64166c-0.43333,-0.975 -1.08333,-1.625 -1.95,-1.51667" stroke-linejoin="round" stroke="#606060" fill="#c0c0c0"/>
+ <path id="svg_1" d="m2.00055,17.1309l10.72445,-10.72445l12.67445,12.13279l-3.52056,0.05389l-9.15389,9.26223l-10.72445,-10.72445z" stroke-linejoin="round" stroke="#000000" fill="#c0c0c0"/>
+ <path id="svg_3" d="m14.35,13.57621c-0.1625,-3.95417 0.86667,-11.7 -1.84167,-11.59167c-2.70833,0.10833 -2.6,2.05833 -2.16667,6.93333" stroke-linejoin="round" stroke="#000000" fill="none"/>
+ <circle id="svg_2" r="1.60938" cy="15.20121" cx="14.45833" stroke-linejoin="round" stroke="#000000" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="stroke">
+<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
+ <rect fill="none" stroke="#707070" stroke-width="10" x="8.625" y="8.625" width="32.75" height="32.75" id="svg_1"/>
+</svg>
+</g>
+
+<g id="opacity">
+<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient y2="0.1" x2="0.9" y1="0.9" x1="0.1" id="svg_7">
+ <stop stop-color="#000000" offset="0"/>
+ <stop stop-opacity="0" stop-color="#000000" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect id="svg_4" height="50" width="50" y="0" x="0" fill="#ffffff"/>
+ <rect id="svg_1" height="25" width="25" y="0" x="0" fill="#a0a0a0"/>
+ <rect id="svg_2" height="25" width="25" y="25" x="25" fill="#a0a0a0"/>
+ <rect id="svg_3" height="50" width="50" y="0" x="0" stroke-width="2" stroke="url(#svg_7)" fill="url(#svg_7)"/>
+ </svg>
+</g>
+
+<g id="new_image">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/>
+ <circle stroke="none" fill="url(#svg_9)" id="svg_65" r="6.300781" cy="7.529969" cx="17.761984"/>
+ <defs>
+ <radialGradient id="svg_9" cx="0.5" cy="0.5" r="0.5">
+ <stop offset="0.1" stop-color="#ffe500" stop-opacity="1"/>
+ <stop offset="1" stop-color="#ffff00" stop-opacity="0"/>
+ </radialGradient>
+ </defs>
+</svg>
+</g>
+
+<g id="save">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs>
+ <linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_41">
+ <stop stop-opacity="1" stop-color="#727272" offset="0"/>
+ <stop stop-opacity="1" stop-color="#d6d6d6" offset="1"/>
+ </linearGradient>
+ <linearGradient y2="0.875" x2="0.21484" y1="0.00391" x1="0.04297" id="svg_46">
+ <stop stop-opacity="1" stop-color="#81bbf4" offset="0"/>
+ <stop stop-opacity="1" stop-color="#376eb7" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path stroke="#202020" fill="#e0e0e0" id="svg_21" d="m1.51669,22.3458l21.13245,-0.10111l0,-6.06673l-2.62892,-9.80789l-16.27907,0.10111l-2.32558,9.20121l0.10111,6.67341z"/>
+ <rect stroke="#efefef" fill="url(#svg_41)" id="svg_32" height="4.75108" width="19.21031" y="16.58227" x="2.42667"/>
+ <path stroke="#ffffff" fill="#c0c0c0" id="svg_42" d="m4.55005,11.12235l0.70779,-2.83114l13.04348,0l0.70779,3.13448c-0.70779,2.52781 -4.04479,3.84227 -7.17897,3.84227c-2.72977,0 -6.37007,-1.41557 -7.28008,-4.1456z"/>
+ <path stroke="#285582" fill="url(#svg_46)" id="svg_45" d="m7.14286,9.74903l5.21236,5.79151l5.50193,-5.88803l-2.50965,-0.09653l0,-2.79923c0,-2.3166 -2.3166,-5.59846 -6.56371,-5.59846c-4.05405,0 -6.27413,3.37838 -6.56371,6.75676c0.48263,-1.5444 2.7027,-4.53668 4.44015,-4.44015c2.12355,-0.09653 2.79923,1.64093 2.79923,3.37838l0.09653,2.79923l-2.41313,0.09653z"/>
+ </svg>
+</g>
+
+<g id="export">
+ <svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient id="svg_5" x1="0.77734" y1="0.51172" x2="0.09375" y2="0.53516">
+ <stop offset="0" stop-color="#81bbf4"/>
+ <stop offset="1" stop-color="#376eb7"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <rect x="7.22599" y="1.3603" width="15.76465" height="21.51735" id="svg_55" fill="#eaeaea" stroke="#606060"/>
+ <circle fill="#31abed" stroke-width="0.5" cx="17.4206" cy="11.1278" r="4.69727" id="svg_3"/>
+ <path fill="#ffcc00" stroke-width="0.5" d="m9.67673,20.24302l7.38701,-6.80778l2.91746,6.71323" id="svg_4"/>
+ <rect fill="#ff5555" stroke-width="0.5" x="9.5385" y="2.94914" width="5.74652" height="5.74652" id="svg_2"/>
+ <path d="m6.13727,17.94236l5.77328,-4.91041l-5.86949,-5.1832l-0.09622,2.36426l-4.64805,-0.06751l-0.04665,5.54694l4.79093,-0.02342l0.09623,2.27334z" id="svg_45" fill="url(#svg_5)" stroke="#285582"/>
+ </g>
+ </svg>
+</g>
+
+<g id="open">
+<svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient y2="0.91406" x2="0.65234" y1="0.14063" x1="0.42578" id="svg_76">
+ <stop stop-opacity="1" stop-color="#81bbf4" offset="0"/>
+ <stop stop-opacity="1" stop-color="#376eb7" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect x="1.65" y="3.75" width="9.8" height="16.72712" id="svg_98" fill="#c0c0c0" stroke="#606060"/>
+ <rect stroke="none" fill="#a0a0a0" id="svg_88" height="14.17459" width="6.39585" y="4.9758" x="2.89542"/>
+ <path d="m18.62576,4.54365l0,6.91443l-9.9395,0l-0.08643,-10.11236l6.828,0l3.19792,3.19793z" id="svg_99" fill="#e0e0e0" stroke="#404040"/>
+ <path d="m2.95,20.53644l1.65,-12.03644l16.2,0l-1.5,12l-16.35,0.03643z" id="svg_97" fill="url(#svg_76)" stroke="#285582"/>
+ <line fill="none" stroke="#606060" id="svg_89" y2="4.28436" x2="13.95851" y1="4.28436" x1="10.32844"/>
+ <line fill="none" stroke="#606060" id="svg_91" y2="6.53155" x2="14.82282" y1="6.53155" x1="10.32844"/>
+ <path stroke="none" fill="#ffffff" id="svg_100" d="m15.25895,1.95069l-0.00401,2.85225l2.89558,0.00004l-2.89157,-2.85229z"/>
+</svg>
+</g>
+
+<g id="import">
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient y2="0.875" x2="0.21484" y1="0.00391" x1="0.04297" id="svg_46_import">
+ <stop stop-opacity="1" stop-color="#81f4bb" offset="0"/>
+ <stop stop-opacity="1" stop-color="#37b76e" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect x="2.42792" y="1.6692" width="18" height="21" id="svg_55" fill="#eaeaea" stroke="#606060"/>
+ <path stroke="#285582" fill="url(#svg_46_import)" id="svg_45" d="m7.14286,12.74903l5.21236,5.79151l5.50193,-5.88803l-2.50965,-0.09653l0,-2.79923c0,-2.3166 -2.3166,-5.59846 -6.56371,-5.59846c-4.05405,0 -6.27413,3.37838 -6.56371,6.75676c0.48263,-1.5444 2.7027,-4.53668 4.44015,-4.44015c2.12355,-0.09653 2.79923,1.64093 2.79923,3.37838l0.09653,2.79923l-2.41313,0.09653z"/>
+</svg>
+</g>
+
+<g id="docprops">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="0.5" x1="1" id="svg_53">
+ <stop stop-opacity="1" stop-color="#606060" offset="0"/>
+ <stop stop-opacity="0" stop-color="#5e5e5e" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect stroke="#606060" fill="#eaeaea" id="svg_55" height="21" width="18" y="1.6692" x="2.42792"/>
+ <line fill="none" stroke="#a0a0a0" id="svg_56" y2="4.37757" x2="14.89023" y1="4.37757" x1="6.696"/>
+ <line fill="none" stroke="#a0a0a0" id="svg_57" y2="7.10804" x2="12.92026" y1="7.10804" x1="6.6948"/>
+ <line fill="none" stroke="#a0a0a0" id="svg_58" y2="9.84241" x2="15.64716" y1="9.84241" x1="6.6942"/>
+ <line fill="none" stroke="#a0a0a0" id="svg_59" y2="12.36585" x2="13.21805" y1="12.36585" x1="6.69691"/>
+ <line fill="none" stroke="#a0a0a0" id="svg_60" y2="15.06507" x2="14.43591" y1="15.06507" x1="6.69691"/>
+ <line fill="none" stroke="#a0a0a0" id="svg_61" y2="17.84241" x2="13.36979" y1="17.84241" x1="6.69691"/>
+ <g id="svg_54">
+ <path transform="rotate(-45, 12.5448, 11.7085)" stroke="none" fill="#606060" id="svg_31" d="m11.24329,8.73944l0,2.79974l2.53499,0.07777l0,-2.95528c1.78134,0.07777 2.26093,1.39987 2.12391,2.95528c-0.06851,1.63318 -1.30175,3.49967 -3.49418,3.26636c-2.19242,-0.31108 -2.87755,-1.39987 -3.15161,-2.72197c-0.27406,-1.39987 0.41108,-3.34413 1.98689,-3.4219z"/>
+ <rect opacity="0.95" transform="rotate(-45, 16.2485, 15.1732)" stroke="none" fill="url(#svg_53)" id="svg_50" height="4.85445" width="2.57974" y="12.746" x="15.04047"/>
+ </g>
+ </svg>
+</g>
+
+<g id="source">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 55 52">
+ <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke="none" fill="#019191" id="svg_40" y="15" x="28.23" font-weight="bold">s</text>
+ <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke="none" fill="#019191" id="svg_47" y="30" x="28.23" font-weight="bold">v</text>
+ <text xml:space="preserve" text-anchor="middle" font-family="monospace" font-size="24" stroke="none" fill="#019191" id="svg_48" y="44" x="28.23" font-weight="bold">g</text>
+ <line stroke-width="3" fill="none" stroke="#aa0000" id="svg_51" y2="43" x2="16" y1="25" x1="5"/>
+ <line id="svg_62" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="16" y1="26" x1="5"/>
+ <line id="svg_63" stroke-width="3" fill="none" stroke="#aa0000" y2="43" x2="39" y1="25" x1="50"/>
+ <line id="svg_64" stroke-width="3" fill="none" stroke="#aa0000" y2="8" x2="39" y1="26" x1="51"/>
+ </svg>
+</g>
+
+<g id="wireframe">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <circle stroke="#000000" fill="none" id="svg_49" r="8" cy="9.5" cx="9.5"/>
+ <rect stroke="#000000" fill="none" id="svg_52" height="14" width="14" y="8.5" x="8.5"/>
+ </svg>
+</g>
+
+<g id="undo">
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_66" x1="0.04297" y1="0.00391" x2="0.21484" y2="0.875">
+ <stop offset="0" stop-color="#f7f963" stop-opacity="1"/>
+ <stop offset="1" stop-color="#d3c310" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <path transform="rotate(-90, 10.3017, 11.5526)" d="m6.70188,10.72562l6.55493,-7.13388l6.65817,7.24912l-3.79441,0.03193l0,2.72259c-0.04257,2.74017 -2.76516,5.83068 -7.81235,6.02135c-5.18575,0 -7.1226,-3.75464 -7.49302,-7.41944c0.61736,1.6754 3.14913,3.78397 5.3716,3.67918c2.71635,0.1048 4.41501,-0.61714 4.41501,-2.50184l0,-2.64901l-3.89995,0z" id="svg_45" fill="url(#svg_66)" stroke="#b7a800"/>
+ </svg>
+</g>
+
+<g id="redo">
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="0" x1="1" id="svg_71">
+ <stop stop-opacity="1" stop-color="#98fc46" offset="0"/>
+ <stop stop-opacity="1" stop-color="#56aa25" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path transform="rotate(-90, 12.7299, 11.5526)" d="m9.11294,12.43144l6.54089,6.84566l6.6439,-6.95624l-3.78628,-0.03064l0,-2.61259c-0.04248,-2.62946 -2.75924,-5.5951 -7.79561,-5.77807c-5.17464,0 -7.10734,3.60294 -7.47697,7.11967c0.61604,-1.60771 3.14238,-3.63109 5.36009,-3.53053c2.71053,-0.10056 4.40555,0.59221 4.40555,2.40076l0,2.54198l-3.89159,0z" id="svg_45" fill="url(#svg_71)" stroke="#44aa00"/>
+ </svg>
+</g>
+
+<g id="clone">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="0" x1="0" id="svg_36">
+ <stop stop-opacity="1" stop-color="#f9f3de" offset="0"/>
+ <stop stop-opacity="1" stop-color="#ccbd8f" offset="1"/>
+ </linearGradient>
+ <linearGradient y2="0.80078" x2="0.42578" y1="0" x1="0" id="svg_69">
+ <stop stop-opacity="1" stop-color="#f9f3de" offset="0"/>
+ <stop stop-opacity="1" stop-color="#af995b" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path stroke="#8f5902" fill="url(#svg_69)" id="svg_34" d="m2.11676,16.32061l-0.13787,-5.05515l1.93015,-2.02206l10.11029,0l2.02206,2.29779l0,4.77941l-13.92463,0z"/>
+ <rect x="7.85379" y="6.30027" width="2.2932" height="4.3407" id="svg_38" fill="url(#svg_36)" stroke="#8f5902" rx="1" ry="1"/>
+ <circle stroke="#8f5902" fill="url(#svg_36)" id="svg_35" r="2.96392" cy="4.48149" cx="9.11757"/>
+ <line x1="2.44838" y1="12.03512" x2="15.5524" y2="12.03512" id="svg_39" stroke="#f9f3de" fill="none"/>
+ <path d="m6.72427,12.55859l4.74203,0l-2.30831,2.07258l-2.43372,-2.07258z" id="svg_43" fill="#000000" stroke="none"/>
+</svg>
+</g>
+
+<g id="delete">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <rect ry="3" rx="3" stroke="#800000" fill="#aa0000" id="svg_37" height="20.29514" width="21.17486" y="1.70304" x="1.42011"/>
+ <rect ry="3" rx="3" stroke="#ff5555" fill="#aa0000" id="svg_67" height="18.63022" width="19.61118" y="2.53597" x="2.20258"/>
+ <line stroke-width="2" fill="none" stroke="#ffffff" id="svg_68" y2="16.85127" x2="17.00646" y1="6.85127" x1="7.00646"/>
+ <line stroke-width="2" id="svg_70" fill="none" stroke="#ffffff" y2="16.85127" x2="7.00646" y1="6.85127" x1="17.00646"/>
+ </svg>
+</g>
+
+<g id="go_up">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
+ <defs>
+ <linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_74">
+ <stop stop-opacity="1" stop-color="#afe853" offset="0"/>
+ <stop stop-opacity="1" stop-color="#52a310" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path stroke="#008000" fill="url(#svg_74)" id="svg_33" d="m5.38492,16.77043l7.07692,0l0,-5.23077l4.15385,0l-7.69231,-10.15385l-7.69231,10.15385l4.15385,0l0,5.23077z"/>
+ </svg>
+</g>
+
+<g id="go_down">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18">
+ <defs>
+ <linearGradient y2="0" x2="0.7" y1="0" x1="0" id="svg_75">
+ <stop stop-opacity="1" stop-color="#afe853" offset="0"/>
+ <stop stop-opacity="1" stop-color="#52a310" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path stroke="#008000" fill="url(#svg_75)" id="svg_33" d="m5.3015,1.69202l6.93483,0l0,5.07323l4.07045,0l-7.53786,9.84803l-7.53786,-9.84803l4.07045,0l0,-5.07323z"/>
+ </svg>
+</g>
+
+<g id="move_bottom">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 23 23">
+ <defs>
+ <linearGradient y2="0" x2="1" y1="0" x1="0" id="svg_80">
+ <stop stop-opacity="1" stop-color="#bc7f05" offset="0"/>
+ <stop stop-opacity="1" stop-color="#fcfc9f" offset="1"/>
+ </linearGradient>
+ </defs>
+ <line stroke-width="2" fill="none" stroke="#000000" id="svg_72" y2="2.5" x2="22" y1="2.5" x1="10.5"/>
+ <line id="svg_73" stroke-width="2" fill="none" stroke="#000000" y2="6.5" x2="21.99844" y1="6.5" x1="10.49844"/>
+ <line id="svg_74" stroke-width="2" fill="none" stroke="#000000" y2="10.5" x2="21.99922" y1="10.5" x1="10.49922"/>
+ <line id="svg_75" stroke-width="2" fill="none" stroke="#000000" y2="14.5" x2="21.99922" y1="14.5" x1="10.49922"/>
+ <rect stroke="#000000" fill="url(#svg_80)" id="svg_77" height="2.2" width="20" y="17.65" x="1.65"/>
+ <path stroke="none" fill="#000000" id="svg_81" d="m4.25,1.55l2.35,0l0,11.05l2,0l-3.175,3.45l-3.175,-3.45l2,0l0,-11.05z"/>
+ </svg>
+</g>
+
+<g id="move_top">
+<svg viewBox="0 0 23 23" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_86" x1="0" y1="0" x2="1" y2="0">
+ <stop offset="0" stop-color="#9fdcf4" stop-opacity="1"/>
+ <stop offset="1" stop-color="#617e96" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <line x1="1.3" y1="8.19922" x2="12.8" y2="8.19922" id="svg_72" stroke="#000000" fill="none" stroke-width="2"/>
+ <line x1="1.29844" y1="12.19922" x2="12.79844" y2="12.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_73"/>
+ <line x1="1.29922" y1="16.19922" x2="12.79922" y2="16.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_74"/>
+ <line x1="1.29922" y1="20.19922" x2="12.79922" y2="20.19922" stroke="#000000" fill="none" stroke-width="2" id="svg_75"/>
+ <rect x="1.55" y="1.85" width="20" height="3.2" id="svg_77" fill="url(#svg_86)" stroke="#000000"/>
+ <path d="m16.83475,21.14603l2.33207,0l0,-11.04578l1.98474,0l-3.15077,-3.44869l-3.15077,3.44869l1.98474,0l0,11.04578z" id="svg_81" fill="#000000" stroke="none"/>
+ </svg>
+</g>
+
+<g id="to_path">
+<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient y2="0.46875" x2="0.42969" y1="0.10156" x1="0.10547" id="svg_105">
+ <stop stop-color="#ff0000" offset="0"/>
+ <stop stop-opacity="0" stop-color="#ff0000" offset="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <circle cx="21" cy="21.3125" r="18.44531" id="svg_120" fill="url(#svg_105)" stroke="#000000"/>
+ <path fill="none" stroke="#000000" d="m2.875,21.3125c-0.375,-9.25 7.75,-18.875 17.75,-18" id="svg_115"/>
+ <line x1="25.375" y1="3.0625" x2="8.5" y2="3.0625" id="svg_116" stroke="#808080" fill="none"/>
+ <line x1="2.625" y1="24.75" x2="2.625" y2="9.8125" id="svg_117" stroke="#808080" fill="none"/>
+ <circle cx="8.5" cy="2.9375" r="1.95313" fill="#00ffff" stroke="#0000ff" stroke-width="0.5" id="svg_118"/>
+ <circle cx="2.625" cy="9.8125" r="1.95313" fill="#00ffff" stroke="#0000ff" stroke-width="0.5" id="svg_119"/>
+ <circle cx="20.875" cy="3.1875" r="2.5" id="svg_112" fill="#00ffff" stroke="#0000ff"/>
+ <circle cx="2.875" cy="21.0625" r="2.5" fill="#00ffff" stroke="#0000ff" id="svg_114"/>
+ </g>
+</svg>
+</g>
+
+<g id="link_controls">
+<svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="2" id="svg_102" d="m9.875,23c-2,-4.25 -1.6875,-7.375 1.6875,-10.5c3.375,-3.125 7.5625,-2.75 11.0625,2" stroke="#8dd35f" fill="none"/>
+ <line fill="none" stroke="#606060" id="svg_109" y2="4" x2="19" y1="19" x1="4"/>
+ <circle stroke="#0000ff" fill="#00ffff" id="svg_111" r="2.17578" cy="11.5" cx="11.5"/>
+ <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19"/>
+ <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19" cx="4"/>
+</svg>
+</g>
+
+<g id="reorient">
+<svg viewBox="0 0 24 24" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient y2="1" x2="1" y1="1" x1="0" id="svg_113">
+ <stop stop-opacity="0" stop-color="#0000ff" offset="0"/>
+ <stop stop-opacity="1" stop-color="#507ece" offset="1"/>
+ </linearGradient>
+ </defs>
+ <rect stroke-dasharray="2,2" stroke="#0000ff" fill="none" id="svg_108" height="19.125" width="18.625" y="2.625" x="2.875"/>
+ <rect transform="rotate(45, 12.2344, 12.1719)" stroke="#000000" fill="url(#svg_113)" id="svg_107" height="6.125" width="16" y="9.10848" x="4.23267"/>
+</svg>
+</g>
+
+<g id="group">
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_90" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" stop-color="#ccddff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#789fed" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="svg_92" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" stop-color="#70a1e5" stop-opacity="1"/>
+ <stop offset="1" stop-color="#4b6baf" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <rect x="13.5" y="0.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_79"/>
+ <rect x="13.5" y="13.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_82"/>
+ <rect x="0.5" y="13.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_83"/>
+ <rect x="2.5" y="2.5" width="8" height="7" fill="#a0a0a0" stroke="#555555" id="svg_85"/>
+ <rect x="2.5" y="2.5" width="8" height="7" fill="url(#svg_90)" stroke="url(#svg_92)" id="svg_87"/>
+ <rect x="5.5" y="6.5" width="8" height="7" id="svg_84" fill="#7399d6" stroke="url(#svg_92)"/>
+ <rect x="0.5" y="0.5" width="2" height="2" id="svg_78" fill="#a0a0a0" stroke="#555555"/>
+ </svg>
+</g>
+
+<g id="ungroup">
+<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <defs>
+ <linearGradient id="svg_90" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" stop-color="#ccddff" stop-opacity="1"/>
+ <stop offset="1" stop-color="#789fed" stop-opacity="1"/>
+ </linearGradient>
+ <linearGradient id="svg_92" x1="0" y1="0" x2="1" y2="1">
+ <stop offset="0" stop-color="#70a1e5" stop-opacity="1"/>
+ <stop offset="1" stop-color="#4b6baf" stop-opacity="1"/>
+ </linearGradient>
+ </defs>
+ <rect x="2.5" y="2.5" width="8" height="7" fill="url(#svg_90)" stroke="url(#svg_92)" id="svg_87"/>
+ <rect x="5.5" y="6.5" width="8" height="7" id="svg_84" fill="#7399d6" stroke="url(#svg_92)"/>
+ <rect x="9.5" y="1.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_79"/>
+ <rect x="1.5" y="8.5" width="2" height="2" fill="#a0a0a0" stroke="#555555" id="svg_83"/>
+ <rect x="1.5" y="1.5" width="2" height="2" id="svg_78" fill="#a0a0a0" stroke="#555555"/>
+ <rect id="svg_93" x="12.5" y="5.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
+ <rect id="svg_94" x="12.5" y="12.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
+ <rect id="svg_95" x="4.5" y="12.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
+ <rect id="svg_96" x="4.5" y="5.5" width="2" height="2" fill="#a0a0a0" stroke="#555555"/>
+</svg>
+</g>
+
+<g id="width">
+ <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
+ <path id="svg_6" d="m19,42.5l-7.5,7.5l7.5,7.5l0,-15zm0,7.5l62,0l0,-7.5l7.5,7.5l-7.5,7.5l0,-7.5" stroke-width="8" stroke="#000000" fill="#000000"/>
+ </svg>
+</g>
+
+<g id="height">
+ <svg width="100" height="100" xmlns="http://www.w3.org/2000/svg">
+ <path transform="rotate(90, 50, 50)" fill="#000000" stroke="#000000" stroke-width="8" d="m19,42.5l-7.5,7.5l7.5,7.5l0,-15zm0,7.5l62,0l0,-7.5l7.5,7.5l-7.5,7.5l0,-7.5" id="svg_6"/>
+ </svg>
+</g>
+
+<g id="c_radius">
+<svg width="20" height="20" xmlns="http://www.w3.org/2000/svg">
+ <rect stroke="#404040" fill="none" stroke-width="0.5" x="2.37501" y="2.4375" width="43.9375" height="43.9375" id="svg_1" rx="13" ry="13"/>
+ <path fill="none" stroke="#000000" d="m2.43674,15.88952l13.73722,0l0.08978,-13.46483m0.08978,14.08493" id="svg_3"/>
+ <line fill="none" stroke="#000000" x1="16.35107" y1="15.88934" x2="5.20504" y2="5.20504" id="svg_4" stroke-dasharray="2,2"/>
+</svg>
+</g>
+
+<g id="angle">
+<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="2" stroke-dasharray="1,3" id="svg_6" d="m32.78778,41.03469c-0.40379,-8.68145 -4.50873,-16.79003 -12.11365,-20.5932" stroke="#000000" fill="none"/>
+ <path id="svg_7" d="m29.20348,7.67055l-24.20348,34.47921l41.16472,0" stroke-width="3" stroke="#404040" fill="none"/>
+</svg>
+</g>
+
+<g id="blur">
+<svg width="300" height="300" xmlns="http://www.w3.org/2000/svg">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <filter id="svg_4_blur" x="-50%" y="-50%" width="200%" height="200%">
+ <feGaussianBlur stdDeviation="25"/>
+ </filter>
+ </defs>
+ <circle fill="#000000" stroke="#000000" stroke-width="5" stroke-dasharray="null" cx="150" cy="150" r="91.80151" id="svg_4" filter="url(#svg_4_blur)"/>
+</svg>
+</g>
+
+<g id="fontsize">
+<svg width="50" height="50" xmlns="http://www.w3.org/2000/svg" xmlns:xml="http://www.w3.org/XML/1998/namespace">
+ <text fill="#606060" stroke="none" x="14.451" y="41.4587" id="svg_2" font-size="26" font-family="serif" text-anchor="middle" xml:space="preserve">T</text>
+ <text fill="#000000" stroke="none" x="28.853" y="41.8685" font-size="52" font-family="serif" text-anchor="middle" xml:space="preserve" id="svg_3">T</text>
+</svg>
+</g>
+
+<g id="align">
+ <svg width="22" height="22" xmlns="http://www.w3.org/2000/svg">
+ <rect stroke="#606060" fill="#c0c0c0" id="svg_4" height="7" width="12" y="7.5" x="4.5"/>
+ <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="9.5"/>
+ <rect stroke="#ffffff" fill="none" id="svg_5" height="5" width="10" y="8.5" x="5.5"/>
+ </svg>
+</g>
+
+<g id="align_left">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+ <rect stroke="#606060" fill="#ffffff" id="svg_4" height="7" width="12" y="2.5" x="2.5"/>
+ <rect stroke="none" fill="#c0c0c0" id="svg_5" height="4" width="11" y="4" x="2"/>
+ <rect id="svg_6" stroke="#606060" fill="#ffffff" height="7" width="18" y="12.5" x="2.5"/>
+ <rect id="svg_7" stroke="none" fill="#c0c0c0" height="4" width="17" y="14" x="2"/>
+ <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="1.5"/>
+ </svg>
+</g>
+
+<g id="align_center">
+ <svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="1.5" y="12.5" width="18" height="7" fill="#c0c0c0" stroke="#606060" id="svg_6"/>
+ <rect x="4.5" y="2.5" width="12" height="7" id="svg_4" fill="#c0c0c0" stroke="#606060"/>
+ <rect x="9.5" y="-10" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/>
+ <rect x="2.5" y="13.5" width="16" height="5" fill="none" stroke="#ffffff" id="svg_7"/>
+ <rect x="5.5" y="3.5" width="10" height="5" id="svg_5" fill="none" stroke="#ffffff"/>
+ </svg>
+</g>
+
+<g id="align_right">
+ <svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <rect x="7.5" y="2.5" width="12" height="7" id="svg_4" fill="#ffffff" stroke="#606060"/>
+ <rect x="9" y="4" width="11" height="4" id="svg_5" fill="#c0c0c0" stroke="none"/>
+ <rect x="1.5" y="12.5" width="18" height="7" fill="#ffffff" stroke="#606060" id="svg_6"/>
+ <rect x="3" y="14" width="17" height="4" fill="#c0c0c0" stroke="none" id="svg_7"/>
+ <rect x="18.5" y="-10" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/>
+ </svg>
+</g>
+
+<g id="align_top">
+ <svg viewBox="0 0 22 22" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g transform="rotate(90, 11, 11)" id="svg_1">
+ <rect x="2.5" y="3.5" width="12" height="7" id="svg_4" fill="#ffffff" stroke="#606060"/>
+ <rect x="2" y="5" width="11" height="4" id="svg_5" fill="#c0c0c0" stroke="none"/>
+ <rect x="2.5" y="13.5" width="18" height="7" fill="#ffffff" stroke="#606060" id="svg_6"/>
+ <rect x="2" y="15" width="17" height="4" fill="#c0c0c0" stroke="none" id="svg_7"/>
+ <rect x="1.5" y="-9" width="2" height="40" id="svg_2" fill="#ef9a23" stroke="#c15909"/>
+ </g>
+ </svg>
+</g>
+
+<g id="align_middle">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+ <g transform="rotate(90, 12, 11.5)" id="svg_1">
+ <rect id="svg_6" stroke="#606060" fill="#c0c0c0" height="7" width="18" y="14" x="3"/>
+ <rect stroke="#606060" fill="#c0c0c0" id="svg_4" height="7" width="12" y="4" x="6"/>
+ <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-8.5" x="11"/>
+ <rect id="svg_7" stroke="#ffffff" fill="none" height="5" width="16" y="15" x="4"/>
+ <rect stroke="#ffffff" fill="none" id="svg_5" height="5" width="10" y="5" x="7"/>
+ </g>
+</svg>
+</g>
+
+<g id="align_bottom">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
+ <g transform="rotate(90, 11, 11)" id="svg_1">
+ <rect stroke="#606060" fill="#ffffff" id="svg_4" height="7" width="12" y="2.5" x="7.5"/>
+ <rect stroke="none" fill="#c0c0c0" id="svg_5" height="4" width="11" y="4" x="9"/>
+ <rect id="svg_6" stroke="#606060" fill="#ffffff" height="7" width="18" y="12.5" x="1.5"/>
+ <rect id="svg_7" stroke="none" fill="#c0c0c0" height="4" width="17" y="14" x="3"/>
+ <rect stroke="#c15909" fill="#ef9a23" id="svg_2" height="40" width="2" y="-10" x="18.5"/>
+ </g>
+</svg>
+</g>
+
+<g id="linecap_butt">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1">
+ <stop offset="0" stop-color="#000000" stop-opacity="1"/>
+ <stop offset="1" stop-color="#000000" stop-opacity="0"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <rect fill="url(#svg_8)" stroke="#a0a0a0" stroke-width="2" x="-15.20196" y="43.5974" width="94.8373" height="50.3728" id="svg_3" transform="rotate(-45, 32.2148, 68.7832)"/>
+ <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/>
+ <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linecap_square">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <linearGradient id="svg_8" x1="0.8" y1="1" x2="0.2" y2="1">
+ <stop offset="0" stop-color="#000000" stop-opacity="1"/>
+ <stop offset="1" stop-color="#000000" stop-opacity="0"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <rect fill="url(#svg_8)" stroke="none" x="-18.51568" y="35.5974" width="117.46469" height="50.3728" id="svg_3" transform="rotate(-45, 40.2168, 60.7832)"/>
+ <path id="svg_1" d="m6.63133,95.07755l59.17514,-59.17514" stroke-width="3" stroke="#00ffff" fill="none"/>
+ <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linecap_round">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+ <stop stop-opacity="1" stop-color="#000000" offset="0"/>
+ <stop stop-opacity="0" stop-color="#000000" offset="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <path transform="rotate(-45, 41.5117, 59.4648)" id="svg_3" d="m-19.0679,34.2946l94.8359,0c36.499,-1.4142 33.67101,48.9569 0,50.3711l-94.8359,0l0,-50.3711z" stroke-width="2" stroke="#a0a0a0" fill="url(#svg_8)"/>
+ <path id="svg_1" d="m6.63133,95.07755l59.17515,-59.17515" stroke-width="3" stroke="#00ffff" fill="none"/>
+ <path id="svg_2" d="m51.62893,36.10742l13.05662,-13.05662l13.05661,13.05662l-13.05661,13.05662l-13.05662,-13.05662z" stroke="none" fill="#00ffff"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_miter">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+ <stop stop-opacity="1" stop-color="#000000" offset="0"/>
+ <stop stop-opacity="0" stop-color="#000000" offset="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <path fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+ <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+ <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_bevel">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+ <stop stop-opacity="1" stop-color="#000000" offset="0"/>
+ <stop stop-opacity="0" stop-color="#000000" offset="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <path stroke-linejoin="bevel" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+ <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+ <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="linejoin_round">
+<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:se="http://svg-edit.googlecode.com">
+ <!-- Created with SVG-edit - http://svg-edit.googlecode.com/ -->
+ <defs>
+ <linearGradient y2="1" x2="0.2" y1="1" x1="0.8" id="svg_8">
+ <stop stop-opacity="1" stop-color="#000000" offset="0"/>
+ <stop stop-opacity="0" stop-color="#000000" offset="1"/>
+ </linearGradient>
+ </defs>
+ <g>
+ <path stroke-linejoin="round" fill="none" stroke="url(#svg_8)" stroke-width="49" d="m-15,-35l75,85l-75,75" id="svg_6"/>
+ <path transform="rotate(90, 57.8925, 50.2519)" fill="#00ffff" stroke="none" d="m44.83592,50.25187l13.05661,-13.05663l13.05661,13.05663l-13.05661,13.05662l-13.05661,-13.05662z" id="svg_2"/>
+ <path id="svg_4" d="m-15,-35l75,85l-75,75" stroke-width="3" stroke="#00ffff" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="eye">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 17 17">
+ <defs>
+ <linearGradient y2="0.79688" x2="0.5625" y1="0.19141" x1="0.42969" id="svg_91">
+ <stop stop-opacity="1" stop-color="#d3a16b" offset="0"/>
+ <stop stop-opacity="1" stop-color="#a37c53" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path stroke="none" fill="url(#svg_91)" id="svg_9" d="m0.12852,8.18338c3.59931,-7.71208 13.19749,-7.36932 16.75236,0.08569c-3.02165,7.5407 -13.59741,7.66924 -16.75236,-0.08569z"/>
+ <path id="svg_76" stroke="none" fill="#ffffff" d="m0.33033,8.2557c3.5173,-4.97159 12.89675,-4.75063 16.37062,0.05524c-2.95279,4.86111 -13.28756,4.94397 -16.37062,-0.05524z"/>
+ <circle stroke="none" fill="#4f92c1" id="svg_88" r="3.08008" cy="7.71116" cx="8.45861"/>
+ <circle stroke="none" fill="#000000" id="svg_89" r="1.27539" cy="7.6539" cx="8.43159"/>
+ </svg>
+</g>
+
+<g id="no_color">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <line fill="none" stroke="#d40000" id="svg_90" y2="24" x2="24" y1="0" x1="0"/>
+ <line id="svg_92" fill="none" stroke="#d40000" y2="24" x2="0" y1="0" x1="24"/>
+ </svg>
+</g>
+
+<g id="ok">
+ <svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs>
+ <linearGradient y2="0.65625" x2="0.94141" y1="0.43359" x1="0.42969" id="svg_106">
+ <stop stop-opacity="1" stop-color="#38ff45" offset="0"/>
+ <stop stop-opacity="1" stop-color="#127c0c" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path transform="rotate(45, 12, 10)" stroke="#005500" fill="url(#svg_106)" id="svg_101" d="m7.9,15.9l4.9,-0.05l0,-13.75l3.8,0l0,17.6l-8.7,0l0,-3.8z"/>
+ </svg>
+</g>
+
+<g id="cancel">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs>
+ <linearGradient y2="0.65625" x2="0.94141" y1="0.43359" x1="0.42969" id="svg_9">
+ <stop stop-opacity="1" stop-color="#ff3838" offset="0"/>
+ <stop stop-opacity="1" stop-color="#7a0c0c" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path stroke="#550000" fill="url(#svg_9)" id="svg_101" d="m2.10526,10.52632l7.36842,0l0,-7.36842l3.68421,0l0,7.36842l7.36842,0l0,3.68421l-7.36842,0l0,7.36842l-3.68421,0l0,-7.36842l-7.36842,0l0,-3.68421z" transform="rotate(45, 11.3, 12.3)"/>
+ </svg>
+</g>
+
+<g id="warning">
+<svg xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
+ <defs>
+ <linearGradient y2="0.98047" x2="0.57813" y1="0.44922" x1="0.56641" id="svg_110">
+ <stop stop-opacity="1" stop-color="#ffff00" offset="0"/>
+ <stop stop-opacity="1" stop-color="#9e9e00" offset="1"/>
+ </linearGradient>
+ </defs>
+ <path d="m1.42857,21.55559l10.71429,-19.36489l10.71429,19.20352l-21.42857,0.16137z" id="svg_44" fill="url(#svg_110)" stroke="#916d1f" stroke-width="2"/>
+ <path stroke="none" fill="#000000" id="svg_103" d="m11.98371,14.68571c-0.57143,-3.82857 -1.82857,-6.4 0.11429,-6.4c2.11429,0 0.74286,2.57143 0.11429,6.4l-0.22857,0z"/>
+ <circle stroke="none" fill="#000000" id="svg_104" r="1.17578" cy="17.37143" cx="12.14308"/>
+ </svg>
+</g>
+
+<g id="node_delete">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/>
+ <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/>
+ <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/>
+ <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/>
+ <g transform="rotate(-45.291072845458984 9.81157112121582,9.244086265563965) " id="svg_6">
+ <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/>
+ <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#ff0000" fill="none"/>
+ </g>
+</svg>
+</g>
+
+<g id="node_clone">
+<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg">
+ <path stroke-width="2" id="svg_102" d="m4.1953,19.42128c15.49391,-15.53349 -0.21065,0.1581 15.61084,-15.57944" stroke="#8dd35f" fill="none"/>
+ <circle stroke-width="0.5" id="svg_121" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="4" cx="19.75"/>
+ <circle id="svg_123" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="19.40299" cx="4.0653"/>
+ <circle id="svg_7" stroke-width="0.5" stroke="#0000ff" fill="#00ffff" r="2.26172" cy="11.625" cx="11.9375"/>
+ <line stroke-linecap="round" id="svg_5" y2="14.46579" x2="9.66571" y1="4.02238" x1="9.7824" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/>
+ <line stroke-linecap="round" id="svg_4" y2="9.45264" x2="15.14996" y1="9.3943" x1="4.47318" stroke-dasharray="null" stroke-width="2" stroke="#0000ff" fill="#0000ff"/>
+</svg>
+</g>
+
+<g id="svg_eof"/>
+
+</svg>
diff --git a/files_svgedit/images/svg_edit_icons.svgz b/files_svgedit/images/svg_edit_icons.svgz
new file mode 100644
index 000000000..cb8c80cc5
--- /dev/null
+++ b/files_svgedit/images/svg_edit_icons.svgz
Binary files differ
diff --git a/files_svgedit/images/text.png b/files_svgedit/images/text.png
new file mode 100644
index 000000000..5652e2fab
--- /dev/null
+++ b/files_svgedit/images/text.png
Binary files differ
diff --git a/files_svgedit/images/text.svg b/files_svgedit/images/text.svg
new file mode 100644
index 000000000..5c28753c3
--- /dev/null
+++ b/files_svgedit/images/text.svg
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="22.000000px"
+ height="22.000000px"
+ id="svg1306"
+ sodipodi:version="0.32"
+ inkscape:version="0.42.2"
+ sodipodi:docbase="/home/andreas/projekt/bild/tango/22"
+ sodipodi:docname="draw-text2.svg">
+ <defs
+ id="defs1308">
+ <linearGradient
+ id="linearGradient3682">
+ <stop
+ style="stop-color:#1f1f1f;stop-opacity:1.0000000;"
+ offset="0.0000000"
+ id="stop3684" />
+ <stop
+ style="stop-color:#5c5c5c;stop-opacity:1.0000000;"
+ offset="1.0000000"
+ id="stop3686" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3558">
+ <stop
+ style="stop-color:#000000;stop-opacity:1;"
+ offset="0"
+ id="stop3560" />
+ <stop
+ style="stop-color:#000000;stop-opacity:0;"
+ offset="1"
+ id="stop3562" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3558"
+ id="radialGradient3564"
+ cx="22.571428"
+ cy="30.857143"
+ fx="22.571428"
+ fy="30.857143"
+ r="15.571428"
+ gradientTransform="matrix(1.000000,0.000000,0.000000,0.651376,4.300378e-15,10.75754)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ id="linearGradient2834">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2836" />
+ <stop
+ style="stop-color:#b3b3b3;stop-opacity:0.0000000;"
+ offset="1.0000000"
+ id="stop2838" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2834"
+ id="linearGradient2840"
+ x1="19.944447"
+ y1="16.527262"
+ x2="24.133829"
+ y2="19.642126"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.498259,0.000000,0.000000,0.466519,-0.799974,-0.839637)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3682"
+ id="linearGradient3688"
+ x1="23.305620"
+ y1="24.843527"
+ x2="14.388516"
+ y2="9.5902243"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="matrix(0.498259,0.000000,0.000000,0.488600,-0.799974,-1.273557)" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="14.000000"
+ inkscape:cx="17.541947"
+ inkscape:cy="12.572768"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="885"
+ inkscape:window-x="0"
+ inkscape:window-y="25" />
+ <metadata
+ id="metadata1311">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47368422;color:#000000;fill:url(#radialGradient3564);fill-opacity:1.0000000;fill-rule:nonzero;stroke:none;stroke-width:1.0000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
+ id="path3556"
+ sodipodi:cx="22.571428"
+ sodipodi:cy="30.857143"
+ sodipodi:rx="15.571428"
+ sodipodi:ry="10.142858"
+ d="M 38.142857 30.857143 A 15.571428 10.142858 0 1 1 7.0000000,30.857143 A 15.571428 10.142858 0 1 1 38.142857 30.857143 z"
+ transform="matrix(0.706422,0.000000,0.000000,0.208015,-4.944952,13.47138)" />
+ <path
+ style="font-size:54.869392px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;fill:url(#linearGradient3688);fill-opacity:1.0000000;stroke:#000000;stroke-width:1.0000001;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
+ d="M 15.189363,15.520771 L 7.1531447,15.520771 L 5.8598048,19.513834 L 0.51627279,19.513834 L 8.1009381,0.48837876 L 14.228221,0.48837876 L 21.560524,19.464779 L 16.444188,19.464779 L 15.189363,15.520771 M 8.3990779,12.473977 L 13.858901,12.473977 L 11.171254,5.1526958 L 8.3990779,12.473977"
+ id="text1314"
+ sodipodi:nodetypes="ccccccccccccc" />
+ <path
+ style="font-size:54.869392px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125.00000%;writing-mode:lr-tb;text-anchor:start;opacity:0.37912086;fill:none;fill-opacity:1.0000000;stroke:url(#linearGradient2840);stroke-width:1.0000008;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;font-family:Bitstream Vera Sans"
+ d="M 15.684541,15.159554 L 6.6710758,15.159554 L 5.4166733,18.527305 L 2.0035414,18.527305 L 8.7384662,1.4621947 L 13.512484,1.4621947 L 20.022564,18.410463 L 16.899702,18.410463 L 15.684541,15.159554 z "
+ id="path2047"
+ sodipodi:nodetypes="ccccccccc" />
+ <image
+ id="image2089"
+ height="459.00000"
+ width="400.00000"
+ sodipodi:absref="/home/andreas/palette2.png"
+ xlink:href="/home/andreas/palette2.png"
+ x="-354.93631"
+ y="-214.53793" />
+ <path
+ style="fill:none;fill-opacity:0.75000000;fill-rule:evenodd;stroke:#999999;stroke-width:1.0000007;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-opacity:1.0000000;opacity:0.51098901"
+ d="M 8.1686844,13.551882 L 14.147791,13.551882"
+ id="path5142"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/files_svgedit/images/to_path.png b/files_svgedit/images/to_path.png
new file mode 100644
index 000000000..4209828db
--- /dev/null
+++ b/files_svgedit/images/to_path.png
Binary files differ
diff --git a/files_svgedit/images/undo.png b/files_svgedit/images/undo.png
new file mode 100644
index 000000000..cd4ab955f
--- /dev/null
+++ b/files_svgedit/images/undo.png
Binary files differ
diff --git a/files_svgedit/images/view-refresh.png b/files_svgedit/images/view-refresh.png
new file mode 100644
index 000000000..3fd71d6e5
--- /dev/null
+++ b/files_svgedit/images/view-refresh.png
Binary files differ
diff --git a/files_svgedit/images/wave.png b/files_svgedit/images/wave.png
new file mode 100644
index 000000000..10fa7122d
--- /dev/null
+++ b/files_svgedit/images/wave.png
Binary files differ
diff --git a/files_svgedit/images/wireframe.png b/files_svgedit/images/wireframe.png
new file mode 100644
index 000000000..89db7e9e3
--- /dev/null
+++ b/files_svgedit/images/wireframe.png
Binary files differ
diff --git a/files_svgedit/images/zoom.png b/files_svgedit/images/zoom.png
new file mode 100644
index 000000000..c4fb6f17d
--- /dev/null
+++ b/files_svgedit/images/zoom.png
Binary files differ
diff --git a/files_svgedit/index.php b/files_svgedit/index.php
new file mode 100644
index 000000000..4b57514b2
--- /dev/null
+++ b/files_svgedit/index.php
@@ -0,0 +1,16 @@
+<?php
+// Init owncloud
+require_once('../../lib/base.php');
+OC_Util::checkLoggedIn();
+OC_Util::checkAppEnabled('files_svgedit');
+echo "foo";
+if(isset($_GET['file']) and OC_Filesystem::is_writeable($path = $_GET['file'])) {
+ $filecontents = OC_Filesystem::file_get_contents($path);
+} else {
+ $filecontents = "";
+}
+
+$tmpl = new OC_TEMPLATE( "files_svgedit", "editor", "user" );
+$tmpl->assign('fileContents', json_encode($filecontents));
+$tmpl->printPage();
+?>
diff --git a/files_svgedit/js/jgraduate/LICENSE b/files_svgedit/js/jgraduate/LICENSE
new file mode 100644
index 000000000..d64569567
--- /dev/null
+++ b/files_svgedit/js/jgraduate/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/files_svgedit/js/jgraduate/README b/files_svgedit/js/jgraduate/README
new file mode 100644
index 000000000..ef3e21ff8
--- /dev/null
+++ b/files_svgedit/js/jgraduate/README
@@ -0,0 +1,3 @@
+jGraduate - A jQuery plugin for picking gradients
+
+Licensed under the Apache License 2. See LICENSE for more information.
diff --git a/files_svgedit/js/jgraduate/jpicker-1.0.12.min.js b/files_svgedit/js/jgraduate/jpicker-1.0.12.min.js
new file mode 100644
index 000000000..9b408ad92
--- /dev/null
+++ b/files_svgedit/js/jgraduate/jpicker-1.0.12.min.js
@@ -0,0 +1 @@
+(function(e,a){var d=function(t,k){var o=this,j=t.find("img"),B=0,A=100,s=100,z=0,w=100,r=100,q=0,p=0,m,n=function(x){var y=t.offset();m={left:y.left+parseInt(t.css("border-left-width")),top:y.top+parseInt(t.css("border-top-width"))};u(x);o.draw();e(document).bind("mousemove",l).bind("mouseup",h);x.stopPropagation();x.preventDefault();return false;},l=function(x){u(x);o.draw();x.stopPropagation();x.preventDefault();return false;},h=function(x){e(document).unbind("mouseup",h).unbind("mousemove",l);x.stopPropagation();x.preventDefault();return false;},u=function(E){var C=E.pageX-m.left,x=E.pageY-m.top,D=t.w,y=t.h;if(C<0){C=0;}else{if(C>D){C=D;}}if(x<0){x=0;}else{if(x>y){x=y;}}o.set_X(((C/D)*s)+B);o.set_Y(((x/y)*r)+z);e.isFunction(o.valuesChanged)&&o.valuesChanged(o);};e.extend(true,o,{settings:k,valuesChanged:e.isFunction(arguments[2])&&arguments[2]||null,get_X:function(){return q;},set_X:function(x){x=Math.floor(x);if(q==x){return;}if(x<B){x=B;}else{if(x>A){x=A;}}q=x;},get_Y:function(){return p;},set_Y:function(x){x=Math.floor(x);if(p==x){return;}if(x<z){x=z;}else{if(x>w){x=w;}}p=x;},set_RangeX:function(y,x){if(B==y&&A==x){return;}if(y>x){return;}B=y;A=x;s=A-B;},set_RangeY:function(y,x){if(z==y&&w==x){return;}if(y>x){return;}z=y;w=x;r=w-z;},draw:function(){var D=0,x=0,F=t.w,C=t.h,E=j.w,y=j.h;if(s>0){if(q==A){D=F;}else{D=Math.floor((q/s)*F);}}if(r>0){if(p==w){x=C;}else{x=Math.floor((p/r)*C);}}if(E>F){D=(F>>1)-(E>>1);}else{D-=E>>1;}if(y>C){x=(C>>1)-(y>>1);}else{x-=y>>1;}j.css({left:D+"px",top:x+"px"});},destroy:function(){e(document).unbind("mouseup",h).unbind("mousemove",l);t.unbind("mousedown",n);t=null;j=null;o.valuesChanged=null;}});var v=o.settings;j.src=v.arrow&&v.arrow.image;j.w=v.arrow&&v.arrow.width||j.width();j.h=v.arrow&&v.arrow.height||j.height();t.w=v.map&&v.map.width||t.width();t.h=v.map&&v.map.height||t.height();t.bind("mousedown",n);o.draw();e.isFunction(o.valuesChanged)&&o.valuesChanged(o);},b=function(m){var l=this,w=function(A){if(A.target.value==""){return;}if(!u.get_R()){s.red.val(0);}if(!u.get_G()){s.green.val(0);}if(!u.get_B()){s.blue.val(0);}if(!u.get_A()){s.alpha.val(100);}q(A);l.setValuesFromHsva();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},p=function(A){if(A.target.value==""){return;}if(!u.get_H()){s.hue.val(0);}if(!u.get_S()){s.saturation.val(0);}if(!u.get_V()){s.value.val(0);}if(!u.get_A()){s.alpha.val(100);}o(A);l.setValuesFromRgba();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},r=function(A){if(A.target.value==""){return;}if(!u.get_R()){s.red.val(0);}if(!u.get_G()){s.green.val(0);}if(!u.get_B()){s.blue.val(0);}if(!u.get_H()){s.hue.val(0);}if(!u.get_S()){s.saturation.val(0);}if(!u.get_V()){s.value.val(0);}y(A);l.setValuesFromRgba();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},t=function(A){if(A.target.value==""){l.setValuesFromRgba();}e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},k=function(A){if(A.target.value==""){l.setValuesFromHsva();}e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},x=function(A){if(A.target.value==""){s.alpha.val(100);}e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},z=function(A){v(A);l.setValuesFromHex();e.isFunction(l.valuesChanged)&&l.valuesChanged(l);},j=function(A){if(A.target.value==""){l.setValuesFromHex();}},o=function(D){if(!n(D)){return D;}var C=h(s.red.val(),0,255),B=h(s.green.val(),0,255),A=h(s.blue.val(),0,255);s.red.val(C!=null?C:"");s.green.val(B!=null?B:"");s.blue.val(A!=null?A:"");},y=function(B){if(!n(B)){return B;}var A=h(s.alpha.val(),0,100);s.alpha.val(A!=null?A:"");},q=function(D){if(!n(D)){return D;}var A=h(s.hue.val(),0,360),B=h(s.saturation.val(),0,100),C=h(s.value.val(),0,100);s.hue.val(A!=null?A:"");s.saturation.val(B!=null?B:"");s.value.val(C!=null?C:"");},v=function(A){if(!n(A)){return A;}s.hex.val(s.hex.val().replace(/[^a-fA-F0-9]/g,"").toLowerCase().substring(0,8));},n=function(A){switch(A.keyCode){case 9:case 16:case 29:case 37:case 38:case 40:return false;case"c".charCodeAt():case"v".charCodeAt():if(A.ctrlKey){return false;}}return true;},h=function(C,B,A){if(C==""||isNaN(C)){return B;}if(C>A){return A;}if(C<B){return B;}return C;};e.extend(true,l,{color:new f(),fields:{hue:m.find(".jPicker_HueText"),saturation:m.find(".jPicker_SaturationText"),value:m.find(".jPicker_BrightnessText"),red:m.find(".jPicker_RedText"),green:m.find(".jPicker_GreenText"),blue:m.find(".jPicker_BlueText"),hex:m.find(".jPicker_HexText"),alpha:m.find(".jPicker_AlphaText")},valuesChanged:e.isFunction(arguments[1])&&arguments[1]||null,bindedHexKeyUp:function(A){z(A);},setValuesFromRgba:function(){u.fromRgba(s.red.val(),s.green.val(),s.blue.val(),s.alpha.val());var B=u.get_Rgba(),A=u.get_H(),C=u.get_S(),D=u.get_V(),E=u.get_A();s.hex.val(B!=null?B:"");s.hue.val(A!=null?A:"");s.saturation.val(C!=null?C:"");s.value.val(D!=null?D:"");s.alpha.val(E!=null?E:"");},setValuesFromHsva:function(){u.fromHsva(s.hue.val(),s.saturation.val(),s.value.val(),s.alpha.val());var B=u.get_Rgba(),E=u.get_R(),C=u.get_G(),A=u.get_B(),D=u.get_A();s.hex.val(B!=null?B:"");s.red.val(E!=null?E:"");s.green.val(C!=null?C:"");s.blue.val(A!=null?A:"");s.alpha.val(D!=null?D:"");},setValuesFromHex:function(){u.fromHex(s.hex.val());var C=u.get_Rgba(),H=u.get_R(),F=u.get_G(),A=u.get_B(),G=u.get_A(),B=u.get_H(),D=u.get_S(),E=u.get_V();s.red.val(H!=null?H:"");s.green.val(F!=null?F:"");s.blue.val(A!=null?A:"");s.alpha.val(G!=null?G:"");s.hue.val(B!=null?B:"");s.saturation.val(D!=null?D:"");s.value.val(E!=null?E:"");},destroy:function(){s.hue.add(s.saturation).add(s.value).unbind("keyup",events.hsvKeyUp).unbind("blur",t);s.red.add(s.green).add(s.blue).unbind("keyup",events.rgbKeyUp).unbind("blur",k);s.alpha.unbind("keyup",alphaKeyUp).unbind("blur",x);s.hex.unbind("keyup",z);s=null;u=null;l.valuesChanged=null;}});var s=l.fields,u=l.color;s.hue.add(s.saturation).add(s.value).bind("keyup",w).bind("blur",t);s.red.add(s.green).add(s.blue).bind("keyup",p).bind("blur",k);s.alpha.bind("keyup",r).bind("blur",x);s.hex.bind("keyup",z).bind("blur",j);if(s.hex.val()!=""){u.fromHex(s.hex.val());l.setValuesFromHex();}};e.jPicker={List:[],Color:function(q){var m=this,j,l,n,o,k,t,p;e.extend(true,m,{get_R:function(){return j;},get_G:function(){return l;},get_B:function(){return n;},get_A:function(){return o;},get_Rgba:function(){return j!=null&&l!=null&&n!=null&&o!=null?g.rgbaToHex({r:j,g:l,b:n,a:o}):null;},get_Hex:function(){var h=m.get_Rgba();return h&&h.substring(0,6)||null;},get_H:function(){return k;},get_S:function(){return t;},get_V:function(){return p;},get_Hsv:function(){return{h:k,s:t,v:p};},fromRgba:function(v,s,h,u){j=v;l=s;n=h;o=u;var r=g.rgbToHsv({r:v,g:s,b:h});k=r.h;t=r.s;p=r.v;},fromHsva:function(h,s,u,v){k=h;t=s;p=u;o=v;var r=g.hsvToRgb({h:h,s:s,v:u});j=r.r;l=r.g;n=r.b;},fromHex:function(s){if(s==null||s==""){j=null;l=null;n=null;o=null;k=null;t=null;p=null;return;}var r=g.hexToRgba(s);j=r.r;l=r.g;n=r.b;o=r.a;var h=g.rgbToHsv({r:r.r,g:r.g,b:r.b});k=h.h;t=h.s;p=h.v;}});if(q){if(q.hex!=null&&q.hex!=""){m.fromHex(q.hex);}else{if(!isNaN(q.r)){m.fromRgba(q.r,q.g,q.b,q.a||100);}else{if(!isNaN(q.h)){m.fromHsva(q.h,q.s,q.v,q.a||100);}}}}},ColorMethods:{hexToRgba:function(m){m=this.validateHex(m);if(m==""){return{r:null,g:null,b:null,a:null};}var l="00",k="00",h="00",j="100";if(m.length==6){m+="ff";}if(m.length>6){l=m.substring(0,2);k=m.substring(2,4);h=m.substring(4,6);j=m.substring(6,m.length);}else{if(m.length>4){l=m.substring(4,m.length);m=m.substring(0,4);}if(m.length>2){k=m.substring(2,m.length);m=m.substring(0,2);}if(m.length>0){h=m.substring(0,m.length);}}return{r:this.hexToInt(l),g:this.hexToInt(k),b:this.hexToInt(h),a:Math.floor((this.hexToInt(j)*100)/255)};},validateHex:function(h){h=h.toLowerCase().replace(/[^a-f0-9]/g,"");if(h.length>8){h=h.substring(0,8);}return h;},rgbaToHex:function(h){return this.intToHex(h.r)+this.intToHex(h.g)+this.intToHex(h.b)+this.intToHex(Math.floor((h.a*255)/100));},intToHex:function(j){var h=Math.floor(j).toString(16);if(h.length==1){h=("0"+h);}return h.toLowerCase();},hexToInt:function(h){return parseInt(h,16);},rgbToHsv:function(l){var o=l.r/255,n=l.g/255,j=l.b/255,k={h:0,s:0,v:0},m=0,h=0,p;if(o>=n&&o>=j){h=o;m=n>j?j:n;}else{if(n>=j&&n>=o){h=n;m=o>j?j:o;}else{h=j;m=n>o?o:n;}}k.v=h;k.s=h?(h-m)/h:0;if(!k.s){k.h=0;}else{p=h-m;if(o==h){k.h=(n-j)/p;}else{if(n==h){k.h=2+(j-o)/p;}else{k.h=4+(o-n)/p;}}k.h=parseInt(k.h*60);if(k.h<0){k.h+=360;}}k.s=Math.floor(k.s*100);k.v=Math.floor(k.v*100);return k;},hsvToRgb:function(n){var r={r:0,g:0,b:0,a:100},m=n.h,x=n.s,u=n.v;if(x==0){if(u==0){r.r=r.g=r.b=0;}else{r.r=r.g=r.b=Math.floor(u*255/100);}}else{if(m==360){m=0;}m/=60;x=x/100;u=u/100;var l=Math.floor(m),o=m-l,k=u*(1-x),j=u*(1-(x*o)),w=u*(1-(x*(1-o)));switch(l){case 0:r.r=u;r.g=w;r.b=k;break;case 1:r.r=j;r.g=u;r.b=k;break;case 2:r.r=k;r.g=u;r.b=w;break;case 3:r.r=k;r.g=j;r.b=u;break;case 4:r.r=w;r.g=k;r.b=u;break;case 5:r.r=u;r.g=k;r.b=j;break;}r.r=Math.floor(r.r*255);r.g=Math.floor(r.g*255);r.b=Math.floor(r.b*255);}return r;}}};var f=e.jPicker.Color,c=e.jPicker.List,g=e.jPicker.ColorMethods;e.fn.jPicker=function(j){var h=arguments;return this.each(function(){var w=e(this),y=e.extend(true,{},e.fn.jPicker.defaults,j);if(w.get(0).nodeName.toLowerCase()=="input"){e.extend(true,y,{window:{bindToInput:true,expandable:true,input:w}});if(g.validateHex(w.val())){y.color.active=new f({hex:w.val(),a:y.color.active.get_A()});y.color.current=new f({hex:w.val(),a:y.color.active.get_A()});}}if(y.window.expandable){w.after('<span class="jPicker_Picker"><span class="jPicker_Color">&nbsp;</span><span class="jPicker_Alpha">&nbsp;</span><span class="jPicker_Icon" title="Click To Open Color Picker">&nbsp;</span><span class="jPicker_Container">&nbsp;</span></span>');}else{y.window.liveUpdate=false;}var U=parseFloat(navigator.appVersion.split("MSIE")[1])<7&&document.body.filters,ay=null,av=null,au=null,T=null,S=null,R=null,Q=null,P=null,O=null,V=null,aa=null,aA=null,ak=null,am=null,ao=null,I=null,aw=null,G=null,Y=null,az=null,M=null,L=null,at=null,aq=null,A=null,l=null,J=null,ap=null,ab=null,ai=null,o=null,m=null,C=null,u=null,an=function(aE){K.active=az.color;var aF=K.active,aG=q.clientPath,aD=aF.get_Hex(),aC=function(aH){ad(aH,100);aH.css({backgroundColor:"transparent",backgroundPosition:"0px 0px",filter:""});};aC(ay);aC(av);aC(au);aC(T);aC(S);aC(R);aC(Q);aC(P);aC(O);aa.add(aA).add(ak).add(am).add(ao).add(I).removeAttr("checked");switch(aE){case"h":aa.attr({checked:true});ay.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});av.css({backgroundColor:"transparent"});x(av,-256);ad(av,100);x(Q,-256);ad(O,0);break;case"s":aA.attr({checked:true});x(ay,-512);x(av,-768);z(R,aF.get_Hex());x(Q,-512);ad(O,0);break;case"v":ak.attr({checked:true});z(ay,"000000");x(av,-1024);R.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});x(Q,-768);ad(O,0);break;case"r":am.attr({checked:true});x(av,-1536);x(ay,-1280);x(Q,-1024);x(R,-1280);x(S,-1536);x(T,-1792);ad(O,0);break;case"g":ao.attr({checked:true});x(av,-2048);x(ay,-1792);x(Q,-2048);x(R,-2304);x(S,-2560);x(T,-2816);ad(O,0);break;case"b":I.attr({checked:true});x(av,-2560);x(ay,-2304);x(Q,-3072);x(R,-3328);x(S,-3584);x(T,-3840);ad(O,0);break;case"a":aw.attr({checked:true});x(ay,-512);x(av,-768);ad(av,0);z(R,aF.get_Hex());ad(Q,0);ad(P,0);ad(O,100);break;default:throw ("Invalid Mode");break;}switch(aE){case"h":G.set_RangeX(0,100);G.set_RangeY(0,100);Y.set_RangeY(0,360);break;case"s":case"v":case"a":G.set_RangeX(0,360);G.set_RangeY(0,100);Y.set_RangeY(0,100);break;case"r":case"g":case"b":G.set_RangeX(0,255);G.set_RangeY(0,255);Y.set_RangeY(0,255);break;}K.mode=aE;v();G.draw();Y.draw();ah();if(aj.expandable&&aj.liveUpdate){o.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});ad(m,100-aF.get_A());if(aj.bindToInput){aj.input.val(aF.get_Rgba()||"").css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent",color:aF.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aF);},n=function(){v();G.draw();Y.draw();ah();K.active=az.color;var aD=K.active;if(aj.expandable&&aj.liveUpdate){var aC=aD.get_Hex();o.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(m,100-aD.get_A());if(aj.bindToInput){aj.input.val(az.fields.hex.val()||"").css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent",color:aD.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aD);},B=function(){if(!az||!G||!Y){return;}K.active=az.color;var aC=az.fields,aE=K.active;switch(K.mode){case"h":aC.saturation.val(G.get_X());aC.value.val(100-G.get_Y());if(aE.get_H()==null){aC.hue.val(0);}break;case"s":case"a":aC.hue.val(G.get_X());aC.value.val(100-G.get_Y());if(aE.get_S()==null){aC.saturation.val(0);}break;case"v":aC.hue.val(G.get_X());aC.saturation.val(100-G.get_Y());if(aE.get_V()==null){aC.value.val(0);}break;case"r":aC.green.val(255-G.get_Y());aC.blue.val(G.get_X());if(aE.get_R()==null){aC.red.val(0);}break;case"g":aC.red.val(255-G.get_Y());aC.blue.val(G.get_X());if(aE.get_G()==null){aC.green.val(0);}break;case"b":aC.red.val(G.get_X());aC.green.val(255-G.get_Y());if(aE.get_B()==null){aC.blue.val(0);}break;}if(aE.get_A()==null){aC.alpha.val(100);az.setValuesFromHsva();v();Y.draw();}switch(K.mode){case"h":case"s":case"v":case"a":az.setValuesFromHsva();break;case"r":case"g":case"b":az.setValuesFromRgba();break;}ah();if(aj.expandable&&aj.liveUpdate){var aD=aE.get_Hex();o.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});ad(m,100-aE.get_A());if(aj.bindToInput){aj.input.val(aE.get_Rgba()||"").css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent",color:aE.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aE);},al=function(){if(!az||!G||!Y){return;}K.active=az.color;var aC=az.fields,aE=K.active;switch(K.mode){case"h":aC.hue.val(360-Y.get_Y());if(aE.get_S()==null){aC.saturation.val(0);}if(aE.get_V()==null){aC.value.val(0);}break;case"s":aC.saturation.val(100-Y.get_Y());if(aE.get_H()==null){aC.hue.val(0);}if(aE.get_V()==null){aC.value.val(0);}break;case"v":aC.value.val(100-Y.get_Y());if(aE.get_H()==null){aC.hue.val(0);}if(aE.get_S()==null){aC.saturation.val(0);}break;case"r":aC.red.val(255-Y.get_Y());if(aE.get_G()==null){aC.green.val(0);}if(aE.get_B()==null){aC.blue.val(0);}break;case"g":aC.green.val(255-Y.get_Y());if(aE.get_R()==null){aC.red.val(0);}if(aE.get_B()==null){aC.blue.val(0);}break;case"b":aC.blue.val(255-Y.get_Y());if(aE.get_R()==null){aC.red.val(0);}if(aE.get_G()==null){aC.green.val(0);}break;case"a":aC.alpha.val(100-Y.get_Y());if(aE.get_R()==null){aC.red.val(0);}if(aE.get_G()==null){aC.green.val(0);}if(aE.get_B()==null){aC.blue.val(0);}break;}if(aE.get_A()==null){aC.alpha.val(100);}switch(K.mode){case"h":case"s":case"v":az.setValuesFromHsva();break;case"r":case"g":case"b":case"a":az.setValuesFromRgba();break;}ah();if(aj.expandable&&aj.liveUpdate){var aD=aE.get_Hex();o.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});ad(m,100-aE.get_A());if(aj.bindToInput){aj.input.val(aE.get_Rgba()||"").css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent",color:aE.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.liveCallback)&&w.liveCallback(aE);},v=function(){K.active=az.color;var aF=0,aE=K.active;switch(w.settings.color.mode){case"h":aF=360-aE.get_H();break;case"s":aF=100-aE.get_S();break;case"v":aF=100-aE.get_V();break;case"r":aF=255-aE.get_R();break;case"g":aF=255-aE.get_G();break;case"b":aF=255-aE.get_B();break;case"a":aF=100-aE.get_A();break;}Y.set_Y(aF);var aD=0,aC=0;switch(w.settings.color.mode){case"h":aD=aE.get_S();aC=100-aE.get_V();break;case"s":case"a":aD=aE.get_H();aC=100-aE.get_V();break;case"v":aD=aE.get_H();aC=100-aE.get_S();break;case"r":aD=aE.get_B();aC=255-aE.get_G();break;case"g":aD=aE.get_B();aC=255-aE.get_R();break;case"b":aD=aE.get_R();aC=255-aE.get_G();break;}G.set_X(aD);G.set_Y(aC);},ah=function(){aB();ar();Z();},aB=function(){try{var aC=az.color.get_Hex();A.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(A,az.color.get_A());}catch(aD){}},ar=function(){if(!K||!az){return;}K.active=az.color;var aC=K.active;switch(K.mode){case"h":z(ay,new f({h:aC.get_H(),s:100,v:100}).get_Hex());break;case"s":case"a":ad(av,100-aC.get_S());break;case"v":ad(av,aC.get_V());break;case"r":ad(av,aC.get_R()/255*100);break;case"g":ad(av,aC.get_G()/255*100);break;case"b":ad(av,aC.get_B()/255*100);break;}ad(au,100-aC.get_A());},Z=function(){if(!K||!az){return;}K.active=az.color;var aG=K.active;switch(K.mode){case"h":ad(P,100-aG.get_A());break;case"s":var aH=new f({h:aG.get_H(),s:100,v:aG.get_V()});z(R,aH.get_Hex());ad(P,100-aG.get_A());break;case"v":var aJ=new f({h:aG.get_H(),s:aG.get_S(),v:100});z(R,aJ.get_Hex());ad(P,100-aG.get_A());break;case"r":case"g":case"b":var aI=0,aK=0;if(K.mode=="r"){aI=aG.get_B();aK=aG.get_G();}else{if(K.mode=="g"){aI=aG.get_B();aK=aG.get_R();}else{if(K.mode=="b"){aI=aG.get_R();aK=aG.get_G();}}}var aC=aI/255*100,aF=aK/255*100,aE=(255-aI)/255*100,aD=(255-aK)/255*100;ad(T,aD>aE?aE:aD);ad(S,aD>aC?aC:aD);ad(R,aF>aC?aC:aF);ad(Q,aF>aE?aE:aF);ad(P,100-aG.get_A());break;case"a":z(R,aG.get_Hex());break;}},z=function(aC,aD){aC.css({backgroundColor:aD&&aD.length==6?"#"+aD:"transparent"});},t=function(aC,aD){aC.css({backgroundImage:"url("+aD+")"});},x=function(aC,aD){aC.css({backgroundPosition:"0px "+aD+"px"});},ad=function(aD,aC){aD.css({visibility:aC>0?"visible":"hidden"});if(aC>0&&aC<100){aD.css({opacity:aC/100});}else{if(aC==0||aC==100){aD.css({opacity:""});}}},E=function(){az.fields.hex.val(K.current.get_Rgba()||"");az.setValuesFromHex();e.isFunction(az.valuesChanged)&&az.valuesChanged(az);},D=function(aC){an(aC.target.value);},ae=function(){E();},s=function(){E();aj.expandable&&w.hide();e.isFunction(w.cancelCallback)&&w.cancelCallback(K.active);},X=function(){var aD=K.active;K.current=new f({hex:aD.get_Rgba()});var aC=aD.get_Hex();l.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(l,az.color.get_A());if(aj.expandable){o.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(m,100-aD.get_A());if(aj.bindToInput){aj.input.val(aD.get_Rgba()||"").css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent",color:aD.get_V()>75?"#000000":"#ffffff"});}}e.isFunction(w.commitCallback)&&w.commitCallback(aD);},p=function(){X();aj.expandable&&w.hide();},ag=function(){w.show();},W=function(aE){var aC=aj.element,aD=aj.page;M=parseInt(V.css("left"));L=parseInt(V.css("top"));at=aE.pageX;aq=aE.pageY;e(document).bind("mousemove",k).bind("mouseup",r);aE.stopPropagation();aE.preventDefault();return false;},k=function(aC){V.css({left:M-(at-aC.pageX)+"px",top:L-(aq-aC.pageY)+"px"});aC.stopPropagation();aC.preventDefault();return false;},r=function(aC){e(document).unbind("mousemove",k).unbind("mouseup",r);aC.stopPropagation();aC.preventDefault();return false;},F=function(aC){az.fields.hex.val(w.settings.window.input.val());az.bindedHexKeyUp(aC);},H=function(aC){az.fields.hex.val(new f({hex:e(this).attr("title")}).get_Rgba()||"");az.setValuesFromHex();e.isFunction(az.valuesChanged)&&az.valuesChanged(az);};e.extend(true,w,{id:w.attr("id"),settings:y,color:null,icon:null,commitCallback:e.isFunction(h[1])&&h[1]||null,liveCallback:e.isFunction(h[2])&&h[2]||null,cancelCallback:e.isFunction(h[3])&&h[3]||null,show:function(){if(document.all){var aD=false;for(i=0;i<c.length;i++){if(aD){c[i].color.add(c[i].icon).css({display:"none"});}if(c[i].id==w.id){aD=true;}}}K.current=new f({hex:K.active.get_Rgba()});var aC=K.active.get_Hex();l.css({backgroundColor:aC&&aC.length==6?"#"+aC:"transparent"});ad(l,K.active.get_A());V.css({display:"block"});v();},hide:function(){if(document.all){var aC=false;for(i=0;i<c.length;i++){if(aC){c[i].color.add(c[i].icon).css({display:"block"});}if(c[i].id==w.id){aC=true;}}}V.css({display:"none"});},destroy:function(){if(aj.expandable){C=V.find(".jPicker_Icon").unbind("click",ag);}if(aj.bindToInput){aj.input.unbind("keyup",F).unbind("change",F);}aa.add(aA).add(ak).add(am).add(ao).add(I).unbind("click",D);l.unbind("click",ae);ab.unbind("click",s);ap.unbind("click",p);if(aj.expandable){u.unbind("mousedown",W);}V.find(".jPicker_QuickColor").unbind("click",H);aa=null;aA=null;ak=null;am=null;ao=null;I=null;aw=null;ay=null;av=null;au=null;T=null;S=null;R=null;Q=null;P=null;O=null;J=null;A=null;l=null;ap=null;ab=null;ai=null;w.color=null;w.icon=null;G.destroy();G=null;Y.destroy();Y=null;az.destroy();az=null;w.commitCallback=null;w.cancelCallback=null;w.liveCallback=null;V.html("");for(i=0;i<c.length;i++){if(c[i].id==w.id){c.splice(i,1);}}}});var q=w.settings.images,aj=w.settings.window,af=w.settings.localization,K=w.settings.color;V=aj.expandable?w.next().find(".jPicker_Container"):w;if(aj.expandable){V.css({left:aj.position.x=="left"?"-526px":aj.position.x=="center"?"-259px":aj.position.x=="right"?"0px":aj.position.x=="screenCenter"?((e(document).width()>>1)-259)-w.next().offset().left+"px":aj.position.x,position:"absolute",top:aj.position.y=="top"?"-350px":aj.position.y=="center"?"-158px":aj.position.y=="bottom"?"25px":aj.position.y});}if((typeof(K.active)).toString().toLowerCase()=="string"){K.active=new f({hex:K.active});}V.html('<table class="jPicker_table"><tbody>'+(aj.expandable?'<tr><td class="jPicker_MoveBar" colspan="6">&nbsp;</td></tr>':"")+'<tr><td rowspan="9"><h2 class="jPicker_Title">'+(aj.title||af.text.title)+'</h2><div class="jPicker_ColorMap"><span class="jPicker_ColorMap_l1">&nbsp;</span><span class="jPicker_ColorMap_l2">&nbsp;</span><span class="jPicker_ColorMap_l3">&nbsp;</span><img src="'+q.clientPath+q.colorMap.arrow.file+'" class="jPicker_ColorMap_Arrow"/></div></td><td rowspan="9"><div class="jPicker_ColorBar"><span class="jPicker_ColorBar_l1">&nbsp;</span><span class="jPicker_ColorBar_l2">&nbsp;</span><span class="jPicker_ColorBar_l3">&nbsp;</span><span class="jPicker_ColorBar_l4">&nbsp;</span><span class="jPicker_ColorBar_l5">&nbsp;</span><span class="jPicker_ColorBar_l6">&nbsp;</span><img src="'+q.clientPath+q.colorBar.arrow.file+'" class="jPicker_ColorBar_Arrow"/></div></td><td colspan="3" class="jPicker_Preview">'+af.text.newColor+'<div class="jPicker_NewCurrent"><span class="jPicker_Active" title="'+af.tooltips.colors.newColor+'">&nbsp;</span><span class="jPicker_Current" title="'+af.tooltips.colors.currentColor+'">&nbsp;</span></div>'+af.text.currentColor+'</td><td rowspan="9" class="jPicker_OkCancel"><input type="button" class="jPicker_Ok" value="'+af.text.ok+'" title="'+af.tooltips.buttons.ok+'"/><input type="button" class="jPicker_Cancel" value="'+af.text.cancel+'" title="'+af.tooltips.buttons.cancel+'"/><hr/><div class="jPicker_Grid">&nbsp;</div></td></tr><tr><td><input type="radio" class="jPicker_HueRadio" id="jPicker_Hue_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="h" title="'+af.tooltips.hue.radio+'"/></td><td><label for="jPicker_Hue_'+c.length+'" title="'+af.tooltips.hue.radio+'">H:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_HueText" value="'+K.active.get_H()+'" title="'+af.tooltips.hue.textbox+'"/> &deg;</td></tr><tr><td><input type="radio" class="jPicker_SaturationRadio" id="jPicker_Saturation_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="s" title="'+af.tooltips.saturation.radio+'"/></td><td><label for="jPicker_Saturation_'+c.length+'" title="'+af.tooltips.saturation.radio+'">S:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_SaturationText" value="'+K.active.get_S()+'" title="'+af.tooltips.saturation.textbox+'"/> %</td></tr><tr><td><input type="radio" class="jPicker_BrightnessRadio" id="jPicker_Brightness_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="v" title="'+af.tooltips.brightness.radio+'"/><br/><br/></td><td><label for="jPicker_Brightness_'+c.length+'" title="'+af.tooltips.brightness.radio+'">B:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_BrightnessText" value="'+K.active.get_V()+'" title="'+af.tooltips.brightness.textbox+'"/> %</td></tr><tr><td><input type="radio" class="jPicker_RedRadio" id="jPicker_Red_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="r" title="'+af.tooltips.red.radio+'"/></td><td><label for="jPicker_Red_'+c.length+'" title="'+af.tooltips.red.radio+'">R:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_RedText" value="'+K.active.get_R()+'" title="'+af.tooltips.red.textbox+'"/></td></tr><tr><td><input type="radio" class="jPicker_GreenRadio" id="jPicker_Green_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="g" title="'+af.tooltips.green.radio+'"/></td><td><label for="jPicker_Green_'+c.length+'" title="'+af.tooltips.green.radio+'">G:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_GreenText" value="'+K.active.get_G()+'" title="'+af.tooltips.green.textbox+'"/></td></tr><tr><td><input type="radio" class="jPicker_BlueRadio" id="jPicker_Blue_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="b" title="'+af.tooltips.blue.radio+'"/></td><td><label for="jPicker_Blue_'+c.length+'" title="'+af.tooltips.blue.radio+'">B:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_BlueText" value="'+K.active.get_B()+'" title="'+af.tooltips.blue.textbox+'"/></td></tr><tr><td><input type="radio" class="jPicker_AlphaRadio" id="jPicker_Alpha_'+c.length+'" name="jPicker_Mode_'+c.length+'" value="a" title="'+af.tooltips.alpha.radio+'"/></td><td><label for="jPicker_Alpha_'+c.length+'" title="'+af.tooltips.alpha.radio+'">A:</label></td><td class="jPicker_Text"><input type="text" class="jPicker_AlphaText" value="'+K.active.get_A()+'" title="'+af.tooltips.alpha.textbox+'"/> %</td></tr><tr><td class="jPicker_HexCol"><label for="jPicker_Hex_'+c.length+'" title="'+af.tooltips.hex.textbox+'">#:</label></td><td class="jPicker_EnterHex" colspan="2"><input type="text" class="jPicker_HexText" id="jPicker_Hex_'+c.length+'" value="'+K.active.get_Rgba()+'" title="'+af.tooltips.hex.textbox+'"/></td></tr></tbody></table>');aa=V.find(".jPicker_HueRadio");aA=V.find(".jPicker_SaturationRadio");ak=V.find(".jPicker_BrightnessRadio");am=V.find(".jPicker_RedRadio");ao=V.find(".jPicker_GreenRadio");I=V.find(".jPicker_BlueRadio");aw=V.find(".jPicker_AlphaRadio");ay=V.find(".jPicker_ColorMap_l1");av=V.find(".jPicker_ColorMap_l2");au=V.find(".jPicker_ColorMap_l3");T=V.find(".jPicker_ColorBar_l1");S=V.find(".jPicker_ColorBar_l2");R=V.find(".jPicker_ColorBar_l3");Q=V.find(".jPicker_ColorBar_l4");P=V.find(".jPicker_ColorBar_l5");O=V.find(".jPicker_ColorBar_l6");J=V.find(".jPicker_NewCurrent");var ac=K.active.get_Hex();A=V.find(".jPicker_Active").css({backgroundColor:ac&&ac.length==6?"#"+ac:"transparent"});l=V.find(".jPicker_Current").css({backgroundColor:ac&&ac.length==6?"#"+ac:"transparent"});ap=V.find(".jPicker_Ok");ab=V.find(".jPicker_Cancel");ai=V.find(".jPicker_Grid");w.color=e(".Picker_Color");w.icon=e(".jPicker_Icon");az=new b(V,n);G=new d(V.find(".jPicker_ColorMap"),{map:{width:q.colorMap.width,height:q.colorMap.height},arrow:{image:q.clientPath+q.colorMap.arrow.file,width:q.colorMap.arrow.width,height:q.colorMap.arrow.height}},B);Y=new d(V.find(".jPicker_ColorBar"),{map:{width:q.colorBar.width,height:q.colorBar.height},arrow:{image:q.clientPath+q.colorBar.arrow.file,width:q.colorBar.arrow.width,height:q.colorBar.arrow.height}},al);t(ay,q.clientPath+"Maps.png");t(av,q.clientPath+"Maps.png");t(au,q.clientPath+"map-opacity.png");t(T,q.clientPath+"Bars.png");t(S,q.clientPath+"Bars.png");t(R,q.clientPath+"Bars.png");t(Q,q.clientPath+"Bars.png");t(P,q.clientPath+"bar-opacity.png");t(O,q.clientPath+"AlphaBar.png");t(J,q.clientPath+"preview-opacity.png");if(aj.expandable){o=w.next().find(".jPicker_Color").css({backgroundColor:ac&&ac.length==6?"#"+ac:"transparent"});m=w.next().find(".jPicker_Alpha");t(m,q.clientPath+"bar-opacity.png");ad(m,100-K.active.get_A());C=w.next().find(".jPicker_Icon").css({backgroundImage:"url("+q.clientPath+q.picker.file+")"}).bind("click",ag);if(aj.bindToInput){aj.input.bind("keyup",F).bind("change",F);}}aa.add(aA).add(ak).add(am).add(ao).add(I).add(aw).bind("click",D);l.bind("click",ae);ab.bind("click",s);ap.bind("click",p);if(aj.expandable){u=V.find(".jPicker_MoveBar").bind("mousedown",W);}if(K.quickList&&K.quickList.length>0){ai.html("");for(i=0;i<K.quickList.length;i++){if((typeof(K.quickList[i])).toString().toLowerCase()=="string"){K.quickList[i]=new f({hex:K.quickList[i]});}var ax=K.quickList[i].get_Rgba();ai.append('<span class="jPicker_QuickColor" title="'+(ax&&"#"+ax||"")+'">&nbsp;</span>');var N=K.quickList[i].get_Hex();V.find(".jPicker_QuickColor").eq(i).css({backgroundColor:N&&N.length==6?"#"+N:"transparent",backgroundImage:N?"none":"url("+q.clientPath+"NoColor.png)"}).click(H);}}an(K.mode);az.fields.hex.val(K.active.get_Rgba()||"");az.setValuesFromHex();v();ah();if(!aj.expandable){w.show();}c.push(w);});};e.fn.jPicker.defaults={window:{title:null,position:{x:"screenCenter",y:"top"},expandable:false,liveUpdate:true},color:{mode:"h",active:new f({hex:"#ffcc00ff"}),quickList:[new f({h:360,s:33,v:100}),new f({h:360,s:66,v:100}),new f({h:360,s:100,v:100}),new f({h:360,s:100,v:75}),new f({h:360,s:100,v:50}),new f({h:180,s:0,v:100}),new f({h:30,s:33,v:100}),new f({h:30,s:66,v:100}),new f({h:30,s:100,v:100}),new f({h:30,s:100,v:75}),new f({h:30,s:100,v:50}),new f({h:180,s:0,v:90}),new f({h:60,s:33,v:100}),new f({h:60,s:66,v:100}),new f({h:60,s:100,v:100}),new f({h:60,s:100,v:75}),new f({h:60,s:100,v:50}),new f({h:180,s:0,v:80}),new f({h:90,s:33,v:100}),new f({h:90,s:66,v:100}),new f({h:90,s:100,v:100}),new f({h:90,s:100,v:75}),new f({h:90,s:100,v:50}),new f({h:180,s:0,v:70}),new f({h:120,s:33,v:100}),new f({h:120,s:66,v:100}),new f({h:120,s:100,v:100}),new f({h:120,s:100,v:75}),new f({h:120,s:100,v:50}),new f({h:180,s:0,v:60}),new f({h:150,s:33,v:100}),new f({h:150,s:66,v:100}),new f({h:150,s:100,v:100}),new f({h:150,s:100,v:75}),new f({h:150,s:100,v:50}),new f({h:180,s:0,v:50}),new f({h:180,s:33,v:100}),new f({h:180,s:66,v:100}),new f({h:180,s:100,v:100}),new f({h:180,s:100,v:75}),new f({h:180,s:100,v:50}),new f({h:180,s:0,v:40}),new f({h:210,s:33,v:100}),new f({h:210,s:66,v:100}),new f({h:210,s:100,v:100}),new f({h:210,s:100,v:75}),new f({h:210,s:100,v:50}),new f({h:180,s:0,v:30}),new f({h:240,s:33,v:100}),new f({h:240,s:66,v:100}),new f({h:240,s:100,v:100}),new f({h:240,s:100,v:75}),new f({h:240,s:100,v:50}),new f({h:180,s:0,v:20}),new f({h:270,s:33,v:100}),new f({h:270,s:66,v:100}),new f({h:270,s:100,v:100}),new f({h:270,s:100,v:75}),new f({h:270,s:100,v:50}),new f({h:180,s:0,v:10}),new f({h:300,s:33,v:100}),new f({h:300,s:66,v:100}),new f({h:300,s:100,v:100}),new f({h:300,s:100,v:75}),new f({h:300,s:100,v:50}),new f({h:180,s:0,v:0}),new f({h:330,s:33,v:100}),new f({h:330,s:66,v:100}),new f({h:330,s:100,v:100}),new f({h:330,s:100,v:75}),new f({h:330,s:100,v:50}),new f()]},images:{clientPath:"/jPicker/images/",colorMap:{width:256,height:256,arrow:{file:"mappoint.gif",width:15,height:15}},colorBar:{width:20,height:256,arrow:{file:"rangearrows.gif",width:40,height:9}},picker:{file:"picker.gif",width:25,height:24}},localization:{text:{title:"Drag Markers To Pick A Color",newColor:"new",currentColor:"current",ok:"OK",cancel:"Cancel"},tooltips:{colors:{newColor:"New Color - Press &ldquo;OK&rdquo; To Commit",currentColor:"Click To Revert To Original Color"},buttons:{ok:"Commit To This Color Selection",cancel:"Cancel And Revert To Original Color"},hue:{radio:"Set To &ldquo;Hue&rdquo; Color Mode",textbox:"Enter A &ldquo;Hue&rdquo; Value (0-360&deg;)"},saturation:{radio:"Set To &ldquo;Saturation&rdquo; Color Mode",textbox:"Enter A &ldquo;Saturation&rdquo; Value (0-100%)"},brightness:{radio:"Set To &ldquo;Brightness&rdquo; Color Mode",textbox:"Enter A &ldquo;Brightness&rdquo; Value (0-100%)"},red:{radio:"Set To &ldquo;Red&rdquo; Color Mode",textbox:"Enter A &ldquo;Red&rdquo; Value (0-255)"},green:{radio:"Set To &ldquo;Green&rdquo; Color Mode",textbox:"Enter A &ldquo;Green&rdquo; Value (0-255)"},blue:{radio:"Set To &ldquo;Blue&rdquo; Color Mode",textbox:"Enter A &ldquo;Blue&rdquo; Value (0-255)"},alpha:{radio:"Set To &ldquo;Alpha&rdquo; Color Mode",textbox:"Enter A &ldquo;Alpha&rdquo; Value (0-100)"},hex:{textbox:"Enter A &ldquo;Hex&rdquo; Color Value (#000000-#ffffff)"}}}};})(jQuery,"1.0.12"); \ No newline at end of file
diff --git a/files_svgedit/js/jgraduate/jquery.jgraduate.min.js b/files_svgedit/js/jgraduate/jquery.jgraduate.min.js
new file mode 100644
index 000000000..7a1adde2e
--- /dev/null
+++ b/files_svgedit/js/jgraduate/jquery.jgraduate.min.js
@@ -0,0 +1 @@
+(function(){var a={svg:"http://www.w3.org/2000/svg",xlink:"http://www.w3.org/1999/xlink"};if(!window.console){window.console=new function(){this.log=function(b){};this.dir=function(b){}}}$.jGraduate={Paint:function(c){var b=c||{};this.alpha=b.alpha||100;if(b.copy){this.type=b.copy.type;this.alpha=b.copy.alpha;this.solidColor=null;this.linearGradient=null;this.radialGradient=null;switch(this.type){case"none":break;case"solidColor":this.solidColor=b.copy.solidColor;break;case"linearGradient":this.linearGradient=b.copy.linearGradient.cloneNode(true);break;case"radialGradient":this.radialGradient=b.copy.radialGradient.cloneNode(true);break}}else{if(b.linearGradient){this.type="linearGradient";this.solidColor=null;this.radialGradient=null;this.linearGradient=b.linearGradient.cloneNode(true)}else{if(b.radialGradient){this.type="radialGradient";this.solidColor=null;this.linearGradient=null;this.radialGradient=b.radialGradient.cloneNode(true)}else{if(b.solidColor){this.type="solidColor";this.solidColor=b.solidColor}else{this.type="none";this.solidColor=null;this.linearGradient=null;this.radialGradient=null}}}}}};jQuery.fn.jGraduateDefaults={paint:new $.jGraduate.Paint(),window:{pickerTitle:"Drag markers to pick a paint",},images:{clientPath:"images/",},};jQuery.fn.jGraduate=function(c){var b=arguments;return this.each(function(){var k=$(this),g=$.extend(true,{},jQuery.fn.jGraduateDefaults,c),p=k.attr("id"),v="#"+k.attr("id")+" ";if(!v){alert("Container element must have an id attribute to maintain unique id strings for sub-elements.");return}var h=function(){if(k.paint.type=="radialGradient"){k.paint.linearGradient=null}else{if(k.paint.type=="linearGradient"){k.paint.radialGradient=null}else{if(k.paint.type=="solidColor"){k.paint.linearGradient=null;k.paint.radialGradient=null}}}$.isFunction(k.okCallback)&&k.okCallback(k.paint);k.hide()},i=function(){$.isFunction(k.cancelCallback)&&k.cancelCallback();k.hide()};$.extend(true,k,{paint:new $.jGraduate.Paint({copy:g.paint}),okCallback:$.isFunction(b[1])&&b[1]||null,cancelCallback:$.isFunction(b[2])&&b[2]||null,});var j=k.position(),r=null;if(k.paint.type=="none"){k.paint=$.jGraduate.Paint({solidColor:"ffffff"})}k.addClass("jGraduate_Picker");k.html('<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_lgPick"></div><div class="jGraduate_rgPick"></div>');var u=$(v+"> .jGraduate_colPick");var q=$(v+"> .jGraduate_lgPick");var f=$(v+"> .jGraduate_rgPick");q.html('<div id="'+p+'_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+g.window.pickerTitle+'</h2><div id="'+p+'_lg_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+p+'_lg_jGraduate_Opacity" class="jGraduate_Opacity" title="Click to set overall opacity of the gradient paint"><img id="'+p+'_lg_jGraduate_AlphaArrows" class="jGraduate_AlphaArrows" src="'+g.images.clientPath+'rangearrows2.gif"></img></div></div><div class="jGraduate_Form"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Stop</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+p+'_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/><div id="'+p+'_jGraduate_colorBoxBegin" class="colorBox"></div><label id="'+p+'_jGraduate_beginOpacity"> 100%</label></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Stop</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+p+'_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/><div id="'+p+'_jGraduate_colorBoxEnd" class="colorBox"></div><label id="'+p+'_jGraduate_endOpacity">100%</label></div></div><div class="lg_jGraduate_OpacityField"><label class="lg_jGraduate_OpacityLabel">A: </label><input type="text" id="'+p+'_lg_jGraduate_OpacityInput" class="jGraduate_OpacityInput" size="3" value="100"/>%</div></div><div class="jGraduate_OkCancel"><input type="button" id="'+p+'_lg_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+p+'_lg_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div><div class="jGraduate_LightBox"></div><div id="'+p+'_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');f.html('<div class="jGraduate_Swatch"><h2 class="jGraduate_Title">'+g.window.pickerTitle+'</h2><div id="'+p+'_rg_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="'+p+'_rg_jGraduate_Opacity" class="jGraduate_Opacity" title="Click to set overall opacity of the gradient paint"><img id="'+p+'_rg_jGraduate_AlphaArrows" class="jGraduate_AlphaArrows" src="'+g.images.clientPath+'rangearrows2.gif"></img></div></div><div id="jGraduate_radColors" class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Colors</label><div class="jGraduate_Form_Section jGraduate_Colorblocks"><div class="jGraduate_colorblock"><span>Center:</span><div id="'+p+'_jGraduate_colorBoxCenter" class="colorBox"></div><label id="'+p+'_rg_jGraduate_centerOpacity"> 100%</label></div><div class="jGraduate_colorblock"><span>Outer:</span><div id="'+p+'_jGraduate_colorBoxOuter" class="colorBox"></div><label id="'+p+'_jGraduate_outerOpacity"> 100%</label></div></div></div><div class="jGraduate_StopSection"></div><div class="jGraduate_Form"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="'+p+'_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="'+p+'_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="'+p+'_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="'+p+'_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_RadiusField"><label class="jGraduate_Form_Heading">Radius</label><div class="jGraduate_Form_Section"><div id="'+p+'_jGraduate_RadiusContainer" class="jGraduate_RadiusContainer"></div><input type="text" id="'+p+'_jGraduate_RadiusInput" size="3" value="100"/>%<div id="'+p+'_jGraduate_Radius" class="jGraduate_Radius" title="Click to set radius"><img id="'+p+'_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="'+g.images.clientPath+'rangearrows2.gif"></img></div></div></div></div><div class="rg_jGraduate_OpacityField"><label class="rg_jGraduate_OpacityLabel">A: </label><input type="text" id="'+p+'_rg_jGraduate_OpacityInput" class="jGraduate_OpacityInput" size="3" value="100"/>%</div><div class="jGraduate_OkCancel"><input type="button" id="'+p+'_rg_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="'+p+'_rg_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div><div class="jGraduate_LightBox"></div><div id="'+p+'_rg_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>');var t=256,o=0,n=0,d=15/2,m=t-2*o,l=t-2*n;$.each(["lg","rg"],function(z){var y=p+"_"+this;var w=document.getElementById(y+"_jGraduate_GradContainer");var x=w.appendChild(document.createElementNS(a.svg,"svg"));x.id=y+"_jgraduate_svg";x.setAttribute("width",t);x.setAttribute("height",t);x.setAttribute("xmlns",a.svg)});(function(){var Q=document.getElementById(p+"_lg_jgraduate_svg");if(k.paint.type=="linearGradient"){k.paint.linearGradient.id=p+"_jgraduate_grad";k.paint.linearGradient=Q.appendChild(k.paint.linearGradient.cloneNode(true))}else{var I=Q.appendChild(document.createElementNS(a.svg,"linearGradient"));I.id=p+"_jgraduate_grad";I.setAttribute("x1","0.0");I.setAttribute("y1","0.0");I.setAttribute("x2","1.0");I.setAttribute("y2","1.0");var V=I.appendChild(document.createElementNS(a.svg,"stop"));V.setAttribute("offset","0.0");V.setAttribute("stop-color","#ff0000");var E=I.appendChild(document.createElementNS(a.svg,"stop"));E.setAttribute("offset","1.0");E.setAttribute("stop-color","#ffff00");k.paint.linearGradient=I}var D=k.paint.alpha;$("#"+p+"_lg_jGraduate_OpacityInput").val(D);var S=parseInt(255*(D/100))-4.5;$("#"+p+"_lg_jGraduate_AlphaArrows").css({"margin-left":S});var U=parseFloat(k.paint.linearGradient.getAttribute("x1")||0),C=parseFloat(k.paint.linearGradient.getAttribute("y1")||0),T=parseFloat(k.paint.linearGradient.getAttribute("x2")||1),A=parseFloat(k.paint.linearGradient.getAttribute("y2")||0);var y=document.createElementNS(a.svg,"rect");y.id=p+"_lg_jgraduate_rect";y.setAttribute("x",o);y.setAttribute("y",n);y.setAttribute("width",l);y.setAttribute("height",l);y.setAttribute("fill","url(#"+p+"_jgraduate_grad)");y.setAttribute("fill-opacity","1.0");y=Q.appendChild(y);$("#"+p+"_lg_jgraduate_rect").attr("fill-opacity",D/100);var x=document.createElementNS(a.svg,"image");x.id=p+"_stop1";x.setAttribute("class","stop");x.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint.gif");x.setAttributeNS(a.xlink,"title","Begin Stop");x.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("Begin Stop"));x.setAttribute("width",18);x.setAttribute("height",18);x.setAttribute("x",o+m*U-d);x.setAttribute("y",n+l*C-d);x.setAttribute("cursor","move");x=Q.appendChild(x);var P=document.createElementNS(a.svg,"image");P.id=p+"_stop2";P.setAttribute("class","stop");P.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint.gif");P.setAttributeNS(a.xlink,"title","End Stop");P.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("End Stop"));P.setAttribute("width",18);P.setAttribute("height",18);P.setAttribute("x",o+m*T-d);P.setAttribute("y",n+l*A-d);P.setAttribute("cursor","move");P=Q.appendChild(P);$("#"+p+"_lg_jGraduate_Ok").bind("click",function(){k.paint.type="linearGradient";k.paint.solidColor=null;h()});$("#"+p+"_lg_jGraduate_Cancel").bind("click",function(Y){i()});var U=k.paint.linearGradient.getAttribute("x1");if(!U){U="0.0"}var G=$("#"+p+"_jGraduate_x1");G.val(U);G.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.linearGradient.setAttribute("x1",this.value);x.setAttribute("x",o+m*this.value-d)});var C=k.paint.linearGradient.getAttribute("y1");if(!C){C="0.0"}var F=$("#"+p+"_jGraduate_y1");F.val(C);F.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.linearGradient.setAttribute("y1",this.value);x.setAttribute("y",n+l*this.value-d)});var T=k.paint.linearGradient.getAttribute("x2");if(!T){T="1.0"}var K=$("#"+p+"_jGraduate_x2");K.val(T);K.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=1}k.paint.linearGradient.setAttribute("x2",this.value);P.setAttribute("x",o+m*this.value-d)});var A=k.paint.linearGradient.getAttribute("y2");if(!A){A="0.0"}y2Input=$("#"+p+"_jGraduate_y2");y2Input.val(A);y2Input.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.linearGradient.setAttribute("y2",this.value);P.setAttribute("y",n+l*this.value-d)});var J=k.paint.linearGradient.getElementsByTagNameNS(a.svg,"stop");var w=J.length;if(w<2){while(w<2){k.paint.linearGradient.appendChild(document.createElementNS(a.svg,"stop"));++w}J=k.paint.linearGradient.getElementsByTagNameNS(a.svg,"stop")}var X=function(aa,ac){var ab=ac.offset();var Z=(aa.pageX-ab.left-parseInt(ac.css("border-left-width")));if(Z>255){Z=255}if(Z<0){Z=0}var Y=Z-4.5;Z/=255;$("#"+p+"_lg_jGraduate_AlphaArrows").css({"margin-left":Y});$("#"+p+"_lg_jgraduate_rect").attr("fill-opacity",Z);Z=parseInt(Z*100);$("#"+p+"_lg_jGraduate_OpacityInput").val(Z);k.paint.alpha=Z};var W=false;$("#"+p+"_lg_jGraduate_Opacity").mousedown(function(Y){X(Y,$(this));W=true;Y.preventDefault()}).mousemove(function(Y){if(W){X(Y,$(this));Y.preventDefault()}}).mouseup(function(Y){X(Y,$(this));W=false;Y.preventDefault()});var M=null;var B=-1,z=-1;$(".stop, #color_picker_lg_jGraduate_GradContainer image").mousedown(function(Y){M=this;B=Y.clientX;z=Y.clientY;Y.preventDefault()});$("#"+p+"_lg_jgraduate_svg").mousemove(function(aa){if(null!=M){var ac=aa.clientX-B;var Z=aa.clientY-z;B+=ac;z+=Z;var Y=parseFloat(M.getAttribute("x"))+ac;var ae=parseFloat(M.getAttribute("y"))+Z;if(Y<o-d){Y=o-d}if(ae<n-d){ae=n-d}if(Y>o+m-d){Y=o+m-d}if(ae>n+l-d){ae=n+l-d}M.setAttribute("x",Y);M.setAttribute("y",ae);var ad=(Y-o+d)/m;var ab=(ae-n+d)/l;if(M.id==(p+"_stop1")){G.val(ad);F.val(ab);k.paint.linearGradient.setAttribute("x1",ad);k.paint.linearGradient.setAttribute("y1",ab)}else{K.val(ad);y2Input.val(ab);k.paint.linearGradient.setAttribute("x2",ad);k.paint.linearGradient.setAttribute("y2",ab)}aa.preventDefault()}});$("#"+p+"_lg_jgraduate_svg").mouseup(function(Y){M=null});var H=J[0].getAttribute("stop-color");if(!H){H="#000"}beginColorBox=$("#"+p+"_jGraduate_colorBoxBegin");beginColorBox.css({"background-color":H});var R=J[0].getAttribute("stop-opacity");if(!R){R="1.0"}$("#"+p+"lg_jGraduate_beginOpacity").html((R*100)+"%");var N=J[J.length-1].getAttribute("stop-color");if(!N){N="#000"}endColorBox=$("#"+p+"_jGraduate_colorBoxEnd");endColorBox.css({"background-color":N});var L=J[J.length-1].getAttribute("stop-opacity");if(!L){L="1.0"}$("#"+p+"jGraduate_endOpacity").html((L*100)+"%");$("#"+p+"_jGraduate_colorBoxBegin").click(function(){$("div.jGraduate_LightBox").show();var Z=$(this);var Y=(parseFloat(R)*255).toString(16);while(Y.length<2){Y="0"+Y}r=H.substr(1)+Y;$("#"+p+"_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the start color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(aa){H=aa.get_Hex()?("#"+aa.get_Hex()):"none";R=aa.get_A()?aa.get_A()/100:1;Z.css("background",H);$("#"+p+"_jGraduate_beginOpacity").html(parseInt(R*100)+"%");J[0].setAttribute("stop-color",H);J[0].setAttribute("stop-opacity",R);$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()})});$("#"+p+"_jGraduate_colorBoxEnd").click(function(){$("div.jGraduate_LightBox").show();var Z=$(this);var Y=(parseFloat(L)*255).toString(16);while(Y.length<2){Y="0"+Y}r=N.substr(1)+Y;$("#"+p+"_jGraduate_stopPicker").css({left:100,top:15}).jPicker({window:{title:"Pick the end color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(aa){N=aa.get_Hex()?("#"+aa.get_Hex()):"none";L=aa.get_A()?aa.get_A()/100:1;Z.css("background",N);$("#"+p+"_jGraduate_endOpacity").html(parseInt(L*100)+"%");J[1].setAttribute("stop-color",N);J[1].setAttribute("stop-opacity",L);$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_jGraduate_stopPicker").hide()})});var O=(k.paint.alpha*255/100).toString(16);while(O.length<2){O="0"+O}r=k.paint.solidColor=="none"?"":k.paint.solidColor+O;u.jPicker({window:{title:g.window.pickerTitle},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(Y){k.paint.type="solidColor";k.paint.alpha=Y.get_A()?Y.get_A():100;k.paint.solidColor=Y.get_Hex()?Y.get_Hex():"none";k.paint.linearGradient=null;h()},null,function(){i()})}());(function(){var w=document.getElementById(p+"_rg_jgraduate_svg");if(k.paint.type=="radialGradient"){k.paint.radialGradient.id=p+"_rg_jgraduate_grad";k.paint.radialGradient=w.appendChild(k.paint.radialGradient.cloneNode(true))}else{var G=w.appendChild(document.createElementNS(a.svg,"radialGradient"));G.id=p+"_rg_jgraduate_grad";G.setAttribute("cx","0.5");G.setAttribute("cy","0.5");G.setAttribute("r","0.5");var B=G.appendChild(document.createElementNS(a.svg,"stop"));B.setAttribute("offset","0.0");B.setAttribute("stop-color","#ff0000");var E=G.appendChild(document.createElementNS(a.svg,"stop"));E.setAttribute("offset","1.0");E.setAttribute("stop-color","#ffff00");k.paint.radialGradient=G}var R=k.paint.alpha;$("#"+p+"_rg_jGraduate_OpacityInput").val(R);var D=parseInt(255*(R/100))-4.5;$("#"+p+"_rg_jGraduate_AlphaArrows").css({"margin-left":D});var G=k.paint.radialGradient;var M=parseFloat(G.getAttribute("cx")||0.5),K=parseFloat(G.getAttribute("cy")||0.5),O=parseFloat(G.getAttribute("fx")||0.5),N=parseFloat(G.getAttribute("fy")||0.5);var H=G.getAttribute("fx")!=null&&!(M==O&&K==N);var U=document.createElementNS(a.svg,"rect");U.id=p+"_rg_jgraduate_rect";U.setAttribute("x",o);U.setAttribute("y",n);U.setAttribute("width",l);U.setAttribute("height",l);U.setAttribute("fill","url(#"+p+"_rg_jgraduate_grad)");U.setAttribute("fill-opacity","1.0");U=w.appendChild(U);$("#"+p+"_rg_jgraduate_rect").attr("fill-opacity",R/100);var V=document.createElementNS(a.svg,"image");V.id=p+"_center_pt";V.setAttribute("class","stop");V.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint_c.png");V.setAttributeNS(a.xlink,"title","Center Point");V.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("Center Point"));V.setAttribute("width",18);V.setAttribute("height",18);V.setAttribute("x",o+m*M-d);V.setAttribute("y",n+l*K-d);V.setAttribute("cursor","move");var A=document.createElementNS(a.svg,"image");A.id=p+"_focus_pt";A.setAttribute("class","stop");A.setAttributeNS(a.xlink,"href",g.images.clientPath+"mappoint_f.png");A.setAttributeNS(a.xlink,"title","Focus Point");A.appendChild(document.createElementNS(a.svg,"title")).appendChild(document.createTextNode("Focus Point"));A.setAttribute("width",18);A.setAttribute("height",18);A.setAttribute("x",o+m*O-d);A.setAttribute("y",n+l*N-d);A.setAttribute("cursor","move");A=w.appendChild(A);V=w.appendChild(V);$("#"+p+"_rg_jGraduate_Ok").bind("click",function(){k.paint.type="radialGradient";k.paint.solidColor=null;h()});$("#"+p+"_rg_jGraduate_Cancel").bind("click",function(ag){i()});var M=k.paint.radialGradient.getAttribute("cx");if(!M){M="0.0"}var af=$("#"+p+"_jGraduate_cx");af.val(M);af.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.radialGradient.setAttribute("cx",this.value);V.setAttribute("x",o+m*this.value-d)});var K=k.paint.radialGradient.getAttribute("cy");if(!K){K="0.0"}var P=$("#"+p+"_jGraduate_cy");P.val(K);P.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.radialGradient.setAttribute("cy",this.value);V.setAttribute("y",n+l*this.value-d)});var O=k.paint.radialGradient.getAttribute("fx");if(!O){O="1.0"}var ae=$("#"+p+"_jGraduate_fx");ae.val(O);ae.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=1}k.paint.radialGradient.setAttribute("fx",this.value);A.setAttribute("x",o+m*this.value-d)});var N=k.paint.radialGradient.getAttribute("fy");if(!N){N="0.0"}var Q=$("#"+p+"_jGraduate_fy");Q.val(N);Q.change(function(){if(isNaN(parseFloat(this.value))||this.value<0||this.value>1){this.value=0}k.paint.radialGradient.setAttribute("fy",this.value);A.setAttribute("y",n+l*this.value-d)});if(!H){A.setAttribute("display","none");ae.val("");Q.val("")}$("#"+p+"_jGraduate_match_ctr")[0].checked=!H;var J,I;$("#"+p+"_jGraduate_match_ctr").change(function(){H=!this.checked;A.setAttribute("display",H?"inline":"none");ae.val("");Q.val("");var ai=k.paint.radialGradient;if(!H){J=ai.getAttribute("fx");I=ai.getAttribute("fy");ai.removeAttribute("fx");ai.removeAttribute("fy")}else{var ah=J||0.5;var ag=I||0.5;ai.setAttribute("fx",ah);ai.setAttribute("fy",ag);ae.val(ah);Q.val(ag)}});var T=k.paint.radialGradient.getElementsByTagNameNS(a.svg,"stop");var X=T.length;if(X<2){while(X<2){k.paint.radialGradient.appendChild(document.createElementNS(a.svg,"stop"));++X}T=k.paint.radialGradient.getElementsByTagNameNS(a.svg,"stop")}var ab=k.paint.radialGradient.getAttribute("r")-0;var Z=parseInt((245/2)*(ab))-4.5;$("#"+p+"_jGraduate_RadiusArrows").css({"margin-left":Z});$("#"+p+"_jGraduate_RadiusInput").val(parseInt(ab*100)).change(function(ai){var ah=this.value/100;if(ah<0.01){ah=0.01}k.paint.radialGradient.setAttribute("r",ah);if(ah>2){ah=2}var ag=parseInt((245/2)*ah)-4.5;$("#"+p+"_jGraduate_RadiusArrows").css({"margin-left":ag})});var z=function(ai,ak){var aj=ak.offset();var ah=(ai.pageX-aj.left-parseInt(ak.css("border-left-width")));if(ah>255){ah=255}if(ah<0){ah=0}var ag=ah-4.5;ah/=255;$("#"+p+"_rg_jGraduate_AlphaArrows").css({"margin-left":ag});$("#"+p+"_rg_jgraduate_rect").attr("fill-opacity",ah);ah=parseInt(ah*100);$("#"+p+"_rg_jGraduate_OpacityInput").val(ah);k.paint.alpha=ah};var ad=false;$("#"+p+"_rg_jGraduate_Opacity").mousedown(function(ag){z(ag,$(this));ad=true;ag.preventDefault()}).mousemove(function(ag){if(ad){z(ag,$(this));ag.preventDefault()}}).mouseup(function(ag){z(ag,$(this));ad=false;ag.preventDefault()});var L=function(ai,ak){var aj=ak.offset();var ah=(ai.pageX-aj.left-parseInt(ak.css("border-left-width")));if(ah>245){ah=245}if(ah<=1){ah=1}var ag=ah-5;ah/=(245/2);$("#"+p+"_jGraduate_RadiusArrows").css({"margin-left":ag});k.paint.radialGradient.setAttribute("r",ah);ah=parseInt(ah*100);$("#"+p+"_jGraduate_RadiusInput").val(ah)};var C=false;$("#"+p+"_jGraduate_Radius").mousedown(function(ag){L(ag,$(this));C=true;ag.preventDefault()}).mousemove(function(ag){if(C){L(ag,$(this));ag.preventDefault()}}).mouseup(function(ag){L(ag,$(this));C=false;ag.preventDefault()});var ac=null;var y=-1,x=-1;$(".stop, #color_picker_rg_jGraduate_GradContainer image").mousedown(function(ag){ac=this;y=ag.clientX;x=ag.clientY;ag.preventDefault()});$("#"+p+"_rg_jgraduate_svg").mousemove(function(ai){if(null!=ac){var ak=ai.clientX-y;var ah=ai.clientY-x;y+=ak;x+=ah;var ag=parseFloat(ac.getAttribute("x"))+ak;var am=parseFloat(ac.getAttribute("y"))+ah;if(ag<o-d){ag=o-d}if(am<n-d){am=n-d}if(ag>o+m-d){ag=o+m-d}if(am>n+l-d){am=n+l-d}ac.setAttribute("x",ag);ac.setAttribute("y",am);var al=(ag-o+d)/m;var aj=(am-n+d)/l;if(ac.id==(p+"_center_pt")){af.val(al);P.val(aj);k.paint.radialGradient.setAttribute("cx",al);k.paint.radialGradient.setAttribute("cy",aj);if(!H){k.paint.radialGradient.setAttribute("fx",al);k.paint.radialGradient.setAttribute("fy",aj)}}else{ae.val(al);Q.val(aj);k.paint.radialGradient.setAttribute("fx",al);k.paint.radialGradient.setAttribute("fy",aj)}ai.preventDefault()}});$("#"+p+"_rg_jgraduate_svg").mouseup(function(ag){ac=null});var S=T[0].getAttribute("stop-color");if(!S){S="#000"}centerColorBox=$("#"+p+"_jGraduate_colorBoxCenter");centerColorBox.css({"background-color":S});var W=T[0].getAttribute("stop-opacity");if(!W){W="1.0"}$("#"+p+"jGraduate_centerOpacity").html((W*100)+"%");var F=T[T.length-1].getAttribute("stop-color");if(!F){F="#000"}outerColorBox=$("#"+p+"_jGraduate_colorBoxOuter");outerColorBox.css({"background-color":F});var Y=T[T.length-1].getAttribute("stop-opacity");if(!Y){Y="1.0"}$("#"+p+"rg_jGraduate_outerOpacity").html((Y*100)+"%");$("#"+p+"_jGraduate_colorBoxCenter").click(function(){$("div.jGraduate_LightBox").show();var ah=$(this);var ag=(parseFloat(W)*255).toString(16);while(ag.length<2){ag="0"+ag}r=S.substr(1)+ag;$("#"+p+"_rg_jGraduate_stopPicker").css({left:100,bottom:15}).jPicker({window:{title:"Pick the center color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(ai){S=ai.get_Hex()?("#"+ai.get_Hex()):"none";W=ai.get_A()?ai.get_A()/100:1;ah.css("background",S);$("#"+p+"_rg_jGraduate_centerOpacity").html(parseInt(W*100)+"%");T[0].setAttribute("stop-color",S);T[0].setAttribute("stop-opacity",W);$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()})});$("#"+p+"_jGraduate_colorBoxOuter").click(function(){$("div.jGraduate_LightBox").show();var ah=$(this);var ag=(parseFloat(Y)*255).toString(16);while(ag.length<2){ag="0"+ag}r=F.substr(1)+ag;$("#"+p+"_rg_jGraduate_stopPicker").css({left:100,top:15}).jPicker({window:{title:"Pick the outer color and opacity for the gradient"},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(ai){F=ai.get_Hex()?("#"+ai.get_Hex()):"none";Y=ai.get_A()?ai.get_A()/100:1;ah.css("background",F);$("#"+p+"_jGraduate_outerOpacity").html(parseInt(Y*100)+"%");T[1].setAttribute("stop-color",F);T[1].setAttribute("stop-opacity",Y);$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()},null,function(){$("div.jGraduate_LightBox").hide();$("#"+p+"_rg_jGraduate_stopPicker").hide()})});var aa=(k.paint.alpha*255/100).toString(16);while(aa.length<2){aa="0"+aa}r=k.paint.solidColor=="none"?"":k.paint.solidColor+aa;u.jPicker({window:{title:g.window.pickerTitle},images:{clientPath:g.images.clientPath},color:{active:r,alphaSupport:true}},function(ag){k.paint.type="solidColor";k.paint.alpha=ag.get_A()?ag.get_A():100;k.paint.solidColor=ag.get_Hex()?ag.get_Hex():"none";k.paint.radialGradient=null;h()},null,function(){i()})}());var s=$(v+" .jGraduate_tabs li");s.click(function(){s.removeClass("jGraduate_tab_current");$(this).addClass("jGraduate_tab_current");$(v+" > div").hide();$(v+" .jGraduate_"+$(this).attr("data-type")+"Pick").show()});$(v+" > div").hide();s.removeClass("jGraduate_tab_current");var e;switch(k.paint.type){case"linearGradient":e=$(v+" .jGraduate_tab_lingrad");break;case"radialGradient":e=$(v+" .jGraduate_tab_radgrad");break;default:e=$(v+" .jGraduate_tab_color");break}e.addClass("jGraduate_tab_current").click();k.show()})}})(); \ No newline at end of file
diff --git a/files_svgedit/js/jquerybbq/jquery.bbq.min.js b/files_svgedit/js/jquerybbq/jquery.bbq.min.js
new file mode 100644
index 000000000..edb781914
--- /dev/null
+++ b/files_svgedit/js/jquerybbq/jquery.bbq.min.js
@@ -0,0 +1,18 @@
+/*
+ * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
+ * http://benalman.com/projects/jquery-bbq-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this);
+/*
+ * jQuery hashchange event - v1.2 - 2/11/2010
+ * http://benalman.com/projects/jquery-hashchange-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this); \ No newline at end of file
diff --git a/files_svgedit/js/js-hotkeys/README.md b/files_svgedit/js/js-hotkeys/README.md
new file mode 100644
index 000000000..696e98942
--- /dev/null
+++ b/files_svgedit/js/js-hotkeys/README.md
@@ -0,0 +1,45 @@
+#About
+**jQuery Hotkeys** is a plug-in that lets you easily add and remove handlers for keyboard events anywhere in your code supporting almost any key combination.
+
+This plugin is based off of the plugin by Tzury Bar Yochay: [jQuery.hotkeys](http://github.com/tzuryby/hotkeys)
+
+The syntax is as follows:
+
+ $(expression).bind(types, keys, handler);
+ $(expression).unbind(types, handler);
+
+ $(document).bind('keydown', 'ctrl+a', fn);
+
+ // e.g. replace '$' sign with 'EUR'
+ $('input.foo').bind('keyup', '$', function(){
+ this.value = this.value.replace('$', 'EUR');
+ });
+
+## Types
+Supported types are `'keydown'`, `'keyup'` and `'keypress'`
+
+## Notes
+
+If you want to use more than one modifiers (e.g. alt+ctrl+z) you should define them by an alphabetical order e.g. alt+ctrl+shift
+
+Hotkeys aren't tracked if you're inside of an input element (unless you explicitly bind the hotkey directly to the input). This helps to avoid conflict with normal user typing.
+
+## jQuery Compatibility
+
+Works with jQuery 1.4.2 and newer.
+
+It known to be working with all the major browsers on all available platforms (Win/Mac/Linux)
+
+ * IE 6/7/8
+ * FF 1.5/2/3
+ * Opera-9
+ * Safari-3
+ * Chrome-0.2
+
+### Addendum
+
+Firefox is the most liberal one in the manner of letting you capture all short-cuts even those that are built-in in the browser such as `Ctrl-t` for new tab, or `Ctrl-a` for selecting all text. You can always bubble them up to the browser by returning `true` in your handler.
+
+Others, (IE) either let you handle built-in short-cuts, but will add their functionality after your code has executed. Or (Opera/Safari) will *not* pass those events to the DOM at all.
+
+*So, if you bind `Ctrl-Q` or `Alt-F4` and your Safari/Opera window is closed don't be surprised.* \ No newline at end of file
diff --git a/files_svgedit/js/js-hotkeys/jquery.hotkeys.min.js b/files_svgedit/js/js-hotkeys/jquery.hotkeys.min.js
new file mode 100644
index 000000000..52d955174
--- /dev/null
+++ b/files_svgedit/js/js-hotkeys/jquery.hotkeys.min.js
@@ -0,0 +1,15 @@
+/*
+ * jQuery Hotkeys Plugin
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * http://github.com/jeresig/jquery.hotkeys
+ *
+ * Based upon the plugin by Tzury Bar Yochay:
+ * http://github.com/tzuryby/hotkeys
+ *
+ * Original idea by:
+ * Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
+*/
+
+(function(b){b.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~","1":"!","2":"@","3":"#","4":"$","5":"%","6":"^","7":"&","8":"*","9":"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function a(d){if(typeof d.data!=="string"){return}var c=d.handler,e=d.data.toLowerCase().split(" ");d.handler=function(n){if(this!==n.target&&(/textarea|select/i.test(n.target.nodeName)||n.target.type==="text")){return}var h=n.type!=="keypress"&&b.hotkeys.specialKeys[n.which],o=String.fromCharCode(n.which).toLowerCase(),k,m="",g={};if(n.altKey&&h!=="alt"){m+="alt+"}if(n.ctrlKey&&h!=="ctrl"){m+="ctrl+"}if(n.metaKey&&!n.ctrlKey&&h!=="meta"){m+="meta+"}if(n.shiftKey&&h!=="shift"){m+="shift+"}if(h){g[m+h]=true}else{g[m+o]=true;g[m+b.hotkeys.shiftNums[o]]=true;if(m==="shift+"){g[b.hotkeys.shiftNums[o]]=true}}for(var j=0,f=e.length;j<f;j++){if(g[e[j]]){return c.apply(this,arguments)}}}}b.each(["keydown","keyup","keypress"],function(){b.event.special[this]={add:a}})})(jQuery); \ No newline at end of file
diff --git a/files_svgedit/js/locale/README.txt b/files_svgedit/js/locale/README.txt
new file mode 100644
index 000000000..9d6ac5882
--- /dev/null
+++ b/files_svgedit/js/locale/README.txt
@@ -0,0 +1,17 @@
+This directory holds JSON files that translate the UI strings in SVG-edit.
+Initial translations were done by Narendra Sisodiya putting the English
+strings through the Google Translation API. Humans will need to take these
+automated translations and ensure they make sense.
+
+See AUTHORS for the translations credits.
+
+Languages Already Translated By Humans:
+ * lang.cs.js
+ * lang.de.js
+ * lang.en.js
+ * lang.es.js
+ * lang.fr.js
+ * lang.ja.js
+ * lang.nl.js
+ * lang.ro.js
+ * lang.sk.js
diff --git a/files_svgedit/js/locale/lang.af.js b/files_svgedit/js/locale/lang.af.js
new file mode 100644
index 000000000..07f132167
--- /dev/null
+++ b/files_svgedit/js/locale/lang.af.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Align in verhouding tot ..."},
+{"id": "bkgnd_color", "title": "Verander agtergrondkleur / opaciteit"},
+{"id": "circle_cx", "title": "Verandering sirkel se cx koördineer"},
+{"id": "circle_cy", "title": "Verandering sirkel se cy koördineer"},
+{"id": "circle_r", "title": "Verandering sirkel se radius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Verandering Rechthoek Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Verandering ellips se cx koördineer"},
+{"id": "ellipse_cy", "title": "Verander ellips se cy koördineer"},
+{"id": "ellipse_rx", "title": "Verandering ellips se x radius"},
+{"id": "ellipse_ry", "title": "Verander ellips se j radius"},
+{"id": "fill_color", "title": "Verandering vul kleur"},
+{"id": "fitToContent", "textContent": "Pas na inhoud"},
+{"id": "fit_to_all", "textContent": "Passing tot al inhoud"},
+{"id": "fit_to_canvas", "textContent": "Passing tot doek"},
+{"id": "fit_to_layer_content", "textContent": "Passing tot laag inhoud"},
+{"id": "fit_to_sel", "textContent": "Passing tot seleksie"},
+{"id": "font_family", "title": "Lettertipe verander Familie"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Verandering prent hoogte"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "URL verander"},
+{"id": "image_width", "title": "Verander prent breedte"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "grootste voorwerp"},
+{"id": "layer_delete", "title": "Verwyder Laag"},
+{"id": "layer_down", "title": "Beweeg afbreek Down"},
+{"id": "layer_new", "title": "Nuwe Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Beweeg afbreek Up"},
+{"id": "layersLabel", "textContent": "Lae:"},
+{"id": "line_x1", "title": "Verandering lyn se vertrek x koördinaat"},
+{"id": "line_x2", "title": "Verandering lyn se eindig x koördinaat"},
+{"id": "line_y1", "title": "Verandering lyn se vertrek y koördinaat"},
+{"id": "line_y2", "title": "Verandering lyn se eindig y koördinaat"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "bladsy"},
+{"id": "palette", "title": "Klik om te verander vul kleur, verskuiwing klik om &#39;n beroerte kleur verander"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Verandering reghoek hoogte"},
+{"id": "rect_width_tool", "title": "Verandering reghoek breedte"},
+{"id": "relativeToLabel", "textContent": "relatief tot:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Kies gedefinieerde:"},
+{"id": "selected_objects", "textContent": "verkose voorwerpe"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "kleinste voorwerp"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Verandering beroerte kleur"},
+{"id": "stroke_style", "title": "Verandering beroerte dash styl"},
+{"id": "stroke_width", "title": "Verandering beroerte breedte"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Doek Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Lengte:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Wydte:"},
+{"id": "text", "title": "Verander teks inhoud"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Rig Middel"},
+{"id": "tool_alignleft", "title": "Links Regterkant"},
+{"id": "tool_alignmiddle", "title": "Align Midde"},
+{"id": "tool_alignright", "title": "Lijn regs uit"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Verandering rotasie-hoek"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Vetgedrukte teks"},
+{"id": "tool_circle", "title": "Sirkel"},
+{"id": "tool_clear", "textContent": "Nuwe Beeld"},
+{"id": "tool_clone", "title": "Kloon Element"},
+{"id": "tool_clone_multi", "title": "Kloon Elemente"},
+{"id": "tool_delete", "title": "Verwyder Element"},
+{"id": "tool_delete_multi", "title": "Verwyder geselekteerde Elemente"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Annuleer"},
+{"id": "tool_docprops_save", "textContent": "Spaar"},
+{"id": "tool_ellipse", "title": "Ellips"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Gratis-Hand Ellips"},
+{"id": "tool_fhpath", "title": "Potlood tool"},
+{"id": "tool_fhrect", "title": "Free-hand Rectangle"},
+{"id": "tool_font_size", "title": "Verandering Lettertipe Grootte"},
+{"id": "tool_group", "title": "Groep Elemente"},
+{"id": "tool_image", "title": "Image Gereedskap"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Lyn Gereedskap"},
+{"id": "tool_move_bottom", "title": "Skuif na Bottom"},
+{"id": "tool_move_top", "title": "Skuif na bo"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Verander geselekteerde item opaciteit"},
+{"id": "tool_open", "textContent": "Open Beeld"},
+{"id": "tool_path", "title": "Poli Gereedskap"},
+{"id": "tool_rect", "title": "Reghoek"},
+{"id": "tool_redo", "title": "Oordoen"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Slaan Beeld"},
+{"id": "tool_select", "title": "Select Gereedschap"},
+{"id": "tool_source", "title": "Wysig Bron"},
+{"id": "tool_source_cancel", "textContent": "Annuleer"},
+{"id": "tool_source_save", "textContent": "Spaar"},
+{"id": "tool_square", "title": "Vierkant"},
+{"id": "tool_text", "title": "Text Gereedskap"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Boontoe"},
+{"id": "tool_ungroup", "title": "Ungroup Elemente"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Klik op die Gereedskap"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Change zoom vlak"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ar.js b/files_svgedit/js/locale/lang.ar.js
new file mode 100644
index 000000000..26e8fba42
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ar.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "محاذاة النسبي ل ..."},
+{"id": "bkgnd_color", "title": "تغير لون الخلفية / غموض"},
+{"id": "circle_cx", "title": "دائرة التغيير لتنسيق cx"},
+{"id": "circle_cy", "title": "Change circle's cy coordinate"},
+{"id": "circle_r", "title": "التغيير في دائرة نصف قطرها"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "تغيير مستطيل ركن الشعاع"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "تغيير شكل البيضاوي cx تنسيق"},
+{"id": "ellipse_cy", "title": "تغيير شكل البيضاوي قبرصي تنسيق"},
+{"id": "ellipse_rx", "title": "تغيير شكل البيضاوي خ نصف قطرها"},
+{"id": "ellipse_ry", "title": "تغيير القطع الناقص في دائرة نصف قطرها ذ"},
+{"id": "fill_color", "title": "تغير لون التعبئة"},
+{"id": "fitToContent", "textContent": "لائقا للمحتوى"},
+{"id": "fit_to_all", "textContent": "يصلح لجميع المحتويات"},
+{"id": "fit_to_canvas", "textContent": "يصلح لوحة زيتية على قماش"},
+{"id": "fit_to_layer_content", "textContent": "يصلح لطبقة المحتوى"},
+{"id": "fit_to_sel", "textContent": "يصلح لاختيار"},
+{"id": "font_family", "title": "تغيير الخط الأسرة"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "تغيير ارتفاع الصورة"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "تغيير العنوان"},
+{"id": "image_width", "title": "تغيير صورة العرض"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "أكبر كائن"},
+{"id": "layer_delete", "title": "حذف طبقة"},
+{"id": "layer_down", "title": "تحرك لأسفل طبقة"},
+{"id": "layer_new", "title": "طبقة جديدة"},
+{"id": "layer_rename", "title": "تسمية الطبقة"},
+{"id": "layer_up", "title": "تحرك لأعلى طبقة"},
+{"id": "layersLabel", "textContent": "طبقات:"},
+{"id": "line_x1", "title": "تغيير الخط لبدء تنسيق خ"},
+{"id": "line_x2", "title": "تغيير الخط لانهاء خ تنسيق"},
+{"id": "line_y1", "title": "تغيير الخط لبدء تنسيق ذ"},
+{"id": "line_y2", "title": "تغيير الخط لإنهاء تنسيق ذ"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "الصفحة"},
+{"id": "palette", "title": "انقر لتغيير لون التعبئة ، تحولا مزدوجا فوق لتغيير لون السكتة الدماغية"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "تغيير المستطيل الارتفاع"},
+{"id": "rect_width_tool", "title": "تغيير عرض المستطيل"},
+{"id": "relativeToLabel", "textContent": "بالنسبة إلى:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "حدد سلفا:"},
+{"id": "selected_objects", "textContent": "انتخب الأجسام"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "أصغر كائن"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "تغير لون السكتة الدماغية"},
+{"id": "stroke_style", "title": "تغيير نمط السكتة الدماغية اندفاعة"},
+{"id": "stroke_width", "title": "تغيير عرض السكتة الدماغية"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "ارتفاع:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "عرض:"},
+{"id": "text", "title": "تغيير محتويات النص"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "محاذاة القاع"},
+{"id": "tool_aligncenter", "title": "مركز محاذاة"},
+{"id": "tool_alignleft", "title": "محاذاة إلى اليسار"},
+{"id": "tool_alignmiddle", "title": "محاذاة الأوسط"},
+{"id": "tool_alignright", "title": "محاذاة إلى اليمين"},
+{"id": "tool_aligntop", "title": "محاذاة الأعلى"},
+{"id": "tool_angle", "title": "تغيير زاوية الدوران"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "نص جريء"},
+{"id": "tool_circle", "title": "دائرة"},
+{"id": "tool_clear", "textContent": "صورة جديدة"},
+{"id": "tool_clone", "title": "استنساخ عنصر"},
+{"id": "tool_clone_multi", "title": "استنساخ الأركان"},
+{"id": "tool_delete", "title": "حذف عنصر"},
+{"id": "tool_delete_multi", "title": "حذف عناصر مختارة"},
+{"id": "tool_docprops", "textContent": "خصائص المستند"},
+{"id": "tool_docprops_cancel", "textContent": "إلغاء"},
+{"id": "tool_docprops_save", "textContent": "حفظ"},
+{"id": "tool_ellipse", "title": "القطع الناقص"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "اليد الحرة البيضوي"},
+{"id": "tool_fhpath", "title": "أداة قلم رصاص"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "تغيير حجم الخط"},
+{"id": "tool_group", "title": "مجموعة عناصر"},
+{"id": "tool_image", "title": "الصورة أداة"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "مائل نص"},
+{"id": "tool_line", "title": "خط أداة"},
+{"id": "tool_move_bottom", "title": "الانتقال إلى أسفل"},
+{"id": "tool_move_top", "title": "الانتقال إلى أعلى"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "تغيير مختارة غموض البند"},
+{"id": "tool_open", "textContent": "فتح الصورة"},
+{"id": "tool_path", "title": "بولي أداة"},
+{"id": "tool_rect", "title": "المستطيل"},
+{"id": "tool_redo", "title": "إعادته"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "حفظ صورة"},
+{"id": "tool_select", "title": "اختر أداة"},
+{"id": "tool_source", "title": "عدل المصدر"},
+{"id": "tool_source_cancel", "textContent": "إلغاء"},
+{"id": "tool_source_save", "textContent": "حفظ"},
+{"id": "tool_square", "title": "ميدان"},
+{"id": "tool_text", "title": "النص أداة"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "التراجع"},
+{"id": "tool_ungroup", "title": "فك تجميع عناصر"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "أداة تكبير"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "تغيير مستوى التكبير"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.az.js b/files_svgedit/js/locale/lang.az.js
new file mode 100644
index 000000000..28f63a64d
--- /dev/null
+++ b/files_svgedit/js/locale/lang.az.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Align relative to ..."},
+{"id": "bkgnd_color", "title": "Change background color/opacity"},
+{"id": "circle_cx", "title": "Change circle's cx coordinate"},
+{"id": "circle_cy", "title": "Change circle's cy coordinate"},
+{"id": "circle_r", "title": "Change circle's radius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Change Rectangle Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Change ellipse's cx coordinate"},
+{"id": "ellipse_cy", "title": "Change ellipse's cy coordinate"},
+{"id": "ellipse_rx", "title": "Change ellipse's x radius"},
+{"id": "ellipse_ry", "title": "Change ellipse's y radius"},
+{"id": "fill_color", "title": "Change fill color"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Fit to all content"},
+{"id": "fit_to_canvas", "textContent": "Fit to canvas"},
+{"id": "fit_to_layer_content", "textContent": "Fit to layer content"},
+{"id": "fit_to_sel", "textContent": "Fit to selection"},
+{"id": "font_family", "title": "Change Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Change image height"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Change URL"},
+{"id": "image_width", "title": "Change image width"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "largest object"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Change line's starting x coordinate"},
+{"id": "line_x2", "title": "Change line's ending x coordinate"},
+{"id": "line_y1", "title": "Change line's starting y coordinate"},
+{"id": "line_y2", "title": "Change line's ending y coordinate"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "page"},
+{"id": "palette", "title": "Click to change fill color, shift-click to change stroke color"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Change rectangle height"},
+{"id": "rect_width_tool", "title": "Change rectangle width"},
+{"id": "relativeToLabel", "textContent": "relative to:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Select predefined:"},
+{"id": "selected_objects", "textContent": "selected objects"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "smallest object"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Change stroke color"},
+{"id": "stroke_style", "title": "Change stroke dash style"},
+{"id": "stroke_width", "title": "Change stroke width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Height:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Width:"},
+{"id": "text", "title": "Change text contents"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Align Center"},
+{"id": "tool_alignleft", "title": "Align Left"},
+{"id": "tool_alignmiddle", "title": "Align Middle"},
+{"id": "tool_alignright", "title": "Align Right"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Change rotation angle"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Delete Element"},
+{"id": "tool_delete_multi", "title": "Delete Selected Elements"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Cancel"},
+{"id": "tool_docprops_save", "textContent": "OK"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Change Font Size"},
+{"id": "tool_group", "title": "Group Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Change selected item opacity"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rectangle"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Cancel"},
+{"id": "tool_source_save", "textContent": "Apply Changes"},
+{"id": "tool_square", "title": "Square"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Change zoom level"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.be.js b/files_svgedit/js/locale/lang.be.js
new file mode 100644
index 000000000..a399f996d
--- /dev/null
+++ b/files_svgedit/js/locale/lang.be.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Выраўнаваць па дачыненні да ..."},
+{"id": "bkgnd_color", "title": "Змяненне колеру фону / непразрыстасць"},
+{"id": "circle_cx", "title": "CX змене круга каардынаты"},
+{"id": "circle_cy", "title": "Змены гуртка CY каардынаты"},
+{"id": "circle_r", "title": "Старонка круга&#39;s радыус"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Змены прастакутнік Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Змены эліпса CX каардынаты"},
+{"id": "ellipse_cy", "title": "Змены эліпса CY каардынаты"},
+{"id": "ellipse_rx", "title": "Х змяненні эліпса радыюсам"},
+{"id": "ellipse_ry", "title": "Змены у эліпса радыюсам"},
+{"id": "fill_color", "title": "Змяненне колеру залівання"},
+{"id": "fitToContent", "textContent": "Па памеры ўтрымання"},
+{"id": "fit_to_all", "textContent": "Па памеру ўсе змесціва"},
+{"id": "fit_to_canvas", "textContent": "Памер палатна"},
+{"id": "fit_to_layer_content", "textContent": "По размеру слой ўтрымання"},
+{"id": "fit_to_sel", "textContent": "Выбар памеру"},
+{"id": "font_family", "title": "Змены Сямейства шрыфтоў"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Змена вышыні выявы"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Змяніць URL"},
+{"id": "image_width", "title": "Змены шырыня выявы"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "найбуйнейшы аб&#39;ект"},
+{"id": "layer_delete", "title": "Выдаліць слой"},
+{"id": "layer_down", "title": "Перамясціць слой на"},
+{"id": "layer_new", "title": "Новы слой"},
+{"id": "layer_rename", "title": "Перайменаваць Слой"},
+{"id": "layer_up", "title": "Перамяшчэнне слоя да"},
+{"id": "layersLabel", "textContent": "Слаі:"},
+{"id": "line_x1", "title": "Змены лінія пачынае каардынаты х"},
+{"id": "line_x2", "title": "Змяненне за перыяд, скончыўся лінія каардынаты х"},
+{"id": "line_y1", "title": "Змены лінія пачынае Y каардынаты"},
+{"id": "line_y2", "title": "Змяненне за перыяд, скончыўся лінія Y каардынаты"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "старонка"},
+{"id": "palette", "title": "Націсніце для змены колеру залівання, Shift-Click змяніць обводка"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Змены прастакутнік вышынёй"},
+{"id": "rect_width_tool", "title": "Змяненне шырыні прамавугольніка"},
+{"id": "relativeToLabel", "textContent": "па параўнанні з:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Выберыце прадвызначэньні:"},
+{"id": "selected_objects", "textContent": "выбранымі аб&#39;ектамі"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "маленькі аб&#39;ект"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Змяненне колеру інсульт"},
+{"id": "stroke_style", "title": "Змяненне стылю інсульт працяжнік"},
+{"id": "stroke_width", "title": "Змены шырыня штрых"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Вышыня:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Шырыня:"},
+{"id": "text", "title": "Змяненне зместу тэксту"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Лінаваць па ніжнім краю"},
+{"id": "tool_aligncenter", "title": "Лінаваць па цэнтру"},
+{"id": "tool_alignleft", "title": "Па левым краю"},
+{"id": "tool_alignmiddle", "title": "Выраўнаваць Блізкага"},
+{"id": "tool_alignright", "title": "Па правым краю"},
+{"id": "tool_aligntop", "title": "Лінаваць па верхнім краю"},
+{"id": "tool_angle", "title": "Змены вугла павароту"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Тоўсты тэкст"},
+{"id": "tool_circle", "title": "Круг"},
+{"id": "tool_clear", "textContent": "Новае выява"},
+{"id": "tool_clone", "title": "Клон элемента"},
+{"id": "tool_clone_multi", "title": "Клон Элементы"},
+{"id": "tool_delete", "title": "Выдаліць элемент"},
+{"id": "tool_delete_multi", "title": "Выдаліць выбраныя элементы"},
+{"id": "tool_docprops", "textContent": "Уласцівасці дакумента"},
+{"id": "tool_docprops_cancel", "textContent": "Адмена"},
+{"id": "tool_docprops_save", "textContent": "Захаваць"},
+{"id": "tool_ellipse", "title": "Эліпс"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Свабоднай рукі Эліпс"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Свабоднай рукі Прастакутнік"},
+{"id": "tool_font_size", "title": "Змяніць памер шрыфта"},
+{"id": "tool_group", "title": "Група элементаў"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Нахілены тэкст"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Перамясціць уніз"},
+{"id": "tool_move_top", "title": "Перамясціць угару"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Старонка абранага пункта непразрыстасці"},
+{"id": "tool_open", "textContent": "Адкрыць выява"},
+{"id": "tool_path", "title": "Poly Tool"},
+{"id": "tool_rect", "title": "Прамавугольнік"},
+{"id": "tool_redo", "title": "Паўтор"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Захаваць малюнак"},
+{"id": "tool_select", "title": "Выберыце інструмент"},
+{"id": "tool_source", "title": "Змяніць зыходны"},
+{"id": "tool_source_cancel", "textContent": "Адмена"},
+{"id": "tool_source_save", "textContent": "Захаваць"},
+{"id": "tool_square", "title": "Плошча"},
+{"id": "tool_text", "title": "Тэкст Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Адмяніць"},
+{"id": "tool_ungroup", "title": "Элементы Разгруппировать"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Змяненне маштабу"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.bg.js b/files_svgedit/js/locale/lang.bg.js
new file mode 100644
index 000000000..3ee57a99a
--- /dev/null
+++ b/files_svgedit/js/locale/lang.bg.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Привеждане в сравнение с ..."},
+{"id": "bkgnd_color", "title": "Промяна на цвета на фона / непрозрачност"},
+{"id": "circle_cx", "title": "CX Промяна кръг на координатната"},
+{"id": "circle_cy", "title": "Промяна кръг&#39;s CY координира"},
+{"id": "circle_r", "title": "Промяна кръг радиус"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Промяна на правоъгълник Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Промяна на елипса&#39;s CX координира"},
+{"id": "ellipse_cy", "title": "Промяна на елипса&#39;s CY координира"},
+{"id": "ellipse_rx", "title": "Промяна на елипса&#39;s X радиус"},
+{"id": "ellipse_ry", "title": "Промяна на елипса&#39;s Y радиус"},
+{"id": "fill_color", "title": "Промяна попълнете цвят"},
+{"id": "fitToContent", "textContent": "Fit към съдържание"},
+{"id": "fit_to_all", "textContent": "Побери цялото съдържание"},
+{"id": "fit_to_canvas", "textContent": "Fit на платно"},
+{"id": "fit_to_layer_content", "textContent": "Fit да слой съдържание"},
+{"id": "fit_to_sel", "textContent": "Fit за подбор"},
+{"id": "font_family", "title": "Промяна на шрифта Семейство"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Промяна на изображението височина"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Промяна на URL"},
+{"id": "image_width", "title": "Промяна на изображението ширина"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "най-големият обект"},
+{"id": "layer_delete", "title": "Изтриване на слой"},
+{"id": "layer_down", "title": "Move слой надолу"},
+{"id": "layer_new", "title": "Нов слой"},
+{"id": "layer_rename", "title": "Преименуване Layer"},
+{"id": "layer_up", "title": "Move Up Layer"},
+{"id": "layersLabel", "textContent": "Слоевете:"},
+{"id": "line_x1", "title": "Промяна на линия, започваща х координира"},
+{"id": "line_x2", "title": "Промяна на линията приключва х координира"},
+{"id": "line_y1", "title": "Промяна линия, започваща Y координира"},
+{"id": "line_y2", "title": "Промяна на линията приключва Y координира"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "страница"},
+{"id": "palette", "title": "Кликнете, за да промени попълнете цвят, на смени, кликнете да променят цвета си удар"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Промяна на правоъгълник височина"},
+{"id": "rect_width_tool", "title": "Промяна на правоъгълник ширина"},
+{"id": "relativeToLabel", "textContent": "в сравнение с:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Изберете предварително:"},
+{"id": "selected_objects", "textContent": "избраните обекти"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "най-малката обект"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Промяна на инсулт цвят"},
+{"id": "stroke_style", "title": "Промяна на стила удар тире"},
+{"id": "stroke_width", "title": "Промяна на ширината инсулт"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Височина:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Ширина:"},
+{"id": "text", "title": "Промяна на текст съдържание"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Привеждане Отдолу"},
+{"id": "tool_aligncenter", "title": "Подравняване в средата"},
+{"id": "tool_alignleft", "title": "Подравняване вляво"},
+{"id": "tool_alignmiddle", "title": "Привеждане в Близкия"},
+{"id": "tool_alignright", "title": "Подравняване надясно"},
+{"id": "tool_aligntop", "title": "Привеждане Топ"},
+{"id": "tool_angle", "title": "Промяна ъгъл на завъртане"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Получер текст"},
+{"id": "tool_circle", "title": "Кръгът"},
+{"id": "tool_clear", "textContent": "Ню Имидж"},
+{"id": "tool_clone", "title": "Clone Елемент"},
+{"id": "tool_clone_multi", "title": "Clone Елементи"},
+{"id": "tool_delete", "title": "Изтриване на елемент"},
+{"id": "tool_delete_multi", "title": "Изтриване на избрани елементи"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Отказ"},
+{"id": "tool_docprops_save", "textContent": "Спасявам"},
+{"id": "tool_ellipse", "title": "Елипса"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Свободен Употребявани Елипса"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Свободен Употребявани правоъгълник"},
+{"id": "tool_font_size", "title": "Промени размера на буквите"},
+{"id": "tool_group", "title": "Група Елементи"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Курсив текст"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Премести надолу"},
+{"id": "tool_move_top", "title": "Премести в началото"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Промяна на избрания елемент непрозрачност"},
+{"id": "tool_open", "textContent": "Отворете изображението"},
+{"id": "tool_path", "title": "Поли Tool"},
+{"id": "tool_rect", "title": "Правоъгълник"},
+{"id": "tool_redo", "title": "Възстановяване"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Редактиране Източник"},
+{"id": "tool_source_cancel", "textContent": "Отказ"},
+{"id": "tool_source_save", "textContent": "Спасявам"},
+{"id": "tool_square", "title": "Квадрат"},
+{"id": "tool_text", "title": "Текст Оръдие"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Отмени"},
+{"id": "tool_ungroup", "title": "Разгрупирай Елементи"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Промяна на ниво на мащабиране"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ca.js b/files_svgedit/js/locale/lang.ca.js
new file mode 100644
index 000000000..e2dd954b9
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ca.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Alinear pel que fa a ..."},
+{"id": "bkgnd_color", "title": "Color de fons / opacitat"},
+{"id": "circle_cx", "title": "CX cercle Canvi de coordenades"},
+{"id": "circle_cy", "title": "Cercle Canvi CY coordinar"},
+{"id": "circle_r", "title": "Ràdio de cercle Canvi"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Canviar Rectangle Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Canviar lipse CX coordinar"},
+{"id": "ellipse_cy", "title": "Lipse Canvi CY coordinar"},
+{"id": "ellipse_rx", "title": "Ràdio x lipse Canvi"},
+{"id": "ellipse_ry", "title": "Ràdio i lipse Canvi"},
+{"id": "fill_color", "title": "Canviar el color de farciment"},
+{"id": "fitToContent", "textContent": "Ajustar al contingut"},
+{"id": "fit_to_all", "textContent": "Ajustar a tot el contingut"},
+{"id": "fit_to_canvas", "textContent": "Ajustar a la lona"},
+{"id": "fit_to_layer_content", "textContent": "Ajustar al contingut de la capa d&#39;"},
+{"id": "fit_to_sel", "textContent": "Ajustar a la selecció"},
+{"id": "font_family", "title": "Canviar la font Família"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Canviar l&#39;altura de la imatge"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Canviar URL"},
+{"id": "image_width", "title": "Amplada de la imatge Canvi"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "objecte més gran"},
+{"id": "layer_delete", "title": "Eliminar capa"},
+{"id": "layer_down", "title": "Mou la capa de Down"},
+{"id": "layer_new", "title": "Nova capa"},
+{"id": "layer_rename", "title": "Canvieu el nom de la capa"},
+{"id": "layer_up", "title": "Mou la capa Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Canviar la línia de partida de la coordenada x"},
+{"id": "line_x2", "title": "Canviar la línia d&#39;hores de coordenada x"},
+{"id": "line_y1", "title": "Canviar la línia de partida i de coordinar"},
+{"id": "line_y2", "title": "Canviar la línia d&#39;hores de coordenada"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Pàgina"},
+{"id": "palette", "title": "Feu clic per canviar el color de farciment, shift-clic per canviar el color del traç"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Rectangle d&#39;alçada Canvi"},
+{"id": "rect_width_tool", "title": "Ample rectangle Canvi"},
+{"id": "relativeToLabel", "textContent": "en relació amb:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Seleccioneu predefinides:"},
+{"id": "selected_objects", "textContent": "objectes escollits"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "objecte més petit"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Canviar el color del traç"},
+{"id": "stroke_style", "title": "Canviar estil de traç guió"},
+{"id": "stroke_width", "title": "Canviar l&#39;amplada del traç"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Alçada:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Amplada:"},
+{"id": "text", "title": "Contingut del text"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Alinear baix"},
+{"id": "tool_aligncenter", "title": "Alinear al centre"},
+{"id": "tool_alignleft", "title": "Alinear a l&#39;esquerra"},
+{"id": "tool_alignmiddle", "title": "Alinear Medi"},
+{"id": "tool_alignright", "title": "Alinear a la dreta"},
+{"id": "tool_aligntop", "title": "Alinear a dalt"},
+{"id": "tool_angle", "title": "Canviar l&#39;angle de rotació"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Text en negreta"},
+{"id": "tool_circle", "title": "Cercle"},
+{"id": "tool_clear", "textContent": "Nova imatge"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Elements Clone"},
+{"id": "tool_delete", "title": "Eliminar element"},
+{"id": "tool_delete_multi", "title": "Elimina els elements seleccionats"},
+{"id": "tool_docprops", "textContent": "Propietats del document"},
+{"id": "tool_docprops_cancel", "textContent": "Cancel"},
+{"id": "tool_docprops_save", "textContent": "Salvar"},
+{"id": "tool_ellipse", "title": "Lipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Eina Llapis"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Change Font Size"},
+{"id": "tool_group", "title": "Elements de Grup de"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Text en cursiva"},
+{"id": "tool_line", "title": "L&#39;eina"},
+{"id": "tool_move_bottom", "title": "Mou al final"},
+{"id": "tool_move_top", "title": "Mou al principi"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Canviar la opacitat tema seleccionat"},
+{"id": "tool_open", "textContent": "Obrir imatge"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rectangle"},
+{"id": "tool_redo", "title": "Refer"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Guardar imatge"},
+{"id": "tool_select", "title": "Eina de selecció"},
+{"id": "tool_source", "title": "Font Edita"},
+{"id": "tool_source_cancel", "textContent": "Cancel"},
+{"id": "tool_source_save", "textContent": "Salvar"},
+{"id": "tool_square", "title": "Quadrat"},
+{"id": "tool_text", "title": "Eina de text"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Desfés"},
+{"id": "tool_ungroup", "title": "Desagrupar elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Canviar el nivell de zoom"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.cs.js b/files_svgedit/js/locale/lang.cs.js
new file mode 100644
index 000000000..8b4cbfae7
--- /dev/null
+++ b/files_svgedit/js/locale/lang.cs.js
@@ -0,0 +1,176 @@
+[
+{"id": "align_relative_to", "title": "Zarovnat relativně"},
+{"id": "bkgnd_color", "title": "Změnit barvu a průhlednost pozadí"},
+{"id": "circle_cx", "title": "Změnit souřadnici X středu kružnice"},
+{"id": "circle_cy", "title": "Změnit souřadnici Y středu kružnice"},
+{"id": "circle_r", "title": "Změnit poloměr kružnice"},
+{"id": "connector_no_arrow", "textContent": "Bez šipky"},
+{"id": "copyrightLabel", "textContent": "Běží na"},
+{"id": "cornerRadiusLabel", "title": "Změnit zaoblení obdélníku"},
+{"id": "curve_segments", "textContent": "křivka"},
+{"id": "ellipse_cx", "title": "Změnit souřadnici X středu elipsy"},
+{"id": "ellipse_cy", "title": "Změnit souřadnici Y středu elipsy"},
+{"id": "ellipse_rx", "title": "Změnit poloměr X elipsy"},
+{"id": "ellipse_ry", "title": "Změnit poloměr Y elipsy"},
+{"id": "fill_color", "title": "Změnit barvu výplně"},
+{"id": "fitToContent", "textContent": "přizpůsobit obsahu"},
+{"id": "fit_to_all", "textContent": "Přizpůsobit veškerému obsahu"},
+{"id": "fit_to_canvas", "textContent": "Přizpůsobit stránce"},
+{"id": "fit_to_layer_content", "textContent": "Přizpůsobit obsahu vrstvy"},
+{"id": "fit_to_sel", "textContent": "Přizpůsobit výběru"},
+{"id": "font_family", "title": "Změnit font"},
+{"id": "icon_large", "textContent": "velké"},
+{"id": "icon_medium", "textContent": "střední"},
+{"id": "icon_small", "textContent": "malé"},
+{"id": "icon_xlarge", "textContent": "největší"},
+{"id": "idLabel", "title": "Změnit ID elementu"},
+{"id": "image_height", "title": "Změnit výšku dokumentu"},
+{"id": "image_opt_embed", "textContent": "Vkládat do dokumentu"},
+{"id": "image_opt_ref", "textContent": "Jen odkazem"},
+{"id": "image_url", "title": "Změnit adresu URL"},
+{"id": "image_width", "title": "Změnit šířku dokumentu"},
+{"id": "includedImages", "textContent": "Vložené obrázky"},
+{"id": "largest_object", "textContent": "největšímu objektu"},
+{"id": "layer_delete", "title": "Odstranit vrstvu"},
+{"id": "layer_down", "title": "Přesunout vrstvu níž"},
+{"id": "layer_new", "title": "Přidat vrstvu"},
+{"id": "layer_rename", "title": "Přejmenovat vrstvu"},
+{"id": "layer_up", "title": "Přesunout vrstvu výš"},
+{"id": "layersLabel", "textContent": "vrstvy:"},
+{"id": "line_x1", "title": "Změnit počáteční souřadnici X úsečky"},
+{"id": "line_x2", "title": "Změnit koncovou souřadnici X úsečky"},
+{"id": "line_y1", "title": "Změnit počáteční souřadnici Y úsečky"},
+{"id": "line_y2", "title": "Změnit koncovou souřadnici X úsečky"},
+{"id": "linecap_butt", "title": "Konec úsečky: přesný"},
+{"id": "linecap_round", "title": "Konec úsečky: zaoblený"},
+{"id": "linecap_square", "title": "Konec úsečky: s čtvercovým přesahem"},
+{"id": "linejoin_bevel", "title": "Styl napojení úseček: zkosené"},
+{"id": "linejoin_miter", "title": "Styl napojení úseček: ostré"},
+{"id": "linejoin_round", "title": "Styl napojení úseček: oblé"},
+{"id": "main_icon", "title": "Hlavní menu"},
+{"id": "mode_connect", "title": "Spojit dva objekty"},
+{"id": "page", "textContent": "stránce"},
+{"id": "palette", "title": "Kliknutím změníte barvu výplně, kliknutím současně s klávesou shift změníte barvu čáry"},
+{"id": "path_node_x", "title": "Změnit souřadnici X uzlu"},
+{"id": "path_node_y", "title": "Změnit souřadnici Y uzlu"},
+{"id": "rect_height_tool", "title": "Změnit výšku obdélníku"},
+{"id": "rect_width_tool", "title": "Změnit šířku obdélníku"},
+{"id": "relativeToLabel", "textContent": "relatativně k:"},
+{"id": "seg_type", "title": "Změnit typ segmentu"},
+{"id": "selLayerLabel", "textContent": "Přesunout objekty do:"},
+{"id": "selLayerNames", "title": "Přesunout objekty do jiné vrstvy"},
+{"id": "selectedPredefined", "textContent": "vybrat předdefinovaný:"},
+{"id": "selected_objects", "textContent": "zvoleným objektům"},
+{"id": "selected_x", "title": "Změnit souřadnici X"},
+{"id": "selected_y", "title": "Změnit souřadnici Y"},
+{"id": "smallest_object", "textContent": "nejmenšímu objektu"},
+{"id": "straight_segments", "textContent": "úsečka"},
+{"id": "stroke_color", "title": "Změnit barvu čáry"},
+{"id": "stroke_style", "title": "Změnit styl čáry"},
+{"id": "stroke_width", "title": "Změnit šířku čáry"},
+{"id": "svginfo_bg_note", "textContent": "Pozor: obrázek v pozadí nebude uložen jako součást dokumentu."},
+{"id": "svginfo_change_background", "textContent": "Obrázek v pozadí editoru"},
+{"id": "svginfo_dim", "textContent": "Vlastní velikost"},
+{"id": "svginfo_editor_prefs", "textContent": "Nastavení editoru"},
+{"id": "svginfo_height", "textContent": "výška:"},
+{"id": "svginfo_icons", "textContent": "Velikost ikon"},
+{"id": "svginfo_image_props", "textContent": "Vlastnosti dokumentu"},
+{"id": "svginfo_lang", "textContent": "Jazyk"},
+{"id": "svginfo_title", "textContent": "Název"},
+{"id": "svginfo_width", "textContent": "šířka:"},
+{"id": "text", "title": "Změnit text"},
+{"id": "toggle_stroke_tools", "title": "Zobrazit/schovat více možností"},
+{"id": "tool_add_subpath", "title": "Přidat další součást křivky"},
+{"id": "tool_alignbottom", "title": "Zarovnat dolů"},
+{"id": "tool_aligncenter", "title": "Zarovnat nastřed"},
+{"id": "tool_alignleft", "title": "Zarovnat doleva"},
+{"id": "tool_alignmiddle", "title": "Zarovnat nastřed"},
+{"id": "tool_alignright", "title": "Zarovnat doprava"},
+{"id": "tool_aligntop", "title": "Zarovnat nahoru"},
+{"id": "tool_angle", "title": "Změnit úhel natočení"},
+{"id": "tool_blur", "title": "Změnit rozostření"},
+{"id": "tool_bold", "title": "Tučně"},
+{"id": "tool_circle", "title": "Kružnice"},
+{"id": "tool_clear", "textContent": "Nový dokument"},
+{"id": "tool_clone", "title": "Duplikovat"},
+{"id": "tool_clone_multi", "title": "Duplikovat objekty"},
+{"id": "tool_delete", "title": "Odstranit"},
+{"id": "tool_delete_multi", "title": "Odstranit objekty"},
+{"id": "tool_docprops", "textContent": "Vlastnosti dokumentu"},
+{"id": "tool_docprops_cancel", "textContent": "Storno"},
+{"id": "tool_docprops_save", "textContent": "Uložit"},
+{"id": "tool_ellipse", "title": "Elipsa"},
+{"id": "tool_export", "textContent": "Exportovat jako PNG"},
+{"id": "tool_eyedropper", "title": "Kapátko"},
+{"id": "tool_fhellipse", "title": "Elipsa volnou rukou"},
+{"id": "tool_fhpath", "title": "Kresba od ruky"},
+{"id": "tool_fhrect", "title": "Obdélník volnou rukou"},
+{"id": "tool_font_size", "title": "Změnit velikost písma"},
+{"id": "tool_group", "title": "Seskupit objekty"},
+{"id": "tool_image", "title": "Obrázek"},
+{"id": "tool_import", "textContent": "Importovat SVG"},
+{"id": "tool_italic", "title": "Kurzíva"},
+{"id": "tool_line", "title": "Úsečka"},
+{"id": "tool_move_bottom", "title": "Vrstvu úplně dospodu"},
+{"id": "tool_move_top", "title": "Vrstvu úplně nahoru"},
+{"id": "tool_node_clone", "title": "Vložit nový uzel"},
+{"id": "tool_node_delete", "title": "Ostranit uzel"},
+{"id": "tool_node_link", "title": "Provázat ovládací body uzlu"},
+{"id": "tool_opacity", "title": "Změnit průhlednost objektů"},
+{"id": "tool_open", "textContent": "Otevřít dokument"},
+{"id": "tool_openclose_path", "title": "Otevřít/zavřít součást křivky"},
+{"id": "tool_path", "title": "Křivka"},
+{"id": "tool_position", "title": "Zarovnat element na stránku"},
+{"id": "tool_rect", "title": "Obdélník"},
+{"id": "tool_redo", "title": "Znovu"},
+{"id": "tool_reorient", "title": "Změna orientace křivky"},
+{"id": "tool_save", "textContent": "Uložit dokument"},
+{"id": "tool_select", "title": "Výběr a transformace objektů"},
+{"id": "tool_source", "title": "Upravovat SVG kód"},
+{"id": "tool_source_cancel", "textContent": "Storno"},
+{"id": "tool_source_save", "textContent": "Uložit"},
+{"id": "tool_square", "title": "Čtverec"},
+{"id": "tool_text", "title": "Text"},
+{"id": "tool_topath", "title": "Objekt na křivku"},
+{"id": "tool_undo", "title": "Zpět"},
+{"id": "tool_ungroup", "title": "Zrušit seskupení"},
+{"id": "tool_wireframe", "title": "Zobrazit jen kostru"},
+{"id": "tool_zoom", "title": "Přiblížení"},
+{"id": "url_notice", "title": "POZOR: Obrázek nelze uložit s dokumentem. Bude zobrazován z adresáře, kde se nyní nachází."},
+{"id": "zoom_panel", "title": "Změna přiblížení"},
+{"id": "sidepanel_handle", "textContent": "V r s t v y", "title": "Táhnutím změnit velikost"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Chyba v parsování zdrojového kódu SVG.\nChcete se vrátit k původnímu?",
+ "QignoreSourceChanges": "Opravdu chcete stornovat změny provedené v SVG kódu?",
+ "QmoveElemsToLayer": "Opravdu chcete přesunout vybrané objekty do vrstvy '%s'?",
+ "QwantToClear": "Opravdu chcete smazat současný dokument?\nHistorie změn bude také smazána.",
+ "cancel": "Storno",
+ "defsFailOnSave": "POZOR: Kvůli nedokonalosti Vašeho prohlížeče se mohou některé části dokumentu špatně vykreslovat (mohou chybět barevné přechody nebo některé objekty). Po uložení dokumentu by se ale vše mělo zobrazovat správně.",
+ "dupeLayerName": "Taková vrstva už bohužel existuje",
+ "enterNewImgURL": "Vložte adresu URL, na které se nachází vkládaný obrázek",
+ "enterNewLayerName": "Zadejte prosím jméno pro novou vrstvu",
+ "enterUniqueLayerName": "Zadejte prosím jedinečné jméno pro vrstvu",
+ "exportNoBlur": "bez rozostření elementů",
+ "exportNoDashArray": "plné tahy",
+ "exportNoImage": "bez vložených obrázků",
+ "exportNoText": "vložený text může vypadat jinak",
+ "exportNoforeignObject": "bez foreignObject objektů",
+ "featNotSupported": "Tato vlastnost ještě není k dispozici",
+ "invalidAttrValGiven": "Nevhodná hodnota",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "šipka dolů",
+ "key_up": "šipka nahoru",
+ "layer": "Vrstva",
+ "layerHasThatName": "Vrstva už se tak jmenuje",
+ "loadingImage": "Nahrávám obrázek ...",
+ "noContentToFitTo": "Vyberte oblast pro přizpůsobení",
+ "noteTheseIssues": "Mohou se vyskytnout následující problémy: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Táhnutím ovládacího bodu myší tvarujete křivku.",
+ "pathNodeTooltip": "Táhnutím myši uzel přesunete. Dvojklik mění typ segmentu.",
+ "saveFromBrowser": "Použijte nabídku \"Uložit stránku jako ...\" ve Vašem prohlížeči pro uložení dokumentu do souboru %s."
+ }
+}
+]
diff --git a/files_svgedit/js/locale/lang.cy.js b/files_svgedit/js/locale/lang.cy.js
new file mode 100644
index 000000000..d3e62ae28
--- /dev/null
+++ b/files_svgedit/js/locale/lang.cy.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Alinio perthynas i ..."},
+{"id": "bkgnd_color", "title": "Newid lliw cefndir / Didreiddiad"},
+{"id": "circle_cx", "title": "CX Newid cylch yn cydlynu"},
+{"id": "circle_cy", "title": "Newid cylch&#39;s cy gydgysylltu"},
+{"id": "circle_r", "title": "Newid radiws cylch yn"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Newid Hirsgwâr Corner Radiws"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Newid Ellipse yn CX gydgysylltu"},
+{"id": "ellipse_cy", "title": "Newid Ellipse yn cydlynu cy"},
+{"id": "ellipse_rx", "title": "Radiws Newid Ellipse&#39;s x"},
+{"id": "ellipse_ry", "title": "Radiws Newid Ellipse yn y"},
+{"id": "fill_color", "title": "Newid lliw llenwi"},
+{"id": "fitToContent", "textContent": "Ffit i Cynnwys"},
+{"id": "fit_to_all", "textContent": "Yn addas i bawb content"},
+{"id": "fit_to_canvas", "textContent": "Ffit i ofyn"},
+{"id": "fit_to_layer_content", "textContent": "Ffit cynnwys haen i"},
+{"id": "fit_to_sel", "textContent": "Yn addas at ddewis"},
+{"id": "font_family", "title": "Newid Font Teulu"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Uchder delwedd Newid"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Newid URL"},
+{"id": "image_width", "title": "Lled delwedd Newid"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "gwrthrych mwyaf"},
+{"id": "layer_delete", "title": "Dileu Haen"},
+{"id": "layer_down", "title": "Symud Haen i Lawr"},
+{"id": "layer_new", "title": "Haen Newydd"},
+{"id": "layer_rename", "title": "Ail-enwi Haen"},
+{"id": "layer_up", "title": "Symud Haen Up"},
+{"id": "layersLable", "textContent": "Haen:"},
+{"id": "line_x1", "title": "Newid llinell yn cychwyn x gydgysylltu"},
+{"id": "line_x2", "title": "Newid llinell yn diweddu x gydgysylltu"},
+{"id": "line_y1", "title": "Newid llinell ar y cychwyn yn cydlynu"},
+{"id": "line_y2", "title": "Newid llinell yn dod i ben y gydgysylltu"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "tudalen"},
+{"id": "palette", "title": "Cliciwch yma i lenwi newid lliw, sifft-cliciwch i newid lliw strôc"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Uchder petryal Newid"},
+{"id": "rect_width_tool", "title": "Lled petryal Newid"},
+{"id": "relativeToLabel", "textContent": "cymharol i:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Rhagosodol Dewis:"},
+{"id": "selected_objects", "textContent": "gwrthrychau etholedig"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "lleiaf gwrthrych"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Newid lliw strôc"},
+{"id": "stroke_style", "title": "Newid arddull strôc diferyn"},
+{"id": "stroke_width", "title": "Lled strôc Newid"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Uchder:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Lled:"},
+{"id": "text", "title": "Cynnwys testun Newid"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Alinio Gwaelod"},
+{"id": "tool_aligncenter", "title": "Alinio Center"},
+{"id": "tool_alignleft", "title": "Alinio Chwith"},
+{"id": "tool_alignmiddle", "title": "Alinio Canol"},
+{"id": "tool_alignright", "title": "Alinio Hawl"},
+{"id": "tool_aligntop", "title": "Alinio Top"},
+{"id": "tool_angle", "title": "Ongl cylchdro Newid"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Testun Bras"},
+{"id": "tool_circle", "title": "Cylch"},
+{"id": "tool_clear", "textContent": "Newydd Delwedd"},
+{"id": "tool_clone", "title": "Clone Elfen"},
+{"id": "tool_clone_multi", "title": "Elfennau Clone "},
+{"id": "tool_delete", "title": "Dileu Elfen"},
+{"id": "tool_delete_multi", "title": "Elfennau Selected Dileu"},
+{"id": "tool_docprops", "textContent": "Document Eiddo"},
+{"id": "tool_docprops_cancel", "textContent": "Canslo"},
+{"id": "tool_docprops_save", "textContent": "Cadw"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Rhad ac am ddim Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Teclyn pensil"},
+{"id": "tool_fhrect", "title": "Hand rhad ac am ddim Hirsgwâr"},
+{"id": "tool_font_size", "title": "Newid Maint Ffont"},
+{"id": "tool_group", "title": "Elfennau Grŵp"},
+{"id": "tool_image", "title": "Offer Delwedd"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italig Testun"},
+{"id": "tool_line", "title": "Llinell Offer"},
+{"id": "tool_move_bottom", "title": "Symud i&#39;r Gwaelod"},
+{"id": "tool_move_top", "title": "Symud i&#39;r Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Newid dewis Didreiddiad eitem"},
+{"id": "tool_open", "textContent": "Delwedd Agored"},
+{"id": "tool_path", "title": "Offer poly"},
+{"id": "tool_rect", "title": "Petryal"},
+{"id": "tool_redo", "title": "Ail-wneud"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Cadw Delwedd"},
+{"id": "tool_select", "title": "Dewiswch Offer"},
+{"id": "tool_source", "title": "Golygu Ffynhonnell"},
+{"id": "tool_source_cancel", "textContent": "Canslo"},
+{"id": "tool_source_save", "textContent": "Cadw"},
+{"id": "tool_square", "title": "Sgwâr"},
+{"id": "tool_text", "title": "Testun Offer"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Dadwneud"},
+{"id": "tool_ungroup", "title": "Elfennau Ungroup"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Offer Chwyddo"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Newid lefel chwyddo"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.da.js b/files_svgedit/js/locale/lang.da.js
new file mode 100644
index 000000000..a081e0b9f
--- /dev/null
+++ b/files_svgedit/js/locale/lang.da.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Juster i forhold til ..."},
+{"id": "bkgnd_color", "title": "Skift baggrundsfarve / uigennemsigtighed"},
+{"id": "circle_cx", "title": "Skift cirklens cx koordinere"},
+{"id": "circle_cy", "title": "Skift cirklens cy koordinere"},
+{"id": "circle_r", "title": "Skift cirklens radius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Skift Rektangel Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Skift ellipse&#39;s cx koordinere"},
+{"id": "ellipse_cy", "title": "Skift ellipse&#39;s cy koordinere"},
+{"id": "ellipse_rx", "title": "Skift ellipse&#39;s x radius"},
+{"id": "ellipse_ry", "title": "Skift ellipse&#39;s y radius"},
+{"id": "fill_color", "title": "Skift fyldfarve"},
+{"id": "fitToContent", "textContent": "Tilpas til indhold"},
+{"id": "fit_to_all", "textContent": "Passer til alt indhold"},
+{"id": "fit_to_canvas", "textContent": "Tilpas til lærred"},
+{"id": "fit_to_layer_content", "textContent": "Tilpas til lag indhold"},
+{"id": "fit_to_sel", "textContent": "Tilpas til udvælgelse"},
+{"id": "font_family", "title": "Skift Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Skift billede højde"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Skift webadresse"},
+{"id": "image_width", "title": "Skift billede bredde"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "største objekt"},
+{"id": "layer_delete", "title": "Slet Layer"},
+{"id": "layer_down", "title": "Flyt lag ned"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Omdøb Layer"},
+{"id": "layer_up", "title": "Flyt Layer Up"},
+{"id": "layersLable", "textContent": "Lag:"},
+{"id": "line_x1", "title": "Skift linie&#39;s start x-koordinat"},
+{"id": "line_x2", "title": "Skift Line&#39;s slutter x-koordinat"},
+{"id": "line_y1", "title": "Skift linjens start y-koordinat"},
+{"id": "line_y2", "title": "Skift Line&#39;s slutter y-koordinat"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "side"},
+{"id": "palette", "title": "Klik for at ændre fyldfarve, shift-klik for at ændre stregfarve"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Skift rektangel højde"},
+{"id": "rect_width_tool", "title": "Skift rektanglets bredde"},
+{"id": "relativeToLabel", "textContent": "i forhold til:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Vælg foruddefinerede:"},
+{"id": "selected_objects", "textContent": "valgte objekter"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "mindste objekt"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Skift stregfarve"},
+{"id": "stroke_style", "title": "Skift slagtilfælde Dash stil"},
+{"id": "stroke_width", "title": "Skift slagtilfælde bredde"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Højde:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Bredde:"},
+{"id": "text", "title": "Skift tekst indhold"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Juster Bottom"},
+{"id": "tool_aligncenter", "title": "Centrer"},
+{"id": "tool_alignleft", "title": "Venstrejusteret"},
+{"id": "tool_alignmiddle", "title": "Juster Mellemøsten"},
+{"id": "tool_alignright", "title": "Højrejusteret"},
+{"id": "tool_aligntop", "title": "Juster Top"},
+{"id": "tool_angle", "title": "Skift rotationsvinkel"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Fed tekst"},
+{"id": "tool_circle", "title": "Cirkel"},
+{"id": "tool_clear", "textContent": "Nyt billede"},
+{"id": "tool_clone", "title": "Klon Element"},
+{"id": "tool_clone_multi", "title": "Klon Elements"},
+{"id": "tool_delete", "title": "Slet Element"},
+{"id": "tool_delete_multi", "title": "Slet markerede elementer"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Annuller"},
+{"id": "tool_docprops_save", "textContent": "Gemme"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Rektangel"},
+{"id": "tool_font_size", "title": "Skift skriftstørrelse"},
+{"id": "tool_group", "title": "Gruppe Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Flyt til bund"},
+{"id": "tool_move_top", "title": "Flyt til toppen"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Skift valgte element opacitet"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rektangel"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Gem billede"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Annuller"},
+{"id": "tool_source_save", "textContent": "Gemme"},
+{"id": "tool_square", "title": "Firkant"},
+{"id": "tool_text", "title": "Tekstværktøj"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Fortryd"},
+{"id": "tool_ungroup", "title": "Opdel Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Skift zoomniveau"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.de.js b/files_svgedit/js/locale/lang.de.js
new file mode 100644
index 000000000..7bd961362
--- /dev/null
+++ b/files_svgedit/js/locale/lang.de.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Relativ zu einem anderem Objekt ausrichten ..."},
+{"id": "bkgnd_color", "title": "Hintergrundfarbe ändern / Opazität"},
+{"id": "circle_cx", "title": "Kreiszentrum (cx) ändern"},
+{"id": "circle_cy", "title": "Kreiszentrum (cy) ändern"},
+{"id": "circle_r", "title": "Kreisradius (r) ändern"},
+{"id": "connector_no_arrow", "textContent": "Kein Pfeil"},
+{"id": "copyrightLabel", "textContent": "angetrieben durch"},
+{"id": "cornerRadiusLabel", "title": "Eckenradius des Rechtecks ändern"},
+{"id": "curve_segments", "textContent": "Kurve"},
+{"id": "ellipse_cx", "title": "Ellipsenzentrum (cx) ändern"},
+{"id": "ellipse_cy", "title": "Ellipsenzentrum (cy) ändern"},
+{"id": "ellipse_rx", "title": "Ellipsenradius (x) ändern"},
+{"id": "ellipse_ry", "title": "Ellipsenradius (y) ändern"},
+{"id": "fill_color", "title": "Füllfarbe ändern"},
+{"id": "fitToContent", "textContent": "An den Inhalt anpassen"},
+{"id": "fit_to_all", "textContent": "An gesamten Inhalt anpassen"},
+{"id": "fit_to_canvas", "textContent": "An die Zeichenfläche anpassen"},
+{"id": "fit_to_layer_content", "textContent": "An Inhalt der Ebene anpassen"},
+{"id": "fit_to_sel", "textContent": "An die Auswahl anpassen"},
+{"id": "font_family", "title": "Schriftart wählen"},
+{"id": "icon_large", "textContent": "Groß"},
+{"id": "icon_medium", "textContent": "Mittel"},
+{"id": "icon_small", "textContent": "Klein"},
+{"id": "icon_xlarge", "textContent": "Sehr Groß"},
+{"id": "image_height", "title": "Bildhöhe ändern"},
+{"id": "image_opt_embed", "textContent": "Daten einbetten (lokale Dateien)"},
+{"id": "image_opt_ref", "textContent": "Benutze die Datei Referenz"},
+{"id": "image_url", "title": "URL ändern"},
+{"id": "image_width", "title": "Bildbreite ändern"},
+{"id": "includedImages", "textContent": "Eingefügte Bilder"},
+{"id": "largest_object", "textContent": "größtes Objekt"},
+{"id": "layer_delete", "title": "Ebene löschen"},
+{"id": "layer_down", "title": "Ebene nach unten verschieben"},
+{"id": "layer_new", "title": "Neue Ebene"},
+{"id": "layer_rename", "title": "Ebene umbenennen"},
+{"id": "layer_up", "title": "Ebene nach oben verschieben"},
+{"id": "layersLabel", "textContent": "Ebenen:"},
+{"id": "line_x1", "title": "X-Koordinate des Linienanfangs ändern"},
+{"id": "line_x2", "title": "X-Koordinate des Linienendes ändern"},
+{"id": "line_y1", "title": "Y-Koordinate des Linienanfangs ändern"},
+{"id": "line_y2", "title": "Y-Koordinate des Linienendes ändern"},
+{"id": "page", "textContent": "Seite"},
+{"id": "linecap_butt", "title": "Form der Linienendung: Stumpf"},
+{"id": "linecap_round", "title": "Form der Linienendung: Rund"},
+{"id": "linecap_square", "title": "Form der Linienendung: Rechteckig"},
+{"id": "linejoin_bevel", "title": "Zusammentreffen von zwei Linien: abgeschrägte Kante"},
+{"id": "linejoin_miter", "title": "Zusammentreffen von zwei Linien: Gehrung"},
+{"id": "linejoin_round", "title": "Zusammentreffen von zwei Linien: Rund"},
+{"id": "main_icon", "title": "Hauptmenü"},
+{"id": "mode_connect", "title": "Verbinde zwei Objekte"},
+{"id": "palette", "title": "Klick zum Ändern der Füllfarbe, Shift-Klick zum Ändern der Linienfarbe"},
+{"id": "path_node_x", "title": "Ändere die X Koordinate des Knoten"},
+{"id": "path_node_y", "title": "Ändere die Y Koordinate des Knoten"},
+{"id": "rect_height_tool", "title": "Höhe des Rechtecks ändern"},
+{"id": "rect_width_tool", "title": "Breite des Rechtecks ändern"},
+{"id": "relativeToLabel", "textContent": "im Vergleich zu:"},
+{"id": "seg_type", "title": "Ändere den Typ des Segments"},
+{"id": "selLayerLabel", "textContent": "Verschiebe ausgewählte Objekte:"},
+{"id": "selLayerNames", "title": "Verschiebe ausgewählte Objekte auf eine andere Ebene"},
+{"id": "selectedPredefined", "textContent": "Auswahl einer vordefinierten:"},
+{"id": "selected_objects", "textContent": "gewählte Objekte"},
+{"id": "selected_x", "title": "Ändere die X Koordinate"},
+{"id": "selected_y", "title": "Ändere die Y Koordinate"},
+{"id": "smallest_object", "textContent": "kleinstes Objekt"},
+{"id": "straight_segments", "textContent": "Gerade"},
+{"id": "stroke_color", "title": "Linienfarbe ändern"},
+{"id": "stroke_style", "title": "Linienstil ändern"},
+{"id": "stroke_width", "title": "Linienbreite ändern"},
+{"id": "svginfo_bg_note", "textContent": "Anmerkung: Der Hintergrund wird mit der Speicherung des Bildes nicht gespeichert."},
+{"id": "svginfo_change_background", "textContent": "Editor Hintergrund"},
+{"id": "svginfo_dim", "textContent": "Dimension der Zeichenfläche"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Einstellungen"},
+{"id": "svginfo_height", "textContent": "Höhe:"},
+{"id": "svginfo_icons", "textContent": "Symbol Abmessungen"},
+{"id": "svginfo_image_props", "textContent": "Bildeigenschaften"},
+{"id": "svginfo_lang", "textContent": "Sprache"},
+{"id": "svginfo_title", "textContent": "Titel"},
+{"id": "svginfo_width", "textContent": "Breite:"},
+{"id": "text", "title": "Textinhalt erstellen und bearbeiten"},
+{"id": "toggle_stroke_tools", "title": "Zeige/Verberge weitere Linien Werkzeuge"},
+{"id": "tool_add_subpath", "title": "Teilpfad hinzufügen"},
+{"id": "tool_alignbottom", "title": "Unten ausrichten"},
+{"id": "tool_aligncenter", "title": "Zentriert ausrichten"},
+{"id": "tool_alignleft", "title": "Linksbündig ausrichten"},
+{"id": "tool_alignmiddle", "title": "In der Mitte ausrichten"},
+{"id": "tool_alignright", "title": "Rechtsbündig ausrichten"},
+{"id": "tool_aligntop", "title": "Oben ausrichten"},
+{"id": "tool_angle", "title": "Drehwinkel ändern"},
+{"id": "tool_blur", "title": "Ändere Gaußschen Weichzeichner Wert"},
+{"id": "tool_bold", "title": "Fetter Text"},
+{"id": "tool_circle", "title": "Kreis"},
+{"id": "tool_clear", "textContent": "Neues Bild"},
+{"id": "tool_clone", "title": "Objekt klonen"},
+{"id": "tool_clone_multi", "title": "Ausgewählte Objekte klonen"},
+{"id": "tool_delete", "title": "Objekt löschen"},
+{"id": "tool_delete_multi", "title": "Ausgewählte Objekte löschen"},
+{"id": "tool_docprops", "textContent": "Dokument-Eigenschaften"},
+{"id": "tool_docprops_cancel", "textContent": "Abbrechen"},
+{"id": "tool_docprops_save", "textContent": "OK"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Als PNG exportieren"},
+{"id": "tool_eyedropper", "title": "Ableger"},
+{"id": "tool_fhellipse", "title": "Freihand Ellipse"},
+{"id": "tool_fhpath", "title": "Freihandlinien zeichnen"},
+{"id": "tool_fhrect", "title": "Freihand Rechteck"},
+{"id": "tool_font_size", "title": "Schriftgröße einstellen"},
+{"id": "tool_group", "title": "Gruppieren"},
+{"id": "tool_image", "title": "Bild einfügen"},
+{"id": "tool_import", "textContent": "Importiere SVG"},
+{"id": "tool_italic", "title": "Kursiver Text"},
+{"id": "tool_line", "title": "Linien zeichnen"},
+{"id": "tool_move_bottom", "title": "Die gewählten Objekte nach ganz unten schieben"},
+{"id": "tool_move_top", "title": "Die gewählten Objekte nach ganz oben anheben"},
+{"id": "tool_node_clone", "title": "Klone den Knoten"},
+{"id": "tool_node_delete", "title": "Lösche den Knoten"},
+{"id": "tool_node_link", "title": "Gekoppelte oder separate Kontroll Punkte für die Bearbeitung des Pfades"},
+{"id": "tool_opacity", "title": "Opazität des ausgewählten Objekts ändern"},
+{"id": "tool_open", "textContent": "Bild öffnen"},
+{"id": "tool_path", "title": "Pfad zeichnen"},
+{"id": "tool_rect", "title": "Rechteck"},
+{"id": "tool_redo", "title": "Wiederherstellen"},
+{"id": "tool_reorient", "title": "Neuausrichtung des Pfades"},
+{"id": "tool_save", "textContent": "Bild speichern"},
+{"id": "tool_select", "title": "Objekte auswählen und verändern"},
+{"id": "tool_source", "title": "Quellecode bearbeiten"},
+{"id": "tool_source_cancel", "textContent": "Abbrechen"},
+{"id": "tool_source_save", "textContent": "Änderungen akzeptieren"},
+{"id": "tool_square", "title": "Quadrat"},
+{"id": "tool_text", "title": "Text erstellen und bearbeiten"},
+{"id": "tool_topath", "title": "Gewähltes Objekt in einen Pfad konvertieren"},
+{"id": "tool_undo", "title": "Rückgängig"},
+{"id": "tool_ungroup", "title": "Gruppierung aufheben"},
+{"id": "tool_wireframe", "title": "Drahtmodell Modus"},
+{"id": "tool_zoom", "title": "Zoomfaktor vergrößern oder verringern"},
+{"id": "url_notice", "title": "Hinweis: Dieses Bild kann nicht eingebettet werden. Eine Anzeige hängt von diesem Pfad ab."},
+{"id": "zoom_panel", "title": "vergrößern"},
+{"id": "sidepanel_handle", "textContent": "E b e n e n", "title": "Ziehe links/rechts um die Seitenleiste anzupassen"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Die Syntaxanalyse Ihrer SVG Quelle enthält Fehler.\nOriginal SVG wiederherstellen?",
+ "QignoreSourceChanges": "Soll die Änderung am SVG Quelltext ignoriert werden?",
+ "QmoveElemsToLayer": "Verschiebe ausgewählte Objekte in die Ebene '%s'?",
+ "QwantToClear": "Möchten Sie die Zeichnung löschen?\nDadurch wird auch die Rückgängig Funktion zurückgesetzt!",
+ "cancel": "Abbrechen",
+ "defsFailOnSave": "Hinweis: Aufgrund eines Fehlers in Ihrem Browser, kann dieses Bild falsch angezeigt werden (fehlende Gradienten oder Elemente). Es wird jedoch richtig angezeigt sobald es tatsächlich gespeichert wird.",
+ "dupeLayerName": "Eine Ebene hat bereits diesen Namen!",
+ "enterNewImgURL": "Geben Sie die URL für das neue Bild an",
+ "enterNewLayerName": "Geben Sie bitte einen neuen Namen für die Ebene ein",
+ "enterUniqueLayerName": "Verwenden Sie einen eindeutigen Namen für die Ebene",
+ "exportNoBlur": "Verschwommene Elemente werden als un-verschwommen erscheinen.",
+ "exportNoDashArray": "Linien werden ausgefüllt angezeigt.",
+ "exportNoImage": "Image-Elemente werden nicht angezeigt.",
+ "exportNoText": "Text erscheint möglicherweise nicht wie erwartet.",
+ "exportNoforeignObject": "Fremde Objekt Elemente werden nicht angezeigt.",
+ "featNotSupported": "Diese Eigenschaft wird nicht unterstützt",
+ "invalidAttrValGiven": "Fehlerhafter Wert",
+ "key_backspace": "Rücktaste",
+ "key_del": "Löschen",
+ "key_down": "nach unten",
+ "key_up": "nach oben",
+ "layer": "Ebene",
+ "layerHasThatName": "Eine Ebene hat bereits diesen Namen",
+ "loadingImage": "Bild wird geladen, bitte warten ...",
+ "noContentToFitTo": "Kein Inhalt anzupassen",
+ "noteTheseIssues": "Beachten Sie außerdem die folgenden Probleme: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Ziehe den Kontroll Punkt um die Kurven Eigenschaften anzupassen",
+ "pathNodeTooltip": "Ziehe den Knoten zum Verschieben. Doppel Klick um den Segment Typ anzupassen",
+ "saveFromBrowser": "Wählen Sie \"Speichern unter ...\" in Ihrem Browser, um das Bild als Datei %s zu speichern."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.el.js b/files_svgedit/js/locale/lang.el.js
new file mode 100644
index 000000000..259408a30
--- /dev/null
+++ b/files_svgedit/js/locale/lang.el.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Στοίχιση σε σχέση με ..."},
+{"id": "bkgnd_color", "title": "Αλλαγή χρώματος φόντου / αδιαφάνεια"},
+{"id": "circle_cx", "title": "Cx Αλλαγή κύκλου συντονίζουν"},
+{"id": "circle_cy", "title": "Αλλαγή κύκλου cy συντονίζουν"},
+{"id": "circle_r", "title": "Αλλαγή ακτίνα κύκλου"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Αλλαγή ορθογώνιο Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Αλλαγή ellipse του CX συντονίζουν"},
+{"id": "ellipse_cy", "title": "Αλλαγή ellipse του cy συντονίζουν"},
+{"id": "ellipse_rx", "title": "X ακτίνα Αλλαγή ellipse του"},
+{"id": "ellipse_ry", "title": "Y ακτίνα Αλλαγή ellipse του"},
+{"id": "fill_color", "title": "Αλλαγή συμπληρώστε χρώμα"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Ταιριάζει σε όλο το περιεχόμενο"},
+{"id": "fit_to_canvas", "textContent": "Προσαρμογή στο μουσαμά"},
+{"id": "fit_to_layer_content", "textContent": "Προσαρμογή στο περιεχόμενο στρώμα"},
+{"id": "fit_to_sel", "textContent": "Fit to επιλογή"},
+{"id": "font_family", "title": "Αλλαγή γραμματοσειράς Οικογένεια"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Αλλαγή ύψος εικόνας"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Αλλαγή URL"},
+{"id": "image_width", "title": "Αλλαγή πλάτος εικόνας"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "μεγαλύτερο αντικείμενο"},
+{"id": "layer_delete", "title": "Διαγραφήστρώματος"},
+{"id": "layer_down", "title": "Μετακίνηση Layer Down"},
+{"id": "layer_new", "title": "Νέο Layer"},
+{"id": "layer_rename", "title": "Μετονομασία Layer"},
+{"id": "layer_up", "title": "Μετακίνηση Layer Up"},
+{"id": "layersLable", "textContent": "Στρώματα:"},
+{"id": "line_x1", "title": "Αλλαγή γραμμής εκκίνησης x συντονίζουν"},
+{"id": "line_x2", "title": "Αλλαγή γραμμής λήγει x συντονίζουν"},
+{"id": "line_y1", "title": "Αλλαγή γραμμής εκκίνησης y συντονίζουν"},
+{"id": "line_y2", "title": "Αλλαγή γραμμής λήγει y συντονίζουν"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "σελίδα"},
+{"id": "palette", "title": "Κάντε κλικ για να συμπληρώσετε την αλλαγή χρώματος, στροφή κλικ για να αλλάξετε το χρώμα εγκεφαλικό"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Αλλαγή ύψος ορθογωνίου"},
+{"id": "rect_width_tool", "title": "Αλλαγή πλάτους ορθογώνιο"},
+{"id": "relativeToLabel", "textContent": "σε σχέση με:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Επιλογή προκαθορισμένων:"},
+{"id": "selected_objects", "textContent": "εκλέγεται αντικείμενα"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "μικρότερο αντικείμενο"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Αλλαγή χρώματος εγκεφαλικό"},
+{"id": "stroke_style", "title": "Αλλαγή στυλ παύλα εγκεφαλικό"},
+{"id": "stroke_width", "title": "Αλλαγή πλάτος γραμμής"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Ύψος:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Πλάτος:"},
+{"id": "text", "title": "Αλλαγή περιεχόμενο κειμένου"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Στοίχισηκάτω"},
+{"id": "tool_aligncenter", "title": "Στοίχισηστοκέντρο"},
+{"id": "tool_alignleft", "title": "Στοίχισηαριστερά"},
+{"id": "tool_alignmiddle", "title": "Ευθυγράμμιση Μέση"},
+{"id": "tool_alignright", "title": "Στοίχισηδεξιά"},
+{"id": "tool_aligntop", "title": "Στοίχισηπάνω"},
+{"id": "tool_angle", "title": "Αλλαγή γωνία περιστροφής"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Κύκλος"},
+{"id": "tool_clear", "textContent": "Νέα εικόνα"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Στοιχεία"},
+{"id": "tool_delete", "title": "Διαγραφή Στοιχείων [Delete/Backspace]"},
+{"id": "tool_delete_multi", "title": "Διαγραφή επιλεγμένων στοιχείων"},
+{"id": "tool_docprops", "textContent": "Ιδιότητες εγγράφου"},
+{"id": "tool_docprops_cancel", "textContent": "Άκυρο"},
+{"id": "tool_docprops_save", "textContent": "Αποθηκεύω"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Δωρεάν-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Εργαλείομολυβιού"},
+{"id": "tool_fhrect", "title": "Δωρεάν-Hand ορθογώνιο"},
+{"id": "tool_font_size", "title": "Αλλαγή μεγέθους γραμματοσειράς"},
+{"id": "tool_group", "title": "Ομάδα Στοιχεία"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Πλάγιους"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Μετακίνηση προς τα κάτω"},
+{"id": "tool_move_top", "title": "Μετακίνηση στην αρχή"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Αλλαγή αδιαφάνεια επιλεγμένο σημείο"},
+{"id": "tool_open", "textContent": "Άνοιγμα εικόνας"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Ορθογώνιο"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Αποθήκευση εικόνας"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Επεξεργασία Πηγή"},
+{"id": "tool_source_cancel", "textContent": "Άκυρο"},
+{"id": "tool_source_save", "textContent": "Αποθηκεύω"},
+{"id": "tool_square", "title": "Τετράγωνο"},
+{"id": "tool_text", "title": "Κείμενο Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Αναίρεση"},
+{"id": "tool_ungroup", "title": "Κατάργηση ομαδοποίησης Στοιχεία"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Αλλαγή επίπεδο μεγέθυνσης"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.en.js b/files_svgedit/js/locale/lang.en.js
new file mode 100644
index 000000000..d6451de18
--- /dev/null
+++ b/files_svgedit/js/locale/lang.en.js
@@ -0,0 +1,176 @@
+[
+{"id": "align_relative_to", "title": "Align relative to ..."},
+{"id": "bkgnd_color", "title": "Change background color/opacity"},
+{"id": "circle_cx", "title": "Change circle's cx coordinate"},
+{"id": "circle_cy", "title": "Change circle's cy coordinate"},
+{"id": "circle_r", "title": "Change circle's radius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Change Rectangle Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Change ellipse's cx coordinate"},
+{"id": "ellipse_cy", "title": "Change ellipse's cy coordinate"},
+{"id": "ellipse_rx", "title": "Change ellipse's x radius"},
+{"id": "ellipse_ry", "title": "Change ellipse's y radius"},
+{"id": "fill_color", "title": "Change fill color"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Fit to all content"},
+{"id": "fit_to_canvas", "textContent": "Fit to canvas"},
+{"id": "fit_to_layer_content", "textContent": "Fit to layer content"},
+{"id": "fit_to_sel", "textContent": "Fit to selection"},
+{"id": "font_family", "title": "Change Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "idLabel", "title": "Identify the element"},
+{"id": "image_height", "title": "Change image height"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Change URL"},
+{"id": "image_width", "title": "Change image width"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "largest object"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Change line's starting x coordinate"},
+{"id": "line_x2", "title": "Change line's ending x coordinate"},
+{"id": "line_y1", "title": "Change line's starting y coordinate"},
+{"id": "line_y2", "title": "Change line's ending y coordinate"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "page"},
+{"id": "palette", "title": "Click to change fill color, shift-click to change stroke color"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Change rectangle height"},
+{"id": "rect_width_tool", "title": "Change rectangle width"},
+{"id": "relativeToLabel", "textContent": "relative to:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Select predefined:"},
+{"id": "selected_objects", "textContent": "selected objects"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "smallest object"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Change stroke color"},
+{"id": "stroke_style", "title": "Change stroke dash style"},
+{"id": "stroke_width", "title": "Change stroke width by 1, shift-click to change by 0.1"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Height:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Width:"},
+{"id": "text", "title": "Change text contents"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Align Center"},
+{"id": "tool_alignleft", "title": "Align Left"},
+{"id": "tool_alignmiddle", "title": "Align Middle"},
+{"id": "tool_alignright", "title": "Align Right"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Change rotation angle"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Delete Element"},
+{"id": "tool_delete_multi", "title": "Delete Selected Elements"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Cancel"},
+{"id": "tool_docprops_save", "textContent": "OK"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Change Font Size"},
+{"id": "tool_group", "title": "Group Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Change selected item opacity"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_openclose_path", "title": "Open/close sub-path"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_position", "title": "Align Element to Page"},
+{"id": "tool_rect", "title": "Rectangle"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Cancel"},
+{"id": "tool_source_save", "textContent": "Apply Changes"},
+{"id": "tool_square", "title": "Square"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Change zoom level"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.es.js b/files_svgedit/js/locale/lang.es.js
new file mode 100644
index 000000000..29a66bd81
--- /dev/null
+++ b/files_svgedit/js/locale/lang.es.js
@@ -0,0 +1,174 @@
+[
+{"id": "align_relative_to", "title": "Alinear con respecto a ..."},
+{"id": "bkgnd_color", "title": "Cambiar color de fondo / opacidad"},
+{"id": "circle_cx", "title": "Cambiar la posición horizonral CX del círculo"},
+{"id": "circle_cy", "title": "Cambiar la posición vertical CY del círculo"},
+{"id": "circle_r", "title": "Cambiar el radio del círculo"},
+{"id": "connector_no_arrow", "textContent": "Sin flecha"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Cambiar el radio de las esquinas del rectángulo"},
+{"id": "curve_segments", "textContent": "Curva"},
+{"id": "ellipse_cx", "title": "Cambiar la posición horizontal CX de la elipse"},
+{"id": "ellipse_cy", "title": "Cambiar la posición vertical CY de la elipse"},
+{"id": "ellipse_rx", "title": "Cambiar el radio horizontal X de la elipse"},
+{"id": "ellipse_ry", "title": "Cambiar el radio vertical Y de la elipse"},
+{"id": "fill_color", "title": "Cambiar el color de relleno"},
+{"id": "fitToContent", "textContent": "Ajustar al contenido"},
+{"id": "fit_to_all", "textContent": "Ajustar a todo el contenido"},
+{"id": "fit_to_canvas", "textContent": "Ajustar al lienzo"},
+{"id": "fit_to_layer_content", "textContent": "Ajustar al contenido de la capa"},
+{"id": "fit_to_sel", "textContent": "Ajustar a la selección"},
+{"id": "font_family", "title": "Tipo de fuente"},
+{"id": "icon_large", "textContent": "Grande"},
+{"id": "icon_medium", "textContent": "Mediano"},
+{"id": "icon_small", "textContent": "Pequeño"},
+{"id": "icon_xlarge", "textContent": "Muy grande"},
+{"id": "image_height", "title": "Cambiar la altura de la imagen"},
+{"id": "image_opt_embed", "textContent": "Integrar imágenes en forma de datos (archivos locales)"},
+{"id": "image_opt_ref", "textContent": "Usar la referencia del archivo"},
+{"id": "image_url", "title": "Modificar URL"},
+{"id": "image_width", "title": "Cambiar el ancho de la imagen"},
+{"id": "includedImages", "textContent": "Imágenes integradas"},
+{"id": "largest_object", "textContent": "El objeto más grande"},
+{"id": "layer_delete", "title": "Suprimir capa"},
+{"id": "layer_down", "title": "Mover la capa hacia abajo"},
+{"id": "layer_new", "title": "Nueva capa"},
+{"id": "layer_rename", "title": "Renombrar capa"},
+{"id": "layer_up", "title": "Mover la capa hacia arriba"},
+{"id": "layersLabel", "textContent": "Capas:"},
+{"id": "line_x1", "title": "Cambiar la posición horizontal X del comienzo de la línea"},
+{"id": "line_x2", "title": "Cambiar la posición horizontal X del final de la línea"},
+{"id": "line_y1", "title": "Cambiar la posición vertical Y del comienzo de la línea"},
+{"id": "line_y2", "title": "Cambiar la posición vertical Y del final de la línea"},
+{"id": "linecap_butt", "title": "Final de la línea: en el nodo"},
+{"id": "linecap_round", "title": "Final de la línea: redondeada"},
+{"id": "linecap_square", "title": "Final de la línea: cuadrada"},
+{"id": "linejoin_bevel", "title": "Unión: biselada"},
+{"id": "linejoin_miter", "title": "Unión: recta"},
+{"id": "linejoin_round", "title": "Unión: redondeada"},
+{"id": "main_icon", "title": "Menú principal"},
+{"id": "mode_connect", "title": "Conectar dos objetos"},
+{"id": "page", "textContent": "Página"},
+{"id": "palette", "title": "Haga clic para cambiar el color de relleno. Pulse Mayús y haga clic para cambiar el color del contorno."},
+{"id": "path_node_x", "title": "Cambiar la posición horizontal X del nodo"},
+{"id": "path_node_y", "title": "Cambiar la posición vertical Y del nodo"},
+{"id": "rect_height_tool", "title": "Cambiar la altura del rectángulo"},
+{"id": "rect_width_tool", "title": "Cambiar el ancho rectángulo"},
+{"id": "relativeToLabel", "textContent": "en relación con:"},
+{"id": "seg_type", "title": "Cambiar el tipo de segmento"},
+{"id": "selLayerLabel", "textContent": "Desplazar objetos a:"},
+{"id": "selLayerNames", "title": "Mover los objetos seleccionados a otra capa"},
+{"id": "selectedPredefined", "textContent": "Seleccionar predefinido:"},
+{"id": "selected_objects", "textContent": "Objetos seleccionados"},
+{"id": "selected_x", "title": "Cambiar la posición horizontal X"},
+{"id": "selected_y", "title": "Cambiar la posición vertical Y"},
+{"id": "smallest_object", "textContent": "El objeto más pequeño"},
+{"id": "straight_segments", "textContent": "Recta"},
+{"id": "stroke_color", "title": "Cambiar el color del contorno"},
+{"id": "stroke_style", "title": "Cambiar el estilo del trazo del contorno"},
+{"id": "stroke_width", "title": "Cambiar el grosor del contorno"},
+{"id": "svginfo_bg_note", "textContent": "Nota: El fondo no se guardará junto con la imagen."},
+{"id": "svginfo_change_background", "textContent": "Fondo del editor"},
+{"id": "svginfo_dim", "textContent": "Tamaño del lienzo"},
+{"id": "svginfo_editor_prefs", "textContent": "Preferencias del Editor"},
+{"id": "svginfo_height", "textContent": "Alto:"},
+{"id": "svginfo_icons", "textContent": "Tamaño de los iconos"},
+{"id": "svginfo_image_props", "textContent": "Propiedades de la Imagen"},
+{"id": "svginfo_lang", "textContent": "Idioma"},
+{"id": "svginfo_title", "textContent": "Título"},
+{"id": "svginfo_width", "textContent": "Ancho:"},
+{"id": "text", "title": "Modificar el texto"},
+{"id": "toggle_stroke_tools", "title": "Mostrar/ocultar herramientas de trazo adicionales"},
+{"id": "tool_add_subpath", "title": "Añadir subtrazado"},
+{"id": "tool_alignbottom", "title": "Alinear parte inferior"},
+{"id": "tool_aligncenter", "title": "Centrar verticalmente"},
+{"id": "tool_alignleft", "title": "Alinear lado izquierdo"},
+{"id": "tool_alignmiddle", "title": "Centrar horizontalmente"},
+{"id": "tool_alignright", "title": "Alinear lado derecho"},
+{"id": "tool_aligntop", "title": "Alinear parte superior"},
+{"id": "tool_angle", "title": "Cambiar ángulo de rotación"},
+{"id": "tool_blur", "title": "Ajustar desenfoque gausiano"},
+{"id": "tool_bold", "title": "Texto en negrita"},
+{"id": "tool_circle", "title": "Círculo"},
+{"id": "tool_clear", "textContent": "Nueva imagen"},
+{"id": "tool_clone", "title": "Clonar objeto"},
+{"id": "tool_clone_multi", "title": " Clonar objetos"},
+{"id": "tool_delete", "title": "Suprimir objeto"},
+{"id": "tool_delete_multi", "title": "Suprimir los objetos seleccionados"},
+{"id": "tool_docprops", "textContent": "Propiedades del documento"},
+{"id": "tool_docprops_cancel", "textContent": "Cancelar"},
+{"id": "tool_docprops_save", "textContent": "OK"},
+{"id": "tool_ellipse", "title": "Elipse"},
+{"id": "tool_export", "textContent": "Exportar como PNG"},
+{"id": "tool_eyedropper", "title": "Herramienta de pipeta"},
+{"id": "tool_fhellipse", "title": "Elipse a mano alzada"},
+{"id": "tool_fhpath", "title": "Herramienta de lápiz"},
+{"id": "tool_fhrect", "title": "Rectángulo a mano alzada"},
+{"id": "tool_font_size", "title": "Tamaño de la fuente"},
+{"id": "tool_group", "title": "Agrupar objetos"},
+{"id": "tool_image", "title": "Insertar imagen"},
+{"id": "tool_import", "textContent": "Importar un archivo SVG"},
+{"id": "tool_italic", "title": "Texto en cursiva"},
+{"id": "tool_line", "title": "Trazado de líneas"},
+{"id": "tool_move_bottom", "title": "Mover abajo"},
+{"id": "tool_move_top", "title": "Mover arriba"},
+{"id": "tool_node_clone", "title": "Clonar nodo"},
+{"id": "tool_node_delete", "title": "Suprimir nodo"},
+{"id": "tool_node_link", "title": "Enlazar puntos de control"},
+{"id": "tool_opacity", "title": "Cambiar la opacidad del objeto seleccionado"},
+{"id": "tool_open", "textContent": "Abrir imagen"},
+{"id": "tool_path", "title": "Herramienta de trazado"},
+{"id": "tool_rect", "title": "Rectángulo"},
+{"id": "tool_redo", "title": "Rehacer"},
+{"id": "tool_reorient", "title": "Reorientar el trazado"},
+{"id": "tool_save", "textContent": "Guardar imagen"},
+{"id": "tool_select", "title": "Herramienta de selección"},
+{"id": "tool_source", "title": "Editar código fuente"},
+{"id": "tool_source_cancel", "textContent": "Cancelar"},
+{"id": "tool_source_save", "textContent": "Aplicar cambios"},
+{"id": "tool_square", "title": "Cuadrado"},
+{"id": "tool_text", "title": "Insertar texto"},
+{"id": "tool_topath", "title": "Convertir a trazado"},
+{"id": "tool_undo", "title": "Deshacer"},
+{"id": "tool_ungroup", "title": "Desagrupar objetos"},
+{"id": "tool_wireframe", "title": "Modo marco de alambre"},
+{"id": "tool_zoom", "title": "Zoom"},
+{"id": "url_notice", "title": "NOTA: La imagen no puede ser integrada. El contenido mostrado dependerá de la imagen ubicada en esta ruta. "},
+{"id": "zoom_panel", "title": "Cambiar el nivel de zoom"},
+{"id": "sidepanel_handle", "textContent": "C a p a s", "title": "Arrastrar hacia la izquierda/derecha para modificar el tamaño del panel lateral"},
+{
+ "js_strings": {
+ "Aceptar": "OK",
+ "QerrorsRevertToSource": "Existen errores sintácticos en su código fuente SVG.\n¿Desea volver al código fuente SVG original?",
+ "QignoreSourceChanges": "¿Desea ignorar los cambios realizados sobre el código fuente SVG?",
+ "QmoveElemsToLayer": "¿Desplazar los elementos seleccionados a la capa '%s'?",
+ "QwantToClear": "¿Desea borrar el dibujo?\n¡El historial de acciones también se borrará!",
+ "cancel": "Cancelar",
+ "defsFailOnSave": "NOTA: Debido a un fallo de su navegador, es posible que la imagen aparezca de forma incorrecta (ciertas gradaciones o elementos podría perderse). La imagen aparecerá en su forma correcta una vez guardada.",
+ "dupeLayerName": "¡Ya existe una capa con este nombre!",
+ "enterNewImgURL": "Introduzca la nueva URL de la imagen.",
+ "enterNewLayerName": "Introduzca el nuevo nombre de la capa.",
+ "enterUniqueLayerName": "Introduzca otro nombre distinto para la capa.",
+ "exportNoBlur": "Los elementos desenfocados aparecerán enfocados",
+ "exportNoDashArray": "Los contornos aparecerán rellenos",
+ "exportNoImage": "Los elementos “Imagen” no aparecerán",
+ "exportNoText": "La apariencia del texto puede cambiar",
+ "exportNoforeignObject": "Los elementos “foreignObject” no aparecerán",
+ "featNotSupported": "Función no compatible.",
+ "invalidAttrValGiven": "Valor no válido",
+ "key_backspace": "retroceso",
+ "key_del": "suprimir",
+ "key_down": "abajo",
+ "key_up": "arriba",
+ "layer": "Capa",
+ "layerHasThatName": "El nombre introducido es el nombre actual de la capa.",
+ "loadingImage": "Cargando imagen. Espere, por favor.",
+ "noContentToFitTo": "No existe un contenido al que ajustarse.",
+ "noteTheseIssues": "Existen además los problemas siguientes:",
+ "pathCtrlPtTooltip": "Arrastre el punto de control para ajustar las propiedades de la curva.",
+ "pathNodeTooltip": "Arrastre el nodo para desplazarlo. Haga doble clic sobre el nodo para cambiar el tipo de segmento.",
+ "saveFromBrowser": "Seleccionar \"Guardar como...\" en su navegador para guardar la imagen en forma de archivo %s."
+ }
+}
+]
+
diff --git a/files_svgedit/js/locale/lang.et.js b/files_svgedit/js/locale/lang.et.js
new file mode 100644
index 000000000..df60ee0cc
--- /dev/null
+++ b/files_svgedit/js/locale/lang.et.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Viia võrreldes ..."},
+{"id": "bkgnd_color", "title": "Muuda tausta värvi / läbipaistmatus"},
+{"id": "circle_cx", "title": "Muuda ringi&#39;s cx kooskõlastada"},
+{"id": "circle_cy", "title": "Muuda ringi&#39;s cy kooskõlastada"},
+{"id": "circle_r", "title": "Muuda ring on raadiusega"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Muuda ristkülik Nurgakabe Raadius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Muuda ellips&#39;s cx kooskõlastada"},
+{"id": "ellipse_cy", "title": "Muuda ellips&#39;s cy kooskõlastada"},
+{"id": "ellipse_rx", "title": "Muuda ellips&#39;s x raadius"},
+{"id": "ellipse_ry", "title": "Muuda ellips&#39;s y raadius"},
+{"id": "fill_color", "title": "Muuda täitke värvi"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Sobita kogu sisu"},
+{"id": "fit_to_canvas", "textContent": "Sobita lõuend"},
+{"id": "fit_to_layer_content", "textContent": "Sobita kiht sisu"},
+{"id": "fit_to_sel", "textContent": "Fit valiku"},
+{"id": "font_family", "title": "Muutke Kirjasinperhe"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Muuda pilt kõrgus"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Change URL"},
+{"id": "image_width", "title": "Muuda pilt laius"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "suurim objekt"},
+{"id": "layer_delete", "title": "Kustuta Kiht"},
+{"id": "layer_down", "title": "Liiguta kiht alla"},
+{"id": "layer_new", "title": "Uus kiht"},
+{"id": "layer_rename", "title": "Nimeta kiht"},
+{"id": "layer_up", "title": "Liiguta kiht üles"},
+{"id": "layersLabel", "textContent": "Kihid:"},
+{"id": "line_x1", "title": "Muuda rööbastee algab x-koordinaadi"},
+{"id": "line_x2", "title": "Muuda Line lõpeb x-koordinaadi"},
+{"id": "line_y1", "title": "Muuda rööbastee algab y-koordinaadi"},
+{"id": "line_y2", "title": "Muuda Line lõppenud y-koordinaadi"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "lehekülg"},
+{"id": "palette", "title": "Click muuta täitke värvi, Shift-nuppu, et muuta insult värvi"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Muuda ristküliku kõrgus"},
+{"id": "rect_width_tool", "title": "Muuda ristküliku laius"},
+{"id": "relativeToLabel", "textContent": "võrreldes:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Valige eelmääratletud:"},
+{"id": "selected_objects", "textContent": "valitud objektide"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "väikseim objekt"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Muuda insult värvi"},
+{"id": "stroke_style", "title": "Muuda insult kriips stiil"},
+{"id": "stroke_width", "title": "Muuda insult laius"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Kõrgus:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Laius:"},
+{"id": "text", "title": "Muuda teksti sisu"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Viia Bottom"},
+{"id": "tool_aligncenter", "title": "Keskele joondamine"},
+{"id": "tool_alignleft", "title": "Vasakjoondus"},
+{"id": "tool_alignmiddle", "title": "Viia Lähis -"},
+{"id": "tool_alignright", "title": "Paremjoondus"},
+{"id": "tool_aligntop", "title": "Viia Üles"},
+{"id": "tool_angle", "title": "Muuda Pöördenurk"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Rasvane kiri"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "Uus pilt"},
+{"id": "tool_clone", "title": "Kloonide Element"},
+{"id": "tool_clone_multi", "title": "Kloonide Elements"},
+{"id": "tool_delete", "title": "Kustuta Element"},
+{"id": "tool_delete_multi", "title": "Kustuta valitud elemendid [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Dokumendi omadused"},
+{"id": "tool_docprops_cancel", "textContent": "Tühista"},
+{"id": "tool_docprops_save", "textContent": "Salvestama"},
+{"id": "tool_ellipse", "title": "Ellips"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Online-Hand Ellips"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Online-Hand Ristkülik"},
+{"id": "tool_font_size", "title": "Change font size"},
+{"id": "tool_group", "title": "Rühma elemendid"},
+{"id": "tool_image", "title": "Pilt Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kursiiv"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Liiguta alla"},
+{"id": "tool_move_top", "title": "Liiguta üles"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Muuda valitud elemendi läbipaistmatus"},
+{"id": "tool_open", "textContent": "Pildi avamine"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Ristkülik"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Salvesta pilt"},
+{"id": "tool_select", "title": "Vali Tool"},
+{"id": "tool_source", "title": "Muuda Allikas"},
+{"id": "tool_source_cancel", "textContent": "Tühista"},
+{"id": "tool_source_save", "textContent": "Salvestama"},
+{"id": "tool_square", "title": "Nelinurkne"},
+{"id": "tool_text", "title": "Tekst Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Lõhu Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Muuda suumi taset"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.fa.js b/files_svgedit/js/locale/lang.fa.js
new file mode 100644
index 000000000..941e73d75
--- /dev/null
+++ b/files_svgedit/js/locale/lang.fa.js
@@ -0,0 +1,174 @@
+[
+{"id": "align_relative_to", "title": "‫تراز نسبت به ...‬"},
+{"id": "bkgnd_color", "title": "‫تغییر رنگ پس زمینه / تاری‬"},
+{"id": "circle_cx", "title": "‫تغییر مختصات cx دایره‬"},
+{"id": "circle_cy", "title": "‫تغییر مختصات cy دایره‬"},
+{"id": "circle_r", "title": "‫تغییر شعاع دایره‬"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "‫تغییر شعاع گوشه مستطیل‬"},
+{"id": "cornerRadiusLabel", "title": "‫شعاع گوشه:‬"},
+{"id": "curve_segments", "textContent": "‫منحنی‬"},
+{"id": "ellipse_cx", "title": "‫تغییر مختصات cx بیضی‬"},
+{"id": "ellipse_cy", "title": "‫تغییر مختصات cy بیضی‬"},
+{"id": "ellipse_rx", "title": "‫تغییر شعاع rx بیضی‬"},
+{"id": "ellipse_ry", "title": "‫تغییر شعاع ry بیضی‬"},
+{"id": "fill_color", "title": "‫تغییر رنگ‬"},
+{"id": "fitToContent", "textContent": "‫هم اندازه شدن با محتوا‬"},
+{"id": "fit_to_all", "textContent": "‫هم اندازه شدن با همه محتویات‬"},
+{"id": "fit_to_canvas", "textContent": "‫هم اندازه شدن با صفحه مجازی (بوم)‬"},
+{"id": "fit_to_layer_content", "textContent": "‫هم اندازه شدن با محتوای لایه‬"},
+{"id": "fit_to_sel", "textContent": "‫هم اندازه شدن با اشیاء انتخاب شده‬"},
+{"id": "font_family", "title": "‫تغییر خانواده قلم‬"},
+{"id": "icon_large", "textContent": "‫بزرگ‬"},
+{"id": "icon_medium", "textContent": "‫متوسط‬"},
+{"id": "icon_small", "textContent": "‫کوچک‬"},
+{"id": "icon_xlarge", "textContent": "‫خیلی بزرگ‬"},
+{"id": "image_height", "title": "‫تغییر ارتفاع تصویر‬"},
+{"id": "image_opt_embed", "textContent": "‫داده های جای داده شده (پرونده های محلی)‬"},
+{"id": "image_opt_ref", "textContent": "‫استفاده از ارجاع به پرونده‬"},
+{"id": "image_url", "title": "‫تغییر نشانی وب (url)‬"},
+{"id": "image_width", "title": "‫تغییر عرض تصویر‬"},
+{"id": "includedImages", "textContent": "‫تصاویر گنجانده شده‬"},
+{"id": "largest_object", "textContent": "‫بزرگترین شئ‬"},
+{"id": "layer_delete", "title": "‫حذف لایه‬"},
+{"id": "layer_down", "title": "‫انتقال لایه به پایین‬"},
+{"id": "layer_new", "title": "‫لایه جدید‬"},
+{"id": "layer_rename", "title": "‫تغییر نام لایه‬"},
+{"id": "layer_up", "title": "‫انتقال لایه به بالا‬"},
+{"id": "layersLabel", "textContent": "‫لایه:‬"},
+{"id": "line_x1", "title": "‫تغییر مختصات x آغاز خط‬"},
+{"id": "line_x2", "title": "‫تغییر مختصات x پایان خط‬"},
+{"id": "line_y1", "title": "‫تغییر مختصات y آغاز خط‬"},
+{"id": "line_y2", "title": "‫تغییر مختصات y پایان خط‬"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "‫صفحه‬"},
+{"id": "palette", "title": "‫برای تغییر رنگ، کلیک کنید. برای تغییر رنگ لبه، کلید تبدیل (shift) را فشرده و کلیک کنید‬"},
+{"id": "path_node_x", "title": "‫تغییر مختصات x نقطه‬"},
+{"id": "path_node_y", "title": "‫تغییر مختصات y نقطه‬"},
+{"id": "rect_height_tool", "title": "‫تغییر ارتفاع مستطیل‬"},
+{"id": "rect_width_tool", "title": "‫تغییر عرض مستطیل‬"},
+{"id": "relativeToLabel", "textContent": "‫نسبت به:‬"},
+{"id": "seg_type", "title": "‫تغییر نوع قطعه (segment)‬"},
+{"id": "selLayerLabel", "textContent": "‫انتقال عناصر به:‬"},
+{"id": "selLayerNames", "title": "‫انتقال عناصر انتخاب شده به یک لایه متفاوت‬"},
+{"id": "selectedPredefined", "textContent": "‫از پیش تعریف شده را انتخاب کنید:‬"},
+{"id": "selected_objects", "textContent": "‫اشیاء انتخاب شده‬"},
+{"id": "selected_x", "title": "‫تغییر مختصات X‬"},
+{"id": "selected_y", "title": "‫تغییر مختصات Y‬"},
+{"id": "smallest_object", "textContent": "‫کوچکترین شئ‬"},
+{"id": "straight_segments", "textContent": "‫مستقیم‬"},
+{"id": "stroke_color", "title": "‫تغییر رنگ لبه‬"},
+{"id": "stroke_style", "title": "‫تغییر نقطه چین لبه‬"},
+{"id": "stroke_width", "title": "‫تغییر عرض لبه‬"},
+{"id": "svginfo_bg_note", "textContent": "‫توجه: پس زمینه همراه تصویر ذخیره نخواهد شد.‬"},
+{"id": "svginfo_change_background", "textContent": "‫پس زمینه ویراستار‬"},
+{"id": "svginfo_dim", "textContent": "‫ابعاد صفحه مجازی (بوم)‬"},
+{"id": "svginfo_editor_prefs", "textContent": "‫تنظیمات ویراستار‬"},
+{"id": "svginfo_height", "textContent": "‫ارتفاع:‬"},
+{"id": "svginfo_icons", "textContent": "‫اندازه شمایل‬"},
+{"id": "svginfo_image_props", "textContent": "‫مشخصات تصویر‬"},
+{"id": "svginfo_lang", "textContent": "‫زبان‬"},
+{"id": "svginfo_title", "textContent": "‫عنوان‬"},
+{"id": "svginfo_width", "textContent": "‫عرض:‬"},
+{"id": "text", "title": "‫تغییر محتویات متن‬"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "‫تراز پایین‬"},
+{"id": "tool_aligncenter", "title": "‫وسط چین‬"},
+{"id": "tool_alignleft", "title": "‫چپ چین‬"},
+{"id": "tool_alignmiddle", "title": "‫تراز میانه‬"},
+{"id": "tool_alignright", "title": "‫راست چین‬"},
+{"id": "tool_aligntop", "title": "‫تراز بالا‬"},
+{"id": "tool_angle", "title": "‫تغییر زاویه چرخش‬"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "‫متن توپر ‬"},
+{"id": "tool_circle", "title": "‫دایره‬"},
+{"id": "tool_clear", "textContent": "‫تصویر جدید ‬"},
+{"id": "tool_clone", "title": "‫ایجاد کپی از عنصر ‬"},
+{"id": "tool_clone_multi", "title": "‫ایجاد کپی از عناصر ‬"},
+{"id": "tool_delete", "title": "‫حذف عنصر ‬"},
+{"id": "tool_delete_multi", "title": "‫حذف عناصر انتخاب شده ‬"},
+{"id": "tool_docprops", "textContent": "‫مشخصات سند ‬"},
+{"id": "tool_docprops_cancel", "textContent": "‫لغو‬"},
+{"id": "tool_docprops_save", "textContent": "‫تأیید‬"},
+{"id": "tool_ellipse", "title": "‫بیضی‬"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "‫بیضی با قابلیت تغییر پویا‬"},
+{"id": "tool_fhpath", "title": "‫ابزار مداد ‬"},
+{"id": "tool_fhrect", "title": "‫مستطیل با قابلیت تغییر پویا‬"},
+{"id": "tool_font_size", "title": "‫تغییر اندازه قلم‬"},
+{"id": "tool_group", "title": "‫قرار دادن عناصر در گروه ‬"},
+{"id": "tool_image", "title": "‫ابزار تصویر ‬"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "‫متن کج ‬"},
+{"id": "tool_line", "title": "‫ابزار خط ‬"},
+{"id": "tool_move_bottom", "title": "‫انتقال به پایین ترین ‬"},
+{"id": "tool_move_top", "title": "‫انتقال به بالاترین ‬"},
+{"id": "tool_node_clone", "title": "‫ایجاد کپی از نقطه‬"},
+{"id": "tool_node_delete", "title": "‫حذف نقطه‬"},
+{"id": "tool_node_link", "title": "‫پیوند دادن نقاط کنترل‬"},
+{"id": "tool_opacity", "title": "‫تغییر تاری عنصر انتخاب شده‬"},
+{"id": "tool_open", "textContent": "‫باز کردن تصویر ‬"},
+{"id": "tool_path", "title": "‫ابزار مسیر ‬"},
+{"id": "tool_rect", "title": "‫مستطیل‬"},
+{"id": "tool_redo", "title": "‫ازنو ‬"},
+{"id": "tool_reorient", "title": "‫جهت دهی مجدد مسیر‬"},
+{"id": "tool_save", "textContent": "‫ذخیره تصویر ‬"},
+{"id": "tool_select", "title": "‫ابزار انتخاب ‬"},
+{"id": "tool_source", "title": "‫ویرایش منبع ‬"},
+{"id": "tool_source_cancel", "textContent": "‫لغو‬"},
+{"id": "tool_source_save", "textContent": "‫اعمال تغییرات‬"},
+{"id": "tool_square", "title": "‫مربع‬"},
+{"id": "tool_text", "title": "‫ابزار متن ‬"},
+{"id": "tool_topath", "title": "‫تبدیل به مسیر‬"},
+{"id": "tool_undo", "title": "‫واگرد ‬"},
+{"id": "tool_ungroup", "title": "‫خارج کردن عناصر از گروه ‬"},
+{"id": "tool_wireframe", "title": "‫حالت نمایش لبه ها ‬"},
+{"id": "tool_zoom", "title": "‫ابزار بزرگ نمایی ‬"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "‫تغییر بزرگ نمایی‬"},
+{"id": "sidepanel_handle", "textContent": "‫لایه ها‬", "title": "‫برای تغییر اندازه منوی کناری، آن را به سمت راست/چپ بکشید ‬"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "‫در منبع SVG شما خطاهای تجزیه (parse) وجود داشت.\nبه منبع SVG اصلی بازگردانده شود؟‬",
+ "QignoreSourceChanges": "‫تغییرات اعمال شده در منبع SVG نادیده گرفته شوند؟‬",
+ "QmoveElemsToLayer": "‫عناصر انتخاب شده به لایه '%s' منتقل شوند؟‬",
+ "QwantToClear": "‫آیا مطمئن هستید که می خواهید نقاشی را پاک کنید؟\nاین عمل باعث حذف تاریخچه واگرد شما خواهد شد!‬",
+ "cancel": "‫لغو‬",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "‫لایه ای با آن نام وجود دارد!‬",
+ "enterNewImgURL": "‫نشانی وب (url) تصویر جدید را وارد کنید‬",
+ "enterNewLayerName": "‫لطفا نام لایه جدید را وارد کنید‬",
+ "enterUniqueLayerName": "‫لطفا یک نام لایه یکتا انتخاب کنید‬",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "‫این ویژگی پشتیبانی نشده است‬",
+ "invalidAttrValGiven": "‫مقدار داده شده نامعتبر است‬",
+ "key_backspace": "‫پس بر ‬",
+ "key_del": "‫حذف ‬",
+ "key_down": "‫پایین ‬",
+ "key_up": "‫بالا ‬",
+ "layer": "‫لایه‬",
+ "layerHasThatName": "‫لایه از قبل آن نام را دارد‬",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "‫محتوایی برای هم اندازه شدن وجود ندارد‬",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "‫تأیید‬",
+ "pathCtrlPtTooltip": "‫برای تنظیم مشخصات منحنی، نقطه کنترل را بکشید‬",
+ "pathNodeTooltip": "‫برای جابه جا کردن نقطه، آن را بکشید. برای تغییر قطعه (segment)، روی نقطه دوبار کلیک کنید‬",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.fi.js b/files_svgedit/js/locale/lang.fi.js
new file mode 100644
index 000000000..a2ce312dc
--- /dev/null
+++ b/files_svgedit/js/locale/lang.fi.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Kohdista suhteessa ..."},
+{"id": "bkgnd_color", "title": "Vaihda taustaväri / sameuden"},
+{"id": "circle_cx", "title": "Muuta Circlen CX koordinoida"},
+{"id": "circle_cy", "title": "Muuta Circlen CY koordinoida"},
+{"id": "circle_r", "title": "Muuta ympyrän säde"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Muuta suorakaide Corner Säde"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Muuta ellipsi&#39;s CX koordinoida"},
+{"id": "ellipse_cy", "title": "Muuta ellipsi&#39;s CY koordinoida"},
+{"id": "ellipse_rx", "title": "Muuta ellipsi&#39;s x säde"},
+{"id": "ellipse_ry", "title": "Muuta ellipsi n y säde"},
+{"id": "fill_color", "title": "Muuta täyttöväri"},
+{"id": "fitToContent", "textContent": "Sovita Content"},
+{"id": "fit_to_all", "textContent": "Sovita kaikki content"},
+{"id": "fit_to_canvas", "textContent": "Sovita kangas"},
+{"id": "fit_to_layer_content", "textContent": "Sovita kerros sisältöön"},
+{"id": "fit_to_sel", "textContent": "Sovita valinta"},
+{"id": "font_family", "title": "Muuta Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Muuta kuvan korkeus"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Muuta URL"},
+{"id": "image_width", "title": "Muuta kuvan leveys"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "Suurin kohde"},
+{"id": "layer_delete", "title": "Poista Layer"},
+{"id": "layer_down", "title": "Siirrä Layer alas"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Nimeä Layer"},
+{"id": "layer_up", "title": "Siirrä Layer"},
+{"id": "layersLabel", "textContent": "Kerrosten:"},
+{"id": "line_x1", "title": "Muuta Linen alkaa x-koordinaatti"},
+{"id": "line_x2", "title": "Muuta Linen päättyy x koordinoida"},
+{"id": "line_y1", "title": "Muuta Linen alkaa y-koordinaatti"},
+{"id": "line_y2", "title": "Muuta Linen päättyy y koordinoida"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "sivulta"},
+{"id": "palette", "title": "Klikkaa muuttaa täyttöväri, Shift-click vaihtaa aivohalvauksen väriä"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Muuta suorakaiteen korkeus"},
+{"id": "rect_width_tool", "title": "Muuta suorakaiteen leveys"},
+{"id": "relativeToLabel", "textContent": "suhteessa:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Valitse ennalta:"},
+{"id": "selected_objects", "textContent": "valittujen objektien"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "pienin kohde"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Muuta aivohalvaus väri"},
+{"id": "stroke_style", "title": "Muuta aivohalvaus Dash tyyli"},
+{"id": "stroke_width", "title": "Muuta aivohalvaus leveys"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Korkeus:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Leveys:"},
+{"id": "text", "title": "Muuta tekstin sisältö"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Keskitä"},
+{"id": "tool_alignleft", "title": "Tasaa vasemmalle"},
+{"id": "tool_alignmiddle", "title": "Kohdista Lähi"},
+{"id": "tool_alignright", "title": "Tasaa oikealle"},
+{"id": "tool_aligntop", "title": "Kohdista Top"},
+{"id": "tool_angle", "title": "Muuta kiertokulma"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Lihavoitu teksti"},
+{"id": "tool_circle", "title": "Ympyrään"},
+{"id": "tool_clear", "textContent": "Uusi kuva"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Poista Element"},
+{"id": "tool_delete_multi", "title": "Poista valitut Elements"},
+{"id": "tool_docprops", "textContent": "Asiakirjan ominaisuudet"},
+{"id": "tool_docprops_cancel", "textContent": "Peruuta"},
+{"id": "tool_docprops_save", "textContent": "Tallentaa"},
+{"id": "tool_ellipse", "title": "Soikion"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Kynätyökalu"},
+{"id": "tool_fhrect", "title": "Free-Hand suorakaide"},
+{"id": "tool_font_size", "title": "Muuta fontin kokoa"},
+{"id": "tool_group", "title": "Tuoteryhmään Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kursivoitu"},
+{"id": "tool_line", "title": "Viivatyökalulla"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Muuta valitun kohteen läpinäkyvyys"},
+{"id": "tool_open", "textContent": "Avaa kuva"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Suorakulmiossa"},
+{"id": "tool_redo", "title": "Tulppaamalla ilmakanavan"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Valitse työkalu"},
+{"id": "tool_source", "title": "Muokkaa lähdekoodipaketti"},
+{"id": "tool_source_cancel", "textContent": "Peruuta"},
+{"id": "tool_source_save", "textContent": "Tallentaa"},
+{"id": "tool_square", "title": "Neliö"},
+{"id": "tool_text", "title": "Työkalua"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Kumoa"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Suurennustyökalu"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Muuta suurennustaso"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.fr.js b/files_svgedit/js/locale/lang.fr.js
new file mode 100644
index 000000000..de8e2302a
--- /dev/null
+++ b/files_svgedit/js/locale/lang.fr.js
@@ -0,0 +1,176 @@
+[
+{"id": "align_relative_to", "title": "Aligner par rapport à ..."},
+{"id": "bkgnd_color", "title": "Changer la couleur d'arrière-plan / l'opacité"},
+{"id": "circle_cx", "title": "Changer la position horizontale cx du cercle"},
+{"id": "circle_cy", "title": "Changer la position verticale cy du cercle"},
+{"id": "circle_r", "title": "Changer le rayon du cercle"},
+{"id": "connector_no_arrow", "textContent": "Sans flèches"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Changer le rayon des coins du rectangle"},
+{"id": "curve_segments", "textContent": "Courbe"},
+{"id": "ellipse_cx", "title": "Changer la position horizontale cx de l'ellipse"},
+{"id": "ellipse_cy", "title": "Changer la position verticale cy de l'ellipse"},
+{"id": "ellipse_rx", "title": "Changer le rayon horizontal x de l'ellipse"},
+{"id": "ellipse_ry", "title": "Changer le rayon vertical y de l'ellipse"},
+{"id": "fill_color", "title": "Changer la couleur de remplissage"},
+{"id": "fitToContent", "textContent": "Ajuster au contenu"},
+{"id": "fit_to_all", "textContent": "Ajuster au contenu de tous les calques"},
+{"id": "fit_to_canvas", "textContent": "Ajuster au canevas"},
+{"id": "fit_to_layer_content", "textContent": "Ajuster au contenu du calque"},
+{"id": "fit_to_sel", "textContent": "Ajuster à la sélection"},
+{"id": "font_family", "title": "Changer la famille de police"},
+{"id": "icon_large", "textContent": "Grande"},
+{"id": "icon_medium", "textContent": "Moyenne"},
+{"id": "icon_small", "textContent": "Petite"},
+{"id": "icon_xlarge", "textContent": "Super-Grande"},
+{"id": "idLabel", "title": "Identifier l'élément"},
+{"id": "image_height", "title": "Changer la hauteur de l'image"},
+{"id": "image_opt_embed", "textContent": "Incorporer les images en tant que données (fichiers locaux)"},
+{"id": "image_opt_ref", "textContent": "Utiliser la référence des images "},
+{"id": "image_url", "title": "Modifier l'URL"},
+{"id": "image_width", "title": "Changer la largeur de l'image"},
+{"id": "includedImages", "textContent": "Images incorporées"},
+{"id": "largest_object", "textContent": "Plus gros objet"},
+{"id": "layer_delete", "title": "Supprimer le calque"},
+{"id": "layer_down", "title": "Descendre le calque"},
+{"id": "layer_new", "title": "Nouveau calque"},
+{"id": "layer_rename", "title": "Renommer le calque"},
+{"id": "layer_up", "title": "Monter le calque"},
+{"id": "layersLabel", "textContent": "Calques :"},
+{"id": "line_x1", "title": "Changer la position horizontale x de début de la ligne"},
+{"id": "line_x2", "title": "Changer la position horizontale x de fin de la ligne"},
+{"id": "line_y1", "title": "Changer la position verticale y de début de la ligne"},
+{"id": "line_y2", "title": "Changer la position verticale y de fin de la ligne"},
+{"id": "linecap_butt", "title": "Terminaison : Sur le nœud"},
+{"id": "linecap_round", "title": "Terminaison : Arrondie"},
+{"id": "linecap_square", "title": "Terminaison : Carrée"},
+{"id": "linejoin_bevel", "title": "Raccord : Biseauté"},
+{"id": "linejoin_miter", "title": "Raccord : Droit"},
+{"id": "linejoin_round", "title": "Raccord : Arrondi"},
+{"id": "main_icon", "title": "Menu principal"},
+{"id": "mode_connect", "title": "Connecter deux objets"},
+{"id": "page", "textContent": "Page"},
+{"id": "palette", "title": "Cliquer pour changer la couleur de remplissage, Shift-Clic pour changer la couleur de contour"},
+{"id": "path_node_x", "title": "Changer la positon horizontale x du nœud"},
+{"id": "path_node_y", "title": "Changer la position verticale y du nœud"},
+{"id": "rect_height_tool", "title": "Changer la hauteur du rectangle"},
+{"id": "rect_width_tool", "title": "Changer la largeur du rectangle"},
+{"id": "relativeToLabel", "textContent": "Relativement à:"},
+{"id": "seg_type", "title": "Changer le type du Segment"},
+{"id": "selLayerLabel", "textContent": "Déplacer éléments vers:"},
+{"id": "selLayerNames", "title": "Déplacer les éléments sélectionnés vers un autre calque"},
+{"id": "selectedPredefined", "textContent": "Sélectionner prédéfinis:"},
+{"id": "selected_objects", "textContent": "Objets sélectionnés"},
+{"id": "selected_x", "title": "Changer la position horizontale X"},
+{"id": "selected_y", "title": "Changer la position verticale Y"},
+{"id": "smallest_object", "textContent": "Plus petit objet"},
+{"id": "straight_segments", "textContent": "Droit"},
+{"id": "stroke_color", "title": "Changer la couleur du contour"},
+{"id": "stroke_style", "title": "Changer le style du contour"},
+{"id": "stroke_width", "title": "Changer la largeur du contour de 1, Shift-Click pour changer la largeur de 0.1"},
+{"id": "svginfo_bg_note", "textContent": "Note: La toile de fond n'est pas sauvegardée avec l'image."},
+{"id": "svginfo_change_background", "textContent": "Toile de fond de l'Éditeur"},
+{"id": "svginfo_dim", "textContent": "Dimensions du canevas"},
+{"id": "svginfo_editor_prefs", "textContent": "Préférences de l'Éditeur"},
+{"id": "svginfo_height", "textContent": "Hauteur:"},
+{"id": "svginfo_icons", "textContent": "Taille des icônes"},
+{"id": "svginfo_image_props", "textContent": "Propriétés de l'Image"},
+{"id": "svginfo_lang", "textContent": "Langue"},
+{"id": "svginfo_title", "textContent": "Titre"},
+{"id": "svginfo_width", "textContent": "Largeur:"},
+{"id": "text", "title": "Changer le contenu du texte"},
+{"id": "toggle_stroke_tools", "title": "Montrer/Cacher plus d'outils de Contour"},
+{"id": "tool_add_subpath", "title": "Ajouter un sous-chemin"},
+{"id": "tool_alignbottom", "title": "Aligner le bas des objets"},
+{"id": "tool_aligncenter", "title": "Centrer verticalement"},
+{"id": "tool_alignleft", "title": "Aligner les côtés gauches"},
+{"id": "tool_alignmiddle", "title": "Centrer horizontalement"},
+{"id": "tool_alignright", "title": "Aligner les côtés droits"},
+{"id": "tool_aligntop", "title": "Aligner le haut des objets"},
+{"id": "tool_angle", "title": "Changer l'angle de rotation"},
+{"id": "tool_blur", "title": "Changer la valeur du flou gaussien"},
+{"id": "tool_bold", "title": "Texte en gras"},
+{"id": "tool_circle", "title": "Cercle"},
+{"id": "tool_clear", "textContent": "Nouvelle image"},
+{"id": "tool_clone", "title": "Cloner l'élément"},
+{"id": "tool_clone_multi", "title": "Cloner les éléments"},
+{"id": "tool_delete", "title": "Supprimer l'élément"},
+{"id": "tool_delete_multi", "title": "Supprimer les éléments sélectionnés"},
+{"id": "tool_docprops", "textContent": "Propriétés du document"},
+{"id": "tool_docprops_cancel", "textContent": "Annuler"},
+{"id": "tool_docprops_save", "textContent": "OK"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Exporter au format PNG"},
+{"id": "tool_eyedropper", "title": "Outil Pipette"},
+{"id": "tool_fhellipse", "title": "Ellipse main levée"},
+{"id": "tool_fhpath", "title": "Crayon à main levée"},
+{"id": "tool_fhrect", "title": "Rectangle main levée"},
+{"id": "tool_font_size", "title": "Changer la taille de la police"},
+{"id": "tool_group", "title": "Grouper les éléments"},
+{"id": "tool_image", "title": "Outil Image"},
+{"id": "tool_import", "textContent": "Importer un objet SVG"},
+{"id": "tool_italic", "title": "Texte en italique"},
+{"id": "tool_line", "title": "Tracer des lignes"},
+{"id": "tool_move_bottom", "title": "Déplacer vers le bas"},
+{"id": "tool_move_top", "title": "Déplacer vers le haut"},
+{"id": "tool_node_clone", "title": "Cloner le nœud"},
+{"id": "tool_node_delete", "title": "Supprimer le nœud"},
+{"id": "tool_node_link", "title": "Rendre les points de contrôle solidaires"},
+{"id": "tool_opacity", "title": "Changer l'opacité de l'élément sélectionné"},
+{"id": "tool_open", "textContent": "Ouvrir une image"},
+{"id": "tool_openclose_path", "title": "Ouvrir/Fermer sous-chemin"},
+{"id": "tool_path", "title": "Outil Chemin"},
+{"id": "tool_position", "title": "Aligner l'élément relativement à la Page"},
+{"id": "tool_rect", "title": "Rectangle"},
+{"id": "tool_redo", "title": "Refaire l'action"},
+{"id": "tool_reorient", "title": "Réorienter le chemin"},
+{"id": "tool_save", "textContent": "Enregistrer l'image"},
+{"id": "tool_select", "title": "Outil de sélection"},
+{"id": "tool_source", "title": "Modifier la source"},
+{"id": "tool_source_cancel", "textContent": "Annuler"},
+{"id": "tool_source_save", "textContent": "Appliquer Modifications"},
+{"id": "tool_square", "title": "Carré"},
+{"id": "tool_text", "title": "Outil Texte"},
+{"id": "tool_topath", "title": "Convertir en chemin"},
+{"id": "tool_undo", "title": "Annuler l'action"},
+{"id": "tool_ungroup", "title": "Dégrouper les éléments"},
+{"id": "tool_wireframe", "title": "Mode Fil de Fer"},
+{"id": "tool_zoom", "title": "Zoom"},
+{"id": "url_notice", "title": "NOTE: Cette image ne peut être incorporée en tant que données. Le contenu affiché sera celui de l'image située à cette adresse"},
+{"id": "zoom_panel", "title": "Changer le niveau de zoom"},
+{"id": "sidepanel_handle", "textContent": "C A L Q U E S", "title": "Tirer vers la gauche/droite pour redimensionner le panneau"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Il y a des erreurs d'analyse syntaxique dans votre code-source SVG.\nRevenir au code-source SVG avant modifications ?",
+ "QignoreSourceChanges": "Ignorer les modifications faites à la source SVG ?",
+ "QmoveElemsToLayer": "Déplacer les éléments sélectionnés vers le calque '%s' ?",
+ "QwantToClear": "Voulez-vous effacer le dessin ?\nL'historique de vos actions sera également effacé !",
+ "cancel": "Annuler",
+ "defsFailOnSave": "NOTE : À cause d'un bug de votre navigateur, cette image peut être affichée de façon incorrecte (dégradés ou éléments manquants). Cependant, une fois enregistrée, elle sera correcte.",
+ "dupeLayerName": "Il existe déjà un calque de ce nom !",
+ "enterNewImgURL": "Entrer la nouvelle URL de l'image",
+ "enterNewLayerName": "Veuillez entrer le nouveau nom du calque",
+ "enterUniqueLayerName": "Veuillez entrer un nom (unique) pour le calque",
+ "exportNoBlur": "Les éléments ayant du flou gaussien seront affichés sans flou",
+ "exportNoDashArray": "Les contours seront affichés remplis",
+ "exportNoImage": "Les éléments Image ne seront pas affichés",
+ "exportNoText": "Le texte peut être affiché de façon incorrecte",
+ "exportNoforeignObject": "Les éléments foreignObject se seront pas affichés",
+ "featNotSupported": "Fonction non supportée",
+ "invalidAttrValGiven": "Valeur fournie invalide",
+ "key_backspace": "Suppr.",
+ "key_del": "Retour Arr.",
+ "key_down": "Bas",
+ "key_up": "Haut",
+ "layer": "Calque",
+ "layerHasThatName": "Le calque porte déjà ce nom",
+ "loadingImage": "Chargement de l'image, veuillez patienter...",
+ "noContentToFitTo": "Il n'y a pas de contenu auquel ajuster",
+ "noteTheseIssues": "Notez également les problèmes suivants : ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Glisser-déposer le point de contrôle pour ajuster les propriétés de la courbe",
+ "pathNodeTooltip": "Glisser-déposer le nœud pour le déplacer. Double-cliquer le nœud pour changer de type de segment",
+ "saveFromBrowser": "Selectionner \"Enregistrer sous...\" dans votre navigateur pour sauvegarder l'image en tant que fichier %s."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.fy.js b/files_svgedit/js/locale/lang.fy.js
new file mode 100644
index 000000000..dd615a324
--- /dev/null
+++ b/files_svgedit/js/locale/lang.fy.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Útlijne relatyf oan..."},
+{"id": "bkgnd_color", "title": "Eftergrûnkleur/trochsichtigens oanpasse"},
+{"id": "circle_cx", "title": "Feroarje it X-koördinaat fan it middelpunt fan'e sirkel."},
+{"id": "circle_cy", "title": "Feroarje it Y-koördinaat fan it middelpunt fan'e sirkel."},
+{"id": "circle_r", "title": "Feroarje sirkelradius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Hoekeradius oanpasse"},
+{"id": "curve_segments", "textContent": "Bûcht"},
+{"id": "ellipse_cx", "title": "Feroarje it X-koördinaat fan it middelpunt fan'e ellips."},
+{"id": "ellipse_cy", "title": "Feroarje it Y-koördinaat fan it middelpunt fan'e ellips."},
+{"id": "ellipse_rx", "title": "Feroarje ellips X radius"},
+{"id": "ellipse_ry", "title": "Feroarje ellips Y radius"},
+{"id": "fill_color", "title": "Folkleur oanpasse"},
+{"id": "fitToContent", "textContent": "Passe op ynhâld"},
+{"id": "fit_to_all", "textContent": "Op alle ynhâld passe"},
+{"id": "fit_to_canvas", "textContent": "Op kanvas passe"},
+{"id": "fit_to_layer_content", "textContent": "Op laachynhâld passe"},
+{"id": "fit_to_sel", "textContent": "Op seleksje passe"},
+{"id": "font_family", "title": "Lettertype oanpasse"},
+{"id": "icon_large", "textContent": "Grut"},
+{"id": "icon_medium", "textContent": "Middel"},
+{"id": "icon_small", "textContent": "Lyts"},
+{"id": "icon_xlarge", "textContent": "Ekstra grut"},
+{"id": "image_height", "title": "Hichte ôfbielding oanpasse"},
+{"id": "image_opt_embed", "textContent": "Ynformaasje tafoege (lokale triemen)"},
+{"id": "image_opt_ref", "textContent": "Triemreferensje brûke"},
+{"id": "image_url", "title": "URL oanpasse"},
+{"id": "image_width", "title": "Breedte ôfbielding oanpasse"},
+{"id": "includedImages", "textContent": "Ynslúten ôfbieldingen"},
+{"id": "largest_object", "textContent": "Grutste ûnderdiel"},
+{"id": "layer_delete", "title": "Laach fuortsmite"},
+{"id": "layer_down", "title": "Laach omleech bringe"},
+{"id": "layer_new", "title": "Nije laach"},
+{"id": "layer_rename", "title": "Laach omneame"},
+{"id": "layer_up", "title": "Laach omheech bringe"},
+{"id": "layersLabel", "textContent": "Lagen:"},
+{"id": "line_x1", "title": "Feroarje start X koördinaat fan'e line"},
+{"id": "line_x2", "title": "Feroarje ein X koördinaat fan'e line"},
+{"id": "line_y1", "title": "Feroarje start Y koördinaat fan'e line"},
+{"id": "line_y2", "title": "Feroarje ein Y koördinaat fan'e line"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Side"},
+{"id": "palette", "title": "Klik om de folkleur te feroarjen, shift-klik om de linekleur te feroarjen."},
+{"id": "path_node_x", "title": "X-koördinaat knooppunt oanpasse"},
+{"id": "path_node_y", "title": "Y-koördinaat knooppunt oanpasse"},
+{"id": "rect_height_tool", "title": "Hichte rjochthoeke oanpasse"},
+{"id": "rect_width_tool", "title": "Breedte rjochthoeke oanpasse"},
+{"id": "relativeToLabel", "textContent": "Relatief tsjinoer:"},
+{"id": "seg_type", "title": "Segmenttype oanpasse"},
+{"id": "selLayerLabel", "textContent": "Ûnderdielen ferplaate nei:"},
+{"id": "selLayerNames", "title": "Selektearre ûnderdielen ferplaatse nei in oare laach"},
+{"id": "selectedPredefined", "textContent": "Selektearje:"},
+{"id": "selected_objects", "textContent": "Selektearre ûnderdielen"},
+{"id": "selected_x", "title": "X-koördinaat oanpasse"},
+{"id": "selected_y", "title": "Y-koördinaat oanpasse"},
+{"id": "smallest_object", "textContent": "Lytste ûnderdiel"},
+{"id": "straight_segments", "textContent": "Rjocht"},
+{"id": "stroke_color", "title": "Linekleur oanpasse"},
+{"id": "stroke_style", "title": "Linestijl oanpasse"},
+{"id": "stroke_width", "title": "Linebreedte oanpasse"},
+{"id": "svginfo_bg_note", "textContent": "Let op: de eftergrûn wurd net mei de ôfbielding bewarre."},
+{"id": "svginfo_change_background", "textContent": "Eftergrûn bewurker"},
+{"id": "svginfo_dim", "textContent": "Kanvasgrutte"},
+{"id": "svginfo_editor_prefs", "textContent": "Eigenskippen bewurker"},
+{"id": "svginfo_height", "textContent": "Hichte:"},
+{"id": "svginfo_icons", "textContent": "Ikoangrutte"},
+{"id": "svginfo_image_props", "textContent": "Ôfbieldingseigenskippen"},
+{"id": "svginfo_lang", "textContent": "Taal"},
+{"id": "svginfo_title", "textContent": "Titel"},
+{"id": "svginfo_width", "textContent": "Breedte:"},
+{"id": "text", "title": "Tekst oanpasse"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Ûnder útlijne"},
+{"id": "tool_aligncenter", "title": "Midden útlijne"},
+{"id": "tool_alignleft", "title": "Lofts útlijne"},
+{"id": "tool_alignmiddle", "title": "Midden útlijne"},
+{"id": "tool_alignright", "title": "Rjochts útlijne"},
+{"id": "tool_aligntop", "title": "Boppe útlijne"},
+{"id": "tool_angle", "title": "Draaie"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Fet"},
+{"id": "tool_circle", "title": "Sirkel"},
+{"id": "tool_clear", "textContent": "Nije ôfbielding"},
+{"id": "tool_clone", "title": "Ûnderdiel duplisearje"},
+{"id": "tool_clone_multi", "title": "Ûnderdielen duplisearje"},
+{"id": "tool_delete", "title": "Ûnderdiel fuortsmite"},
+{"id": "tool_delete_multi", "title": "Ûnderdielen fuortsmite"},
+{"id": "tool_docprops", "textContent": "Dokuminteigenskippen"},
+{"id": "tool_docprops_cancel", "textContent": "Ôfbrekke"},
+{"id": "tool_docprops_save", "textContent": "Ok"},
+{"id": "tool_ellipse", "title": "Ellips"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Frije ellips"},
+{"id": "tool_fhpath", "title": "Potlead"},
+{"id": "tool_fhrect", "title": "Frije rjochthoeke"},
+{"id": "tool_font_size", "title": "Lettergrutte oanpasse"},
+{"id": "tool_group", "title": "Ûnderdielen groepearje"},
+{"id": "tool_image", "title": "Ôfbielding"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Skean"},
+{"id": "tool_line", "title": "Line"},
+{"id": "tool_move_bottom", "title": "Nei eftergrûn"},
+{"id": "tool_move_top", "title": "Nei foargrûn"},
+{"id": "tool_node_clone", "title": "Knooppunt duplisearje"},
+{"id": "tool_node_delete", "title": "Knooppunt fuortsmite"},
+{"id": "tool_node_link", "title": "Knooppunten keppelje"},
+{"id": "tool_opacity", "title": "Trochsichtigens oanpasse"},
+{"id": "tool_open", "textContent": "Ôfbielding iepenje"},
+{"id": "tool_path", "title": "Paad"},
+{"id": "tool_rect", "title": "Rjochthoeke"},
+{"id": "tool_redo", "title": "Op 'e nij"},
+{"id": "tool_reorient", "title": "Paad opnij orientearje"},
+{"id": "tool_save", "textContent": "Ôfbielding bewarje"},
+{"id": "tool_select", "title": "Selektearje"},
+{"id": "tool_source", "title": "Boarne oanpasse"},
+{"id": "tool_source_cancel", "textContent": "Ôfbrekke"},
+{"id": "tool_source_save", "textContent": "Feroarings tapasse"},
+{"id": "tool_square", "title": "Fjouwerkant"},
+{"id": "tool_text", "title": "Tekst"},
+{"id": "tool_topath", "title": "Omsette nei paad"},
+{"id": "tool_undo", "title": "Ungedien meitjse"},
+{"id": "tool_ungroup", "title": "Groepering opheffe"},
+{"id": "tool_wireframe", "title": "Triemodel"},
+{"id": "tool_zoom", "title": "Zoom"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Yn-/útzoome"},
+{"id": "sidepanel_handle", "textContent": "L a g e n", "title": "Sleep nei links/rjochts om it sidepaniel grutter as lytser te meitjen"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Der wiene flaters yn de SVG-boarne.\nWeromgean nei foarige SVG-boarne?",
+ "QignoreSourceChanges": "Feroarings yn SVG-boarne negeare?",
+ "QmoveElemsToLayer": "Selektearre ûnderdielen ferplaatse nei '%s'?",
+ "QwantToClear": "Ôfbielding leechmeitsje? Dit sil ek de skiednis fuortsmite!",
+ "cancel": "Ôfbrekke",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "Der is al in laach mei dy namme!",
+ "enterNewImgURL": "Jou de nije URL",
+ "enterNewLayerName": "Type in nije laachnamme",
+ "enterUniqueLayerName": "Type in unyke laachnamme",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Funksje wurdt net ûndersteund",
+ "invalidAttrValGiven": "Ferkearde waarde jûn",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "omleech",
+ "key_up": "omheech",
+ "layer": "Laach",
+ "layerHasThatName": "Laach hat dy namme al",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "Gjin ynhâld om te passen",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "Ok",
+ "pathCtrlPtTooltip": "Fersleepje dit knooppunt om de boocheigenskippen oan te passen.",
+ "pathNodeTooltip": "Fersleepje dit knooppunt as dûbelklik om it segmenttype oan te passen.",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ga.js b/files_svgedit/js/locale/lang.ga.js
new file mode 100644
index 000000000..68659a252
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ga.js
@@ -0,0 +1,156 @@
+[
+{"id": "align_relative_to", "title": "Ailínigh i gcomparáid leis ..."},
+{"id": "angleLabel", "textContent": "uillinn:"},
+{"id": "bkgnd_color", "title": "Dath cúlra Athraigh / teimhneacht"},
+{"id": "circle_cx", "title": "Athraigh an ciorcal a chomhordú CX"},
+{"id": "circle_cy", "title": "Athraigh an ciorcal a chomhordú ga"},
+{"id": "circle_r", "title": "Athraigh an ciorcal&#39;s ga"},
+{"id": "cornerRadiusLabel", "textContent": "Ga Cúinne:"},
+{"id": "cornerRadiusLabel", "title": "Athraigh Dronuilleog Cúinne na Ga"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Athraigh Éilips&#39;s CX a chomhordú"},
+{"id": "ellipse_cy", "title": "Athraigh an Éilips a chomhordú ga"},
+{"id": "ellipse_rx", "title": "Éilips Athraigh an gha x"},
+{"id": "ellipse_ry", "title": "Éilips Athraigh an gha y"},
+{"id": "fill_color", "title": "Athraigh an dath a líonadh"},
+{"id": "fill_tool_bottom", "textContent": "líon:"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Laghdaigh do gach ábhar"},
+{"id": "fit_to_canvas", "textContent": "Laghdaigh ar chanbhás"},
+{"id": "fit_to_layer_content", "textContent": "Laghdaigh shraith ábhar a"},
+{"id": "fit_to_sel", "textContent": "Laghdaigh a roghnú"},
+{"id": "font_family", "title": "Athraigh an Cló Teaghlaigh"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "iheightLabel", "textContent": "airde:"},
+{"id": "image_height", "title": "Airde íomhá Athrú"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Athraigh an URL"},
+{"id": "image_width", "title": "Leithead íomhá Athrú"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "iwidthLabel", "textContent": "leithne:"},
+{"id": "largest_object", "textContent": "réad is mó"},
+{"id": "layer_delete", "title": "Scrios Sraith"},
+{"id": "layer_down", "title": "Bog Sraith Síos"},
+{"id": "layer_new", "title": "Sraith Nua"},
+{"id": "layer_rename", "title": "Athainmnigh Sraith"},
+{"id": "layer_up", "title": "Bog Sraith Suas"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Athraigh an líne tosaigh a chomhordú x"},
+{"id": "line_x2", "title": "Athraigh an líne deireadh x chomhordú"},
+{"id": "line_y1", "title": "Athraigh an líne tosaigh a chomhordú y"},
+{"id": "line_y2", "title": "Athrú ar líne deireadh y chomhordú"},
+{"id": "page", "textContent": "leathanach"},
+{"id": "palette", "title": "Cliceáil chun athrú a líonadh dath, aistriú-cliceáil chun dath a athrú stróc"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Airde dronuilleog Athrú"},
+{"id": "rect_width_tool", "title": "Leithead dronuilleog Athrú"},
+{"id": "relativeToLabel", "textContent": "i gcomparáid leis:"},
+{"id": "rheightLabel", "textContent": "Airde:"},
+{"id": "rwidthLabel", "textContent": "leithead:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Roghnaigh réamhshainithe:"},
+{"id": "selected_objects", "textContent": "réada tofa"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "lú réad"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Dath stróc Athrú"},
+{"id": "stroke_style", "title": "Athraigh an stíl Fleasc stróc"},
+{"id": "stroke_tool_bottom", "textContent": "buille:"},
+{"id": "stroke_width", "title": "Leithead stróc Athrú"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Airde:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Leithne:"},
+{"id": "text", "title": "Inneachar Athraigh téacs"},
+{"id": "tool_alignbottom", "title": "Cineál Bun"},
+{"id": "tool_aligncenter", "title": "Ailínigh sa Lár"},
+{"id": "tool_alignleft", "title": "Ailínigh ar Chlé"},
+{"id": "tool_alignmiddle", "title": "Cineál Middle"},
+{"id": "tool_alignright", "title": "Ailínigh ar Dheis"},
+{"id": "tool_aligntop", "title": "Cineál Barr"},
+{"id": "tool_angle", "title": "Uillinn rothlaithe Athrú"},
+{"id": "tool_bold", "title": "Trom Téacs"},
+{"id": "tool_circle", "title": "Ciorcal"},
+{"id": "tool_clear", "textContent": "Íomhá Nua"},
+{"id": "tool_clone", "title": "Eilimint Chlónála"},
+{"id": "tool_clone_multi", "title": "Eilimintí Chlónála"},
+{"id": "tool_delete", "title": "Scrios Eilimint"},
+{"id": "tool_delete_multi", "title": "Eilimintí Roghnaithe Scrios [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Doiciméad Airíonna"},
+{"id": "tool_docprops_cancel", "textContent": "Cealaigh"},
+{"id": "tool_docprops_save", "textContent": "Sábháil"},
+{"id": "tool_ellipse", "title": "Éilips"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Phionsail Uirlis"},
+{"id": "tool_fhrect", "title": "Saor Hand Dronuilleog"},
+{"id": "tool_font_size", "title": "Athraigh Clómhéid"},
+{"id": "tool_group", "title": "Eilimintí Grúpa"},
+{"id": "tool_image", "title": "Íomhá Uirlis"},
+{"id": "tool_italic", "title": "Iodálach Téacs"},
+{"id": "tool_line", "title": "Uirlis Líne"},
+{"id": "tool_move_bottom", "title": "Téigh go Bun"},
+{"id": "tool_move_top", "title": "Téigh go Barr"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Athraigh roghnaithe teimhneacht mír"},
+{"id": "tool_open", "textContent": "Íomhá Oscailte"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Dronuilleog"},
+{"id": "tool_redo", "title": "Athdhéan"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Sábháil Íomhá"},
+{"id": "tool_select", "title": "Roghnaigh Uirlis"},
+{"id": "tool_source", "title": "Cuir Foinse"},
+{"id": "tool_source_cancel", "textContent": "Cealaigh"},
+{"id": "tool_source_save", "textContent": "Sábháil"},
+{"id": "tool_square", "title": "Cearnóg"},
+{"id": "tool_text", "title": "Téacs Uirlis"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Cealaigh"},
+{"id": "tool_ungroup", "title": "Eilimintí Díghrúpáil"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zúmáil Uirlis"},
+{"id": "zoomLabel", "textContent": "súmáil isteach:"},
+{"id": "zoom_panel", "title": "Athraigh súmáil leibhéal"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "noContentToFitTo": "No content to fit to",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type"
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.gl.js b/files_svgedit/js/locale/lang.gl.js
new file mode 100644
index 000000000..0d7fe2a19
--- /dev/null
+++ b/files_svgedit/js/locale/lang.gl.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Aliñar en relación a ..."},
+{"id": "bkgnd_color", "title": "Mudar a cor de fondo / Opacidade"},
+{"id": "circle_cx", "title": "Cx Cambiar círculo de coordenadas"},
+{"id": "circle_cy", "title": "Círculo Cambio cy coordinar"},
+{"id": "circle_r", "title": "Cambiar círculo de raio"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Cambiar Corner Rectangle Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Cambiar elipse cx coordinar"},
+{"id": "ellipse_cy", "title": "Elipse Cambio cy coordinar"},
+{"id": "ellipse_rx", "title": "Raios X Change elipse"},
+{"id": "ellipse_ry", "title": "Radio y Change elipse"},
+{"id": "fill_color", "title": "Cambia-la cor de recheo"},
+{"id": "fitToContent", "textContent": "Axustar ó contido"},
+{"id": "fit_to_all", "textContent": "Axustar a todo o contido"},
+{"id": "fit_to_canvas", "textContent": "Axustar a pantalla"},
+{"id": "fit_to_layer_content", "textContent": "Axustar o contido da capa de"},
+{"id": "fit_to_sel", "textContent": "Axustar a selección"},
+{"id": "font_family", "title": "Cambiar fonte Familia"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Cambiar altura da imaxe"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Cambiar URL"},
+{"id": "image_width", "title": "Cambiar o ancho da imaxe"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "maior obxecto"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move capa inferior"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Capas:"},
+{"id": "line_x1", "title": "Cambie a liña de partida coordenada x"},
+{"id": "line_x2", "title": "Cambie a liña acaba coordenada x"},
+{"id": "line_y1", "title": "Cambio na liña do recurso coordinada y"},
+{"id": "line_y2", "title": "Salto de liña acaba coordinada y"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Portada"},
+{"id": "palette", "title": "Preme aquí para cambiar a cor de recheo, Shift-clic para cambiar a cor do curso"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Cambiar altura do rectángulo"},
+{"id": "rect_width_tool", "title": "Cambiar a largo rectángulo"},
+{"id": "relativeToLabel", "textContent": "en relación ao:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Seleccione por defecto:"},
+{"id": "selected_objects", "textContent": "obxectos elixidos"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "menor obxecto"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Cambiar a cor do curso"},
+{"id": "stroke_style", "title": "Modifica o estilo do trazo do curso"},
+{"id": "stroke_width", "title": "Cambiar o ancho do curso"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Altura:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Ancho:"},
+{"id": "text", "title": "Cambiar o contido de texto"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align bottom"},
+{"id": "tool_aligncenter", "title": "Centrar"},
+{"id": "tool_alignleft", "title": "Aliñar á Esquerda"},
+{"id": "tool_alignmiddle", "title": "Aliñar Medio"},
+{"id": "tool_alignright", "title": "Aliñar á Dereita"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Cambiar o ángulo de xiro"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "Nova Imaxe"},
+{"id": "tool_clone", "title": "Clon Element"},
+{"id": "tool_clone_multi", "title": "Elementos Clon"},
+{"id": "tool_delete", "title": "Eliminar Elemento"},
+{"id": "tool_delete_multi", "title": "Eliminar elementos seleccionados"},
+{"id": "tool_docprops", "textContent": "Propriedades do Documento"},
+{"id": "tool_docprops_cancel", "textContent": "Cancelar"},
+{"id": "tool_docprops_save", "textContent": "Gardar"},
+{"id": "tool_ellipse", "title": "Elipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Ferramenta Lapis"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Mudar tamaño de letra"},
+{"id": "tool_group", "title": "Elementos do grupo"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Texto en cursiva"},
+{"id": "tool_line", "title": "Ferramenta Liña"},
+{"id": "tool_move_bottom", "title": "Move a Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Cambia a opacidade elemento seleccionado"},
+{"id": "tool_open", "textContent": "Abrir Imaxe"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rectángulo"},
+{"id": "tool_redo", "title": "Volver"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Gardar Imaxe"},
+{"id": "tool_select", "title": "Seleccionar a ferramenta"},
+{"id": "tool_source", "title": "Fonte Editar"},
+{"id": "tool_source_cancel", "textContent": "Cancelar"},
+{"id": "tool_source_save", "textContent": "Gardar"},
+{"id": "tool_square", "title": "Cadrado"},
+{"id": "tool_text", "title": "Ferramenta de Texto"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Desfacer"},
+{"id": "tool_ungroup", "title": "Elementos Desagrupadas"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Cambiar o nivel de zoom"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.he.js b/files_svgedit/js/locale/lang.he.js
new file mode 100755
index 000000000..42f1a8186
--- /dev/null
+++ b/files_svgedit/js/locale/lang.he.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "יישור ביחס ..."},
+{"id": "bkgnd_color", "title": "שנה את צבע הרקע / אטימות"},
+{"id": "circle_cx", "title": "CX מעגל של שנה לתאם"},
+{"id": "circle_cy", "title": "מעגל שנה של cy לתאם"},
+{"id": "circle_r", "title": "מעגל שנה של רדיוס"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "לשנות מלבן פינת רדיוס"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "שינוי של אליפסה CX לתאם"},
+{"id": "ellipse_cy", "title": "אליפסה שינוי של cy לתאם"},
+{"id": "ellipse_rx", "title": "אליפסה שינוי של רדיוס x"},
+{"id": "ellipse_ry", "title": "אליפסה שינוי של Y רדיוס"},
+{"id": "fill_color", "title": "שינוי צבע מילוי"},
+{"id": "fitToContent", "textContent": "התאם תוכן"},
+{"id": "fit_to_all", "textContent": "התאם התכנים"},
+{"id": "fit_to_canvas", "textContent": "התאם בד"},
+{"id": "fit_to_layer_content", "textContent": "מתאים לתוכן שכבת"},
+{"id": "fit_to_sel", "textContent": "התאם הבחירה"},
+{"id": "font_family", "title": "שינוי גופן משפחה"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "שינוי גובה התמונה"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "שינוי כתובת"},
+{"id": "image_width", "title": "שינוי רוחב התמונה"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "האובייקט הגדול"},
+{"id": "layer_delete", "title": "מחיקת שכבה"},
+{"id": "layer_down", "title": "הזז למטה שכבה"},
+{"id": "layer_new", "title": "שכבהחדשה"},
+{"id": "layer_rename", "title": "שינוי שם שכבה"},
+{"id": "layer_up", "title": "העבר שכבה Up"},
+{"id": "layersLabel", "textContent": "שכבות:"},
+{"id": "line_x1", "title": "שינוי קו ההתחלה של x לתאם"},
+{"id": "line_x2", "title": "שינוי קו הסיום של x לתאם"},
+{"id": "line_y1", "title": "שינוי קו ההתחלה של Y לתאם"},
+{"id": "line_y2", "title": "שינוי קו הסיום של Y לתאם"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "דף"},
+{"id": "palette", "title": "לחץ כדי לשנות צבע מילוי, לחץ על Shift-לשנות צבע שבץ"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "שינוי גובה המלבן"},
+{"id": "rect_width_tool", "title": "שינוי רוחב המלבן"},
+{"id": "relativeToLabel", "textContent": "יחסית:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "בחר מוגדרים מראש:"},
+{"id": "selected_objects", "textContent": "elected objects"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "הקטן אובייקט"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "שינוי צבע שבץ"},
+{"id": "stroke_style", "title": "דש שבץ שינוי סגנון"},
+{"id": "stroke_width", "title": "שינוי רוחב שבץ"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "גובה:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "רוחב:"},
+{"id": "text", "title": "שינוי תוכן טקסט"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "יישור תחתון"},
+{"id": "tool_aligncenter", "title": "ישור לאמצע"},
+{"id": "tool_alignleft", "title": "יישור לשמאל"},
+{"id": "tool_alignmiddle", "title": "יישור התיכון"},
+{"id": "tool_alignright", "title": "יישור לימין"},
+{"id": "tool_aligntop", "title": "יישור למעלה"},
+{"id": "tool_angle", "title": "שינוי זווית הסיבוב"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "טקסט מודגש"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "תמונה חדשה"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "אלמנטים המשובטים"},
+{"id": "tool_delete", "title": "מחיקת אלמנט"},
+{"id": "tool_delete_multi", "title": "אלמנטים נבחרים מחק"},
+{"id": "tool_docprops", "textContent": "מאפייני מסמך"},
+{"id": "tool_docprops_cancel", "textContent": "ביטול"},
+{"id": "tool_docprops_save", "textContent": "לשמור"},
+{"id": "tool_ellipse", "title": "אליפסה"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand אליפסה"},
+{"id": "tool_fhpath", "title": "כלי העיפרון"},
+{"id": "tool_fhrect", "title": "Free-Hand מלבן"},
+{"id": "tool_font_size", "title": "שנה גודל גופן"},
+{"id": "tool_group", "title": "אלמנטים הקבוצה"},
+{"id": "tool_image", "title": "כלי תמונה"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "טקסט נטוי"},
+{"id": "tool_line", "title": "כלי הקו"},
+{"id": "tool_move_bottom", "title": "הזז למטה"},
+{"id": "tool_move_top", "title": "עבור לראש הדף"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "שינוי הפריט הנבחר אטימות"},
+{"id": "tool_open", "textContent": "פתח תמונה"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "מלבן"},
+{"id": "tool_redo", "title": "בצע שוב"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "שמור תמונה"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "מקור ערוך"},
+{"id": "tool_source_cancel", "textContent": "ביטול"},
+{"id": "tool_source_save", "textContent": "לשמור"},
+{"id": "tool_square", "title": "מרובע"},
+{"id": "tool_text", "title": "כלי טקסט"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "בטל"},
+{"id": "tool_ungroup", "title": "אלמנטים פרק קבוצה"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "זום כלי"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "שינוי גודל תצוגה"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.hi.js b/files_svgedit/js/locale/lang.hi.js
new file mode 100644
index 000000000..754028013
--- /dev/null
+++ b/files_svgedit/js/locale/lang.hi.js
@@ -0,0 +1,174 @@
+[
+{"id": "align_relative_to", "title": "संरेखित करें रिश्तेदार को ..."},
+{"id": "bkgnd_color", "title": "पृष्ठभूमि का रंग बदल / अस्पष्टता"},
+{"id": "circle_cx", "title": "बदल रहा है चक्र cx समन्वय"},
+{"id": "circle_cy", "title": "परिवर्तन चक्र cy समन्वय है"},
+{"id": "circle_r", "title": "बदल रहा है चक्र त्रिज्या"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "कोने का रेडियस"},
+{"id": "cornerRadiusLabel", "title": "बदलें आयत कॉर्नर त्रिज्या"},
+{"id": "curve_segments", "textContent": "घुमाव"},
+{"id": "ellipse_cx", "title": "बदलें दीर्घवृत्त है cx समन्वय"},
+{"id": "ellipse_cy", "title": "बदलें दीर्घवृत्त cy समन्वय है"},
+{"id": "ellipse_rx", "title": "बदल रहा है दीर्घवृत्त x त्रिज्या"},
+{"id": "ellipse_ry", "title": "बदल रहा है दीर्घवृत्त y त्रिज्या"},
+{"id": "fill_color", "title": "बदलें का रंग भरना"},
+{"id": "fitToContent", "textContent": "सामग्री के लिए फिट"},
+{"id": "fit_to_all", "textContent": "सभी सामग्री के लिए फिट"},
+{"id": "fit_to_canvas", "textContent": "फिट कैनवास को"},
+{"id": "fit_to_layer_content", "textContent": "फिट परत सामग्री के लिए"},
+{"id": "fit_to_sel", "textContent": "चयन के लिए फिट"},
+{"id": "font_family", "title": "बदलें फ़ॉन्ट परिवार"},
+{"id": "icon_large", "textContent": "बड़ा"},
+{"id": "icon_medium", "textContent": "मध्यम"},
+{"id": "icon_small", "textContent": "छोटा"},
+{"id": "icon_xlarge", "textContent": "बहुत बड़ा"},
+{"id": "image_height", "title": "बदलें छवि ऊँचाई"},
+{"id": "image_opt_embed", "textContent": "एम्बेड डेटा (स्थानीय फ़ाइलें)"},
+{"id": "image_opt_ref", "textContent": "फाइल के संदर्भ का प्रयोग"},
+{"id": "image_url", "title": "बदलें यूआरएल"},
+{"id": "image_width", "title": "बदलें छवि चौड़ाई"},
+{"id": "includedImages", "textContent": "शामिल छवियाँ"},
+{"id": "largest_object", "textContent": "सबसे बड़ी वस्तु"},
+{"id": "layer_delete", "title": "परत हटाएँ"},
+{"id": "layer_down", "title": "परत नीचे ले जाएँ"},
+{"id": "layer_new", "title": "नई परत"},
+{"id": "layer_rename", "title": "परत का नाम बदलें"},
+{"id": "layer_up", "title": "परत ऊपर ले जाएँ"},
+{"id": "layersLabel", "textContent": "परतें:"},
+{"id": "line_x1", "title": "बदल रहा है लाइन x समन्वय शुरू"},
+{"id": "line_x2", "title": "बदल रहा है लाइन x समन्वय समाप्त"},
+{"id": "line_y1", "title": "बदलें रेखा y शुरू हो रहा है समन्वय"},
+{"id": "line_y2", "title": "बदलें रेखा y अंत है समन्वय"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "पृष्ठ"},
+{"id": "palette", "title": "रंग बदलने पर क्लिक करें, बदलाव भरने के क्लिक करने के लिए स्ट्रोक का रंग बदलने के लिए"},
+{"id": "path_node_x", "title": "नोड का x समकक्ष बदलें"},
+{"id": "path_node_y", "title": "नोड का y समकक्ष बदलें"},
+{"id": "rect_height_tool", "title": "बदलें आयत ऊंचाई"},
+{"id": "rect_width_tool", "title": "बदलें आयत चौड़ाई"},
+{"id": "relativeToLabel", "textContent": "रिश्तेदार को:"},
+{"id": "seg_type", "title": "वर्ग प्रकार बदलें"},
+{"id": "selLayerLabel", "textContent": "अंश को ले जाएँ:"},
+{"id": "selLayerNames", "title": "चयनित अंश को दूसरी परत पर ले जाएँ"},
+{"id": "selectedPredefined", "textContent": "चुनें पूर्वनिर्धारित:"},
+{"id": "selected_objects", "textContent": "निर्वाचित वस्तुओं"},
+{"id": "selected_x", "title": "X समकक्ष बदलें "},
+{"id": "selected_y", "title": "Y समकक्ष बदलें"},
+{"id": "smallest_object", "textContent": "छोटी से छोटी वस्तु"},
+{"id": "straight_segments", "textContent": "सीधे वर्ग"},
+{"id": "stroke_color", "title": "बदलें स्ट्रोक रंग"},
+{"id": "stroke_style", "title": "बदलें स्ट्रोक डेश शैली"},
+{"id": "stroke_width", "title": "बदलें स्ट्रोक चौड़ाई"},
+{"id": "svginfo_bg_note", "textContent": "नोट: पृष्ठभूमि छवि के साथ नहीं बचायी जाएगी"},
+{"id": "svginfo_change_background", "textContent": "संपादक पृष्ठभूमि"},
+{"id": "svginfo_dim", "textContent": "कैनवास आयाम"},
+{"id": "svginfo_editor_prefs", "textContent": "संपादक वरीयताएँ"},
+{"id": "svginfo_height", "textContent": "ऊँचाई:"},
+{"id": "svginfo_icons", "textContent": "चिह्न का आकार"},
+{"id": "svginfo_image_props", "textContent": "छवि के गुण"},
+{"id": "svginfo_lang", "textContent": "भाषा"},
+{"id": "svginfo_title", "textContent": "शीर्षक"},
+{"id": "svginfo_width", "textContent": "चौड़ाई:"},
+{"id": "text", "title": "बदलें पाठ सामग्री"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "तलमेंपंक्तिबद्धकरें"},
+{"id": "tool_aligncenter", "title": "मध्य में समंजित करें"},
+{"id": "tool_alignleft", "title": " पंक्तिबद्ध करें"},
+{"id": "tool_alignmiddle", "title": "मध्य संरेखित करें"},
+{"id": "tool_alignright", "title": "दायाँपंक्तिबद्धकरें"},
+{"id": "tool_aligntop", "title": "शीर्षमेंपंक्तिबद्धकरें"},
+{"id": "tool_angle", "title": "बदलें रोटेशन कोण"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "मोटा पाठ"},
+{"id": "tool_circle", "title": "वृत्त"},
+{"id": "tool_clear", "textContent": "नई छवि"},
+{"id": "tool_clone", "title": "क्लोन अंश"},
+{"id": "tool_clone_multi", "title": "क्लोन अंश को"},
+{"id": "tool_delete", "title": "हटाएँ "},
+{"id": "tool_delete_multi", "title": "हटाएँ चयनित अंश"},
+{"id": "tool_docprops", "textContent": "दस्तावेज़ गुण"},
+{"id": "tool_docprops_cancel", "textContent": "रद्द करें"},
+{"id": "tool_docprops_save", "textContent": "बचाना"},
+{"id": "tool_ellipse", "title": "दीर्घवृत्त"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "नि: शुल्क हाथ दीर्घवृत्त"},
+{"id": "tool_fhpath", "title": "पेंसिल उपकरण"},
+{"id": "tool_fhrect", "title": "नि: शुल्क हाथ आयत"},
+{"id": "tool_font_size", "title": "फ़ॉन्ट का आकार बदलें"},
+{"id": "tool_group", "title": "समूह तत्वों"},
+{"id": "tool_image", "title": "छवि उपकरण"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "इटैलिक पाठ"},
+{"id": "tool_line", "title": "लाइन उपकरण"},
+{"id": "tool_move_bottom", "title": "नीचे ले जाएँ"},
+{"id": "tool_move_top", "title": "ऊपर ले जाएँ"},
+{"id": "tool_node_clone", "title": "नोड क्लोन"},
+{"id": "tool_node_delete", "title": "नोड हटायें"},
+{"id": "tool_node_link", "title": "कड़ी नियंत्रण बिंदु"},
+{"id": "tool_opacity", "title": "पारदर्शिता बदलें"},
+{"id": "tool_open", "textContent": "छवि खोलें"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "आयत"},
+{"id": "tool_redo", "title": "फिर से करें"},
+{"id": "tool_reorient", "title": "पथ को नई दिशा दें"},
+{"id": "tool_save", "textContent": "सहेजें छवि"},
+{"id": "tool_select", "title": "उपकरण चुनें"},
+{"id": "tool_source", "title": "स्रोत में बदलाव करें"},
+{"id": "tool_source_cancel", "textContent": "रद्द करें"},
+{"id": "tool_source_save", "textContent": "बचाना"},
+{"id": "tool_square", "title": "वर्ग"},
+{"id": "tool_text", "title": "पाठ उपकरण"},
+{"id": "tool_topath", "title": "पथ में बदलें"},
+{"id": "tool_undo", "title": "पूर्ववत करें"},
+{"id": "tool_ungroup", "title": "अंश को समूह से अलग करें"},
+{"id": "tool_wireframe", "title": "रूपरेखा मोड"},
+{"id": "tool_zoom", "title": "ज़ूम उपकरण"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "बदलें स्तर ज़ूम"},
+{"id": "sidepanel_handle", "textContent": "प र तें", "title": "दायें/बाएं घसीट कर आकार बदलें"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "आपके एस.वी.जी. स्रोत में त्रुटियों थी.\nक्या आप मूल एस.वी.जी स्रोत पर वापिस जाना चाहते हैं?",
+ "QignoreSourceChanges": "एसवीजी स्रोत से लाये बदलावों को ध्यान न दें?",
+ "QmoveElemsToLayer": "चयनित अंश को परत '%s' पर ले जाएँ ?",
+ "QwantToClear": "क्या आप छवि साफ़ करना चाहते हैं?\nयह आपके उन्डू इतिहास को भी मिटा देगा!",
+ "cancel": "रद्द करें",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "इस नाम कि परत पहले से मौजूद है !",
+ "enterNewImgURL": "नई छवि URL दर्ज करें",
+ "enterNewLayerName": "कृपया परत का एक नया नाम डालें",
+ "enterUniqueLayerName": "कृपया परत का एक अद्वितीय नाम डालें",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "सुविधा असमर्थित है",
+ "invalidAttrValGiven": "अमान्य मूल्य",
+ "key_backspace": "बैकस्पेस",
+ "key_del": "हटायें",
+ "key_down": "नीचे",
+ "key_up": "ऊपर",
+ "layer": "परत",
+ "layerHasThatName": "परत का पहले से ही यही नाम है",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "कोई सामग्री फिट करने के लिए उपलब्ध नहीं",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "ठीक",
+ "pathCtrlPtTooltip": "नियंत्रण बिंदु को खींचें, घुमाव के गुणो समायोजित करने के लिए",
+ "pathNodeTooltip": "नोड खींचें उसे हिलाने के लिए. डबल-क्लिक कीजिये वर्ग के प्रकार को बदलने के लिए",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.hr.js b/files_svgedit/js/locale/lang.hr.js
new file mode 100644
index 000000000..59e0c90ac
--- /dev/null
+++ b/files_svgedit/js/locale/lang.hr.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Poravnaj u odnosu na ..."},
+{"id": "bkgnd_color", "title": "Promijeni boju pozadine / neprozirnost"},
+{"id": "circle_cx", "title": "Promjena krug&#39;s CX koordinirati"},
+{"id": "circle_cy", "title": "Cy Promijeni krug je koordinirati"},
+{"id": "circle_r", "title": "Promjena krug je radijusa"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Promijeni Pravokutnik Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Promjena elipsa&#39;s CX koordinirati"},
+{"id": "ellipse_cy", "title": "Cy Promijeni elipsa je koordinirati"},
+{"id": "ellipse_rx", "title": "Promijeniti elipsa&#39;s x polumjer"},
+{"id": "ellipse_ry", "title": "Promjena elipsa&#39;s y polumjer"},
+{"id": "fill_color", "title": "Promjena boje ispune"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Prilagodi na sve sadržaje"},
+{"id": "fit_to_canvas", "textContent": "Prilagodi na platnu"},
+{"id": "fit_to_layer_content", "textContent": "Prilagodi sloj sadržaj"},
+{"id": "fit_to_sel", "textContent": "Prilagodi odabir"},
+{"id": "font_family", "title": "Promjena fontova"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Promijeni sliku visina"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Promijeni URL"},
+{"id": "image_width", "title": "Promijeni sliku širine"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "najveći objekt"},
+{"id": "layer_delete", "title": "Brisanje sloja"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Preimenuj Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Promijeni linija je početak x koordinatu"},
+{"id": "line_x2", "title": "Promjena linije završetak x koordinatu"},
+{"id": "line_y1", "title": "Promijeni linija je početak y koordinatu"},
+{"id": "line_y2", "title": "Promjena linije završetak y koordinatu"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "stranica"},
+{"id": "palette", "title": "Kliknite promijeniti boju ispune, shift-click to promijeniti boju moždanog udara"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Promijeni pravokutnik visine"},
+{"id": "rect_width_tool", "title": "Promijeni pravokutnik širine"},
+{"id": "relativeToLabel", "textContent": "u odnosu na:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Select predefinirane:"},
+{"id": "selected_objects", "textContent": "izabrani objekti"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "najmanji objekt"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Promjena boje moždani udar"},
+{"id": "stroke_style", "title": "Promijeni stroke crtica stil"},
+{"id": "stroke_width", "title": "Promjena širine moždani udar"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Visina:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Širina:"},
+{"id": "text", "title": "Promjena sadržaja teksta"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Poravnaj dolje"},
+{"id": "tool_aligncenter", "title": "Centriraj"},
+{"id": "tool_alignleft", "title": "Poravnaj lijevo"},
+{"id": "tool_alignmiddle", "title": "Poravnaj Srednji"},
+{"id": "tool_alignright", "title": "Poravnaj desno"},
+{"id": "tool_aligntop", "title": "Poravnaj Top"},
+{"id": "tool_angle", "title": "Promijeni rotation angle"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Podebljani tekst"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "Nove slike"},
+{"id": "tool_clone", "title": "Klon Element"},
+{"id": "tool_clone_multi", "title": "Klon Elementi"},
+{"id": "tool_delete", "title": "Brisanje elemenata"},
+{"id": "tool_delete_multi", "title": "Delete Selected Elements [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Svojstva dokumenta"},
+{"id": "tool_docprops_cancel", "textContent": "Odustani"},
+{"id": "tool_docprops_save", "textContent": "Spremiti"},
+{"id": "tool_ellipse", "title": "Elipsa"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Pravokutnik"},
+{"id": "tool_font_size", "title": "Change font size"},
+{"id": "tool_group", "title": "Grupa Elementi"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Pomakni na vrh"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Promjena odabrane stavke neprozirnost"},
+{"id": "tool_open", "textContent": "Otvori sliku"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Pravokutnik"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Spremanje slike"},
+{"id": "tool_select", "title": "Odaberite alat"},
+{"id": "tool_source", "title": "Uredi Source"},
+{"id": "tool_source_cancel", "textContent": "Odustani"},
+{"id": "tool_source_save", "textContent": "Spremiti"},
+{"id": "tool_square", "title": "Kvadrat"},
+{"id": "tool_text", "title": "Tekst Alat"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Poništi"},
+{"id": "tool_ungroup", "title": "Razgrupiranje Elementi"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Alat za zumiranje"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Promjena razine zumiranja"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.hu.js b/files_svgedit/js/locale/lang.hu.js
new file mode 100644
index 000000000..9f5d35a44
--- /dev/null
+++ b/files_svgedit/js/locale/lang.hu.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Képest Igazítás ..."},
+{"id": "bkgnd_color", "title": "Change background color / homályosság"},
+{"id": "circle_cx", "title": "Change kör CX koordináta"},
+{"id": "circle_cy", "title": "Change kör cy koordináta"},
+{"id": "circle_r", "title": "Change kör sugara"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Change téglalap sarok sugara"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Change ellipszis&#39;s CX koordináta"},
+{"id": "ellipse_cy", "title": "Change ellipszis&#39;s cy koordináta"},
+{"id": "ellipse_rx", "title": "Change ellipszis&#39;s x sugarú"},
+{"id": "ellipse_ry", "title": "Change ellipszis&#39;s y sugara"},
+{"id": "fill_color", "title": "Change töltse color"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Illeszkednek az összes tartalom"},
+{"id": "fit_to_canvas", "textContent": "Igazítás a vászonra"},
+{"id": "fit_to_layer_content", "textContent": "Igazítás a réteg tartalma"},
+{"id": "fit_to_sel", "textContent": "Igazítás a kiválasztási"},
+{"id": "font_family", "title": "Change Betűcsalád"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Kép módosítása height"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Change URL"},
+{"id": "image_width", "title": "Change kép szélessége"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "legnagyobb objektum"},
+{"id": "layer_delete", "title": "Réteg törlése"},
+{"id": "layer_down", "title": "Mozgatása lefelé"},
+{"id": "layer_new", "title": "Új réteg"},
+{"id": "layer_rename", "title": "Réteg átnevezése"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Rétegből:"},
+{"id": "line_x1", "title": "A sor kezd x koordináta"},
+{"id": "line_x2", "title": "A sor vége az x koordináta"},
+{"id": "line_y1", "title": "A sor kezd y koordináta"},
+{"id": "line_y2", "title": "A sor vége az y koordináta"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Page"},
+{"id": "palette", "title": "Kattints ide a változások töltse szín, shift-click változtatni stroke color"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Change téglalap magassága"},
+{"id": "rect_width_tool", "title": "Change téglalap szélessége"},
+{"id": "relativeToLabel", "textContent": "relatív hogy:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Válassza ki előre definiált:"},
+{"id": "selected_objects", "textContent": "választott tárgyak"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "legkisebb objektum"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Change stroke color"},
+{"id": "stroke_style", "title": "Change stroke kötőjel style"},
+{"id": "stroke_width", "title": "Change stroke width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Magasság:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Szélesség:"},
+{"id": "text", "title": "A szöveg tartalma"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Alulra igazítás"},
+{"id": "tool_aligncenter", "title": "Középre igazítás"},
+{"id": "tool_alignleft", "title": "Balra igazítás"},
+{"id": "tool_alignmiddle", "title": "Közép-align"},
+{"id": "tool_alignright", "title": "Jobbra igazítás"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Váltás forgás szög"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Félkövér szöveg"},
+{"id": "tool_circle", "title": "Körbe"},
+{"id": "tool_clear", "textContent": "Új kép"},
+{"id": "tool_clone", "title": "Klónok Element"},
+{"id": "tool_clone_multi", "title": "Klón Elements"},
+{"id": "tool_delete", "title": "Delete Element"},
+{"id": "tool_delete_multi", "title": "A kijelölt elemek"},
+{"id": "tool_docprops", "textContent": "Dokumentum tulajdonságai"},
+{"id": "tool_docprops_cancel", "textContent": "Szakítani"},
+{"id": "tool_docprops_save", "textContent": "Ment"},
+{"id": "tool_ellipse", "title": "Ellipszisszelet"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Ceruza eszköz"},
+{"id": "tool_fhrect", "title": "Free-Hand téglalap"},
+{"id": "tool_font_size", "title": "Change font size"},
+{"id": "tool_group", "title": "Csoport elemei"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Dőlt szöveg"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Mozgatás lefelé"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "A kijelölt elem opacity"},
+{"id": "tool_open", "textContent": "Kép megnyitása"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Téglalapban"},
+{"id": "tool_redo", "title": "Megismétléséhez"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Kép mentése más"},
+{"id": "tool_select", "title": "Válassza ki az eszközt"},
+{"id": "tool_source", "title": "Szerkesztés Forrás"},
+{"id": "tool_source_cancel", "textContent": "Szakítani"},
+{"id": "tool_source_save", "textContent": "Ment"},
+{"id": "tool_square", "title": "Négyzetes"},
+{"id": "tool_text", "title": "Szöveg eszköz"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Visszavon"},
+{"id": "tool_ungroup", "title": "Szétbont elemei"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Change nagyítási"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.hy.js b/files_svgedit/js/locale/lang.hy.js
new file mode 100644
index 000000000..08cffbee7
--- /dev/null
+++ b/files_svgedit/js/locale/lang.hy.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Align relative to ..."},
+{"id": "bkgnd_color", "title": "Change background color/opacity"},
+{"id": "circle_cx", "title": "Change circle's cx coordinate"},
+{"id": "circle_cy", "title": "Change circle's cy coordinate"},
+{"id": "circle_r", "title": "Change circle's radius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Change Rectangle Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Change ellipse's cx coordinate"},
+{"id": "ellipse_cy", "title": "Change ellipse's cy coordinate"},
+{"id": "ellipse_rx", "title": "Change ellipse's x radius"},
+{"id": "ellipse_ry", "title": "Change ellipse's y radius"},
+{"id": "fill_color", "title": "Change fill color"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Fit to all content"},
+{"id": "fit_to_canvas", "textContent": "Fit to canvas"},
+{"id": "fit_to_layer_content", "textContent": "Fit to layer content"},
+{"id": "fit_to_sel", "textContent": "Fit to selection"},
+{"id": "font_family", "title": "Change Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Change image height"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Change URL"},
+{"id": "image_width", "title": "Change image width"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "largest object"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Change line's starting x coordinate"},
+{"id": "line_x2", "title": "Change line's ending x coordinate"},
+{"id": "line_y1", "title": "Change line's starting y coordinate"},
+{"id": "line_y2", "title": "Change line's ending y coordinate"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "page"},
+{"id": "palette", "title": "Click to change fill color, shift-click to change stroke color"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Change rectangle height"},
+{"id": "rect_width_tool", "title": "Change rectangle width"},
+{"id": "relativeToLabel", "textContent": "relative to:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Select predefined:"},
+{"id": "selected_objects", "textContent": "elected objects"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "smallest object"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Change stroke color"},
+{"id": "stroke_style", "title": "Change stroke dash style"},
+{"id": "stroke_width", "title": "Change stroke width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Height:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Width:"},
+{"id": "text", "title": "Change text contents"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Align Center"},
+{"id": "tool_alignleft", "title": "Align Left"},
+{"id": "tool_alignmiddle", "title": "Align Middle"},
+{"id": "tool_alignright", "title": "Align Right"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Change rotation angle"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Delete Element"},
+{"id": "tool_delete_multi", "title": "Delete Selected Elements"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Cancel"},
+{"id": "tool_docprops_save", "textContent": "Save"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Change Font Size"},
+{"id": "tool_group", "title": "Group Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Change selected item opacity"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rectangle"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Cancel"},
+{"id": "tool_source_save", "textContent": "Save"},
+{"id": "tool_square", "title": "Square"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Change zoom level"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.id.js b/files_svgedit/js/locale/lang.id.js
new file mode 100644
index 000000000..03ef774fe
--- /dev/null
+++ b/files_svgedit/js/locale/lang.id.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Rata relatif ..."},
+{"id": "bkgnd_color", "title": "Mengubah warna latar belakang / keburaman"},
+{"id": "circle_cx", "title": "Mengubah koordinat lingkaran cx"},
+{"id": "circle_cy", "title": "Mengubah koordinat cy lingkaran"},
+{"id": "circle_r", "title": "Ubah jari-jari lingkaran"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Ubah Corner Rectangle Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Ubah elips&#39;s cx koordinat"},
+{"id": "ellipse_cy", "title": "Ubah elips&#39;s cy koordinat"},
+{"id": "ellipse_rx", "title": "Ubah elips&#39;s x jari-jari"},
+{"id": "ellipse_ry", "title": "Ubah elips&#39;s y jari-jari"},
+{"id": "fill_color", "title": "Ubah warna mengisi"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Cocok untuk semua konten"},
+{"id": "fit_to_canvas", "textContent": "Muat kanvas"},
+{"id": "fit_to_layer_content", "textContent": "Muat konten lapisan"},
+{"id": "fit_to_sel", "textContent": "Fit seleksi"},
+{"id": "font_family", "title": "Ubah Font Keluarga"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Tinggi gambar Perubahan"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Ubah URL"},
+{"id": "image_width", "title": "Ubah Lebar gambar"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "objek terbesar"},
+{"id": "layer_delete", "title": "Hapus Layer"},
+{"id": "layer_down", "title": "Pindahkan Layer Bawah"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Pindahkan Layer Up"},
+{"id": "layersLabel", "textContent": "Lapisan:"},
+{"id": "line_x1", "title": "Ubah baris mulai x koordinat"},
+{"id": "line_x2", "title": "Ubah baris&#39;s Berakhir x koordinat"},
+{"id": "line_y1", "title": "Ubah baris mulai y koordinat"},
+{"id": "line_y2", "title": "Ubah baris di tiap akhir y koordinat"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Halaman"},
+{"id": "palette", "title": "Klik untuk mengubah warna mengisi, shift-klik untuk mengubah warna stroke"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Perubahan tinggi persegi panjang"},
+{"id": "rect_width_tool", "title": "Ubah persegi panjang lebar"},
+{"id": "relativeToLabel", "textContent": "relatif:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Pilih standar:"},
+{"id": "selected_objects", "textContent": "objek terpilih"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "objek terkecil"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Ubah warna stroke"},
+{"id": "stroke_style", "title": "Ubah gaya dash stroke"},
+{"id": "stroke_width", "title": "Ubah stroke width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Ketinggian:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Lebar:"},
+{"id": "text", "title": "Ubah isi teks"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Rata Bottom"},
+{"id": "tool_aligncenter", "title": "Rata Tengah"},
+{"id": "tool_alignleft", "title": "Rata Kiri"},
+{"id": "tool_alignmiddle", "title": "Rata Tengah"},
+{"id": "tool_alignright", "title": "Rata Kanan"},
+{"id": "tool_aligntop", "title": "Rata Top"},
+{"id": "tool_angle", "title": "Ubah sudut rotasi"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Teks"},
+{"id": "tool_circle", "title": "Lingkaran"},
+{"id": "tool_clear", "textContent": "Gambar Baru"},
+{"id": "tool_clone", "title": "Clone Elemen"},
+{"id": "tool_clone_multi", "title": "Clone Elemen"},
+{"id": "tool_delete", "title": "Hapus Elemen"},
+{"id": "tool_delete_multi", "title": "Hapus Elemen"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Batal"},
+{"id": "tool_docprops_save", "textContent": "Simpan"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Persegi Panjang"},
+{"id": "tool_font_size", "title": "Ubah Ukuran Font"},
+{"id": "tool_group", "title": "Kelompok Elemen"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Teks"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Pindah ke Bawah"},
+{"id": "tool_move_top", "title": "Pindahkan ke Atas"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Mengubah item yang dipilih keburaman"},
+{"id": "tool_open", "textContent": "Membuka Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rectangle"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Pilih Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Batal"},
+{"id": "tool_source_save", "textContent": "Simpan"},
+{"id": "tool_square", "title": "Kotak"},
+{"id": "tool_text", "title": "Teks Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Ungroup Elemen"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Mengubah tingkat pembesaran"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.is.js b/files_svgedit/js/locale/lang.is.js
new file mode 100644
index 000000000..9ad606a0b
--- /dev/null
+++ b/files_svgedit/js/locale/lang.is.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Jafna miðað við ..."},
+{"id": "bkgnd_color", "title": "Breyta bakgrunnslit / opacity"},
+{"id": "circle_cx", "title": "Cx Breyta hring er að samræma"},
+{"id": "circle_cy", "title": "Breyta hring&#39;s cy samræma"},
+{"id": "circle_r", "title": "Radíus Breyta hringsins er"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Breyta rétthyrningur Corner Radíus"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Breyta sporbaug&#39;s cx samræma"},
+{"id": "ellipse_cy", "title": "Breyta sporbaug&#39;s cy samræma"},
+{"id": "ellipse_rx", "title": "X radíus Breyta sporbaug&#39;s"},
+{"id": "ellipse_ry", "title": "Y radíus Breyta sporbaug&#39;s"},
+{"id": "fill_color", "title": "Breyta fylla color"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Laga til efni"},
+{"id": "fit_to_canvas", "textContent": "Fit á striga"},
+{"id": "fit_to_layer_content", "textContent": "Laga til lag efni"},
+{"id": "fit_to_sel", "textContent": "Fit til val"},
+{"id": "font_family", "title": "Change Leturfjölskylda"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Breyta mynd hæð"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Breyta URL"},
+{"id": "image_width", "title": "Breyta mynd width"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "stærsti hlutinn"},
+{"id": "layer_delete", "title": "Eyða Lag"},
+{"id": "layer_down", "title": "Færa Layer Down"},
+{"id": "layer_new", "title": "Lag"},
+{"id": "layer_rename", "title": "Endurnefna Lag"},
+{"id": "layer_up", "title": "Færa Lag Up"},
+{"id": "layersLabel", "textContent": "Lag:"},
+{"id": "line_x1", "title": "Breyta lína í byrjun x samræma"},
+{"id": "line_x2", "title": "Breyta lína&#39;s Ending x samræma"},
+{"id": "line_y1", "title": "Breyta lína í byrjun y samræma"},
+{"id": "line_y2", "title": "Breyta lína er endir y samræma"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "síðu"},
+{"id": "palette", "title": "Smelltu hér til að breyta fylla lit, Shift-smelltu til að breyta högg lit"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Breyta rétthyrningur hæð"},
+{"id": "rect_width_tool", "title": "Skipta rétthyrningur width"},
+{"id": "relativeToLabel", "textContent": "hlutfallslegt til:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Veldu predefined:"},
+{"id": "selected_objects", "textContent": "kjörinn hlutir"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "lítill hluti"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Breyta heilablķđfall color"},
+{"id": "stroke_style", "title": "Breyta heilablķđfall þjóta stíl"},
+{"id": "stroke_width", "title": "Breyta heilablķđfall width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Hæð:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Breidd:"},
+{"id": "text", "title": "Breyta texta innihald"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Jafna Bottom"},
+{"id": "tool_aligncenter", "title": "Jafna Center"},
+{"id": "tool_alignleft", "title": "Vinstri jöfnun"},
+{"id": "tool_alignmiddle", "title": "Jafna Mið"},
+{"id": "tool_alignright", "title": "Hægri jöfnun"},
+{"id": "tool_aligntop", "title": "Jöfnun Top"},
+{"id": "tool_angle", "title": "Breyting snúningur horn"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Eyða Element"},
+{"id": "tool_delete_multi", "title": "Eyða Elements"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Hætta"},
+{"id": "tool_docprops_save", "textContent": "Vista"},
+{"id": "tool_ellipse", "title": "Sporbaugur"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Sporbaugur"},
+{"id": "tool_fhpath", "title": "Blýantur Tól"},
+{"id": "tool_fhrect", "title": "Free-Hand rétthyrningur"},
+{"id": "tool_font_size", "title": "Breyta leturstærð"},
+{"id": "tool_group", "title": "Group Elements"},
+{"id": "tool_image", "title": "Mynd Tól"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Færa Bottom"},
+{"id": "tool_move_top", "title": "Fara efst á síðu"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Breyta valin atriði opacity"},
+{"id": "tool_open", "textContent": "Opna mynd"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rétthyrningur"},
+{"id": "tool_redo", "title": "Endurtaka"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Spara Image"},
+{"id": "tool_select", "title": "Veldu Tól"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Hætta"},
+{"id": "tool_source_save", "textContent": "Vista"},
+{"id": "tool_square", "title": "Ferningur"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Hætta"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Breyta Stækkunarstig"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.it.js b/files_svgedit/js/locale/lang.it.js
new file mode 100644
index 000000000..e5a7759ef
--- /dev/null
+++ b/files_svgedit/js/locale/lang.it.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Allineati alla ..."},
+{"id": "bkgnd_color", "title": "Cambia il colore di sfondo / opacità"},
+{"id": "circle_cx", "title": "Cx cerchio Modifica di coordinate"},
+{"id": "circle_cy", "title": "Cambia&#39;s circle CY coordinare"},
+{"id": "circle_r", "title": "Cambia il raggio del cerchio"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Cambia Rectangle Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Cambia dell&#39;ellisse cx coordinare"},
+{"id": "ellipse_cy", "title": "Ellisse Cambia&#39;s CY coordinare"},
+{"id": "ellipse_rx", "title": "Raggio x ellisse Cambia&#39;s"},
+{"id": "ellipse_ry", "title": "Raggio y ellisse Cambia&#39;s"},
+{"id": "fill_color", "title": "Cambia il colore di riempimento"},
+{"id": "fitToContent", "textContent": "Adatta al contenuto"},
+{"id": "fit_to_all", "textContent": "Adatta a tutti i contenuti"},
+{"id": "fit_to_canvas", "textContent": "Adatta alla tela"},
+{"id": "fit_to_layer_content", "textContent": "Adatta a livello di contenuti"},
+{"id": "fit_to_sel", "textContent": "Adatta alla selezione"},
+{"id": "font_family", "title": "Change Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Cambia l&#39;altezza dell&#39;immagine"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Cambia URL"},
+{"id": "image_width", "title": "Cambia la larghezza dell&#39;immagine"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "il più grande oggetto"},
+{"id": "layer_delete", "title": "Elimina livello"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "Nuovo livello"},
+{"id": "layer_rename", "title": "Rinominare il livello"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Livelli:"},
+{"id": "line_x1", "title": "Modifica la linea di partenza coordinata x"},
+{"id": "line_x2", "title": "Modifica la linea di fine coordinata x"},
+{"id": "line_y1", "title": "Modifica la linea di partenza coordinata y"},
+{"id": "line_y2", "title": "Modifica la linea di fine coordinata y"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Pagina"},
+{"id": "palette", "title": "Fare clic per cambiare il colore di riempimento, shift-click per cambiare colore del tratto"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Cambia l&#39;altezza rettangolo"},
+{"id": "rect_width_tool", "title": "Cambia la larghezza rettangolo"},
+{"id": "relativeToLabel", "textContent": "rispetto al:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Seleziona predefinite:"},
+{"id": "selected_objects", "textContent": "eletto oggetti"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "più piccolo oggetto"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Cambia colore ictus"},
+{"id": "stroke_style", "title": "Cambia lo stile dash ictus"},
+{"id": "stroke_width", "title": "Cambia la larghezza ictus"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Altezza:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Ampiezza:"},
+{"id": "text", "title": "Cambia il contenuto del testo"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Allinea in basso"},
+{"id": "tool_aligncenter", "title": "Allinea al centro"},
+{"id": "tool_alignleft", "title": "Allinea a sinistra"},
+{"id": "tool_alignmiddle", "title": "Allinea al centro"},
+{"id": "tool_alignright", "title": "Allinea a destra"},
+{"id": "tool_aligntop", "title": "Allinea in alto"},
+{"id": "tool_angle", "title": "Cambia l&#39;angolo di rotazione"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Grassetto"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Cancellare l&#39;elemento"},
+{"id": "tool_delete_multi", "title": "Elimina elementi selezionati"},
+{"id": "tool_docprops", "textContent": "Proprietà del documento"},
+{"id": "tool_docprops_cancel", "textContent": "Annulla"},
+{"id": "tool_docprops_save", "textContent": "Salvare"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Lo strumento matita"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Modifica dimensione carattere"},
+{"id": "tool_group", "title": "Group Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Corsivo"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Cambia l&#39;opacità dell&#39;oggetto selezionato"},
+{"id": "tool_open", "textContent": "Apri immagine"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rettangolo"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Salvare l&#39;immagine"},
+{"id": "tool_select", "title": "Selezionare Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Annulla"},
+{"id": "tool_source_save", "textContent": "Salvare"},
+{"id": "tool_square", "title": "Piazza"},
+{"id": "tool_text", "title": "Strumento Testo"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Annulla"},
+{"id": "tool_ungroup", "title": "Separa Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Cambia il livello di zoom"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ja.js b/files_svgedit/js/locale/lang.ja.js
new file mode 100644
index 000000000..e0bde6791
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ja.js
@@ -0,0 +1,174 @@
+[
+{"id": "align_relative_to", "title": "揃える"},
+{"id": "bkgnd_color", "title": "背景色/不透明度の変更"},
+{"id": "circle_cx", "title": "円の中心を変更(X座標)"},
+{"id": "circle_cy", "title": "円の中心を変更(Y座標)"},
+{"id": "circle_r", "title": "変更円の半径"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "角の半径:"},
+{"id": "cornerRadiusLabel", "title": "長方形の角の半径を変更"},
+{"id": "curve_segments", "textContent": "カーブ"},
+{"id": "ellipse_cx", "title": "楕円の中心を変更(X座標)"},
+{"id": "ellipse_cy", "title": "楕円の中心を変更(Y座標)"},
+{"id": "ellipse_rx", "title": "楕円の半径を変更(X座標)"},
+{"id": "ellipse_ry", "title": "楕円の半径を変更(Y座標)"},
+{"id": "fill_color", "title": "塗りの色を変更"},
+{"id": "fitToContent", "textContent": "コンテンツに合わせる"},
+{"id": "fit_to_all", "textContent": "すべてのコンテンツに合わせる"},
+{"id": "fit_to_canvas", "textContent": "キャンバスに合わせる"},
+{"id": "fit_to_layer_content", "textContent": "レイヤー上のコンテンツに合わせる"},
+{"id": "fit_to_sel", "textContent": "選択対象に合わせる"},
+{"id": "font_family", "title": "フォントファミリーの変更"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "画像の高さを変更"},
+{"id": "image_opt_embed", "textContent": "SVGファイルに埋め込む"},
+{"id": "image_opt_ref", "textContent": "画像を参照する"},
+{"id": "image_url", "title": "URLを変更"},
+{"id": "image_width", "title": "画像の幅を変更"},
+{"id": "includedImages", "textContent": "挿入された画像の扱い"},
+{"id": "largest_object", "textContent": "最大のオブジェクト"},
+{"id": "layer_delete", "title": "レイヤの削除"},
+{"id": "layer_down", "title": "レイヤを下へ移動"},
+{"id": "layer_new", "title": "新規レイヤ"},
+{"id": "layer_rename", "title": "レイヤの名前を変更"},
+{"id": "layer_up", "title": "レイヤを上へ移動"},
+{"id": "layersLabel", "textContent": "レイヤ:"},
+{"id": "line_x1", "title": "開始X座標"},
+{"id": "line_x2", "title": "終了X座標"},
+{"id": "line_y1", "title": "開始Y座標"},
+{"id": "line_y2", "title": "終了Y座標"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "ページ"},
+{"id": "palette", "title": "クリックで塗りの色を選択、Shift+クリックで線の色を選択"},
+{"id": "path_node_x", "title": "ノードのX座標を変更"},
+{"id": "path_node_y", "title": "ノードのY座標を変更"},
+{"id": "rect_height_tool", "title": "長方形の高さを変更"},
+{"id": "rect_width_tool", "title": "長方形の幅を変更"},
+{"id": "relativeToLabel", "textContent": "相対:"},
+{"id": "seg_type", "title": "線分の種類を変更"},
+{"id": "selLayerLabel", "textContent": "移動先レイヤ:"},
+{"id": "selLayerNames", "title": "選択対象を別のレイヤに移動"},
+{"id": "selectedPredefined", "textContent": "デフォルト"},
+{"id": "selected_objects", "textContent": "選択オブジェクト"},
+{"id": "selected_x", "title": "X座標を変更"},
+{"id": "selected_y", "title": "Y座標を変更"},
+{"id": "smallest_object", "textContent": "最小のオブジェクト"},
+{"id": "straight_segments", "textContent": "直線"},
+{"id": "stroke_color", "title": "線の色を変更"},
+{"id": "stroke_style", "title": "線種の変更"},
+{"id": "stroke_width", "title": "線幅の変更"},
+{"id": "svginfo_bg_note", "textContent": "※背景色はファイルに保存されません。"},
+{"id": "svginfo_change_background", "textContent": "エディタの背景色"},
+{"id": "svginfo_dim", "textContent": "キャンバスの大きさ"},
+{"id": "svginfo_editor_prefs", "textContent": "エディタの設定"},
+{"id": "svginfo_height", "textContent": "高さ:"},
+{"id": "svginfo_icons", "textContent": "アイコンの大きさ"},
+{"id": "svginfo_image_props", "textContent": "イメージの設定"},
+{"id": "svginfo_lang", "textContent": "言語"},
+{"id": "svginfo_title", "textContent": "タイトル"},
+{"id": "svginfo_width", "textContent": "幅:"},
+{"id": "text", "title": "テキストの内容の変更"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "下揃え"},
+{"id": "tool_aligncenter", "title": "中央揃え"},
+{"id": "tool_alignleft", "title": "左揃え"},
+{"id": "tool_alignmiddle", "title": "中央揃え"},
+{"id": "tool_alignright", "title": "右揃え"},
+{"id": "tool_aligntop", "title": "上揃え"},
+{"id": "tool_angle", "title": "回転角の変更"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "太字"},
+{"id": "tool_circle", "title": "円"},
+{"id": "tool_clear", "textContent": "新規イメージ"},
+{"id": "tool_clone", "title": "複製"},
+{"id": "tool_clone_multi", "title": "選択対象を複製"},
+{"id": "tool_delete", "title": "削除"},
+{"id": "tool_delete_multi", "title": "選択対象を削除"},
+{"id": "tool_docprops", "textContent": "文書のプロパティ"},
+{"id": "tool_docprops_cancel", "textContent": "キャンセル"},
+{"id": "tool_docprops_save", "textContent": "OK"},
+{"id": "tool_ellipse", "title": "楕円"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "フリーハンド楕円"},
+{"id": "tool_fhpath", "title": "鉛筆ツール"},
+{"id": "tool_fhrect", "title": "フリーハンド長方形"},
+{"id": "tool_font_size", "title": "文字サイズの変更"},
+{"id": "tool_group", "title": "グループ化"},
+{"id": "tool_image", "title": "イメージツール"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "イタリック体"},
+{"id": "tool_line", "title": "直線ツール"},
+{"id": "tool_move_bottom", "title": "奥に移動"},
+{"id": "tool_move_top", "title": "手前に移動"},
+{"id": "tool_node_clone", "title": "ノードを複製"},
+{"id": "tool_node_delete", "title": "ノードを削除"},
+{"id": "tool_node_link", "title": "制御点の接続"},
+{"id": "tool_opacity", "title": "不透明度"},
+{"id": "tool_open", "textContent": "イメージを開く"},
+{"id": "tool_path", "title": "パスツール"},
+{"id": "tool_rect", "title": "長方形"},
+{"id": "tool_redo", "title": "やり直し"},
+{"id": "tool_reorient", "title": "現在の角度を0度とする"},
+{"id": "tool_save", "textContent": "画像を保存"},
+{"id": "tool_select", "title": "選択ツール"},
+{"id": "tool_source", "title": "ソースの編集"},
+{"id": "tool_source_cancel", "textContent": "キャンセル"},
+{"id": "tool_source_save", "textContent": "適用"},
+{"id": "tool_square", "title": "正方形"},
+{"id": "tool_text", "title": "テキストツール"},
+{"id": "tool_topath", "title": "パスに変換"},
+{"id": "tool_undo", "title": "元に戻す"},
+{"id": "tool_ungroup", "title": "グループ化を解除"},
+{"id": "tool_wireframe", "title": "ワイヤーフレームで表示 [F]"},
+{"id": "tool_zoom", "title": "ズームツール"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "ズーム倍率の変更"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "ドラッグで幅の調整"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "ソースにエラーがあります。\n元のソースに戻しますか?",
+ "QignoreSourceChanges": "ソースの変更を無視しますか?",
+ "QmoveElemsToLayer": "選択した要素をレイヤー '%s' に移動しますか?",
+ "QwantToClear": "キャンバスをクリアしますか?\nアンドゥ履歴も消去されます。",
+ "cancel": "キャンセル",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "同名のレイヤーが既に存在します。",
+ "enterNewImgURL": "画像のURLを入力してください。",
+ "enterNewLayerName": "レイヤの新しい名前を入力してください。",
+ "enterUniqueLayerName": "新規レイヤの一意な名前を入力してください。",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "機能はサポートされていません。",
+ "invalidAttrValGiven": "無効な値が指定されています。",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "レイヤ",
+ "layerHasThatName": "既に同名が付いています。",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "合わせる対象のコンテンツがありません。",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "カーブの形状を調整するには、制御点をドラッグしてください。",
+ "pathNodeTooltip": "移動するには、ノードをドラッグしてください。ノードをダブルクリックすると線分の種類を変更できます。",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ko.js b/files_svgedit/js/locale/lang.ko.js
new file mode 100644
index 000000000..9c4f322b0
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ko.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "정렬 상대적으로 ..."},
+{"id": "bkgnd_color", "title": "배경 색상 변경 / 투명도"},
+{"id": "circle_cx", "title": "변경 동그라미 CX는 좌표"},
+{"id": "circle_cy", "title": "동그라미 싸이 변경 조정할 수있어"},
+{"id": "circle_r", "title": "변경 원의 반지름"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "변경 직사각형 코너 반경"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "CX는 타원의 좌표 변경"},
+{"id": "ellipse_cy", "title": "싸이 타원 변경 조정할 수있어"},
+{"id": "ellipse_rx", "title": "변경 타원의 x 반지름"},
+{"id": "ellipse_ry", "title": "변경 타원의 y를 반경"},
+{"id": "fill_color", "title": "채우기 색상 변경"},
+{"id": "fitToContent", "textContent": "맞춤 콘텐츠"},
+{"id": "fit_to_all", "textContent": "맞춤 모든 콘텐츠에"},
+{"id": "fit_to_canvas", "textContent": "맞춤 캔버스"},
+{"id": "fit_to_layer_content", "textContent": "레이어에 맞게 콘텐츠"},
+{"id": "fit_to_sel", "textContent": "맞춤 선택"},
+{"id": "font_family", "title": "글꼴 변경 패밀리"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "이미지 높이 변경"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "URL 변경"},
+{"id": "image_width", "title": "이미지 변경 폭"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "큰 개체"},
+{"id": "layer_delete", "title": "레이어 삭제"},
+{"id": "layer_down", "title": "레이어 아래로 이동"},
+{"id": "layer_new", "title": "새 레이어"},
+{"id": "layer_rename", "title": "레이어 이름 바꾸기"},
+{"id": "layer_up", "title": "레이어 위로 이동"},
+{"id": "layersLabel", "textContent": "레이어:"},
+{"id": "line_x1", "title": "변경 라인의 X 좌표 시작"},
+{"id": "line_x2", "title": "변경 라인의 X 좌표 결말"},
+{"id": "line_y1", "title": "라인 변경 y를 시작 좌표"},
+{"id": "line_y2", "title": "라인 변경 y를 결말의 좌표"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "페이지"},
+{"id": "palette", "title": "색상을 클릭, 근무 시간 채우기 스트로크 색상을 변경하려면 변경하려면"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "사각형의 높이를 변경"},
+{"id": "rect_width_tool", "title": "사각형의 너비 변경"},
+{"id": "relativeToLabel", "textContent": "상대:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "미리 정의된 선택:"},
+{"id": "selected_objects", "textContent": "당선 개체"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "작은 개체"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "뇌졸중으로 색상 변경"},
+{"id": "stroke_style", "title": "뇌졸중 변경 대시 스타일"},
+{"id": "stroke_width", "title": "뇌졸중 너비 변경"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "높이:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "너비:"},
+{"id": "text", "title": "텍스트 변경 내용"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "히프 정렬"},
+{"id": "tool_aligncenter", "title": "정렬 센터"},
+{"id": "tool_alignleft", "title": "왼쪽 정렬"},
+{"id": "tool_alignmiddle", "title": "중간 정렬"},
+{"id": "tool_alignright", "title": "오른쪽 맞춤"},
+{"id": "tool_aligntop", "title": "정렬 탑"},
+{"id": "tool_angle", "title": "회전 각도를 변경"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "굵은 텍스트"},
+{"id": "tool_circle", "title": "동그라미"},
+{"id": "tool_clear", "textContent": "새 이미지"},
+{"id": "tool_clone", "title": "클론 요소"},
+{"id": "tool_clone_multi", "title": "클론 요소"},
+{"id": "tool_delete", "title": "요소 삭제"},
+{"id": "tool_delete_multi", "title": "선택한 요소를 삭제"},
+{"id": "tool_docprops", "textContent": "문서 속성"},
+{"id": "tool_docprops_cancel", "textContent": "취소"},
+{"id": "tool_docprops_save", "textContent": "저장"},
+{"id": "tool_ellipse", "title": "타원"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "자유 핸드 타원"},
+{"id": "tool_fhpath", "title": "연필 도구"},
+{"id": "tool_fhrect", "title": "자유 핸드 직사각형"},
+{"id": "tool_font_size", "title": "글꼴 크기 변경"},
+{"id": "tool_group", "title": "그룹 요소"},
+{"id": "tool_image", "title": "이미지 도구"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "기울임꼴 텍스트"},
+{"id": "tool_line", "title": "선 도구"},
+{"id": "tool_move_bottom", "title": "아래로 이동"},
+{"id": "tool_move_top", "title": "상단으로 이동"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "변경 항목을 선택 불투명도"},
+{"id": "tool_open", "textContent": "오픈 이미지"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "직사각형"},
+{"id": "tool_redo", "title": "재실행"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "이미지 저장"},
+{"id": "tool_select", "title": "선택 도구"},
+{"id": "tool_source", "title": "수정 소스"},
+{"id": "tool_source_cancel", "textContent": "취소"},
+{"id": "tool_source_save", "textContent": "저장"},
+{"id": "tool_square", "title": "정사각형"},
+{"id": "tool_text", "title": "텍스트 도구"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "취소"},
+{"id": "tool_ungroup", "title": "그룹 해제 요소"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "줌 도구"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "변경 수준으로 확대"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.lt.js b/files_svgedit/js/locale/lang.lt.js
new file mode 100644
index 000000000..629bdd5f1
--- /dev/null
+++ b/files_svgedit/js/locale/lang.lt.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Derinti palyginti ..."},
+{"id": "bkgnd_color", "title": "Pakeisti fono spalvą / drumstumas"},
+{"id": "circle_cx", "title": "Keisti ratas&#39;s CX koordinuoti"},
+{"id": "circle_cy", "title": "Keisti ratas&#39;s CY koordinuoti"},
+{"id": "circle_r", "title": "Keisti savo apskritimo spindulys"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Keisti stačiakampis skyrelį Spindulys"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Keisti elipse&#39;s CX koordinuoti"},
+{"id": "ellipse_cy", "title": "Keisti elipse&#39;s CY koordinuoti"},
+{"id": "ellipse_rx", "title": "Keisti elipsė &quot;X spindulys"},
+{"id": "ellipse_ry", "title": "Keisti elipse Y spindulys"},
+{"id": "fill_color", "title": "Keisti užpildyti spalvos"},
+{"id": "fitToContent", "textContent": "Talpinti turinys"},
+{"id": "fit_to_all", "textContent": "Talpinti All content"},
+{"id": "fit_to_canvas", "textContent": "Talpinti drobė"},
+{"id": "fit_to_layer_content", "textContent": "Talpinti sluoksnis turinio"},
+{"id": "fit_to_sel", "textContent": "Talpinti atrankos"},
+{"id": "font_family", "title": "Pakeistišriftą Šeima"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Keisti vaizdo aukštis"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Pakeisti URL"},
+{"id": "image_width", "title": "Keisti paveikslėlio plotis"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "didžiausias objektas"},
+{"id": "layer_delete", "title": "Ištrinti Layer"},
+{"id": "layer_down", "title": "Perkelti sluoksnį Žemyn"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Pervadinti sluoksnį"},
+{"id": "layer_up", "title": "Perkelti sluoksnį Up"},
+{"id": "layersLabel", "textContent": "Sluoksniai:"},
+{"id": "line_x1", "title": "Keisti linijos nuo koordinačių x"},
+{"id": "line_x2", "title": "Keisti linijos baigėsi x koordinuoti"},
+{"id": "line_y1", "title": "Keisti linijos pradžios y koordinačių"},
+{"id": "line_y2", "title": "Keisti linijos baigėsi y koordinačių"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "puslapis"},
+{"id": "palette", "title": "Spustelėkite norėdami keisti užpildo spalvą, perėjimo spustelėkite pakeisti insultas spalva"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Keisti stačiakampio aukščio"},
+{"id": "rect_width_tool", "title": "Pakeisti stačiakampio plotis"},
+{"id": "relativeToLabel", "textContent": "palyginti:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Pasirinkite iš anksto:"},
+{"id": "selected_objects", "textContent": "išrinktas objektai"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "mažiausias objektą"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Keisti insultas spalva"},
+{"id": "stroke_style", "title": "Keisti insultas brūkšnys stilius"},
+{"id": "stroke_width", "title": "Keisti insultas plotis"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Aukštis:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Plotis:"},
+{"id": "text", "title": "Keisti teksto turinys"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Lygiuoti apačioje"},
+{"id": "tool_aligncenter", "title": "Lygiuoti"},
+{"id": "tool_alignleft", "title": "Lygiuoti kairėje"},
+{"id": "tool_alignmiddle", "title": "Suderinti Vidurio"},
+{"id": "tool_alignright", "title": "Lygiuoti dešinėje"},
+{"id": "tool_aligntop", "title": "Lygiuoti viršų"},
+{"id": "tool_angle", "title": "Keisti sukimosi kampas"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Pusjuodis"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Klonas Element"},
+{"id": "tool_clone_multi", "title": "Klonas elementai"},
+{"id": "tool_delete", "title": "Naikinti elementą"},
+{"id": "tool_delete_multi", "title": "Pašalinti pasirinktus elementus"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Atšaukti"},
+{"id": "tool_docprops_save", "textContent": "Saugoti"},
+{"id": "tool_ellipse", "title": "Elipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free Hand Elipsė"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free Hand stačiakampis"},
+{"id": "tool_font_size", "title": "Change font size"},
+{"id": "tool_group", "title": "Elementų grupės"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kursyvas"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Perkelti į apačią"},
+{"id": "tool_move_top", "title": "Perkelti į viršų"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Pakeisti pasirinkto elemento neskaidrumo"},
+{"id": "tool_open", "textContent": "Atidaryti atvaizdą"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Stačiakampis"},
+{"id": "tool_redo", "title": "Atstatyti"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Išsaugoti nuotrauką"},
+{"id": "tool_select", "title": "Įrankis"},
+{"id": "tool_source", "title": "Taisyti Šaltinis"},
+{"id": "tool_source_cancel", "textContent": "Atšaukti"},
+{"id": "tool_source_save", "textContent": "Saugoti"},
+{"id": "tool_square", "title": "Aikštė"},
+{"id": "tool_text", "title": "Tekstas Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Atšaukti"},
+{"id": "tool_ungroup", "title": "Išgrupuoti elementai"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Įrankį"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Keisti mastelį"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.lv.js b/files_svgedit/js/locale/lang.lv.js
new file mode 100644
index 000000000..0445a6ef5
--- /dev/null
+++ b/files_svgedit/js/locale/lang.lv.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Līdzināt, salīdzinot ar ..."},
+{"id": "bkgnd_color", "title": "Change background color / necaurredzamība"},
+{"id": "circle_cx", "title": "Maina aplis&#39;s CX koordinēt"},
+{"id": "circle_cy", "title": "Pārmaiņu loks ir cy koordinēt"},
+{"id": "circle_r", "title": "Pārmaiņu loks ir rādiuss"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Maina Taisnstūris Corner Rādiuss"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Mainīt elipses&#39;s CX koordinēt"},
+{"id": "ellipse_cy", "title": "Mainīt elipses&#39;s cy koordinēt"},
+{"id": "ellipse_rx", "title": "Mainīt elipses&#39;s x rādiuss"},
+{"id": "ellipse_ry", "title": "Mainīt elipses&#39;s y rādiuss"},
+{"id": "fill_color", "title": "Change aizpildījuma krāsu"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Fit uz visu saturu"},
+{"id": "fit_to_canvas", "textContent": "Ievietot audekls"},
+{"id": "fit_to_layer_content", "textContent": "Ievietot slānis saturs"},
+{"id": "fit_to_sel", "textContent": "Fit atlases"},
+{"id": "font_family", "title": "Mainīt fonta Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Mainīt attēla augstums"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Change URL"},
+{"id": "image_width", "title": "Mainīt attēla platumu"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "lielākais objekts"},
+{"id": "layer_delete", "title": "Dzēst Layer"},
+{"id": "layer_down", "title": "Pārvietot slāni uz leju"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Pārdēvēt Layer"},
+{"id": "layer_up", "title": "Pārvietot slāni uz augšu"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Mainīt līnijas sākas x koordinēt"},
+{"id": "line_x2", "title": "Mainīt līnijas beigu x koordinēt"},
+{"id": "line_y1", "title": "Mainīt līnijas sākas y koordinātu"},
+{"id": "line_y2", "title": "Mainīt līnijas beigu y koordinātu"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "lapa"},
+{"id": "palette", "title": "Noklikšķiniet, lai mainītu aizpildījuma krāsu, shift-click to mainīt stroke krāsa"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Change Taisnstūra augstums"},
+{"id": "rect_width_tool", "title": "Change taisnstūra platums"},
+{"id": "relativeToLabel", "textContent": "salīdzinājumā ar:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Izvēlieties iepriekš:"},
+{"id": "selected_objects", "textContent": "ievēlēts objekti"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "mazākais objekts"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Change stroke krāsa"},
+{"id": "stroke_style", "title": "Maina stroke domuzīme stils"},
+{"id": "stroke_width", "title": "Change stroke platums"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Augstums:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Platums:"},
+{"id": "text", "title": "Mainītu teksta saturs"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Līdzināt Bottom"},
+{"id": "tool_aligncenter", "title": "Līdzināt uz centru"},
+{"id": "tool_alignleft", "title": "Līdzināt pa kreisi"},
+{"id": "tool_alignmiddle", "title": "Līdzināt Middle"},
+{"id": "tool_alignright", "title": "Līdzināt pa labi"},
+{"id": "tool_aligntop", "title": "Līdzināt Top"},
+{"id": "tool_angle", "title": "Mainīt griešanās leņķis"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Klons Element"},
+{"id": "tool_clone_multi", "title": "Klons Elements"},
+{"id": "tool_delete", "title": "Dzēst Element"},
+{"id": "tool_delete_multi", "title": "Delete Selected Elements"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Atcelt"},
+{"id": "tool_docprops_save", "textContent": "Glābt"},
+{"id": "tool_ellipse", "title": "Elipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Taisnstūris"},
+{"id": "tool_font_size", "title": "Mainīt fonta izmēru"},
+{"id": "tool_group", "title": "Grupa Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kursīvs"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Pārvietot uz leju"},
+{"id": "tool_move_top", "title": "Pārvietot uz augšu"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Mainīt izvēlēto objektu necaurredzamība"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_path", "title": "Path"},
+{"id": "tool_rect", "title": "Taisnstūris"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Rediģēt Source"},
+{"id": "tool_source_cancel", "textContent": "Atcelt"},
+{"id": "tool_source_save", "textContent": "Glābt"},
+{"id": "tool_square", "title": "Kvadrāts"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Atpogāt"},
+{"id": "tool_ungroup", "title": "Atgrupēt Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Pārmaiņu mērogu"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.mk.js b/files_svgedit/js/locale/lang.mk.js
new file mode 100644
index 000000000..3a8d66658
--- /dev/null
+++ b/files_svgedit/js/locale/lang.mk.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Порамни во поглед на ..."},
+{"id": "bkgnd_color", "title": "Смени позадина / непроѕирноста"},
+{"id": "circle_cx", "title": "Промена круг на cx координира"},
+{"id": "circle_cy", "title": "Промена круг&#39;s cy координираат"},
+{"id": "circle_r", "title": "Промена на круг со радиус"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Промена правоаголник Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Промена елипса&#39;s cx координираат"},
+{"id": "ellipse_cy", "title": "Промена на елипса cy координира"},
+{"id": "ellipse_rx", "title": "Промена на елипса x радиус"},
+{"id": "ellipse_ry", "title": "Промена на елипса у радиус"},
+{"id": "fill_color", "title": "Измени пополнете боја"},
+{"id": "fitToContent", "textContent": "Способен да Содржина"},
+{"id": "fit_to_all", "textContent": "Способен да сите содржина"},
+{"id": "fit_to_canvas", "textContent": "Побиране да платно"},
+{"id": "fit_to_layer_content", "textContent": "Способен да слој содржина"},
+{"id": "fit_to_sel", "textContent": "Способен да селекција"},
+{"id": "font_family", "title": "Смени фонт Фамилија"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Промена на слика височина"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Промена URL"},
+{"id": "image_width", "title": "Промена Ширина на сликата"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "најголемиот објект"},
+{"id": "layer_delete", "title": "Избриши Слој"},
+{"id": "layer_down", "title": "Премести слој долу"},
+{"id": "layer_new", "title": "Нов слој"},
+{"id": "layer_rename", "title": "Преименувај слој"},
+{"id": "layer_up", "title": "Премести слој горе"},
+{"id": "layersLabel", "textContent": "Кори:"},
+{"id": "line_x1", "title": "Промена линија почетна x координира"},
+{"id": "line_x2", "title": "Промена линија завршува x координира"},
+{"id": "line_y1", "title": "Промена линија координираат почетна y"},
+{"id": "line_y2", "title": "Промена линија завршува y координира"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "страница"},
+{"id": "palette", "title": "Кликни за да внесете промени бојата, промена клик да се промени бојата удар"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Промена правоаголник височина"},
+{"id": "rect_width_tool", "title": "Промена правоаголник Ширина"},
+{"id": "relativeToLabel", "textContent": "во поглед на:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Изберете предефинирани:"},
+{"id": "selected_objects", "textContent": "избран објекти"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "најмалата објект"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Промена боја на мозочен удар"},
+{"id": "stroke_style", "title": "Промена удар цртичка стил"},
+{"id": "stroke_width", "title": "Промена удар Ширина"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Висина:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Ширина:"},
+{"id": "text", "title": "Промена текст содржина"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Центрирано"},
+{"id": "tool_alignleft", "title": "Порамни лево Порамни"},
+{"id": "tool_alignmiddle", "title": "Израмни Среден"},
+{"id": "tool_alignright", "title": "Порамни десно"},
+{"id": "tool_aligntop", "title": "Израмни почетокот"},
+{"id": "tool_angle", "title": "Change ротација агол"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Задебелен текст"},
+{"id": "tool_circle", "title": "Круг"},
+{"id": "tool_clear", "textContent": "Нови слики"},
+{"id": "tool_clone", "title": "Клон на Element"},
+{"id": "tool_clone_multi", "title": "Клон Елементи"},
+{"id": "tool_delete", "title": "Бришење на елемент"},
+{"id": "tool_delete_multi", "title": "Избриши Избрани Елементи"},
+{"id": "tool_docprops", "textContent": "Својства на документот"},
+{"id": "tool_docprops_cancel", "textContent": "Откажи"},
+{"id": "tool_docprops_save", "textContent": "Зачувува"},
+{"id": "tool_ellipse", "title": "Елипса"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Елипса"},
+{"id": "tool_fhpath", "title": "Алатка за молив"},
+{"id": "tool_fhrect", "title": "Правоаголник слободна рака"},
+{"id": "tool_font_size", "title": "Изменифонт Големина"},
+{"id": "tool_group", "title": "Група на елементи"},
+{"id": "tool_image", "title": "Алатка за сликата"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic текст"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to bottom"},
+{"id": "tool_move_top", "title": "Поместување на почетокот"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Промена избрани ставка непроѕирноста"},
+{"id": "tool_open", "textContent": "Отвори слика"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Правоаголник"},
+{"id": "tool_redo", "title": "Повтори"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Зачувај слика"},
+{"id": "tool_select", "title": "Изберете ја алатката"},
+{"id": "tool_source", "title": "Уреди Извор"},
+{"id": "tool_source_cancel", "textContent": "Откажи"},
+{"id": "tool_source_save", "textContent": "Зачувува"},
+{"id": "tool_square", "title": "Квадрат"},
+{"id": "tool_text", "title": "Алатка за текст"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Врати"},
+{"id": "tool_ungroup", "title": "Ungroup Елементи"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Алатка за зумирање"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Промена зум ниво"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ms.js b/files_svgedit/js/locale/lang.ms.js
new file mode 100644
index 000000000..2df3218f1
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ms.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Rata relatif ..."},
+{"id": "bkgnd_color", "title": "Mengubah warna latar belakang / keburaman"},
+{"id": "circle_cx", "title": "Mengubah koordinat bulatan cx"},
+{"id": "circle_cy", "title": "Mengubah koordinat cy bulatan"},
+{"id": "circle_r", "title": "Tukar jari-jari lingkaran"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Tukar Corner Rectangle Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Tukar elips&#39;s cx koordinat"},
+{"id": "ellipse_cy", "title": "Tukar elips&#39;s cy koordinat"},
+{"id": "ellipse_rx", "title": "Tukar elips&#39;s x jari-jari"},
+{"id": "ellipse_ry", "title": "Tukar elips&#39;s y jari-jari"},
+{"id": "fill_color", "title": "Tukar Warna mengisi"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Cocok untuk semua kandungan"},
+{"id": "fit_to_canvas", "textContent": "Muat kanvas"},
+{"id": "fit_to_layer_content", "textContent": "Muat kandungan lapisan"},
+{"id": "fit_to_sel", "textContent": "Fit seleksi"},
+{"id": "font_family", "title": "Tukar Font Keluarga"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Tinggi gambar Kaca"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Tukar URL"},
+{"id": "image_width", "title": "Tukar Lebar imej"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "objek terbesar"},
+{"id": "layer_delete", "title": "Padam Layer"},
+{"id": "layer_down", "title": "Pindah Layer Bawah"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Pindah Layer Up"},
+{"id": "layersLabel", "textContent": "Lapisan:"},
+{"id": "line_x1", "title": "Ubah baris mulai x koordinat"},
+{"id": "line_x2", "title": "Ubah baris&#39;s Berakhir x koordinat"},
+{"id": "line_y1", "title": "Ubah baris mulai y koordinat"},
+{"id": "line_y2", "title": "Ubah baris di tiap akhir y koordinat"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Laman"},
+{"id": "palette", "title": "Klik untuk menukar warna mengisi, shift-klik untuk menukar warna stroke"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Perubahan quality persegi panjang"},
+{"id": "rect_width_tool", "title": "Tukar persegi panjang lebar"},
+{"id": "relativeToLabel", "textContent": "relatif:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Pilih standard:"},
+{"id": "selected_objects", "textContent": "objek terpilih"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "objek terkecil"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Tukar Warna stroke"},
+{"id": "stroke_style", "title": "Tukar gaya dash stroke"},
+{"id": "stroke_width", "title": "Tukar stroke width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Ketinggian:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Lebar:"},
+{"id": "text", "title": "Tukar isi teks"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Rata Bottom"},
+{"id": "tool_aligncenter", "title": "Rata Tengah"},
+{"id": "tool_alignleft", "title": "Rata Kiri"},
+{"id": "tool_alignmiddle", "title": "Rata Tengah"},
+{"id": "tool_alignright", "title": "Rata Kanan"},
+{"id": "tool_aligntop", "title": "Rata Popular"},
+{"id": "tool_angle", "title": "Namakan sudut putaran"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Teks"},
+{"id": "tool_circle", "title": "Lingkaran"},
+{"id": "tool_clear", "textContent": "Imej Baru"},
+{"id": "tool_clone", "title": "Clone Elemen"},
+{"id": "tool_clone_multi", "title": "Clone Elemen"},
+{"id": "tool_delete", "title": "Padam Elemen"},
+{"id": "tool_delete_multi", "title": "Padam Elemen"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Batal"},
+{"id": "tool_docprops_save", "textContent": "Simpan"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Persegi Panjang"},
+{"id": "tool_font_size", "title": "Ubah Saiz Font"},
+{"id": "tool_group", "title": "Kelompok Elemen"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Teks"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Pindah ke Bawah"},
+{"id": "tool_move_top", "title": "Pindah ke Atas"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Mengubah item yang dipilih keburaman"},
+{"id": "tool_open", "textContent": "Membuka Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rectangle"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Pilih Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Batal"},
+{"id": "tool_source_save", "textContent": "Simpan"},
+{"id": "tool_square", "title": "Peti"},
+{"id": "tool_text", "title": "Teks Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Ungroup Elemen"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Mengubah peringkat pembesaran"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.mt.js b/files_svgedit/js/locale/lang.mt.js
new file mode 100644
index 000000000..29f0ed51f
--- /dev/null
+++ b/files_svgedit/js/locale/lang.mt.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Jallinjaw relattiv għall - ..."},
+{"id": "bkgnd_color", "title": "Bidla fil-kulur fl-isfond / opaċità"},
+{"id": "circle_cx", "title": "CX ċirku Tibdil jikkoordinaw"},
+{"id": "circle_cy", "title": "Ċirku Tibdil cy jikkoordinaw"},
+{"id": "circle_r", "title": "Raġġ ta &#39;ċirku tal-Bidla"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Bidla Rectangle Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Bidla ellissi&#39;s CX jikkoordinaw"},
+{"id": "ellipse_cy", "title": "Ellissi Tibdil cy jikkoordinaw"},
+{"id": "ellipse_rx", "title": "Raġġ x ellissi Tibdil"},
+{"id": "ellipse_ry", "title": "Raġġ y ellissi Tibdil"},
+{"id": "fill_color", "title": "Bidla imla color"},
+{"id": "fitToContent", "textContent": "Fit għall-kontenut"},
+{"id": "fit_to_all", "textContent": "Tajbin għall-kontenut"},
+{"id": "fit_to_canvas", "textContent": "Xieraq li kanvas"},
+{"id": "fit_to_layer_content", "textContent": "Fit-kontenut ta &#39;saff għal"},
+{"id": "fit_to_sel", "textContent": "Fit-għażla"},
+{"id": "font_family", "title": "Bidla Font Familja"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Għoli image Bidla"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Bidla URL"},
+{"id": "image_width", "title": "Wisa image Bidla"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "akbar oġġett"},
+{"id": "layer_delete", "title": "Ħassar Layer"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Semmi mill-ġdid Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Saffi:"},
+{"id": "line_x1", "title": "Bidla fil-linja tal-bidu tikkoordina x"},
+{"id": "line_x2", "title": "Linja tal-Bidla li jispiċċa x jikkoordinaw"},
+{"id": "line_y1", "title": "Bidla fil-linja tal-bidu y jikkoordinaw"},
+{"id": "line_y2", "title": "Linja Tibdil jispiċċa y jikkoordinaw"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "paġna"},
+{"id": "palette", "title": "Ikklikkja biex timla l-bidla fil-kulur, ikklikkja-bidla għall-bidla color stroke"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Għoli rettangolu Bidla"},
+{"id": "rect_width_tool", "title": "Wisa &#39;rettangolu Bidla"},
+{"id": "relativeToLabel", "textContent": "relattiv għall -:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Select predefiniti:"},
+{"id": "selected_objects", "textContent": "oġġetti elett"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "iżgħar oġġett"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Color stroke Bidla"},
+{"id": "stroke_style", "title": "Bidla stroke dash stil"},
+{"id": "stroke_width", "title": "Wisa &#39;puplesija Bidla"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Għoli:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Wisa &#39;:"},
+{"id": "text", "title": "Test kontenut Bidla"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Tallinja Bottom"},
+{"id": "tool_aligncenter", "title": "Tallinja Center"},
+{"id": "tool_alignleft", "title": "Tallinja Left"},
+{"id": "tool_alignmiddle", "title": "Tallinja Nofsani"},
+{"id": "tool_alignright", "title": "Tallinja Dritt"},
+{"id": "tool_aligntop", "title": "Tallinja Top"},
+{"id": "tool_angle", "title": "Angolu ta &#39;rotazzjoni Bidla"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Test"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "Image New"},
+{"id": "tool_clone", "title": "Klonu Element"},
+{"id": "tool_clone_multi", "title": "Klonu Elements"},
+{"id": "tool_delete", "title": "Ħassar Element"},
+{"id": "tool_delete_multi", "title": "Elementi Selected Ħassar"},
+{"id": "tool_docprops", "textContent": "Dokument Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Ikkanċella"},
+{"id": "tool_docprops_save", "textContent": "Save"},
+{"id": "tool_ellipse", "title": "Ellissi"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free Hand-ellissi"},
+{"id": "tool_fhpath", "title": "Lapes Tool"},
+{"id": "tool_fhrect", "title": "Free Hand-Rectangle"},
+{"id": "tool_font_size", "title": "Change font size"},
+{"id": "tool_group", "title": "Grupp Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Test korsiv"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Bidla magħżula opaċità partita"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rettangolu"},
+{"id": "tool_redo", "title": "Jerġa &#39;jagħmel"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Image Save"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Source Edit"},
+{"id": "tool_source_cancel", "textContent": "Ikkanċella"},
+{"id": "tool_source_save", "textContent": "Save"},
+{"id": "tool_square", "title": "Kwadru"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Jneħħu"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Bidla zoom livell"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.nl.js b/files_svgedit/js/locale/lang.nl.js
new file mode 100644
index 000000000..8c7cd41c2
--- /dev/null
+++ b/files_svgedit/js/locale/lang.nl.js
@@ -0,0 +1,176 @@
+[
+{"id": "align_relative_to", "title": "Uitlijnen relatief ten opzichte van ..."},
+{"id": "bkgnd_color", "title": "Verander achtergrond kleur/doorzichtigheid"},
+{"id": "circle_cx", "title": "Verander het X coordinaat van het cirkel middelpunt"},
+{"id": "circle_cy", "title": "Verander het Y coordinaat van het cirkel middelpunt"},
+{"id": "circle_r", "title": "Verander de cirkel radius"},
+{"id": "connector_no_arrow", "textContent": "Geen pijl"},
+{"id": "copyrightLabel", "textContent": "Mogelijk gemaakt door"},
+{"id": "cornerRadiusLabel", "title": "Verander hoekradius rechthoek"},
+{"id": "curve_segments", "textContent": "Gebogen"},
+{"id": "ellipse_cx", "title": "Verander het X coordinaat van het ellips middelpunt"},
+{"id": "ellipse_cy", "title": "Verander het Y coordinaat van het ellips middelpunt"},
+{"id": "ellipse_rx", "title": "Verander ellips X radius"},
+{"id": "ellipse_ry", "title": "Verander ellips Y radius"},
+{"id": "fill_color", "title": "Verander vul kleur"},
+{"id": "fitToContent", "textContent": "Pas om inhoud"},
+{"id": "fit_to_all", "textContent": "Pas om alle inhoud"},
+{"id": "fit_to_canvas", "textContent": "Pas om canvas"},
+{"id": "fit_to_layer_content", "textContent": "Pas om laag inhoud"},
+{"id": "fit_to_sel", "textContent": "Pas om selectie"},
+{"id": "font_family", "title": "Verander lettertype"},
+{"id": "icon_large", "textContent": "Groot"},
+{"id": "icon_medium", "textContent": "Gemiddeld"},
+{"id": "icon_small", "textContent": "Klein"},
+{"id": "icon_xlarge", "textContent": "Extra groot"},
+{"id": "idLabel", "title": "Identificeer het element"},
+{"id": "image_height", "title": "Verander hoogte afbeelding"},
+{"id": "image_opt_embed", "textContent": "Toevoegen data (lokale bestanden)"},
+{"id": "image_opt_ref", "textContent": "Gebruik bestand referentie"},
+{"id": "image_url", "title": "Verander URL"},
+{"id": "image_width", "title": "Verander breedte afbeelding"},
+{"id": "includedImages", "textContent": "Ingesloten afbeeldingen"},
+{"id": "largest_object", "textContent": "Grootste object"},
+{"id": "layer_delete", "title": "Delete laag"},
+{"id": "layer_down", "title": "Beweeg laag omlaag"},
+{"id": "layer_new", "title": "Nieuwe laag"},
+{"id": "layer_rename", "title": "Hernoem laag"},
+{"id": "layer_up", "title": "Beweeg laag omhoog"},
+{"id": "layersLabel", "textContent": "Lagen:"},
+{"id": "line_x1", "title": "Verander start X coordinaat van de lijn"},
+{"id": "line_x2", "title": "Verander eind X coordinaat van de lijn"},
+{"id": "line_y1", "title": "Verander start Y coordinaat van de lijn"},
+{"id": "line_y2", "title": "Verander eind Y coordinaat van de lijn"},
+{"id": "linecap_butt", "title": "Lijneinde: Geen"},
+{"id": "linecap_round", "title": "Lijneinde: Rond"},
+{"id": "linecap_square", "title": "Lijneinde: Vierkant"},
+{"id": "linejoin_bevel", "title": "Lijnverbinding: Afgestompt"},
+{"id": "linejoin_miter", "title": "Lijnverbinding: Hoek"},
+{"id": "linejoin_round", "title": "Lijnverbinding: Rond"},
+{"id": "main_icon", "title": "Hoofdmenu"},
+{"id": "mode_connect", "title": "Verbind twee objecten"},
+{"id": "page", "textContent": "Pagina"},
+{"id": "palette", "title": "Klik om de vul kleur te veranderen, shift-klik om de lijn kleur te veranderen"},
+{"id": "path_node_x", "title": "Verander X coordinaat knooppunt"},
+{"id": "path_node_y", "title": "Verander Y coordinaat knooppunt"},
+{"id": "rect_height_tool", "title": "Verander hoogte rechthoek"},
+{"id": "rect_width_tool", "title": "Verander breedte rechthoek"},
+{"id": "relativeToLabel", "textContent": "Relatief ten opzichte van:"},
+{"id": "seg_type", "title": "Verander segment type"},
+{"id": "selLayerLabel", "textContent": "Verplaats elementen naar:"},
+{"id": "selLayerNames", "title": "Verplaats geselecteerde elementen naar andere laag"},
+{"id": "selectedPredefined", "textContent": "Kies voorgedefinieerd:"},
+{"id": "selected_objects", "textContent": "Geselecteerde objecten"},
+{"id": "selected_x", "title": "Verander X coordinaat"},
+{"id": "selected_y", "title": "Verander Y coordinaat"},
+{"id": "smallest_object", "textContent": "Kleinste object"},
+{"id": "straight_segments", "textContent": "Recht"},
+{"id": "stroke_color", "title": "Verander lijn kleur"},
+{"id": "stroke_style", "title": "Verander lijn stijl"},
+{"id": "stroke_width", "title": "Verander lijn breedte"},
+{"id": "svginfo_bg_note", "textContent": "Let op: De achtergrond wordt niet opgeslagen met de afbeelding."},
+{"id": "svginfo_change_background", "textContent": "Editor achtergrond"},
+{"id": "svginfo_dim", "textContent": "Canvas afmetingen"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor eigenschappen"},
+{"id": "svginfo_height", "textContent": "Hoogte:"},
+{"id": "svginfo_icons", "textContent": "Icoon grootte"},
+{"id": "svginfo_image_props", "textContent": "Afbeeldingeigenschappen"},
+{"id": "svginfo_lang", "textContent": "Taal"},
+{"id": "svginfo_title", "textContent": "Titel"},
+{"id": "svginfo_width", "textContent": "Breedte:"},
+{"id": "text", "title": "Wijzig tekst"},
+{"id": "toggle_stroke_tools", "title": "Toon/verberg meer lijn gereedschap"},
+{"id": "tool_add_subpath", "title": "Subpad toevoegen"},
+{"id": "tool_alignbottom", "title": "Onder uitlijnen"},
+{"id": "tool_aligncenter", "title": "Centreren"},
+{"id": "tool_alignleft", "title": "Links uitlijnen"},
+{"id": "tool_alignmiddle", "title": "Midden uitlijnen"},
+{"id": "tool_alignright", "title": "Rechts uitlijnen"},
+{"id": "tool_aligntop", "title": "Boven uitlijnen"},
+{"id": "tool_angle", "title": "Draai"},
+{"id": "tool_blur", "title": "Verander Gaussische vervaging waarde"},
+{"id": "tool_bold", "title": "Vet"},
+{"id": "tool_circle", "title": "Cirkel"},
+{"id": "tool_clear", "textContent": "Nieuwe afbeelding"},
+{"id": "tool_clone", "title": "Kloon element"},
+{"id": "tool_clone_multi", "title": "Kloon elementen"},
+{"id": "tool_delete", "title": "Delete element"},
+{"id": "tool_delete_multi", "title": "Delete geselecteerde elementen"},
+{"id": "tool_docprops", "textContent": "Documenteigenschappen"},
+{"id": "tool_docprops_cancel", "textContent": "Annuleren"},
+{"id": "tool_docprops_save", "textContent": "Ok"},
+{"id": "tool_ellipse", "title": "Ellips"},
+{"id": "tool_export", "textContent": "Exporteer als PNG"},
+{"id": "tool_eyedropper", "title": "Kleuren kopieer gereedschap"},
+{"id": "tool_fhellipse", "title": "Vrije stijl ellips"},
+{"id": "tool_fhpath", "title": "Potlood"},
+{"id": "tool_fhrect", "title": "Vrije stijl rechthoek"},
+{"id": "tool_font_size", "title": "Verander lettertype grootte"},
+{"id": "tool_group", "title": "Groepeer elementen"},
+{"id": "tool_image", "title": "Afbeelding"},
+{"id": "tool_import", "textContent": "Importeer SVG"},
+{"id": "tool_italic", "title": "Cursief"},
+{"id": "tool_line", "title": "Lijn"},
+{"id": "tool_move_bottom", "title": "Naar achtergrond"},
+{"id": "tool_move_top", "title": "Naar voorgrond"},
+{"id": "tool_node_clone", "title": "Kloon knooppunt"},
+{"id": "tool_node_delete", "title": "Delete knooppunt"},
+{"id": "tool_node_link", "title": "Koppel controle punten"},
+{"id": "tool_opacity", "title": "Verander opaciteit geselecteerde item"},
+{"id": "tool_open", "textContent": "Open afbeelding"},
+{"id": "tool_openclose_path", "title": "Open/sluit subpad"},
+{"id": "tool_path", "title": "Pad"},
+{"id": "tool_position", "title": "Lijn element uit relatief ten opzichte van de pagina"},
+{"id": "tool_rect", "title": "Rechthoek"},
+{"id": "tool_redo", "title": "Opnieuw doen"},
+{"id": "tool_reorient", "title": "Herorienteer pad"},
+{"id": "tool_save", "textContent": "Afbeelding opslaan"},
+{"id": "tool_select", "title": "Selecteer"},
+{"id": "tool_source", "title": "Bewerk bron"},
+{"id": "tool_source_cancel", "textContent": "Annuleren"},
+{"id": "tool_source_save", "textContent": "Veranderingen toepassen"},
+{"id": "tool_square", "title": "Vierkant"},
+{"id": "tool_text", "title": "Tekst"},
+{"id": "tool_topath", "title": "Zet om naar pad"},
+{"id": "tool_undo", "title": "Ongedaan maken"},
+{"id": "tool_ungroup", "title": "Groepering opheffen"},
+{"id": "tool_wireframe", "title": "Draadmodel"},
+{"id": "tool_zoom", "title": "Zoom"},
+{"id": "url_notice", "title": "Let op: Dit plaatje kan niet worden geintegreerd (embeded). Het hangt af van dit pad om te worden afgebeeld."},
+{"id": "zoom_panel", "title": "In-/uitzoomen"},
+{"id": "sidepanel_handle", "textContent": "L a g e n", "title": "Sleep naar links/rechts om het zijpaneel te vergroten/verkleinen"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Er waren analyse fouten in je SVG bron.\nTeruggaan naar de originele SVG bron?",
+ "QignoreSourceChanges": "Veranderingen in de SVG bron negeren?",
+ "QmoveElemsToLayer": "Verplaats geselecteerde elementen naar laag '%s'?",
+ "QwantToClear": "Wil je de afbeelding leeg maken?\nDit zal ook de ongedaan maak geschiedenis wissen!",
+ "cancel": "Annuleren",
+ "defsFailOnSave": "Let op: Vanwege een fout in je browser, kan dit plaatje verkeerd verschijnen (missende hoeken en/of elementen). Het zal goed verschijnen zodra het plaatje echt wordt opgeslagen.",
+ "dupeLayerName": "Er is al een laag met die naam!",
+ "enterNewImgURL": "Geef de nieuwe afbeelding URL",
+ "enterNewLayerName": "Geef een nieuwe laag naam",
+ "enterUniqueLayerName": "Geef een unieke laag naam",
+ "exportNoBlur": "Vervaagde elementen zullen niet vervaagd worden geexporteerd.",
+ "exportNoDashArray": "Lijnstijlen zullen gevuld worden geexporteerd..",
+ "exportNoImage": "Plaatjes elementen zullen niet worden geexporteerd.",
+ "exportNoText": "Tekst kan mogelijk niet zo worden geexporteerd zoals verwacht.",
+ "exportNoforeignObject": "Vreemde objecten zullen niet worden geexporteerd.",
+ "featNotSupported": "Functie wordt niet ondersteund",
+ "invalidAttrValGiven": "Verkeerde waarde gegeven",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "omlaag",
+ "key_up": "omhoog",
+ "layer": "Laag",
+ "layerHasThatName": "Laag heeft al die naam",
+ "loadingImage": "Laden van het plaatje, even geduld aub...",
+ "noContentToFitTo": "Geen inhoud om omheen te passen",
+ "noteTheseIssues": "Let op de volgende problemen: ",
+ "ok": "Ok",
+ "pathCtrlPtTooltip": "Versleep het controle punt om de boog eigenschappen te veranderen",
+ "pathNodeTooltip": "Versleep knooppunt om hem te verslepen. Dubbel klik knooppunt om het segment type te veranderen",
+ "saveFromBrowser": "Kies \"Save As...\" in je browser om dit plaatje op te slaan als een %s bestand."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.no.js b/files_svgedit/js/locale/lang.no.js
new file mode 100644
index 000000000..3aed595d2
--- /dev/null
+++ b/files_svgedit/js/locale/lang.no.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Juster i forhold til ..."},
+{"id": "bkgnd_color", "title": "Endre bakgrunnsfarge / opacity"},
+{"id": "circle_cx", "title": "Endre sirkelens CX koordinatsystem"},
+{"id": "circle_cy", "title": "Endre sirkelens koordinere cy"},
+{"id": "circle_r", "title": "Endre sirkelens radius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Endre rektangel Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Endre ellipse&#39;s CX koordinatsystem"},
+{"id": "ellipse_cy", "title": "Endre ellipse&#39;s koordinere cy"},
+{"id": "ellipse_rx", "title": "Endre ellipse&#39;s x radius"},
+{"id": "ellipse_ry", "title": "Endre ellipse&#39;s y radius"},
+{"id": "fill_color", "title": "Endre fyllfarge"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Passer til alt innhold"},
+{"id": "fit_to_canvas", "textContent": "Tilpass til lerret"},
+{"id": "fit_to_layer_content", "textContent": "Fit to lag innhold"},
+{"id": "fit_to_sel", "textContent": "Tilpass til valg"},
+{"id": "font_family", "title": "Change Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Endre bilde høyde"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Endre URL"},
+{"id": "image_width", "title": "Endre bilde bredde"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "største objekt"},
+{"id": "layer_delete", "title": "Slett laget"},
+{"id": "layer_down", "title": "Flytt laget ned"},
+{"id": "layer_new", "title": "Nytt lag"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Flytt Layer Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Endre linje begynner x koordinat"},
+{"id": "line_x2", "title": "Endre linje&#39;s ending x koordinat"},
+{"id": "line_y1", "title": "Endre linje begynner y koordinat"},
+{"id": "line_y2", "title": "Endre linje&#39;s ending y koordinat"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "side"},
+{"id": "palette", "title": "Click å endre fyllfarge, shift-klikke for å endre slag farge"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Endre rektangel høyde"},
+{"id": "rect_width_tool", "title": "Endre rektangel bredde"},
+{"id": "relativeToLabel", "textContent": "i forhold til:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Velg forhåndsdefinerte:"},
+{"id": "selected_objects", "textContent": "velges objekter"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "minste objekt"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Endre stroke color"},
+{"id": "stroke_style", "title": "Endre stroke dash stil"},
+{"id": "stroke_width", "title": "Endre stroke width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Høyde:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Bredde:"},
+{"id": "text", "title": "Endre tekst innholdet"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Midtstill"},
+{"id": "tool_alignleft", "title": "Venstrejuster"},
+{"id": "tool_alignmiddle", "title": "Rett Middle"},
+{"id": "tool_alignright", "title": "Høyrejuster"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Endre rotasjonsvinkelen"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Fet tekst"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Slett element"},
+{"id": "tool_delete_multi", "title": "Slett valgte elementer [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Avbryt"},
+{"id": "tool_docprops_save", "textContent": "Lagre"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand rektangel"},
+{"id": "tool_font_size", "title": "Endre skriftstørrelse"},
+{"id": "tool_group", "title": "Gruppe Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kursiv tekst"},
+{"id": "tool_line", "title": "Linjeverktøy"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Flytt til toppen"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Endre valgte elementet opasitet"},
+{"id": "tool_open", "textContent": "Åpne Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rektangel"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Lagre bilde"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Edit Source"},
+{"id": "tool_source_cancel", "textContent": "Avbryt"},
+{"id": "tool_source_save", "textContent": "Lagre"},
+{"id": "tool_square", "title": "Torg"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Angre"},
+{"id": "tool_ungroup", "title": "Dele opp Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Endre zoomnivå"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.pl.js b/files_svgedit/js/locale/lang.pl.js
new file mode 100644
index 000000000..88a19ce78
--- /dev/null
+++ b/files_svgedit/js/locale/lang.pl.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Dostosowanie w stosunku do ..."},
+{"id": "bkgnd_color", "title": "Zmień kolor tła / opacity"},
+{"id": "circle_cx", "title": "Zmiana koła CX koordynacji"},
+{"id": "circle_cy", "title": "Koła Zmian cy koordynacji"},
+{"id": "circle_r", "title": "Zmiana koła promienia"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Zmiana prostokąt Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Zmiana elipsy CX koordynacji"},
+{"id": "ellipse_cy", "title": "Elipsy Zmian cy koordynacji"},
+{"id": "ellipse_rx", "title": "Elipsy Zmian x promieniu"},
+{"id": "ellipse_ry", "title": "Elipsy Zmian y promieniu"},
+{"id": "fill_color", "title": "Zmiana koloru wypełnienia"},
+{"id": "fitToContent", "textContent": "Dopasuj do treści"},
+{"id": "fit_to_all", "textContent": "Dopasuj do wszystkich treści"},
+{"id": "fit_to_canvas", "textContent": "Dopasuj do płótnie"},
+{"id": "fit_to_layer_content", "textContent": "Dopasuj do zawartości warstwy"},
+{"id": "fit_to_sel", "textContent": "Dopasuj do wyboru"},
+{"id": "font_family", "title": "Zmiana czcionki Rodzina"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Wysokość obrazu zmian"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Zmień adres URL"},
+{"id": "image_width", "title": "Zmiana image width"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "największego obiektu"},
+{"id": "layer_delete", "title": "Usuwanie warstwy"},
+{"id": "layer_down", "title": "Przesuń warstwę w dół"},
+{"id": "layer_new", "title": "Nowa warstwa"},
+{"id": "layer_rename", "title": "Zmiana nazwy warstwy"},
+{"id": "layer_up", "title": "Move Up Layer"},
+{"id": "layersLabel", "textContent": "Warstwy:"},
+{"id": "line_x1", "title": "Zmian od linii współrzędna x"},
+{"id": "line_x2", "title": "Zgodnie Zmian kończące współrzędna x"},
+{"id": "line_y1", "title": "Line y Zmian od współrzędnych"},
+{"id": "line_y2", "title": "Zgodnie Zmian kończące y koordynowanie"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "strona"},
+{"id": "palette", "title": "Kliknij, aby zmienić kolor wypełnienia, shift kliknij, aby zmienić kolor skok"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Zmiana wysokości prostokąta"},
+{"id": "rect_width_tool", "title": "Szerokość prostokąta Zmień"},
+{"id": "relativeToLabel", "textContent": "w stosunku do:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Wybierz predefiniowanych:"},
+{"id": "selected_objects", "textContent": "wybranych obiektów"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "Najmniejszy obiekt"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Zmień kolor skok"},
+{"id": "stroke_style", "title": "Zmień styl skoku kreska"},
+{"id": "stroke_width", "title": "Szerokość skoku Zmień"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Wysokość:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Szerokość:"},
+{"id": "text", "title": "Zmiana treści tekstu"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Wyrównaj do dołu"},
+{"id": "tool_aligncenter", "title": "Wyśrodkuj"},
+{"id": "tool_alignleft", "title": "Wyrównaj do lewej"},
+{"id": "tool_alignmiddle", "title": "Align Middle"},
+{"id": "tool_alignright", "title": "Wyrównaj do prawej"},
+{"id": "tool_aligntop", "title": "Wyrównaj do góry"},
+{"id": "tool_angle", "title": "Zmiana kąta obrotu"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Koło"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Elementy Clone"},
+{"id": "tool_delete", "title": "Usuń element"},
+{"id": "tool_delete_multi", "title": "Usun Wybrane elementy"},
+{"id": "tool_docprops", "textContent": "Właściwości dokumentu"},
+{"id": "tool_docprops_cancel", "textContent": "Anuluj"},
+{"id": "tool_docprops_save", "textContent": "Zapisać"},
+{"id": "tool_ellipse", "title": "Elipsa"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Wolny-Hand Elipsa"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Wolnej ręki prostokąt"},
+{"id": "tool_font_size", "title": "Zmień rozmiar czcionki"},
+{"id": "tool_group", "title": "Elementy Grupa"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kursywa"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Przenieś do dołu"},
+{"id": "tool_move_top", "title": "Przenieś do góry"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Zmiana stron przezroczystość elementu"},
+{"id": "tool_open", "textContent": "Otwórz obraz"},
+{"id": "tool_path", "title": "Poli Tool"},
+{"id": "tool_rect", "title": "Prostokąt"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Zapisz obraz"},
+{"id": "tool_select", "title": "Wybierz narzędzie"},
+{"id": "tool_source", "title": "Edycja źródła"},
+{"id": "tool_source_cancel", "textContent": "Anuluj"},
+{"id": "tool_source_save", "textContent": "Zapisać"},
+{"id": "tool_square", "title": "Kwadrat"},
+{"id": "tool_text", "title": "Tekst Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Cofnij"},
+{"id": "tool_ungroup", "title": "Elementy Rozgrupuj"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Zmiana poziomu powiększenia"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.pt-BR.js b/files_svgedit/js/locale/lang.pt-BR.js
new file mode 100644
index 000000000..6ae824a89
--- /dev/null
+++ b/files_svgedit/js/locale/lang.pt-BR.js
@@ -0,0 +1,157 @@
+[
+{"id":"layer_new","title":"Nova Camada"},
+{"id":"layer_delete","title":"Deletar Camada"},
+{"id":"layer_rename","title":"Renomear Camada"},
+{"id":"layer_up","title":"Camada para Cima"},
+{"id":"layer_down","title":"Camada para baixo"},
+{"id":"tool_clear","title":"Nova Imagem"},
+{"id":"tool_open","title":"Abrir Imagem"},
+{"id":"tool_save","title":"Salvar Imagem"},
+{"id":"tool_docprops","title":"Propriedades"},
+{"id":"tool_source","title":"Código"},
+{"id":"tool_undo","title":"Desfazer"},
+{"id":"tool_redo","title":"Refazer"},
+{"id":"tool_clone","title":"Duplicar Elemento"},
+{"id":"tool_delete","title":"Excluir Elemento"},
+{"id":"tool_move_top","title":"Mover para Cima"},
+{"id":"tool_move_bottom","title":"Mover para Baixo"},
+{"id":"group_opacity","title":"Mudar a opacidade"},
+{"id":"angle","title":"Ângulo de rotação"},
+{"id":"tool_clone_multi","title":"Duplicar Elementos"},
+{"id":"tool_delete_multi","title":"Eliminar Elementos"},
+{"id":"tool_alignleft","title":"Alinhar à Esquerda"},
+{"id":"tool_aligncenter","title":"Alinhar ao centro"},
+{"id":"tool_alignright","title":"Alinhar à Direita"},
+{"id":"tool_aligntop","title":"Alinhar Acima"},
+{"id":"tool_alignmiddle","title":"Alinhar no Méio"},
+{"id":"tool_alignbottom","title":"Alinhar Abaixo"},
+{"id":"align_relative_to","title":"Alinhar em relação a ..."},
+{"id":"tool_group","title":"Agrupar"},
+{"id":"tool_ungroup","title":"Desagrupar"},
+{"id":"rect_width","title":"Alterar a largura retângulo"},
+{"id":"rect_height","title":"Alterar altura do retângulo"},
+{"id":"rect_rx","title":"Radio do chanfro"},
+{"id":"image_width","title":"Alterar a largura da imagem"},
+{"id":"image_height","title":"Alterar altura da imagem"},
+{"id":"image_url","title":"Alterar caminho URL"},
+{"id":"circle_cx","title":"Ponto horizontal do centro cx"},
+{"id":"circle_cy","title":"Ponto Vertical do centro cy"},
+{"id":"circle_r","title":"Alterar raio"},
+{"id":"ellipse_cx","title":"Ponto horizontal do centro cx"},
+{"id":"ellipse_cy","title":"Ponto Vertical do centro cy"},
+{"id":"ellipse_rx","title":"Alterar raio horizontal"},
+{"id":"ellipse_ry","title":"Alterar raio vertical"},
+{"id":"line_x1","title":"Ponto horizontal do início da linha x1"},
+{"id":"line_y1","title":"Ponto vertical do início da linha y1"},
+{"id":"line_x2","title":"Ponto horizontal do fim da linha x2"},
+{"id":"line_y2","title":"Ponto vertical do fim da linha y2"},
+{"id":"tool_bold","title":"Negrito"},
+{"id":"tool_italic","title":"Itálico"},
+{"id":"font_family","title":"Fonte"},
+{"id":"font_size","title":"Alterar tamanho da fonte"},
+{"id":"text","title":"Alterar o conteúdo do texto"},
+{"id":"tool_select","title":"Seleção"},
+{"id":"tool_fhpath","title":"Lápis"},
+{"id":"tool_line","title":"Linha"},
+{"id":"tools_rect_show","title":"Quadrado / Retângulo"},
+{"id":"tools_ellipse_show","title":"Elipse / Círculo"},
+{"id":"tool_text","title":"Texto"},
+{"id":"tool_path","title":"Área"},
+{"id":"tool_image","title":"Imagem"},
+{"id":"tool_zoom","title":"Zoom"},
+{"id":"zoom","title":"Alterar o zoom"},
+{"id":"fill_color","title":"Cor do preenchimento"},
+{"id":"stroke_color","title":"Cor do contorno"},
+{"id":"stroke_width","title":"Alterar a largura do contorno"},
+{"id":"stroke_style","title":"Alterar o estilo do contorno"},
+{"id":"palette","title":"Clique para mudar a cor do preenchimento, Shift + Clique para mudar a cor do contorno"},
+{"id":"tool_square","title":"Quadrado"},
+{"id":"tool_rect","title":"Retângulo"},
+{"id":"tool_fhrect","title":"Retangulo à mão-livre"},
+{"id":"tool_circle","title":"Circle"},
+{"id":"tool_ellipse","title":"Elipse"},
+{"id":"tool_fhellipse","title":"Elipse à mão-livre"},
+{"id":"bkgnd_color","title":"Mudar a cor de fundo / opacidade"},
+{"id":"rwidthLabel","textContent":"largura:"},
+{"id":"rheightLabel","textContent":"altura:"},
+{"id":"cornerRadiusLabel","textContent":"Raio:"},
+{"id":"iwidthLabel","textContent":"largura:"},
+{"id":"iheightLabel","textContent":"altura:"},
+{"id":"svginfo_width","textContent":"Largura:"},
+{"id":"svginfo_height","textContent":"Altura:"},
+{"id":"angleLabel","textContent":"ângulo:"},
+{"id":"relativeToLabel","textContent":"em relação ao:"},
+{"id":"zoomLabel","textContent":"zoom:"},
+{"id":"layersLabel","textContent":"Camadas:"},
+{"id":"selectedPredefined","textContent":"Selecionar predefinidos:"},
+{"id":"fitToContent","textContent":"Ajustar ao conteúdo"},
+{"id":"tool_source_save","textContent":"Salvar"},
+{"id":"tool_docprops_save","textContent":"Salvar"},
+{"id":"tool_docprops_cancel","textContent":"Cancelar"},
+{"id":"tool_source_cancel","textContent":"Cancelar"},
+{"id":"fit_to_all","textContent":"Ajustar a todo o conteúdo"},
+{"id":"fit_to_layer_content","textContent":"Ajustar ao conteúdo da camada"},
+{"id":"fit_to_sel","textContent":"Ajustar à seleção"},
+{"id":"fit_to_canvas","textContent":"Ajustar à tela"},
+{"id":"selected_objects","textContent":"objetos selecionados"},
+{"id":"largest_object","textContent":"maior objeto"},
+{"id":"smallest_object","textContent":"menor objeto"},
+{"id":"page","textContent":"Página"},
+{"id":"fill_tool_bottom","textContent":"Preenchimento:"},
+{"id":"stroke_tool_bottom","textContent":"Contorno:"},
+{"id":"path_node_x","title":"Coordenada do ponto x"},
+{"id":"path_node_y","title":"Coordenada do ponto y"},
+{"id":"seg_type","title":"Mudar Tipo de segmento"},
+{"id":"straight_segments","textContent":"Reta"},
+{"id":"curve_segments","textContent":"Curva"},
+{"id":"tool_node_clone","title":"Duplicar ponto"},
+{"id":"tool_node_delete","title":"Deletar ponto"},
+{"id":"selLayerLabel","textContent":"Mover elementos para:"},
+{"id":"selLayerNames","title":"Mover elementos selecionados para outra camada"},
+{"id":"sidepanel_handle","title":"Arraste para os lados para alterar a largura","textContent":"C a m a d a s"},
+{"id":"tool_wireframe","title":"Modo Somente Contornos"},
+{"id":"svginfo_image_props","textContent":"Propriedades da Imagem"},
+{"id":"svginfo_title","textContent":"Título"},
+{"id":"svginfo_dim","textContent":"Dimensões"},
+{"id":"includedImages","textContent":"Imagens incluídas"},
+{"id":"image_opt_embed","textContent":"Embutir dados (arquivos locais)"},
+{"id":"image_opt_ref","textContent":"Usar referência a arquivo"},
+{"id":"svginfo_editor_prefs","textContent":"Preferências"},
+{"id":"svginfo_lang","textContent":"Idioma"},
+{"id":"svginfo_change_background","textContent":"Mudar fundo"},
+{"id":"svginfo_bg_note","textContent":"Aviso: Fundo não será salvo com a imagem."},
+{"id":"svginfo_icons","textContent":"Tamanho do ícone"},
+{"id":"icon_small","textContent":"Pequeno"},
+{"id":"icon_medium","textContent":"Medio"},
+{"id":"icon_large","textContent":"Grande"},
+{"id":"icon_xlarge","textContent":"Extra"},
+{"id":"selected_x","title":"Mudar coodenada x"},
+{"id":"selected_y","title":"Mudar coodenada y"},
+{"id":"tool_topath","title":"Mudar para Área"},
+{"id":"tool_reorient","title":"Reorientar Área"},
+{"id":"tool_node_link","title":"Alinhar ponto de controle da curva"},
+{"js_strings": {
+ "invalidAttrValGiven":"Valor inválido",
+ "noContentToFitTo":"Sem conteúdo",
+ 'layer':"Camada",
+ "dupeLayerName":"Já existe uma camada com esse nome",
+ "enterUniqueLayerName":"Por favor, insira um nome único",
+ "enterNewLayerName":"Por favor, insira o nome da nova camada",
+ "layerHasThatName":"A camada já possui este nome",
+ "QmoveElemsToLayer":"Mover os elementos selecionados para a camada: '%s'?",
+ "QwantToClear":"Deseja apagar o desenho?\nIsso também vai limpar o histórico!",
+ "QerrorsRevertToSource":"Foram encontrados erros no seu código SVG.\nVoltar para o código SVG original?",
+ "QignoreSourceChanges":"Ignorar mudanças no código SVG?",
+ "featNotSupported":"Recurso não suportado",
+ "enterNewImgURL":"Insirao caminho URL da imagem",
+ "ok":"Ok",
+ "cancel":"Cancelar",
+ "pathNodeTooltip":"Arraste o ponto para move-lo. \nDuplo-click para mudar o tipo de segmento (Reta / Curva)",
+ "pathCtrlPtTooltip":"Arraste ponto de controle da curva para alterar suas propriedades",
+ "key_up":"seta pra cima",
+ "key_down":"seta pra baixo",
+ "key_backspace":"backspace",
+ "key_del":"delete"
+ }
+}
+]
diff --git a/files_svgedit/js/locale/lang.pt-PT.js b/files_svgedit/js/locale/lang.pt-PT.js
new file mode 100644
index 000000000..7ac35fd4c
--- /dev/null
+++ b/files_svgedit/js/locale/lang.pt-PT.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Alinhar em relação a ..."},
+{"id": "bkgnd_color", "title": "Mudar a cor de fundo / opacidade"},
+{"id": "circle_cx", "title": "Cx Mudar círculo de coordenadas"},
+{"id": "circle_cy", "title": "Círculo Mudança cy coordenar"},
+{"id": "circle_r", "title": "Alterar círculo de raio"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Alterar Corner Rectangle Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Alterar elipse cx coordenar"},
+{"id": "ellipse_cy", "title": "Elipse Mudança cy coordenar"},
+{"id": "ellipse_rx", "title": "Raio X Change elipse"},
+{"id": "ellipse_ry", "title": "Raio y Change elipse"},
+{"id": "fill_color", "title": "Alterar a cor de preenchimento"},
+{"id": "fitToContent", "textContent": "Ajustar ao conteúdo"},
+{"id": "fit_to_all", "textContent": "Ajustar a todo o conteúdo"},
+{"id": "fit_to_canvas", "textContent": "Ajustar à tela"},
+{"id": "fit_to_layer_content", "textContent": "Ajustar o conteúdo da camada de"},
+{"id": "fit_to_sel", "textContent": "Ajustar à selecção"},
+{"id": "font_family", "title": "Alterar fonte Família"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Alterar altura da imagem"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Alterar URL"},
+{"id": "image_width", "title": "Alterar a largura da imagem"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "maior objeto"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move camada para baixo"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Camadas:"},
+{"id": "line_x1", "title": "Altere a linha de partida coordenada x"},
+{"id": "line_x2", "title": "Altere a linha está terminando coordenada x"},
+{"id": "line_y1", "title": "Mudança na linha de partida coordenada y"},
+{"id": "line_y2", "title": "Mudança de linha está terminando coordenada y"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Página"},
+{"id": "palette", "title": "Clique para mudar a cor de preenchimento, shift-clique para mudar a cor do curso"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Alterar altura do retângulo"},
+{"id": "rect_width_tool", "title": "Alterar a largura retângulo"},
+{"id": "relativeToLabel", "textContent": "em relação ao:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Selecione predefinidos:"},
+{"id": "selected_objects", "textContent": "objetos eleitos"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "menor objeto"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Mudar a cor do curso"},
+{"id": "stroke_style", "title": "Alterar o estilo do traço do curso"},
+{"id": "stroke_width", "title": "Alterar a largura do curso"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Altura:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Largura:"},
+{"id": "text", "title": "Alterar o conteúdo de texto"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Alinhar ao centro"},
+{"id": "tool_alignleft", "title": "Alinhar à Esquerda"},
+{"id": "tool_alignmiddle", "title": "Alinhar Médio"},
+{"id": "tool_alignright", "title": "Alinhar à Direita"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Alterar o ângulo de rotação"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "Nova Imagem"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Elementos Clone"},
+{"id": "tool_delete", "title": "Excluir Elemento"},
+{"id": "tool_delete_multi", "title": "Eliminar elementos selecionados"},
+{"id": "tool_docprops", "textContent": "Propriedades do Documento"},
+{"id": "tool_docprops_cancel", "textContent": "Cancelar"},
+{"id": "tool_docprops_save", "textContent": "Salvar"},
+{"id": "tool_ellipse", "title": "Elipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Ferramenta Lápis"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Alterar tamanho de letra"},
+{"id": "tool_group", "title": "Elementos do Grupo"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Texto em itálico"},
+{"id": "tool_line", "title": "Ferramenta Linha"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Mude a opacidade item selecionado"},
+{"id": "tool_open", "textContent": "Abrir Imagem"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Retângulo"},
+{"id": "tool_redo", "title": "Refazer"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Salvar Imagem"},
+{"id": "tool_select", "title": "Selecione a ferramenta"},
+{"id": "tool_source", "title": "Fonte Editar"},
+{"id": "tool_source_cancel", "textContent": "Cancelar"},
+{"id": "tool_source_save", "textContent": "Salvar"},
+{"id": "tool_square", "title": "Quadrado"},
+{"id": "tool_text", "title": "Ferramenta de Texto"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Desfazer"},
+{"id": "tool_ungroup", "title": "Elementos Desagrupar"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Alterar o nível de zoom"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ro.js b/files_svgedit/js/locale/lang.ro.js
new file mode 100644
index 000000000..fedffce74
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ro.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Alinierea în raport cu ..."},
+{"id": "bkgnd_color", "title": "Schimbare culoare de fundal / opacitate"},
+{"id": "circle_cx", "title": "Schimbarea coordonatei CX a cercului"},
+{"id": "circle_cy", "title": "Schimbarea coordonatei CY a cercului"},
+{"id": "circle_r", "title": "Schimbarea razei cercului"},
+{"id": "connector_no_arrow", "textContent": "Fără Săgeată"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Schimbarea Razei Colţului Dreptunghiului"},
+{"id": "curve_segments", "textContent": "Curv"},
+{"id": "ellipse_cx", "title": "Schimbarea coordonatei CX a elipsei"},
+{"id": "ellipse_cy", "title": "Schimbarea coordonatei CY a elipsei"},
+{"id": "ellipse_rx", "title": "Schimbarea razei elipsei X"},
+{"id": "ellipse_ry", "title": "Schimbarea razei elipsei Y"},
+{"id": "fill_color", "title": "Schimbarea culorii de umplere"},
+{"id": "fitToContent", "textContent": "Dimensionare la Conţinut"},
+{"id": "fit_to_all", "textContent": "Potrivire la tot conţinutul"},
+{"id": "fit_to_canvas", "textContent": "Potrivire la Şevalet"},
+{"id": "fit_to_layer_content", "textContent": "Potrivire la conţinutul stratului"},
+{"id": "fit_to_sel", "textContent": "Potrivire la selecţie"},
+{"id": "font_family", "title": "Modificare familie de Fonturi"},
+{"id": "icon_large", "textContent": "Mari"},
+{"id": "icon_medium", "textContent": "Medii"},
+{"id": "icon_small", "textContent": "Mici"},
+{"id": "icon_xlarge", "textContent": "Foarte Mari"},
+{"id": "image_height", "title": "Schimbarea Înălţimii imaginii"},
+{"id": "image_opt_embed", "textContent": "Includeţi Datele (fisiere locale)"},
+{"id": "image_opt_ref", "textContent": "Foloseste referinte la fisiere"},
+{"id": "image_url", "title": "Schimbaţi URL-ul"},
+{"id": "image_width", "title": "Schimbarea Lăţimii imaginii"},
+{"id": "includedImages", "textContent": "Imaginile Incluse"},
+{"id": "largest_object", "textContent": "cel mai mare obiect"},
+{"id": "layer_delete", "title": "Ştergeţi Strat"},
+{"id": "layer_down", "title": "Mutare Strat în Jos"},
+{"id": "layer_new", "title": "Strat Nou"},
+{"id": "layer_rename", "title": "Redenumiţi Strat"},
+{"id": "layer_up", "title": "Mutare Strat în Sus"},
+{"id": "layersLabel", "textContent": "Straturi:"},
+{"id": "line_x1", "title": "Schimbare coordonatei x a punctului de start"},
+{"id": "line_x2", "title": "Schimbare coordonatei x a punctului final"},
+{"id": "line_y1", "title": "Schimbare coordonatei y a punctului de start"},
+{"id": "line_y2", "title": "Schimbare coordonatei y a punctului final"},
+{"id": "linecap_butt", "title": "Capat de linie: Butuc"},
+{"id": "linecap_round", "title": "Capat de linie: Rotund"},
+{"id": "linecap_square", "title": "Capat de linie: Patrat"},
+{"id": "linejoin_bevel", "title": "Articulatia liniei: Tesita"},
+{"id": "linejoin_miter", "title": "Articulatia liniei: Unghi ascutit"},
+{"id": "linejoin_round", "title": "Articulatia liniei: Rotunda"},
+{"id": "main_icon", "title": "Menu Principal"},
+{"id": "mode_connect", "title": "Conectati doua obiecte"},
+{"id": "page", "textContent": "de start"},
+{"id": "palette", "title": "Faceţi clic a schimba culoare de umplere, Shift-click pentru a schimba culoarea de contur"},
+{"id": "path_node_x", "title": "Schimba coordonata x a punctului"},
+{"id": "path_node_y", "title": "Schimba coordonata x a punctului"},
+{"id": "rect_height_tool", "title": "Schimbarea înălţimii dreptunghiului"},
+{"id": "rect_width_tool", "title": "Schimbarea lăţimii dreptunghiului"},
+{"id": "relativeToLabel", "textContent": "în raport cu:"},
+{"id": "seg_type", "title": "Schimba tipul de segment"},
+{"id": "selLayerLabel", "textContent": "Muta elemente la:"},
+{"id": "selLayerNames", "title": "Muta elementele selectate pe un alt strat"},
+{"id": "selectedPredefined", "textContent": "Selecţii predefinite:"},
+{"id": "selected_objects", "textContent": "obiectele alese"},
+{"id": "selected_x", "title": "Schimba coordonata X"},
+{"id": "selected_y", "title": "Schimba coordonata Y"},
+{"id": "smallest_object", "textContent": "cel mai mic obiect"},
+{"id": "straight_segments", "textContent": "Drept"},
+{"id": "stroke_color", "title": "Schimbarea culorii de contur"},
+{"id": "stroke_style", "title": "Schimbarea stilului de contur"},
+{"id": "stroke_width", "title": "Schimbarea lăţime de contur"},
+{"id": "svginfo_bg_note", "textContent": "Nota: Fondul nu va fi salvat cu imaginea."},
+{"id": "svginfo_change_background", "textContent": "Fondul Editorului"},
+{"id": "svginfo_dim", "textContent": "Dimensiunile Sevaletuui"},
+{"id": "svginfo_editor_prefs", "textContent": "Preferintele Editorului"},
+{"id": "svginfo_height", "textContent": "Înălţime:"},
+{"id": "svginfo_icons", "textContent": "Dimensiunile Butoanelor"},
+{"id": "svginfo_image_props", "textContent": "Proprietaţile Imaginii"},
+{"id": "svginfo_lang", "textContent": "Limba"},
+{"id": "svginfo_title", "textContent": "Titlul"},
+{"id": "svginfo_width", "textContent": "Lăţime:"},
+{"id": "text", "title": "Schimbarea Conţinutului textului"},
+{"id": "toggle_stroke_tools", "title": "Aratati/ascundeti mai multe unelte de contur"},
+{"id": "tool_add_subpath", "title": "Adaugati sub-traiectorie"},
+{"id": "tool_alignbottom", "title": "Alinierea jos"},
+{"id": "tool_aligncenter", "title": "Aliniere la centru"},
+{"id": "tool_alignleft", "title": "Aliniere la stânga"},
+{"id": "tool_alignmiddle", "title": "Aliniere la mijloc"},
+{"id": "tool_alignright", "title": "Aliniere la dreapta"},
+{"id": "tool_aligntop", "title": "Alinierea sus"},
+{"id": "tool_angle", "title": "Schimbarea unghiul de rotatie"},
+{"id": "tool_blur", "title": "Schimbarea valorii estomparii gaussiene"},
+{"id": "tool_bold", "title": "Text Îngroşat"},
+{"id": "tool_circle", "title": "Cerc"},
+{"id": "tool_clear", "textContent": "Imagine nouă"},
+{"id": "tool_clone", "title": "Clonare Element"},
+{"id": "tool_clone_multi", "title": "Clonare Elemente"},
+{"id": "tool_delete", "title": "Şterge Element"},
+{"id": "tool_delete_multi", "title": "Ştergeţi Elementele selectate"},
+{"id": "tool_docprops", "textContent": "Propertile Documentului"},
+{"id": "tool_docprops_cancel", "textContent": "Anulaţi"},
+{"id": "tool_docprops_save", "textContent": "Ok"},
+{"id": "tool_ellipse", "title": "Elipsă"},
+{"id": "tool_export", "textContent": "Exportare ca şi PNG"},
+{"id": "tool_eyedropper", "title": "Unealta de Eye Dropper"},
+{"id": "tool_fhellipse", "title": "Elipsă cu mana-libera"},
+{"id": "tool_fhpath", "title": "Unealta de Traiectorie"},
+{"id": "tool_fhrect", "title": "Dreptunghi cu mana-libera"},
+{"id": "tool_font_size", "title": "Schimbă dimensiunea fontului"},
+{"id": "tool_group", "title": "Grupare Elemente"},
+{"id": "tool_image", "title": "Unealta de Imagine"},
+{"id": "tool_import", "textContent": "Importare SVG"},
+{"id": "tool_italic", "title": "Text Înclinat"},
+{"id": "tool_line", "title": "Unealta de Linie"},
+{"id": "tool_move_bottom", "title": "Mutare în jos"},
+{"id": "tool_move_top", "title": "Mutare în sus"},
+{"id": "tool_node_clone", "title": "Cloneaza Punct"},
+{"id": "tool_node_delete", "title": "Sterge Punct"},
+{"id": "tool_node_link", "title": "Uneste Punctele de Control"},
+{"id": "tool_opacity", "title": "Schimbarea selectat opacitate element"},
+{"id": "tool_open", "textContent": "Imagine deschisă"},
+{"id": "tool_path", "title": "Unealta de Path"},
+{"id": "tool_rect", "title": "Dreptunghi"},
+{"id": "tool_redo", "title": "Refacere"},
+{"id": "tool_reorient", "title": "Reorienteaza Traiectoria"},
+{"id": "tool_save", "textContent": "Salvare Imagine"},
+{"id": "tool_select", "title": "Unealta de Selectare"},
+{"id": "tool_source", "title": "Editare Cod Sursa"},
+{"id": "tool_source_cancel", "textContent": "Anulaţi"},
+{"id": "tool_source_save", "textContent": "Folositi Schimbarile"},
+{"id": "tool_square", "title": "Pătrat"},
+{"id": "tool_text", "title": "Unealta de Text"},
+{"id": "tool_topath", "title": "Converteste in Traiectorie"},
+{"id": "tool_undo", "title": "Anulare"},
+{"id": "tool_ungroup", "title": "Anulare Grupare Elemente"},
+{"id": "tool_wireframe", "title": "Mod Schelet"},
+{"id": "tool_zoom", "title": "Unealta de Zoom"},
+{"id": "url_notice", "title": "NOTE: Aceasta imagine nu poate fi inglobata. Va depinde de aceasta traiectorie pentru a fi prezentata."},
+{"id": "zoom_panel", "title": "Schimbarea nivelului de zoom"},
+{"id": "sidepanel_handle", "textContent": "S t r a t u r i", "title": "Trage stanga/dreapta pentru redimensionare panou lateral"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Sunt erori de parsing in sursa SVG.\nRevenire la sursa SVG orginala?",
+ "QignoreSourceChanges": "Ignorati schimbarile la sursa SVG?",
+ "QmoveElemsToLayer": "Mutati elementele selectate pe stratul '%s'?",
+ "QwantToClear": "Doriti sa stergeti desenul?\nAceasta va sterge si posibilitatea de anulare!",
+ "cancel": "Revocare",
+ "defsFailOnSave": "NOTE: Din cauza unei erori in browserul dv., aceasta imagine poate apare gresit (fara gradiente sau elemente). Insa va apare corect dupa salvare.",
+ "dupeLayerName": "Deja exista un strat numis asa!",
+ "enterNewImgURL": "Introduceti noul URL pentru Imagine",
+ "enterNewLayerName": "Rog introduceti un nume pentru strat",
+ "enterUniqueLayerName": "Rog introduceti un nume unic",
+ "exportNoBlur": "Elementele estompate vor apare ne-estompate",
+ "exportNoDashArray": "Contururile vor apare pline",
+ "exportNoImage": "Elementele de imagine nu vor apare",
+ "exportNoText": "Posibil ca textul sa nu apara conform asteptarilor",
+ "exportNoforeignObject": "Elementele foreignObject nu vor apare",
+ "featNotSupported": "Functie neimplementata",
+ "invalidAttrValGiven": "Valoarea data nu este valida",
+ "key_backspace": "backspace",
+ "key_del": "stergere",
+ "key_down": "jos",
+ "key_up": "sus",
+ "layer": "Strat",
+ "layerHasThatName": "Statul deja are acest nume",
+ "loadingImage": "Imaginea se incarca, va rugam asteptati...",
+ "noContentToFitTo": "Fara continut de referinta",
+ "noteTheseIssues": "De asemeni remarcati urmatoarele probleme: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Trage de punctul de control pt. a-i schimba proprietatile",
+ "pathNodeTooltip": "Trage de punct pentru a-l muta. Dublu-clic pentru schimbarea tipului de segment",
+ "saveFromBrowser": "Selecteaza \"Salvea ca si...\" in browserul dv. pt. a salva aceasta imafine ca si fisier %s."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.ru.js b/files_svgedit/js/locale/lang.ru.js
new file mode 100644
index 000000000..f5c9f2146
--- /dev/null
+++ b/files_svgedit/js/locale/lang.ru.js
@@ -0,0 +1,176 @@
+[
+{"id": "align_relative_to", "title": "Выровнять по отношению к ..."},
+{"id": "bkgnd_color", "title": "Изменить цвет фона или прозрачность"},
+{"id": "circle_cx", "title": "Изменить горизонтальный координат (CX) окружности"},
+{"id": "circle_cy", "title": "Изменить вертикальный координат (CY) окружности"},
+{"id": "circle_r", "title": "Изменить радиус окружности"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Изменить радиус скругления углов прямоугольника"},
+{"id": "cornerRadiusLabel", "title": "Радиус закругленности угла"},
+{"id": "curve_segments", "textContent": "Сплайн"},
+{"id": "ellipse_cx", "title": "Изменить горизонтальный координат (CX) эллипса"},
+{"id": "ellipse_cy", "title": "Изменить вертикальный координат (CY) эллипса"},
+{"id": "ellipse_rx", "title": "Изменить горизонтальный радиус эллипса"},
+{"id": "ellipse_ry", "title": "Изменить вертикальный радиус эллипса"},
+{"id": "fill_color", "title": "Изменить цвет заливки"},
+{"id": "fitToContent", "textContent": "Под размер содержимого"},
+{"id": "fit_to_all", "textContent": "Под размер всех слоев"},
+{"id": "fit_to_canvas", "textContent": "Под размер холста"},
+{"id": "fit_to_layer_content", "textContent": "Под размер содержания слоя"},
+{"id": "fit_to_sel", "textContent": "Под размер выделенного"},
+{"id": "font_family", "title": "Изменить семейство шрифтов"},
+{"id": "icon_large", "textContent": "Большие"},
+{"id": "icon_medium", "textContent": "Средние"},
+{"id": "icon_small", "textContent": "Малые"},
+{"id": "icon_xlarge", "textContent": "Огромные"},
+{"id": "image_height", "title": "Изменить высоту изображения"},
+{"id": "image_opt_embed", "textContent": "Локальные файлы"},
+{"id": "image_opt_ref", "textContent": "По ссылкам"},
+{"id": "image_url", "title": "Изменить URL"},
+{"id": "image_width", "title": "Изменить ширину изображения"},
+{"id": "includedImages", "textContent": "Встроенные изображения"},
+{"id": "largest_object", "textContent": "Наибольший объект"},
+{"id": "layer_delete", "title": "Удалить слой"},
+{"id": "layer_down", "title": "Опустить слой"},
+{"id": "layer_new", "title": "Создать слой"},
+{"id": "layer_rename", "title": "Переименовать Слой"},
+{"id": "layer_up", "title": "Поднять слой"},
+{"id": "layersLabel", "textContent": "Слои:"},
+{"id": "line_x1", "title": "Изменить горизонтальный координат X начальной точки линии"},
+{"id": "line_x2", "title": "Изменить горизонтальный координат X конечной точки линии"},
+{"id": "line_y1", "title": "Изменить вертикальный координат Y начальной точки линии"},
+{"id": "line_y2", "title": "Изменить вертикальный координат Y конечной точки линии"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "страница"},
+{"id": "palette", "title": "Нажмите для изменения цвета заливки, Shift-Click изменить цвета обводки"},
+{"id": "path_node_x", "title": "Изменить горизонтальную координату узла"},
+{"id": "path_node_y", "title": "Изменить вертикальную координату узла"},
+{"id": "rect_height_tool", "title": "Изменениe высоту прямоугольника"},
+{"id": "rect_width_tool", "title": "Измененить ширину прямоугольника"},
+{"id": "relativeToLabel", "textContent": "По отношению к "},
+{"id": "seg_type", "title": "Изменить вид"},
+{"id": "selLayerLabel", "textContent": "Переместить выделенные элементы:"},
+{"id": "selLayerNames", "title": "Переместить выделенные элементы на другой слой"},
+{"id": "selectedPredefined", "textContent": "Выбирать предопределенный размер"},
+{"id": "selected_objects", "textContent": "Выделенные объекты"},
+{"id": "selected_x", "title": "Изменить горизонтальный координат"},
+{"id": "selected_y", "title": "Изменить вертикальный координат"},
+{"id": "smallest_object", "textContent": "Самый маленький объект"},
+{"id": "straight_segments", "textContent": "Отрезок"},
+{"id": "stroke_color", "title": "Изменить цвет обводки"},
+{"id": "stroke_style", "title": "Изменить стиль обводки"},
+{"id": "stroke_width", "title": "Изменить толщину обводки"},
+{"id": "svginfo_bg_note", "textContent": "(Фон не сохранится вместе с изображением.)"},
+{"id": "svginfo_change_background", "textContent": "Фон"},
+{"id": "svginfo_dim", "textContent": "Размеры холста"},
+{"id": "svginfo_editor_prefs", "textContent": "Параметры"},
+{"id": "svginfo_height", "textContent": "Высота:"},
+{"id": "svginfo_icons", "textContent": "Размер значков"},
+{"id": "svginfo_image_props", "textContent": "Свойства изображения"},
+{"id": "svginfo_lang", "textContent": "Язык"},
+{"id": "svginfo_title", "textContent": "Название"},
+{"id": "svginfo_width", "textContent": "Ширина:"},
+{"id": "text", "title": "Изменить содержание текста"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Выровнять по нижнему краю"},
+{"id": "tool_aligncenter", "title": "Центрировать по вертикальной оси"},
+{"id": "tool_alignleft", "title": "По левому краю"},
+{"id": "tool_alignmiddle", "title": "Центрировать по горизонтальной оси"},
+{"id": "tool_alignright", "title": "По правому краю"},
+{"id": "tool_aligntop", "title": "Выровнять по верхнему краю"},
+{"id": "tool_angle", "title": "Изменить угол поворота"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Жирный"},
+{"id": "tool_circle", "title": "Окружность"},
+{"id": "tool_clear", "textContent": "Создать изображение"},
+{"id": "tool_clone", "title": "Создать копию элемента"},
+{"id": "tool_clone_multi", "title": "Создать копию элементов"},
+{"id": "tool_delete", "title": "Удалить элемент"},
+{"id": "tool_delete_multi", "title": "Удалить выбранные элементы"},
+{"id": "tool_docprops", "textContent": "Свойства документа"},
+{"id": "tool_docprops_cancel", "textContent": "Отменить"},
+{"id": "tool_docprops_save", "textContent": "Сохранить"},
+{"id": "tool_ellipse", "title": "Эллипс"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Эллипс от руки"},
+{"id": "tool_fhpath", "title": "Карандаш"},
+{"id": "tool_fhrect", "title": "Прямоугольник от руки"},
+{"id": "tool_font_size", "title": "Изменить размер шрифта"},
+{"id": "tool_group", "title": "Создать группу элементов"},
+{"id": "tool_image", "title": "Изображение"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Курсив"},
+{"id": "tool_line", "title": "Линия"},
+{"id": "tool_move_bottom", "title": "Опустить"},
+{"id": "tool_move_top", "title": "Поднять"},
+{"id": "tool_node_clone", "title": "Создать копию узла"},
+{"id": "tool_node_delete", "title": "Удалить узел"},
+{"id": "tool_node_link", "title": "Связать узлы"},
+{"id": "tool_opacity", "title": "Изменить непрозрачность элемента"},
+{"id": "tool_open", "textContent": "Открыть изображение"},
+{"id": "tool_path", "title": "Контуры"},
+{"id": "tool_rect", "title": "Прямоугольник"},
+{"id": "tool_redo", "title": "Вернуть"},
+{"id": "tool_reorient", "title": "Изменить ориентацию контура"},
+{"id": "tool_save", "textContent": "Сохранить изображение"},
+{"id": "tool_select", "title": "Выделить"},
+{"id": "tool_source", "title": "Редактировать исходный код"},
+{"id": "tool_source_cancel", "textContent": "Отменить"},
+{"id": "tool_source_save", "textContent": "Сохранить"},
+{"id": "tool_square", "title": "Квадрат"},
+{"id": "tool_text", "title": "Текст"},
+{"id": "tool_topath", "title": "В контур"},
+{"id": "tool_undo", "title": "Отменить"},
+{"id": "tool_ungroup", "title": "Разгруппировать элементы"},
+{"id": "tool_wireframe", "title": "Каркас"},
+{"id": "tool_zoom", "title": "Лупа"},
+{"id": "tools_ellipse_show", "title": "Эллипс / окружность"},
+{"id": "tools_rect_show", "title": "Прямоугольник / квадрат"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Изменить масштаб"},
+{"id": "sidepanel_handle", "textContent": "С л о и", "title": "Перетащить налево или направо"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Была проблема при парсинге вашего SVG исходного кода.\nЗаменить его предыдущим SVG кодом?",
+ "QignoreSourceChanges": "Забыть без сохранения?",
+ "QmoveElemsToLayer": "Переместить выделенные элементы на слой '%s'?",
+ "QwantToClear": "Вы хотите очистить?\nИстория действий будет забыта!",
+ "cancel": "Отменить",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "Слой с этим именем уже существует.",
+ "enterNewImgURL": "Введите новый URL изображения",
+ "enterNewLayerName": "Пожалуйста, введите новое имя.",
+ "enterUniqueLayerName": "Пожалуйста, введите имя для слоя.",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Возможность не реализована",
+ "invalidAttrValGiven": "Некорректное значение аргумента",
+ "key_backspace": "Backspace",
+ "key_del": "Delete",
+ "key_down": "Вниз",
+ "key_up": "Вверх",
+ "layer": "Слой",
+ "layerHasThatName": "Слой уже называется этим именем.",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "Нет содержания, по которому выровнять.",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Перетащите для изменения свойвст кривой",
+ "pathNodeTooltip": "Потащите узел. Чтобы изменить вид отрезка, сделайте двойной щелчок.",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.sk.js b/files_svgedit/js/locale/lang.sk.js
new file mode 100644
index 000000000..e15b65c2e
--- /dev/null
+++ b/files_svgedit/js/locale/lang.sk.js
@@ -0,0 +1,176 @@
+[
+{"id": "align_relative_to", "title": "Zarovnať relatívne k ..."},
+{"id": "bkgnd_color", "title": "Zmeniť farbu a priehľadnosť pozadia"},
+{"id": "circle_cx", "title": "Zmeniť súradnicu X stredu kružnice"},
+{"id": "circle_cy", "title": "Zmeniť súradnicu Y stredu kružnice"},
+{"id": "circle_r", "title": "Zmeniť polomer kružnice"},
+{"id": "connector_no_arrow", "textContent": "Bez šípok"},
+{"id": "copyrightLabel", "textContent": "Beží na"},
+{"id": "cornerRadiusLabel", "title": "Zmeniť zaoblenie rohov obdĺžnika"},
+{"id": "curve_segments", "textContent": "Krivka"},
+{"id": "ellipse_cx", "title": "Zmeniť súradnicu X stredu elipsy"},
+{"id": "ellipse_cy", "title": "Zmeniť súradnicu Y stredu elipsy"},
+{"id": "ellipse_rx", "title": "Zmeniť polomer X elipsy"},
+{"id": "ellipse_ry", "title": "Zmeniť polomer Y elipsy"},
+{"id": "fill_color", "title": "Zmeniť farbu výplne"},
+{"id": "fitToContent", "textContent": "Prispôsobiť obsahu"},
+{"id": "fit_to_all", "textContent": "Prisposobiť celému obsahu"},
+{"id": "fit_to_canvas", "textContent": "Prispôsobiť stránke"},
+{"id": "fit_to_layer_content", "textContent": "Prispôsobiť obsahu vrstvy"},
+{"id": "fit_to_sel", "textContent": "Prispôsobiť výberu"},
+{"id": "font_family", "title": "Zmeniť font"},
+{"id": "icon_large", "textContent": "Veľká"},
+{"id": "icon_medium", "textContent": "Stredná"},
+{"id": "icon_small", "textContent": "Malá"},
+{"id": "icon_xlarge", "textContent": "Extra veľká"},
+{"id": "idLabel", "title": "Zmeniť ID elementu"},
+{"id": "image_height", "title": "Zmeniť výšku obrázka"},
+{"id": "image_opt_embed", "textContent": "Vložiť data (lokálne súbory)"},
+{"id": "image_opt_ref", "textContent": "Použiť referenciu na súbor"},
+{"id": "image_url", "title": "Zmeniť URL"},
+{"id": "image_width", "title": "Zmeniť šírku obrázka"},
+{"id": "includedImages", "textContent": "Vložené obrázky"},
+{"id": "largest_object", "textContent": "najväčšiemu objektu"},
+{"id": "layer_delete", "title": "Odstrániť vrstvu"},
+{"id": "layer_down", "title": "Presunúť vrstvu dole"},
+{"id": "layer_new", "title": "Nová vrstva"},
+{"id": "layer_rename", "title": "Premenovať vrstvu"},
+{"id": "layer_up", "title": "Presunúť vrstvu hore"},
+{"id": "layersLabel", "textContent": "Vrstvy:"},
+{"id": "line_x1", "title": "Zmeniť počiatočnú súradnicu X čiary"},
+{"id": "line_x2", "title": "Zmeniť koncovú súradnicu X čiary"},
+{"id": "line_y1", "title": "Zmeniť počiatočnú súradnicu Y čiary"},
+{"id": "line_y2", "title": "Zmeniť koncovú súradnicu Y čiary"},
+{"id": "linecap_butt", "title": "Koniec čiary: presný"},
+{"id": "linecap_round", "title": "Koniec čiary: zaoblený"},
+{"id": "linecap_square", "title": "Koniec čiary: so štvorcovým presahom"},
+{"id": "linejoin_bevel", "title": "Napojenie čiar: skosené"},
+{"id": "linejoin_miter", "title": "Napojenie čiar: ostré"},
+{"id": "linejoin_round", "title": "Napojenie čiar: oblé"},
+{"id": "main_icon", "title": "Hlavné menu"},
+{"id": "mode_connect", "title": "Spojiť dva objekty"},
+{"id": "page", "textContent": "stránke"},
+{"id": "palette", "title": "Kliknutím zmeníte farbu výplne, so Shiftom zmeníte farbu obrysu"},
+{"id": "path_node_x", "title": "Zmeniť uzlu súradnicu X"},
+{"id": "path_node_y", "title": "Zmeniť uzlu súradnicu Y"},
+{"id": "rect_height_tool", "title": "Zmena výšku obdĺžnika"},
+{"id": "rect_width_tool", "title": "Zmeniť šírku obdĺžnika"},
+{"id": "relativeToLabel", "textContent": "vzhľadom k:"},
+{"id": "seg_type", "title": "Zmeniť typ segmentu"},
+{"id": "selLayerLabel", "textContent": "Presunút elementy do:"},
+{"id": "selLayerNames", "title": "Presunúť vybrané elementy do inej vrstvy"},
+{"id": "selectedPredefined", "textContent": "Vybrať preddefinovaný:"},
+{"id": "selected_objects", "textContent": "zvoleným objektom"},
+{"id": "selected_x", "title": "Zmeniť súradnicu X"},
+{"id": "selected_y", "title": "Zmeniť súradnicu Y"},
+{"id": "smallest_object", "textContent": "najmenšiemu objektu"},
+{"id": "straight_segments", "textContent": "Rovný"},
+{"id": "stroke_color", "title": "Zmena farby obrysu"},
+{"id": "stroke_style", "title": "Zmeniť štýl obrysu"},
+{"id": "stroke_width", "title": "Zmeniť šírku obrysu"},
+{"id": "svginfo_bg_note", "textContent": "Poznámka: Pozadie nebude uložené spolu s obrázkom."},
+{"id": "svginfo_change_background", "textContent": "Zmeniť pozadie"},
+{"id": "svginfo_dim", "textContent": "Rozmery plátna"},
+{"id": "svginfo_editor_prefs", "textContent": "Vlastnosti editora"},
+{"id": "svginfo_height", "textContent": "Výška:"},
+{"id": "svginfo_icons", "textContent": "Veľkosť ikon"},
+{"id": "svginfo_image_props", "textContent": "Vlastnosti obrázka"},
+{"id": "svginfo_lang", "textContent": "Jazyk"},
+{"id": "svginfo_title", "textContent": "Titulok"},
+{"id": "svginfo_width", "textContent": "Šírka:"},
+{"id": "text", "title": "Změnit text"},
+{"id": "toggle_stroke_tools", "title": "Skryť/ukázať viac nástrojov pre krivku"},
+{"id": "tool_add_subpath", "title": "Pridať daľšiu súčasť krivky"},
+{"id": "tool_alignbottom", "title": "Zarovnať dole"},
+{"id": "tool_aligncenter", "title": "Zarovnať na stred"},
+{"id": "tool_alignleft", "title": "Zarovnať doľava"},
+{"id": "tool_alignmiddle", "title": "Zarovnať na stred"},
+{"id": "tool_alignright", "title": "Zarovnať doprava"},
+{"id": "tool_aligntop", "title": "Zarovnať hore"},
+{"id": "tool_angle", "title": "Zmeniť uhol natočenia"},
+{"id": "tool_blur", "title": "Zmeniť intenzitu rozmazania"},
+{"id": "tool_bold", "title": "Tučne"},
+{"id": "tool_circle", "title": "Kružnica"},
+{"id": "tool_clear", "textContent": "Nový obrázok"},
+{"id": "tool_clone", "title": "Klonovať element"},
+{"id": "tool_clone_multi", "title": "Klonovať elementy"},
+{"id": "tool_delete", "title": "Zmazať element"},
+{"id": "tool_delete_multi", "title": "Vymazať vybrané prvky [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Vlastnosti dokumentu"},
+{"id": "tool_docprops_cancel", "textContent": "Zrušiť"},
+{"id": "tool_docprops_save", "textContent": "Uložiť"},
+{"id": "tool_ellipse", "title": "Elipsa"},
+{"id": "tool_export", "textContent": "Exportovať ako PNG"},
+{"id": "tool_eyedropper", "title": "Pipeta"},
+{"id": "tool_fhellipse", "title": "Elipsa voľnou rukou"},
+{"id": "tool_fhpath", "title": "Ceruzka"},
+{"id": "tool_fhrect", "title": "Obdĺžnik voľnou rukou"},
+{"id": "tool_font_size", "title": "Zmeniť veľkosť písma"},
+{"id": "tool_group", "title": "Zoskupiť elementy"},
+{"id": "tool_image", "title": "Obrázok"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kurzíva"},
+{"id": "tool_line", "title": "Čiara"},
+{"id": "tool_move_bottom", "title": "Presunúť spodok"},
+{"id": "tool_move_top", "title": "Presunúť na vrch"},
+{"id": "tool_node_clone", "title": "Klonovať uzol"},
+{"id": "tool_node_delete", "title": "Zmazať uzol"},
+{"id": "tool_node_link", "title": "Prepojiť kontrolné body"},
+{"id": "tool_opacity", "title": "Zmeniť prehľadnosť vybraných položiek"},
+{"id": "tool_open", "textContent": "Otvoriť obrázok"},
+{"id": "tool_openclose_path", "title": "Otvoriť/uzatvoriť súčasť krivky"},
+{"id": "tool_path", "title": "Krivka"},
+{"id": "tool_position", "title": "Zarovnať element na stránku"},
+{"id": "tool_rect", "title": "Obdĺžnik"},
+{"id": "tool_redo", "title": "Opakovať"},
+{"id": "tool_reorient", "title": "Zmeniť orientáciu krivky"},
+{"id": "tool_save", "textContent": "Uložiť obrázok"},
+{"id": "tool_select", "title": "Výber"},
+{"id": "tool_source", "title": "Upraviť SVG kód"},
+{"id": "tool_source_cancel", "textContent": "Zrušiť"},
+{"id": "tool_source_save", "textContent": "Uložiť"},
+{"id": "tool_square", "title": "Štvorec"},
+{"id": "tool_text", "title": "Text"},
+{"id": "tool_topath", "title": "Previesť na krivku"},
+{"id": "tool_undo", "title": "Späť"},
+{"id": "tool_ungroup", "title": "Zrušiť skupinu"},
+{"id": "tool_wireframe", "title": "Drôtový model"},
+{"id": "tool_zoom", "title": "Priblíženie"},
+{"id": "url_notice", "title": "POZNÁMKA: Tento obrázok nemôže byť vložený. Jeho zobrazenie bude závisieť na jeho ceste"},
+{"id": "zoom_panel", "title": "Zmena priblíženia"},
+{"id": "sidepanel_handle", "textContent": "V r s t v y", "title": "Ťahajte vľavo/vpravo na zmenu veľkosti"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "Chyba pri načítaní SVG dokumentu.\nVrátiť povodný SVG dokument?",
+ "QignoreSourceChanges": "Ignorovať zmeny v SVG dokumente?",
+ "QmoveElemsToLayer": "Presunúť elementy do vrstvy '%s'?",
+ "QwantToClear": "Naozaj chcete vymazať kresbu?\n(História bude taktiež vymazaná!)!",
+ "cancel": "Zrušiť",
+ "defsFailOnSave": "POZNÁMKA: Kvôli chybe v prehliadači sa tento obrázok môže zobraziť nesprávne (napr. chýbajúce prechody či elementy). Po uložení sa zobrazí správne.",
+ "dupeLayerName": "Vrstva s daným názvom už existuje!",
+ "enterNewImgURL": "Zadajte nové URL obrázka",
+ "enterNewLayerName": "Zadajte názov vrstvy",
+ "enterUniqueLayerName": "Zadajte jedinečný názov vrstvy",
+ "exportNoBlur": "bez rozostrenia elementov",
+ "exportNoDashArray": "plné krivky",
+ "exportNoImage": "bez vložených obrázkov",
+ "exportNoText": "vložený text môže vyzerať inak",
+ "exportNoforeignObject": "bez foreignObject objektov",
+ "featNotSupported": "Vlastnosť nie je podporovaná",
+ "invalidAttrValGiven": "Neplatná hodnota",
+ "key_backspace": "Backspace",
+ "key_del": "Delete",
+ "key_down": "šípka dole",
+ "key_up": "šípka hore",
+ "layer": "Vrstva",
+ "layerHasThatName": "Vrstva už má zadaný názov",
+ "loadingImage": "Nahrávam obrázok, prosím čakajte ...",
+ "noContentToFitTo": "Vyberte oblasť na prispôsobenie",
+ "noteTheseIssues": "Môžu sa vyskytnúť nasledujúce problémy: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Ťahajte kontrolné body pre upravnie vlastnosti krivky",
+ "pathNodeTooltip": "Ťahajte bod na presunutie. Dvojklik na zmenu typu segmentu",
+ "saveFromBrowser": "Vyberte \"Uložiť ako ...\" vo vašom prehliadači na uloženie tohoto obrázka do súboru %s."
+ }
+}
+]
diff --git a/files_svgedit/js/locale/lang.sl.js b/files_svgedit/js/locale/lang.sl.js
new file mode 100644
index 000000000..8711df285
--- /dev/null
+++ b/files_svgedit/js/locale/lang.sl.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Poravnaj glede na ..."},
+{"id": "bkgnd_color", "title": "Spreminjanje barve ozadja / motnosti"},
+{"id": "circle_cx", "title": "Spremeni krog&#39;s CX usklajujejo"},
+{"id": "circle_cy", "title": "Spremeni krog&#39;s cy usklajujejo"},
+{"id": "circle_r", "title": "Spremeni krogu polmera"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Spremeni Pravokotnik Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Spremeni elipse&#39;s CX usklajujejo"},
+{"id": "ellipse_cy", "title": "Spremeni elipse&#39;s cy usklajujejo"},
+{"id": "ellipse_rx", "title": "Spremeni elipse&#39;s x polmer"},
+{"id": "ellipse_ry", "title": "Spremeni elipse&#39;s y polmer"},
+{"id": "fill_color", "title": "Spremeni barvo polnila"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Fit na vse vsebine"},
+{"id": "fit_to_canvas", "textContent": "Fit na platno"},
+{"id": "fit_to_layer_content", "textContent": "Fit na plast vsebine"},
+{"id": "fit_to_sel", "textContent": "Fit za izbor"},
+{"id": "font_family", "title": "Change Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Spremeni Višina slike"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Spremeni URL"},
+{"id": "image_width", "title": "Spremeni Širina slike"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "Največji objekt"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move Down Layer"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Up Layer"},
+{"id": "layersLabel", "textContent": "Plasti:"},
+{"id": "line_x1", "title": "Spremeni skladu z začetkom x usklajujejo"},
+{"id": "line_x2", "title": "Change line je končalo x usklajujejo"},
+{"id": "line_y1", "title": "Change line&#39;s začetkom y usklajujejo"},
+{"id": "line_y2", "title": "Change line je končalo y usklajujejo"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "page"},
+{"id": "palette", "title": "Kliknite, če želite spremeniti barvo polnila, premik miške kliknite spremeniti barvo kap"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Spremeni pravokotniku višine"},
+{"id": "rect_width_tool", "title": "Spremeni pravokotnik širine"},
+{"id": "relativeToLabel", "textContent": "glede na:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Select vnaprej:"},
+{"id": "selected_objects", "textContent": "izvoljeni predmeti"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "najmanjša objekt"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Spremeni barvo kap"},
+{"id": "stroke_style", "title": "Spremeni kap dash slog"},
+{"id": "stroke_width", "title": "Spreminjanje širine kap"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Višina:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Širina:"},
+{"id": "text", "title": "Spremeni besedilo vsebino"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Sredino"},
+{"id": "tool_alignleft", "title": "Poravnaj levo"},
+{"id": "tool_alignmiddle", "title": "Poravnava Middle"},
+{"id": "tool_alignright", "title": "Poravnaj desno"},
+{"id": "tool_aligntop", "title": "Poravnava Top"},
+{"id": "tool_angle", "title": "Sprememba kota rotacije"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Izbriši element"},
+{"id": "tool_delete_multi", "title": "Brisanje izbranih elementov"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Prekliči"},
+{"id": "tool_docprops_save", "textContent": "Shraniti"},
+{"id": "tool_ellipse", "title": "Elipsa"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Elipsa"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand pravokotnik"},
+{"id": "tool_font_size", "title": "Spremeni velikost pisave"},
+{"id": "tool_group", "title": "Skupina Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Premakni v Bottom"},
+{"id": "tool_move_top", "title": "Premakni na vrh"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Spremeni izbran predmet motnosti"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Pravokotnik"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Shrani slike"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Edit Vir"},
+{"id": "tool_source_cancel", "textContent": "Prekliči"},
+{"id": "tool_source_save", "textContent": "Shraniti"},
+{"id": "tool_square", "title": "Kvadrat"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Razdruži Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Spreminjanje povečave"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.sq.js b/files_svgedit/js/locale/lang.sq.js
new file mode 100644
index 000000000..0e1ba6594
--- /dev/null
+++ b/files_svgedit/js/locale/lang.sq.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Vendose në lidhje me ..."},
+{"id": "bkgnd_color", "title": "Change color background / patejdukshmëri"},
+{"id": "circle_cx", "title": "Cx rrethi Ndryshimi i bashkërenduar"},
+{"id": "circle_cy", "title": "Ndryshimi i rrethit cy koordinuar"},
+{"id": "circle_r", "title": "Rreze rreth Ndryshimi i"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Ndryshimi Rectangle Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Ndryshimi elips e cx koordinuar"},
+{"id": "ellipse_cy", "title": "Elips cy Ndryshimi i bashkërenduar"},
+{"id": "ellipse_rx", "title": "Rreze x elips Ndryshimi i"},
+{"id": "ellipse_ry", "title": "Radiusi y elips ndërroj"},
+{"id": "fill_color", "title": "Ndryshimi mbush color"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Fit për të gjithë përmbajtjen"},
+{"id": "fit_to_canvas", "textContent": "Fit në kanavacë"},
+{"id": "fit_to_layer_content", "textContent": "Shtresë Fit to content"},
+{"id": "fit_to_sel", "textContent": "Fit to Selection"},
+{"id": "font_family", "title": "Ndryshimi Font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Height të ndryshuar imazhin"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Ndrysho URL"},
+{"id": "image_width", "title": "Ndryshimi image width"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "madh objekt"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move Down Layer"},
+{"id": "layer_new", "title": "Re Shtresa"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Up Layer"},
+{"id": "layersLabel", "textContent": "Shtresa:"},
+{"id": "line_x1", "title": "Shkarko Ndryshimi që fillon x koordinuar"},
+{"id": "line_x2", "title": "Linjë Ndryshimi i fund x koordinuar"},
+{"id": "line_y1", "title": "Shkarko Ndryshimi që fillon y koordinuar"},
+{"id": "line_y2", "title": "Shkarko Ndryshimi i dhënë fund y koordinuar"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "faqe"},
+{"id": "palette", "title": "Klikoni për të ndryshuar mbushur me ngjyra, shift-klikoni për të ndryshuar ngjyrën pash"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Height Ndryshimi drejtkëndësh"},
+{"id": "rect_width_tool", "title": "Width Ndryshimi drejtkëndësh"},
+{"id": "relativeToLabel", "textContent": "lidhje me:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Zgjidhni paracaktuara:"},
+{"id": "selected_objects", "textContent": "objektet e zgjedhur"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "objektit më të vogël"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Change color pash"},
+{"id": "stroke_style", "title": "Ndryshimi dash goditje stil"},
+{"id": "stroke_width", "title": "Ndryshimi goditje width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Lartësia:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Gjerësia:"},
+{"id": "text", "title": "Text contents Ndryshimi"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Align Center"},
+{"id": "tool_alignleft", "title": "Align Left"},
+{"id": "tool_alignmiddle", "title": "Align Mesme"},
+{"id": "tool_alignright", "title": "Align Right"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Kënd Ndryshimi rrotullim"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Rrethi"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Klon Element"},
+{"id": "tool_clone_multi", "title": "Elemente Clone"},
+{"id": "tool_delete", "title": "Fshije Element"},
+{"id": "tool_delete_multi", "title": "Elementet e zgjedhur është dhënë Delete [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Dokumenti Prona"},
+{"id": "tool_docprops_cancel", "textContent": "Anulo"},
+{"id": "tool_docprops_save", "textContent": "Ruaj"},
+{"id": "tool_ellipse", "title": "Elips"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Lëndë Hand Rectangle"},
+{"id": "tool_font_size", "title": "Ndryshimi Font Size"},
+{"id": "tool_group", "title": "Elementet e Grupit"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Ndryshimi zgjedhur errësirë item"},
+{"id": "tool_open", "textContent": "Image Hapur"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Drejtkëndësh"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Image Ruaj"},
+{"id": "tool_select", "title": "Zgjidhni Tool"},
+{"id": "tool_source", "title": "Burimi Edit"},
+{"id": "tool_source_cancel", "textContent": "Anulo"},
+{"id": "tool_source_save", "textContent": "Ruaj"},
+{"id": "tool_square", "title": "Sheshi"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Undo"},
+{"id": "tool_ungroup", "title": "Elemente Ungroup"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Ndryshimi zoom nivel"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.sr.js b/files_svgedit/js/locale/lang.sr.js
new file mode 100644
index 000000000..ebfc6b135
--- /dev/null
+++ b/files_svgedit/js/locale/lang.sr.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Алигн у односу на ..."},
+{"id": "bkgnd_color", "title": "Промена боје позадине / непрозирност"},
+{"id": "circle_cx", "title": "Промена круг&#39;с ЦКС координатни"},
+{"id": "circle_cy", "title": "Промена круг&#39;с ср координатни"},
+{"id": "circle_r", "title": "Промена круга је полупречник"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Промена правоугаоник Кутак радијуса"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Промена елипса ЦКС&#39;с координатни"},
+{"id": "ellipse_cy", "title": "Промена елипса&#39;с ср координатни"},
+{"id": "ellipse_rx", "title": "Промена елипса&#39;с Кс радијуса"},
+{"id": "ellipse_ry", "title": "Промена елипса је радијус Ы"},
+{"id": "fill_color", "title": "Промена боје попуне"},
+{"id": "fitToContent", "textContent": "Стане на садржај"},
+{"id": "fit_to_all", "textContent": "Уклопи у сав садржај"},
+{"id": "fit_to_canvas", "textContent": "Стане на платну"},
+{"id": "fit_to_layer_content", "textContent": "Уклопи у слоју садржај"},
+{"id": "fit_to_sel", "textContent": "Уклопи у избор"},
+{"id": "font_family", "title": "Цханге фонт породицу"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Промени слику висине"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Промените УРЛ адресу"},
+{"id": "image_width", "title": "Промени слику ширине"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "Највећи објекат"},
+{"id": "layer_delete", "title": "Избриши слој"},
+{"id": "layer_down", "title": "Помери слој доле"},
+{"id": "layer_new", "title": "Нови слој"},
+{"id": "layer_rename", "title": "Преименуј слој"},
+{"id": "layer_up", "title": "Помери слој Горе"},
+{"id": "layersLabel", "textContent": "Слојева:"},
+{"id": "line_x1", "title": "Промена линија Стартни кс координата"},
+{"id": "line_x2", "title": "Промена линија је завршетак кс координата"},
+{"id": "line_y1", "title": "Промена линија у координатни почетак Ы"},
+{"id": "line_y2", "title": "Промена линија је Ы координата се завршава"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "страна"},
+{"id": "palette", "title": "Кликните да бисте променили боју попуне, Схифт-кликните да промените боју удар"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Промени правоугаоник висина"},
+{"id": "rect_width_tool", "title": "Промени правоугаоник ширине"},
+{"id": "relativeToLabel", "textContent": "у односу на:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Изаберите унапред дефинисани:"},
+{"id": "selected_objects", "textContent": "изабраних објеката"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "Најмањи објекат"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Промена боје удар"},
+{"id": "stroke_style", "title": "Промена ход Дасх стил"},
+{"id": "stroke_width", "title": "Промена удара ширина"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Висина:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Ширина:"},
+{"id": "text", "title": "Промена садржаја текстуалне"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Поравнај доле"},
+{"id": "tool_aligncenter", "title": "Поравнај по центру"},
+{"id": "tool_alignleft", "title": "Поравнај лево"},
+{"id": "tool_alignmiddle", "title": "Алигн Средњи"},
+{"id": "tool_alignright", "title": "Поравнај десно"},
+{"id": "tool_aligntop", "title": "Поравнајте врх"},
+{"id": "tool_angle", "title": "Промени ротације Угао"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Подебљан текст"},
+{"id": "tool_circle", "title": "Круг"},
+{"id": "tool_clear", "textContent": "Нова слика"},
+{"id": "tool_clone", "title": "Клон Елеменат"},
+{"id": "tool_clone_multi", "title": "Елементи клон"},
+{"id": "tool_delete", "title": "Избриши елемент"},
+{"id": "tool_delete_multi", "title": "Избриши изабране Елементи [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Особине документа"},
+{"id": "tool_docprops_cancel", "textContent": "Откажи"},
+{"id": "tool_docprops_save", "textContent": "Сачувати"},
+{"id": "tool_ellipse", "title": "Елипса"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Фрее-Ручни Елипса"},
+{"id": "tool_fhpath", "title": "Алатка оловка"},
+{"id": "tool_fhrect", "title": "Фрее-Ручни правоугаоник"},
+{"id": "tool_font_size", "title": "Цханге фонт сизе"},
+{"id": "tool_group", "title": "Група Елементи"},
+{"id": "tool_image", "title": "Алатка за слике"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Италиц текст"},
+{"id": "tool_line", "title": "Линија Алат"},
+{"id": "tool_move_bottom", "title": "Премести на доле"},
+{"id": "tool_move_top", "title": "Премести на врх"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Промена изабране ставке непрозирност"},
+{"id": "tool_open", "textContent": "Отвори слике"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Правоугаоник"},
+{"id": "tool_redo", "title": "Редо"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Сачувај слика"},
+{"id": "tool_select", "title": "Изаберите алатку"},
+{"id": "tool_source", "title": "Уреди Извор"},
+{"id": "tool_source_cancel", "textContent": "Откажи"},
+{"id": "tool_source_save", "textContent": "Сачувати"},
+{"id": "tool_square", "title": "Трг"},
+{"id": "tool_text", "title": "Текст Алат"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Поништи"},
+{"id": "tool_ungroup", "title": "Разгрупирање Елементи"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Алатка за зумирање"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Промените ниво зумирања"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.sv.js b/files_svgedit/js/locale/lang.sv.js
new file mode 100644
index 000000000..6c08c1743
--- /dev/null
+++ b/files_svgedit/js/locale/lang.sv.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Justera förhållande till ..."},
+{"id": "bkgnd_color", "title": "Ändra bakgrundsfärg / opacitet"},
+{"id": "circle_cx", "title": "Ändra cirkeln cx samordna"},
+{"id": "circle_cy", "title": "Ändra cirkeln samordna cy"},
+{"id": "circle_r", "title": "Ändra cirkelns radie"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Ändra rektangel hörnradie"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Ändra ellips&#39;s cx samordna"},
+{"id": "ellipse_cy", "title": "Ändra ellips&#39;s samordna cy"},
+{"id": "ellipse_rx", "title": "Ändra ellips&#39;s x radie"},
+{"id": "ellipse_ry", "title": "Ändra ellips&#39;s y radie"},
+{"id": "fill_color", "title": "Ändra fyllningsfärg"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Passar till allt innehåll"},
+{"id": "fit_to_canvas", "textContent": "Anpassa till duk"},
+{"id": "fit_to_layer_content", "textContent": "Anpassa till lager innehåll"},
+{"id": "fit_to_sel", "textContent": "Anpassa till val"},
+{"id": "font_family", "title": "Ändra Typsnitt"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Ändra bildhöjd"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Ändra URL"},
+{"id": "image_width", "title": "Ändra bild bredd"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "största objekt"},
+{"id": "layer_delete", "title": "Radera Layer"},
+{"id": "layer_down", "title": "Flytta Layer Down"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Byt namn på Layer"},
+{"id": "layer_up", "title": "Flytta Layer Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Ändra Lines startar x samordna"},
+{"id": "line_x2", "title": "Ändra Lines slutar x samordna"},
+{"id": "line_y1", "title": "Ändra Lines startar Y-koordinat"},
+{"id": "line_y2", "title": "Ändra Lines slutar Y-koordinat"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "sida"},
+{"id": "palette", "title": "Klicka för att ändra fyllningsfärg, shift-klicka för att ändra färgar"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Ändra rektangel höjd"},
+{"id": "rect_width_tool", "title": "Ändra rektangel bredd"},
+{"id": "relativeToLabel", "textContent": "jämfört:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Välj fördefinierad:"},
+{"id": "selected_objects", "textContent": "valda objekt"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "minsta objektet"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Ändra färgar"},
+{"id": "stroke_style", "title": "Ändra stroke Dash stil"},
+{"id": "stroke_width", "title": "Ändra stroke bredd"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Höjd:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Bredd:"},
+{"id": "text", "title": "Ändra textinnehållet"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Centrera"},
+{"id": "tool_alignleft", "title": "Vänsterjustera"},
+{"id": "tool_alignmiddle", "title": "Justera Middle"},
+{"id": "tool_alignright", "title": "Högerjustera"},
+{"id": "tool_aligntop", "title": "Justera Top"},
+{"id": "tool_angle", "title": "Ändra rotationsvinkel"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Fet text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Radera Element"},
+{"id": "tool_delete_multi", "title": "Radera markerade element [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Dokumentegenskaper"},
+{"id": "tool_docprops_cancel", "textContent": "Avbryt"},
+{"id": "tool_docprops_save", "textContent": "Spara"},
+{"id": "tool_ellipse", "title": "Ellips"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Fri hand Ellipse"},
+{"id": "tool_fhpath", "title": "Pennverktyget"},
+{"id": "tool_fhrect", "title": "Fri hand rektangel"},
+{"id": "tool_font_size", "title": "Ändra textstorlek"},
+{"id": "tool_group", "title": "Group Elements"},
+{"id": "tool_image", "title": "Bildverktyg"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Kursiv text"},
+{"id": "tool_line", "title": "Linjeverktyg"},
+{"id": "tool_move_bottom", "title": "Move to Bottom"},
+{"id": "tool_move_top", "title": "Flytta till början"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Ändra markerat objekt opacitet"},
+{"id": "tool_open", "textContent": "Öppna bild"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Rektangel"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Markeringsverktyget"},
+{"id": "tool_source", "title": "Redigera källa"},
+{"id": "tool_source_cancel", "textContent": "Avbryt"},
+{"id": "tool_source_save", "textContent": "Spara"},
+{"id": "tool_square", "title": "Fyrkant"},
+{"id": "tool_text", "title": "Textverktyg"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Ångra"},
+{"id": "tool_ungroup", "title": "Dela Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoomverktyget"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Ändra zoomnivå"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.sw.js b/files_svgedit/js/locale/lang.sw.js
new file mode 100644
index 000000000..d2f65a98d
--- /dev/null
+++ b/files_svgedit/js/locale/lang.sw.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Align jamaa na ..."},
+{"id": "bkgnd_color", "title": "Change background color / opacity"},
+{"id": "circle_cx", "title": "Change mduara&#39;s CX kuratibu"},
+{"id": "circle_cy", "title": "Change mduara&#39;s cy kuratibu"},
+{"id": "circle_r", "title": "Change mduara&#39;s Radius"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Change Mstatili Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Change ellipse s CX kuratibu"},
+{"id": "ellipse_cy", "title": "Change ellipse s cy kuratibu"},
+{"id": "ellipse_rx", "title": "Change ellipse s x Radius"},
+{"id": "ellipse_ry", "title": "Change ellipse&#39;s y Radius"},
+{"id": "fill_color", "title": "Change kujaza Michezo"},
+{"id": "fitToContent", "textContent": "Waliopo Content"},
+{"id": "fit_to_all", "textContent": "Waliopo all content"},
+{"id": "fit_to_canvas", "textContent": "Wanaofaa Canvas"},
+{"id": "fit_to_layer_content", "textContent": "Waliopo safu content"},
+{"id": "fit_to_sel", "textContent": "Waliopo uteuzi"},
+{"id": "font_family", "title": "Change font Family"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Change image urefu"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Change URL"},
+{"id": "image_width", "title": "Change image width"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "ukubwa object"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "Mpya Layer"},
+{"id": "layer_rename", "title": "Rename Layer"},
+{"id": "layer_up", "title": "Move Layer Up"},
+{"id": "layersLabel", "textContent": "Tabaka:"},
+{"id": "line_x1", "title": "Change Mpya&#39;s mapya x kuratibu"},
+{"id": "line_x2", "title": "Change Mpya&#39;s kuishia x kuratibu"},
+{"id": "line_y1", "title": "Change Mpya&#39;s mapya y kuratibu"},
+{"id": "line_y2", "title": "Change Mpya&#39;s kuishia y kuratibu"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "umebadilisha"},
+{"id": "palette", "title": "Click kubadili kujaza color, skiftarbete-click kubadili kiharusi color"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Change Mstatili height"},
+{"id": "rect_width_tool", "title": "Change Mstatili width"},
+{"id": "relativeToLabel", "textContent": "relativa att:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Select predefined:"},
+{"id": "selected_objects", "textContent": "waliochaguliwa vitu"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "minsta object"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Change kiharusi Michezo"},
+{"id": "stroke_style", "title": "Change kiharusi dash style"},
+{"id": "stroke_width", "title": "Change kiharusi width"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Urefu:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Upana:"},
+{"id": "text", "title": "Change Nakala contents"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Align Center"},
+{"id": "tool_alignleft", "title": "Align Left"},
+{"id": "tool_alignmiddle", "title": "Kati align"},
+{"id": "tool_alignright", "title": "Align Right"},
+{"id": "tool_aligntop", "title": "Align Juu"},
+{"id": "tool_angle", "title": "Change mzunguko vinkel"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Nakala"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "New Image"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Delete Element"},
+{"id": "tool_delete_multi", "title": "Delete Selected Elements [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Cancel"},
+{"id": "tool_docprops_save", "textContent": "Okoa"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Penseli Tool"},
+{"id": "tool_fhrect", "title": "Free-Hand Rectangle"},
+{"id": "tool_font_size", "title": "Change font Size"},
+{"id": "tool_group", "title": "Kikundi Elements"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italiki Nakala"},
+{"id": "tool_line", "title": "Mpya Tool"},
+{"id": "tool_move_bottom", "title": "Kuhama Bottom"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Change selected opacity punkt"},
+{"id": "tool_open", "textContent": "Open Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Mstatili"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Select Tool"},
+{"id": "tool_source", "title": "Edit Lugha"},
+{"id": "tool_source_cancel", "textContent": "Cancel"},
+{"id": "tool_source_save", "textContent": "Save"},
+{"id": "tool_square", "title": "Mraba"},
+{"id": "tool_text", "title": "Nakala Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Tengua"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Change zoom ngazi"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.th.js b/files_svgedit/js/locale/lang.th.js
new file mode 100644
index 000000000..2a01c1885
--- /dev/null
+++ b/files_svgedit/js/locale/lang.th.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "จัดชิดเทียบกับ ..."},
+{"id": "bkgnd_color", "title": "สีพื้นหลังเปลี่ยน / ความทึบ"},
+{"id": "circle_cx", "title": "Cx วงกลมเปลี่ยนของพิกัด"},
+{"id": "circle_cy", "title": "วงกลมเปลี่ยนเป็น cy ประสานงาน"},
+{"id": "circle_r", "title": "รัศมีวงกลมเปลี่ยนเป็น"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "รัศมีเปลี่ยนสี่เหลี่ยมผืนผ้า Corner"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "เปลี่ยน ellipse ของ cx ประสานงาน"},
+{"id": "ellipse_cy", "title": "Ellipse เปลี่ยนของ cy ประสานงาน"},
+{"id": "ellipse_rx", "title": "Ellipse เปลี่ยนของรัศมี x"},
+{"id": "ellipse_ry", "title": "Ellipse เปลี่ยนของรัศมี y"},
+{"id": "fill_color", "title": "เปลี่ยนใส่สี"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "พอดีกับเนื้อหาทั้งหมด"},
+{"id": "fit_to_canvas", "textContent": "เหมาะสมในการผ้าใบ"},
+{"id": "fit_to_layer_content", "textContent": "พอดีเนื้อหาชั้นที่"},
+{"id": "fit_to_sel", "textContent": "เหมาะสมในการเลือก"},
+{"id": "font_family", "title": "ครอบครัว Change Font"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "ความสูงเปลี่ยนรูปภาพ"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "URL เปลี่ยน"},
+{"id": "image_width", "title": "ความกว้างเปลี่ยนรูปภาพ"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "ที่ใหญ่ที่สุดในวัตถุ"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "ย้าย Layer ลง"},
+{"id": "layer_new", "title": "Layer ใหม่"},
+{"id": "layer_rename", "title": "Layer เปลี่ยนชื่อ"},
+{"id": "layer_up", "title": "ย้าย Layer Up"},
+{"id": "layersLabel", "textContent": "ชั้น:"},
+{"id": "line_x1", "title": "สายเปลี่ยนเป็นเริ่มต้น x พิกัด"},
+{"id": "line_x2", "title": "สายเปลี่ยนเป็นสิ้นสุด x พิกัด"},
+{"id": "line_y1", "title": "สายเปลี่ยนเป็นเริ่มต้น y พิกัด"},
+{"id": "line_y2", "title": "สายเปลี่ยนเป็นสิ้นสุด y พิกัด"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "หน้า"},
+{"id": "palette", "title": "คลิกเพื่อเปลี่ยนใส่สีกะคลิกเปลี่ยนสีจังหวะ"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "ความสูงสี่เหลี่ยมผืนผ้าเปลี่ยน"},
+{"id": "rect_width_tool", "title": "ความกว้างสี่เหลี่ยมผืนผ้าเปลี่ยน"},
+{"id": "relativeToLabel", "textContent": "เทียบกับ:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "เลือกที่กำหนดไว้ล่วงหน้า:"},
+{"id": "selected_objects", "textContent": "วัตถุเลือกตั้ง"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "วัตถุที่เล็กที่สุด"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "สีจังหวะเปลี่ยน"},
+{"id": "stroke_style", "title": "รีบเปลี่ยนสไตล์จังหวะ"},
+{"id": "stroke_width", "title": "ความกว้างจังหวะเปลี่ยน"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "ความสูง:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "ความกว้าง:"},
+{"id": "text", "title": "เปลี่ยนเนื้อหาข้อความ"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "ด้านล่างชิด"},
+{"id": "tool_aligncenter", "title": "จัดแนวกึ่งกลาง"},
+{"id": "tool_alignleft", "title": "จัดชิดซ้าย"},
+{"id": "tool_alignmiddle", "title": "กลางชิด"},
+{"id": "tool_alignright", "title": "จัดชิดขวา"},
+{"id": "tool_aligntop", "title": "ด้านบนชิด"},
+{"id": "tool_angle", "title": "มุมหมุนเปลี่ยน"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "ข้อความตัวหนา"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "รูปภาพใหม่"},
+{"id": "tool_clone", "title": "องค์ประกอบโคลน"},
+{"id": "tool_clone_multi", "title": "องค์ประกอบโคลน"},
+{"id": "tool_delete", "title": "องค์ประกอบลบ"},
+{"id": "tool_delete_multi", "title": "องค์ประกอบที่เลือกลบ"},
+{"id": "tool_docprops", "textContent": "คุณสมบัติของเอกสาร"},
+{"id": "tool_docprops_cancel", "textContent": "ยกเลิก"},
+{"id": "tool_docprops_save", "textContent": "บันทึก"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Ellipse Free-Hand"},
+{"id": "tool_fhpath", "title": "เครื่องมือดินสอ"},
+{"id": "tool_fhrect", "title": "สี่เหลี่ยมผืนผ้า Free-Hand"},
+{"id": "tool_font_size", "title": "เปลี่ยนขนาดตัวอักษร"},
+{"id": "tool_group", "title": "องค์ประกอบของกลุ่ม"},
+{"id": "tool_image", "title": "เครื่องมือ Image"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "ข้อความตัวเอียง"},
+{"id": "tool_line", "title": "เครื่องมือ Line"},
+{"id": "tool_move_bottom", "title": "ย้ายไปด้านล่าง"},
+{"id": "tool_move_top", "title": "ย้ายไปด้านบน"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "เปลี่ยนความทึบเลือกรายการ"},
+{"id": "tool_open", "textContent": "ภาพเปิด"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "สี่เหลี่ยมผืนผ้า"},
+{"id": "tool_redo", "title": "ทำซ้ำ"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "บันทึกรูปภาพ"},
+{"id": "tool_select", "title": "เครื่องมือเลือก"},
+{"id": "tool_source", "title": "แหล่งที่มาแก้ไข"},
+{"id": "tool_source_cancel", "textContent": "ยกเลิก"},
+{"id": "tool_source_save", "textContent": "บันทึก"},
+{"id": "tool_square", "title": "สี่เหลี่ยม"},
+{"id": "tool_text", "title": "เครื่องมือ Text"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "เลิก"},
+{"id": "tool_ungroup", "title": "องค์ประกอบ Ungroup"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "เครื่องมือซูม"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "เปลี่ยนระดับการซูม"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.tl.js b/files_svgedit/js/locale/lang.tl.js
new file mode 100644
index 000000000..d81762d0b
--- /dev/null
+++ b/files_svgedit/js/locale/lang.tl.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Pantayin sa kamag-anak sa ..."},
+{"id": "bkgnd_color", "title": "Baguhin ang kulay ng background / kalabuan"},
+{"id": "circle_cx", "title": "Cx Baguhin ang bilog&#39;s coordinate"},
+{"id": "circle_cy", "title": "Baguhin ang bilog&#39;s cy coordinate"},
+{"id": "circle_r", "title": "Baguhin ang radius ng bilog"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Baguhin ang Parihaba Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Baguhin ang tambilugan&#39;s cx-ugma"},
+{"id": "ellipse_cy", "title": "Baguhin ang tambilugan&#39;s cy coordinate"},
+{"id": "ellipse_rx", "title": "X radius Baguhin ang tambilugan&#39;s"},
+{"id": "ellipse_ry", "title": "Y radius Baguhin ang tambilugan&#39;s"},
+{"id": "fill_color", "title": "Baguhin ang punuin ng kulay"},
+{"id": "fitToContent", "textContent": "Pagkasyahin sa Nilalaman"},
+{"id": "fit_to_all", "textContent": "Pagkasyahin sa lahat ng mga nilalaman"},
+{"id": "fit_to_canvas", "textContent": "Pagkasyahin sa tolda"},
+{"id": "fit_to_layer_content", "textContent": "Pagkasyahin sa layer nilalaman"},
+{"id": "fit_to_sel", "textContent": "Pagkasyahin sa pagpili"},
+{"id": "font_family", "title": "Baguhin ang Pamilya ng Font"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Baguhin ang taas ng imahe"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Baguhin ang URL"},
+{"id": "image_width", "title": "Baguhin ang lapad ng imahe"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "pinakamalaking bagay"},
+{"id": "layer_delete", "title": "Tanggalin Layer"},
+{"id": "layer_down", "title": "Ilipat Layer Down"},
+{"id": "layer_new", "title": "Bagong Layer"},
+{"id": "layer_rename", "title": "Palitan ang pangalan ng Layer"},
+{"id": "layer_up", "title": "Ilipat Layer Up"},
+{"id": "layersLabel", "textContent": "Layers:"},
+{"id": "line_x1", "title": "Baguhin ang linya ng simula x coordinate"},
+{"id": "line_x2", "title": "Baguhin ang linya ay nagtatapos x coordinate"},
+{"id": "line_y1", "title": "Baguhin ang linya ng simula y coordinate"},
+{"id": "line_y2", "title": "Baguhin ang linya ay nagtatapos y coordinate"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "pahina"},
+{"id": "palette", "title": "I-click upang baguhin ang punan ang kulay, paglilipat-click upang baguhin ang paghampas ng kulay"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Baguhin ang rektanggulo taas"},
+{"id": "rect_width_tool", "title": "Baguhin ang rektanggulo lapad"},
+{"id": "relativeToLabel", "textContent": "kamag-anak sa:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Piliin ang paunang-natukoy na:"},
+{"id": "selected_objects", "textContent": "inihalal na mga bagay"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "pinakamaliit na bagay"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Baguhin ang kulay ng paghampas"},
+{"id": "stroke_style", "title": "Baguhin ang stroke pagsugod estilo"},
+{"id": "stroke_width", "title": "Baguhin ang stroke lapad"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Tangkad:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Lapad:"},
+{"id": "text", "title": "Baguhin ang mga nilalaman ng teksto"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Pantayin sa Ibaba"},
+{"id": "tool_aligncenter", "title": "Pantayin sa Gitna"},
+{"id": "tool_alignleft", "title": "Pantayin ang Kaliwa"},
+{"id": "tool_alignmiddle", "title": "Pantayin sa Gitnang"},
+{"id": "tool_alignright", "title": "Pantayin sa Kanan"},
+{"id": "tool_aligntop", "title": "Pantayin Top"},
+{"id": "tool_angle", "title": "Baguhin ang pag-ikot anggulo"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "Bagong Imahe"},
+{"id": "tool_clone", "title": "I-clone ang Sangkap"},
+{"id": "tool_clone_multi", "title": "I-clone ang mga Sangkap"},
+{"id": "tool_delete", "title": "Burahin ang Sangkap"},
+{"id": "tool_delete_multi", "title": "Tanggalin Napiling Mga Sangkap [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Document Katangian"},
+{"id": "tool_docprops_cancel", "textContent": "I-cancel"},
+{"id": "tool_docprops_save", "textContent": "I-save"},
+{"id": "tool_ellipse", "title": "Tambilugan"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Libreng-kamay tambilugan"},
+{"id": "tool_fhpath", "title": "Kasangkapan ng lapis"},
+{"id": "tool_fhrect", "title": "Libreng-kamay Parihaba"},
+{"id": "tool_font_size", "title": "Baguhin ang Laki ng Font"},
+{"id": "tool_group", "title": "Group Sangkap"},
+{"id": "tool_image", "title": "Image Kasangkapan"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Kasangkapan"},
+{"id": "tool_move_bottom", "title": "Ilipat sa Ibaba"},
+{"id": "tool_move_top", "title": "Ilipat sa Tuktok"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Palitan ang mga napiling bagay kalabuan"},
+{"id": "tool_open", "textContent": "Buksan ang Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Parihaba"},
+{"id": "tool_redo", "title": "Gawin muli"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "I-save ang Image"},
+{"id": "tool_select", "title": "Piliin ang Tool"},
+{"id": "tool_source", "title": "I-edit ang Source"},
+{"id": "tool_source_cancel", "textContent": "I-cancel"},
+{"id": "tool_source_save", "textContent": "I-save"},
+{"id": "tool_square", "title": "Parisukat"},
+{"id": "tool_text", "title": "Text Kasangkapan"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Bawiin"},
+{"id": "tool_ungroup", "title": "Ungroup Sangkap"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Mag-zoom Kasangkapan"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Baguhin ang antas ng zoom"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.tr.js b/files_svgedit/js/locale/lang.tr.js
new file mode 100644
index 000000000..ce6ab6bc0
--- /dev/null
+++ b/files_svgedit/js/locale/lang.tr.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Align göre ..."},
+{"id": "bkgnd_color", "title": "Arka plan rengini değiştirmek / opacity"},
+{"id": "circle_cx", "title": "Değiştirmek daire&#39;s cx koordine"},
+{"id": "circle_cy", "title": "Değiştirmek daire cy koordine&#39;s"},
+{"id": "circle_r", "title": "Değiştirmek daire yarıçapı"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Değiştirmek Dikdörtgen Köşe Yarıçap"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "&#39;s Koordine cx elips Girişi"},
+{"id": "ellipse_cy", "title": "Değiştirmek elips cy koordine&#39;s"},
+{"id": "ellipse_rx", "title": "Değiştirmek elips&#39;s x yarıçapı"},
+{"id": "ellipse_ry", "title": "Değiştirmek elips Y yarıçapı"},
+{"id": "fill_color", "title": "Renk değiştirmek doldurmak"},
+{"id": "fitToContent", "textContent": "Fit to Content"},
+{"id": "fit_to_all", "textContent": "Fit tüm içerik için"},
+{"id": "fit_to_canvas", "textContent": "Fit tuvaline"},
+{"id": "fit_to_layer_content", "textContent": "Sığacak şekilde katman içerik"},
+{"id": "fit_to_sel", "textContent": "Fit seçimine"},
+{"id": "font_family", "title": "Font değiştir Aile"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Değiştirmek görüntü yüksekliği"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Değiştirmek URL"},
+{"id": "image_width", "title": "Değiştirmek görüntü genişliği"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "en büyük nesne"},
+{"id": "layer_delete", "title": "Delete Layer"},
+{"id": "layer_down", "title": "Katman Aşağı Taşı"},
+{"id": "layer_new", "title": "Yeni Katman"},
+{"id": "layer_rename", "title": "Rename Katman"},
+{"id": "layer_up", "title": "Up Katman Taşı"},
+{"id": "layersLabel", "textContent": "Katmanlar:"},
+{"id": "line_x1", "title": "Değiştirmek hattı&#39;s koordine x başlangıç"},
+{"id": "line_x2", "title": "Değiştirmek hattı&#39;s koordine x biten"},
+{"id": "line_y1", "title": "Değiştirmek hattı y başlangıç&#39;s koordine"},
+{"id": "line_y2", "title": "Değiştirmek hattı y biten&#39;s koordine"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "sayfa"},
+{"id": "palette", "title": "Tıklatın renk, vardiya dolgu zamanlı rengini değiştirmek için tıklayın değiştirmek için"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Değiştirmek dikdörtgen yüksekliği"},
+{"id": "rect_width_tool", "title": "Değiştirmek dikdörtgen genişliği"},
+{"id": "relativeToLabel", "textContent": "göreli:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Seçin önceden tanımlanmış:"},
+{"id": "selected_objects", "textContent": "seçilen nesneleri"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "küçük nesne"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Değiştirmek inme renk"},
+{"id": "stroke_style", "title": "Değiştirmek inme çizgi stili"},
+{"id": "stroke_width", "title": "Değiştirmek vuruş genişliği"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Yükseklik:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "En:"},
+{"id": "text", "title": "Değiştirmek metin içeriği"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Ortala"},
+{"id": "tool_alignleft", "title": "Sola"},
+{"id": "tool_alignmiddle", "title": "Align Orta"},
+{"id": "tool_alignright", "title": "Sağa Hizala"},
+{"id": "tool_aligntop", "title": "Align Top"},
+{"id": "tool_angle", "title": "Değiştirmek dönme açısı"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Kalın Yazı"},
+{"id": "tool_circle", "title": "Daire"},
+{"id": "tool_clear", "textContent": "Yeni Resim"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elemanları"},
+{"id": "tool_delete", "title": "Sil Element"},
+{"id": "tool_delete_multi", "title": "Seçilen Elemanları"},
+{"id": "tool_docprops", "textContent": "Belge Özellikleri"},
+{"id": "tool_docprops_cancel", "textContent": "Iptal"},
+{"id": "tool_docprops_save", "textContent": "Kaydetmek"},
+{"id": "tool_ellipse", "title": "Elips"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-El Elips"},
+{"id": "tool_fhpath", "title": "Kalem Aracı"},
+{"id": "tool_fhrect", "title": "Free-El Dikdörtgen"},
+{"id": "tool_font_size", "title": "Change font size"},
+{"id": "tool_group", "title": "Grup Elemanları"},
+{"id": "tool_image", "title": "Resim Aracı"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italik yazı"},
+{"id": "tool_line", "title": "Line Aracı"},
+{"id": "tool_move_bottom", "title": "Altına gider"},
+{"id": "tool_move_top", "title": "Üste taşı"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Değiştirmek öğe opacity seçilmiş"},
+{"id": "tool_open", "textContent": "Aç Resim"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Dikdörtgen"},
+{"id": "tool_redo", "title": "Redo"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Görüntüyü Kaydet"},
+{"id": "tool_select", "title": "Seçim aracı"},
+{"id": "tool_source", "title": "Değiştir Kaynak"},
+{"id": "tool_source_cancel", "textContent": "Iptal"},
+{"id": "tool_source_save", "textContent": "Kaydetmek"},
+{"id": "tool_square", "title": "Kare"},
+{"id": "tool_text", "title": "Metin Aracı"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Geri"},
+{"id": "tool_ungroup", "title": "Çöz Elemanları"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Yakınlaştırma düzeyini değiştirebilirsiniz"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.uk.js b/files_svgedit/js/locale/lang.uk.js
new file mode 100644
index 000000000..92fb598cf
--- /dev/null
+++ b/files_svgedit/js/locale/lang.uk.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Вирівняти по відношенню до ..."},
+{"id": "bkgnd_color", "title": "Зміна кольору тла / непрозорість"},
+{"id": "circle_cx", "title": "CX зміну кола координата"},
+{"id": "circle_cy", "title": "Зміни гуртка CY координати"},
+{"id": "circle_r", "title": "Зміна кола&#39;s радіус"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Зміни прямокутник Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Зміни еліпса CX координати"},
+{"id": "ellipse_cy", "title": "Зміни еліпса CY координати"},
+{"id": "ellipse_rx", "title": "Х Зміни еліпса радіусом"},
+{"id": "ellipse_ry", "title": "Зміни у еліпса радіусом"},
+{"id": "fill_color", "title": "Зміна кольору заливки"},
+{"id": "fitToContent", "textContent": "За розміром змісту"},
+{"id": "fit_to_all", "textContent": "За розміром весь вміст"},
+{"id": "fit_to_canvas", "textContent": "Розмір полотна"},
+{"id": "fit_to_layer_content", "textContent": "За розміром шар змісту"},
+{"id": "fit_to_sel", "textContent": "Вибір розміру"},
+{"id": "font_family", "title": "Зміни Сімейство шрифтів"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Зміна висоти зображення"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Змінити URL"},
+{"id": "image_width", "title": "Зміни ширина зображення"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "найбільший об&#39;єкт"},
+{"id": "layer_delete", "title": "Видалити шар"},
+{"id": "layer_down", "title": "Перемістити шар на"},
+{"id": "layer_new", "title": "Новий шар"},
+{"id": "layer_rename", "title": "Перейменувати Шар"},
+{"id": "layer_up", "title": "Переміщення шару до"},
+{"id": "layersLabel", "textContent": "Шари:"},
+{"id": "line_x1", "title": "Зміни починає координати лінія х"},
+{"id": "line_x2", "title": "Зміни за період, що закінчився лінія координати х"},
+{"id": "line_y1", "title": "Зміни лінія починає Y координата"},
+{"id": "line_y2", "title": "Зміна за період, що закінчився лінія Y координата"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "сторінка"},
+{"id": "palette", "title": "Натисніть для зміни кольору заливки, Shift-Click змінити обвід"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Зміни прямокутник висотою"},
+{"id": "rect_width_tool", "title": "Зміна ширини прямокутника"},
+{"id": "relativeToLabel", "textContent": "в порівнянні з:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Виберіть зумовлений:"},
+{"id": "selected_objects", "textContent": "обраними об&#39;єктами"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "маленький об&#39;єкт"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Зміна кольору інсульт"},
+{"id": "stroke_style", "title": "Зміна стилю інсульт тире"},
+{"id": "stroke_width", "title": "Зміни ширина штриха"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Висота:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Ширина:"},
+{"id": "text", "title": "Зміна змісту тексту"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Вирівняти по нижньому краю"},
+{"id": "tool_aligncenter", "title": "Вирівняти по центру"},
+{"id": "tool_alignleft", "title": "По лівому краю"},
+{"id": "tool_alignmiddle", "title": "Вирівняти Близького"},
+{"id": "tool_alignright", "title": "По правому краю"},
+{"id": "tool_aligntop", "title": "Вирівняти по верхньому краю"},
+{"id": "tool_angle", "title": "Зміна кута повороту"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Товстий текст"},
+{"id": "tool_circle", "title": "Коло"},
+{"id": "tool_clear", "textContent": "Нове зображення"},
+{"id": "tool_clone", "title": "Клон Елементу"},
+{"id": "tool_clone_multi", "title": "Клон Елементи"},
+{"id": "tool_delete", "title": "Видалити елемент"},
+{"id": "tool_delete_multi", "title": "Видалити вибрані елементи [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "Властивості документа"},
+{"id": "tool_docprops_cancel", "textContent": "Скасування"},
+{"id": "tool_docprops_save", "textContent": "Зберегти"},
+{"id": "tool_ellipse", "title": "Еліпс"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Вільної руки Еліпс"},
+{"id": "tool_fhpath", "title": "Pencil Tool"},
+{"id": "tool_fhrect", "title": "Вільної руки Прямокутник"},
+{"id": "tool_font_size", "title": "Змінити розмір шрифту"},
+{"id": "tool_group", "title": "Група елементів"},
+{"id": "tool_image", "title": "Image Tool"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Похилий текст"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Перемістити вниз"},
+{"id": "tool_move_top", "title": "Перемістити догори"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Зміна вибраного пункту непрозорості"},
+{"id": "tool_open", "textContent": "Відкрити зображення"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Прямокутник"},
+{"id": "tool_redo", "title": "Повтор"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Зберегти малюнок"},
+{"id": "tool_select", "title": "Виберіть інструмент"},
+{"id": "tool_source", "title": "Змінити вихідний"},
+{"id": "tool_source_cancel", "textContent": "Скасування"},
+{"id": "tool_source_save", "textContent": "Зберегти"},
+{"id": "tool_square", "title": "Площа"},
+{"id": "tool_text", "title": "Текст Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Скасувати"},
+{"id": "tool_ungroup", "title": "Елементи розгрупувати"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Зміна масштабу"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.vi.js b/files_svgedit/js/locale/lang.vi.js
new file mode 100644
index 000000000..5db7d0002
--- /dev/null
+++ b/files_svgedit/js/locale/lang.vi.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "Căn liên quan đến ..."},
+{"id": "bkgnd_color", "title": "Thay đổi màu nền / opacity"},
+{"id": "circle_cx", "title": "Thay đổi hình tròn của cx phối hợp"},
+{"id": "circle_cy", "title": "Thay đổi hình tròn của vi phối hợp"},
+{"id": "circle_r", "title": "Thay đổi bán kính của hình tròn"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "Thay đổi chữ nhật Corner Radius"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "Thay đổi hình elip của cx phối hợp"},
+{"id": "ellipse_cy", "title": "Thay đổi hình elip của vi phối hợp"},
+{"id": "ellipse_rx", "title": "Thay đổi hình elip của x bán kính"},
+{"id": "ellipse_ry", "title": "Y Thay đổi bán kính của hình ellipse"},
+{"id": "fill_color", "title": "Thay đổi đầy màu sắc"},
+{"id": "fitToContent", "textContent": "Phù hợp với nội dung"},
+{"id": "fit_to_all", "textContent": "Phù hợp với tất cả nội dung"},
+{"id": "fit_to_canvas", "textContent": "Phù hợp với vải"},
+{"id": "fit_to_layer_content", "textContent": "Vào lớp phù hợp với nội dung"},
+{"id": "fit_to_sel", "textContent": "Phù hợp để lựa chọn"},
+{"id": "font_family", "title": "Thay đổi Font Gia đình"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "Thay đổi hình ảnh chiều cao"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "Thay đổi URL"},
+{"id": "image_width", "title": "Thay đổi hình ảnh rộng"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "lớn nhất đối tượng"},
+{"id": "layer_delete", "title": "Xoá Layer"},
+{"id": "layer_down", "title": "Move Layer Down"},
+{"id": "layer_new", "title": "New Layer"},
+{"id": "layer_rename", "title": "Đổi tên Layer"},
+{"id": "layer_up", "title": "Di chuyển Layer Up"},
+{"id": "layersLabel", "textContent": "Lớp:"},
+{"id": "line_x1", "title": "Thay đổi dòng của bắt đầu từ x phối hợp"},
+{"id": "line_x2", "title": "Thay đổi dòng của x kết thúc sớm nhất phối hợp"},
+{"id": "line_y1", "title": "Thay đổi dòng của bắt đầu từ y phối hợp"},
+{"id": "line_y2", "title": "Thay đổi dòng của kết thúc y phối hợp"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "Sửa"},
+{"id": "palette", "title": "Nhấn vào đây để thay đổi đầy màu sắc, thay đổi nhấp chuột để thay đổi màu sắc đột quỵ"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "Thay đổi hình chữ nhật chiều cao"},
+{"id": "rect_width_tool", "title": "Thay đổi hình chữ nhật chiều rộng"},
+{"id": "relativeToLabel", "textContent": "liên quan đến:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "Chọn định sẵn:"},
+{"id": "selected_objects", "textContent": "bầu các đối tượng"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "nhỏ đối tượng"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "Thay đổi màu sắc đột quỵ"},
+{"id": "stroke_style", "title": "Thay đổi phong cách đột quỵ dash"},
+{"id": "stroke_width", "title": "Thay đổi chiều rộng đột quỵ"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "Chiều cao:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "Chiều rộng:"},
+{"id": "text", "title": "Thay đổi nội dung văn bản"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "Align Bottom"},
+{"id": "tool_aligncenter", "title": "Căn giữa"},
+{"id": "tool_alignleft", "title": "Căn còn lại"},
+{"id": "tool_alignmiddle", "title": "Căn Trung"},
+{"id": "tool_alignright", "title": "Căn phải"},
+{"id": "tool_aligntop", "title": "Căn Top"},
+{"id": "tool_angle", "title": "Thay đổi góc xoay"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "Bold Text"},
+{"id": "tool_circle", "title": "Circle"},
+{"id": "tool_clear", "textContent": "Hình mới"},
+{"id": "tool_clone", "title": "Clone Element"},
+{"id": "tool_clone_multi", "title": "Clone Elements"},
+{"id": "tool_delete", "title": "Xóa Element"},
+{"id": "tool_delete_multi", "title": "Delete Selected Elements"},
+{"id": "tool_docprops", "textContent": "Document Properties"},
+{"id": "tool_docprops_cancel", "textContent": "Hủy"},
+{"id": "tool_docprops_save", "textContent": "Lưu"},
+{"id": "tool_ellipse", "title": "Ellipse"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Việt-Hand Ellipse"},
+{"id": "tool_fhpath", "title": "Bút chì Công cụ"},
+{"id": "tool_fhrect", "title": "Việt-Hand Hình chữ nhật"},
+{"id": "tool_font_size", "title": "Thay đổi cỡ chữ"},
+{"id": "tool_group", "title": "Nhóm Elements"},
+{"id": "tool_image", "title": "Hình Công cụ"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "Italic Text"},
+{"id": "tool_line", "title": "Line Tool"},
+{"id": "tool_move_bottom", "title": "Chuyển đến đáy"},
+{"id": "tool_move_top", "title": "Move to Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "Thay đổi lựa chọn opacity mục"},
+{"id": "tool_open", "textContent": "Mở Image"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "Hình chữ nhật"},
+{"id": "tool_redo", "title": "Làm lại"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "Save Image"},
+{"id": "tool_select", "title": "Chọn Công cụ"},
+{"id": "tool_source", "title": "Sửa Nguồn"},
+{"id": "tool_source_cancel", "textContent": "Hủy"},
+{"id": "tool_source_save", "textContent": "Lưu"},
+{"id": "tool_square", "title": "Hình vuông"},
+{"id": "tool_text", "title": "Text Tool"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "Hoàn tác"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "Zoom Tool"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "Thay đổi mức độ phóng"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.yi.js b/files_svgedit/js/locale/lang.yi.js
new file mode 100644
index 000000000..3a7e63e24
--- /dev/null
+++ b/files_svgedit/js/locale/lang.yi.js
@@ -0,0 +1,173 @@
+[
+{"id": "align_relative_to", "title": "יינרייען קאָרעוו צו ..."},
+{"id": "bkgnd_color", "title": "ענדערן הינטערגרונט פאַרב / אָופּאַסאַטי"},
+{"id": "circle_cx", "title": "ענדערן קרייז ס קקס קאָואָרדאַנאַט"},
+{"id": "circle_cy", "title": "ענדערן קרייז ס סי קאָואָרדאַנאַט"},
+{"id": "circle_r", "title": "ענדערן קרייז ס ראַדיוס"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "ענדערן רעקטאַנגלע קאָרנער ראַדיוס"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "ענדערן יליפּס ס קקס קאָואָרדאַנאַט"},
+{"id": "ellipse_cy", "title": "ענדערן יליפּס ס סי קאָואָרדאַנאַט"},
+{"id": "ellipse_rx", "title": "ענדערן יליפּס ס &#39;קס ראַדיוס"},
+{"id": "ellipse_ry", "title": "ענדערן יליפּס ס &#39;י ראַדיוס"},
+{"id": "fill_color", "title": "ענדערן אָנעסן קאָליר"},
+{"id": "fitToContent", "textContent": "פּאַסיק צו אינהאַלט"},
+{"id": "fit_to_all", "textContent": "פּאַסיק צו אַלע אינהאַלט"},
+{"id": "fit_to_canvas", "textContent": "פּאַסיק צו לייוונט"},
+{"id": "fit_to_layer_content", "textContent": "פּאַסיק צו שיכטע אינהאַלט"},
+{"id": "fit_to_sel", "textContent": "פּאַסיק צו אָפּקלייב"},
+{"id": "font_family", "title": "ענדערן פאָנט פאַמילי"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "טוישן בילד הייך"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "ענדערן URL"},
+{"id": "image_width", "title": "טוישן בילד ברייט"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "לאַרדזשאַסט קעגן"},
+{"id": "layer_delete", "title": "ויסמעקן לייַער"},
+{"id": "layer_down", "title": "קער לייַער דאָוון"},
+{"id": "layer_new", "title": "ניו לייַער"},
+{"id": "layer_rename", "title": "רענאַמע לייַער"},
+{"id": "layer_up", "title": "באַוועגן לייַער אַרויף"},
+{"id": "layersLabel", "textContent": "לייַערס:"},
+{"id": "line_x1", "title": "טוישן ליניע ס &#39;סטאַרטינג קס קאָואָרדאַנאַט"},
+{"id": "line_x2", "title": "טוישן ליניע ס &#39;סאָף קס קאָואָרדאַנאַט"},
+{"id": "line_y1", "title": "טוישן ליניע ס &#39;סטאַרטינג י קאָואָרדאַנאַט"},
+{"id": "line_y2", "title": "טוישן ליניע ס &#39;סאָף י קאָואָרדאַנאַט"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "בלאַט"},
+{"id": "palette", "title": "גיט צו ענדערן אָנעסן קאָליר, יבעררוק-גיט צו טוישן מאַך קאָליר"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "ענדערן גראָדעק הייך"},
+{"id": "rect_width_tool", "title": "ענדערן גראָדעק ברייט"},
+{"id": "relativeToLabel", "textContent": "קאָרעוו צו:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "סעלעקטירן פּרעדעפינעד:"},
+{"id": "selected_objects", "textContent": "עלעקטעד אַבדזשעקץ"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "סמאָלאַסט קעגן"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "טוישן מאַך קאָליר"},
+{"id": "stroke_style", "title": "טוישן מאַך לאָך מאָדע"},
+{"id": "stroke_width", "title": "טוישן מאַך ברייט"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "הויך:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "ברייט:"},
+{"id": "text", "title": "ענדערן טעקסט אינהאַלט"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "יינרייען באָטטאָם"},
+{"id": "tool_aligncenter", "title": "יינרייען צענטער"},
+{"id": "tool_alignleft", "title": "יינרייען לעפט"},
+{"id": "tool_alignmiddle", "title": "יינרייען מיטל"},
+{"id": "tool_alignright", "title": "יינרייען רעכט"},
+{"id": "tool_aligntop", "title": "יינרייען Top"},
+{"id": "tool_angle", "title": "ענדערן ראָוטיישאַן ווינקל"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "דרייסט טעקסט"},
+{"id": "tool_circle", "title": "קאַראַהאָד"},
+{"id": "tool_clear", "textContent": "ניו בילד"},
+{"id": "tool_clone", "title": "קלאָנע עלעמענט"},
+{"id": "tool_clone_multi", "title": "קלאָנע עלעמענץ"},
+{"id": "tool_delete", "title": "ויסמעקן עלעמענט"},
+{"id": "tool_delete_multi", "title": "ויסמעקן סעלעקטעד עלעמענץ [Delete/Backspace]"},
+{"id": "tool_docprops", "textContent": "דאָקומענט פּראָפּערטיעס"},
+{"id": "tool_docprops_cancel", "textContent": "באָטל מאַכן"},
+{"id": "tool_docprops_save", "textContent": "היט"},
+{"id": "tool_ellipse", "title": "עלליפּסע"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "Free-הענט עלליפּסע"},
+{"id": "tool_fhpath", "title": "בלייער טול"},
+{"id": "tool_fhrect", "title": "Free-הענט רעקטאַנגלע"},
+{"id": "tool_font_size", "title": "בייטן פאָנט גרייס"},
+{"id": "tool_group", "title": "גרופּע עלעמענץ"},
+{"id": "tool_image", "title": "בילד טול"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "יטאַליק טעקסט"},
+{"id": "tool_line", "title": "שורה טול"},
+{"id": "tool_move_bottom", "title": "מאַך צו באָטטאָם"},
+{"id": "tool_move_top", "title": "באַוועגן צו Top"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "ענדערן סעלעקטעד נומער אָופּאַסאַטי"},
+{"id": "tool_open", "textContent": "Open בילד"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "גראָדעק"},
+{"id": "tool_redo", "title": "רעדאָ"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "היט בילד"},
+{"id": "tool_select", "title": "סעלעקטירן טול"},
+{"id": "tool_source", "title": "רעדאַקטירן סאָרס"},
+{"id": "tool_source_cancel", "textContent": "באָטל מאַכן"},
+{"id": "tool_source_save", "textContent": "היט"},
+{"id": "tool_square", "title": "קוואדראט"},
+{"id": "tool_text", "title": "טעקסט טול"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "ופמאַכן"},
+{"id": "tool_ungroup", "title": "ונגראָופּ עלעמענץ"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "פארגרעסער טול"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "ענדערן פארגרעסער הייך"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.zh-CN.js b/files_svgedit/js/locale/lang.zh-CN.js
new file mode 100644
index 000000000..86ae15fd8
--- /dev/null
+++ b/files_svgedit/js/locale/lang.zh-CN.js
@@ -0,0 +1,174 @@
+[
+{"id": "align_relative_to", "title": "相对对齐 ..."},
+{"id": "bkgnd_color", "title": "更改背景颜色/不透明"},
+{"id": "circle_cx", "title": "改变循环的CX坐标"},
+{"id": "circle_cy", "title": "改变循环的赛扬坐标"},
+{"id": "circle_r", "title": "改变圆的半径"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "矩形角半径的变化"},
+{"id": "cornerRadiusLabel", "title": "角半径:"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "改变椭圆的CX坐标"},
+{"id": "ellipse_cy", "title": "改变椭圆的赛扬坐标"},
+{"id": "ellipse_rx", "title": "改变椭圆的x半径"},
+{"id": "ellipse_ry", "title": "改变椭圆的y半径"},
+{"id": "fill_color", "title": "更改填充颜色"},
+{"id": "fitToContent", "textContent": "适合内容"},
+{"id": "fit_to_all", "textContent": "适合于所有的内容"},
+{"id": "fit_to_canvas", "textContent": "适合画布"},
+{"id": "fit_to_layer_content", "textContent": "适合层内容"},
+{"id": "fit_to_sel", "textContent": "适合选择"},
+{"id": "font_family", "title": "更改字体家族"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "更改图像高度"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "更改网址"},
+{"id": "image_width", "title": "更改图像的宽度"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "最大对象"},
+{"id": "layer_delete", "title": "删除层"},
+{"id": "layer_down", "title": "层向下移动"},
+{"id": "layer_new", "title": "新层"},
+{"id": "layer_rename", "title": "重命名层"},
+{"id": "layer_up", "title": "移动层最多"},
+{"id": "layersLabel", "textContent": "层:"},
+{"id": "line_x1", "title": "更改行的起点的x坐标"},
+{"id": "line_x2", "title": "更改行的结束x坐标"},
+{"id": "line_y1", "title": "更改行的起点的y坐标"},
+{"id": "line_y2", "title": "更改行的结束y坐标"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "网页"},
+{"id": "palette", "title": "点击更改填充颜色,按住Shift键单击更改颜色中风"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "更改矩形的高度"},
+{"id": "rect_width_tool", "title": "更改矩形的宽度"},
+{"id": "relativeToLabel", "textContent": "相对于:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "选择预定义:"},
+{"id": "selected_objects", "textContent": "选对象"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "最小的对象"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "中风的颜色变化"},
+{"id": "stroke_style", "title": "更改行程冲刺风格"},
+{"id": "stroke_width", "title": "笔划宽度的变化"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "高度:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "宽度:"},
+{"id": "text", "title": "更改文字内容"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "底部对齐"},
+{"id": "tool_aligncenter", "title": "居中对齐"},
+{"id": "tool_alignleft", "title": "左对齐"},
+{"id": "tool_alignmiddle", "title": "中间对齐"},
+{"id": "tool_alignright", "title": "右对齐"},
+{"id": "tool_aligntop", "title": "顶端对齐"},
+{"id": "tool_angle", "title": "旋转角度的变化"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "粗体"},
+{"id": "tool_circle", "title": "圈"},
+{"id": "tool_clear", "textContent": "新形象"},
+{"id": "tool_clone", "title": "克隆元素"},
+{"id": "tool_clone_multi", "title": "克隆元素"},
+{"id": "tool_delete", "title": "删除元素"},
+{"id": "tool_delete_multi", "title": "删除所选元素"},
+{"id": "tool_docprops", "textContent": "文档属性"},
+{"id": "tool_docprops_cancel", "textContent": "取消"},
+{"id": "tool_docprops_save", "textContent": "保存"},
+{"id": "tool_ellipse", "title": "椭圆"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "免费手椭圆"},
+{"id": "tool_fhpath", "title": "铅笔工具"},
+{"id": "tool_fhrect", "title": "免费手矩形"},
+{"id": "tool_font_size", "title": "更改字体大小"},
+{"id": "tool_group", "title": "族元素"},
+{"id": "tool_image", "title": "图像工具"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "斜体文本"},
+{"id": "tool_line", "title": "线工具"},
+{"id": "tool_move_bottom", "title": "移至底部"},
+{"id": "tool_move_top", "title": "移动到顶部"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "更改所选项目不透明"},
+{"id": "tool_open", "textContent": "打开图像"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "矩形"},
+{"id": "tool_redo", "title": "重做"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "保存图像"},
+{"id": "tool_select", "title": "选择工具"},
+{"id": "tool_source", "title": "编辑源"},
+{"id": "tool_source_cancel", "textContent": "取消"},
+{"id": "tool_source_save", "textContent": "保存"},
+{"id": "tool_square", "title": "广场"},
+{"id": "tool_text", "title": "文字工具"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "撤消"},
+{"id": "tool_ungroup", "title": "取消组合元素"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "缩放工具"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "更改缩放级别"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.zh-HK.js b/files_svgedit/js/locale/lang.zh-HK.js
new file mode 100644
index 000000000..bb595afba
--- /dev/null
+++ b/files_svgedit/js/locale/lang.zh-HK.js
@@ -0,0 +1,174 @@
+[
+{"id": "align_relative_to", "title": "相对对齐 ..."},
+{"id": "bkgnd_color", "title": "更改背景颜色/不透明"},
+{"id": "circle_cx", "title": "改变循环的CX坐标"},
+{"id": "circle_cy", "title": "改变循环的赛扬坐标"},
+{"id": "circle_r", "title": "改变圆的半径"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "矩形角半径的变化"},
+{"id": "cornerRadiusLabel", "title": "角半径:"},
+{"id": "curve_segments", "textContent": "Curve"},
+{"id": "ellipse_cx", "title": "改变椭圆的CX坐标"},
+{"id": "ellipse_cy", "title": "改变椭圆的赛扬坐标"},
+{"id": "ellipse_rx", "title": "改变椭圆的x半径"},
+{"id": "ellipse_ry", "title": "改变椭圆的y半径"},
+{"id": "fill_color", "title": "更改填充颜色"},
+{"id": "fitToContent", "textContent": "适合内容"},
+{"id": "fit_to_all", "textContent": "适合于所有的内容"},
+{"id": "fit_to_canvas", "textContent": "适合画布"},
+{"id": "fit_to_layer_content", "textContent": "适合层内容"},
+{"id": "fit_to_sel", "textContent": "适合选择"},
+{"id": "font_family", "title": "更改字体家族"},
+{"id": "icon_large", "textContent": "Large"},
+{"id": "icon_medium", "textContent": "Medium"},
+{"id": "icon_small", "textContent": "Small"},
+{"id": "icon_xlarge", "textContent": "Extra Large"},
+{"id": "image_height", "title": "更改图像高度"},
+{"id": "image_opt_embed", "textContent": "Embed data (local files)"},
+{"id": "image_opt_ref", "textContent": "Use file reference"},
+{"id": "image_url", "title": "更改网址"},
+{"id": "image_width", "title": "更改图像的宽度"},
+{"id": "includedImages", "textContent": "Included Images"},
+{"id": "largest_object", "textContent": "最大对象"},
+{"id": "layer_delete", "title": "删除层"},
+{"id": "layer_down", "title": "层向下移动"},
+{"id": "layer_new", "title": "新层"},
+{"id": "layer_rename", "title": "重命名层"},
+{"id": "layer_up", "title": "移动层最多"},
+{"id": "layersLabel", "textContent": "层:"},
+{"id": "line_x1", "title": "更改行的起点的x坐标"},
+{"id": "line_x2", "title": "更改行的结束x坐标"},
+{"id": "line_y1", "title": "更改行的起点的y坐标"},
+{"id": "line_y2", "title": "更改行的结束y坐标"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "网页"},
+{"id": "palette", "title": "点击更改填充颜色,按住Shift键单击更改颜色中风"},
+{"id": "path_node_x", "title": "Change node's x coordinate"},
+{"id": "path_node_y", "title": "Change node's y coordinate"},
+{"id": "rect_height_tool", "title": "更改矩形的高度"},
+{"id": "rect_width_tool", "title": "更改矩形的宽度"},
+{"id": "relativeToLabel", "textContent": "相对于:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "Move elements to:"},
+{"id": "selLayerNames", "title": "Move selected elements to a different layer"},
+{"id": "selectedPredefined", "textContent": "选择预定义:"},
+{"id": "selected_objects", "textContent": "选对象"},
+{"id": "selected_x", "title": "Change X coordinate"},
+{"id": "selected_y", "title": "Change Y coordinate"},
+{"id": "smallest_object", "textContent": "最小的对象"},
+{"id": "straight_segments", "textContent": "Straight"},
+{"id": "stroke_color", "title": "中风的颜色变化"},
+{"id": "stroke_style", "title": "更改行程冲刺风格"},
+{"id": "stroke_width", "title": "笔划宽度的变化"},
+{"id": "svginfo_bg_note", "textContent": "Note: Background will not be saved with image."},
+{"id": "svginfo_change_background", "textContent": "Editor Background"},
+{"id": "svginfo_dim", "textContent": "Canvas Dimensions"},
+{"id": "svginfo_editor_prefs", "textContent": "Editor Preferences"},
+{"id": "svginfo_height", "textContent": "高度:"},
+{"id": "svginfo_icons", "textContent": "Icon size"},
+{"id": "svginfo_image_props", "textContent": "Image Properties"},
+{"id": "svginfo_lang", "textContent": "Language"},
+{"id": "svginfo_title", "textContent": "Title"},
+{"id": "svginfo_width", "textContent": "宽度:"},
+{"id": "text", "title": "更改文字内容"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "底部对齐"},
+{"id": "tool_aligncenter", "title": "居中对齐"},
+{"id": "tool_alignleft", "title": "左对齐"},
+{"id": "tool_alignmiddle", "title": "中间对齐"},
+{"id": "tool_alignright", "title": "右对齐"},
+{"id": "tool_aligntop", "title": "顶端对齐"},
+{"id": "tool_angle", "title": "旋转角度的变化"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "粗体"},
+{"id": "tool_circle", "title": "圈"},
+{"id": "tool_clear", "textContent": "新形象"},
+{"id": "tool_clone", "title": "克隆元素"},
+{"id": "tool_clone_multi", "title": "克隆元素"},
+{"id": "tool_delete", "title": "删除元素"},
+{"id": "tool_delete_multi", "title": "删除所选元素"},
+{"id": "tool_docprops", "textContent": "文档属性"},
+{"id": "tool_docprops_cancel", "textContent": "取消"},
+{"id": "tool_docprops_save", "textContent": "保存"},
+{"id": "tool_ellipse", "title": "椭圆"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "免费手椭圆"},
+{"id": "tool_fhpath", "title": "铅笔工具"},
+{"id": "tool_fhrect", "title": "免费手矩形"},
+{"id": "tool_font_size", "title": "更改字体大小"},
+{"id": "tool_group", "title": "族元素"},
+{"id": "tool_image", "title": "图像工具"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "斜体文本"},
+{"id": "tool_line", "title": "线工具"},
+{"id": "tool_move_bottom", "title": "移至底部"},
+{"id": "tool_move_top", "title": "移动到顶部"},
+{"id": "tool_node_clone", "title": "Clone Node"},
+{"id": "tool_node_delete", "title": "Delete Node"},
+{"id": "tool_node_link", "title": "Link Control Points"},
+{"id": "tool_opacity", "title": "更改所选项目不透明"},
+{"id": "tool_open", "textContent": "打开图像"},
+{"id": "tool_path", "title": "Path Tool"},
+{"id": "tool_rect", "title": "矩形"},
+{"id": "tool_redo", "title": "重做"},
+{"id": "tool_reorient", "title": "Reorient path"},
+{"id": "tool_save", "textContent": "保存图像"},
+{"id": "tool_select", "title": "选择工具"},
+{"id": "tool_source", "title": "编辑源"},
+{"id": "tool_source_cancel", "textContent": "取消"},
+{"id": "tool_source_save", "textContent": "保存"},
+{"id": "tool_square", "title": "广场"},
+{"id": "tool_text", "title": "文字工具"},
+{"id": "tool_topath", "title": "Convert to Path"},
+{"id": "tool_undo", "title": "撤消"},
+{"id": "tool_ungroup", "title": "Ungroup Elements"},
+{"id": "tool_wireframe", "title": "Wireframe Mode"},
+{"id": "tool_zoom", "title": "缩放工具"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "更改缩放级别"},
+{"id": "sidepanel_handle", "textContent": "L a y e r s", "title": "Drag left/right to resize side panel"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "There were parsing errors in your SVG source.\nRevert back to original SVG source?",
+ "QignoreSourceChanges": "Ignore changes made to SVG source?",
+ "QmoveElemsToLayer": "Move selected elements to layer '%s'?",
+ "QwantToClear": "Do you want to clear the drawing?\nThis will also erase your undo history!",
+ "cancel": "Cancel",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "There is already a layer named that!",
+ "enterNewImgURL": "Enter the new image URL",
+ "enterNewLayerName": "Please enter the new layer name",
+ "enterUniqueLayerName": "Please enter a unique layer name",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "Feature not supported",
+ "invalidAttrValGiven": "Invalid value given",
+ "key_backspace": "backspace",
+ "key_del": "delete",
+ "key_down": "down",
+ "key_up": "up",
+ "layer": "Layer",
+ "layerHasThatName": "Layer already has that name",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "No content to fit to",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "OK",
+ "pathCtrlPtTooltip": "Drag control point to adjust curve properties",
+ "pathNodeTooltip": "Drag node to move it. Double-click node to change segment type",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/lang.zh-TW.js b/files_svgedit/js/locale/lang.zh-TW.js
new file mode 100644
index 000000000..31303f6be
--- /dev/null
+++ b/files_svgedit/js/locale/lang.zh-TW.js
@@ -0,0 +1,174 @@
+[
+{"id": "align_relative_to", "title": "相對對齊 ..."},
+{"id": "bkgnd_color", "title": "更改背景顏色/不透明"},
+{"id": "circle_cx", "title": "改變圓的CX坐標"},
+{"id": "circle_cy", "title": "改變圓的CY坐標"},
+{"id": "circle_r", "title": "改變圓的半徑"},
+{"id": "connector_no_arrow", "textContent": "No arrow"},
+{"id": "copyrightLabel", "textContent": "Powered by"},
+{"id": "cornerRadiusLabel", "title": "矩形角半徑的變化"},
+{"id": "cornerRadiusLabel", "title": "角半徑:"},
+{"id": "curve_segments", "textContent": "曲線"},
+{"id": "ellipse_cx", "title": "改變橢圓的圓心x軸座標"},
+{"id": "ellipse_cy", "title": "改變橢圓的圓心y軸座標"},
+{"id": "ellipse_rx", "title": "改變橢圓的x軸長"},
+{"id": "ellipse_ry", "title": "改變橢圓的y軸長"},
+{"id": "fill_color", "title": "更改填充顏色"},
+{"id": "fitToContent", "textContent": "適合內容"},
+{"id": "fit_to_all", "textContent": "適合所有的內容"},
+{"id": "fit_to_canvas", "textContent": "適合畫布"},
+{"id": "fit_to_layer_content", "textContent": "適合圖層內容"},
+{"id": "fit_to_sel", "textContent": "適合選取的物件"},
+{"id": "font_family", "title": "更改字體"},
+{"id": "icon_large", "textContent": "大"},
+{"id": "icon_medium", "textContent": "中"},
+{"id": "icon_small", "textContent": "小"},
+{"id": "icon_xlarge", "textContent": "特大"},
+{"id": "image_height", "title": "更改圖像高度"},
+{"id": "image_opt_embed", "textContent": "內嵌資料 (本地端檔案)"},
+{"id": "image_opt_ref", "textContent": "使用檔案參照"},
+{"id": "image_url", "title": "更改網址"},
+{"id": "image_width", "title": "更改圖像的寬度"},
+{"id": "includedImages", "textContent": "包含圖像"},
+{"id": "largest_object", "textContent": "最大的物件"},
+{"id": "layer_delete", "title": "刪除圖層"},
+{"id": "layer_down", "title": "向下移動圖層"},
+{"id": "layer_new", "title": "新增圖層"},
+{"id": "layer_rename", "title": "重新命名圖層"},
+{"id": "layer_up", "title": "向上移動圖層"},
+{"id": "layersLabel", "textContent": "圖層:"},
+{"id": "line_x1", "title": "更改行的起點的x坐標"},
+{"id": "line_x2", "title": "更改行的終點x坐標"},
+{"id": "line_y1", "title": "更改行的起點的y坐標"},
+{"id": "line_y2", "title": "更改行的終點y坐標"},
+{"id": "linecap_butt", "title": "Linecap: Butt"},
+{"id": "linecap_round", "title": "Linecap: Round"},
+{"id": "linecap_square", "title": "Linecap: Square"},
+{"id": "linejoin_bevel", "title": "Linejoin: Bevel"},
+{"id": "linejoin_miter", "title": "Linejoin: Miter"},
+{"id": "linejoin_round", "title": "Linejoin: Round"},
+{"id": "main_icon", "title": "Main Menu"},
+{"id": "mode_connect", "title": "Connect two objects"},
+{"id": "page", "textContent": "網頁"},
+{"id": "palette", "title": "點擊更改填充顏色,按住Shift鍵單擊更改線條顏色"},
+{"id": "path_node_x", "title": "改變節點的x軸座標"},
+{"id": "path_node_y", "title": "改變節點的y軸座標"},
+{"id": "rect_height_tool", "title": "更改矩形的高度"},
+{"id": "rect_width_tool", "title": "更改矩形的寬度"},
+{"id": "relativeToLabel", "textContent": "相對於:"},
+{"id": "seg_type", "title": "Change Segment type"},
+{"id": "selLayerLabel", "textContent": "移動物件到:"},
+{"id": "selLayerNames", "title": "移動被點選的物件其他圖層"},
+{"id": "selectedPredefined", "textContent": "使用預設值:"},
+{"id": "selected_objects", "textContent": "選取物件"},
+{"id": "selected_x", "title": "調整 X 軸"},
+{"id": "selected_y", "title": "調整 Y 軸"},
+{"id": "smallest_object", "textContent": "最小的物件"},
+{"id": "straight_segments", "textContent": "直線"},
+{"id": "stroke_color", "title": "線條顏色"},
+{"id": "stroke_style", "title": "更改線條(虛線)風格"},
+{"id": "stroke_width", "title": "線條寬度"},
+{"id": "svginfo_bg_note", "textContent": "注意: 編輯器背景不會和圖像一起儲存"},
+{"id": "svginfo_change_background", "textContent": "編輯器背景"},
+{"id": "svginfo_dim", "textContent": "畫布大小"},
+{"id": "svginfo_editor_prefs", "textContent": "編輯器屬性"},
+{"id": "svginfo_height", "textContent": "高度:"},
+{"id": "svginfo_icons", "textContent": "圖示大小"},
+{"id": "svginfo_image_props", "textContent": "圖片屬性"},
+{"id": "svginfo_lang", "textContent": "語言"},
+{"id": "svginfo_title", "textContent": "標題"},
+{"id": "svginfo_width", "textContent": "寬度:"},
+{"id": "text", "title": "更改文字內容"},
+{"id": "toggle_stroke_tools", "title": "Show/hide more stroke tools"},
+{"id": "tool_add_subpath", "title": "Add sub-path"},
+{"id": "tool_alignbottom", "title": "底部對齊"},
+{"id": "tool_aligncenter", "title": "居中對齊"},
+{"id": "tool_alignleft", "title": "向左對齊"},
+{"id": "tool_alignmiddle", "title": "中間對齊"},
+{"id": "tool_alignright", "title": "向右對齊"},
+{"id": "tool_aligntop", "title": "頂端對齊"},
+{"id": "tool_angle", "title": "旋轉角度"},
+{"id": "tool_blur", "title": "Change gaussian blur value"},
+{"id": "tool_bold", "title": "粗體"},
+{"id": "tool_circle", "title": "圓"},
+{"id": "tool_clear", "textContent": "清空圖像"},
+{"id": "tool_clone", "title": "複製"},
+{"id": "tool_clone_multi", "title": "複製所選元素"},
+{"id": "tool_delete", "title": "刪除"},
+{"id": "tool_delete_multi", "title": "刪除所選元素"},
+{"id": "tool_docprops", "textContent": "文件屬性"},
+{"id": "tool_docprops_cancel", "textContent": "取消"},
+{"id": "tool_docprops_save", "textContent": "保存"},
+{"id": "tool_ellipse", "title": "橢圓"},
+{"id": "tool_export", "textContent": "Export as PNG"},
+{"id": "tool_eyedropper", "title": "Eye Dropper Tool"},
+{"id": "tool_fhellipse", "title": "徒手畫橢圓"},
+{"id": "tool_fhpath", "title": "鉛筆工具"},
+{"id": "tool_fhrect", "title": "徒手畫矩形"},
+{"id": "tool_font_size", "title": "更改字體大小"},
+{"id": "tool_group", "title": "群組"},
+{"id": "tool_image", "title": "圖像工具"},
+{"id": "tool_import", "textContent": "Import SVG"},
+{"id": "tool_italic", "title": "斜體"},
+{"id": "tool_line", "title": "線工具"},
+{"id": "tool_move_bottom", "title": "移至底部"},
+{"id": "tool_move_top", "title": "移動到頂部"},
+{"id": "tool_node_clone", "title": "增加節點"},
+{"id": "tool_node_delete", "title": "刪除節點"},
+{"id": "tool_node_link", "title": "將控制點連起來"},
+{"id": "tool_opacity", "title": "更改所選項目不透明度"},
+{"id": "tool_open", "textContent": "打開圖像"},
+{"id": "tool_path", "title": "路徑工具"},
+{"id": "tool_rect", "title": "矩形"},
+{"id": "tool_redo", "title": "復原"},
+{"id": "tool_reorient", "title": "調整路徑"},
+{"id": "tool_save", "textContent": "保存圖像"},
+{"id": "tool_select", "title": "選擇工具"},
+{"id": "tool_source", "title": "編輯SVG原始碼"},
+{"id": "tool_source_cancel", "textContent": "取消"},
+{"id": "tool_source_save", "textContent": "保存"},
+{"id": "tool_square", "title": "方形"},
+{"id": "tool_text", "title": "文字工具"},
+{"id": "tool_topath", "title": "轉換成路徑"},
+{"id": "tool_undo", "title": "取消復原"},
+{"id": "tool_ungroup", "title": "取消群組"},
+{"id": "tool_wireframe", "title": "框線模式(只瀏覽線條)"},
+{"id": "tool_zoom", "title": "縮放工具"},
+{"id": "url_notice", "title": "NOTE: This image cannot be embedded. It will depend on this path to be displayed"},
+{"id": "zoom_panel", "title": "更改縮放級別"},
+{"id": "sidepanel_handle", "textContent": "圖層", "title": "拖拉以改變側邊面板的大小"},
+{
+ "js_strings": {
+ "QerrorsRevertToSource": "SVG原始碼解析錯誤\n要回復到原本的SVG原始碼嗎?",
+ "QignoreSourceChanges": "要忽略對SVG原始碼的更動嗎?",
+ "QmoveElemsToLayer": "要搬移所選取的物件到'%s'層嗎?",
+ "QwantToClear": "要清空圖像嗎?\n這會順便清空你的回復紀錄!",
+ "cancel": "取消",
+ "defsFailOnSave": "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",
+ "dupeLayerName": "喔不!已經有另一個同樣名稱的圖層了!",
+ "enterNewImgURL": "輸入新的圖片網址",
+ "enterNewLayerName": "請輸入新圖層的名稱",
+ "enterUniqueLayerName": "請輸入一個名稱不重複的",
+ "exportNoBlur": "Blurred elements will appear as un-blurred",
+ "exportNoDashArray": "Strokes will appear filled",
+ "exportNoImage": "Image elements will not appear",
+ "exportNoText": "Text may not appear as expected",
+ "exportNoforeignObject": "foreignObject elements will not appear",
+ "featNotSupported": "未提供此功能",
+ "invalidAttrValGiven": "數值給定錯誤",
+ "key_backspace": "空白",
+ "key_del": "刪除",
+ "key_down": "下",
+ "key_up": "上",
+ "layer": "圖層",
+ "layerHasThatName": "圖層本來就是這個名稱(抱怨)",
+ "loadingImage": "Loading image, please wait...",
+ "noContentToFitTo": "找不到符合的內容",
+ "noteTheseIssues": "Also note the following issues: ",
+ "ok": "確定",
+ "pathCtrlPtTooltip": "拖拉控制點以改變曲線性質",
+ "pathNodeTooltip": "拖拉節點以移動, 連擊節點以改變線段型態(直線/曲線)",
+ "saveFromBrowser": "Select \"Save As...\" in your browser to save this image as a %s file."
+ }
+}
+] \ No newline at end of file
diff --git a/files_svgedit/js/locale/locale.js b/files_svgedit/js/locale/locale.js
new file mode 100644
index 000000000..ce73288ff
--- /dev/null
+++ b/files_svgedit/js/locale/locale.js
@@ -0,0 +1,84 @@
+/*
+ * Localizing script for SVG-edit UI
+ *
+ * Licensed under the Apache License, Version 2
+ *
+ * Copyright(c) 2010 Narendra Sisodya
+ * Copyright(c) 2010 Alexis Deveria
+ *
+ */
+
+var svgEditor = (function($, Editor) {
+ Editor.putLocale = function(given_param, good_langs){
+ var lang_param;
+
+ if(given_param) {
+ lang_param = given_param;
+ } else {
+ lang_param = $.pref('lang');
+ if(!lang_param) {
+ if (navigator.userLanguage) // Explorer
+ lang_param = navigator.userLanguage;
+ else if (navigator.language) // FF, Opera, ...
+ lang_param = navigator.language;
+ if (lang_param == "")
+ return;
+ }
+
+ // Set to English if language is not in list of good langs
+ if($.inArray(lang_param, good_langs) == -1) {
+ lang_param = "en";
+ }
+
+ // don't bother on first run if language is English
+ if(lang_param.indexOf("en") == 0) return;
+ }
+
+ var conf = Editor.curConfig;
+
+ var url = conf.langPath + "lang." + lang_param + ".js";
+
+ var processFile = function(data){
+ var LangData = eval(data), js_strings;
+ var more = Editor.canvas.runExtensions("addLangData", lang_param, true);
+ $.each(more, function(i, m) {
+ if(m.data) {
+ LangData = $.merge(LangData, m.data);
+ }
+ });
+ $.each(LangData, function(i, data) {
+ if(data.id) {
+ var elem = $('#svg_editor').parent().find('#'+data.id)[0];
+ if(elem) {
+ if(data.title)
+ elem.title = data.title;
+ if(data.textContent) {
+ // Only replace non-empty text nodes, not elements
+ $.each(elem.childNodes, function(j, node) {
+ if(node.nodeType == 3 && $.trim(node.textContent)) {
+ node.textContent = data.textContent;
+ }
+ });
+ }
+ }
+ } else if(data.js_strings) {
+ js_strings = data.js_strings;
+ }
+ });
+ Editor.setLang(lang_param, js_strings);
+ }
+
+ $.ajax({
+ 'url': url,
+ 'dataType': "text",
+ success: processFile,
+ error: function(xhr) {
+ if(xhr.responseText) {
+ processFile(xhr.responseText);
+ }
+ }
+ });
+ };
+
+ return Editor;
+}(jQuery, svgEditor));
diff --git a/files_svgedit/js/locale/locale.min.js b/files_svgedit/js/locale/locale.min.js
new file mode 100644
index 000000000..0a4285053
--- /dev/null
+++ b/files_svgedit/js/locale/locale.min.js
@@ -0,0 +1 @@
+var svgEditor=(function($,Editor){Editor.putLocale=function(given_param,good_langs){var lang_param;if(given_param){lang_param=given_param}else{lang_param=$.pref("lang");if(!lang_param){if(navigator.userLanguage){lang_param=navigator.userLanguage}else{if(navigator.language){lang_param=navigator.language}}if(lang_param==""){return}}if($.inArray(lang_param,good_langs)==-1){lang_param="en"}if(lang_param.indexOf("en")==0){return}}var conf=Editor.curConfig;var url=conf.langPath+"lang."+lang_param+".js";var processFile=function(data){var LangData=eval(data),js_strings;var more=Editor.canvas.runExtensions("addLangData",lang_param,true);$.each(more,function(i,m){if(m.data){LangData=$.merge(LangData,m.data)}});$.each(LangData,function(i,data){if(data.id){var elem=$("#svg_editor").parent().find("#"+data.id)[0];if(elem){if(data.title){elem.title=data.title}if(data.textContent){$.each(elem.childNodes,function(j,node){if(node.nodeType==3&&$.trim(node.textContent)){node.textContent=data.textContent}})}}}else{if(data.js_strings){js_strings=data.js_strings}}});Editor.setLang(lang_param,js_strings)};$.ajax({url:url,dataType:"text",success:processFile,error:function(xhr){if(xhr.responseText){processFile(xhr.responseText)}}})};return Editor}(jQuery,svgEditor)); \ No newline at end of file
diff --git a/files_svgedit/js/ocsvg.js b/files_svgedit/js/ocsvg.js
new file mode 100644
index 000000000..047bc8fb4
--- /dev/null
+++ b/files_svgedit/js/ocsvg.js
@@ -0,0 +1,10 @@
+$(document).ready(function() {
+ if(typeof FileActions!=='undefined'){
+ FileActions.register('image/svg+xml','Edit','',function(filename){
+ //viewImage($('#dir').val(),filename);
+ window.location = OC.filePath('files_svgedit', '', 'index.php')
+ + "?file=" + $('#dir').val() + "/" + filename;
+ });
+ FileActions.setDefault('image/svg+xml','Edit');
+ }
+});
diff --git a/files_svgedit/js/spinbtn/JQuerySpinBtn.min.js b/files_svgedit/js/spinbtn/JQuerySpinBtn.min.js
new file mode 100644
index 000000000..81469ec09
--- /dev/null
+++ b/files_svgedit/js/spinbtn/JQuerySpinBtn.min.js
@@ -0,0 +1 @@
+;$.fn.SpinButton=function(a){return this.each(function(){this.repeating=false;this.spinCfg={min:a&&!isNaN(parseFloat(a.min))?Number(a.min):null,max:a&&!isNaN(parseFloat(a.max))?Number(a.max):null,step:a&&a.step?Number(a.step):1,stepfunc:a&&a.stepfunc?a.stepfunc:false,page:a&&a.page?Number(a.page):10,upClass:a&&a.upClass?a.upClass:"up",downClass:a&&a.downClass?a.downClass:"down",reset:a&&a.reset?a.reset:this.value,delay:a&&a.delay?Number(a.delay):500,interval:a&&a.interval?Number(a.interval):100,_btn_width:20,_direction:null,_delay:null,_repeat:null,callback:a&&a.callback?a.callback:null};this.spinCfg.smallStep=a&&a.smallStep?a.smallStep:this.spinCfg.step/2;this.adjustValue=function(d){var c;if(isNaN(this.value)){c=this.spinCfg.reset}else{if($.isFunction(this.spinCfg.stepfunc)){c=this.spinCfg.stepfunc(this,d)}else{c=Number((Number(this.value)+Number(d)).toFixed(5))}}if(this.spinCfg.min!==null){c=Math.max(c,this.spinCfg.min)}if(this.spinCfg.max!==null){c=Math.min(c,this.spinCfg.max)}this.value=c;if($.isFunction(this.spinCfg.callback)){this.spinCfg.callback(this)}};$(this).addClass(a&&a.spinClass?a.spinClass:"spin-button").mousemove(function(h){var d=h.pageX||h.x;var i=h.pageY||h.y;var f=h.target||h.srcElement;var c=$(f).outerHeight()/2;var g=(d>b(f,"offsetLeft")+f.offsetWidth-this.spinCfg._btn_width)?((i<b(f,"offsetTop")+c)?1:-1):0;if(g!==this.spinCfg._direction){switch(g){case 1:$(this).removeClass(this.spinCfg.downClass).addClass(this.spinCfg.upClass);break;case -1:$(this).removeClass(this.spinCfg.upClass).addClass(this.spinCfg.downClass);break;default:$(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass)}this.spinCfg._direction=g}}).mouseout(function(){$(this).removeClass(this.spinCfg.upClass).removeClass(this.spinCfg.downClass);this.spinCfg._direction=null;window.clearInterval(this.spinCfg._repeat);window.clearTimeout(this.spinCfg._delay)}).mousedown(function(g){if(g.button===0&&this.spinCfg._direction!=0){var d=this;var c=g.shiftKey?d.spinCfg.smallStep:d.spinCfg.step;var f=function(){d.adjustValue(d.spinCfg._direction*c)};f();d.spinCfg._delay=window.setTimeout(function(){f();d.spinCfg._repeat=window.setInterval(f,d.spinCfg.interval)},d.spinCfg.delay)}}).mouseup(function(c){window.clearInterval(this.spinCfg._repeat);window.clearTimeout(this.spinCfg._delay)}).dblclick(function(c){if($.browser.msie){this.adjustValue(this.spinCfg._direction*this.spinCfg.step)}}).keydown(function(c){switch(c.keyCode){case 38:this.adjustValue(this.spinCfg.step);break;case 40:this.adjustValue(-this.spinCfg.step);break;case 33:this.adjustValue(this.spinCfg.page);break;case 34:this.adjustValue(-this.spinCfg.page);break}}).keypress(function(c){if(this.repeating){switch(c.keyCode){case 38:this.adjustValue(this.spinCfg.step);break;case 40:this.adjustValue(-this.spinCfg.step);break;case 33:this.adjustValue(this.spinCfg.page);break;case 34:this.adjustValue(-this.spinCfg.page);break}}else{this.repeating=true}}).keyup(function(c){this.repeating=false;switch(c.keyCode){case 38:case 40:case 33:case 34:case 13:this.adjustValue(0);break}}).bind("mousewheel",function(c){if(c.wheelDelta>=120){this.adjustValue(this.spinCfg.step)}else{if(c.wheelDelta<=-120){this.adjustValue(-this.spinCfg.step)}}c.preventDefault()}).change(function(c){this.adjustValue(0)});if(this.addEventListener){this.addEventListener("DOMMouseScroll",function(c){if(c.detail>0){this.adjustValue(-this.spinCfg.step)}else{if(c.detail<0){this.adjustValue(this.spinCfg.step)}}c.preventDefault()},false)}});function b(e,g){var f=e[g],d=document.body;while((e=e.offsetParent)&&(e!=d)){if(!$.browser.msie||(e.currentStyle.position!="relative")){f+=e[g]}}return f}}; \ No newline at end of file
diff --git a/files_svgedit/js/svg-editor.min.js b/files_svgedit/js/svg-editor.min.js
new file mode 100644
index 000000000..0a477a532
--- /dev/null
+++ b/files_svgedit/js/svg-editor.min.js
@@ -0,0 +1 @@
+(function(){if(!window.svgEditor){window.svgEditor=function($){var svgCanvas;var Editor={};var is_ready=false;var defaultPrefs={lang:"en",iconsize:"m",bkgd_color:"#FFF",bkgd_url:"",img_save:"embed"},curPrefs={},curConfig={canvas_expansion:3,dimensions:[640,480],initFill:{color:"FF0000",opacity:1},initStroke:{width:5,color:"000000",opacity:1},initOpacity:1,imgPath:"images/",langPath:"locale/",extPath:"extensions/",extensions:["ext-markers.js","ext-connector.js","ext-eyedropper.js"],initTool:"select",wireframe:false},uiStrings={invalidAttrValGiven:"Invalid value given",noContentToFitTo:"No content to fit to",layer:"Layer",dupeLayerName:"There is already a layer named that!",enterUniqueLayerName:"Please enter a unique layer name",enterNewLayerName:"Please enter the new layer name",layerHasThatName:"Layer already has that name",QmoveElemsToLayer:'Move selected elements to layer "%s"?',QwantToClear:"Do you want to clear the drawing?\nThis will also erase your undo history!",QwantToOpen:"Do you want to open a new file?\nThis will also erase your undo history!",QerrorsRevertToSource:"There were parsing errors in your SVG source.\nRevert back to original SVG source?",QignoreSourceChanges:"Ignore changes made to SVG source?",featNotSupported:"Feature not supported",enterNewImgURL:"Enter the new image URL",defsFailOnSave:"NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved.",loadingImage:"Loading image, please wait...",saveFromBrowser:'Select "Save As..." in your browser to save this image as a %s file.',noteTheseIssues:"Also note the following issues: ",ok:"OK",cancel:"Cancel",key_up:"Up",key_down:"Down",key_backspace:"Backspace",key_del:"Del"};var curPrefs={};var customHandlers={};Editor.curConfig=curConfig;$.pref=function(key,val){if(val){curPrefs[key]=val}key="svg-edit-"+key;var host=location.hostname,onweb=host&&host.indexOf(".")!=-1,store=(val!=undefined),storage=false;try{if(window.localStorage){storage=localStorage}}catch(e){}try{if(window.globalStorage&&onweb){storage=globalStorage[host]}}catch(e){}if(storage){if(store){storage.setItem(key,val)}else{if(storage.getItem(key)){return storage.getItem(key)+""}}}else{if(window.widget){if(store){widget.setPreferenceForKey(val,key)}else{return widget.preferenceForKey(key)}}else{if(store){var d=new Date();d.setTime(d.getTime()+31536000000);val=encodeURIComponent(val);document.cookie=key+"="+val+"; expires="+d.toUTCString()}else{var result=document.cookie.match(new RegExp(key+"=([^;]+)"));return result?decodeURIComponent(result[1]):""}}}};Editor.setConfig=function(opts){$.each(opts,function(key,val){if(key in defaultPrefs){$.pref(key,val)}});$.extend(true,curConfig,opts);if(opts.extensions){curConfig.extensions=opts.extensions}};Editor.setCustomHandlers=function(opts){if(opts.open){$('#tool_open > input[type="file"]').remove();$("#tool_open").show();svgCanvas.open=opts.open}if(opts.save){show_save_warning=false;svgCanvas.bind("saved",opts.save)}if(opts.pngsave){svgCanvas.bind("exported",opts.pngsave)}customHandlers=opts};Editor.randomizeIds=function(){svgCanvas.randomizeIds(arguments)};Editor.init=function(){(function(){var urldata=$.deparam.querystring(true);if(!$.isEmptyObject(urldata)){if(urldata.dimensions){urldata.dimensions=urldata.dimensions.split(",")}if(urldata.extensions){urldata.extensions=urldata.extensions.split(",")}if(urldata.bkgd_color){urldata.bkgd_color="#"+urldata.bkgd_color}svgEditor.setConfig(urldata);var src=urldata.source;var qstr=$.param.querystring();if(src){if(src.indexOf("data:")===0){src=src.replace(/ /g,"+");Editor.loadFromDataURI(src)}else{Editor.loadFromString(src)}}else{if(qstr.indexOf("paramurl=")!==-1){svgEditor.loadFromURL(qstr.substr(9))}else{if(urldata.url){svgEditor.loadFromURL(urldata.url)}}}}})();var extFunc=function(){$.each(curConfig.extensions,function(){$.getScript(curConfig.extPath+this)})};if(window.opera&&document.location.protocol==="file:"){setTimeout(extFunc,1000)}else{extFunc()}$.svgIcons(curConfig.imgPath+"svg_edit_icons.svg",{w:24,h:24,id_match:false,no_img:true,fallback_path:curConfig.imgPath,fallback:{new_image:"clear.png",save:"save.png",open:"open.png",source:"source.png",docprops:"document-properties.png",wireframe:"wireframe.png",undo:"undo.png",redo:"redo.png",select:"select.png",select_node:"select_node.png",pencil:"fhpath.png",pen:"line.png",square:"square.png",rect:"rect.png",fh_rect:"freehand-square.png",circle:"circle.png",ellipse:"ellipse.png",fh_ellipse:"freehand-circle.png",path:"path.png",text:"text.png",image:"image.png",zoom:"zoom.png",clone:"clone.png",node_clone:"node_clone.png","delete":"delete.png",node_delete:"node_delete.png",group:"shape_group.png",ungroup:"shape_ungroup.png",move_top:"move_top.png",move_bottom:"move_bottom.png",to_path:"to_path.png",link_controls:"link_controls.png",reorient:"reorient.png",align_left:"align-left.png",align_center:"align-center",align_right:"align-right",align_top:"align-top",align_middle:"align-middle",align_bottom:"align-bottom",go_up:"go-up.png",go_down:"go-down.png",ok:"save.png",cancel:"cancel.png",arrow_right:"flyouth.png",arrow_down:"dropdown.gif"},placement:{"#logo":"logo","#tool_clear div,#layer_new":"new_image","#tool_save div":"save","#tool_export div":"export","#tool_open div div":"open","#tool_import div div":"import","#tool_source":"source","#tool_docprops > div":"docprops","#tool_wireframe":"wireframe","#tool_undo":"undo","#tool_redo":"redo","#tool_select":"select","#tool_fhpath":"pencil","#tool_line":"pen","#tool_rect,#tools_rect_show":"rect","#tool_square":"square","#tool_fhrect":"fh_rect","#tool_ellipse,#tools_ellipse_show":"ellipse","#tool_circle":"circle","#tool_fhellipse":"fh_ellipse","#tool_path":"path","#tool_text,#layer_rename":"text","#tool_image":"image","#tool_zoom":"zoom","#tool_clone,#tool_clone_multi":"clone","#tool_node_clone":"node_clone","#layer_delete,#tool_delete,#tool_delete_multi":"delete","#tool_node_delete":"node_delete","#tool_add_subpath":"add_subpath","#tool_openclose_path":"open_path","#tool_move_top":"move_top","#tool_move_bottom":"move_bottom","#tool_topath":"to_path","#tool_node_link":"link_controls","#tool_reorient":"reorient","#tool_group":"group","#tool_ungroup":"ungroup","#tool_alignleft, #tool_posleft":"align_left","#tool_aligncenter, #tool_poscenter":"align_center","#tool_alignright, #tool_posright":"align_right","#tool_aligntop, #tool_postop":"align_top","#tool_alignmiddle, #tool_posmiddle":"align_middle","#tool_alignbottom, #tool_posbottom":"align_bottom","#cur_position":"align","#linecap_butt,#cur_linecap":"linecap_butt","#linecap_round":"linecap_round","#linecap_square":"linecap_square","#linejoin_miter,#cur_linejoin":"linejoin_miter","#linejoin_round":"linejoin_round","#linejoin_bevel":"linejoin_bevel","#url_notice":"warning","#layer_up":"go_up","#layer_down":"go_down","#layerlist td.layervis":"eye","#tool_source_save,#tool_docprops_save":"ok","#tool_source_cancel,#tool_docprops_cancel":"cancel","#rwidthLabel, #iwidthLabel":"width","#rheightLabel, #iheightLabel":"height","#cornerRadiusLabel span":"c_radius","#angleLabel":"angle","#zoomLabel":"zoom","#tool_fill label":"fill","#tool_stroke .icon_label":"stroke","#group_opacityLabel":"opacity","#blurLabel":"blur","#font_sizeLabel":"fontsize",".flyout_arrow_horiz":"arrow_right",".dropdown button, #main_button .dropdown":"arrow_down","#palette .palette_item:first, #fill_bg, #stroke_bg":"no_color"},resize:{"#logo .svg_icon":32,".flyout_arrow_horiz .svg_icon":5,".layer_button .svg_icon, #layerlist td.layervis .svg_icon":14,".dropdown button .svg_icon":7,"#main_button .dropdown .svg_icon":9,".palette_item:first .svg_icon, #fill_bg .svg_icon, #stroke_bg .svg_icon":16,".toolbar_button button .svg_icon":16,".stroke_tool div div .svg_icon":20,"#tools_bottom label .svg_icon":18},callback:function(icons){$(".toolbar_button button > svg, .toolbar_button button > img").each(function(){$(this).parent().prepend(this)});var tleft=$("#tools_left");var min_height=tleft.offset().top+tleft.outerHeight();var size=$.pref("iconsize");if(size&&size!="m"){svgEditor.setIconSize(size)}else{if($(window).height()<min_height){svgEditor.setIconSize("s")}}$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var sel=shower.attr("data-curopt");if(!shower.children("svg, img").length){var clone=$(sel).children().clone();shower.append(clone)}if(window.opera){shower.children().removeAttr("style")}});svgEditor.runCallbacks()}});Editor.canvas=svgCanvas=new $.SvgCanvas(document.getElementById("svgcanvas"),curConfig);var palette=["#000000","#3f3f3f","#7f7f7f","#bfbfbf","#ffffff","#ff0000","#ff7f00","#ffff00","#7fff00","#00ff00","#00ff7f","#00ffff","#007fff","#0000ff","#7f00ff","#ff00ff","#ff007f","#7f0000","#7f3f00","#7f7f00","#3f7f00","#007f00","#007f3f","#007f7f","#003f7f","#00007f","#3f007f","#7f007f","#7f003f","#ffaaaa","#ffd4aa","#ffffaa","#d4ffaa","#aaffaa","#aaffd4","#aaffff","#aad4ff","#aaaaff","#d4aaff","#ffaaff","#ffaad4",];isMac=false,modKey="",path=svgCanvas.pathActions,undoMgr=svgCanvas.undoMgr,Utils=svgCanvas.Utils,default_img_url=curConfig.imgPath+"logo.png",workarea=$("#workarea"),show_save_warning=false,exportWindow=null;(function(){$("#dialog_container").draggable({cancel:"#dialog_content, #dialog_buttons *"});var box=$("#dialog_box"),btn_holder=$("#dialog_buttons");var dbox=function(type,msg,callback,defText){$("#dialog_content").html("<p>"+msg.replace(/\n/g,"</p><p>")+"</p>").toggleClass("prompt",(type=="prompt"));btn_holder.empty();var ok=$('<input type="button" value="'+uiStrings.ok+'">').appendTo(btn_holder);if(type!="alert"){$('<input type="button" value="'+uiStrings.cancel+'">').appendTo(btn_holder).click(function(){box.hide();callback(false)})}if(type=="prompt"){var input=$('<input type="text">').prependTo(btn_holder);input.val(defText||"");input.bind("keydown","return",function(){ok.click()})}if(type=="process"){ok.hide()}box.show();ok.click(function(){box.hide();var resp=(type=="prompt")?input.val():true;if(callback){callback(resp)}}).focus();if(type=="prompt"){input.focus()}};$.alert=function(msg,cb){dbox("alert",msg,cb)};$.confirm=function(msg,cb){dbox("confirm",msg,cb)};$.process_cancel=function(msg,cb){dbox("process",msg,cb)};$.prompt=function(msg,txt,cb){dbox("prompt",msg,cb,txt)}}());var setSelectMode=function(){$(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");$("#tool_select").addClass("tool_button_current").removeClass("tool_button");$("#styleoverrides").text("#svgcanvas svg *{cursor:move;pointer-events:all} #svgcanvas svg{cursor:default}");svgCanvas.setMode("select")};var togglePathEditMode=function(editmode,elems){$("#path_node_panel").toggle(editmode);$("#tools_bottom_2,#tools_bottom_3").toggle(!editmode);if(editmode){$(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");$("#tool_select").addClass("tool_button_current").removeClass("tool_button");setIcon("#tool_select","select_node");multiselected=false;if(elems.length){selectedElement=elems[0]}}else{setIcon("#tool_select","select")}};var flyoutspeed=1250;var textBeingEntered=false;var selectedElement=null;var multiselected=false;var editingsource=false;var docprops=false;var fillPaint=new $.jGraduate.Paint({solidColor:curConfig.initFill.color});var strokePaint=new $.jGraduate.Paint({solidColor:curConfig.initStroke.color});var saveHandler=function(window,svg){show_save_warning=false;svg='<?xml version="1.0"?>\n'+svg;var win=window.open("data:image/svg+xml;base64,"+Utils.encode64(svg));var done=$.pref("save_notice_done");if(done!=="all"){var note=uiStrings.saveFromBrowser.replace("%s","SVG");if(navigator.userAgent.indexOf("Gecko/")!==-1){if(svg.indexOf("<defs")!==-1){note+="\n\n"+uiStrings.defsFailOnSave;$.pref("save_notice_done","all");done="all"}else{$.pref("save_notice_done","part")}}else{$.pref("save_notice_done","all")}if(done!=="part"){win.alert(note)}}};var exportHandler=function(window,data){var issues=data.issues;if(!$("#export_canvas").length){$("<canvas>",{id:"export_canvas"}).hide().appendTo("body")}var c=$("#export_canvas")[0];c.width=svgCanvas.contentW;c.height=svgCanvas.contentH;canvg(c,data.svg);var datauri=c.toDataURL("image/png");exportWindow.location.href=datauri;var done=$.pref("export_notice_done");if(done!=="all"){var note=uiStrings.saveFromBrowser.replace("%s","PNG");if(issues.length){var pre="\n \u2022 ";note+=("\n\n"+uiStrings.noteTheseIssues+pre+issues.join(pre))}$.pref("export_notice_done","all");exportWindow.alert(note)}};var selectedChanged=function(window,elems){var mode=svgCanvas.getMode();var is_node=(mode=="pathedit");selectedElement=(elems.length==1||elems[1]==null?elems[0]:null);multiselected=(elems.length>=2&&elems[1]!=null);if(selectedElement!=null){if(mode!="multiselect"&&!is_node){setSelectMode();updateToolbar()}}togglePathEditMode(is_node,elems);updateContextPanel();svgCanvas.runExtensions("selectedChanged",{elems:elems,selectedElement:selectedElement,multiselected:multiselected})};var elementChanged=function(window,elems){for(var i=0;i<elems.length;++i){var elem=elems[i];if(elem&&elem.tagName=="svg"){populateLayers();updateCanvas()}else{if(elem&&selectedElement&&selectedElement.parentNode==null){selectedElement=elem}}}show_save_warning=true;updateContextPanel();svgCanvas.runExtensions("elementChanged",{elems:elems})};var zoomChanged=function(window,bbox,autoCenter){var scrbar=15,res=svgCanvas.getResolution(),w_area=workarea,canvas_pos=$("#svgcanvas").position();w_area.css("cursor","auto");var z_info=svgCanvas.setBBoxZoom(bbox,w_area.width()-scrbar,w_area.height()-scrbar);if(!z_info){return}var zoomlevel=z_info.zoom,bb=z_info.bbox;$("#zoom").val(Math.round(zoomlevel*100));if(autoCenter){updateCanvas()}else{updateCanvas(false,{x:bb.x*zoomlevel+(bb.width*zoomlevel)/2,y:bb.y*zoomlevel+(bb.height*zoomlevel)/2})}if(svgCanvas.getMode()=="zoom"&&bb.width){setSelectMode()}zoomDone()};var flyout_funcs={};var setupFlyouts=function(holders){$.each(holders,function(hold_sel,btn_opts){var buttons=$(hold_sel).children();var show_sel=hold_sel+"_show";var def=false;buttons.addClass("tool_button").unbind("click mousedown mouseup").each(function(i){var opts=btn_opts[i];flyout_funcs[opts.sel]=opts.fn;if(opts.isDefault){def=i}var func=function(){if($(this).hasClass("disabled")){return false}if(toolButtonClick(show_sel)){opts.fn()}if(opts.icon){var icon=$.getSvgIcon(opts.icon).clone()}else{var icon=$(opts.sel).children().eq(0).clone()}var shower=$(show_sel);icon[0].setAttribute("width",shower.width());icon[0].setAttribute("height",shower.height());shower.children(":not(.flyout_arrow_horiz)").remove();shower.append(icon).attr("data-curopt",opts.sel)};$(this).mouseup(func);if(opts.key){$(document).bind("keydown",opts.key+"",func)}});if(def){$(show_sel).attr("data-curopt",btn_opts[def].sel)}else{if(!$(show_sel).attr("data-curopt")){$(show_sel).attr("data-curopt",btn_opts[0].sel)}}var timer;$(show_sel).mousedown(function(evt){if($(show_sel).hasClass("disabled")){return false}var holder=$(show_sel.replace("_show",""));var l=holder.css("left");var w=holder.width()*-1;var time=holder.data("shown_popop")?200:0;timer=setTimeout(function(){holder.css("left",w).show().animate({left:l},150);holder.data("shown_popop",true)},time);evt.preventDefault()}).mouseup(function(){clearTimeout(timer);var opt=$(this).attr("data-curopt");if(toolButtonClick(show_sel)){flyout_funcs[opt]()}});var pos=$(show_sel).position();$(hold_sel).css({left:pos.left+34,top:pos.top+77})});setFlyoutTitles()};var makeFlyoutHolder=function(id,child){var div=$("<div>",{"class":"tools_flyout",id:id}).appendTo("#svg_editor").append(child);return div};var setFlyoutPositions=function(){$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var pos=shower.offset();var w=shower.outerWidth();$(this).css({left:pos.left+w,top:pos.top})})};var setFlyoutTitles=function(){$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var tooltips=[];$(this).children().each(function(){tooltips.push(this.title)});shower[0].title=tooltips.join(" / ")})};var extAdded=function(window,ext){var cb_called=false;var runCallback=function(){if(ext.callback&&!cb_called){cb_called=true;ext.callback()}};var btn_selects=[];if(ext.context_tools){$.each(ext.context_tools,function(i,tool){var cont_id=tool.container_id?(' id="'+tool.container_id+'"'):"";var panel=$("#"+tool.panel);if(!panel.length){panel=$("<div>",{id:tool.panel}).appendTo("#tools_top")}switch(tool.type){case"tool_button":var html='<div class="tool_button">'+tool.id+"</div>";var div=$(html).appendTo(panel);if(tool.events){$.each(tool.events,function(evt,func){$(div).bind(evt,func)})}break;case"select":var html="<label"+cont_id+'><select id="'+tool.id+'">';$.each(tool.options,function(val,text){var sel=(val==tool.defval)?" selected":"";html+='<option value="'+val+'"'+sel+">"+text+"</option>"});html+="</select></label>";var sel=$(html).appendTo(panel).find("select");$.each(tool.events,function(evt,func){$(sel).bind(evt,func)});break;case"button-select":var html='<div id="'+tool.id+'" class="dropdown toolset" title="'+tool.title+'"><div id="cur_'+tool.id+'" class="icon_label"></div><button></button></div>';var list=$('<ul id="'+tool.id+'_opts"></ul>').appendTo("#option_lists");if(tool.colnum){list.addClass("optcols"+tool.colnum)}var dropdown=$(html).appendTo(panel).children();btn_selects.push({elem:("#"+tool.id),list:("#"+tool.id+"_opts"),title:tool.title,callback:tool.events.change,cur:("#cur_"+tool.id)});break;case"input":var html="<label"+cont_id+'><span id="'+tool.id+'_label">'+tool.label+':</span><input id="'+tool.id+'" title="'+tool.title+'" size="'+(tool.size||"4")+'" value="'+(tool.defval||"")+'" type="text"/></label>';var inp=$(html).appendTo(panel).find("input");if(tool.spindata){inp.SpinButton(tool.spindata)}if(tool.events){$.each(tool.events,function(evt,func){inp.bind(evt,func)})}break;default:break}})}if(ext.buttons){var fallback_obj={},placement_obj={},svgicons=ext.svgicons;var holders={};$.each(ext.buttons,function(i,btn){var icon;var id=btn.id;var num=i;while($("#"+id).length){id=btn.id+"_"+(++num)}if(!svgicons){icon=$('<img src="'+btn.icon+'">')}else{fallback_obj[id]=btn.icon;var svgicon=btn.svgicon?btn.svgicon:btn.id;placement_obj["#"+id]=svgicon}var cls,parent;switch(btn.type){case"mode":cls="tool_button";parent="#tools_left";break;case"context":cls="tool_button";parent="#"+btn.panel;if(!$(parent).length){$("<div>",{id:btn.panel}).appendTo("#tools_top")}break}var button=$(btn.list?"<li/>":"<div/>").attr("id",id).attr("title",btn.title).addClass(cls);if(!btn.includeWith&&!btn.list){button.appendTo(parent)}else{if(btn.list){button.addClass("push_button");$("#"+btn.list+"_opts").append(button);if(btn.isDefault){$("#cur_"+btn.list).append(button.children().clone());var svgicon=btn.svgicon?btn.svgicon:btn.id;placement_obj["#cur_"+btn.list]=svgicon}}else{if(btn.includeWith){var opts=btn.includeWith;var ref_btn=$(opts.button);var flyout_holder=ref_btn.parent();if(!ref_btn.parent().hasClass("tools_flyout")){var arr_div=$("<div>",{id:"flyout_arrow_horiz"});var tls_id=ref_btn[0].id.replace("tool_","tools_");var show_btn=ref_btn.clone().attr("id",tls_id+"_show").append($("<div>",{"class":"flyout_arrow_horiz"}));ref_btn.before(show_btn);flyout_holder=makeFlyoutHolder(tls_id,ref_btn)}var ref_data=Actions.getButtonData(opts.button);if(opts.isDefault){placement_obj["#"+tls_id+"_show"]=btn.id}var cur_h=holders["#"+flyout_holder[0].id]=[{sel:"#"+id,fn:btn.events.click,icon:btn.id,key:btn.key,isDefault:btn.includeWith?btn.includeWith.isDefault:0},ref_data];var pos=("position" in opts)?opts.position:"last";var len=flyout_holder.children().length;if(!isNaN(pos)&&pos>=0&&pos<len){flyout_holder.children().eq(pos).before(button)}else{flyout_holder.append(button);cur_h.reverse()}}}}if(!svgicons){button.append(icon)}if(!btn.list){$.each(btn.events,function(name,func){if(name=="click"){if(btn.type=="mode"){if(btn.includeWith){button.bind(name,func)}else{button.bind(name,function(){if(toolButtonClick(button)){func()}})}if(btn.key){$(document).bind("keydown",btn.key,func);if(btn.title){button.attr("title",btn.title+" ["+btn.key+"]")}}}else{button.bind(name,func)}}else{button.bind(name,func)}})}setupFlyouts(holders)});$.each(btn_selects,function(){addAltDropDown(this.elem,this.list,this.callback,{seticon:true})});$.svgIcons(svgicons,{w:24,h:24,id_match:false,no_img:true,fallback:fallback_obj,placement:placement_obj,callback:function(icons){if(curPrefs.iconsize&&curPrefs.iconsize!="m"){setIconSize(curPrefs.iconsize,true)}runCallback()}})}runCallback()};var getPaint=function(color,opac){var opts=null;if(color.substr(0,5)=="url(#"){var grad=document.getElementById(color.substr(5,color.length-6));opts={alpha:opac};opts[grad.tagName]=grad}else{if(color.substr(0,1)=="#"){opts={alpha:opac,solidColor:color.substr(1)}}else{opts={alpha:opac,solidColor:"none"}}}return new $.jGraduate.Paint(opts)};var updateToolbar=function(){if(selectedElement!=null&&$.inArray(selectedElement.tagName,["image","foreignObject","g","a"])===-1){var fillOpacity=parseFloat(selectedElement.getAttribute("fill-opacity"));if(isNaN(fillOpacity)){fillOpacity=1}var strokeOpacity=parseFloat(selectedElement.getAttribute("stroke-opacity"));if(isNaN(strokeOpacity)){strokeOpacity=1}var fillColor=selectedElement.getAttribute("fill")||"black";svgCanvas.setColor("fill",fillColor,true);svgCanvas.setPaintOpacity("fill",fillOpacity,true);var strokeColor=selectedElement.getAttribute("stroke")||"none";svgCanvas.setColor("stroke",strokeColor,true);svgCanvas.setPaintOpacity("stroke",strokeOpacity,true);$("#stroke_color rect").attr({fill:strokeColor,opacity:strokeOpacity});$("#fill_color rect").attr({fill:fillColor,opacity:fillOpacity});fillOpacity*=100;strokeOpacity*=100;fillPaint=getPaint(fillColor,fillOpacity);strokePaint=getPaint(strokeColor,strokeOpacity);fillOpacity=fillOpacity+" %";strokeOpacity=strokeOpacity+" %";if(fillColor=="none"){fillOpacity="N/A"}if(strokeColor==null||strokeColor==""||strokeColor=="none"){strokeColor="none";strokeOpacity="N/A"}$("#stroke_width").val(selectedElement.getAttribute("stroke-width")||1);$("#stroke_style").val(selectedElement.getAttribute("stroke-dasharray")||"none");var attr=selectedElement.getAttribute("stroke-linejoin")||"miter";setStrokeOpt($("#linejoin_"+attr)[0]);attr=selectedElement.getAttribute("stroke-linecap")||"butt";setStrokeOpt($("#linecap_"+attr)[0])}if(selectedElement!=null){var opac_perc=((selectedElement.getAttribute("opacity")||1)*100);$("#group_opacity").val(opac_perc);$("#opac_slider").slider("option","value",opac_perc);$("#elem_id").val(selectedElement.id)}updateToolButtonState()};var updateContextPanel=function(){var elem=selectedElement;if(elem!=null&&!elem.parentNode){elem=null}var currentLayer=svgCanvas.getCurrentLayer();var currentMode=svgCanvas.getMode();if(currentMode=="rotate"&&elem!=null){var ang=svgCanvas.getRotationAngle(elem);$("#angle").val(ang);$("#tool_reorient").toggleClass("disabled",ang==0);return}var is_node=currentMode=="pathedit";$("#selected_panel, #multiselected_panel, #g_panel, #rect_panel, #circle_panel, #ellipse_panel, #line_panel, #text_panel, #image_panel").hide();if(elem!=null){var elname=elem.nodeName;var angle=svgCanvas.getRotationAngle(elem);$("#angle").val(angle);var blurval=svgCanvas.getBlur(elem);$("#blur").val(blurval);$("#blur_slider").slider("option","value",blurval);if(svgCanvas.addedNew){if(elname=="image"){var xlinkNS="http://www.w3.org/1999/xlink";var href=elem.getAttributeNS(xlinkNS,"href");if(href.indexOf("data:")!==0){promptImgURL()}}else{if(elname=="text"){}}}if(!is_node&&currentMode!="pathedit"){$("#selected_panel").show();if($.inArray(elname,["line","circle","ellipse"])!=-1){$("#xy_panel").hide()}else{var x,y;if($.inArray(elname,["g","polyline","path"])!=-1){var bb=svgCanvas.getStrokedBBox([elem]);if(bb){x=bb.x;y=bb.y}}else{x=elem.getAttribute("x");y=elem.getAttribute("y")}$("#selected_x").val(x||0);$("#selected_y").val(y||0);$("#xy_panel").show()}var no_path=$.inArray(elname,["image","text","path","g","use"])==-1;$("#tool_topath").toggle(no_path);$("#tool_reorient").toggle(elname=="path");$("#tool_reorient").toggleClass("disabled",angle==0)}else{var point=path.getNodePoint();$("#tool_add_subpath").removeClass("push_button_pressed").addClass("tool_button");$("#tool_node_delete").toggleClass("disabled",!path.canDeleteNodes);setIcon("#tool_openclose_path",path.closed_subpath?"open_path":"close_path");if(point){var seg_type=$("#seg_type");$("#path_node_x").val(point.x);$("#path_node_y").val(point.y);if(point.type){seg_type.val(point.type).removeAttr("disabled")}else{seg_type.val(4).attr("disabled","disabled")}}return}var panels={g:[],rect:["rx","width","height"],image:["width","height"],circle:["cx","cy","r"],ellipse:["cx","cy","rx","ry"],line:["x1","y1","x2","y2"],text:[]};var el_name=elem.tagName;if(panels[el_name]){var cur_panel=panels[el_name];$("#"+el_name+"_panel").show();$.each(cur_panel,function(i,item){$("#"+el_name+"_"+item).val(elem.getAttribute(item)||0)});if(el_name=="text"){$("#text_panel").css("display","inline");if(svgCanvas.getItalic()){$("#tool_italic").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_italic").removeClass("push_button_pressed").addClass("tool_button")}if(svgCanvas.getBold()){$("#tool_bold").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_bold").removeClass("push_button_pressed").addClass("tool_button")}$("#font_family").val(elem.getAttribute("font-family"));$("#font_size").val(elem.getAttribute("font-size"));$("#text").val(elem.textContent);if(svgCanvas.addedNew){$("#text").focus().select()}}else{if(el_name=="image"){var xlinkNS="http://www.w3.org/1999/xlink";var href=elem.getAttributeNS(xlinkNS,"href");setImageURL(href)}}}}else{if(multiselected){$("#multiselected_panel").show()}}if(undoMgr.getUndoStackSize()>0){$("#tool_undo").removeClass("disabled")}else{$("#tool_undo").addClass("disabled")}if(undoMgr.getRedoStackSize()>0){$("#tool_redo").removeClass("disabled")}else{$("#tool_redo").addClass("disabled")}svgCanvas.addedNew=false;if((elem&&!is_node)||multiselected){$("#selLayerNames").removeAttr("disabled").val(currentLayer)}else{$("#selLayerNames").attr("disabled","disabled")}};$("#text").focus(function(){textBeingEntered=true});$("#text").blur(function(){textBeingEntered=false});svgCanvas.bind("selected",selectedChanged);svgCanvas.bind("changed",elementChanged);svgCanvas.bind("saved",saveHandler);svgCanvas.bind("exported",exportHandler);svgCanvas.bind("zoomed",zoomChanged);svgCanvas.bind("extension_added",extAdded);svgCanvas.textActions.setInputElem($("#text")[0]);var str='<div class="palette_item" data-rgb="none"></div>';$.each(palette,function(i,item){str+='<div class="palette_item" style="background-color: '+item+';" data-rgb="'+item+'"></div>'});$("#palette").append(str);var color_blocks=["#FFF","#888","#000"];var str="";$.each(color_blocks,function(){str+='<div class="color_block" style="background-color:'+this+';"></div>'});$("#bg_blocks").append(str);var blocks=$("#bg_blocks div");var cur_bg="cur_background";blocks.each(function(){var blk=$(this);blk.click(function(){blocks.removeClass(cur_bg);$(this).addClass(cur_bg)})});if($.pref("bkgd_color")){setBackground($.pref("bkgd_color"),$.pref("bkgd_url"))}else{if($.pref("bkgd_url")){setBackground(defaultPrefs.bkgd_color,$.pref("bkgd_url"))}}if($.pref("img_save")){curPrefs.img_save=$.pref("img_save");$("#image_save_opts input").val([curPrefs.img_save])}var changeRectRadius=function(ctl){svgCanvas.setRectRadius(ctl.value)};var changeFontSize=function(ctl){svgCanvas.setFontSize(ctl.value)};var changeStrokeWidth=function(ctl){var val=ctl.value;if(val==0&&selectedElement&&$.inArray(selectedElement.nodeName,["line","polyline"])!=-1){val=ctl.value=1}svgCanvas.setStrokeWidth(val)};var changeRotationAngle=function(ctl){svgCanvas.setRotationAngle(ctl.value);$("#tool_reorient").toggleClass("disabled",ctl.value==0)};var changeZoom=function(ctl){var zoomlevel=ctl.value/100;var zoom=svgCanvas.getZoom();var w_area=workarea;zoomChanged(window,{width:0,height:0,x:(w_area[0].scrollLeft+w_area.width()/2)/zoom,y:(w_area[0].scrollTop+w_area.height()/2)/zoom,zoom:zoomlevel},true)};var changeOpacity=function(ctl,val){if(val==null){val=ctl.value}$("#group_opacity").val(val);if(!ctl||!ctl.handle){$("#opac_slider").slider("option","value",val)}svgCanvas.setOpacity(val/100)};var changeBlur=function(ctl,val,noUndo){if(val==null){val=ctl.value}$("#blur").val(val);var complete=false;if(!ctl||!ctl.handle){$("#blur_slider").slider("option","value",val);complete=true}if(noUndo){svgCanvas.setBlurNoUndo(val)}else{svgCanvas.setBlur(val,complete)}};var operaRepaint=function(){if(!window.opera){return}$("<p/>").hide().appendTo("body").remove()};$("#stroke_style").change(function(){svgCanvas.setStrokeAttr("stroke-dasharray",$(this).val());operaRepaint()});$("#stroke_linejoin").change(function(){svgCanvas.setStrokeAttr("stroke-linejoin",$(this).val());operaRepaint()});$("select").change(function(){$(this).blur()});var promptMoveLayerOnce=false;$("#selLayerNames").change(function(){var destLayer=this.options[this.selectedIndex].value;var confirm_str=uiStrings.QmoveElemsToLayer.replace("%s",destLayer);var moveToLayer=function(ok){if(!ok){return}promptMoveLayerOnce=true;svgCanvas.moveSelectedToLayer(destLayer);svgCanvas.clearSelection();populateLayers()};if(destLayer){if(promptMoveLayerOnce){moveToLayer(true)}else{$.confirm(confirm_str,moveToLayer)}}});$("#font_family").change(function(){svgCanvas.setFontFamily(this.value)});$("#seg_type").change(function(){svgCanvas.setSegType($(this).val())});$("#text").keyup(function(){svgCanvas.setTextContent(this.value)});$("#image_url").change(function(){setImageURL(this.value)});$(".attr_changer").change(function(){var attr=this.getAttribute("data-attr");var val=this.value;var valid=svgCanvas.isValidUnit(attr,val);if(!valid){$.alert(uiStrings.invalidAttrValGiven);this.value=selectedElement.getAttribute(attr);return false}if(attr=="id"){var elem=selectedElement;svgCanvas.clearSelection();elem.id=val;svgCanvas.addToSelection([elem],true)}else{svgCanvas.changeSelectedAttribute(attr,val)}});$("#palette").mouseover(function(){var inp=$('<input type="hidden">');$(this).append(inp);inp.focus().remove()});$(".palette_item").click(function(evt){var picker=(evt.shiftKey?"stroke":"fill");var id=(evt.shiftKey?"#stroke_":"#fill_");var color=$(this).attr("data-rgb");var rectbox=document.getElementById("gradbox_"+picker).parentNode.firstChild;var paint=null;if(color=="transparent"||color=="initial"){color="none";$(id+"opacity").html("N/A");paint=new $.jGraduate.Paint()}else{paint=new $.jGraduate.Paint({alpha:100,solidColor:color.substr(1)})}rectbox.setAttribute("fill",color);rectbox.setAttribute("opacity",1);if(evt.shiftKey){strokePaint=paint;if(svgCanvas.getColor("stroke")!=color){svgCanvas.setColor("stroke",color)}if(color!="none"&&svgCanvas.getStrokeOpacity()!=1){svgCanvas.setPaintOpacity("stroke",1)}}else{fillPaint=paint;if(svgCanvas.getColor("fill")!=color){svgCanvas.setColor("fill",color)}if(color!="none"&&svgCanvas.getFillOpacity("fill")!=1){svgCanvas.setPaintOpacity("fill",1)}}updateToolButtonState()});$("#toggle_stroke_tools").toggle(function(){$(".stroke_tool").css("display","table-cell");$(this).text("<<")},function(){$(".stroke_tool").css("display","none");$(this).text(">>")});var toolButtonClick=function(button,fadeFlyouts){if($(button).hasClass("disabled")){return false}if($(button).parent().hasClass("tools_flyout")){return true}var fadeFlyouts=fadeFlyouts||"normal";$(".tools_flyout").fadeOut(fadeFlyouts);$("#styleoverrides").text("");$(".tool_button_current").removeClass("tool_button_current").addClass("tool_button");$(button).addClass("tool_button_current").removeClass("tool_button");svgCanvas.clearSelection();return true};(function(){var last_x=null,last_y=null,w_area=workarea[0],panning=false,keypan=false;$("#svgcanvas").bind("mousemove mouseup",function(evt){if(panning===false){return}w_area.scrollLeft-=(evt.clientX-last_x);w_area.scrollTop-=(evt.clientY-last_y);last_x=evt.clientX;last_y=evt.clientY;if(evt.type==="mouseup"){panning=false}return false}).mousedown(function(evt){if(evt.button===1||keypan===true){panning=true;last_x=evt.clientX;last_y=evt.clientY;return false}});$(window).mouseup(function(){panning=false});$(document).bind("keydown","space",function(evt){svgCanvas.spaceKey=keypan=true;evt.preventDefault()}).bind("keyup","space",function(evt){evt.preventDefault();svgCanvas.spaceKey=keypan=false})}());function setStrokeOpt(opt,changeElem){var id=opt.id;var bits=id.split("_");var pre=bits[0];var val=bits[1];if(changeElem){svgCanvas.setStrokeAttr("stroke-"+pre,val)}operaRepaint();setIcon("#cur_"+pre,id,20);$(opt).addClass("current").siblings().removeClass("current")}(function(){var button=$("#main_icon");var overlay=$("#main_icon span");var list=$("#main_menu");var on_button=false;var height=0;var js_hover=true;var set_click=false;var hideMenu=function(){list.fadeOut(200)};$(window).mouseup(function(evt){if(!on_button){button.removeClass("buttondown");if(evt.target.tagName.toLowerCase()!="input"){list.fadeOut(200)}else{if(!set_click){set_click=true;$(evt.target).click(function(){list.css("margin-left","-9999px").show()})}}}on_button=false}).mousedown(function(){$(".tools_flyout:visible").fadeOut()});overlay.bind("mousedown",function(){if(!button.hasClass("buttondown")){button.addClass("buttondown").removeClass("buttonup");list.css("margin-left",0).show();if(!height){height=list.height()}list.css("height",0).animate({height:height},200);on_button=true;return false}else{button.removeClass("buttondown").addClass("buttonup");list.fadeOut(200)}}).hover(function(){on_button=true}).mouseout(function(){on_button=false});var list_items=$("#main_menu li");list_items.mouseover(function(){js_hover=($(this).css("background-color")=="rgba(0, 0, 0, 0)");list_items.unbind("mouseover");if(js_hover){list_items.mouseover(function(){this.style.backgroundColor="#FFC"}).mouseout(function(){this.style.backgroundColor="transparent";return true})}})}());var addDropDown=function(elem,callback,dropUp){var button=$(elem).find("button");var list=$(elem).find("ul");var on_button=false;if(dropUp){$(elem).addClass("dropup")}$(elem).find("li").bind("mouseup",callback);$(window).mouseup(function(evt){if(!on_button){button.removeClass("down");list.hide()}on_button=false});button.bind("mousedown",function(){if(!button.hasClass("down")){button.addClass("down");list.show();on_button=true}else{button.removeClass("down");list.hide()}}).hover(function(){on_button=true}).mouseout(function(){on_button=false})};var addAltDropDown=function(elem,list,callback,opts){var button=$(elem);var list=$(list);var on_button=false;var dropUp=opts.dropUp;if(dropUp){$(elem).addClass("dropup")}list.find("li").bind("mouseup",function(){if(opts.seticon){setIcon("#cur_"+button[0].id,$(this).children());$(this).addClass("current").siblings().removeClass("current")}callback.apply(this,arguments)});$(window).mouseup(function(evt){if(!on_button){button.removeClass("down");list.hide();list.css({top:0,left:0})}on_button=false});var height=list.height();$(elem).bind("mousedown",function(){var off=$(elem).offset();if(dropUp){off.top-=list.height();off.left+=8}else{off.top+=$(elem).height()}$(list).offset(off);if(!button.hasClass("down")){button.addClass("down");list.show();on_button=true;return false}else{button.removeClass("down");list.hide();list.css({top:0,left:0})}}).hover(function(){on_button=true}).mouseout(function(){on_button=false});if(opts.multiclick){list.mousedown(function(){on_button=true})}};addDropDown("#font_family_dropdown",function(){var fam=$(this).text();$("#font_family").val($(this).text()).change()});addDropDown("#opacity_dropdown",function(){if($(this).find("div").length){return}var perc=parseInt($(this).text().split("%")[0]);changeOpacity(false,perc)},true);$("#opac_slider").slider({start:function(){$("#opacity_dropdown li:not(.special)").hide()},stop:function(){$("#opacity_dropdown li").show();$(window).mouseup()},slide:function(evt,ui){changeOpacity(ui)}});addDropDown("#blur_dropdown",function(){});var slideStart=false;$("#blur_slider").slider({max:10,step:0.1,stop:function(evt,ui){slideStart=false;changeBlur(ui);$("#blur_dropdown li").show();$(window).mouseup()},start:function(){slideStart=true},slide:function(evt,ui){changeBlur(ui,null,slideStart)}});addDropDown("#zoom_dropdown",function(){var item=$(this);var val=item.attr("data-val");if(val){zoomChanged(window,val)}else{changeZoom({value:parseInt(item.text())})}},true);addAltDropDown("#stroke_linecap","#linecap_opts",function(){setStrokeOpt(this,true)},{dropUp:true});addAltDropDown("#stroke_linejoin","#linejoin_opts",function(){setStrokeOpt(this,true)},{dropUp:true});addAltDropDown("#tool_position","#position_opts",function(){var letter=this.id.replace("tool_pos","").charAt(0);svgCanvas.alignSelectedElements(letter,"page")},{multiclick:true});(function(){var inp;var unfocus=function(){$(inp).blur()};$("#svg_editor input:text:not(#text)").focus(function(){inp=this;workarea.mousedown(unfocus)}).blur(function(){workarea.unbind("mousedown",unfocus)})}());var clickSelect=function(){if(toolButtonClick("#tool_select")){svgCanvas.setMode("select");$("#styleoverrides").text("#svgcanvas svg *{cursor:move;pointer-events:all}, #svgcanvas svg{cursor:default}")}};var clickFHPath=function(){if(toolButtonClick("#tool_fhpath")){svgCanvas.setMode("fhpath")}};var clickLine=function(){if(toolButtonClick("#tool_line")){svgCanvas.setMode("line")}};var clickSquare=function(){svgCanvas.setMode("square")};var clickRect=function(){svgCanvas.setMode("rect")};var clickFHRect=function(){svgCanvas.setMode("fhrect")};var clickCircle=function(){svgCanvas.setMode("circle")};var clickEllipse=function(){svgCanvas.setMode("ellipse")};var clickFHEllipse=function(){svgCanvas.setMode("fhellipse")};var clickImage=function(){if(toolButtonClick("#tool_image")){svgCanvas.setMode("image")}};var clickZoom=function(){if(toolButtonClick("#tool_zoom")){workarea.css("cursor","crosshair");svgCanvas.setMode("zoom")}};var dblclickZoom=function(){if(toolButtonClick("#tool_zoom")){zoomImage();setSelectMode()}};var clickText=function(){toolButtonClick("#tool_text");svgCanvas.setMode("text")};var clickPath=function(){toolButtonClick("#tool_path");svgCanvas.setMode("path")};var deleteSelected=function(){if(selectedElement!=null||multiselected){svgCanvas.deleteSelectedElements()}};var moveToTopSelected=function(){if(selectedElement!=null){svgCanvas.moveToTopSelectedElement()}};var moveToBottomSelected=function(){if(selectedElement!=null){svgCanvas.moveToBottomSelectedElement()}};var convertToPath=function(){if(selectedElement!=null){svgCanvas.convertToPath()}};var reorientPath=function(){if(selectedElement!=null){path.reorient()}};var moveSelected=function(dx,dy){if(selectedElement!=null||multiselected){svgCanvas.moveSelectedElements(dx,dy)}};var linkControlPoints=function(){var linked=!$("#tool_node_link").hasClass("push_button_pressed");if(linked){$("#tool_node_link").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_node_link").removeClass("push_button_pressed").addClass("tool_button")}path.linkControlPoints(linked)};var clonePathNode=function(){if(path.getNodePoint()){path.clonePathNode()}};var deletePathNode=function(){if(path.getNodePoint()){path.deletePathNode()}};var addSubPath=function(){var button=$("#tool_add_subpath");var sp=!button.hasClass("push_button_pressed");if(sp){button.addClass("push_button_pressed").removeClass("tool_button")}else{button.removeClass("push_button_pressed").addClass("tool_button")}path.addSubPath(sp)};var opencloseSubPath=function(){path.opencloseSubPath()};var selectNext=function(){svgCanvas.cycleElement(1)};var selectPrev=function(){svgCanvas.cycleElement(0)};var rotateSelected=function(cw){if(selectedElement==null||multiselected){return}var step=5;if(!cw){step*=-1}var new_angle=$("#angle").val()*1+step;svgCanvas.setRotationAngle(new_angle);updateContextPanel()};var clickClear=function(){var dims=curConfig.dimensions;$.confirm(uiStrings.QwantToClear,function(ok){if(!ok){return}setSelectMode();svgCanvas.clear();svgCanvas.setResolution(dims[0],dims[1]);updateCanvas(true);zoomImage();populateLayers();updateContextPanel()})};var clickBold=function(){svgCanvas.setBold(!svgCanvas.getBold());updateContextPanel()};var clickItalic=function(){svgCanvas.setItalic(!svgCanvas.getItalic());updateContextPanel()};var clickSave=function(){var saveOpts={images:curPrefs.img_save,round_digits:6};svgCanvas.save(saveOpts)};var clickExport=function(){if(!customHandlers.pngsave){var str=uiStrings.loadingImage;exportWindow=window.open("data:text/html;charset=utf-8,<title>"+str+"</title><h1>"+str+"</h1>")}if(window.canvg){svgCanvas.rasterExport()}else{$.getScript("canvg/rgbcolor.js",function(){$.getScript("canvg/canvg.js",function(){svgCanvas.rasterExport()})})}};var clickOpen=function(){svgCanvas.open()};var clickImport=function(){};var clickUndo=function(){if(undoMgr.getUndoStackSize()>0){undoMgr.undo();populateLayers()}};var clickRedo=function(){if(undoMgr.getRedoStackSize()>0){undoMgr.redo();populateLayers()}};var clickGroup=function(){if(multiselected){svgCanvas.groupSelectedElements()}else{if(selectedElement&&selectedElement.tagName=="g"){svgCanvas.ungroupSelectedElement()}}};var clickClone=function(){svgCanvas.cloneSelectedElements()};var clickAlign=function(){var letter=this.id.replace("tool_align","").charAt(0);svgCanvas.alignSelectedElements(letter,$("#align_relative_to").val())};var zoomImage=function(multiplier){var res=svgCanvas.getResolution();multiplier=multiplier?res.zoom*multiplier:1;$("#zoom").val(multiplier*100);svgCanvas.setZoom(multiplier);zoomDone();updateCanvas(true)};var zoomDone=function(){updateWireFrame()};var clickWireframe=function(){var wf=!$("#tool_wireframe").hasClass("push_button_pressed");if(wf){$("#tool_wireframe").addClass("push_button_pressed").removeClass("tool_button")}else{$("#tool_wireframe").removeClass("push_button_pressed").addClass("tool_button")}workarea.toggleClass("wireframe");if(supportsNonSS){return}var wf_rules=$("#wireframe_rules");if(!wf_rules.length){wf_rules=$('<style id="wireframe_rules"></style>').appendTo("head")}else{wf_rules.empty()}updateWireFrame()};var updateWireFrame=function(){if(supportsNonSS){return}var rule="#workarea.wireframe #svgcontent * { stroke-width: "+1/svgCanvas.getZoom()+"px; }";$("#wireframe_rules").text(workarea.hasClass("wireframe")?rule:"")};var showSourceEditor=function(){if(editingsource){return}editingsource=true;var str=svgCanvas.getSvgString();$("#svg_source_textarea").val(str);$("#svg_source_editor").fadeIn();properlySourceSizeTextArea();$("#svg_source_textarea").focus()};$("#svg_docprops_container").draggable({cancel:"button,fieldset"});var showDocProperties=function(){if(docprops){return}docprops=true;$("#image_save_opts input").val([curPrefs.img_save]);var res=svgCanvas.getResolution();$("#canvas_width").val(res.w);$("#canvas_height").val(res.h);$("#canvas_title").val(svgCanvas.getDocumentTitle());var blocks=$("#bg_blocks div");var cur_bg="cur_background";var canvas_bg=$.pref("bkgd_color");var url=$.pref("bkgd_url");blocks.each(function(){var blk=$(this);var is_bg=blk.css("background-color")==canvas_bg;blk.toggleClass(cur_bg,is_bg);if(is_bg){$("#canvas_bg_url").removeClass(cur_bg)}});if(!canvas_bg){blocks.eq(0).addClass(cur_bg)}if(url){$("#canvas_bg_url").val(url)}$("#svg_docprops").fadeIn()};var properlySourceSizeTextArea=function(){var height=$("#svg_source_container").height()-80;$("#svg_source_textarea").css("height",height)};var saveSourceEditor=function(){if(!editingsource){return}var saveChanges=function(){svgCanvas.clearSelection();hideSourceEditor();zoomImage();populateLayers();setTitle(svgCanvas.getDocumentTitle())};if(!svgCanvas.setSvgString($("#svg_source_textarea").val())){$.confirm(uiStrings.QerrorsRevertToSource,function(ok){if(!ok){return false}saveChanges()})}else{saveChanges()}setSelectMode()};var setTitle=function(title){var editor_title=$("title:first").text().split(":")[0];var new_title=editor_title+(title?": "+title:"");$("title:first").text(new_title)};var saveDocProperties=function(){var new_title=$("#canvas_title").val();setTitle(new_title);svgCanvas.setDocumentTitle(new_title);var width=$("#canvas_width"),w=width.val();var height=$("#canvas_height"),h=height.val();if(w!="fit"&&!svgCanvas.isValidUnit("width",w)){$.alert(uiStrings.invalidAttrValGiven);width.parent().addClass("error");return false}width.parent().removeClass("error");if(h!="fit"&&!svgCanvas.isValidUnit("height",h)){$.alert(uiStrings.invalidAttrValGiven);height.parent().addClass("error");return false}height.parent().removeClass("error");if(!svgCanvas.setResolution(w,h)){$.alert(uiStrings.noContentToFitTo);return false}curPrefs.img_save=$("#image_save_opts :checked").val();$.pref("img_save",curPrefs.img_save);var color=$("#bg_blocks div.cur_background").css("background-color")||"#FFF";setBackground(color,$("#canvas_bg_url").val());var lang=$("#lang_select").val();if(lang!=curPrefs.lang){Editor.putLocale(lang)}setIconSize($("#iconsize").val());updateCanvas();hideDocProperties()};function setBackground(color,url){$.pref("bkgd_color",color);$.pref("bkgd_url",url);svgCanvas.setBackground(color,url)}var setIcon=Editor.setIcon=function(elem,icon_id,forcedSize){var icon=(typeof icon_id=="string")?$.getSvgIcon(icon_id).clone():icon_id.clone();$(elem).empty().append(icon);if(forcedSize){var obj={};obj[elem+" .svg_icon"]=forcedSize;$.resizeSvgIcons(obj)}else{var size=curPrefs.iconsize;if(size&&size!=="m"){var icon_sizes={s:16,m:24,l:32,xl:48},obj={};obj[elem+" .svg_icon"]=icon_sizes[size];$.resizeSvgIcons(obj)}}};var setIconSize=Editor.setIconSize=function(size,force){if(size==curPrefs.size&&!force){return}$.pref("iconsize",size);$("#iconsize").val(size);var icon_sizes={s:16,m:24,l:32,xl:48};var size_num=icon_sizes[size];$(".tool_button, .push_button, .tool_button_current, .disabled, .icon_label, #url_notice, #tool_open").find("> svg, > img").each(function(){this.setAttribute("width",size_num);this.setAttribute("height",size_num)});$.resizeSvgIcons({".flyout_arrow_horiz > svg, .flyout_arrow_horiz > img":size_num/5,"#logo > svg, #logo > img":size_num*1.3,"#tools_bottom .icon_label > *":(size_num===16?18:size_num*0.75)});if(size!="s"){$.resizeSvgIcons({"#layerbuttons svg, #layerbuttons img":size_num*0.6})}var cssResizeRules={".tool_button, .push_button, .tool_button_current, .push_button_pressed, .disabled, .icon_label, .tools_flyout .tool_button":{width:{s:"16px",l:"32px",xl:"48px"},height:{s:"16px",l:"32px",xl:"48px"},padding:{s:"1px",l:"2px",xl:"3px"}},".tool_sep":{height:{s:"16px",l:"32px",xl:"48px"},margin:{s:"2px 2px",l:"2px 5px",xl:"2px 8px"}},"#main_icon":{width:{s:"31px",l:"53px",xl:"75px"},height:{s:"22px",l:"42px",xl:"64px"}},"#tools_top":{left:{s:"36px",l:"60px",xl:"80px"},height:{s:"50px",l:"88px",xl:"125px"}},"#tools_left":{width:{s:"22px",l:"30px",xl:"38px"},top:{s:"50px",l:"87px",xl:"125px"}},"div#workarea":{left:{s:"27px",l:"46px",xl:"65px"},top:{s:"50px",l:"88px",xl:"125px"},bottom:{s:"55px",l:"98px",xl:"145px"}},"#tools_bottom":{left:{s:"27px",l:"46px",xl:"65px"},height:{s:"58px",l:"98px",xl:"145px"}},"#color_tools":{"border-spacing":{s:"0 1px"},"margin-top":{s:"-1px"}},"#color_tools .icon_label":{width:{l:"43px",xl:"60px"}},".color_tool":{height:{s:"20px"}},"#tool_opacity":{top:{s:"1px"},height:{s:"auto",l:"auto",xl:"auto"}},"#tools_top input, #tools_bottom input":{"margin-top":{s:"2px",l:"4px",xl:"5px"},height:{s:"auto",l:"auto",xl:"auto"},border:{s:"1px solid #555",l:"auto",xl:"auto"},"font-size":{s:".9em",l:"1.2em",xl:"1.4em"}},"#zoom_panel":{"margin-top":{s:"3px",l:"4px",xl:"5px"}},"#copyright, #tools_bottom .label":{"font-size":{l:"1.5em",xl:"2em"},"line-height":{s:"15px"}},"#tools_bottom_2":{width:{l:"295px",xl:"355px"},top:{s:"4px"}},"#tools_top > div, #tools_top":{"line-height":{s:"17px",l:"34px",xl:"50px"}},".dropdown button":{height:{s:"18px",l:"34px",xl:"40px"},"line-height":{s:"18px",l:"34px",xl:"40px"},"margin-top":{s:"3px"}},"#tools_top label, #tools_bottom label":{"font-size":{s:"1em",l:"1.5em",xl:"2em"},height:{s:"25px",l:"42px",xl:"64px"}},"div.toolset":{height:{s:"25px",l:"42px",xl:"64px"}},"#tool_bold, #tool_italic":{"font-size":{s:"1.5em",l:"3em",xl:"4.5em"}},"#sidepanels":{top:{s:"50px",l:"88px",xl:"125px"},bottom:{s:"51px",l:"68px",xl:"65px"}},"#layerbuttons":{width:{l:"130px",xl:"175px"},height:{l:"24px",xl:"30px"}},"#layerlist":{width:{l:"128px",xl:"150px"}},".layer_button":{width:{l:"19px",xl:"28px"},height:{l:"19px",xl:"28px"}},"input.spin-button":{"background-image":{l:"url('images/spinbtn_updn_big.png')",xl:"url('images/spinbtn_updn_big.png')"},"background-position":{l:"100% -5px",xl:"100% -2px"},"padding-right":{l:"24px",xl:"24px"}},"input.spin-button.up":{"background-position":{l:"100% -45px",xl:"100% -42px"}},"input.spin-button.down":{"background-position":{l:"100% -85px",xl:"100% -82px"}},"#position_opts":{width:{all:(size_num*4)+"px"}}};var rule_elem=$("#tool_size_rules");if(!rule_elem.length){rule_elem=$('<style id="tool_size_rules"></style>').appendTo("head")}else{rule_elem.empty()}if(size!="m"){var style_str="";$.each(cssResizeRules,function(selector,rules){selector="#svg_editor "+selector.replace(/,/g,", #svg_editor");style_str+=selector+"{";$.each(rules,function(prop,values){if(values[size]||values.all){style_str+=(prop+":"+(values[size]||values.all)+";")}});style_str+="}"});rule_elem.text(style_str)}setFlyoutPositions()};var cancelOverlays=function(){$("#dialog_box").hide();if(!editingsource&&!docprops){return}if(editingsource){var oldString=svgCanvas.getSvgString();if(oldString!=$("#svg_source_textarea").val()){$.confirm(uiStrings.QignoreSourceChanges,function(ok){if(ok){hideSourceEditor()}})}else{hideSourceEditor()}}else{if(docprops){hideDocProperties()}}};var hideSourceEditor=function(){$("#svg_source_editor").hide();editingsource=false;$("#svg_source_textarea").blur()};var hideDocProperties=function(){$("#svg_docprops").hide();$("#canvas_width,#canvas_height").removeAttr("disabled");$("#resolution")[0].selectedIndex=0;$("#image_save_opts input").val([curPrefs.img_save]);docprops=false};var win_wh={width:$(window).width(),height:$(window).height()};$(window).resize(function(evt){if(editingsource){properlySourceSizeTextArea()}$.each(win_wh,function(type,val){var curval=$(window)[type]();workarea[0]["scroll"+(type==="width"?"Left":"Top")]-=(curval-val)/2;win_wh[type]=curval})});$("#url_notice").click(function(){$.alert(this.title)});$("#change_image_url").click(promptImgURL);function promptImgURL(){$.prompt(uiStrings.enterNewImgURL,default_img_url,function(url){if(url){setImageURL(url)}})}function setImageURL(url){if(!url){url=default_img_url}svgCanvas.setImageURL(url);$("#image_url").val(url);if(url.indexOf("data:")===0){$("#image_url").hide();$("#change_image_url").show()}else{svgCanvas.embedImage(url,function(datauri){if(!datauri){$("#url_notice").show()}else{$("#url_notice").hide()}default_img_url=url});$("#image_url").show();$("#change_image_url").hide()}}(function(){var toolnames=["clear","open","save","source","delete","delete_multi","paste","clone","clone_multi","move_top","move_bottom"];var all_tools="";var cur_class="tool_button_current";$.each(toolnames,function(i,item){all_tools+="#tool_"+item+(i==toolnames.length-1?",":"")});$(all_tools).mousedown(function(){$(this).addClass(cur_class)}).bind("mousedown mouseout",function(){$(this).removeClass(cur_class)});$("#tool_undo, #tool_redo").mousedown(function(){if(!$(this).hasClass("disabled")){$(this).addClass(cur_class)}}).bind("mousedown mouseout",function(){$(this).removeClass(cur_class)})}());if(isMac){var shortcutButtons=["tool_clear","tool_save","tool_source","tool_undo","tool_redo","tool_clone"];var i=shortcutButtons.length;while(i--){var button=document.getElementById(shortcutButtons[i]);var title=button.title;var index=title.indexOf("Ctrl+");button.title=[title.substr(0,index),"Cmd+",title.substr(index+5)].join("")}}var colorPicker=function(elem){var picker=elem.attr("id")=="stroke_color"?"stroke":"fill";var paint=(picker=="stroke"?strokePaint:fillPaint);var title=(picker=="stroke"?"Pick a Stroke Paint and Opacity":"Pick a Fill Paint and Opacity");var was_none=false;var pos=elem.position();$("#color_picker").draggable({cancel:".jPicker_table,.jGraduate_lgPick,.jGraduate_rgPick"}).css({left:pos.left,bottom:50-pos.top}).jGraduate({paint:paint,window:{pickerTitle:title},images:{clientPath:"jgraduate/images/"}},function(p){paint=new $.jGraduate.Paint(p);var oldgrad=document.getElementById("gradbox_"+picker);var svgbox=oldgrad.parentNode;var rectbox=svgbox.firstChild;if(paint.type=="linearGradient"||paint.type=="radialGradient"){svgbox.removeChild(oldgrad);var newgrad=svgbox.appendChild(document.importNode(paint[paint.type],true));newgrad.id="gradbox_"+picker;rectbox.setAttribute("fill","url(#gradbox_"+picker+")");rectbox.setAttribute("opacity",paint.alpha/100)}else{rectbox.setAttribute("fill",paint.solidColor!="none"?"#"+paint.solidColor:"none");rectbox.setAttribute("opacity",paint.alpha/100)}if(picker=="stroke"){svgCanvas.setPaint("stroke",paint);strokePaint=paint}else{svgCanvas.setPaint("fill",paint);fillPaint=paint}updateToolbar();$("#color_picker").hide()},function(p){$("#color_picker").hide()})};var updateToolButtonState=function(){var bNoFill=(svgCanvas.getColor("fill")=="none");var bNoStroke=(svgCanvas.getColor("stroke")=="none");var buttonsNeedingStroke=["#tool_fhpath","#tool_line"];var buttonsNeedingFillAndStroke=["#tools_rect .tool_button","#tools_ellipse .tool_button","#tool_text","#tool_path"];if(bNoStroke){for(index in buttonsNeedingStroke){var button=buttonsNeedingStroke[index];if($(button).hasClass("tool_button_current")){clickSelect()}$(button).addClass("disabled")}}else{for(index in buttonsNeedingStroke){var button=buttonsNeedingStroke[index];$(button).removeClass("disabled")}}if(bNoStroke&&bNoFill){for(index in buttonsNeedingFillAndStroke){var button=buttonsNeedingFillAndStroke[index];if($(button).hasClass("tool_button_current")){clickSelect()}$(button).addClass("disabled")}}else{for(index in buttonsNeedingFillAndStroke){var button=buttonsNeedingFillAndStroke[index];$(button).removeClass("disabled")}}svgCanvas.runExtensions("toolButtonStateUpdate",{nofill:bNoFill,nostroke:bNoStroke});$(".tools_flyout").each(function(){var shower=$("#"+this.id+"_show");var has_enabled=false;$(this).children().each(function(){if(!$(this).hasClass("disabled")){has_enabled=true}});shower.toggleClass("disabled",!has_enabled)});operaRepaint()};var svgdocbox=new DOMParser().parseFromString('<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" fill="#'+curConfig.initFill.color+'" opacity="'+curConfig.initFill.opacity+'"/> <linearGradient id="gradbox_"> <stop stop-color="#000" offset="0.0"/> <stop stop-color="#FF0000" offset="1.0"/> </linearGradient></svg>',"text/xml");var boxgrad=svgdocbox.getElementById("gradbox_");boxgrad.id="gradbox_fill";svgdocbox.documentElement.setAttribute("width",16.5);$("#fill_color").append(document.importNode(svgdocbox.documentElement,true));boxgrad.id="gradbox_stroke";svgdocbox.documentElement.setAttribute("width",16.5);$("#stroke_color").append(document.importNode(svgdocbox.documentElement,true));$("#stroke_color rect").attr({fill:"#"+curConfig.initStroke.color,opacity:curConfig.initStroke.opacity});$("#stroke_width").val(curConfig.initStroke.width);$("#group_opacity").val(curConfig.initOpacity*100);var test_el=svgdocbox.documentElement.firstChild;test_el.setAttribute("style","vector-effect:non-scaling-stroke");var supportsNonSS=(test_el.style.vectorEffect=="non-scaling-stroke");test_el.removeAttribute("style");var blur_test=svgdocbox.createElementNS("http://www.w3.org/2000/svg","feGaussianBlur");if(typeof blur_test.stdDeviationX==="undefined"){$("#tool_blur").hide()}$(blur_test).remove();setTimeout(function(){svgCanvas.embedImage("images/logo.png",function(datauri){if(!datauri){$("#image_save_opts [value=embed]").attr("disabled","disabled");$("#image_save_opts input").val(["ref"]);curPrefs.img_save="ref";$("#image_opt_embed").css("color","#666").attr("title",uiStrings.featNotSupported)}})},1000);$("#fill_color, #tool_fill .icon_label").click(function(){colorPicker($("#fill_color"));updateToolButtonState()});$("#stroke_color, #tool_stroke .icon_label").click(function(){colorPicker($("#stroke_color"));updateToolButtonState()});$("#group_opacityLabel").click(function(){$("#opacity_dropdown button").mousedown();$(window).mouseup()});$("#zoomLabel").click(function(){$("#zoom_dropdown button").mousedown();$(window).mouseup()});$("#tool_move_top").mousedown(function(evt){$("#tools_stacking").show();evt.preventDefault()});$(".layer_button").mousedown(function(){$(this).addClass("layer_buttonpressed")}).mouseout(function(){$(this).removeClass("layer_buttonpressed")}).mouseup(function(){$(this).removeClass("layer_buttonpressed")});$(".push_button").mousedown(function(){if(!$(this).hasClass("disabled")){$(this).addClass("push_button_pressed").removeClass("push_button")}}).mouseout(function(){$(this).removeClass("push_button_pressed").addClass("push_button")}).mouseup(function(){$(this).removeClass("push_button_pressed").addClass("push_button")});$("#layer_new").click(function(){var curNames=new Array(svgCanvas.getNumLayers());for(var i=0;i<curNames.length;++i){curNames[i]=svgCanvas.getLayer(i)}var j=(curNames.length+1);var uniqName=uiStrings.layer+" "+j;while($.inArray(uniqName,curNames)!=-1){j++;uniqName=uiStrings.layer+" "+j}$.prompt(uiStrings.enterUniqueLayerName,uniqName,function(newName){if(!newName){return}if($.inArray(newName,curNames)!=-1){$.alert(uiStrings.dupeLayerName);return}svgCanvas.createLayer(newName);updateContextPanel();populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:first").addClass("layersel")})});$("#layer_delete").click(function(){if(svgCanvas.deleteCurrentLayer()){updateContextPanel();populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:first").addClass("layersel")}});$("#layer_up").click(function(){var curIndex=$("#layerlist tr.layersel").prevAll().length;if(curIndex>0){var total=$("#layerlist tr.layer").length;curIndex--;svgCanvas.setCurrentLayerPosition(total-curIndex-1);populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:eq("+curIndex+")").addClass("layersel")}});$("#layer_down").click(function(){var curIndex=$("#layerlist tr.layersel").prevAll().length;var total=$("#layerlist tr.layer").length;if(curIndex<total-1){curIndex++;svgCanvas.setCurrentLayerPosition(total-curIndex-1);populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:eq("+curIndex+")").addClass("layersel")}});$("#layer_rename").click(function(){var curIndex=$("#layerlist tr.layersel").prevAll().length;var oldName=$("#layerlist tr.layersel td.layername").text();$.prompt(uiStrings.enterNewLayerName,"",function(newName){if(!newName){return}if(oldName==newName){$.alert(uiStrings.layerHasThatName);return}var curNames=new Array(svgCanvas.getNumLayers());for(var i=0;i<curNames.length;++i){curNames[i]=svgCanvas.getLayer(i)}if($.inArray(newName,curNames)!=-1){$.alert(uiStrings.layerHasThatName);return}svgCanvas.renameCurrentLayer(newName);populateLayers();$("#layerlist tr.layer").removeClass("layersel");$("#layerlist tr.layer:eq("+curIndex+")").addClass("layersel")})});var SIDEPANEL_MAXWIDTH=300;var SIDEPANEL_OPENWIDTH=150;var sidedrag=-1,sidedragging=false,allowmove=false;var resizePanel=function(evt){if(!allowmove){return}if(sidedrag==-1){return}sidedragging=true;var deltax=sidedrag-evt.pageX;var sidepanels=$("#sidepanels");var sidewidth=parseInt(sidepanels.css("width"));if(sidewidth+deltax>SIDEPANEL_MAXWIDTH){deltax=SIDEPANEL_MAXWIDTH-sidewidth;sidewidth=SIDEPANEL_MAXWIDTH}else{if(sidewidth+deltax<2){deltax=2-sidewidth;sidewidth=2}}if(deltax==0){return}sidedrag-=deltax;var layerpanel=$("#layerpanel");workarea.css("right",parseInt(workarea.css("right"))+deltax);sidepanels.css("width",parseInt(sidepanels.css("width"))+deltax);layerpanel.css("width",parseInt(layerpanel.css("width"))+deltax)};$("#sidepanel_handle").mousedown(function(evt){sidedrag=evt.pageX;$(window).mousemove(resizePanel);allowmove=false;setTimeout(function(){allowmove=true},20)}).mouseup(function(evt){if(!sidedragging){toggleSidePanel()}sidedrag=-1;sidedragging=false});$(window).mouseup(function(){sidedrag=-1;sidedragging=false;$("#svg_editor").unbind("mousemove",resizePanel)});var toggleSidePanel=function(close){var w=parseInt($("#sidepanels").css("width"));var deltax=(w>2||close?2:SIDEPANEL_OPENWIDTH)-w;var sidepanels=$("#sidepanels");var layerpanel=$("#layerpanel");workarea.css("right",parseInt(workarea.css("right"))+deltax);sidepanels.css("width",parseInt(sidepanels.css("width"))+deltax);layerpanel.css("width",parseInt(layerpanel.css("width"))+deltax)};var toggleHighlightLayer=function(layerNameToHighlight){var curNames=new Array(svgCanvas.getNumLayers());for(var i=0;i<curNames.length;++i){curNames[i]=svgCanvas.getLayer(i)}if(layerNameToHighlight){for(var i=0;i<curNames.length;++i){if(curNames[i]!=layerNameToHighlight){svgCanvas.setLayerOpacity(curNames[i],0.5)}}}else{for(var i=0;i<curNames.length;++i){svgCanvas.setLayerOpacity(curNames[i],1)}}};var populateLayers=function(){var layerlist=$("#layerlist tbody");var selLayerNames=$("#selLayerNames");layerlist.empty();selLayerNames.empty();var currentlayer=svgCanvas.getCurrentLayer();var layer=svgCanvas.getNumLayers();var icon=$.getSvgIcon("eye");while(layer--){var name=svgCanvas.getLayer(layer);var appendstr='<tr class="layer';if(name==currentlayer){appendstr+=" layersel"}appendstr+='">';if(svgCanvas.getLayerVisibility(name)){appendstr+='<td class="layervis"/><td class="layername" >'+name+"</td></tr>"}else{appendstr+='<td class="layervis layerinvis"/><td class="layername" >'+name+"</td></tr>"}layerlist.append(appendstr);selLayerNames.append('<option value="'+name+'">'+name+"</option>")}if(icon!==undefined){var copy=icon.clone();$("td.layervis",layerlist).append(icon.clone());$.resizeSvgIcons({"td.layervis .svg_icon":14})}$("#layerlist td.layername").click(function(evt){$("#layerlist tr.layer").removeClass("layersel");var row=$(this.parentNode);row.addClass("layersel");svgCanvas.setCurrentLayer(this.textContent);evt.preventDefault()}).mouseover(function(evt){$(this).css({"font-style":"italic",color:"blue"});toggleHighlightLayer(this.textContent)}).mouseout(function(evt){$(this).css({"font-style":"normal",color:"black"});toggleHighlightLayer()});$("#layerlist td.layervis").click(function(evt){var row=$(this.parentNode).prevAll().length;var name=$("#layerlist tr.layer:eq("+row+") td.layername").text();var vis=$(this).hasClass("layerinvis");svgCanvas.setLayerVisibility(name,vis);if(vis){$(this).removeClass("layerinvis")}else{$(this).addClass("layerinvis")}});var num=5-$("#layerlist tr.layer").size();while(num-->0){layerlist.append('<tr><td style="color:white">_</td><td/></tr>')}};populateLayers();var centerCanvas=function(){workarea.css("line-height",workarea.height()+"px")};$(window).bind("load resize",centerCanvas);function stepFontSize(elem,step){var orig_val=elem.value-0;var sug_val=orig_val+step;var increasing=sug_val>=orig_val;if(step===0){return orig_val}if(orig_val>=24){if(increasing){return Math.round(orig_val*1.1)}else{return Math.round(orig_val/1.1)}}else{if(orig_val<=1){if(increasing){return orig_val*2}else{return orig_val/2}}else{return sug_val}}}function stepZoom(elem,step){var orig_val=elem.value-0;if(orig_val===0){return 100}var sug_val=orig_val+step;if(step===0){return orig_val}if(orig_val>=100){return sug_val}else{if(sug_val>=orig_val){return orig_val*2}else{return orig_val/2}}}$("#resolution").change(function(){var wh=$("#canvas_width,#canvas_height");if(!this.selectedIndex){if($("#canvas_width").val()=="fit"){wh.removeAttr("disabled").val(100)}}else{if(this.value=="content"){wh.val("fit").attr("disabled","disabled")}else{var dims=this.value.split("x");$("#canvas_width").val(dims[0]);$("#canvas_height").val(dims[1]);wh.removeAttr("disabled")}}});$("input,select").attr("autocomplete","off");var Actions=function(){var tool_buttons=[{sel:"#tool_select",fn:clickSelect,evt:"click",key:1},{sel:"#tool_fhpath",fn:clickFHPath,evt:"click",key:2},{sel:"#tool_line",fn:clickLine,evt:"click",key:3},{sel:"#tool_rect",fn:clickRect,evt:"mouseup",key:4,parent:"#tools_rect",icon:"rect"},{sel:"#tool_square",fn:clickSquare,evt:"mouseup",key:"Shift+4",parent:"#tools_rect",icon:"square"},{sel:"#tool_fhrect",fn:clickFHRect,evt:"mouseup",parent:"#tools_rect",icon:"fh_rect"},{sel:"#tool_ellipse",fn:clickEllipse,evt:"mouseup",key:5,parent:"#tools_ellipse",icon:"ellipse"},{sel:"#tool_circle",fn:clickCircle,evt:"mouseup",key:"Shift+5",parent:"#tools_ellipse",icon:"circle"},{sel:"#tool_fhellipse",fn:clickFHEllipse,evt:"mouseup",parent:"#tools_ellipse",icon:"fh_ellipse"},{sel:"#tool_path",fn:clickPath,evt:"click",key:6},{sel:"#tool_text",fn:clickText,evt:"click",key:7},{sel:"#tool_image",fn:clickImage,evt:"mouseup",key:8},{sel:"#tool_zoom",fn:clickZoom,evt:"mouseup",key:9},{sel:"#tool_clear",fn:clickClear,evt:"mouseup",key:[modKey+"N",true]},{sel:"#tool_save",fn:function(){editingsource?saveSourceEditor():clickSave()},evt:"mouseup",key:[modKey+"S",true]},{sel:"#tool_export",fn:clickExport,evt:"mouseup"},{sel:"#tool_open",fn:clickOpen,evt:"mouseup",key:[modKey+"O",true]},{sel:"#tool_import",fn:clickImport,evt:"mouseup"},{sel:"#tool_source",fn:showSourceEditor,evt:"click",key:["U",true]},{sel:"#tool_wireframe",fn:clickWireframe,evt:"click",key:["F",true]},{sel:"#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel",fn:cancelOverlays,evt:"click",key:["esc",false,false],hidekey:true},{sel:"#tool_source_save",fn:saveSourceEditor,evt:"click"},{sel:"#tool_docprops_save",fn:saveDocProperties,evt:"click"},{sel:"#tool_docprops",fn:showDocProperties,evt:"mouseup",key:["P",true]},{sel:"#tool_delete,#tool_delete_multi",fn:deleteSelected,evt:"click",key:["del/backspace",true]},{sel:"#tool_reorient",fn:reorientPath,evt:"click"},{sel:"#tool_node_link",fn:linkControlPoints,evt:"click"},{sel:"#tool_node_clone",fn:clonePathNode,evt:"click"},{sel:"#tool_node_delete",fn:deletePathNode,evt:"click"},{sel:"#tool_openclose_path",fn:opencloseSubPath,evt:"click"},{sel:"#tool_add_subpath",fn:addSubPath,evt:"click"},{sel:"#tool_move_top",fn:moveToTopSelected,evt:"click",key:"shift+up"},{sel:"#tool_move_bottom",fn:moveToBottomSelected,evt:"click",key:"shift+down"},{sel:"#tool_topath",fn:convertToPath,evt:"click"},{sel:"#tool_undo",fn:clickUndo,evt:"click",key:[modKey+"Z",true]},{sel:"#tool_redo",fn:clickRedo,evt:"click",key:[modKey+"Y",true]},{sel:"#tool_clone,#tool_clone_multi",fn:clickClone,evt:"click",key:[modKey+"C",true]},{sel:"#tool_group",fn:clickGroup,evt:"click",key:[modKey+"G",true]},{sel:"#tool_ungroup",fn:clickGroup,evt:"click"},{sel:"[id^=tool_align]",fn:clickAlign,evt:"click"},{sel:"#tool_bold",fn:clickBold,evt:"mousedown"},{sel:"#tool_italic",fn:clickItalic,evt:"mousedown"},{sel:"#sidepanel_handle",fn:toggleSidePanel,key:[modKey+"X"]},{key:"shift+left",fn:function(){rotateSelected(0)}},{key:"shift+right",fn:function(){rotateSelected(1)}},{key:"shift+O",fn:selectPrev},{key:"shift+P",fn:selectNext},{key:["ctrl+up",true],fn:function(){zoomImage(2)}},{key:["ctrl+down",true],fn:function(){zoomImage(0.5)}},{key:["up",true],fn:function(){moveSelected(0,-1)}},{key:["down",true],fn:function(){moveSelected(0,1)}},{key:["left",true],fn:function(){moveSelected(-1,0)}},{key:["right",true],fn:function(){moveSelected(1,0)}},{key:"A",fn:function(){svgCanvas.selectAllInCurrentLayer()}}];var key_assocs={"4/Shift+4":"#tools_rect_show","5/Shift+5":"#tools_ellipse_show"};return{setAll:function(){var flyouts={};$.each(tool_buttons,function(i,opts){if(opts.sel){var btn=$(opts.sel);if(opts.evt){btn[opts.evt](opts.fn)}if(opts.parent){var f_h=$(opts.parent);if(!f_h.length){f_h=makeFlyoutHolder(opts.parent.substr(1))}f_h.append(btn);if(!$.isArray(flyouts[opts.parent])){flyouts[opts.parent]=[]}flyouts[opts.parent].push(opts)}}if(opts.key){var keyval,shortcut="",disInInp=true,fn=opts.fn,pd=false;if($.isArray(opts.key)){keyval=opts.key[0];if(opts.key.length>1){pd=opts.key[1]}if(opts.key.length>2){disInInp=opts.key[2]}}else{keyval=opts.key}keyval+="";$.each(keyval.split("/"),function(i,key){$(document).bind("keydown",key,function(e){fn();if(pd){e.preventDefault()}return false})});if(opts.sel&&!opts.hidekey){var new_title=btn.attr("title").split("[")[0]+"["+keyval+"]";key_assocs[keyval]=opts.sel;if(!btn.parents("#main_menu").length){btn.attr("title",new_title)}}}});setupFlyouts(flyouts);$(".attr_changer, #image_url").bind("keydown","return",function(evt){$(this).change();evt.preventDefault()});$("#tool_zoom").dblclick(dblclickZoom)},setTitles:function(){$.each(key_assocs,function(keyval,sel){var menu=($(sel).parents("#main_menu").length);$(sel).each(function(){if(menu){var t=$(this).text().split(" [")[0]}else{var t=this.title.split(" [")[0]}var key_str="";$.each(keyval.split("/"),function(i,key){var mod_bits=key.split("+"),mod="";if(mod_bits.length>1){mod=mod_bits[0]+"+";key=mod_bits[1]}key_str+=(i?"/":"")+mod+(uiStrings["key_"+key]||key)});if(menu){this.lastChild.textContent=t+" ["+key_str+"]"}else{this.title=t+" ["+key_str+"]"}})})},getButtonData:function(sel){var b;$.each(tool_buttons,function(i,btn){if(btn.sel===sel){b=btn}});return b}}}();Actions.setAll();Editor.ready(function(){var itool=curConfig.initTool,container=$("#tools_left, #svg_editor .tools_flyout"),pre_tool=container.find("#tool_"+itool),reg_tool=container.find("#"+itool);if(pre_tool.length){tool=pre_tool}else{if(reg_tool.length){tool=reg_tool}else{tool=$("#tool_select")}}tool.click().mouseup();if(curConfig.wireframe){$("#tool_wireframe").click()}if(curConfig.showlayers){toggleSidePanel()}});$("#rect_rx").SpinButton({min:0,max:1000,step:1,callback:changeRectRadius});$("#stroke_width").SpinButton({min:0,max:99,step:1,smallStep:0.1,callback:changeStrokeWidth});$("#angle").SpinButton({min:-180,max:180,step:5,callback:changeRotationAngle});$("#font_size").SpinButton({step:1,min:0.001,stepfunc:stepFontSize,callback:changeFontSize});$("#group_opacity").SpinButton({step:5,min:0,max:100,callback:changeOpacity});$("#blur").SpinButton({step:0.1,min:0,max:10,callback:changeBlur});$("#zoom").SpinButton({min:0.001,max:10000,step:50,stepfunc:stepZoom,callback:changeZoom});window.onbeforeunload=function(){if(undoMgr.getUndoStackSize()===0){show_save_warning=false}if(!curConfig.no_save_warning&&show_save_warning){return"There are unsaved changes."}};Editor.openPrep=function(func){$("#main_menu").hide();if(undoMgr.getUndoStackSize()===0){func(true)}else{$.confirm(uiStrings.QwantToOpen,func)}};if(window.FileReader){var inp=$('<input type="file">').change(function(){var f=this;Editor.openPrep(function(ok){if(!ok){return}svgCanvas.clear();if(f.files.length==1){var reader=new FileReader();reader.onloadend=function(e){svgCanvas.setSvgString(e.target.result);updateCanvas()};reader.readAsText(f.files[0])}})});$("#tool_open").show().prepend(inp);var inp2=$('<input type="file">').change(function(){$("#main_menu").hide();if(this.files.length==1){var reader=new FileReader();reader.onloadend=function(e){svgCanvas.importSvgString(e.target.result);updateCanvas()};reader.readAsText(this.files[0])}});$("#tool_import").show().prepend(inp2)}var updateCanvas=Editor.updateCanvas=function(center,new_ctr){var w=workarea.width(),h=workarea.height();var w_orig=w,h_orig=h;var zoom=svgCanvas.getZoom();var w_area=workarea;var cnvs=$("#svgcanvas");var old_ctr={x:w_area[0].scrollLeft+w_orig/2,y:w_area[0].scrollTop+h_orig/2};var multi=curConfig.canvas_expansion;w=Math.max(w_orig,svgCanvas.contentW*zoom*multi);h=Math.max(h_orig,svgCanvas.contentH*zoom*multi);if(w==w_orig&&h==h_orig){workarea.css("overflow","hidden")}else{workarea.css("overflow","scroll")}var old_can_y=cnvs.height()/2;var old_can_x=cnvs.width()/2;cnvs.width(w).height(h);var new_can_y=h/2;var new_can_x=w/2;var offset=svgCanvas.updateCanvas(w,h);var ratio=new_can_x/old_can_x;var scroll_x=w/2-w_orig/2;var scroll_y=h/2-h_orig/2;if(!new_ctr){var old_dist_x=old_ctr.x-old_can_x;var new_x=new_can_x+old_dist_x*ratio;var old_dist_y=old_ctr.y-old_can_y;var new_y=new_can_y+old_dist_y*ratio;new_ctr={x:new_x,y:new_y}}else{new_ctr.x+=offset.x,new_ctr.y+=offset.y}if(center){w_area[0].scrollLeft=scroll_x;w_area[0].scrollTop=scroll_y}else{w_area[0].scrollLeft=new_ctr.x-w_orig/2;w_area[0].scrollTop=new_ctr.y-h_orig/2}};updateCanvas(true);var good_langs=[];$("#lang_select option").each(function(){good_langs.push(this.value)});Editor.putLocale(null,good_langs);try{json_encode=function(obj){if(window.JSON&&JSON.stringify){return JSON.stringify(obj)}var enc=arguments.callee;if(typeof obj=="boolean"||typeof obj=="number"){return obj+""}else{if(typeof obj=="string"){return'"'+obj.replace(/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"'}else{if(obj.length){for(var i=0;i<obj.length;i++){obj[i]=enc(obj[i])}return"["+obj.join(",")+"]"}else{var pairs=[];for(var k in obj){pairs.push(enc(k)+":"+enc(obj[k]))}return"{"+pairs.join(",")+"}"}}}};window.addEventListener("message",function(e){var cbid=parseInt(e.data.substr(0,e.data.indexOf(";")));try{e.source.postMessage("SVGe"+cbid+";"+json_encode(eval(e.data)),e.origin)}catch(err){e.source.postMessage("SVGe"+cbid+";error:"+err.message,e.origin)}},false)}catch(err){window.embed_error=err}$(function(){window.svgCanvas=svgCanvas;svgCanvas.ready=svgEditor.ready});Editor.setLang=function(lang,strings){$.pref("lang",lang);$("#lang_select").val(lang);if(strings){var oldLayerName=$("#layerlist tr.layersel td.layername").text();var rename_layer=(oldLayerName==uiStrings.layer+" 1");$.extend(uiStrings,strings);svgCanvas.setUiStrings(strings);Actions.setTitles();if(rename_layer){svgCanvas.renameCurrentLayer(uiStrings.layer+" 1");populateLayers()}svgCanvas.runExtensions("langChanged",lang);setFlyoutTitles();var elems={"#stroke_color":"#tool_stroke .icon_label, #tool_stroke .color_block","#fill_color":"#tool_fill label, #tool_fill .color_block","#linejoin_miter":"#cur_linejoin","#linecap_butt":"#cur_linecap"};$.each(elems,function(source,dest){$(dest).attr("title",$(source)[0].title)});$("#multiselected_panel div[id^=tool_align]").each(function(){$("#tool_pos"+this.id.substr(10))[0].title=this.title})}}};var callbacks=[];Editor.ready=function(cb){if(!is_ready){callbacks.push(cb)}else{cb()}};Editor.runCallbacks=function(){$.each(callbacks,function(){this()});is_ready=true};Editor.loadFromString=function(str){Editor.ready(function(){svgCanvas.setSvgString(str)})};Editor.loadFromURL=function(url){Editor.ready(function(){$.ajax({url:url,dataType:"text",success:svgCanvas.setSvgString,error:function(xhr,stat,err){if(xhr.responseText){svgCanvas.setSvgString(xhr.responseText)}else{$.alert("Unable to load from URL. Error: \n"+err+"")}}})})};Editor.loadFromDataURI=function(str){Editor.ready(function(){svgCanvas.setSvgString(str);var pre="data:image/svg+xml;base64,";var src=str.substring(pre.length);svgCanvas.setSvgString(Utils.decode64(src))})};Editor.addExtension=function(){var args=arguments;$(function(){svgCanvas.addExtension.apply(this,args)})};return Editor}(jQuery)}$(svgEditor.init)})(); \ No newline at end of file
diff --git a/files_svgedit/js/svgcanvas.min.js b/files_svgedit/js/svgcanvas.min.js
new file mode 100644
index 000000000..0258a44e5
--- /dev/null
+++ b/files_svgedit/js/svgcanvas.min.js
@@ -0,0 +1 @@
+;if(!window.console){window.console={};window.console.log=function(a){};window.console.dir=function(a){}}if(window.opera){window.console.log=function(a){opera.postError(a)};window.console.dir=function(a){}}(function(){var a=jQuery.fn.attr,b="http://www.w3.org/2000/svg";jQuery.fn.attr=function(o,l){var g=this.length;if(!g){return this}for(var f=0;f<g;f++){var c=this[f];if(c.namespaceURI===b){if(l!==undefined){c.setAttribute(o,l)}else{if($.isArray(o)){var d=o.length,e={};while(d--){var k=o[d];var h=c.getAttribute(k);if(h||h==="0"){h=isNaN(h)?h:h-0}e[k]=h}return e}else{if(typeof o==="object"){for(var m in o){c.setAttribute(m,o[m])}}else{var h=c.getAttribute(o);if(h||h==="0"){h=isNaN(h)?h:h-0}return h}}}}else{return a.apply(this,arguments)}}return this}}());$.SvgCanvas=function(aL,ay){var k=!!window.opera,aC=navigator.userAgent.indexOf("AppleWebKit")!=-1,a0={},aF={a:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","mask","opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","xlink:href","xlink:title"],circle:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","r","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],clipPath:["class","clipPathUnits","id"],defs:[],desc:[],ellipse:["class","clip-path","clip-rule","cx","cy","fill","fill-opacity","fill-rule","filter","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],feGaussianBlur:["class","color-interpolation-filters","id","requiredFeatures","stdDeviation"],filter:["class","color-interpolation-filters","filterRes","filterUnits","height","id","primitiveUnits","requiredFeatures","width","x","xlink:href","y"],foreignObject:["class","font-size","height","id","opacity","requiredFeatures","style","transform","width","x","y"],g:["class","clip-path","clip-rule","id","display","fill","fill-opacity","fill-rule","filter","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],image:["class","clip-path","clip-rule","filter","height","id","mask","opacity","requiredFeatures","style","systemLanguage","transform","width","x","xlink:href","xlink:title","y"],line:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","x1","x2","y1","y2"],linearGradient:["class","id","gradientTransform","gradientUnits","requiredFeatures","spreadMethod","systemLanguage","x1","x2","xlink:href","y1","y2"],marker:["id","class","markerHeight","markerUnits","markerWidth","orient","preserveAspectRatio","refX","refY","systemLanguage","viewBox"],mask:["class","height","id","maskContentUnits","maskUnits","width","x","y"],metadata:["class","id"],path:["class","clip-path","clip-rule","d","fill","fill-opacity","fill-rule","filter","id","marker-end","marker-mid","marker-start","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],pattern:["class","height","id","patternContentUnits","patternTransform","patternUnits","requiredFeatures","style","systemLanguage","width","x","xlink:href","y"],polygon:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","id","class","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],polyline:["class","clip-path","clip-rule","id","fill","fill-opacity","fill-rule","filter","marker-end","marker-mid","marker-start","mask","opacity","points","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform"],radialGradient:["class","cx","cy","fx","fy","gradientTransform","gradientUnits","id","r","requiredFeatures","spreadMethod","systemLanguage","xlink:href"],rect:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","opacity","requiredFeatures","rx","ry","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","width","x","y"],stop:["class","id","offset","requiredFeatures","stop-color","stop-opacity","style","systemLanguage"],svg:["class","clip-path","clip-rule","filter","id","height","mask","preserveAspectRatio","requiredFeatures","style","systemLanguage","viewBox","width","x","xmlns","xmlns:se","xmlns:xlink","y"],"switch":["class","id","requiredFeatures","systemLanguage"],symbol:["class","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","opacity","preserveAspectRatio","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","transform","viewBox"],text:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","transform","x","xml:space","y"],textPath:["class","id","method","requiredFeatures","spacing","startOffset","style","systemLanguage","transform","xlink:href"],title:[],tspan:["class","clip-path","clip-rule","dx","dy","fill","fill-opacity","fill-rule","filter","font-family","font-size","font-style","font-weight","id","mask","opacity","requiredFeatures","rotate","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","systemLanguage","text-anchor","textLength","transform","x","xml:space","y"],use:["class","clip-path","clip-rule","fill","fill-opacity","fill-rule","filter","height","id","mask","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","style","transform","width","x","xlink:href","y"],annotation:["encoding"],"annotation-xml":["encoding"],maction:["actiontype","other","selection"],math:["class","id","display","xmlns"],menclose:["notation"],merror:[],mfrac:["linethickness"],mi:["mathvariant"],mmultiscripts:[],mn:[],mo:["fence","lspace","maxsize","minsize","rspace","stretchy"],mover:[],mpadded:["lspace","width"],mphantom:[],mprescripts:[],mroot:[],mrow:["xlink:href","xlink:type","xmlns:xlink"],mspace:["depth","height","width"],msqrt:[],mstyle:["displaystyle","mathbackground","mathcolor","mathvariant","scriptlevel"],msub:[],msubsup:[],msup:[],mtable:["align","columnalign","columnlines","columnspacing","displaystyle","equalcolumns","equalrows","frame","rowalign","rowlines","rowspacing","width"],mtd:["columnalign","columnspan","rowalign","rowspan"],mtext:[],mtr:["columnalign","rowalign"],munder:[],munderover:[],none:[],semantics:[]},aB={pathNodeTooltip:"Drag node to move it. Double-click node to change segment type",pathCtrlPtTooltip:"Drag control point to adjust curve properties",exportNoBlur:"Blurred elements will appear as un-blurred",exportNoImage:"Image elements will not appear",exportNoforeignObject:"foreignObject elements will not appear",exportNoDashArray:"Strokes will appear filled",exportNoText:"Text may not appear as expected"},J={show_outside_canvas:true,dimensions:[640,480]};if(ay){$.extend(J,ay)}var aw=this.Utils=function(){var bg="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return{toXml:function(bh){return $("<p/>").text(bh).html()},fromXml:function(bh){return $("<p/>").html(bh).text()},encode64:function(bk){bk=aw.convertToXMLReferences(bk);if(window.btoa){return window.btoa(bk)}var bi=new Array(Math.floor((bk.length+2)/3)*4);var br,bp,bn;var bq,bo,bm,bl;var bj=0,bh=0;do{br=bk.charCodeAt(bj++);bp=bk.charCodeAt(bj++);bn=bk.charCodeAt(bj++);bq=br>>2;bo=((br&3)<<4)|(bp>>4);bm=((bp&15)<<2)|(bn>>6);bl=bn&63;if(isNaN(bp)){bm=bl=64}else{if(isNaN(bn)){bl=64}}bi[bh++]=bg.charAt(bq);bi[bh++]=bg.charAt(bo);bi[bh++]=bg.charAt(bm);bi[bh++]=bg.charAt(bl)}while(bj<bk.length);return bi.join("")},decode64:function(bj){if(window.atob){return window.atob(bj)}var bh="";var bq,bo,bm="";var bp,bn,bl,bk="";var bi=0;bj=bj.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{bp=bg.indexOf(bj.charAt(bi++));bn=bg.indexOf(bj.charAt(bi++));bl=bg.indexOf(bj.charAt(bi++));bk=bg.indexOf(bj.charAt(bi++));bq=(bp<<2)|(bn>>4);bo=((bn&15)<<4)|(bl>>2);bm=((bl&3)<<6)|bk;bh=bh+String.fromCharCode(bq);if(bl!=64){bh=bh+String.fromCharCode(bo)}if(bk!=64){bh=bh+String.fromCharCode(bm)}bq=bo=bm="";bp=bn=bl=bk=""}while(bi<bj.length);return unescape(bh)},convertToXMLReferences:function(bi){var bh="";for(var bk=0;bk<bi.length;bk++){var bj=bi.charCodeAt(bk);if(bj<128){bh+=bi[bk]}else{if(bj>127){bh+=("&#"+bj+";")}}}return bh},rectsIntersect:function(bi,bh){return bh.x<(bi.x+bi.width)&&(bh.x+bh.width)>bi.x&&bh.y<(bi.y+bi.height)&&(bh.y+bh.height)>bi.y},snapToAngle:function(bi,bq,bh,bo){var bk=Math.PI/4;var bs=bh-bi;var br=bo-bq;var bj=Math.atan2(br,bs);var bm=Math.sqrt(bs*bs+br*br);var bl=Math.round(bj/bk)*bk;var bp=bi+bm*Math.cos(bl);var bn=bq+bm*Math.sin(bl);return{x:bp,y:bn,a:bl}},text2xml:function(bi){var bh;try{var bk=($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser();bk.async=false}catch(bj){throw new Error("XML Parser could not be instantiated")}try{if($.browser.msie){bh=(bk.loadXML(bi))?bk:false}else{bh=bk.parseFromString(bi,"text/xml")}}catch(bj){throw new Error("Error parsing XML string")}return bh}}}();var bc=this,aK="http://www.w3.org/2000/svg",aE="http://www.w3.org/1999/xlink",W="http://www.w3.org/XML/1998/namespace",bf="http://www.w3.org/2000/xmlns/",al="http://svg-edit.googlecode.com",O="http://www.w3.org/1999/xhtml",f="http://www.w3.org/1998/Math/MathML",I={em:0,ex:0,px:1,cm:35.43307,mm:3.543307,"in":90,pt:1.25,pc:15,"%":0},m=Math.floor(Math.random()*100001),q=false,aM=aL.ownerDocument,w=J.dimensions,G=aM.importNode(aw.text2xml('<svg id="svgroot" xmlns="'+aK+'" xlinkns="'+aE+'" width="'+w[0]+'" height="'+w[1]+'" x="'+w[0]+'" y="'+w[1]+'" overflow="visible"><defs><filter id="canvashadow" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/><feOffset in="blur" dx="5" dy="5" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>').documentElement,true);aL.appendChild(G);var ai=aM.createElementNS(aK,"svg");$(ai).attr({id:"svgcontent",width:w[0],height:w[1],x:w[0],y:w[1],overflow:J.show_outside_canvas?"visible":"hidden",xmlns:aK,"xmlns:se":al,"xmlns:xlink":aE}).appendTo(G);if(q){ai.setAttributeNS(al,"se:nonce",m)}var am={};am[aE]="xlink";am[W]="xml";am[bf]="xmlns";am[al]="se";am[O]="xhtml";am[f]="mathml";var ba={};$.each(am,function(bg,bh){ba[bh]=bg});var h={};$.each(aF,function(bg,bi){var bh={};$.each(bi,function(bl,bk){if(bk.indexOf(":")!=-1){var bj=bk.split(":");bh[bj[1]]=ba[bj[0]]}else{bh[bk]=bk=="xmlns"?bf:null}});h[bg]=bh});var N=document.createElementNS(aK,"animate");$(N).attr({attributeName:"opacity",begin:"indefinite",dur:1,fill:"freeze"}).appendTo(G);var a2,an,ab;(function(){var bg=["x","x1","cx","rx","width"];var bh=["y","y1","cy","ry","height"];var bi=$.merge(["r","radius"],bg);$.merge(bi,bh);a2=function(bj,bn){if(!isNaN(bn)){return bn-0}if(bn.substr(-1)==="%"){var bk=bn.substr(0,bn.length-1)/100;var bl=d();if($.inArray(bj,bg)!==-1){return bk*bl.w}else{if($.inArray(bj,bh)!==-1){return bk*bl.h}else{return bk*Math.sqrt((bl.w*bl.w)+(bl.h*bl.h))/Math.sqrt(2)}}}else{var bm=bn.substr(-2);var bk=bn.substr(0,bn.length-2);return bk*I[bm]}};ab=function(bn,bj,bo){if(!isNaN(bo)){var bl=bn.getAttribute(bj);if(bl!==null&&isNaN(bl)){var bm;if(bl.substr(-1)==="%"){var bk=d();bm="%";bo*=100;if($.inArray(bj,bg)!==-1){bo=bo/bk.w}else{if($.inArray(bj,bh)!==-1){bo=bo/bk.h}else{return bo/Math.sqrt((bk.w*bk.w)+(bk.h*bk.h))/Math.sqrt(2)}}}else{bm=bl.substr(-2);bo=bo/I[bm]}bo+=bm}}bn.setAttribute(bj,bo)};bc.isValidUnit=function(bk,bo){var bm=false;if($.inArray(bk,bi)!=-1){if(!isNaN(bo)){bm=true}else{bo=bo.toLowerCase();$.each(I,function(bq){if(bm){return}var bp=new RegExp("^-?[\\d\\.]+"+bq+"$");if(bp.test(bo)){bm=true}})}}else{if(bk=="id"){var bj=false;try{var bl=b(bo);bj=(bl==null)}catch(bn){}return bj}else{bm=true}}return bm}})();this.undoCmd={};var av=this.undoCmd.changeElement=function(bi,bh,bj){this.elem=bi;this.text=bj?("Change "+bi.tagName+" "+bj):("Change "+bi.tagName);this.newValues={};this.oldValues=bh;for(var bg in bh){if(bg=="#text"){this.newValues[bg]=bi.textContent}else{if(bg=="#href"){this.newValues[bg]=bi.getAttributeNS(aE,"href")}else{this.newValues[bg]=bi.getAttribute(bg)}}}this.apply=function(){var bn=false;for(var bl in this.newValues){if(this.newValues[bl]){if(bl=="#text"){this.elem.textContent=this.newValues[bl]}else{if(bl=="#href"){this.elem.setAttributeNS(aE,"xlink:href",this.newValues[bl])}else{this.elem.setAttribute(bl,this.newValues[bl])}}}else{if(bl=="#text"){this.elem.textContent=""}else{this.elem.setAttribute(bl,"");this.elem.removeAttribute(bl)}}if(bl=="transform"){bn=true}else{if(bl=="stdDeviation"){bc.setBlurOffsets(this.elem.parentNode,this.newValues[bl])}}}if(!bn){var bp=aq(bi);if(bp){var bo=bi.getBBox();var bk=bo.x+bo.width/2,bq=bo.y+bo.height/2;var bm=["rotate(",bp," ",bk,",",bq,")"].join("");if(bm!=bi.getAttribute("transform")){bi.setAttribute("transform",bm)}}}if(this.elem.tagName=="title"&&this.elem.parentNode.parentNode==ai){Y()}return true};this.unapply=function(){var bn=false;for(var bl in this.oldValues){if(this.oldValues[bl]){if(bl=="#text"){this.elem.textContent=this.oldValues[bl]}else{if(bl=="#href"){this.elem.setAttributeNS(aE,"xlink:href",this.oldValues[bl])}else{this.elem.setAttribute(bl,this.oldValues[bl])}}if(bl=="stdDeviation"){bc.setBlurOffsets(this.elem.parentNode,this.oldValues[bl])}}else{if(bl=="#text"){this.elem.textContent=""}else{this.elem.removeAttribute(bl)}}if(bl=="transform"){bn=true}}if(!bn){var bp=aq(bi);if(bp){var bo=bi.getBBox();var bk=bo.x+bo.width/2,bq=bo.y+bo.height/2;var bm=["rotate(",bp," ",bk,",",bq,")"].join("");if(bm!=bi.getAttribute("transform")){bi.setAttribute("transform",bm)}}}if(this.elem.tagName=="title"&&this.elem.parentNode.parentNode==ai){Y()}if(T[this.elem.id]){delete T[this.elem.id]}return true};this.elements=function(){return[this.elem]}};var a=this.undoCmd.insertElement=function(bg,bh){this.elem=bg;this.text=bh||("Create "+bg.tagName);this.parent=bg.parentNode;this.apply=function(){this.elem=this.parent.insertBefore(this.elem,this.elem.nextSibling);if(this.parent==ai){Y()}};this.unapply=function(){this.parent=this.elem.parentNode;this.elem=this.elem.parentNode.removeChild(this.elem);if(this.parent==ai){Y()}};this.elements=function(){return[this.elem]}};var R=this.undoCmd.removeElement=function(bh,bg,bi){this.elem=bh;this.text=bi||("Delete "+bh.tagName);this.parent=bg;this.apply=function(){if(T[this.elem.id]){delete T[this.elem.id]}this.parent=this.elem.parentNode;this.elem=this.parent.removeChild(this.elem);if(this.parent==ai){Y()}};this.unapply=function(){if(T[this.elem.id]){delete T[this.elem.id]}this.elem=this.parent.insertBefore(this.elem,this.elem.nextSibling);if(this.parent==ai){Y()}};this.elements=function(){return[this.elem]};if(T[bh.id]){delete T[bh.id]}};var S=this.undoCmd.moveElement=function(bh,bi,bg,bj){this.elem=bh;this.text=bj?("Move "+bh.tagName+" to "+bj):("Move "+bh.tagName);this.oldNextSibling=bi;this.oldParent=bg;this.newNextSibling=bh.nextSibling;this.newParent=bh.parentNode;this.apply=function(){this.elem=this.newParent.insertBefore(this.elem,this.newNextSibling);if(this.newParent==ai){Y()}};this.unapply=function(){this.elem=this.oldParent.insertBefore(this.elem,this.oldNextSibling);if(this.oldParent==ai){Y()}};this.elements=function(){return[this.elem]}};var aA=this.undoCmd.batch=function(bg){this.text=bg||"Batch Command";this.stack=[];this.apply=function(){var bh=this.stack.length;for(var bi=0;bi<bh;++bi){this.stack[bi].apply()}};this.unapply=function(){for(var bh=this.stack.length-1;bh>=0;bh--){this.stack[bh].unapply()}};this.elements=function(){var bh=[];var bk=this.stack.length;while(bk--){var bj=this.stack[bk].elements();var bi=bj.length;while(bi--){if(bh.indexOf(bj[bi])==-1){bh.push(bj[bi])}}}return bh};this.addSubCommand=function(bh){this.stack.push(bh)};this.isEmpty=function(){return this.stack.length==0}};var aJ,aT;(function(bi){var bg=0,bh=[];aJ=function(){bh=[];bg=0};bi.undoMgr={getUndoStackSize:function(){return bg},getRedoStackSize:function(){return bh.length-bg},getNextUndoCommandText:function(){if(bg>0){return bh[bg-1].text}return""},getNextRedoCommandText:function(){if(bg<bh.length){return bh[bg].text}return""},undo:function(){if(bg>0){bi.clearSelection();var bj=bh[--bg];bj.unapply();z.clear();call("changed",bj.elements())}},redo:function(){if(bg<bh.length&&bh.length>0){bi.clearSelection();var bj=bh[bg++];bj.apply();z.clear();call("changed",bj.elements())}}};aT=bi.undoCmd.add=function(bj){if(bg<bh.length&&bh.length>0){bh=bh.splice(0,bg)}bh.push(bj);bg=bh.length}}(bc));(function(bi){var bh=-1;var bg=[];bi.beginUndoableChange=function(bm,bk){var bp=++bh;var bl=bk.length;var bj=new Array(bl),bo=new Array(bl);while(bl--){var bn=bk[bl];if(bn==null){continue}bo[bl]=bn;bj[bl]=bn.getAttribute(bm)}bg[bp]={attrName:bm,oldValues:bj,elements:bo}};bi.finishUndoableChange=function(){var bo=bh--;var bp=bg[bo];var bl=bp.elements.length;var bk=bp.attrName;var bj=new aA("Change "+bk);while(bl--){var bn=bp.elements[bl];if(bn==null){continue}var bm={};bm[bk]=bp.oldValues[bl];if(bm[bk]!=bn.getAttribute(bk)){bj.addSubCommand(new av(bn,bm,bk))}}bg[bo]=null;return bj}}(bc));var bd;(function(){function bg(bj,bi){this.id=bj;this.selectedElement=bi;this.locked=true;this.reset=function(bk){this.locked=true;this.selectedElement=bk;this.resize();this.selectorGroup.setAttribute("display","inline")};this.selectorGroup=c({element:"g",attr:{id:("selectorGroup"+this.id)}});this.selectorRect=this.selectorGroup.appendChild(c({element:"path",attr:{id:("selectedBox"+this.id),fill:"none",stroke:"#22C","stroke-width":"1","stroke-dasharray":"5,5",style:"pointer-events:none"}}));this.selectorGrips={nw:null,n:null,ne:null,e:null,se:null,s:null,sw:null,w:null};this.rotateGripConnector=this.selectorGroup.appendChild(c({element:"line",attr:{id:("selectorGrip_rotateconnector_"+this.id),stroke:"#22C","stroke-width":"1"}}));this.rotateGrip=this.selectorGroup.appendChild(c({element:"circle",attr:{id:("selectorGrip_rotate_"+this.id),fill:"lime",r:4,stroke:"#22C","stroke-width":2,style:"cursor:url("+J.imgPath+"rotate.png) 12 12, auto;"}}));for(var bh in this.selectorGrips){this.selectorGrips[bh]=this.selectorGroup.appendChild(c({element:"circle",attr:{id:("selectorGrip_resize_"+bh+"_"+this.id),fill:"#22C",r:4,style:("cursor:"+bh+"-resize"),"stroke-width":2,"pointer-events":"all",display:"none"}}))}this.showGrips=function(bk){var bm=bk?"inline":"none";this.rotateGrip.setAttribute("display",bm);this.rotateGripConnector.setAttribute("display",bm);var bn=this.selectedElement;for(var bl in this.selectorGrips){this.selectorGrips[bl].setAttribute("display",bm)}if(bn){this.updateGripCursors(aq(bn))}};this.updateGripCursors=function(bo){var bn=[];var bk=Math.round(bo/45);if(bk<0){bk+=8}for(var bl in this.selectorGrips){bn.push(bl)}while(bk>0){bn.push(bn.shift());bk--}var bm=0;for(var bl in this.selectorGrips){this.selectorGrips[bl].setAttribute("style",("cursor:"+bn[bm]+"-resize"));bm++}};this.resize=function(){var bk=this.selectorRect,br=this.selectorGrips,bH=this.selectedElement,bF=bH.getAttribute("stroke-width");var bx=1/ac;if(bH.getAttribute("stroke")!="none"&&!isNaN(bF)){bx+=(bF/2)}if(bH.tagName=="text"){bx+=2/ac}var bl=au(bH);if(bH.tagName=="g"){var bw=ag(bH.childNodes);$.each(bl,function(bP,bQ){bl[bP]=bw[bP]})}var bI=B(bH);bI.e*=ac;bI.f*=ac;var bJ=bl.x-bx,bC=bl.y-bx,bB=bl.width+(bx*2),bL=bl.height+(bx*2),bl={x:bJ,y:bC,width:bB,height:bL};var bN=be(bJ*ac,bC*ac,bB*ac,bL*ac,bI),bn=bN.aabox.x,bm=bN.aabox.y,bo=bN.aabox.width,bA=bN.aabox.height;var bq=bn+bo/2,bp=bm+bA/2;var bM=aq(bH);if(bM){var bz=G.createSVGTransform();bz.setRotate(-bM,bq,bp);var bD=bz.matrix;bN.tl=P(bN.tl.x,bN.tl.y,bD);bN.tr=P(bN.tr.x,bN.tr.y,bD);bN.bl=P(bN.bl.x,bN.bl.y,bD);bN.br=P(bN.br.x,bN.br.y,bD);var bv=bN.tl.x,bu=bN.tl.y,bt=bN.tl.x,bs=bN.tl.y;bv=Math.min(bv,Math.min(bN.tr.x,Math.min(bN.bl.x,bN.br.x)));bu=Math.min(bu,Math.min(bN.tr.y,Math.min(bN.bl.y,bN.br.y)));bt=Math.max(bt,Math.max(bN.tr.x,Math.max(bN.bl.x,bN.br.x)));bs=Math.max(bs,Math.max(bN.tr.y,Math.max(bN.bl.y,bN.br.y)));bn=bv;bm=bu;bo=(bt-bv);bA=(bs-bu)}var bO=G.suspendRedraw(100);var bE="M"+bn+","+bm+" L"+(bn+bo)+","+bm+" "+(bn+bo)+","+(bm+bA)+" "+bn+","+(bm+bA)+"z";az(bk,{d:bE});var by={nw:[bn,bm],ne:[bn+bo,bm],sw:[bn,bm+bA],se:[bn+bo,bm+bA],n:[bn+(bo)/2,bm],w:[bn,bm+(bA)/2],e:[bn+bo,bm+(bA)/2],s:[bn+(bo)/2,bm+bA]};if(bH==aR[0]){for(var bG in by){var bK=by[bG];az(br[bG],{cx:bK[0],cy:bK[1]})}}if(bM){this.selectorGroup.setAttribute("transform","rotate("+[bM,bq,bp].join(",")+")")}else{this.selectorGroup.setAttribute("transform","")}az(this.rotateGripConnector,{x1:bn+(bo)/2,y1:bm,x2:bn+(bo)/2,y2:bm-20});az(this.rotateGrip,{cx:bn+(bo)/2,cy:bm-20});G.unsuspendRedraw(bO)};this.reset(bi)}bd=function(){this.selectorParentGroup=null;this.rubberBandBox=null;this.selectors=[];this.selectorMap={};var bh=this;this.initGroup=function(){if(bh.selectorParentGroup&&bh.selectorParentGroup.parentNode){bh.selectorParentGroup.parentNode.removeChild(bh.selectorParentGroup)}bh.selectorParentGroup=aM.createElementNS(aK,"g");bh.selectorParentGroup.setAttribute("id","selectorParentGroup");G.appendChild(bh.selectorParentGroup);bh.selectorMap={};bh.selectors=[];bh.rubberBandBox=null;if($("#canvasBackground").length){return}var bi=aM.createElementNS(aK,"svg");var bk=J.dimensions;az(bi,{id:"canvasBackground",width:bk[0],height:bk[1],x:0,y:0,overflow:"visible",style:"pointer-events:none"});var bj=aM.createElementNS(aK,"rect");az(bj,{width:"100%",height:"100%",x:0,y:0,"stroke-width":1,stroke:"#000",fill:"#FFF",style:"pointer-events:none"});bi.appendChild(bj);G.insertBefore(bi,ai)};this.requestSelector=function(bj){if(bj==null){return null}var bk=this.selectors.length;if(typeof(this.selectorMap[bj.id])=="object"){this.selectorMap[bj.id].locked=true;return this.selectorMap[bj.id]}for(var bi=0;bi<bk;++bi){if(this.selectors[bi]&&!this.selectors[bi].locked){this.selectors[bi].locked=true;this.selectors[bi].reset(bj);this.selectorMap[bj.id]=this.selectors[bi];return this.selectors[bi]}}this.selectors[bk]=new bg(bk,bj);this.selectorParentGroup.appendChild(this.selectors[bk].selectorGroup);this.selectorMap[bj.id]=this.selectors[bk];return this.selectors[bk]};this.releaseSelector=function(bj){if(bj==null){return}var bm=this.selectors.length,bk=this.selectorMap[bj.id];for(var bi=0;bi<bm;++bi){if(this.selectors[bi]&&this.selectors[bi]==bk){if(bk.locked==false){console.log("WARNING! selector was released but was already unlocked")}delete this.selectorMap[bj.id];bk.locked=false;bk.selectedElement=null;bk.showGrips(false);try{bk.selectorGroup.setAttribute("display","none")}catch(bl){}break}}};this.getRubberBandBox=function(){if(this.rubberBandBox==null){this.rubberBandBox=this.selectorParentGroup.appendChild(c({element:"rect",attr:{id:"selectorRubberBand",fill:"#22C","fill-opacity":0.15,stroke:"#22C","stroke-width":0.5,display:"none",style:"pointer-events:none"}}))}return this.rubberBandBox};this.initGroup()}}());var T={};var H=function(bh){function bg(bk){var bj=bk.matrix,bm="";switch(bk.type){case 1:bm="matrix("+[bj.a,bj.b,bj.c,bj.d,bj.e,bj.f].join(",")+")";break;case 2:bm="translate("+bj.e+","+bj.f+")";break;case 3:if(bj.a==bj.d){bm="scale("+bj.a+")"}else{bm="scale("+bj.a+","+bj.d+")"}break;case 4:var bi=0,bn=0;if(bk.angle!=0){var bl=1-bj.a;bn=(bl*bj.f+bj.b*bj.e)/(bl*bl+bj.b*bj.b);bi=(bj.e-bj.b*bn)/bl}bm="rotate("+bk.angle+" "+bi+","+bn+")";break}return bm}this._elem=bh||null;this._xforms=[];this._update=function(){var bk="";var bj=G.createSVGMatrix();for(var bl=0;bl<this.numberOfItems;++bl){var bi=this._list.getItem(bl);bk+=bg(bi)+" "}this._elem.setAttribute("transform",bk)};this._list=this;this._init=function(){var br=this._elem.getAttribute("transform");if(!br){return}var bv=/\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/;var bo=[];var bn=true;while(bn){bn=br.match(bv);br=br.replace(bv,"");if(bn&&bn[1]){var bs=bn[1];var bu=bs.split(/\s*\(/);var bi=bu[0];var bm=bu[1].match(/\s*(.*?)\s*\)/);var bk=bm[1].split(/[, ]+/);var bp="abcdef".split("");var bj=G.createSVGMatrix();$.each(bk,function(bw,bx){bk[bw]=parseFloat(bx);if(bi=="matrix"){bj[bp[bw]]=bk[bw]}});var bq=G.createSVGTransform();var bl="set"+bi.charAt(0).toUpperCase()+bi.slice(1);var bt=bi=="matrix"?[bj]:bk;if(bi=="scale"&&bt.length==1){bt.push(bt[0])}else{if(bi=="translate"&&bt.length==1){bt.push(0)}}bq[bl].apply(bq,bt);this._list.appendItem(bq)}}};this.numberOfItems=0;this.clear=function(){this.numberOfItems=0;this._xforms=[]};this.initialize=function(bi){this.numberOfItems=1;this._xforms=[bi]};this.getItem=function(bi){if(bi<this.numberOfItems&&bi>=0){return this._xforms[bi]}return null};this.insertItemBefore=function(bl,bj){var bn=null;if(bj>=0){if(bj<this.numberOfItems){var bm=new Array(this.numberOfItems+1);for(var bk=0;bk<bj;++bk){bm[bk]=this._xforms[bk]}bm[bk]=bl;for(var bi=bk+1;bk<this.numberOfItems;++bi,++bk){bm[bi]=this._xforms[bk]}this.numberOfItems++;this._xforms=bm;bn=bl;this._list._update()}else{bn=this._list.appendItem(bl)}}return bn};this.replaceItem=function(bj,bi){var bk=null;if(bi<this.numberOfItems&&bi>=0){this._xforms[bi]=bj;bk=bj;this._list._update()}return bk};this.removeItem=function(bj){var bm=null;if(bj<this.numberOfItems&&bj>=0){var bm=this._xforms[bj];var bl=new Array(this.numberOfItems-1);for(var bk=0;bk<bj;++bk){bl[bk]=this._xforms[bk]}for(var bi=bk;bi<this.numberOfItems-1;++bi,++bk){bl[bi]=this._xforms[bk+1]}this.numberOfItems--;this._xforms=bl;this._list._update()}return bm};this.appendItem=function(bi){this._xforms.push(bi);this.numberOfItems++;this._list._update();return bi}};function at(bi,bg){if(bi&&bi.nodeType==1){bg(bi);var bh=bi.childNodes.length;while(bh--){at(bi.childNodes.item(bh),bg)}}}function a9(bi,bg){if(bi&&bi.nodeType==1){var bh=bi.childNodes.length;while(bh--){at(bi.childNodes.item(bh),bg)}bg(bi)}}var az=this.assignAttributes=function(bl,bi,bh,bg){if(!bh){bh=0}var bm=null;if(!window.opera){G.suspendRedraw(bh)}for(var bj in bi){var bk=(bj.substr(0,4)=="xml:"?W:bj.substr(0,6)=="xlink:"?aE:null);if(bk||!bg){bl.setAttributeNS(bk,bj,bi[bj])}else{ab(bl,bj,bi[bj])}}if(!window.opera){G.unsuspendRedraw(bm)}};var ar=this.cleanupElement=function(bh){var bi=G.suspendRedraw(60);var bj={"fill-opacity":1,"stop-opacity":1,opacity:1,stroke:"none","stroke-dasharray":"none","stroke-linejoin":"miter","stroke-linecap":"butt","stroke-opacity":1,"stroke-width":1,rx:0,ry:0};for(var bg in bj){var bk=bj[bg];if(bh.getAttribute(bg)==bk){bh.removeAttribute(bg)}}G.unsuspendRedraw(bi)};var c=this.addSvgElementFromJson=function(bh){var bg=b(bh.attr.id);if(bg&&bh.element!=bg.tagName){V.removeChild(bg);bg=null}if(!bg){bg=aM.createElementNS(aK,bh.element);if(V){V.appendChild(bg)}}if(bh.curStyles){az(bg,{fill:aN.fill,stroke:aN.stroke,"stroke-width":aN.stroke_width,"stroke-dasharray":aN.stroke_dasharray,"stroke-linejoin":aN.stroke_linejoin,"stroke-linecap":aN.stroke_linecap,"stroke-opacity":aN.stroke_opacity,"fill-opacity":aN.fill_opacity,opacity:aN.opacity/2,style:"pointer-events:inherit"},100)}az(bg,bh.attr,100);ar(bg);return bg};(function(){var bg=aM.createComment(" Created with SVG-edit - http://svg-edit.googlecode.com/ ");ai.appendChild(bg)})();var aS=[],aX={},ad=J.imgPath+"logo.png",V=null,ah={round_digits:5},aG=false,a4=1,aj=null,a1="select",aa="none",U={shape:{fill:"#"+J.initFill.color,fill_paint:null,fill_opacity:J.initFill.opacity,stroke:"#"+J.initStroke.color,stroke_paint:null,stroke_opacity:J.initStroke.opacity,stroke_width:J.initStroke.width,stroke_dasharray:"none",stroke_linejoin:"miter",stroke_linecap:"butt",opacity:J.initOpacity}};U.text=$.extend(true,{},U.shape);$.extend(U.text,{fill:"#000000",stroke_width:0,font_size:24,font_family:"serif"});var aN=U.shape,a6=U.text,r=aN,ac=1,aR=new Array(1),u=new Array(1),K=null,F=new bd(),j=null,aH=[],e={};var aI=this.runExtensions=function(bh,bj,bi){var bg=false;if(bi){bg=[]}$.each(e,function(bk,bl){if(bh in bl){if(bi){bg.push(bl[bh](bj))}else{bg=bl[bh](bj)}}});return bg};this.addExtension=function(bg,bi){if(!(bg in e)){if($.isFunction(bi)){var bh=bi($.extend(bc.getPrivateMethods(),{svgroot:G,svgcontent:ai,nonce:m,selectorManager:F}))}else{var bh=bi}e[bg]=bh;call("extension_added",bh)}else{console.log('Cannot add extension "'+bg+'", an extension by that name already exists"')}};var a3=function(bh){var bg=ah.round_digits;if(!isNaN(bh)){return Number(Number(bh).toFixed(bg))}else{if($.isArray(bh)){return a3(bh[0])+","+a3(bh[1])}}};var Q=this.round=function(bg){return parseInt(bg*ac)/ac};var aW=this.getIntersectionList=function(bj){if(j==null){return null}if(!aH.length){aH=aO(V,true)}var bg=null;try{bg=V.getIntersectionList(bj,null)}catch(bk){}if(bg==null||typeof(bg.item)!="function"){bg=[];var bi=j.getBBox();$.each(bi,function(bl,bm){bi[bl]=bm/ac});var bh=aH.length;while(bh--){if(!bi.width||!bi.width){continue}if(aw.rectsIntersect(bi,aH[bh].bbox)){bg.push(aH[bh].elem)}}}return bg};var ag=this.getStrokedBBox=function(bh){if(!bh){bh=aO()}if(!bh.length){return false}var bi=function(br){try{var bw=au(br);var bs=aq(br);if((bs&&bs%90)||aP(aQ(br))){var bv=false;var by=["ellipse","path","line","polyline","polygon"];if($.inArray(br.tagName,by)!=-1){bw=bv=bc.convertToPath(br,true)}else{if(br.tagName=="rect"){var bq=br.getAttribute("rx");var bp=br.getAttribute("ry");if(bq||bp){bw=bv=bc.convertToPath(br,true)}}}if(!bv){var bt=document.createElementNS(aK,"g");var bx=br.parentNode;bx.replaceChild(bt,br);bt.appendChild(br);bw=bt.getBBox();bx.insertBefore(br,bt);bx.removeChild(bt)}}return bw}catch(bu){console.log(br,bu);return null}};var bm;$.each(bh,function(){if(bm){return}if(!this.parentNode){return}bm=bi(this)});if(bm==null){return null}var bg=bm.x+bm.width;var bo=bm.y+bm.height;var bl=bm.x;var bk=bm.y;var bn=function(bq){var bp=bq.getAttribute("stroke-width");var br=0;if(bq.getAttribute("stroke")!="none"&&!isNaN(bp)){br+=bp/2}return br};var bj=[];$.each(bh,function(bq,br){var bp=bi(br);if(bp){var bs=bn(br);bl=Math.min(bl,bp.x-bs);bk=Math.min(bk,bp.y-bs);bj.push(bp)}});bm.x=bl;bm.y=bk;$.each(bh,function(bq,br){var bp=bj[bq];if(bp&&br.nodeType==1){var bs=bn(br);bg=Math.max(bg,bp.x+bp.width+bs);bo=Math.max(bo,bp.y+bp.height+bs)}});bm.width=bg-bl;bm.height=bo-bk;return bm};var aO=this.getVisibleElements=function(bg,bh){if(!bg){bg=$(ai).children()}var bi=[];$(bg).children().each(function(bj,bm){try{var bl=bm.getBBox();if(bl){var bk=bh?{elem:bm,bbox:ag([bm])}:bm;bi.push(bk)}}catch(bn){}});return bi.reverse()};var ap=function(bh){var bi=document.createElementNS(bh.namespaceURI,bh.nodeName);$.each(bh.attributes,function(bk,bj){if(bj.localName!="-moz-math-font-style"){bi.setAttributeNS(bj.namespaceURI,bj.nodeName,bj.nodeValue)}});bi.removeAttribute("id");bi.id=a7();a4++;if((aC)&&bh.nodeName=="path"){var bg=z.convertPath(bh);bi.setAttribute("d",bg)}$.each(bh.childNodes,function(bj,bk){switch(bk.nodeType){case 1:bi.appendChild(ap(bk));break;case 3:bi.textContent=bk.nodeValue;break;default:break}});if(bi.tagName=="image"){aV(bi)}return bi};function b(bg){if(G.querySelector){return G.querySelector("#"+bg)}else{if(aM.evaluate){return aM.evaluate('svg:svg[@id="svgroot"]//svg:*[@id="'+bg+'"]',aL,function(){return"http://www.w3.org/2000/svg"},9,null).singleNodeValue}else{return $(G).find("[id="+bg+"]")[0]}}}var C,a7;(function(bi){var bg={};var bh="svg_";C=bi.getId=function(){if(bg.getid){return call("getid",a4)}if(q){return bh+m+"_"+a4}else{return bh+a4}};a7=bi.getNextId=function(){var bj=C();while(b(bj)){a4++;bj=C()}return bj};call=bi.call=function(bk,bj){if(bg[bk]){return bg[bk](this,bj)}};bi.bind=function(bk,bl){var bj=bg[bk];bg[bk]=bl;return bj};bi.setIdPrefix=function(bj){bh=bj}}(bc));var M=this.sanitizeSvg=function(bl){if(bl.nodeType==3){bl.nodeValue=bl.nodeValue.replace(/^\s+|\s+$/g,"");if(!bl.nodeValue.length){bl.parentNode.removeChild(bl)}}if(bl.nodeType!=1){return}var bt=bl.ownerDocument;var bu=bl.parentNode;if(!bt||!bu){return}var bq=aF[bl.nodeName];var bk=h[bl.nodeName];if(bq!=undefined){var bj=[];var bm=bl.attributes.length;while(bm--){var bp=bl.attributes.item(bm);var bs=bp.nodeName;var bn=bp.localName;var bv=bp.namespaceURI;if(!(bk.hasOwnProperty(bn)&&bv==bk[bn]&&bv!=bf)&&!(bv==bf&&am[bp.nodeValue])){if(bs.indexOf("se:")==0){bj.push([bs,bp.nodeValue])}bl.removeAttributeNS(bv,bn)}if(bl.nodeName=="path"&&bs=="d"){bl.setAttribute("d",z.convertPath(bl));z.fixEnd(bl)}if(bs=="style"){var br=bp.nodeValue.split(";"),bh=br.length;while(bh--){var bo=br[bh].split(":");if(bq.indexOf(bo[0])!=-1){bl.setAttribute(bo[0],bo[1])}}bl.removeAttribute("style")}}$.each(bj,function(bx,bw){bl.setAttributeNS(al,bw[0],bw[1])});var bg=bl.getAttributeNS(aE,"href");if(bg&&$.inArray(bl.nodeName,["filter","linearGradient","pattern","radialGradient","textPath","use"])!=-1){if(bg[0]!="#"){bl.setAttributeNS(aE,"xlink:href","");bl.removeAttributeNS(aE,"href")}}if(bl.nodeName=="use"&&!bl.getAttributeNS(aE,"href")){bu.removeChild(bl);return}$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(bx,bw){var by=bl.getAttribute(bw);if(by){by=ak(by);if(by&&by[0]!="#"){bl.setAttribute(bw,"");bl.removeAttribute(bw)}}});bm=bl.childNodes.length;while(bm--){M(bl.childNodes.item(bm))}}else{var bi=[];while(bl.hasChildNodes()){bi.push(bu.insertBefore(bl.firstChild,bl))}bu.removeChild(bl);var bm=bi.length;while(bm--){M(bi[bm])}}};var ak=this.getUrlFromAttr=function(bg){if(bg){if(bg.indexOf('url("')==0){return bg.substring(5,bg.indexOf('"',6))}else{if(bg.indexOf("url('")==0){return bg.substring(5,bg.indexOf("'",6))}else{if(bg.indexOf("url(")==0){return bg.substring(4,bg.indexOf(")"))}}}}return null};var au=this.getBBox=function(bj){var bi=bj||aR[0];if(bj.nodeType!=1){return null}var bg=null;if(bj.nodeName=="text"&&bi.textContent==""){bi.textContent="a";bg=bi.getBBox();bi.textContent=""}else{if(bj.nodeName=="path"&&aC){bg=bb(bi)}else{if(bj.nodeName=="use"&&!aC){bg=bi.getBBox();bg.x+=parseFloat(bi.getAttribute("x")||0);bg.y+=parseFloat(bi.getAttribute("y")||0)}else{if(bj.nodeName=="foreignObject"){bg=bi.getBBox();bg.x+=parseFloat(bi.getAttribute("x")||0);bg.y+=parseFloat(bi.getAttribute("y")||0)}else{try{bg=bi.getBBox()}catch(bk){var bh=$(bi).closest("foreignObject");if(bh.length){try{bg=bh[0].getBBox()}catch(bk){bg=null}}else{bg=null}}}}}}return bg};var g=function(bg){if(navigator.userAgent.indexOf("Gecko/")==-1){return bg}var bh=bg.cloneNode(true);bg.parentNode.insertBefore(bh,bg);bg.parentNode.removeChild(bg);F.releaseSelector(bg);aR[0]=bh;F.requestSelector(bh).showGrips(true);return bh};var bb=function(bv){var bA=bv.pathSegList;var bt=bA.numberOfItems;var bn=[[],[]];var bm=bA.getItem(0);var bl=[bm.x,bm.y];for(var bx=0;bx<bt;bx++){var bz=bA.getItem(bx);if(!bz.x){continue}bn[0].push(bl[0]);bn[1].push(bl[1]);if(bz.x1){var bk=[bz.x1,bz.y1],bj=[bz.x2,bz.y2],bh=[bz.x,bz.y];for(var bw=0;bw<2;bw++){var bg=function(bE){return Math.pow(1-bE,3)*bl[bw]+3*Math.pow(1-bE,2)*bE*bk[bw]+3*(1-bE)*Math.pow(bE,2)*bj[bw]+Math.pow(bE,3)*bh[bw]};var bC=6*bl[bw]-12*bk[bw]+6*bj[bw];var bD=-3*bl[bw]+9*bk[bw]-9*bj[bw]+3*bh[bw];var bB=3*bk[bw]-3*bl[bw];if(bD==0){if(bC==0){continue}var bu=-bB/bC;if(0<bu&&bu<1){bn[bw].push(bg(bu))}continue}var bi=Math.pow(bC,2)-4*bB*bD;if(bi<0){continue}var br=(-bC+Math.sqrt(bi))/(2*bD);if(0<br&&br<1){bn[bw].push(bg(br))}var bp=(-bC-Math.sqrt(bi))/(2*bD);if(0<bp&&bp<1){bn[bw].push(bg(bp))}}bl=bh}else{bn[0].push(bz.x);bn[1].push(bz.y)}}var bq=Math.min.apply(null,bn[0]);var bs=Math.max.apply(null,bn[0])-bq;var bo=Math.min.apply(null,bn[1]);var by=Math.max.apply(null,bn[1])-bo;return{x:bq,y:bo,width:bs,height:by}};var aq=this.getRotationAngle=function(bk,bh){var bj=bk||aR[0];var bm=aQ(bj);if(!bm){return 0}var bl=bm.numberOfItems;for(var bi=0;bi<bl;++bi){var bg=bm.getItem(bi);if(bg.type==4){return bh?bg.angle*Math.PI/180:bg.angle}}return 0};this.setRotationAngle=function(bi,bq){bi=parseFloat(bi);var bj=aR[0];var bn=bj.getAttribute("transform");var bt=au(bj);var bm=bt.x+bt.width/2,bl=bt.y+bt.height/2;var bp=aQ(bj);if(bp.numberOfItems>0){var bs=bp.getItem(0);if(bs.type==4){bp.removeItem(0)}}if(bi!=0){var bg=P(bm,bl,s(bp).matrix);var br=G.createSVGTransform();br.setRotate(bi,bg.x,bg.y);bp.insertItemBefore(br,0)}else{if(bp.numberOfItems==0){bj.removeAttribute("transform")}}if(!bq){var bh=bj.getAttribute("transform");bj.setAttribute("transform",bn);A("transform",bh,aR)}var bo=b("pathpointgrip_container");var bk=F.requestSelector(aR[0]);bk.resize();bk.updateGripCursors(bi)};var aQ=this.getTransformList=function(bh){if(aC){var bi=bh.id;if(!bi){bi="temp"}var bg=T[bi];if(!bg||bi=="temp"){T[bi]=new H(bh);T[bi]._init();bg=T[bi]}return bg}else{if(bh.transform){return bh.transform.baseVal}else{if(bh.gradientTransform){return bh.gradientTransform.baseVal}}}return null};var aY=this.recalculateAllSelectedDimensions=function(){var bk=(aa=="none"?"position":"size");var bg=new aA(bk);var bh=aR.length;while(bh--){var bi=aR[bh];var bj=l(bi);if(bj){bg.addSubCommand(bj)}}if(!bg.isEmpty()){aT(bg);call("changed",aR)}};var E=[0,"z","M","m","L","l","C","c","Q","q","A","a","H","h","V","v","S","s","T","t"];var ax=function(bg){console.log([bg.a,bg.b,bg.c,bg.d,bg.e,bg.f])};var D=this.remapElement=function(bv,bI,by){var bl=function(bJ,bK){return P(bJ,bK,by)},bk=function(bJ){return by.a*bJ},bt=function(bJ){return by.d*bJ},bq=au(bv);switch(bv.tagName){case"line":var bo=bl(bI.x1,bI.y1),bn=bl(bI.x2,bI.y2);bI.x1=bo.x;bI.y1=bo.y;bI.x2=bn.x;bI.y2=bn.y;break;case"circle":var bH=bl(bI.cx,bI.cy);bI.cx=bH.x;bI.cy=bH.y;var bB=be(bq.x,bq.y,bq.width,bq.height,by);var br=bB.tr.x-bB.tl.x,bF=bB.bl.y-bB.tl.y;bI.r=Math.min(br/2,bF/2);break;case"ellipse":var bH=bl(bI.cx,bI.cy);bI.cx=bH.x;bI.cy=bH.y;bI.rx=bk(bI.rx);bI.ry=bt(bI.ry);break;case"foreignObject":case"rect":case"image":var bo=bl(bI.x,bI.y);bI.x=bo.x;bI.y=bo.y;bI.width=bk(bI.width);bI.height=bt(bI.height);break;case"use":var bo=bl(bI.x,bI.y);bI.x=bo.x;bI.y=bo.y;break;case"text":if(by.a==1&&by.b==0&&by.c==0&&by.d==1&&(by.e!=0||by.f!=0)){var bu=s(bv).matrix,bp=af(bu.inverse(),by,bu);bI.x=parseFloat(bI.x)+bp.e;bI.y=parseFloat(bI.y)+bp.f}else{var bh=aQ(bv);var bw=G.createSVGTransform();bw.setMatrix(af(s(bh).matrix,by));bh.clear();bh.appendItem(bw)}break;case"polygon":case"polyline":var bE=bI.points.length;for(var bD=0;bD<bE;++bD){var bx=bI.points[bD];bx=bl(bx.x,bx.y);bI.points[bD].x=bx.x;bI.points[bD].y=bx.y}break;case"path":var bg=bv.pathSegList;var bE=bg.numberOfItems;bI.d=new Array(bE);for(var bD=0;bD<bE;++bD){var bG=bg.getItem(bD);bI.d[bD]={type:bG.pathSegType,x:bG.x,y:bG.y,x1:bG.x1,y1:bG.y1,x2:bG.x2,y2:bG.y2,r1:bG.r1,r2:bG.r2,angle:bG.angle,largeArcFlag:bG.largeArcFlag,sweepFlag:bG.sweepFlag}}var bE=bI.d.length,bj=bI.d[0],bz=bl(bj.x,bj.y);bI.d[0].x=bz.x;bI.d[0].y=bz.y;for(var bD=1;bD<bE;++bD){var bG=bI.d[bD];var bi=bG.type;if(bi%2==0){var bC=(bG.x!=undefined)?bG.x:bz.x,bA=(bG.y!=undefined)?bG.y:bz.y,bx=bl(bC,bA),bo=bl(bG.x1,bG.y1),bn=bl(bG.x2,bG.y2);bG.x=bx.x;bG.y=bx.y;bG.x1=bo.x;bG.y1=bo.y;bG.x2=bn.x;bG.y2=bn.y;bG.r1=bk(bG.r1),bG.r2=bt(bG.r2)}else{bG.x=bk(bG.x);bG.y=bt(bG.y);bG.x1=bk(bG.x1);bG.y1=bt(bG.y1);bG.x2=bk(bG.x2);bG.y2=bt(bG.y2);bG.r1=bk(bG.r1),bG.r2=bt(bG.r2)}if(bG.x){bz.x=bG.x}if(bG.y){bz.y=bG.y}}break}switch(bv.tagName){case"foreignObject":case"rect":case"image":bI.x=bI.x-0+Math.min(0,bI.width);bI.y=bI.y-0+Math.min(0,bI.height);bI.width=Math.abs(bI.width);bI.height=Math.abs(bI.height);az(bv,bI,1000,true);break;case"use":az(bv,bI,1000,true);break;case"ellipse":bI.rx=Math.abs(bI.rx);bI.ry=Math.abs(bI.ry);case"circle":if(bI.r){bI.r=Math.abs(bI.r)}case"line":case"text":az(bv,bI,1000,true);break;case"polyline":case"polygon":var bE=bI.points.length;var bm="";for(var bD=0;bD<bE;++bD){var bx=bI.points[bD];bm+=bx.x+","+bx.y+" "}bv.setAttribute("points",bm);break;case"path":var bs="";var bE=bI.d.length;for(var bD=0;bD<bE;++bD){var bG=bI.d[bD];var bi=bG.type;bs+=E[bi];switch(bi){case 13:case 12:bs+=bG.x+" ";break;case 15:case 14:bs+=bG.y+" ";break;case 3:case 5:case 19:case 2:case 4:case 18:bs+=bG.x+","+bG.y+" ";break;case 7:case 6:bs+=bG.x1+","+bG.y1+" "+bG.x2+","+bG.y2+" "+bG.x+","+bG.y+" ";break;case 9:case 8:bs+=bG.x1+","+bG.y1+" "+bG.x+","+bG.y+" ";break;case 11:case 10:bs+=bG.r1+","+bG.r2+" "+bG.angle+" "+Number(bG.largeArcFlag)+" "+Number(bG.sweepFlag)+" "+bG.x+","+bG.y+" ";break;case 17:case 16:bs+=bG.x2+","+bG.y2+" "+bG.x+","+bG.y+" ";break}}bv.setAttribute("d",bs);break}};var l=this.recalculateDimensions=function(bI){if(bI==null){return null}var bQ=aQ(bI);if(bQ&&bQ.numberOfItems>0){var b9=bQ.numberOfItems;while(b9--){var bY=bQ.getItem(b9);if(bY.type==0){bQ.removeItem(b9)}else{if(bY.type==1){if(a8(bY.matrix)){bQ.removeItem(b9)}}else{if(bY.type==4){if(bY.angle==0){bQ.removeItem(b9)}}}}}if(bQ.numberOfItems==1&&aq(bI)){return null}}if(!bQ||bQ.numberOfItems==0){bI.removeAttribute("transform");return null}var bh=new aA("Transform");var bC={},ch=null,bq=[];switch(bI.tagName){case"line":bq=["x1","y1","x2","y2"];break;case"circle":bq=["cx","cy","r"];break;case"ellipse":bq=["cx","cy","rx","ry"];break;case"foreignObject":case"rect":case"image":bq=["width","height","x","y"];break;case"use":bq=["x","y"];break;case"text":bq=["x","y"];break;case"polygon":case"polyline":ch={};ch.points=bI.getAttribute("points");var bB=bI.points;var bz=bB.numberOfItems;bC.points=new Array(bz);for(var cc=0;cc<bz;++cc){var br=bB.getItem(cc);bC.points[cc]={x:br.x,y:br.y}}break;case"path":ch={};ch.d=bI.getAttribute("d");bC.d=bI.getAttribute("d");break}if(bq.length){bC=$(bI).attr(bq);$.each(bC,function(cm,cn){bC[cm]=a2(cm,cn)})}if(ch==null){ch=$.extend(true,{},bC);$.each(ch,function(cm,cn){ch[cm]=a2(cm,cn)})}ch.transform=aj?aj:"";if(bI.tagName=="g"||bI.tagName=="a"){var bm=au(bI),ck={x:bm.x+bm.width/2,y:bm.y+bm.height/2},bj=P(bm.x+bm.width/2,bm.y+bm.height/2,s(bQ).matrix),b3=G.createSVGMatrix();var bG=aq(bI);if(bG){var ci=bG*Math.PI/180;if(Math.abs(ci)>(1e-10)){var bV=Math.sin(ci)/(1-Math.cos(ci))}else{var bV=2/ci}for(var cc=0;cc<bQ.numberOfItems;++cc){var bY=bQ.getItem(cc);if(bY.type==4){var bO=bY.matrix;ck.y=(bV*bO.e+bO.f)/2;ck.x=(bO.e-bV*bO.f)/2;bQ.removeItem(cc);break}}}var ca=0,b8=0,bP=0,bo=bQ.numberOfItems;if(bo){var b7=bQ.getItem(0).matrix}if(bo>=3&&bQ.getItem(bo-2).type==3&&bQ.getItem(bo-3).type==2&&bQ.getItem(bo-1).type==2){bP=3;var cl=bQ.getItem(bo-3).matrix,bt=bQ.getItem(bo-2).matrix,b1=bQ.getItem(bo-1).matrix;var bw=bI.childNodes;var cg=bw.length;while(cg--){var bl=bw.item(cg);ca=0;b8=0;if(bl.nodeType==1){var bA=aQ(bl);if(!bA){continue}var b3=s(bA).matrix;var by=aq(bl);var bU=aj;var b4=[];aj=bl.getAttribute("transform");if(by||aP(bA)){var bT=G.createSVGTransform();bT.setMatrix(af(cl,bt,b1,b3));bA.clear();bA.appendItem(bT);b4.push(bT)}else{var bk=af(b3.inverse(),b1,b3);var bK=G.createSVGMatrix();bK.e=-bk.e;bK.f=-bk.f;var cf=af(bK.inverse(),b3.inverse(),cl,bt,b1,b3,bk.inverse());var cj=G.createSVGTransform(),bM=G.createSVGTransform(),bs=G.createSVGTransform();cj.setTranslate(bk.e,bk.f);bM.setScale(cf.a,cf.d);bs.setTranslate(bK.e,bK.f);bA.appendItem(bs);bA.appendItem(bM);bA.appendItem(cj);b4.push(bs);b4.push(bM);b4.push(cj);ax(bs.matrix);ax(bM.matrix)}bh.addSubCommand(l(bl));aj=bU}}bQ.removeItem(bo-1);bQ.removeItem(bo-2);bQ.removeItem(bo-3)}else{if(bo>=3&&bQ.getItem(bo-1).type==1){bP=3;b3=s(bQ).matrix;var bT=G.createSVGTransform();bT.setMatrix(b3);bQ.clear();bQ.appendItem(bT)}else{if((bo==1||(bo>1&&bQ.getItem(1).type!=3))&&bQ.getItem(0).type==2){bP=2;var bF=s(bQ).matrix;bQ.removeItem(0);var bL=s(bQ).matrix.inverse();var bv=af(bL,bF);ca=bv.e;b8=bv.f;if(ca!=0||b8!=0){var bw=bI.childNodes;var cg=bw.length;while(cg--){var bl=bw.item(cg);if(bl.nodeType==1){var bU=aj;aj=bl.getAttribute("transform");var bA=aQ(bl);if(bA){var bJ=G.createSVGTransform();bJ.setTranslate(ca,b8);bA.insertItemBefore(bJ,0);bh.addSubCommand(l(bl));var bH=bI.getElementsByTagNameNS(aK,"use");var bE="#"+bl.id;var bS=bH.length;while(bS--){var bR=bH.item(bS);if(bE==bR.getAttributeNS(aE,"href")){var cd=G.createSVGTransform();cd.setTranslate(-ca,-b8);aQ(bR).insertItemBefore(cd,0);bh.addSubCommand(l(bR))}}aj=bU}}}aj=bU}}else{if(bo==1&&bQ.getItem(0).type==1&&!bG){bP=1;var b3=bQ.getItem(0).matrix,bw=bI.childNodes,cg=bw.length;while(cg--){var bl=bw.item(cg);if(bl.nodeType==1){var bU=aj;aj=bl.getAttribute("transform");var bA=aQ(bl);var cb=af(b3,s(bA).matrix);var b0=G.createSVGTransform();b0.setMatrix(cb);bA.clear();bA.appendItem(b0,0);bh.addSubCommand(l(bl));aj=bU}}bQ.clear()}else{if(bG){var bi=G.createSVGTransform();bi.setRotate(bG,bj.x,bj.y);bQ.insertItemBefore(bi,0)}if(bQ.numberOfItems==0){bI.removeAttribute("transform")}return null}}}}if(bP==2){if(bG){bj={x:ck.x+b7.e,y:ck.y+b7.f};var bi=G.createSVGTransform();bi.setRotate(bG,bj.x,bj.y);bQ.insertItemBefore(bi,0)}}else{if(bP==3){var b3=s(bQ).matrix;var bg=G.createSVGTransform();bg.setRotate(bG,ck.x,ck.y);var bN=bg.matrix;var b2=G.createSVGTransform();b2.setRotate(bG,bj.x,bj.y);var bD=b2.matrix.inverse(),b6=b3.inverse(),bX=af(b6,bD,bN,b3);ca=bX.e;b8=bX.f;if(ca!=0||b8!=0){var bw=bI.childNodes;var cg=bw.length;while(cg--){var bl=bw.item(cg);if(bl.nodeType==1){var bU=aj;aj=bl.getAttribute("transform");var bA=aQ(bl);var bJ=G.createSVGTransform();bJ.setTranslate(ca,b8);bA.insertItemBefore(bJ,0);bh.addSubCommand(l(bl));aj=bU}}}if(bG){bQ.insertItemBefore(b2,0)}}}}else{var bm=au(bI);if(!bm){return null}var ck={x:bm.x+bm.width/2,y:bm.y+bm.height/2},bj=P(bm.x+bm.width/2,bm.y+bm.height/2,s(bQ).matrix),b3=G.createSVGMatrix(),by=aq(bI);if(by){var ci=by*Math.PI/180;if(Math.abs(ci)>(1e-10)){var bV=Math.sin(ci)/(1-Math.cos(ci))}else{var bV=2/ci}for(var cc=0;cc<bQ.numberOfItems;++cc){var bY=bQ.getItem(cc);if(bY.type==4){var bO=bY.matrix;ck.y=(bV*bO.e+bO.f)/2;ck.x=(bO.e-bV*bO.f)/2;bQ.removeItem(cc);break}}}var bP=0;var bo=bQ.numberOfItems;if(!aC){var bu=bI.getAttribute("fill");if(bu&&bu.indexOf("url(")===0){var bx=b(ak(bu).substr(1));if(bx.getAttribute("gradientUnits")==="userSpaceOnUse"){var bx=$(bx);b3=s(bQ).matrix;var bZ=aQ(bx[0]);var b5=s(bZ).matrix;b3=af(b3,b5);var bW="matrix("+[b3.a,b3.b,b3.c,b3.d,b3.e,b3.f].join(",")+")";bx.attr("gradientTransform",bW)}}}if(bo>=3&&bQ.getItem(bo-2).type==3&&bQ.getItem(bo-3).type==2&&bQ.getItem(bo-1).type==2&&bI.nodeName!="use"){bP=3;b3=s(bQ,bo-3,bo-1).matrix;bQ.removeItem(bo-1);bQ.removeItem(bo-2);bQ.removeItem(bo-3)}else{if(bo==4&&bQ.getItem(bo-1).type==1){bP=3;b3=s(bQ).matrix;var bT=G.createSVGTransform();bT.setMatrix(b3);bQ.clear();bQ.appendItem(bT);b3=G.createSVGMatrix()}else{if((bo==1||(bo>1&&bQ.getItem(1).type!=3))&&bQ.getItem(0).type==2){bP=2;var ce=bQ.getItem(0).matrix,bp=s(bQ,1).matrix,bn=bp.inverse();b3=af(bn,ce,bp);bQ.removeItem(0)}else{if(bo==1&&bQ.getItem(0).type==1&&!by){b3=s(bQ).matrix;switch(bI.tagName){case"line":bC=$(bI).attr(["x1","y1","x2","y2"]);case"polyline":case"polygon":bC.points=bI.getAttribute("points");if(bC.points){var bB=bI.points;var bz=bB.numberOfItems;bC.points=new Array(bz);for(var cc=0;cc<bz;++cc){var br=bB.getItem(cc);bC.points[cc]={x:br.x,y:br.y}}}case"path":bC.d=bI.getAttribute("d");bP=1;bQ.clear();break;default:break}}else{bP=4;if(by){var bi=G.createSVGTransform();bi.setRotate(by,bj.x,bj.y);bQ.insertItemBefore(bi,0)}if(bQ.numberOfItems==0){bI.removeAttribute("transform")}return null}}}}if(bP==1||bP==2||bP==3){D(bI,bC,b3)}if(bP==2){if(by){bj={x:ck.x+b3.e,y:ck.y+b3.f};var bi=G.createSVGTransform();bi.setRotate(by,bj.x,bj.y);bQ.insertItemBefore(bi,0)}}else{if(bP==3){var b3=s(bQ).matrix;var bg=G.createSVGTransform();bg.setRotate(by,ck.x,ck.y);var bN=bg.matrix;var b2=G.createSVGTransform();b2.setRotate(by,bj.x,bj.y);var bD=b2.matrix.inverse();var b6=b3.inverse();var bX=af(b6,bD,bN,b3);D(bI,bC,bX);if(by){bQ.insertItemBefore(b2,0)}}}}if(bQ.numberOfItems==0){bI.removeAttribute("transform")}bh.addSubCommand(new av(bI,ch));return bh};var p=null;var P=function(bh,bi,bg){return{x:bg.a*bh+bg.c*bi+bg.e,y:bg.b*bh+bg.d*bi+bg.f}};var a8=function(bg){return(bg.a==1&&bg.b==0&&bg.c==0&&bg.d==1&&bg.e==0&&bg.f==0)};var af=this.matrixMultiply=function(){var bh=1e-14,bl=function(bo,bn){var bm=G.createSVGMatrix();bm.a=bo.a*bn.a+bo.c*bn.b;bm.b=bo.b*bn.a+bo.d*bn.b,bm.c=bo.a*bn.c+bo.c*bn.d,bm.d=bo.b*bn.c+bo.d*bn.d,bm.e=bo.a*bn.e+bo.c*bn.f+bo.e,bm.f=bo.b*bn.e+bo.d*bn.f+bo.f;return bm},bj=arguments,bk=bj.length,bg=bj[bk-1];while(bk-->1){var bi=bj[bk-1];bg=bl(bi,bg)}if(Math.abs(bg.a)<bh){bg.a=0}if(Math.abs(bg.b)<bh){bg.b=0}if(Math.abs(bg.c)<bh){bg.c=0}if(Math.abs(bg.d)<bh){bg.d=0}if(Math.abs(bg.e)<bh){bg.e=0}if(Math.abs(bg.f)<bh){bg.f=0}return bg};var s=this.transformListToTransform=function(bm,bl,bh){var bl=bl==undefined?0:bl;var bh=bh==undefined?(bm.numberOfItems-1):bh;bl=parseInt(bl);bh=parseInt(bh);if(bl>bh){var bi=bh;bh=bl;bl=bi}var bg=G.createSVGMatrix();for(var bk=bl;bk<=bh;++bk){var bj=(bk>=0&&bk<bm.numberOfItems?bm.getItem(bk).matrix:G.createSVGMatrix());bg=af(bg,bj)}return G.createSVGTransformFromMatrix(bg)};var aP=this.hasMatrixTransform=function(bi){if(!bi){return false}var bh=bi.numberOfItems;while(bh--){var bg=bi.getItem(bh);if(bg.type==1&&!a8(bg.matrix)){return true}}return false};var B=function(bg){var bh=aQ(bg);return s(bh).matrix};var be=this.transformBox=function(bi,bs,bp,bj,bh){var bl={x:bi,y:bs},bm={x:(bi+bp),y:bs},bg={x:(bi+bp),y:(bs+bj)},bk={x:bi,y:(bs+bj)};bl=P(bl.x,bl.y,bh);var br=bl.x,bo=bl.x,bq=bl.y,bn=bl.y;bm=P(bm.x,bm.y,bh);br=Math.min(br,bm.x);bo=Math.max(bo,bm.x);bq=Math.min(bq,bm.y);bn=Math.max(bn,bm.y);bk=P(bk.x,bk.y,bh);br=Math.min(br,bk.x);bo=Math.max(bo,bk.x);bq=Math.min(bq,bk.y);bn=Math.max(bn,bk.y);bg=P(bg.x,bg.y,bh);br=Math.min(br,bg.x);bo=Math.max(bo,bg.x);bq=Math.min(bq,bg.y);bn=Math.max(bn,bg.y);return{tl:bl,tr:bm,bl:bk,br:bg,aabox:{x:br,y:bq,width:(bo-br),height:(bn-bq)}}};var aZ=this.clearSelection=function(bj){if(aR[0]!=null){var bg=aR.length;for(var bh=0;bh<bg;++bh){var bi=aR[bh];if(bi==null){break}F.releaseSelector(bi);aR[bh]=null}u[0]=null}if(!bj){call("selected",aR)}};var a5=this.addToSelection=function(bg,bk){if(bg.length==0){return}var bh=0;while(bh<aR.length){if(aR[bh]==null){break}++bh}var bi=bg.length;while(bi--){var bj=bg[bi];if(!bj||!au(bj)){continue}if(aR.indexOf(bj)==-1){aR[bh]=bj;if(bh==0){u[bh]=au(bj)}bh++;var bl=F.requestSelector(bj);if(aR.length>1){bl.showGrips(false)}}}if(aR[0]&&aR.length===1&&aR[0].tagName=="a"){aR[0]=aR[0].firstChild}call("selected",aR);if(bk||aR.length==1){F.requestSelector(aR[0]).showGrips(true)}else{F.requestSelector(aR[0]).showGrips(false)}aR.sort(function(bn,bm){if(bn&&bm&&bn.compareDocumentPosition){return 3-(bm.compareDocumentPosition(bn)&6)}else{if(bn==null){return 1}}});while(aR[0]==null){aR.shift(0)}};var ao=this.removeFromSelection=function(bh){if(aR[0]==null){return}if(bh.length==0){return}var bk=new Array(aR.length),bm=new Array(u.length),bi=0,bg=aR.length;for(var bj=0;bj<bg;++bj){var bl=aR[bj];if(bl){if(bh.indexOf(bl)==-1){bk[bi]=bl;if(bi==0){bm[bi]=u[bj]}bi++}else{F.releaseSelector(bl)}}}aR=bk;u=bm};this.selectAllInCurrentLayer=function(){if(V){aZ();a5($(V).children());a1="select";call("selected",aR)}};var X=this.smoothControlPoints=function(bg,bw,bv){var bi=bg.x-bv.x,bu=bg.y-bv.y,bh=bw.x-bv.x,bs=bw.y-bv.y;if((bi!=0||bu!=0)&&(bh!=0||bs!=0)){var bo=Math.atan2(bu,bi),bn=Math.atan2(bs,bh),bk=Math.sqrt(bi*bi+bu*bu),bj=Math.sqrt(bh*bh+bs*bs),bm=G.createSVGPoint(),bl=G.createSVGPoint();if(bo<0){bo+=2*Math.PI}if(bn<0){bn+=2*Math.PI}var bt=Math.abs(bo-bn),bq=Math.abs(Math.PI-bt)/2;var br,bp;if(bo-bn>0){br=bt<Math.PI?(bo+bq):(bo-bq);bp=bt<Math.PI?(bn-bq):(bn+bq)}else{br=bt<Math.PI?(bo-bq):(bo+bq);bp=bt<Math.PI?(bn+bq):(bn-bq)}bm.x=bk*Math.cos(br)+bv.x;bm.y=bk*Math.sin(br)+bv.y;bl.x=bj*Math.cos(bp)+bv.x;bl.y=bj*Math.sin(bp)+bv.y;return[bm,bl]}return undefined};var Z=this.getMouseTarget=function(bg){if(bg==null){return null}var bh=bg.target;if(bh.correspondingUseElement){bh=bh.correspondingUseElement}if($.inArray(bh.namespaceURI,[f,O])!=-1&&bh.id!="svgcanvas"){while(bh.nodeName!="foreignObject"){bh=bh.parentNode}}while(bh.parentNode.parentNode.tagName=="g"){bh=bh.parentNode}if(bh.nodeName.toLowerCase()=="div"){bh=G}return bh};(function(){var bg=null,bn=null,bm=null,bl={},bh={minx:null,miny:null,maxx:null,maxy:null};var bj=function(bE){if(bE.button===1||bc.spaceKey){return}p=ai.getScreenCTM().inverse();var bF=P(bE.pageX,bE.pageY,p),bz=bF.x*ac,by=bF.y*ac;bE.preventDefault();var bD=bz/ac,bB=by/ac,bq=Z(bE);bn=bD;bm=bB;if(bq.parentNode==F.selectorParentGroup&&aR[0]!=null){var bC=bE.target.id,bx=bC.substr(0,20);if(bx=="selectorGrip_rotate_"){a1="rotate"}else{if(bx=="selectorGrip_resize_"){a1="resize";aa=bC.substr(20,bC.indexOf("_",20)-20)}}bq=aR[0]}aj=bq.getAttribute("transform");var bu=aQ(bq);switch(a1){case"select":aG=true;aa="none";if(bq!=G){if(aR.indexOf(bq)==-1){if(!bE.shiftKey){aZ(true)}a5([bq]);K=bq;z.clear()}for(var bs=0;bs<aR.length;++bs){if(aR[bs]==null){continue}var bw=aQ(aR[bs]);bw.insertItemBefore(G.createSVGTransform(),0)}}else{aZ();a1="multiselect";if(j==null){j=F.getRubberBandBox()}bn*=ac;bm*=ac;az(j,{x:bn,y:bm,width:0,height:0,display:"inline"},100)}break;case"zoom":aG=true;bn=bD;bm=bB;if(j==null){j=F.getRubberBandBox()}az(j,{x:bn*ac,y:bm*ac,width:0,height:0,display:"inline"},100);break;case"resize":aG=true;bn=bD;bm=bB;bl=au($("#selectedBox0")[0]);$.each(bl,function(bG,bH){bl[bG]=bH/ac});var bA=aq(bq)?1:0;if(aP(bu)){bu.insertItemBefore(G.createSVGTransform(),bA);bu.insertItemBefore(G.createSVGTransform(),bA);bu.insertItemBefore(G.createSVGTransform(),bA)}else{bu.appendItem(G.createSVGTransform());bu.appendItem(G.createSVGTransform());bu.appendItem(G.createSVGTransform())}break;case"fhellipse":case"fhrect":case"fhpath":aG=true;bn=bD;bm=bB;bg=bD+","+bB+" ";var br=aN.stroke_width==0?1:aN.stroke_width;c({element:"polyline",curStyles:true,attr:{points:bg,id:a7(),fill:"none",opacity:aN.opacity/2,"stroke-linecap":"round",style:"pointer-events:none"}});bh.minx=bD;bh.maxx=bD;bh.miny=bB;bh.maxy=bB;break;case"image":aG=true;bn=bD;bm=bB;var bv=c({element:"image",attr:{x:bD,y:bB,width:0,height:0,id:a7(),opacity:aN.opacity/2,style:"pointer-events:inherit"}});bv.setAttributeNS(aE,"xlink:href",ad);aV(bv);break;case"square":case"rect":aG=true;bn=bD;bm=bB;c({element:"rect",curStyles:true,attr:{x:bD,y:bB,width:0,height:0,id:a7(),opacity:aN.opacity/2}});break;case"line":aG=true;var br=aN.stroke_width==0?1:aN.stroke_width;c({element:"line",curStyles:true,attr:{x1:bD,y1:bB,x2:bD,y2:bB,id:a7(),stroke:aN.stroke,"stroke-width":br,"stroke-dasharray":aN.stroke_dasharray,"stroke-linejoin":aN.stroke_linejoin,"stroke-linecap":aN.stroke_linecap,"stroke-opacity":aN.stroke_opacity,fill:"none",opacity:aN.opacity/2,style:"pointer-events:none"}});break;case"circle":aG=true;c({element:"circle",curStyles:true,attr:{cx:bD,cy:bB,r:0,id:a7(),opacity:aN.opacity/2}});break;case"ellipse":aG=true;c({element:"ellipse",curStyles:true,attr:{cx:bD,cy:bB,rx:0,ry:0,id:a7(),opacity:aN.opacity/2}});break;case"text":aG=true;var bt=c({element:"text",curStyles:true,attr:{x:bD,y:bB,id:a7(),fill:a6.fill,"stroke-width":a6.stroke_width,"font-size":a6.font_size,"font-family":a6.font_family,"text-anchor":"middle","xml:space":"preserve"}});break;case"path":case"pathedit":bn*=ac;bm*=ac;z.mouseDown(bE,bq,bn,bm);aG=true;break;case"textedit":bn*=ac;bm*=ac;L.mouseDown(bE,bq,bn,bm);aG=true;break;case"rotate":aG=true;bc.beginUndoableChange("transform",aR);break;default:break}var bp=aI("mouseDown",{event:bE,start_x:bn,start_y:bm,selectedElements:aR},true);$.each(bp,function(bG,bH){if(bH&&bH.started){aG=true}})};var bo=function(bV){if(!aG){return}if(bV.button===1||bc.spaceKey){return}var bT=aR[0],bC=P(bV.pageX,bV.pageY,p),b2=bC.x*ac,b1=bC.y*ac,bN=b(C());x=b2/ac;y=b1/ac;bV.preventDefault();switch(a1){case"select":if(aR[0]!=null){var bu=x-bn;var bt=y-bm;if(bV.shiftKey){var bW=aw.snapToAngle(bn,bm,x,y);x=bW.x;y=bW.y}if(bu!=0||bt!=0){var bL=aR.length;for(var b9=0;b9<bL;++b9){var bT=aR[b9];if(bT==null){break}if(b9==0){var by=au(bT)}var b4=G.createSVGTransform();var bZ=aQ(bT);b4.setTranslate(bu,bt);if(bZ.numberOfItems){bZ.replaceItem(b4,0)}else{bZ.appendItem(b4)}F.requestSelector(bT).resize()}}}break;case"multiselect":x*=ac;y*=ac;az(j,{x:Math.min(bn,x),y:Math.min(bm,y),width:Math.abs(x-bn),height:Math.abs(y-bm)},100);var bU=[],b8=[],bv=aW(),bL=aR.length;for(var b9=0;b9<bL;++b9){var ca=bv.indexOf(aR[b9]);if(ca==-1){bU.push(aR[b9])}else{bv[ca]=null}}bL=bv.length;for(b9=0;b9<bL;++b9){if(bv[b9]){b8.push(bv[b9])}}if(bU.length>0){bc.removeFromSelection(bU)}if(b8.length>0){a5(b8)}break;case"resize":var bZ=aQ(bT),bD=aP(bZ),by=bD?bl:au(bT),bw=by.x,bx=by.y,bp=by.width,br=by.height,bu=(x-bn),bt=(y-bm);var bK=aq(bT);if(bK){var b3=Math.sqrt(bu*bu+bt*bt),bM=Math.atan2(bt,bu)-bK*Math.PI/180;bu=b3*Math.cos(bM);bt=b3*Math.sin(bM)}if(aa.indexOf("n")==-1&&aa.indexOf("s")==-1){bt=0}if(aa.indexOf("e")==-1&&aa.indexOf("w")==-1){bu=0}var cc=null,b7=0,b6=0,bA=br?(br+bt)/br:1,bB=bp?(bp+bu)/bp:1;if(aa.indexOf("n")!=-1){bA=br?(br-bt)/br:1;b6=br}if(aa.indexOf("w")!=-1){bB=bp?(bp-bu)/bp:1;b7=bp}var ch=G.createSVGTransform(),bX=G.createSVGTransform(),bE=G.createSVGTransform();ch.setTranslate(-(bw+b7),-(bx+b6));if(bV.shiftKey){if(bB==1){bB=bA}else{bA=bB}}bX.setScale(bB,bA);bE.setTranslate(bw+b7,bx+b6);if(bD){var bS=bK?1:0;bZ.replaceItem(ch,2+bS);bZ.replaceItem(bX,1+bS);bZ.replaceItem(bE,0+bS)}else{var bz=bZ.numberOfItems;bZ.replaceItem(bE,bz-3);bZ.replaceItem(bX,bz-2);bZ.replaceItem(ch,bz-1)}var bF=u[0];bF.x=bw;bF.y=bx;if(b7){bF.x+=bu}if(b6){bF.y+=bt}F.requestSelector(bT).resize();break;case"zoom":x*=ac;y*=ac;az(j,{x:Math.min(bn*ac,x),y:Math.min(bm*ac,y),width:Math.abs(x-bn*ac),height:Math.abs(y-bm*ac)},100);break;case"text":az(bN,{x:x,y:y},1000);break;case"line":var bO=null;if(!window.opera){G.suspendRedraw(1000)}var bI=x;var cf=y;if(bV.shiftKey){var bW=aw.snapToAngle(bn,bm,bI,cf);bI=bW.x;cf=bW.y}bN.setAttributeNS(null,"x2",bI);bN.setAttributeNS(null,"y2",cf);if(!window.opera){G.unsuspendRedraw(bO)}break;case"foreignObject":case"square":case"rect":case"image":var ce=(a1=="square")||bV.shiftKey,b0=Math.abs(x-bn),cb=Math.abs(y-bm),bH,bG;if(ce){b0=cb=Math.max(b0,cb);bH=bn<x?bn:bn-b0;bG=bm<y?bm:bm-cb}else{bH=Math.min(bn,x);bG=Math.min(bm,y)}az(bN,{width:b0,height:cb,x:bH,y:bG},1000);break;case"circle":var cd=$(bN).attr(["cx","cy"]);var bQ=cd.cx,bP=cd.cy,bs=Math.sqrt((x-bQ)*(x-bQ)+(y-bP)*(y-bP));bN.setAttributeNS(null,"r",bs);break;case"ellipse":var cd=$(bN).attr(["cx","cy"]);var bQ=cd.cx,bP=cd.cy;bO=null;if(!window.opera){G.suspendRedraw(1000)}bN.setAttributeNS(null,"rx",Math.abs(x-bQ));var bR=Math.abs(bV.shiftKey?(x-bQ):(y-bP));bN.setAttributeNS(null,"ry",bR);if(!window.opera){G.unsuspendRedraw(bO)}break;case"fhellipse":case"fhrect":bh.minx=Math.min(x,bh.minx);bh.maxx=Math.max(x,bh.maxx);bh.miny=Math.min(y,bh.miny);bh.maxy=Math.max(y,bh.maxy);case"fhpath":bn=x;bm=y;bg+=+x+","+y+" ";bN.setAttributeNS(null,"points",bg);break;case"path":case"pathedit":x*=ac;y*=ac;if(bV.shiftKey){var bJ=path.dragging?path.dragging[0]:bn;var cg=path.dragging?path.dragging[1]:bm;var bW=aw.snapToAngle(bJ,cg,x,y);x=bW.x;y=bW.y}if(j&&j.getAttribute("display")!="none"){az(j,{x:Math.min(bn,x),y:Math.min(bm,y),width:Math.abs(x-bn),height:Math.abs(y-bm)},100)}z.mouseMove(x,y);break;case"textedit":x*=ac;y*=ac;L.mouseMove(b2,b1);break;case"rotate":var by=au(bT),bQ=by.x+by.width/2,bP=by.y+by.height/2,b5=B(bT),bq=P(bQ,bP,b5);bQ=bq.x;bP=bq.y;var bK=((Math.atan2(bP-y,bQ-x)*(180/Math.PI))-90)%360;if(bV.shiftKey){var bY=45;bK=Math.round(bK/bY)*bY}bc.setRotationAngle(bK<-180?(360+bK):bK,true);call("changed",aR);break;default:break}aI("mouseMove",{event:bV,mouse_x:b2,mouse_y:b1,selected:bT})};var bk=function(bz){if(bz.button===1){return}var bu=K;K=null;if(!aG){return}var bC=P(bz.pageX,bz.pageY,p),bq=bC.x*ac,bp=bC.y*ac,bw=bq/ac,bv=bp/ac,bs=b(C()),bI=false;aG=false;switch(a1){case"resize":case"multiselect":if(j!=null){j.setAttribute("display","none");aH=[]}a1="select";case"select":if(aR[0]!=null){if(aR[1]==null){var bB=aR[0];if(bB.tagName!="g"&&bB.tagName!="image"&&bB.tagName!="foreignObject"){r.fill=bB.getAttribute("fill");r.fill_opacity=bB.getAttribute("fill-opacity");r.stroke=bB.getAttribute("stroke");r.stroke_opacity=bB.getAttribute("stroke-opacity");r.stroke_width=bB.getAttribute("stroke-width");r.stroke_dasharray=bB.getAttribute("stroke-dasharray");r.stroke_linejoin=bB.getAttribute("stroke-linejoin");r.stroke_linecap=bB.getAttribute("stroke-linecap")}if(bB.tagName=="text"){a6.font_size=bB.getAttribute("font-size");a6.font_family=bB.getAttribute("font-family")}F.requestSelector(bB).showGrips(true)}aY();if(bw!=bn||bv!=bm){var bG=aR.length;for(var bF=0;bF<bG;++bF){if(aR[bF]==null){break}if(aR[bF].tagName!="g"){F.requestSelector(aR[bF]).resize()}}}else{var by=bz.target;if(aR[0].nodeName=="path"&&aR[1]==null){z.select(by)}else{if(aR[0].nodeName=="text"&&aR[1]==null){L.select(by,bw,bv)}else{if(bz.shiftKey){if(bu!=by){bc.removeFromSelection([by])}}}}}}return;break;case"zoom":if(j!=null){j.setAttribute("display","none")}var bA=bz.shiftKey?0.5:2;call("zoomed",{x:Math.min(bn,bw),y:Math.min(bm,bv),width:Math.abs(bw-bn),height:Math.abs(bv-bm),factor:bA});return;case"fhpath":var bE=bs.getAttribute("points");var bt=bE.indexOf(",");if(bt>=0){bI=bE.indexOf(",",bt+1)>=0}else{bI=bE.indexOf(" ",bE.indexOf(" ")+1)>=0}if(bI){bs=z.smoothPolylineIntoPath(bs)}break;case"line":var bD=$(bs).attr(["x1","x2","y1","y2"]);bI=(bD.x1!=bD.x2||bD.y1!=bD.y2);break;case"foreignObject":case"square":case"rect":case"image":var bD=$(bs).attr(["width","height"]);bI=(bD.width!=0||bD.height!=0)||a1==="image";break;case"circle":bI=(bs.getAttribute("r")!=0);break;case"ellipse":var bD=$(bs).attr(["rx","ry"]);bI=(bD.rx!=null||bD.ry!=null);break;case"fhellipse":if((bh.maxx-bh.minx)>0&&(bh.maxy-bh.miny)>0){bs=c({element:"ellipse",curStyles:true,attr:{cx:(bh.minx+bh.maxx)/2,cy:(bh.miny+bh.maxy)/2,rx:(bh.maxx-bh.minx)/2,ry:(bh.maxy-bh.miny)/2,id:C()}});call("changed",[bs]);bI=true}break;case"fhrect":if((bh.maxx-bh.minx)>0&&(bh.maxy-bh.miny)>0){bs=c({element:"rect",curStyles:true,attr:{x:bh.minx,y:bh.miny,width:(bh.maxx-bh.minx),height:(bh.maxy-bh.miny),id:C()}});call("changed",[bs]);bI=true}break;case"text":bI=true;a5([bs]);L.start(bs);break;case"path":bs=null;aG=true;var bK=z.mouseUp(bz,bs,bq,bp);bs=bK.element;bI=bK.keep;break;case"pathedit":bI=true;bs=null;z.mouseUp(bz);break;case"textedit":bI=false;bs=null;L.mouseUp(bz,bq,bp);break;case"rotate":bI=true;bs=null;a1="select";var bx=bc.finishUndoableChange();if(!bx.isEmpty()){aT(bx)}aY();break;default:break}var bH=aI("mouseUp",{event:bz,mouse_x:bq,mouse_y:bp},true);$.each(bH,function(bL,bM){if(bM){bI=bM.keep||bI;bs=bM.element;aG=bM.started||aG}});if(!bI&&bs!=null){bs.parentNode.removeChild(bs);bs=null;var by=bz.target;while(by.parentNode.parentNode.tagName=="g"){by=by.parentNode}if((a1!="path"||current_path_pts.length==0)&&by.parentNode.id!="selectorParentGroup"&&by.id!="svgcanvas"&&by.id!="svgroot"){a5([by],true);bc.setMode("select")}}else{if(bs!=null){bc.addedNew=true;var bJ=0.2,br;if(N.beginElement&&bs.getAttribute("opacity")!=aN.opacity){br=$(N).clone().attr({to:aN.opacity,dur:bJ}).appendTo(bs);br[0].beginElement()}else{bJ=0}setTimeout(function(){if(br){br.remove()}bs.setAttribute("opacity",aN.opacity);bs.setAttribute("style","pointer-events:inherit");ar(bs);if(a1=="path"){z.toEditMode(bs)}else{if(a1=="text"||a1=="image"||a1=="foreignObject"){a5([bs],true)}}aT(new a(bs));call("changed",[bs])},bJ*1000)}}aj=null};var bi=function(bp){bp.preventDefault();return false};$(aL).mousedown(bj).mousemove(bo).click(bi);$(window).mouseup(bk);$(aL).bind("mousewheel DOMMouseScroll",function(bq){if(!bq.shiftKey){return}bq.preventDefault();p=ai.getScreenCTM().inverse();var bp=P(bq.pageX,bq.pageY,p);var br={x:bp.x,y:bp.y,width:0,height:0};if(bq.wheelDelta){if(bq.wheelDelta>=120){br.factor=2}else{if(bq.wheelDelta<=-120){br.factor=0.5}}}else{if(bq.detail){if(bq.detail>0){br.factor=0.5}else{if(bq.detail<0){br.factor=2}}}}if(!br.factor){return}call("zoomed",br)})}());var aV=function(bg){$(bg).click(function(bh){bh.preventDefault()})};var L=bc.textActions=function(){var bp,bt;var bv;var bl;var bs;var bm;var bA=[];var bB,bu;var bw;var bi,bg;var bj;function bC(bD){var bE=(bv.value==="");if(!arguments.length){if(bE){bD=0}else{if(bv.selectionEnd!==bv.selectionStart){return}bD=bv.selectionEnd}}var bF;bF=bA[bD];if(!bE){bv.setSelectionRange(bD,bD)}bl=b("text_cursor");if(!bl){bl=document.createElementNS(aK,"line");az(bl,{id:"text_cursor",stroke:"#333","stroke-width":1});bl=b("selectorParentGroup").appendChild(bl)}if(!bm){bm=setInterval(function(){var bI=(bl.getAttribute("display")==="none");bl.setAttribute("display",bI?"inline":"none")},600)}var bH=bq(bF.x,bB.y);var bG=bq(bF.x,(bB.y+bB.height));az(bl,{x1:bH.x,y1:bH.y,x2:bG.x,y2:bG.y,visibility:"visible",display:"inline"});if(bs){bs.setAttribute("d","")}}function bn(bD,bG,bF){if(bD===bG){bC(bG);return}if(!bF){bv.setSelectionRange(bD,bG)}bs=b("text_selectblock");if(!bs){bs=document.createElementNS(aK,"path");az(bs,{id:"text_selectblock",fill:"green",opacity:0.5,style:"pointer-events:none"});b("selectorParentGroup").appendChild(bs)}var bJ=bA[bD];var bK=bA[bG];bl.setAttribute("visibility","hidden");var bM=bq(bJ.x,bB.y),bI=bq(bJ.x+(bK.x-bJ.x),bB.y),bE=bq(bJ.x,bB.y+bB.height),bL=bq(bJ.x+(bK.x-bJ.x),bB.y+bB.height);var bH="M"+bM.x+","+bM.y+" L"+bI.x+","+bI.y+" "+bL.x+","+bL.y+" "+bE.x+","+bE.y+"z";az(bs,{d:bH,display:"inline"})}function bo(bE,bD){var bG=G.createSVGPoint();bG.x=bE;bG.y=bD;if(bA.length==1){return 0}var bI=bp.getCharNumAtPosition(bG);if(bI<0){bI=bA.length-2;if(bE<=bA[0].x){bI=0}}else{if(bI>=bA.length-2){bI=bA.length-2}}var bH=bA[bI];var bF=bH.x+(bH.width/2);if(bE>bF){bI++}return bI}function by(bE,bD){bC(bo(bE,bD))}function bx(bD,bJ,bF){var bH=bv.selectionStart;var bG=bo(bD,bJ);var bI=Math.min(bH,bG);var bE=Math.max(bH,bG);bn(bI,bE,!bF)}function br(bG,bE){var bD={x:bG,y:bE};bD.x/=ac;bD.y/=ac;if(bw){var bF=P(bD.x,bD.y,bw.inverse());bD.x=bF.x;bD.y=bF.y}return bD}function bq(bG,bE){var bD={x:bG,y:bE};if(bw){var bF=P(bD.x,bD.y,bw);bD.x=bF.x;bD.y=bF.y}bD.x*=ac;bD.y*=ac;return bD}function bh(){if(bl){bl.setAttribute("visibility","hidden")}}function bz(bD){bn(0,bp.textContent.length);$(this).unbind(bD)}function bk(bK){if(!bj){return}var bL=P(bK.pageX,bK.pageY,p),bI=bL.x*ac,bG=bL.y*ac;var bM=br(bI,bG);var bF=bo(bM.x,bM.y);var bH=bp.textContent;var bE=bH.substr(0,bF).replace(/[a-z0-9]+$/i,"").length;var bD=bH.substr(bF).match(/^[a-z0-9]+/i);var bJ=(bD?bD[0].length:0)+bF;bn(bE,bJ);$(bK.target).click(bz);setTimeout(function(){$(bK.target).unbind("click",bz)},300)}return{select:function(bE,bD,bF){if(bt==bE){bp=bE;L.toEditMode(bD,bF)}else{bt=bE}},start:function(bD){bp=bD;L.toEditMode()},mouseDown:function(bE,bG,bF,bD){var bH=br(bF,bD);bv.focus();by(bH.x,bH.y);bi=bF;bg=bD},mouseMove:function(bE,bD){var bF=br(bE,bD);bx(bF.x,bF.y)},mouseUp:function(bF,bE,bD){var bG=br(bE,bD);bx(bG.x,bG.y,true);if(bi===bE&&bg===bD&&bF.target!==bp){L.toSelectMode(true)}},setCursor:bC,toEditMode:function(bD,bF){bj=false;a1="textedit";F.requestSelector(bp).showGrips(false);L.init();$(bp).css("cursor","text");if(!arguments.length){bC()}else{var bE=br(bD,bF);by(bE.x,bE.y)}setTimeout(function(){bj=true},300)},toSelectMode:function(bD){a1="select";clearInterval(bm);bm=null;if(bs){$(bs).attr("display","none")}if(bl){$(bl).attr("visibility","hidden")}$(bp).css("cursor","move");if(bD){aZ();$(bp).css("cursor","move");call("selected",[bp]);a5([bp],true)}if(bp&&!bp.textContent.length){bc.deleteSelectedElements()}$(bv).blur();bp=false},setInputElem:function(bD){bv=bD;$(bv).blur(bh)},clear:function(){bt=null;if(a1=="textedit"){L.toSelectMode()}},init:function(bH){if(!bp){return}if(!bp.parentNode){bp=aR[0];F.requestSelector(bp).showGrips(false)}var bI=bp.textContent;var bE=bI.length;var bD=bp.getAttribute("transform");bB=au(bp);bw=bD?B(bp):null;bA=Array(bE);bv.focus();$(bp).unbind("dblclick",bk).dblclick(bk);if(!bE){var bF={x:bB.x+(bB.width/2),width:0}}for(var bG=0;bG<bE;bG++){var bJ=bp.getStartPositionOfChar(bG);var bF=bp.getEndPositionOfChar(bG);bA[bG]={x:bJ.x,y:bB.y,width:bF.x-bJ.x,height:bB.height}}bA.push({x:bF.x,width:0});bn(bv.selectionStart,bv.selectionEnd,true)}}}();var z=this.pathActions=function(){var bg=false;var bz={};var bv;var bt;var bl={2:["x","y"],4:["x","y"],6:["x","y","x1","y1","x2","y2"],8:["x","y","x1","y1"],10:["x","y","r1","r2","angle","largeArcFlag","sweepFlag"],12:["x"],14:["y"]};function bE(){return bt}function bm(bG){bG.setAttribute("d",z.convertPath(bG))}function bq(bL,bN,bI){var bM=bL.pathSegList;if(a0.pathInsertItemBefore){bM.insertItemBefore(bN,bI);return}var bH=bM.numberOfItems;var bG=[];for(var bK=0;bK<bH;bK++){var bJ=bM.getItem(bK);bG.push(bJ)}bM.clear();for(var bK=0;bK<bH;bK++){if(bK==bI){bM.appendItem(bN)}bM.appendItem(bG[bK])}}function bp(bL,bI){var bH=bl[bL],bG=bH.length;var bJ=Array(bG);for(var bK=0;bK<bG;bK++){bJ[bK]=bI[bH[bK]]}return bJ}function bo(){var bH=b("pathpointgrip_container");if(!bH){var bG=b("selectorParentGroup");bH=bG.appendChild(document.createElementNS(aK,"g"));bH.id="pathpointgrip_container"}return bH}var br=function(bI,bG,bL){var bK=bo();var bJ=b("pathpointgrip_"+bI);if(!bJ){bJ=document.createElementNS(aK,"circle");az(bJ,{id:"pathpointgrip_"+bI,display:"none",r:4,fill:"#0FF",stroke:"#00F","stroke-width":2,cursor:"move",style:"pointer-events:all","xlink:title":aB.pathNodeTooltip});bJ=bK.appendChild(bJ);var bH=$("#pathpointgrip_"+bI);bH.dblclick(function(){if(bt){bt.setSegType()}})}if(bG&&bL){az(bJ,{cx:bG,cy:bL,display:"inline"})}return bJ};var bA=function(bG,bK){var bH=bG.index;var bI=br(bH);if(bK){var bJ=bk(bG);az(bI,{cx:bJ.x,cy:bJ.y,display:"inline"})}return bI};var bw=function(bI,bH){var bL=bI.index;var bM=b("segline_"+bL);if(!bM){var bK=bo();bM=document.createElementNS(aK,"path");az(bM,{id:"segline_"+bL,display:"none",fill:"none",stroke:"#0FF","stroke-width":2,style:"pointer-events:none",d:"M0,0 0,0"});bK.appendChild(bM)}if(bH){var bG=bI.prev;if(!bG){bM.setAttribute("display","none");return bM}var bO=bk(bG);bj(2,0,[bO.x,bO.y],bM);var bN=bp(bI.type,bI.item,true);for(var bJ=0;bJ<bN.length;bJ+=2){var bO=bk(bI,{x:bN[bJ],y:bN[bJ+1]});bN[bJ]=bO.x;bN[bJ+1]=bO.y}bj(bI.type,1,bN,bM)}return bM};var bh=function(bK){var bQ=bK.item;var bO=bK.index;if(!("x1" in bQ)||!("x2" in bQ)){return null}var bM={};var bN=bo();var bH=bt.segs[bO-1].item;var bJ=[bH,bQ];for(var bL=1;bL<3;bL++){var bG=bO+"c"+bL;var bS=bM["c"+bL+"_line"]=b("ctrlLine_"+bG);if(!bS){bS=document.createElementNS(aK,"line");az(bS,{id:"ctrlLine_"+bG,stroke:"#555","stroke-width":1,style:"pointer-events:none"});bN.appendChild(bS)}var bR=bk(bK,{x:bQ["x"+bL],y:bQ["y"+bL]});var bI=bk(bK,{x:bJ[bL-1].x,y:bJ[bL-1].y});az(bS,{x1:bR.x,y1:bR.y,x2:bI.x,y2:bI.y,display:"inline"});bM["c"+bL+"_line"]=bS;var bP=bM["c"+bL]=b("ctrlpointgrip_"+bG);if(!bP){bP=document.createElementNS(aK,"circle");az(bP,{id:"ctrlpointgrip_"+bG,display:"none",r:4,fill:"#0FF",stroke:"#55F","stroke-width":1,cursor:"move",style:"pointer-events:all","xlink:title":aB.pathCtrlPtTooltip});bN.appendChild(bP)}az(bP,{cx:bR.x,cy:bR.y,display:"inline"});bM["c"+bL]=bP}return bM};function bk(bG,bK){var bH={x:bK?bK.x:bG.item.x,y:bK?bK.y:bG.item.y},bJ=bG.path;if(bJ.matrix){var bI=P(bH.x,bH.y,bJ.matrix);bH=bI}bH.x*=ac;bH.y*=ac;return bH}function by(bI,bH){var bG={x:bI.x,y:bI.y};if(bH.matrix){var bI=P(bG.x,bG.y,bH.imatrix);bG.x=bI.x;bG.y=bI.y}bG.x/=ac;bG.y/=ac;return bG}function bu(bH,bJ){var bI=this;bI.index=bH;bI.selected=false;bI.type=bJ.pathSegType;var bG;bI.addGrip=function(){bG=bI.ptgrip=bA(bI,true);bI.ctrlpts=bh(bI,true);bI.segsel=bw(bI,true)};bI.item=bJ;bI.show=function(bK){if(bG){bG.setAttribute("display",bK?"inline":"none");bI.segsel.setAttribute("display",bK?"inline":"none");bI.showCtrlPts(bK)}};bI.select=function(bK){if(bG){bG.setAttribute("stroke",bK?"#0FF":"#00F");bI.segsel.setAttribute("display",bK?"inline":"none");if(bI.ctrlpts){bI.selectCtrls(bK)}bI.selected=bK}};bI.selectCtrls=function(bK){$("#ctrlpointgrip_"+bI.index+"c1, #ctrlpointgrip_"+bI.index+"c2").attr("fill",bK?"#0FF":"#EEE")};bI.update=function(bK){bJ=bI.item;if(bG){var bL=bk(bI);az(bG,{cx:bL.x,cy:bL.y});bw(bI,true);if(bI.ctrlpts){if(bK){bI.item=bt.elem.pathSegList.getItem(bI.index);bI.type=bI.item.pathSegType}bh(bI)}}};bI.move=function(bM,bL){var bO=bI.item;var bR=bI;if(bR.ctrlpts){var bK=[bO.x+=bM,bO.y+=bL,bO.x1,bO.y1,bO.x2+=bM,bO.y2+=bL]}else{var bK=[bO.x+=bM,bO.y+=bL]}bj(bR.type,bR.index,bK);if(bI.next&&bI.next.ctrlpts){var bN=bI.next.item;var bP=[bN.x,bN.y,bN.x1+=bM,bN.y1+=bL,bN.x2,bN.y2];bj(bI.next.type,bI.next.index,bP)}if(bI.mate){var bO=bI.mate.item;var bQ=[bO.x+=bM,bO.y+=bL];bj(bI.mate.type,bI.mate.index,bQ)}bI.update(true);if(bI.next){bI.next.update(true)}};bI.setLinked=function(bL){var bK,bP,bN;if(bL==2){bP=1;bK=bI.next;if(!bK){return}bN=bI.item}else{bP=2;bK=bI.prev;if(!bK){return}bN=bK.item}var bM=bK.item;bM["x"+bP]=bN.x+(bN.x-bI.item["x"+bL]);bM["y"+bP]=bN.y+(bN.y-bI.item["y"+bL]);var bO=[bM.x,bM.y,bM.x1,bM.y1,bM.x2,bM.y2];bj(bK.type,bK.index,bO);bK.update(true)};bI.moveCtrl=function(bM,bL,bK){var bN=bI.item;bN["x"+bM]+=bL;bN["y"+bM]+=bK;var bO=[bN.x,bN.y,bN.x1,bN.y1,bN.x2,bN.y2];bj(bI.type,bI.index,bO);bI.update(true)};bI.setType=function(bL,bK){bj(bL,bH,bK);bI.type=bL;bI.item=bt.elem.pathSegList.getItem(bH);bI.showCtrlPts(bL===6);bI.ctrlpts=bh(bI);bI.update(true)};bI.showCtrlPts=function(bL){if(bI.ctrlpts){for(var bK in bI.ctrlpts){bI.ctrlpts[bK].setAttribute("display",bL?"inline":"none")}}}}function bC(bG){if(!bG||bG.tagName!=="path"){return false}var bH=bt=this;this.elem=bG;this.segs=[];this.selected_pts=[];this.init=function(){$(bo()).find("*").attr("display","none");var bL=bG.pathSegList;var bR=bL.numberOfItems;bH.segs=[];bH.selected_pts=[];bH.first_seg=null;for(var bO=0;bO<bR;bO++){var bS=bL.getItem(bO);var bP=new bu(bO,bS);bP.path=bH;bH.segs.push(bP)}var bJ=bH.segs;var bQ=null;for(var bO=0;bO<bR;bO++){var bN=bJ[bO];var bM=(bO+1)>=bR?null:bJ[bO+1];var bI=(bO-1)<0?null:bJ[bO-1];if(bN.type===2){if(bI&&bI.type!==1){var bK=bJ[bQ];bK.next=bJ[bQ+1];bK.next.prev=bK;bK.addGrip()}bQ=bO}else{if(bM&&bM.type===1){bN.next=bJ[bQ+1];bN.next.prev=bN;bN.mate=bJ[bQ];bN.addGrip();if(bH.first_seg==null){bH.first_seg=bN}}else{if(!bM){if(bN.type!==1){var bK=bJ[bQ];bK.next=bJ[bQ+1];bK.next.prev=bK;bK.addGrip();bN.addGrip();if(!bH.first_seg){bH.first_seg=bJ[bQ]}}}else{if(bN.type!==1){bN.addGrip();if(bM&&bM.type!==2){bN.next=bM;bN.next.prev=bN}}}}}}return bH};this.init();this.update=function(){if(aq(bH.elem)){bH.matrix=B(bt.elem);bH.imatrix=bH.matrix.inverse()}bH.eachSeg(function(bI){this.item=bG.pathSegList.getItem(bI);this.update()});return bH};this.eachSeg=function(bL){var bI=bH.segs.length;for(var bK=0;bK<bI;bK++){var bJ=bL.call(bH.segs[bK],bK);if(bJ===false){break}}};this.addSeg=function(bT){var bS=bH.segs[bT];if(!bS.prev){return}var bP=bS.prev;var bO;switch(bS.item.pathSegType){case 4:var bV=(bS.item.x+bP.item.x)/2;var bU=(bS.item.y+bP.item.y)/2;bO=bG.createSVGPathSegLinetoAbs(bV,bU);break;case 6:var bX=(bP.item.x+bS.item.x1)/2;var bN=(bS.item.x1+bS.item.x2)/2;var bR=(bS.item.x2+bS.item.x)/2;var bM=(bX+bN)/2;var bK=(bN+bR)/2;var bV=(bM+bK)/2;var bW=(bP.item.y+bS.item.y1)/2;var bL=(bS.item.y1+bS.item.y2)/2;var bQ=(bS.item.y2+bS.item.y)/2;var bJ=(bW+bL)/2;var bI=(bL+bQ)/2;var bU=(bJ+bI)/2;bO=bG.createSVGPathSegCurvetoCubicAbs(bV,bU,bX,bW,bM,bJ);var bY=[bS.item.x,bS.item.y,bK,bI,bR,bQ];bj(bS.type,bT,bY);break}bq(bG,bO,bT)};this.deleteSeg=function(bJ){var bI=bH.segs[bJ];var bM=bG.pathSegList;bI.show(false);var bK=bI.next;if(bI.mate){var bN=[bK.item.x,bK.item.y];bj(2,bK.index,bN);bj(4,bI.index,bN);bM.removeItem(bI.mate.index)}else{if(!bI.prev){var bL=bI.item;var bN=[bK.item.x,bK.item.y];bj(2,bI.next.index,bN);bM.removeItem(bJ)}else{bM.removeItem(bJ)}}};this.endChanges=function(bJ){if(aC){bm(bH.elem)}var bI=new av(bG,{d:bH.last_d},bJ);aT(bI);call("changed",[bG])};this.subpathIsClosed=function(bJ){var bI=false;bt.eachSeg(function(bK){if(bK<=bJ){return true}if(this.type===2){return false}else{if(this.type===1){bI=true;return false}}});return bI};this.addPtsToSelection=function(bK){if(!$.isArray(bK)){bK=[bK]}for(var bL=0;bL<bK.length;bL++){var bJ=bK[bL];var bI=bH.segs[bJ];if(bI.ptgrip){if($.inArray(bJ,bH.selected_pts)==-1&&bJ>=0){bH.selected_pts.push(bJ)}}}bH.selected_pts.sort();var bL=bH.selected_pts.length,bN=new Array(bL);while(bL--){var bM=bH.selected_pts[bL];var bI=bH.segs[bM];bI.select(true);bN[bL]=bI.ptgrip}z.canDeleteNodes=true;z.closed_subpath=bH.subpathIsClosed(bH.selected_pts[0]);call("selected",bN)};this.removePtFromSelection=function(bI){var bJ=$.inArray(bI,bH.selected_pts);if(bJ==-1){return}bH.segs[bI].select(false);bH.selected_pts.splice(bJ,1)};this.clearSelection=function(){bH.eachSeg(function(bI){this.select(false)});bH.selected_pts=[]};this.selectPt=function(bJ,bI){bH.clearSelection();if(bJ==null){bH.eachSeg(function(bK){if(this.prev){bJ=bK}})}bH.addPtsToSelection(bJ);if(bI){bH.dragctrl=bI;if(bs){bH.segs[bJ].setLinked(bI)}}};this.storeD=function(){this.last_d=bG.getAttribute("d")};this.show=function(bI){bH.eachSeg(function(){this.show(bI)});if(bI){bH.selectPt(bH.first_seg.index)}return bH};this.movePts=function(bL,bK){var bJ=bH.selected_pts.length;while(bJ--){var bI=bH.segs[bH.selected_pts[bJ]];bI.move(bL,bK)}};this.moveCtrl=function(bK,bJ){var bI=bH.segs[bH.selected_pts[0]];bI.moveCtrl(bH.dragctrl,bK,bJ);if(bs){bI.setLinked(bH.dragctrl)}};this.setSegType=function(bP){bH.storeD();var bY=bH.selected_pts.length;var bU;while(bY--){var bW=bH.selected_pts[bY];var bJ=bH.segs[bW];var bV=bJ.prev;if(!bV){continue}if(!bP){bU="Toggle Path Segment Type";var bT=bJ.type;bP=(bT==6)?4:6}bP=bP-0;var bQ=bJ.item.x;var bO=bJ.item.y;var bL=bV.item.x;var bK=bV.item.y;var bX;switch(bP){case 6:if(bJ.olditem){var bI=bJ.olditem;bX=[bQ,bO,bI.x1,bI.y1,bI.x2,bI.y2]}else{var bS=bQ-bL;var bR=bO-bK;var bN=(bL+(bS/3));var bM=(bK+(bR/3));var b0=(bQ-(bS/3));var bZ=(bO-(bR/3));bX=[bQ,bO,bN,bM,b0,bZ]}break;case 4:bX=[bQ,bO];bJ.olditem=bJ.item;break}bJ.setType(bP,bX)}bt.endChanges(bU);return}}function bi(bG){var bH=bz[bG.id];if(!bH){bH=bz[bG.id]=new bC(bG)}return bH}var bx=[],bv=null,bD=[],bs=false,bB=false;var bn=function(bJ){var bP=bJ.points;var bN=bP.numberOfItems;if(bN>=4){var bH=bP.getItem(0),bL=null;var bO=[];bO.push(["M",bH.x,",",bH.y," C"].join(""));for(var bK=1;bK<=(bN-4);bK+=3){var bG=bP.getItem(bK);var bS=bP.getItem(bK+1);var bI=bP.getItem(bK+2);if(bL){var bQ=X(bL,bG,bH);if(bQ&&bQ.length==2){var bM=bO[bO.length-1].split(",");bM[2]=bQ[0].x;bM[3]=bQ[0].y;bO[bO.length-1]=bM.join(",");bG=bQ[1]}}bO.push([bG.x,bG.y,bS.x,bS.y,bI.x,bI.y].join(","));bH=bI;bL=bS}bO.push("L");for(;bK<bN;++bK){var bR=bP.getItem(bK);bO.push([bR.x,bR.y].join(","))}bO=bO.join(" ");bJ=c({element:"path",curStyles:true,attr:{id:C(),d:bO,fill:"none"}});call("changed",[bJ])}return bJ};var bj=function(bP,bO,bQ,bG){var bR=bG||bE().elem;var bH="createSVGPathSeg"+bx[bP];var bK=bR[bH].apply(bR,bQ);if(a0.pathReplaceItem){bR.pathSegList.replaceItem(bK,bO)}else{var bI=bR.pathSegList;var bN=bI.numberOfItems;var bM=[];for(var bL=0;bL<bN;bL++){var bJ=bI.getItem(bL);bM.push(bJ)}bI.clear();for(var bL=0;bL<bN;bL++){if(bL==bO){bI.appendItem(bK)}else{bI.appendItem(bM[bL])}}}};var bF=function(){var bR=bt.elem;var bW=aq(bR,true);if(!bW){return}u[0]=bt.oldbbox;var bM=au(bR),bQ=u[0],bH=bQ.x+bQ.width/2,bG=bQ.y+bQ.height/2,b0=bM.x+bM.width/2,bY=bM.y+bM.height/2,bO=b0-bH,bN=bY-bG,bP=Math.sqrt(bO*bO+bN*bN),bK=Math.atan2(bN,bO)+bW;b0=bP*Math.cos(bK)+bH;bY=bP*Math.sin(bK)+bG;var bU=function(b1,b2){bO=b1-bH;bN=b2-bG;bP=Math.sqrt(bO*bO+bN*bN);bK=Math.atan2(bN,bO)+bW;bO=bP*Math.cos(bK)+bH;bN=bP*Math.sin(bK)+bG;bO-=b0;bN-=bY;bP=Math.sqrt(bO*bO+bN*bN);bK=Math.atan2(bN,bO)-bW;return{x:(bP*Math.cos(bK)+b0)/1,y:(bP*Math.sin(bK)+bY)/1}};var bX=bR.pathSegList,bT=bX.numberOfItems;while(bT){bT-=1;var bV=bX.getItem(bT),bJ=bV.pathSegType;if(bJ==1){continue}var bZ=bU(bV.x,bV.y),bS=[bZ.x,bZ.y];if(bV.x1!=null&&bV.x2!=null){c_vals1=bU(bV.x1,bV.y1);c_vals2=bU(bV.x2,bV.y2);bS.splice(bS.length,0,c_vals1.x,c_vals1.y,c_vals2.x,c_vals2.y)}bj(bJ,bT,bS)}bM=au(bR);u[0].x=bM.x;u[0].y=bM.y;u[0].width=bM.width;u[0].height=bM.height;var bI=G.createSVGTransform(),bL=aQ(bR);bI.setRotate((bW*180/Math.PI),b0,bY);bL.replaceItem(bI,0)};return{init:function(){bx=[0,"ClosePath"];var bG=["Moveto","Lineto","CurvetoCubic","CurvetoQuadratic","Arc","LinetoHorizontal","LinetoVertical","CurvetoCubicSmooth","CurvetoQuadraticSmooth"];$.each(bG,function(bH,bI){bx.push(bI+"Abs");bx.push(bI+"Rel")})},getPath:function(){return bt},mouseDown:function(bO,bI,bN,bM){if(a1=="path"){return}if(!bt){return}bt.storeD();var bG=bO.target.id;if(bG.substr(0,14)=="pathpointgrip_"){var bH=bt.cur_pt=parseInt(bG.substr(14));bt.dragging=[bN,bM];var bL=bt.segs[bH];if(!bO.shiftKey){if(bt.selected_pts.length<=1||!bL.selected){bt.clearSelection()}bt.addPtsToSelection(bH)}else{if(bL.selected){bt.removePtFromSelection(bH)}else{bt.addPtsToSelection(bH)}}}else{if(bG.indexOf("ctrlpointgrip_")==0){bt.dragging=[bN,bM];var bK=bG.split("_")[1].split("c");var bH=bK[0]-0;var bJ=bK[1]-0;bt.selectPt(bH,bJ)}}if(!bt.dragging){if(j==null){j=F.getRubberBandBox()}az(j,{x:bN*ac,y:bM*ac,width:0,height:0,display:"inline"},100)}},mouseMove:function(bJ,bG){bB=true;if(a1=="path"){var bI=b("path_stretch_line");if(bI){bI.setAttribute("x2",bJ);bI.setAttribute("y2",bG)}return}if(bt.dragging){var bM=by({x:bt.dragging[0],y:bt.dragging[1]},bt);var bH=by({x:bJ,y:bG},bt);var bL=bH.x-bM.x;var bK=bH.y-bM.y;bt.dragging=[bJ,bG];if(bt.dragctrl){bt.moveCtrl(bL,bK)}else{bt.movePts(bL,bK)}}else{bt.selected_pts=[];bt.eachSeg(function(bP){var bN=this;if(!bN.next&&!bN.prev){return}var bQ=bN.item;var bO=j.getBBox();var bT=bk(bN);var bS={x:bT.x,y:bT.y,width:0,height:0};var bR=aw.rectsIntersect(bO,bS);this.select(bR);if(bR){bt.selected_pts.push(bN.index)}})}},mouseUp:function(bR,bI,bH,bG){if(a1=="path"){var bO=bH/ac,bN=bG/ac,bJ=b("path_stretch_line");if(!bJ){bJ=document.createElementNS(aK,"line");az(bJ,{id:"path_stretch_line",stroke:"#22C","stroke-width":"0.5"});bJ=b("selectorParentGroup").appendChild(bJ)}bJ.setAttribute("display","inline");var b1=null;if(bD.length==0){bD.push(bO);bD.push(bN);d_attr="M"+bO+","+bN+" ";c({element:"path",curStyles:true,attr:{d:d_attr,id:a7(),opacity:aN.opacity/2,}});az(bJ,{x1:bH,y1:bG,x2:bH,y2:bG});var bL=bg?bt.segs.length:0;br(bL,bH,bG)}else{var bX=bD.length;var bK=6/ac;var bW=false;while(bX){bX-=2;var bS=bD[bX],bQ=bD[bX+1];if(bO>=(bS-bK)&&bO<=(bS+bK)&&bN>=(bQ-bK)&&bN<=(bQ+bK)){bW=true;break}}var bU=C();if(bU in bz){delete bz[bU]}var b0=b(bU);var bZ=bD.length;if(bW){if(bX==0&&bZ>=6){var b3=bD[0];var b2=bD[1];d_attr+=["L",b3,",",b2,"z"].join("");b0.setAttribute("d",d_attr)}else{if(bZ<3){b1=false;return b1}}$(bJ).remove();bI=b0;bD=[];aG=false;if(bg){if(bt.matrix){D(b0,{},bt.matrix.inverse())}var b4=b0.getAttribute("d");var bY=$(bt.elem).attr("d");$(bt.elem).attr("d",bY+b4);$(b0).remove();if(bt.matrix){bF()}bt.init();z.toEditMode(bt.elem);bt.selectPt();return false}}else{if(!$.contains(aL,Z(bR))){console.log("Clicked outside canvas");return false}var bV=bD[bZ-2],bT=bD[bZ-1];if(bR.shiftKey){var bP=aw.snapToAngle(bV,bT,bO,bN);bO=bP.x;bN=bP.y}bD.push(bO);bD.push(bN);d_attr+="L"+Q(bO)+","+Q(bN)+" ";b0.setAttribute("d",d_attr);bO*=ac;bN*=ac;az(bJ,{x1:bO,y1:bN,x2:bO,y2:bN});var bL=(bD.length/2-1);if(bg){bL+=bt.segs.length}br(bL,bO,bN)}b1=true}return{keep:b1,element:bI}}if(bt.dragging){var bM=bt.cur_pt;bt.dragging=false;bt.dragctrl=false;bt.update();if(bB){bt.endChanges("Move path point(s)")}if(!bR.shiftKey&&!bB){bt.selectPt(bM)}}else{if(j&&j.getAttribute("display")!="none"){j.setAttribute("display","none");if(j.getAttribute("width")<=2&&j.getAttribute("height")<=2){z.toSelectMode(bR.target)}}else{z.toSelectMode(bR.target)}}bB=false},clearData:function(){bz={}},toEditMode:function(bG){bt=bi(bG);a1="pathedit";aZ();bt.show(true).update();bt.oldbbox=au(bt.elem);bg=false},toSelectMode:function(bG){var bH=(bG==bt.elem);a1="select";bt.show(false);bv=false;aZ();if(bt.matrix){bF()}if(bH){call("selected",[bG]);a5([bG],true)}},addSubPath:function(bG){if(bG){a1="path";bg=true}else{z.clear(true);z.toEditMode(bt.elem)}},select:function(bG){if(bv==bG){z.toEditMode(bG);a1="pathedit"}else{bv=bG}},reorient:function(){var bI=aR[0];if(!bI){return}var bJ=aq(bI);if(bJ==0){return}var bG=new aA("Reorient path");var bH={d:bI.getAttribute("d"),transform:bI.getAttribute("transform")};bG.addSubCommand(new av(bI,bH));aZ();this.resetOrientation(bI);aT(bG);bi(bI).show(false).matrix=null;this.clear();a5([bI],true);call("changed",aR)},clear:function(bG){bv=null;if(a1=="path"&&bD.length>0){var bH=b(C());$(b("path_stretch_line")).remove();$(bH).remove();$(b("pathpointgrip_container")).find("*").attr("display","none");bD=[];aG=false}else{if(a1=="pathedit"){this.toSelectMode()}}if(bt){bt.init().show(false)}},resetOrientation:function(bO){if(bO==null||bO.nodeName!="path"){return false}var bK=aQ(bO);var bG=s(bK).matrix;bK.clear();bO.removeAttribute("transform");var bH=bO.pathSegList;var bL=bH.numberOfItems;for(var bJ=0;bJ<bL;++bJ){var bI=bH.getItem(bJ);var bM=bI.pathSegType;if(bM==1){continue}var bN=[];$.each(["",1,2],function(bQ,bT){var bP=bI["x"+bT],bS=bI["y"+bT];if(bP&&bS){var bR=P(bP,bS,bG);bN.splice(bN.length,0,bR.x,bR.y)}});bj(bM,bJ,bN,bO)}},zoomChange:function(){if(a1=="pathedit"){bt.update()}},getNodePoint:function(){var bH=bt.selected_pts.length?bt.selected_pts[0]:1;var bG=bt.segs[bH];return{x:bG.item.x,y:bG.item.y,type:bG.type}},linkControlPoints:function(bG){bs=bG},clonePathNode:function(){bt.storeD();var bH=bt.selected_pts;var bG=bt.segs;var bI=bH.length;var bK=[];while(bI--){var bJ=bH[bI];bt.addSeg(bJ);bK.push(bJ+bI);bK.push(bJ+bI+1)}bt.init().addPtsToSelection(bK);bt.endChanges("Clone path node(s)")},opencloseSubPath:function(){var bG=bt.selected_pts;if(bG.length!==1){return}var bJ=bt.elem;var bQ=bJ.pathSegList;var bP=bQ.numberOfItems;var bO=bG[0];var bR=null;var bI=null;bt.eachSeg(function(bW){if(this.type===2&&bW<=bO){bI=this.item}if(bW<=bO){return true}if(this.type===2){bR=bW;return false}else{if(this.type===1){bR=false;return false}}});if(bR==null){bR=bt.segs.length-1}if(bR!==false){var bK=bJ.createSVGPathSegLinetoAbs(bI.x,bI.y);var bT=bJ.createSVGPathSegClosePath();if(bR==bt.segs.length-1){bQ.appendItem(bK);bQ.appendItem(bT)}else{bq(bJ,bT,bR);bq(bJ,bK,bR)}bt.init().selectPt(bR+1);return}var bL=bt.segs[bO];if(bL.mate){bQ.removeItem(bO);bQ.removeItem(bO);bt.init().selectPt(bO-1);return}var bH,bV;for(var bM=0;bM<bQ.numberOfItems;bM++){var bS=bQ.getItem(bM);if(bS.pathSegType===2){bH=bM}else{if(bM===bO){bQ.removeItem(bH)}else{if(bS.pathSegType===1&&bO<bM){bV=bM-1;bQ.removeItem(bM);break}}}}var bN=(bO-bH)-1;while(bN--){bq(bJ,bQ.getItem(bH),bV)}var bU=bQ.getItem(bH);bj(2,bH,[bU.x,bU.y]);var bM=bO;bt.init().selectPt(0)},deletePathNode:function(){if(!z.canDeleteNodes){return}bt.storeD();var bG=bt.selected_pts;var bH=bG.length;while(bH--){var bK=bG[bH];bt.deleteSeg(bK)}var bI=function(){var bN=bt.elem.pathSegList;var bM=bN.numberOfItems;var bL=function(bT,bS){while(bS--){bN.removeItem(bT)}};if(bM<=1){return true}while(bM--){var bQ=bN.getItem(bM);if(bQ.pathSegType===1){var bP=bN.getItem(bM-1);var bO=bN.getItem(bM-2);if(bP.pathSegType===2){bL(bM-1,2);bI();break}else{if(bO.pathSegType===2){bL(bM-2,3);bI();break}}}else{if(bQ.pathSegType===2){if(bM>0){var bR=bN.getItem(bM-1).pathSegType;if(bR===2){bL(bM-1,1);bI();break}else{if(bR===1&&bN.numberOfItems-1===bM){bL(bM,1);bI();break}}}}}}return false};bI();if(bt.elem.pathSegList.numberOfItems<=1){z.toSelectMode(bt.elem);bc.deleteSelectedElements();return}bt.init();bt.clearSelection();if(window.opera){var bJ=$(bt.elem);bJ.attr("d",bJ.attr("d"))}bt.endChanges("Delete path node(s)")},smoothPolylineIntoPath:bn,setSegType:function(bG){bt.setSegType(bG)},moveNode:function(bG,bK){var bI=bt.selected_pts;if(!bI.length){return}bt.storeD();var bH=bt.segs[bI[0]];var bJ={x:0,y:0};bJ[bG]=bK-bH.item[bG];bH.move(bJ.x,bJ.y);bt.endChanges("Move path point")},fixEnd:function(bM){var bI=bM.pathSegList;var bH=bI.numberOfItems;var bG;for(var bJ=0;bJ<bH;++bJ){var bL=bI.getItem(bJ);if(bL.pathSegType===2){bG=bL}if(bL.pathSegType===1){var bK=bI.getItem(bJ-1);if(bK.x!=bG.x||bK.y!=bG.y){var bN=bM.createSVGPathSegLinetoAbs(bG.x,bG.y);bq(bM,bN,bJ);z.fixEnd(bM);break}}}if(aC){bm(bM)}},convertPath:function(bP,bO){var bG=bP.pathSegList;var bT=bG.numberOfItems;var bR=0,bQ=0;var bX="";var bL=null;for(var bS=0;bS<bT;++bS){var bV=bG.getItem(bS);var bN=bV.x||0,bM=bV.y||0,bW=bV.x1||0,bI=bV.y1||0,bU=bV.x2||0,bH=bV.y2||0;var bJ=bV.pathSegType;var bY=E[bJ]["to"+(bO?"Lower":"Upper")+"Case"]();var bK=function(bZ,b0,b1){var b2="";var b0=b0?" "+b0.join(" "):"";var b1=b1?a3(b1):"";$.each(bZ,function(b3,b4){bZ[b3]=a3(b4)});bX+=bY+bZ.join(" ")+b0+b1};switch(bJ){case 1:bX+="z";break;case 12:bN-=bR;case 13:if(bO){bR+=bN}else{bN+=bR;bR=bN}bK([[bN]]);break;case 14:bM-=bQ;case 15:if(bO){bQ+=bM}else{bM+=bQ;bQ=bM}bK([[bM]]);break;case 2:case 4:case 18:bN-=bR;bM-=bQ;case 5:case 3:if(bL&&bG.getItem(bS-1).pathSegType===1&&!bO){bR=bL[0];bQ=bL[1]}case 19:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bM+=bQ;bR=bN;bQ=bM}if(bJ===3){bL=[bR,bQ]}bK([[bN,bM]]);break;case 6:bN-=bR;bW-=bR;bU-=bR;bM-=bQ;bI-=bQ;bH-=bQ;case 7:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bW+=bR;bU+=bR;bM+=bQ;bI+=bQ;bH+=bQ;bR=bN;bQ=bM}bK([[bW,bI],[bU,bH],[bN,bM]]);break;case 8:bN-=bR;bW-=bR;bM-=bQ;bI-=bQ;case 9:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bW+=bR;bM+=bQ;bI+=bQ;bR=bN;bQ=bM}bK([[bW,bI],[bN,bM]]);break;case 10:bN-=bR;bM-=bQ;case 11:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bM+=bQ;bR=bN;bQ=bM}bK([[bV.r1,bV.r2]],[bV.angle,(bV.largeArcFlag?1:0),(bV.sweepFlag?1:0)],[bN,bM]);break;case 16:bN-=bR;bU-=bR;bM-=bQ;bH-=bQ;case 17:if(bO){bR+=bN;bQ+=bM}else{bN+=bR;bU+=bR;bM+=bQ;bH+=bQ;bR=bN;bQ=bM}bK([[bU,bH],[bN,bM]]);break}}return bX}}}();z.init();var v=this.removeUnusedDefElems=function(){var bp=ai.getElementsByTagNameNS(aK,"defs");if(!bp||!bp.length){return 0}var bt=[],br=0;var bu=["fill","stroke","filter","marker-start","marker-mid","marker-end"];var bn=bu.length;var bv=ai.getElementsByTagNameNS(aK,"*");var bi=bv.length;for(var bq=0;bq<bi;bq++){var bk=bv[bq];for(var bo=0;bo<bn;bo++){var bl=ak(bk.getAttribute(bu[bo]));if(bl){bt.push(bl.substr(1))}}var bg=bk.getAttributeNS(aE,"href");if(bg&&bg.indexOf("#")==0){bt.push(bg.substr(1))}}var bm=$(ai).find("linearGradient, radialGradient, filter, marker");defelem_ids=[],bq=bm.length;while(bq--){var bs=bm[bq];var bh=bs.id;if($.inArray(bh,bt)==-1){bs.parentNode.removeChild(bs);br++}}var bq=bp.length;while(bq--){var bj=bp[bq];if(!bj.getElementsByTagNameNS(aK,"*").length){bj.parentNode.removeChild(bj)}}return br};var i=this.svgCanvasToString=function(){while(v()>0){}z.clear(true);$.each(ai.childNodes,function(bh,bi){if(bh&&bi.nodeType==8&&bi.data.indexOf("Created with")!=-1){ai.insertBefore(bi,ai.firstChild)}});var bg=aU(ai,0);return bg};var aU=this.svgToString=function(bi,bh){var bj=new Array(),bn=aw.toXml;if(bi){ar(bi);var bu=bi.attributes,bq,bl,bs=bi.childNodes;for(var bl=0;bl<bh;bl++){bj.push(" ")}bj.push("<");bj.push(bi.nodeName);if(bi.id=="svgcontent"){var br=d();bj.push(' width="'+br.w+'" height="'+br.h+'" xmlns="'+aK+'"');var bm={};$(bi).find("*").andSelf().each(function(){var bv=this;$.each(this.attributes,function(bx,bw){var by=bw.namespaceURI;if(by&&!bm[by]&&am[by]!=="xmlns"&&am[by]!=="xml"){bm[by]=true;bj.push(" xmlns:"+am[by]+'="'+by+'"')}})});var bl=bu.length;while(bl--){bq=bu.item(bl);var bp=bn(bq.nodeValue);if(bq.nodeName.indexOf("xmlns:")===0){continue}if(bp!=""&&$.inArray(bq.localName,["width","height","xmlns","x","y","viewBox","id","overflow"])==-1){if(!bq.namespaceURI||am[bq.namespaceURI]){bj.push(" ");bj.push(bq.nodeName);bj.push('="');bj.push(bp);bj.push('"')}}}}else{for(var bl=bu.length-1;bl>=0;bl--){bq=bu.item(bl);var bp=bn(bq.nodeValue);if($.inArray(bq.localName,["-moz-math-font-style","_moz-math-font-style"])!==-1){continue}if(bp!=""){if(bp.indexOf("pointer-events")==0){continue}if(bq.localName=="class"&&bp.indexOf("se_")==0){continue}bj.push(" ");if(bq.localName=="d"){bp=z.convertPath(bi,true)}if(!isNaN(bp)){bp=a3(bp)}if(ah.apply&&bi.nodeName=="image"&&bq.localName=="href"&&ah.images&&ah.images=="embed"){var bk=aX[bp];if(bk){bp=bk}}if(!bq.namespaceURI||bq.namespaceURI==aK||am[bq.namespaceURI]){bj.push(bq.nodeName);bj.push('="');bj.push(bp);bj.push('"')}}}}if(bi.hasChildNodes()){bj.push(">");bh++;var bo=false;for(var bl=0;bl<bs.length;bl++){var bg=bs.item(bl);switch(bg.nodeType){case 1:bj.push("\n");bj.push(aU(bs.item(bl),bh));break;case 3:var bt=bg.nodeValue.replace(/^\s+|\s+$/g,"");if(bt!=""){bo=true;bj.push(bn(bt)+"")}break;case 8:bj.push("\n");bj.push(new Array(bh+1).join(" "));bj.push("<!--");bj.push(bg.data);bj.push("-->");break}}bh--;if(!bo){bj.push("\n");for(var bl=0;bl<bh;bl++){bj.push(" ")}}bj.push("</");bj.push(bi.nodeName);bj.push(">")}else{bj.push("/>")}}return bj.join("")};this.embedImage=function(bg,bh){$(new Image()).load(function(){var bi=document.createElement("canvas");bi.width=this.width;bi.height=this.height;bi.getContext("2d").drawImage(this,0,0);try{var bj=";svgedit_url="+encodeURIComponent(bg);bj=bi.toDataURL().replace(";base64",bj+";base64");aX[bg]=bj}catch(bk){aX[bg]=false}ad=bg;if(bh){bh(aX[bg])}}).attr("src",bg)};this.setGoodImage=function(bg){ad=bg};this.open=function(){};this.save=function(bg){aZ();if(bg){$.extend(ah,bg)}ah.apply=true;var bh=i();call("saved",bh)};this.rasterExport=function(){aZ();var bh=[];var bg={feGaussianBlur:aB.exportNoBlur,image:aB.exportNoImage,foreignObject:aB.exportNoforeignObject,"[stroke-dasharray]":aB.exportNoDashArray};var bi=$(ai);if(!("font" in $("<canvas>")[0].getContext("2d"))){bg.text=aB.exportNoText}$.each(bg,function(bk,bl){if(bi.find(bk).length){bh.push(bl)}});var bj=i();call("exported",{svg:bj,issues:bh})};this.getSvgString=function(){ah.apply=false;return i()};this.randomizeIds=function(){if(arguments.length>0&&arguments[0]==false){q=false;if(e.Arrows){call("unsetarrownonce")}}else{q=true;if(!ai.getAttributeNS(al,"nonce")){ai.setAttributeNS(al,"se:nonce",m);if(e.Arrows){call("setarrownonce",m)}}}};this.setSvgString=function(bk){try{var bn=aw.text2xml(bk);M(bn.documentElement);var bg=new aA("Change Source");var bj=G.removeChild(ai);bg.addSubCommand(new R(bj,G));ai=G.appendChild(aM.importNode(bn.documentElement,true));n=ai.getAttributeNS(al,"nonce");if(n){q=true;m=n;if(e.Arrows){call("setarrownonce",n)}}else{if(q){ai.setAttributeNS(bf,"xmlns:se",al);ai.setAttributeNS(al,"se:nonce",m);if(e.Arrows){call("setarrownonce",m)}}}$(ai).find("image").each(function(){var br=this;aV(br);var bs=this.getAttributeNS(aE,"href");if(bs.indexOf("data:")===0){var bp=bs.match(/svgedit_url=(.*?);/);if(bp){var bq=decodeURIComponent(bp[1]);$(new Image()).load(function(){br.setAttributeNS(aE,"xlink:href",bq)}).attr("src",bq)}}bc.embedImage(bs)});$(ai).find("linearGradient, radialGradient").each(function(){var bs=this;if($(bs).attr("gradientUnits")==="userSpaceOnUse"){var bp=$(ai).find("[fill=url(#"+bs.id+")],[stroke=url(#"+bs.id+")]");if(!bp.length){return}var br=bp[0].getBBox();if(bs.tagName==="linearGradient"){var bq=$(bs).attr(["x1","y1","x2","y2"]);$(bs).attr({x1:(bq.x1-br.x)/br.width,y1:(bq.y1-br.y)/br.height,x2:(bq.x2-br.x)/br.width,y2:(bq.y1-br.y)/br.height});bs.removeAttribute("gradientUnits")}else{}}});a9(ai,function(bq){try{l(bq)}catch(bp){console.log(bp)}});var bi=$(ai);var bo={id:"svgcontent",overflow:J.show_outside_canvas?"visible":"hidden"};if(bi.attr("viewBox")){var bl=bi.attr("viewBox").split(" ");bo.width=bl[2];bo.height=bl[3]}else{$.each(["width","height"],function(bp,bq){var br=bi.attr(bq)||100;if((br+"").substr(-1)==="%"){bo[bq]=parseInt(br)}else{bo[bq]=a2(bq,br)}})}bi.attr(bo);this.contentW=bo.width;this.contentH=bo.height;bg.addSubCommand(new a(ai));var bm=bi.attr(["width","height"]);bg.addSubCommand(new av(G,bm));ac=1;Y();T={};aZ();z.clearData();G.appendChild(F.selectorParentGroup);aT(bg);call("changed",[ai])}catch(bh){console.log(bh);return false}return true};this.importSvgString=function(bp){try{var bz=aw.text2xml(bp);M(bz.documentElement);var bn=new aA("Change Source");var bh=aM.importNode(bz.documentElement,true);if(V){var bj=bh.getAttribute("width"),bo=bh.getAttribute("height"),bk=bh.getAttribute("viewBox"),bi=bk?bk.split(" "):[0,0,bj,bo];for(var bw=0;bw<4;++bw){bi[bw]=Number(bi[bw])}var br=Number(ai.getAttribute("width")),bC=Number(ai.getAttribute("height"));if(bo>bj){var bg="scale("+(bC/3)/bi[3]+")"}else{var bg="scale("+(bC/3)/bi[2]+")"}bg="translate(0) "+bg+" translate(0)";var by=aM.createElementNS(aK,"g");while(bh.hasChildNodes()){by.appendChild(bh.firstChild)}if(bg){by.setAttribute("transform",bg)}var bu={};at(by,function(bF){if(bF.nodeType==1){if(bF.id){if(!(bF.id in bu)){bu[bF.id]={elem:null,attrs:[],hrefs:[]}}bu[bF.id]["elem"]=bF}$.each(["clip-path","fill","filter","marker-end","marker-mid","marker-start","mask","stroke"],function(bI,bG){var bK=bF.getAttributeNode(bG);if(bK){var bH=ak(bK.value),bJ=bH?bH.substr(1):null;if(bJ){if(!(bJ in bu)){bu[bJ]={elem:null,attrs:[],hrefs:[]}}bu[bJ]["attrs"].push(bK)}}});var bD=bF.getAttributeNS(aE,"href");if(bD&&$.inArray(bF.nodeName,["filter","linearGradient","pattern","radialGradient","textPath","use"])!=-1){var bE=bD.substr(1);if(!(bE in bu)){bu[bE]={elem:null,attrs:[],hrefs:[]}}bu[bE]["hrefs"].push(bF)}}});for(var bm in bu){var bB=bu[bm]["elem"];if(bB){var bl=a7();a4++;bB.id=bl;var bq=bu[bm]["attrs"];var bw=bq.length;while(bw--){var bt=bq[bw];bt.ownerElement.setAttribute(bt.name,"url(#"+bl+")")}var bx=bu[bm]["hrefs"];var bv=bx.length;while(bv--){var bs=bx[bv];bs.setAttributeNS(aE,"xlink:href","#"+bl)}}}by.id=a7();a4++;V.appendChild(by)}a9(ai,function(bE){try{l(bE)}catch(bD){console.log(bD)}});bn.addSubCommand(new a(ai));T={};aZ();aT(bn);call("changed",[ai])}catch(bA){console.log(bA);return false}return true};var Y=function(){aS=[];var bo=ai.childNodes.length;var bi=[],bp=[];for(var bl=0;bl<bo;++bl){var bh=ai.childNodes.item(bl);if(bh&&bh.nodeType==1){if(bh.tagName=="g"){var bg=$("title",bh).text();if(!bg&&k&&bh.querySelectorAll){bg=$(bh.querySelectorAll("title")).text()}if(bg){bp.push(bg);aS.push([bg,bh]);V=bh;at(bh,function(bq){bq.setAttribute("style","pointer-events:inherit")});V.setAttribute("style","pointer-events:none")}else{bi.push(bh)}}else{if(au(bh)&&bh.nodeName!="defs"){var bn=au(bh);bi.push(bh)}}}}if(bi.length>0){var bl=1;while($.inArray(("Layer "+bl),bp)!=-1){bl++}var bj="Layer "+bl;V=aM.createElementNS(aK,"g");var bm=aM.createElementNS(aK,"title");bm.textContent=bj;V.appendChild(bm);for(var bk=0;bk<bi.length;++bk){V.appendChild(bi[bk])}V=ai.appendChild(V);aS.push([bj,V])}at(V,function(bq){bq.setAttribute("style","pointer-events:inherit")});V.setAttribute("style","pointer-events:all")};this.createLayer=function(bi){var bh=new aA("Create Layer");var bg=aM.createElementNS(aK,"g");var bj=aM.createElementNS(aK,"title");bj.textContent=bi;bg.appendChild(bj);bg=ai.appendChild(bg);bh.addSubCommand(new a(bg));aT(bh);aZ();Y();bc.setCurrentLayer(bi);call("changed",[bg])};this.deleteCurrentLayer=function(){if(V&&aS.length>1){var bg=new aA("Delete Layer");var bh=V.parentNode;bg.addSubCommand(new R(V,bh));bh.removeChild(V);aT(bg);aZ();Y();bc.setCurrentLayer(aS[aS.length-1][0]);call("changed",[ai]);return true}return false};this.getNumLayers=function(){return aS.length};this.getLayer=function(bg){if(bg>=0&&bg<bc.getNumLayers()){return aS[bg][0]}return""};this.getCurrentLayer=function(){for(var bg=0;bg<aS.length;++bg){if(aS[bg][1]==V){return aS[bg][0]}}return""};this.setCurrentLayer=function(bg){bg=aw.toXml(bg);for(var bh=0;bh<aS.length;++bh){if(bg==aS[bh][0]){if(V!=aS[bh][1]){aZ();V.setAttribute("style","pointer-events:none");V=aS[bh][1];V.setAttribute("style","pointer-events:all")}return true}}return false};this.renameCurrentLayer=function(bk){if(V){var bh=V;if(!bc.setCurrentLayer(bk)){var bi=new aA("Rename Layer");for(var bj=0;bj<aS.length;++bj){if(aS[bj][1]==bh){break}}var bl=aS[bj][0];aS[bj][0]=aw.toXml(bk);var bg=bh.childNodes.length;for(var bj=0;bj<bg;++bj){var bm=bh.childNodes.item(bj);if(bm&&bm.tagName=="title"){while(bm.firstChild){bm.removeChild(bm.firstChild)}bm.textContent=bk;bi.addSubCommand(new av(bm,{"#text":bl}));aT(bi);call("changed",[bh]);return true}}}V=bh}return false};this.setCurrentLayerPosition=function(bi){if(V&&bi>=0&&bi<aS.length){for(var bg=0;bg<aS.length;++bg){if(aS[bg][1]==V){break}}if(bg==aS.length){return false}if(bg!=bi){var bj=null;var bh=V.nextSibling;if(bi>bg){if(bi<aS.length-1){bj=aS[bi+1][1]}}else{bj=aS[bi][1]}ai.insertBefore(V,bj);aT(new S(V,bh,ai));Y();bc.setCurrentLayer(aS[bi][0]);return true}}return false};this.getLayerVisibility=function(bi){var bh=null;for(var bg=0;bg<aS.length;++bg){if(aS[bg][0]==bi){bh=aS[bg][1];break}}if(!bh){return false}return(bh.getAttribute("display")!="none")};this.setLayerVisibility=function(bj,bg){var bi=null;for(var bh=0;bh<aS.length;++bh){if(aS[bh][0]==bj){bi=aS[bh][1];break}}if(!bi){return false}var bk=bi.getAttribute("display");if(!bk){bk="inline"}bi.setAttribute("display",bg?"inline":"none");aT(new av(bi,{display:bk},"Layer Visibility"));if(bi==V){aZ();z.clear()}return true};this.moveSelectedToLayer=function(bm){var bk=null;for(var bj=0;bj<aS.length;++bj){if(aS[bj][0]==bm){bk=aS[bj][1];break}}if(!bk){return false}var bi=new aA("Move Elements to Layer");var bh=aR;var bj=bh.length;while(bj--){var bl=bh[bj];if(!bl){continue}var bn=bl.nextSibling;var bg=bl.parentNode;bk.appendChild(bl);bi.addSubCommand(new S(bl,bn,bg))}aT(bi);return true};this.getLayerOpacity=function(bj){for(var bh=0;bh<aS.length;++bh){if(aS[bh][0]==bj){var bi=aS[bh][1];var bg=bi.getAttribute("opacity");if(!bg){bg="1.0"}return parseFloat(bg)}}return null};this.setLayerOpacity=function(bj,bg){if(bg<0||bg>1){return}for(var bh=0;bh<aS.length;++bh){if(aS[bh][0]==bj){var bi=aS[bh][1];bi.setAttribute("opacity",bg);break}}};this.clear=function(){z.clear();var bh=ai.childNodes;var bg=ai.childNodes.length;var bi=0;aZ();for(var bj=0;bj<bg;bj++){if(bh[bi].nodeType==1){ai.removeChild(bh[bi])}else{bi++}}aS=[];bc.createLayer("Layer 1");aJ();F.initGroup();j=F.getRubberBandBox();call("cleared")};this.linkControlPoints=z.linkControlPoints;this.getContentElem=function(){return ai};this.getRootElem=function(){return G};this.getSelectedElems=function(){return aR};var d=this.getResolution=function(){return{w:ai.getAttribute("width")/ac,h:ai.getAttribute("height")/ac,zoom:ac}};this.getZoom=function(){return ac};this.getVersion=function(){return"svgcanvas.js ($Rev: 1738 $)"};this.setUiStrings=function(bg){$.extend(aB,bg)};this.setConfig=function(bg){$.extend(J,bg)};this.getDocumentTitle=function(){var bh=ai.childNodes;for(var bg=0;bg<bh.length;bg++){if(bh[bg].nodeName=="title"){return bh[bg].textContent}}return""};this.setDocumentTitle=function(bj){var bk=ai.childNodes,bl=false,bi="";var bg=new aA("Change Image Title");for(var bh=0;bh<bk.length;bh++){if(bk[bh].nodeName=="title"){bl=bk[bh];bi=bl.textContent;break}}if(!bl){bl=aM.createElementNS(aK,"title");ai.insertBefore(bl,ai.firstChild)}if(bj.length){bl.textContent=bj}else{bl.parentNode.removeChild(bl)}bg.addSubCommand(new av(bl,{"#text":bi}));aT(bg)};this.getEditorNS=function(bg){if(bg){ai.setAttribute("xmlns:se",al)}return al};this.setResolution=function(bn,bm){var bl=d();var bo=bl.w,bi=bl.h;var bh;if(bn=="fit"){var bp=ag();if(bp){bh=new aA("Fit Canvas to Content");var bj=aO();a5(bj);var br=[],bq=[];$.each(bj,function(bs,bt){br.push(bp.x*-1);bq.push(bp.y*-1)});var bg=bc.moveSelectedElements(br,bq,true);bh.addSubCommand(bg);aZ();bn=Math.round(bp.width);bm=Math.round(bp.height)}else{return false}}if(bn!=bo||bm!=bi){var bk=G.suspendRedraw(1000);if(!bh){bh=new aA("Change Image Dimensions")}bn=a2("width",bn);bm=a2("height",bm);ai.setAttribute("width",bn);ai.setAttribute("height",bm);this.contentW=bn;this.contentH=bm;bh.addSubCommand(new av(ai,{width:bo,height:bi}));ai.setAttribute("viewBox",[0,0,bn/ac,bm/ac].join(" "));bh.addSubCommand(new av(ai,{viewBox:["0 0",bo,bi].join(" ")}));aT(bh);G.unsuspendRedraw(bk);call("changed",[ai])}return true};this.getOffset=function(){return $(ai).attr(["x","y"])};this.setBBoxZoom=function(bh,bo,bi){var bn=0.85;var bm;var bk=function(bs){if(!bs){return false}var br=Math.round((bo/bs.width)*100*bn)/100;var bp=Math.round((bi/bs.height)*100*bn)/100;var bq=Math.min(br,bp);bc.setZoom(bq);return{zoom:bq,bbox:bs}};if(typeof bh=="object"){bm=bh;if(bm.width==0||bm.height==0){var bg=bm.zoom?bm.zoom:ac*bm.factor;bc.setZoom(bg);return{zoom:ac,bbox:bm}}return bk(bm)}switch(bh){case"selection":if(!aR[0]){return}var bj=$.map(aR,function(bp){if(bp){return bp}});bm=ag(bj);break;case"canvas":var bl=d();bn=0.95;bm={width:bl.w,height:bl.h,x:0,y:0};break;case"content":bm=ag();break;case"layer":bm=ag(aO(V));break;default:return}return bk(bm)};this.setZoom=function(bg){var bh=d();ai.setAttribute("viewBox","0 0 "+bh.w/bg+" "+bh.h/bg);ac=bg;$.each(aR,function(bi,bj){if(!bj){return}F.requestSelector(bj).resize()});z.zoomChange();aI("zoomChanged",bg)};this.getMode=function(){return a1};this.setMode=function(bg){z.clear(true);L.clear();r=(aR[0]&&aR[0].nodeName=="text")?a6:aN;a1=bg};this.getColor=function(bg){return r[bg]};this.setColor=function(bj,bl,bh){aN[bj]=bl;r[bj+"_paint"]={type:"solidColor"};var bg=[];var bi=aR.length;while(bi--){var bk=aR[bi];if(bk){if(bk.tagName=="g"){at(bk,function(bm){if(bm.nodeName!="g"){bg.push(bm)}})}else{if(bj=="fill"){if(bk.tagName!="polyline"&&bk.tagName!="line"){bg.push(bk)}}else{bg.push(bk)}}}}if(bg.length>0){if(!bh){A(bj,bl,bg);call("changed",bg)}else{o(bj,bl,bg)}}};var aD=function(){var bg=ai.getElementsByTagNameNS(aK,"defs");if(bg.length>0){bg=bg[0]}else{bg=ai.insertBefore(aM.createElementNS(aK,"defs"),ai.firstChild.nextSibling)}return bg};var ae=this.setGradient=function(bh){if(!r[bh+"_paint"]||r[bh+"_paint"].type=="solidColor"){return}var bk=bc[bh+"Grad"];var bj=t(bk);var bg=aD();if(!bj){var bi=bk;bk=bg.appendChild(aM.importNode(bk,true));bk.id=a7()}else{bk=bj}bc.setColor(bh,"url(#"+bk.id+")")};var t=function(bo){var bk=aD();var bq=$(bk).find("linearGradient, radialGradient");var bl=bq.length;var bh=["r","cx","cy","fx","fy"];while(bl--){var bs=bq[bl];if(bo.tagName=="linearGradient"){if(bo.getAttribute("x1")!=bs.getAttribute("x1")||bo.getAttribute("y1")!=bs.getAttribute("y1")||bo.getAttribute("x2")!=bs.getAttribute("x2")||bo.getAttribute("y2")!=bs.getAttribute("y2")){continue}}else{var bi=$(bo).attr(bh);var bp=$(bs).attr(bh);var bn=false;$.each(bh,function(bv,bu){if(bi[bu]!=bp[bu]){bn=true}});if(bn){continue}}var br=bo.getElementsByTagNameNS(aK,"stop");var bt=bs.getElementsByTagNameNS(aK,"stop");if(br.length!=bt.length){continue}var bj=br.length;while(bj--){var bm=br[bj];var bg=bt[bj];if(bm.getAttribute("offset")!=bg.getAttribute("offset")||bm.getAttribute("stop-opacity")!=bg.getAttribute("stop-opacity")||bm.getAttribute("stop-color")!=bg.getAttribute("stop-color")){break}}if(bj==-1){return bs}}return null};this.setPaint=function(bg,bi){var bh=new $.jGraduate.Paint(bi);this.setPaintOpacity(bg,bh.alpha/100,true);r[bg+"_paint"]=bh;switch(bh.type){case"solidColor":this.setColor(bg,bh.solidColor!="none"?"#"+bh.solidColor:"none");break;case"linearGradient":case"radialGradient":bc[bg+"Grad"]=bh[bh.type];ae(bg);break;default:}};this.getStrokeWidth=function(){return r.stroke_width};this.setStrokeWidth=function(bj){if(bj==0&&$.inArray(a1,["line","path"])!=-1){bc.setStrokeWidth(1);return}r.stroke_width=bj;var bg=[];var bh=aR.length;while(bh--){var bi=aR[bh];if(bi){if(bi.tagName=="g"){at(bi,function(bk){if(bk.nodeName!="g"){bg.push(bk)}})}else{bg.push(bi)}}}if(bg.length>0){A("stroke-width",bj,bg);call("changed",aR)}};this.setStrokeAttr=function(bg,bk){aN[bg.replace("-","_")]=bk;var bh=[];var bi=aR.length;while(bi--){var bj=aR[bi];if(bj){if(bj.tagName=="g"){at(bj,function(bl){if(bl.nodeName!="g"){bh.push(bl)}})}else{bh.push(bj)}}}if(bh.length>0){A(bg,bk,bh);call("changed",aR)}};this.getOpacity=function(){return aN.opacity};this.setOpacity=function(bg){aN.opacity=bg;A("opacity",bg)};this.getFillOpacity=function(){return aN.fill_opacity};this.getStrokeOpacity=function(){return aN.stroke_opacity};this.setPaintOpacity=function(bh,bi,bg){aN[bh+"_opacity"]=bi;if(!bg){A(bh+"-opacity",bi)}else{o(bh+"-opacity",bi)}};this.getBlur=function(bg){var bj=0;if(bg){var bh=bg.getAttribute("filter");if(bh){var bi=b(bg.id+"_blur");if(bi){bj=bi.firstChild.getAttribute("stdDeviation")}}}return bj};(function(){var bi=null;var bj=null;var bg=false;bc.setBlurNoUndo=function(bk){if(!bj){bc.setBlur(bk);return}if(bk===0){o("filter","");bg=true}else{if(bg){o("filter","url(#"+aR[0].id+"_blur)")}o("stdDeviation",bk,[bj.firstChild]);bc.setBlurOffsets(bj,bk)}};function bh(){var bk=bc.finishUndoableChange();bi.addSubCommand(bk);aT(bi);bi=null;bj=null}bc.setBlurOffsets=function(bk,bl){if(bl>3){az(bk,{x:"-50%",y:"-50%",width:"200%",height:"200%",},100)}else{bk.removeAttribute("x");bk.removeAttribute("y");bk.removeAttribute("width");bk.removeAttribute("height")}};bc.setBlur=function(bp,bl){if(bi){bh();return}var bo=aR[0];var bk=bo.id;bj=b(bk+"_blur");bp-=0;var bm=new aA();if(bj){if(bp===0){bj=null}}else{var bq=c({element:"feGaussianBlur",attr:{"in":"SourceGraphic",stdDeviation:bp}});bj=c({element:"filter",attr:{id:bk+"_blur"}});bj.appendChild(bq);aD().appendChild(bj);bm.addSubCommand(new a(bj))}var bn={filter:bo.getAttribute("filter")};if(bp===0){bo.removeAttribute("filter");bm.addSubCommand(new av(bo,bn));return}else{A("filter","url(#"+bk+"_blur)");bm.addSubCommand(new av(bo,bn));bc.setBlurOffsets(bj,bp)}bi=bm;bc.beginUndoableChange("stdDeviation",[bj?bj.firstChild:null]);if(bl){bc.setBlurNoUndo(bp);bh()}}}());this.getBold=function(){var bg=aR[0];if(bg!=null&&bg.tagName=="text"&&aR[1]==null){return(bg.getAttribute("font-weight")=="bold")}return false};this.setBold=function(bg){var bh=aR[0];if(bh!=null&&bh.tagName=="text"&&aR[1]==null){A("font-weight",bg?"bold":"normal")}};this.getItalic=function(){var bg=aR[0];if(bg!=null&&bg.tagName=="text"&&aR[1]==null){return(bg.getAttribute("font-style")=="italic")}return false};this.setItalic=function(bg){var bh=aR[0];if(bh!=null&&bh.tagName=="text"&&aR[1]==null){A("font-style",bg?"italic":"normal")}};this.getFontFamily=function(){return a6.font_family};this.setFontFamily=function(bg){a6.font_family=bg;A("font-family",bg)};this.getFontSize=function(){return a6.font_size};this.setFontSize=function(bg){a6.font_size=bg;L.toSelectMode();A("font-size",bg)};this.getText=function(){var bg=aR[0];if(bg==null){return""}return bg.textContent};this.setTextContent=function(bg){A("#text",bg);L.init(bg);L.setCursor()};this.setImageURL=function(bl){var bk=aR[0];if(!bk){return}var bi=$(bk).attr(["width","height"]);var bg=(!bi.width||!bi.height);var bj=bk.getAttributeNS(aE,"href");if(bj!==bl){bg=true}else{if(!bg){return}}var bh=new aA("Change Image URL");bk.setAttributeNS(aE,"xlink:href",bl);bh.addSubCommand(new av(bk,{"#href":bj}));if(bg){$(new Image()).load(function(){var bm=$(bk).attr(["width","height"]);$(bk).attr({width:this.width,height:this.height});F.requestSelector(bk).resize();bh.addSubCommand(new av(bk,bm));aT(bh);call("changed",bk)}).attr("src",bl)}else{aT(bh)}};this.setRectRadius=function(bi){var bg=aR[0];if(bg!=null&&bg.tagName=="rect"){var bh=bg.getAttribute("rx");if(bh!=bi){bg.setAttribute("rx",bi);bg.setAttribute("ry",bi);aT(new av(bg,{rx:bh,ry:bh},"Radius"));call("changed",[bg])}}};this.setSegType=function(bg){z.setSegType(bg)};this.convertToPath=function(bz,bA){if(bz==null){var bF=aR;$.each(aR,function(bG,bH){if(bH){bc.convertToPath(bH)}});return}if(!bA){var bs=new aA("Convert element to Path")}var bw=bA?{}:{fill:aN.fill,"fill-opacity":aN.fill_opacity,stroke:aN.stroke,"stroke-width":aN.stroke_width,"stroke-dasharray":aN.stroke_dasharray,"stroke-linejoin":aN.stroke_linejoin,"stroke-linecap":aN.stroke_linecap,"stroke-opacity":aN.stroke_opacity,opacity:aN.opacity,visibility:"hidden"};$.each(["marker-start","marker-end","marker-mid","filter","clip-path"],function(){if(bz.getAttribute(this)){bw[this]=bz.getAttribute(this)}});var bu=c({element:"path",attr:bw});var bD=bz.getAttribute("transform");if(bD){bu.setAttribute("transform",bD)}var bv=bz.id;var bp=bz.parentNode;if(bz.nextSibling){bp.insertBefore(bu,bz)}else{bp.appendChild(bu)}var bB="";var bl=function(bG){$.each(bG,function(bJ,bI){var bH=bI[0],bL=bI[1];bB+=bH;for(var bK=0;bK<bL.length;bK+=2){bB+=(bL[bK]+","+bL[bK+1])+" "}})};var bm=1.81;switch(bz.tagName){case"ellipse":case"circle":var bE=$(bz).attr(["rx","ry","cx","cy"]);var bh=bE.cx,bg=bE.cy,bj=bE.rx,bi=bE.ry;if(bz.tagName=="circle"){bj=bi=$(bz).attr("r")}bl([["M",[(bh-bj),(bg)]],["C",[(bh-bj),(bg-bi/bm),(bh-bj/bm),(bg-bi),(bh),(bg-bi)]],["C",[(bh+bj/bm),(bg-bi),(bh+bj),(bg-bi/bm),(bh+bj),(bg)]],["C",[(bh+bj),(bg+bi/bm),(bh+bj/bm),(bg+bi),(bh),(bg+bi)]],["C",[(bh-bj/bm),(bg+bi),(bh-bj),(bg+bi/bm),(bh-bj),(bg)]],["Z",[]]]);break;case"path":bB=bz.getAttribute("d");break;case"line":var bE=$(bz).attr(["x1","y1","x2","y2"]);bB="M"+bE.x1+","+bE.y1+"L"+bE.x2+","+bE.y2;break;case"polyline":case"polygon":bB="M"+bz.getAttribute("points");break;case"rect":var bt=$(bz).attr(["rx","ry"]);var bj=bt.rx,bi=bt.ry;var bC=bz.getBBox();var bq=bC.x,bo=bC.y,br=bC.width,bx=bC.height;var bm=4-bm;if(!bj&&!bi){bl([["M",[bq,bo]],["L",[bq+br,bo]],["L",[bq+br,bo+bx]],["L",[bq,bo+bx]],["L",[bq,bo]],["Z",[]]])}else{bl([["M",[bq,bo+bi]],["C",[bq,bo+bi/bm,bq+bj/bm,bo,bq+bj,bo]],["L",[bq+br-bj,bo]],["C",[bq+br-bj/bm,bo,bq+br,bo+bi/bm,bq+br,bo+bi]],["L",[bq+br,bo+bx-bi]],["C",[bq+br,bo+bx-bi/bm,bq+br-bj/bm,bo+bx,bq+br-bj,bo+bx]],["L",[bq+bj,bo+bx]],["C",[bq+bj/bm,bo+bx,bq,bo+bx-bi/bm,bq,bo+bx-bi]],["L",[bq,bo+bi]],["Z",[]]])}break;default:bu.parentNode.removeChild(bu);break}if(bB){bu.setAttribute("d",bB)}if(!bA){if(bD){var bn=aQ(bu);if(aP(bn)){z.resetOrientation(bu)}}bs.addSubCommand(new R(bz,bp));bs.addSubCommand(new a(bu));aZ();bz.parentNode.removeChild(bz);bu.setAttribute("id",bv);bu.removeAttribute("visibility");a5([bu],true);aT(bs)}else{z.resetOrientation(bu);var bk=false;try{bk=bu.getBBox()}catch(by){}bu.parentNode.removeChild(bu);return bk}};var o=function(br,bp,bz){var bw=G.suspendRedraw(1000);if(a1=="pathedit"){z.moveNode(br,bp)}var bz=bz||aR;var bt=bz.length;while(bt--){var bv=bz[bt];if(bv==null){continue}if(a1==="textedit"&&br!=="#text"){L.toSelectMode(bv)}if((br=="x"||br=="y")&&$.inArray(bv.tagName,["g","polyline","path"])!=-1){var bg=ag([bv]);var bm=br=="x"?bp-bg.x:0;var bl=br=="y"?bp-bg.y:0;bc.moveSelectedElements(bm*ac,bl*ac,true);continue}if(bv.tagName=="g"&&$.inArray(br,["transform","opacity","filter"])!==-1){}var bk=br=="#text"?bv.textContent:bv.getAttribute(br);if(bk==null){bk=""}if(bk!=String(bp)){if(br=="#text"){var bs=au(bv).width;bv.textContent=bp;bv=g(bv)}else{if(br=="#href"){bv.setAttributeNS(aE,"xlink:href",bp)}else{bv.setAttribute(br,bp)}}if(bt==0){u[bt]=au(bv)}if(bv.nodeName=="text"){if((bp+"").indexOf("url")==0||$.inArray(br,["font-size","font-family","x","y"])!=-1){bv=g(bv)}}if($.inArray(bv,aR)!=-1){setTimeout(function(){if(!bv.parentNode){return}F.requestSelector(bv).resize()},0)}var bu=aq(bv);if(bu!=0&&br!="transform"){var bn=aQ(bv);var bq=bn.numberOfItems;while(bq--){var bi=bn.getItem(bq);if(bi.type==4){bn.removeItem(bq);var bo=au(bv);var by=P(bo.x+bo.width/2,bo.y+bo.height/2,s(bn).matrix);var bj=by.x,bh=by.y;var bx=G.createSVGTransform();bx.setRotate(bu,bj,bh);bn.insertItemBefore(bx,bq);break}}}}}G.unsuspendRedraw(bw)};var A=this.changeSelectedAttribute=function(bg,bk,bi){var bi=bi||aR;bc.beginUndoableChange(bg,bi);var bj=bi.length;o(bg,bk,bi);var bh=bc.finishUndoableChange();if(!bh.isEmpty()){aT(bh)}};this.deleteSelectedElements=function(){var bi=new aA("Delete Elements");var bh=aR.length;var bg=[];for(var bk=0;bk<bh;++bk){var bm=aR[bk];if(bm==null){break}var bl=bm.parentNode;var bj=bm;F.releaseSelector(bj);var bn=bl.removeChild(bj);bg.push(bm);aR[bk]=null;bi.addSubCommand(new R(bn,bl))}if(!bi.isEmpty()){aT(bi)}call("changed",bg);aZ()};this.groupSelectedElements=function(){var bg=new aA("Group Elements");var bk=c({element:"g",attr:{id:a7()}});bg.addSubCommand(new a(bk));var bi=aR.length;while(bi--){var bj=aR[bi];if(bj==null){continue}var bl=bj.nextSibling;var bh=bj.parentNode;bk.appendChild(bj);bg.addSubCommand(new S(bj,bl,bh))}if(!bg.isEmpty()){aT(bg)}aZ();a5([bk],true)};this.ungroupSelectedElement=function(){var bO=aR[0];if(bO.tagName=="g"){var bg=new aA("Ungroup Elements");var bo=bO.parentNode;var bj=bO.previousSibling;var bv=new Array(bO.childNodes.length);var bI=bO.getAttribute("transform");var bp=aQ(bO);var bK=s(bp).matrix;var bN=0;var bB=aq(bO);var bw=$(bO).attr(["filter","opacity"]);var bM,bk;while(bO.firstChild){var bJ=bO.firstChild;var bC=bJ.nextSibling;var bE=bJ.parentNode;bv[bN++]=bJ=bo.insertBefore(bJ,bj);bg.addSubCommand(new S(bJ,bC,bE));if(bw.opacity!==null&&bw.opacity!==1){var bR=bJ.getAttribute("opacity")||1;var bl=Math.round((bJ.getAttribute("opacity")||1)*bw.opacity*100)/100;A("opacity",bl,[bJ])}if(bw.filter){var bq=this.getBlur(bJ);var bu=bq;if(!bk){bk=this.getBlur(bO)}if(bq){bq=(bk-0)+(bq-0)}else{if(bq===0){bq=bk}}if(!bu){if(!bM){bM=b(ak(bw.filter).substr(1))}else{bM=ap(bM);aD().appendChild(bM)}}else{bM=b(ak(bJ.getAttribute("filter")).substr(1))}var bL=(bM.firstChild.tagName==="feGaussianBlur")?"blur":"filter";bM.id=bJ.id+"_"+bL;A("filter","url(#"+bM.id+")",[bJ]);if(bq){A("stdDeviation",bq,[bM.firstChild]);bc.setBlurOffsets(bM,bq)}}var bD=aQ(bJ);if(bp.numberOfItems){if(bB&&bp.numberOfItems==1){var bh=bp.getItem(0).matrix;var bt=G.createSVGMatrix();var bA=aq(bJ);if(bA){bt=bD.getItem(0).matrix}var bH=au(bJ);var bP=s(bD).matrix;var bs=P(bH.x+bH.width/2,bH.y+bH.height/2,bP);var bF=bB+bA;var br=G.createSVGTransform();br.setRotate(bF,bs.x,bs.y);var bm=af(bh,bt,br.matrix.inverse());if(bA){bD.removeItem(0)}if(bF){bD.insertItemBefore(br,0)}if(bm.e||bm.f){var bQ=G.createSVGTransform();bQ.setTranslate(bm.e,bm.f);bD.insertItemBefore(bQ,0)}}else{var bx=bJ.getAttribute("transform");var by={};by.transform=bx?bx:"";var bi=G.createSVGTransform();var bz=s(bD).matrix,bG=bz.inverse();var bn=af(bG,bK,bz);bi.setMatrix(bn);bD.appendItem(bi)}bg.addSubCommand(l(bJ))}}if(bI){var by={};by.transform=bI;bO.setAttribute("transform","");bO.removeAttribute("transform");bg.addSubCommand(new av(bO,by))}aZ();bO=bo.removeChild(bO);bg.addSubCommand(new R(bO,bo));if(!bg.isEmpty()){aT(bg)}a5(bv)}};this.moveToTopSelectedElement=function(){var bi=aR[0];if(bi!=null){var bh=bi;var bg=bh.parentNode;var bj=bh.nextSibling;bh=bh.parentNode.appendChild(bh);aT(new S(bh,bj,bg,"top"))}};this.moveToBottomSelectedElement=function(){var bi=aR[0];if(bi!=null){var bh=bi;var bg=bh.parentNode;var bk=bh.nextSibling;var bj=bh.parentNode.firstChild;if(bj.tagName=="title"){bj=bj.nextSibling}if(bj.tagName=="defs"){bj=bj.nextSibling}bh=bh.parentNode.insertBefore(bh,bj);aT(new S(bh,bk,bg,"bottom"))}};this.moveSelectedElements=function(bo,bn,bl){if(bo.constructor!=Array){bo/=ac;bn/=ac}var bl=bl||true;var bh=new aA("position");var bj=aR.length;while(bj--){var bi=aR[bj];if(bi!=null){if(bj==0){u[bj]=au(bi)}var bm=G.createSVGTransform();var bk=aQ(bi);if(bo.constructor==Array){if(bj==0){u[bj].x+=bo[bj];u[bj].y+=bn[bj]}bm.setTranslate(bo[bj],bn[bj])}else{if(bj==0){u[bj].x+=bo;u[bj].y+=bn}bm.setTranslate(bo,bn)}bk.insertItemBefore(bm,0);var bg=l(bi);if(bg){bh.addSubCommand(bg)}F.requestSelector(bi).resize()}}if(!bh.isEmpty()){if(bl){aT(bh)}call("changed",aR);return bh}};this.cloneSelectedElements=function(){var bh=new aA("Clone Elements");var bg=aR.length;for(var bi=0;bi<bg;++bi){var bk=aR[bi];if(bk==null){break}}var bj=aR.slice(0,bi);this.clearSelection();var bi=bj.length;while(bi--){var bk=bj[bi]=ap(bj[bi]);V.appendChild(bk);bh.addSubCommand(new a(bk))}if(!bh.isEmpty()){a5(bj.reverse());this.moveSelectedElements(20,20,false);aT(bh);call("selected",aR)}};this.alignSelectedElements=function(bo,bu){var bj=[],bm=[];var bs=Number.MAX_VALUE,bn=Number.MIN_VALUE,bq=Number.MAX_VALUE,bl=Number.MIN_VALUE;var bp=Number.MIN_VALUE,bk=Number.MIN_VALUE;var bi=aR.length;if(!bi){return}for(var bh=0;bh<bi;++bh){if(aR[bh]==null){break}var bg=aR[bh];bj[bh]=ag([bg]);switch(bu){case"smallest":if((bo=="l"||bo=="c"||bo=="r")&&(bp==Number.MIN_VALUE||bp>bj[bh].width)||(bo=="t"||bo=="m"||bo=="b")&&(bk==Number.MIN_VALUE||bk>bj[bh].height)){bs=bj[bh].x;bq=bj[bh].y;bn=bj[bh].x+bj[bh].width;bl=bj[bh].y+bj[bh].height;bp=bj[bh].width;bk=bj[bh].height}break;case"largest":if((bo=="l"||bo=="c"||bo=="r")&&(bp==Number.MIN_VALUE||bp<bj[bh].width)||(bo=="t"||bo=="m"||bo=="b")&&(bk==Number.MIN_VALUE||bk<bj[bh].height)){bs=bj[bh].x;bq=bj[bh].y;bn=bj[bh].x+bj[bh].width;bl=bj[bh].y+bj[bh].height;bp=bj[bh].width;bk=bj[bh].height}break;default:if(bj[bh].x<bs){bs=bj[bh].x}if(bj[bh].y<bq){bq=bj[bh].y}if(bj[bh].x+bj[bh].width>bn){bn=bj[bh].x+bj[bh].width}if(bj[bh].y+bj[bh].height>bl){bl=bj[bh].y+bj[bh].height}break}}if(bu=="page"){bs=0;bq=0;bn=bc.contentW;bl=bc.contentH}var bv=new Array(bi);var bt=new Array(bi);for(var bh=0;bh<bi;++bh){if(aR[bh]==null){break}var bg=aR[bh];var br=bj[bh];bv[bh]=0;bt[bh]=0;switch(bo){case"l":bv[bh]=bs-br.x;break;case"c":bv[bh]=(bs+bn)/2-(br.x+br.width/2);break;case"r":bv[bh]=bn-(br.x+br.width);break;case"t":bt[bh]=bq-br.y;break;case"m":bt[bh]=(bq+bl)/2-(br.y+br.height/2);break;case"b":bt[bh]=bl-(br.y+br.height);break}}this.moveSelectedElements(bv,bt)};this.contentW=d().w;this.contentH=d().h;this.updateCanvas=function(bj,bl){G.setAttribute("width",bj);G.setAttribute("height",bl);var bk=$("#canvasBackground")[0];var bi=ai.getAttribute("x");var bn=ai.getAttribute("y");var bh=(bj/2-this.contentW*ac/2);var bm=(bl/2-this.contentH*ac/2);az(ai,{width:this.contentW*ac,height:this.contentH*ac,x:bh,y:bm,viewBox:"0 0 "+this.contentW+" "+this.contentH});az(bk,{width:ai.getAttribute("width"),height:ai.getAttribute("height"),x:bh,y:bm});F.selectorParentGroup.setAttribute("transform","translate("+bh+","+bm+")");return{x:bh,y:bm,old_x:bi,old_y:bn,d_x:bh-bi,d_y:bm-bn}};this.setBackground=function(bh,bj){var bk=b("canvasBackground");var bi=$(bk).find("rect")[0];var bl=b("background_image");bi.setAttribute("fill",bh);if(bj){if(!bl){bl=aM.createElementNS(aK,"image");az(bl,{id:"background_image",width:"100%",height:"100%",preserveAspectRatio:"xMinYMin",style:"pointer-events:none"})}bl.setAttributeNS(aE,"xlink:href",bj);bk.appendChild(bl)}else{if(bl){bl.parentNode.removeChild(bl)}}};this.cycleElement=function(bi){var bl=aR[0];var bj=false;var bk=aO(V);if(bl==null){var bg=bi?bk.length-1:0;bj=bk[bg]}else{var bh=bk.length;while(bh--){if(bk[bh]==bl){var bg=bi?bh-1:bh+1;if(bg>=bk.length){bg=0}else{if(bg<0){bg=bk.length-1}}bj=bk[bg];break}}}aZ();a5([bj],true);call("selected",aR)};this.clear();this.getPrivateMethods=function(){var bg={addCommandToHistory:aT,setGradient:ae,addSvgElementFromJson:c,assignAttributes:az,BatchCommand:aA,call:call,ChangeElementCommand:av,cleanupElement:ar,copyElem:ap,ffClone:g,findDefs:aD,findDuplicateGradient:t,getElem:b,getId:C,getIntersectionList:aW,getMouseTarget:Z,getNextId:a7,getPathBBox:bb,getUrlFromAttr:ak,hasMatrixTransform:aP,identifyLayers:Y,InsertElementCommand:a,isIdentity:a8,logMatrix:ax,matrixMultiply:af,MoveElementCommand:S,preventClickDefault:aV,recalculateAllSelectedDimensions:aY,recalculateDimensions:l,remapElement:D,RemoveElementCommand:R,removeUnusedDefElems:v,round:Q,runExtensions:aI,sanitizeSvg:M,SelectorManager:bd,shortFloat:a3,svgCanvasToString:i,SVGEditTransformList:H,svgToString:aU,toString:toString,transformBox:be,transformListToTransform:s,transformPoint:P,walkTree:at};return bg};(function(){var bl=document.createElementNS(aK,"path");bl.setAttribute("d","M0,0 10,10");var bh=bl.pathSegList;var bg=bl.createSVGPathSegLinetoAbs(5,5);try{bh.replaceItem(bg,0);a0.pathReplaceItem=true}catch(bk){a0.pathReplaceItem=false}try{bh.insertItemBefore(bg,0);a0.pathInsertItemBefore=true}catch(bk){a0.pathInsertItemBefore=false}a0.editableText=k;var bj=document.createElementNS(aK,"rect");bj.setAttribute("x",0.1);var bi=bj.cloneNode(false);a0.goodDecimals=(bi.getAttribute("x").indexOf(",")==-1);if(!a0.goodDecimals){$.alert("NOTE: This version of Opera is known to contain bugs in SVG-edit.\n Please upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed.")}var bj=document.createElementNS(aK,"rect");bj.setAttribute("width","1em");bj.setAttribute("height","1ex");ai.appendChild(bj);var bm=bj.getBBox();I.em=bm.width;I.ex=bm.height;ai.removeChild(bj)}())}; \ No newline at end of file
diff --git a/files_svgedit/js/svgicons/jquery.svgicons.js b/files_svgedit/js/svgicons/jquery.svgicons.js
new file mode 100644
index 000000000..2db257ea1
--- /dev/null
+++ b/files_svgedit/js/svgicons/jquery.svgicons.js
@@ -0,0 +1,457 @@
+/*
+ * SVG Icon Loader 2.0
+ *
+ * jQuery Plugin for loading SVG icons from a single file
+ *
+ * Copyright (c) 2009 Alexis Deveria
+ * http://a.deveria.com
+ *
+ * Apache 2 License
+
+How to use:
+
+1. Create the SVG master file that includes all icons:
+
+The master SVG icon-containing file is an SVG file that contains
+<g> elements. Each <g> element should contain the markup of an SVG
+icon. The <g> element has an ID that should
+correspond with the ID of the HTML element used on the page that should contain
+or optionally be replaced by the icon. Additionally, one empty element should be
+added at the end with id "svg_eof".
+
+2. Optionally create fallback raster images for each SVG icon.
+
+3. Include the jQuery and the SVG Icon Loader scripts on your page.
+
+4. Run $.svgIcons() when the document is ready:
+
+$.svgIcons( file [string], options [object literal]);
+
+File is the location of a local SVG or SVGz file.
+
+All options are optional and can include:
+
+- 'w (number)': The icon widths
+
+- 'h (number)': The icon heights
+
+- 'fallback (object literal)': List of raster images with each
+ key being the SVG icon ID to replace, and the value the image file name.
+
+- 'fallback_path (string)': The path to use for all images
+ listed under "fallback"
+
+- 'replace (boolean)': If set to true, HTML elements will be replaced by,
+ rather than include the SVG icon.
+
+- 'placement (object literal)': List with selectors for keys and SVG icon ids
+ as values. This provides a custom method of adding icons.
+
+- 'resize (object literal)': List with selectors for keys and numbers
+ as values. This allows an easy way to resize specific icons.
+
+- 'callback (function)': A function to call when all icons have been loaded.
+ Includes an object literal as its argument with as keys all icon IDs and the
+ icon as a jQuery object as its value.
+
+- 'id_match (boolean)': Automatically attempt to match SVG icon ids with
+ corresponding HTML id (default: true)
+
+- 'no_img (boolean)': Prevent attempting to convert the icon into an <img>
+ element (may be faster, help for browser consistency)
+
+- 'svgz (boolean)': Indicate that the file is an SVGZ file, and thus not to
+ parse as XML. SVGZ files add compression benefits, but getting data from
+ them fails in Firefox 2 and older.
+
+5. To access an icon at a later point without using the callback, use this:
+ $.getSvgIcon(id (string));
+
+This will return the icon (as jQuery object) with a given ID.
+
+6. To resize icons at a later point without using the callback, use this:
+ $.resizeSvgIcons(resizeOptions) (use the same way as the "resize" parameter)
+
+
+Example usage #1:
+
+$(function() {
+ $.svgIcons('my_icon_set.svg'); // The SVG file that contains all icons
+ // No options have been set, so all icons will automatically be inserted
+ // into HTML elements that match the same IDs.
+});
+
+Example usage #2:
+
+$(function() {
+ $.svgIcons('my_icon_set.svg', { // The SVG file that contains all icons
+ callback: function(icons) { // Custom callback function that sets click
+ // events for each icon
+ $.each(icons, function(id, icon) {
+ icon.click(function() {
+ alert('You clicked on the icon with id ' + id);
+ });
+ });
+ }
+ }); //The SVG file that contains all icons
+});
+
+Example usage #3:
+
+$(function() {
+ $.svgIcons('my_icon_set.svgz', { // The SVGZ file that contains all icons
+ w: 32, // All icons will be 32px wide
+ h: 32, // All icons will be 32px high
+ fallback_path: 'icons/', // All fallback files can be found here
+ fallback: {
+ '#open_icon': 'open.png', // The "open.png" will be appended to the
+ // HTML element with ID "open_icon"
+ '#close_icon': 'close.png',
+ '#save_icon': 'save.png'
+ },
+ placement: {'.open_icon','open'}, // The "open" icon will be added
+ // to all elements with class "open_icon"
+ resize: function() {
+ '#save_icon .svg_icon': 64 // The "save" icon will be resized to 64 x 64px
+ },
+
+ callback: function(icons) { // Sets background color for "close" icon
+ icons['close'].css('background','red');
+ },
+
+ svgz: true // Indicates that an SVGZ file is being used
+
+ })
+});
+
+*/
+
+
+(function($) {
+ var svg_icons = {};
+
+ $.svgIcons = function(file, opts) {
+ var svgns = "http://www.w3.org/2000/svg",
+ xlinkns = "http://www.w3.org/1999/xlink",
+ icon_w = opts.w?opts.w : 24,
+ icon_h = opts.h?opts.h : 24,
+ elems, svgdoc, testImg,
+ icons_made = false, data_loaded = false, load_attempts = 0,
+ ua = navigator.userAgent, isOpera = !!window.opera, isSafari = (ua.indexOf('Safari/') > -1 && ua.indexOf('Chrome/')==-1),
+ data_pre = 'data:image/svg+xml;charset=utf-8;base64,';
+
+ if(opts.svgz) {
+ var data_el = $('<object data="' + file + '" type=image/svg+xml>').appendTo('body').hide();
+ try {
+ svgdoc = data_el[0].contentDocument;
+ // TODO: IE still loads this, shouldn't even bother.
+ data_el.load(getIcons);
+ getIcons(0, true); // Opera will not run "load" event if file is already cached
+ } catch(err1) {
+ useFallback();
+ }
+ } else {
+ $.ajax({
+ url: file,
+ dataType: 'xml',
+ success: function(data) {
+ svgdoc = data;
+ $(function() {
+ getIcons('ajax');
+ });
+ },
+ error: function(err) {
+ // TODO: Fix Opera widget icon bug
+ if(window.opera) {
+ $(function() {
+ useFallback();
+ });
+ } else {
+ if(err.responseXML) {
+ svgdoc = err.responseXML;
+ $(function() {
+ getIcons('ajax');
+ });
+ }
+ }
+ }
+ });
+ }
+
+ function getIcons(evt, no_wait) {
+ if(evt !== 'ajax') {
+ if(data_loaded) return;
+ // Webkit sometimes says svgdoc is undefined, other times
+ // it fails to load all nodes. Thus we must make sure the "eof"
+ // element is loaded.
+ svgdoc = data_el[0].contentDocument; // Needed again for Webkit
+ var isReady = (svgdoc && svgdoc.getElementById('svg_eof'));
+ if(!isReady && !(no_wait && isReady)) {
+ load_attempts++;
+ if(load_attempts < 50) {
+ setTimeout(getIcons, 20);
+ } else {
+ useFallback();
+ data_loaded = true;
+ }
+ return;
+ }
+ data_loaded = true;
+ }
+ // Clean source SVGs (mostly for Inkscape files)
+ // TODO: Find a way to do this without crashing Safari (when converting to IMG)
+ $(svgdoc).find('metadata').remove().end()
+ .find('*').each(function(i, el) {
+ if(el.nodeName.indexOf(':') != -1) {
+ $(el).remove();
+ }
+ var attrs = $.extend(false, el.attributes, {});
+ for(i in attrs) {
+ var attr = attrs[i];
+ var fullattr = attr.prefix?attr.prefix + ':' + attr.localName:'';
+ if(attr.prefix) {
+ el.removeAttribute(attr.localName); // for Opera
+ el.removeAttribute(fullattr); // for Webkit
+ }
+ if(fullattr == 'xlink:href') {
+ el.setAttribute('xlink:href', attr.nodeValue);
+ }
+ }
+ });
+ elems = $(svgdoc.firstChild).children(); //.getElementsByTagName('foreignContent');
+ var testSrc = data_pre + 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D';
+
+ testImg = $(new Image()).attr({
+ src: testSrc,
+ width: 0,
+ height: 0
+ }).appendTo('body')
+ .load(function () {
+ // Safari 4 crashes, Opera and Chrome don't
+ makeIcons(!isSafari);
+ }).error(function () {
+ makeIcons();
+ });
+ }
+
+ function makeIcons(toImage, fallback) {
+ if(icons_made) return;
+ if(opts.no_img) toImage = false;
+ var holder;
+
+ var setIcon = function(target, icon, id, setID) {
+ if(isOpera) icon.css('visibility','hidden');
+ if(opts.replace) {
+ if(setID) icon.attr('id',id);
+ var cl = target.attr('class');
+ if(cl) icon.attr('class','svg_icon '+cl);
+ target.replaceWith(icon);
+ } else {
+
+ target.append(icon);
+ }
+ if(isOpera) {
+ setTimeout(function() {
+ icon.attr('style','visibility:visible;');
+ },1);
+ }
+ }
+
+ var addIcon = function(icon, id) {
+ if(opts.id_match === undefined || opts.id_match !== false) {
+ setIcon(holder, icon, id, true);
+ }
+ svg_icons[id] = icon;
+ }
+
+ if(toImage) {
+ var temp_holder = $(document.createElement('div'));
+ temp_holder.hide().appendTo('body');
+ }
+ if(fallback) {
+ var path = opts.fallback_path?opts.fallback_path:'';
+ $.each(fallback, function(id, imgsrc) {
+ holder = $('#' + id);
+ var icon = $(new Image())
+ .attr({
+ 'class':'svg_icon',
+ src: path + imgsrc,
+ 'width': icon_w,
+ 'height': icon_h,
+ 'alt': 'icon'
+ });
+
+ addIcon(icon, id);
+ });
+ } else {
+ $.each(elems, function(i, elem) {
+ var id = elem.getAttribute('id');
+ if(id == 'svg_eof') return;
+ holder = $('#' + id);
+
+ var svg = elem.getElementsByTagNameNS(svgns, 'svg')[0];
+ var svgroot = svgdoc.createElementNS(svgns, "svg");
+ svgroot.setAttributeNS(svgns, 'viewBox', [0,0,icon_w,icon_h].join(' '));
+
+ // Make flexible by converting width/height to viewBox
+ var w = svg.getAttribute('width');
+ var h = svg.getAttribute('height');
+ svg.removeAttribute('width');
+ svg.removeAttribute('height');
+
+ var vb = svg.getAttribute('viewBox');
+ if(!vb) {
+ svg.setAttribute('viewBox', [0,0,w,h].join(' '));
+ }
+
+ $(svgroot).attr({
+ "xmlns": svgns,
+ "width": icon_w,
+ "height": icon_h,
+ "xmlns:xlink": xlinkns,
+ "class": 'svg_icon'
+ });
+
+ // Without cloning, Firefox will make another GET request.
+ // With cloning, causes issue in Opera/Win/Non-EN
+ if(!isOpera) svg = svg.cloneNode(true);
+
+ svgroot.appendChild(svg);
+
+ if(toImage) {
+ // Without cloning, Safari will crash
+ // With cloning, causes issue in Opera/Win/Non-EN
+ var svgcontent = isOpera?svgroot:svgroot.cloneNode(true);
+ temp_holder.empty().append(svgroot);
+ var str = data_pre + encode64(temp_holder.html());
+ var icon = $(new Image())
+ .attr({'class':'svg_icon', src:str});
+ } else {
+ var icon = fixIDs($(svgroot), i);
+ }
+ addIcon(icon, id);
+ });
+ }
+
+ if(opts.placement) {
+ $.each(opts.placement, function(sel, id) {
+ if(!svg_icons[id]) return;
+ $(sel).each(function(i) {
+ var copy = svg_icons[id].clone();
+ if(i > 0 && !toImage) copy = fixIDs(copy, i, true);
+ setIcon($(this), copy, id);
+ })
+ });
+ }
+ if(!fallback) {
+ if(toImage) temp_holder.remove();
+ if(data_el) data_el.remove();
+ testImg.remove();
+ }
+
+ if(opts.resize) $.resizeSvgIcons(opts.resize);
+
+ icons_made = true;
+
+ if(opts.callback) opts.callback(svg_icons);
+
+ }
+
+ function fixIDs(svg_el, svg_num, force) {
+ var defs = svg_el.find('defs');
+ if(!defs.length) return svg_el;
+
+ defs.find('[id]').each(function(i) {
+ var id = this.id;
+ var no_dupes = ($(svgdoc).find('#' + id).length <= 1);
+ if(isOpera) no_dupes = false; // Opera didn't clone svg_el, so not reliable
+ // if(!force && no_dupes) return;
+ var new_id = 'x' + id + svg_num + i;
+ $(this).attr('id', new_id);
+
+ svg_el.find('[fill="url(#' + id + ')"]').each(function() {
+ $(this).attr('fill', 'url(#' + new_id + ')');
+ }).end().find('[stroke="url(#' + id + ')"]').each(function() {
+ $(this).attr('stroke', 'url(#' + new_id + ')');
+ }).end().find('use').each(function() {
+ if(this.getAttribute('xlink:href') == '#' + id) {
+ this.setAttributeNS(xlinkns,'href','#' + new_id);
+ }
+ }).end().find('[filter="url(#' + id + ')"]').each(function() {
+ $(this).attr('filter', 'url(#' + new_id + ')');
+ });
+ });
+ return svg_el;
+ }
+
+ function useFallback() {
+ if(file.indexOf('.svgz') != -1) {
+ var reg_file = file.replace('.svgz','.svg');
+ if(window.console) {
+ console.log('.svgz failed, trying with .svg');
+ }
+ $.svgIcons(reg_file, opts);
+ } else if(opts.fallback) {
+ makeIcons(false, opts.fallback);
+ }
+ }
+
+ function encode64(input) {
+ // base64 strings are 4/3 larger than the original string
+ if(window.btoa) return window.btoa(input);
+ var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+ var output = new Array( Math.floor( (input.length + 2) / 3 ) * 4 );
+ var chr1, chr2, chr3;
+ var enc1, enc2, enc3, enc4;
+ var i = 0, p = 0;
+
+ do {
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output[p++] = _keyStr.charAt(enc1);
+ output[p++] = _keyStr.charAt(enc2);
+ output[p++] = _keyStr.charAt(enc3);
+ output[p++] = _keyStr.charAt(enc4);
+ } while (i < input.length);
+
+ return output.join('');
+ }
+ }
+
+ $.getSvgIcon = function(id) { return svg_icons[id]; }
+
+ $.resizeSvgIcons = function(obj) {
+ // FF2 and older don't detect .svg_icon, so we change it detect svg elems instead
+ var change_sel = !$('.svg_icon:first').length;
+ $.each(obj, function(sel, size) {
+ var arr = $.isArray(size);
+ var w = arr?size[0]:size,
+ h = arr?size[1]:size;
+ if(change_sel) {
+ sel = sel.replace(/\.svg_icon/g,'svg');
+ }
+ $(sel).each(function() {
+ this.setAttribute('width', w);
+ this.setAttribute('height', h);
+ if(window.opera && window.widget) {
+ this.parentNode.style.width = w + 'px';
+ this.parentNode.style.height = h + 'px';
+ }
+ });
+ });
+ }
+
+})(jQuery);
diff --git a/files_svgedit/js/svgicons/jquery.svgicons.min.js b/files_svgedit/js/svgicons/jquery.svgicons.min.js
new file mode 100644
index 000000000..4857b97af
--- /dev/null
+++ b/files_svgedit/js/svgicons/jquery.svgicons.min.js
@@ -0,0 +1 @@
+(function(b){var a={};b.svgIcons=function(t,m){var l="http://www.w3.org/2000/svg",q="http://www.w3.org/1999/xlink",d=m.w?m.w:24,k=m.h?m.h:24,w,f,j,u=false,g=false,h=0,o=navigator.userAgent,v=!!window.opera,s=(o.indexOf("Safari/")>-1&&o.indexOf("Chrome/")==-1),c="data:image/svg+xml;charset=utf-8;base64,";if(m.svgz){var n=b('<object data="'+t+'" type=image/svg+xml>').appendTo("body").hide();try{f=n[0].contentDocument;n.load(i);i(0,true)}catch(r){p()}}else{b.ajax({url:t,dataType:"xml",success:function(z){f=z;b(function(){i("ajax")})},error:function(z){if(window.opera){b(function(){p()})}else{if(z.responseXML){f=z.responseXML;b(function(){i("ajax")})}}}})}function i(z,C){if(z!=="ajax"){if(g){return}f=n[0].contentDocument;var B=(f&&f.getElementById("svg_eof"));if(!B&&!(C&&B)){h++;if(h<50){setTimeout(i,20)}else{p();g=true}return}g=true}b(f).find("metadata").remove().end().find("*").each(function(F,G){if(G.nodeName.indexOf(":")!=-1){b(G).remove()}var E=b.extend(false,G.attributes,{});for(F in E){var D=E[F];var H=D.prefix?D.prefix+":"+D.localName:"";if(D.prefix){G.removeAttribute(D.localName);G.removeAttribute(H)}if(H=="xlink:href"){G.setAttribute("xlink:href",D.nodeValue)}}});w=b(f.firstChild).children();var A=c+"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D";j=b(new Image()).attr({src:A,width:0,height:0}).appendTo("body").load(function(){y(!s)}).error(function(){y()})}function y(z,F){if(u){return}if(m.no_img){z=false}var A;var E=function(J,I,K,G){if(v){I.css("visibility","hidden")}if(m.replace){if(G){I.attr("id",K)}var H=J.attr("class");if(H){I.attr("class","svg_icon "+H)}J.replaceWith(I)}else{J.append(I)}if(v){setTimeout(function(){I.attr("style","visibility:visible;")},1)}};var D=function(G,H){if(m.id_match===undefined||m.id_match!==false){E(A,G,H,true)}a[H]=G};if(z){var C=b(document.createElement("div"));C.hide().appendTo("body")}if(F){var B=m.fallback_path?m.fallback_path:"";b.each(F,function(I,H){A=b("#"+I);var G=b(new Image()).attr({"class":"svg_icon",src:B+H,width:d,height:k,alt:"icon"});D(G,I)})}else{b.each(w,function(I,H){var G=H.getAttribute("id");if(G=="svg_eof"){return}A=b("#"+G);var M=H.getElementsByTagNameNS(l,"svg")[0];var L=f.createElementNS(l,"svg");L.setAttributeNS(l,"viewBox",[0,0,d,k].join(" "));var Q=M.getAttribute("width");var K=M.getAttribute("height");M.removeAttribute("width");M.removeAttribute("height");var O=M.getAttribute("viewBox");if(!O){M.setAttribute("viewBox",[0,0,Q,K].join(" "))}b(L).attr({xmlns:l,width:d,height:k,"xmlns:xlink":q,"class":"svg_icon"});if(!v){M=M.cloneNode(true)}L.appendChild(M);if(z){var J=v?L:L.cloneNode(true);C.empty().append(L);var N=c+x(C.html());var P=b(new Image()).attr({"class":"svg_icon",src:N})}else{var P=e(b(L),I)}D(P,G)})}if(m.placement){b.each(m.placement,function(G,H){if(!a[H]){return}b(G).each(function(I){var J=a[H].clone();if(I>0&&!z){J=e(J,I,true)}E(b(this),J,H)})})}if(!F){if(z){C.remove()}if(n){n.remove()}j.remove()}if(m.resize){b.resizeSvgIcons(m.resize)}u=true;if(m.callback){m.callback(a)}}function e(C,B,A){var z=C.find("defs");if(!z.length){return C}z.find("[id]").each(function(F){var G=this.id;var D=(b(f).find("#"+G).length<=1);if(v){D=false}var E="x"+G+B+F;b(this).attr("id",E);C.find('[fill="url(#'+G+')"]').each(function(){b(this).attr("fill","url(#"+E+")")}).end().find('[stroke="url(#'+G+')"]').each(function(){b(this).attr("stroke","url(#"+E+")")}).end().find("use").each(function(){if(this.getAttribute("xlink:href")=="#"+G){this.setAttributeNS(q,"href","#"+E)}}).end().find('[filter="url(#'+G+')"]').each(function(){b(this).attr("filter","url(#"+E+")")})});return C}function p(){if(t.indexOf(".svgz")!=-1){var z=t.replace(".svgz",".svg");if(window.console){console.log(".svgz failed, trying with .svg")}b.svgIcons(z,m)}else{if(m.fallback){y(false,m.fallback)}}}function x(D){if(window.btoa){return window.btoa(D)}var C="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var A=new Array(Math.floor((D.length+2)/3)*4);var K,I,G;var J,H,F,E;var B=0,z=0;do{K=D.charCodeAt(B++);I=D.charCodeAt(B++);G=D.charCodeAt(B++);J=K>>2;H=((K&3)<<4)|(I>>4);F=((I&15)<<2)|(G>>6);E=G&63;if(isNaN(I)){F=E=64}else{if(isNaN(G)){E=64}}A[z++]=C.charAt(J);A[z++]=C.charAt(H);A[z++]=C.charAt(F);A[z++]=C.charAt(E)}while(B<D.length);return A.join("")}};b.getSvgIcon=function(c){return a[c]};b.resizeSvgIcons=function(d){var c=!b(".svg_icon:first").length;b.each(d,function(j,g){var e=b.isArray(g);var f=e?g[0]:g,i=e?g[1]:g;if(c){j=j.replace(/\.svg_icon/g,"svg")}b(j).each(function(){this.setAttribute("width",f);this.setAttribute("height",i);if(window.opera&&window.widget){this.parentNode.style.width=f+"px";this.parentNode.style.height=i+"px"}})})}})(jQuery); \ No newline at end of file
diff --git a/files_svgedit/templates/editor.php b/files_svgedit/templates/editor.php
new file mode 100644
index 000000000..38236a7ed
--- /dev/null
+++ b/files_svgedit/templates/editor.php
@@ -0,0 +1,628 @@
+<?php
+// load required style sheets:
+OC_Util::addStyle('files_svgedit', 'jgraduate/css/jPicker-1.0.12');
+OC_Util::addStyle('files_svgedit', 'jgraduate/css/jgraduate');
+OC_Util::addStyle('files_svgedit', 'svg-editor');
+OC_Util::addStyle('files_svgedit', 'spinbtn/JQuerySpinBtn');
+// load required javascripts:
+OC_Util::addScript('files_svgedit', 'js-hotkeys/jquery.hotkeys.min');
+OC_Util::addScript('files_svgedit', 'jgraduate/jquery.jgraduate.min');
+OC_Util::addScript('files_svgedit', 'svgicons/jquery.svgicons.min');
+OC_Util::addScript('files_svgedit', 'jquerybbq/jquery.bbq.min');
+OC_Util::addScript('files_svgedit', 'spinbtn/JQuerySpinBtn.min');
+OC_Util::addScript('files_svgedit', 'svgcanvas.min');
+OC_Util::addScript('files_svgedit', 'svg-editor.min');
+OC_Util::addScript('files_svgedit', 'locale/locale.min');
+OC_Util::addScript('files_svgedit', 'jgraduate/jpicker-1.0.12.min');
+?>
+
+<script type="text/javascript">
+$(document).ready(function() {
+ // Load specified file's contents into editor:
+ svgEditor.loadFromString(<?php echo $_['fileContents']; ?>);
+});
+</script>
+
+<div id="svg_editor">
+
+<div id="workarea">
+<style id="styleoverrides" type="text/css" media="screen" scoped="scoped"></style>
+<div id="svgcanvas"></div>
+</div>
+
+<div id="sidepanels">
+ <div id="layerpanel">
+ <h3 id="layersLabel">Layers</h3>
+ <fieldset id="layerbuttons">
+ <div id="layer_new" class="layer_button" title="New Layer"></div>
+ <div id="layer_delete" class="layer_button" title="Delete Layer"></div>
+ <div id="layer_rename" class="layer_button" title="Rename Layer"></div>
+ <div id="layer_up" class="layer_button" title="Move Layer Up"></div>
+ <div id="layer_down" class="layer_button" title="Move Layer Down"></div>
+ </fieldset>
+
+ <table id="layerlist">
+ <tr class="layer">
+ <td class="layervis"></td>
+ <td class="layername">Layer 1</td>
+ </tr>
+ </table>
+ <span id="selLayerLabel">Move elements to:</span>
+ <select id="selLayerNames" title="Move selected elements to a different layer" disabled="disabled">
+ <option selected="selected" value="layer1">Layer 1</option>
+ </select>
+ </div>
+ <div id="sidepanel_handle" title="Drag left/right to resize side panel [X]">L a y e r s</div>
+</div>
+
+<div id="main_button">
+ <div id="main_icon" class="buttonup" title="Main Menu">
+ <span></span>
+ <div id="logo"></div>
+ <div class="dropdown"></div>
+ </div>
+
+ <div id="main_menu">
+
+ <!-- File-like buttons: New, Save, Source -->
+ <ul>
+ <li id="tool_clear">
+ <div></div>
+ New Image [N]
+ </li>
+
+ <li id="tool_open" style="display:none;">
+ <div id="fileinputs">
+ <div></div>
+ </div>
+ Open Image [O]
+ </li>
+
+ <li id="tool_import" style="display:none;">
+ <div id="fileinputs_import">
+ <div></div>
+ </div>
+ Import SVG
+ </li>
+
+ <li id="tool_save">
+ <div></div>
+ Save Image [S]
+ </li>
+
+ <li id="tool_export">
+ <div></div>
+ Export as PNG
+ </li>
+
+ <li id="tool_docprops">
+ <div></div>
+ Document Properties [P]
+ </li>
+ </ul>
+
+ <p>
+ <a href="http://svg-edit.googlecode.com/" target="_blank">
+ SVG-edit Home Page
+ </a>
+ </p>
+
+ </div>
+</div>
+
+
+
+<div id="tools_top" class="tools_panel">
+
+ <div id="editor_panel">
+ <div class="push_button" id="tool_source" title="Edit Source [U]"></div>
+ <div class="tool_button" id="tool_wireframe" title="Wireframe Mode [F]"></div>
+ </div>
+
+ <!-- History buttons -->
+ <div id="history_panel">
+ <div class="tool_sep"></div>
+ <div class="push_button tool_button_disabled" id="tool_undo" title="Undo [Z]"></div>
+ <div class="push_button tool_button_disabled" id="tool_redo" title="Redo [Y]"></div>
+ </div>
+
+ <!-- Buttons when a single element is selected -->
+ <div id="selected_panel">
+ <div class="toolset">
+ <div class="tool_sep"></div>
+ <div class="push_button" id="tool_clone" title="Clone Element [C]"></div>
+ <div class="push_button" id="tool_delete" title="Delete Element [Delete/Backspace]"></div>
+ <div class="tool_sep"></div>
+ <div class="push_button" id="tool_move_top" title="Move to Top [Shift+Up]"></div>
+ <div class="push_button" id="tool_move_bottom" title="Move to Bottom [Shift+Down]"></div>
+ <div class="push_button" id="tool_topath" title="Convert to Path"></div>
+ <div class="push_button" id="tool_reorient" title="Reorient path"></div>
+ <div class="tool_sep"></div>
+ <label id="idLabel" title="Identify the element">
+ <span>id:</span>
+ <input id="elem_id" class="attr_changer" data-attr="id" size="10" type="text"/>
+ </label>
+ </div>
+
+ <label id="tool_angle" title="Change rotation angle">
+ <span id="angleLabel" class="icon_label"></span>
+ <input id="angle" size="2" value="0" type="text"/>
+ </label>
+
+ <div class="toolset" id="tool_blur" title="Change gaussian blur value">
+ <label>
+ <span id="blurLabel" class="icon_label"></span>
+ <input id="blur" size="2" value="0" type="text"/>
+ </label>
+ <div id="blur_dropdown" class="dropdown">
+ <button></button>
+ <ul>
+ <li class="special"><div id="blur_slider"></div></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="dropdown toolset" id="tool_position" title="Align Element to Page">
+ <div id="cur_position" class="icon_label"></div>
+ <button></button>
+ </div>
+
+ <div id="xy_panel" class="toolset">
+ <label>
+ x: <input id="selected_x" class="attr_changer" title="Change X coordinate" size="3" data-attr="x"/>
+ </label>
+ <label>
+ y: <input id="selected_y" class="attr_changer" title="Change Y coordinate" size="3" data-attr="y"/>
+ </label>
+ </div>
+ </div>
+
+ <!-- Buttons when multiple elements are selected -->
+ <div id="multiselected_panel">
+ <div class="tool_sep"></div>
+ <div class="push_button" id="tool_clone_multi" title="Clone Elements [C]"></div>
+ <div class="push_button" id="tool_delete_multi" title="Delete Selected Elements [Delete/Backspace]"></div>
+ <div class="tool_sep"></div>
+ <div class="push_button" id="tool_group" title="Group Elements [G]"></div>
+ <div class="push_button" id="tool_alignleft" title="Align Left"></div>
+ <div class="push_button" id="tool_aligncenter" title="Align Center"></div>
+ <div class="push_button" id="tool_alignright" title="Align Right"></div>
+ <div class="push_button" id="tool_aligntop" title="Align Top"></div>
+ <div class="push_button" id="tool_alignmiddle" title="Align Middle"></div>
+ <div class="push_button" id="tool_alignbottom" title="Align Bottom"></div>
+ <label id="tool_align_relative">
+ <span id="relativeToLabel">relative to:</span>
+ <select id="align_relative_to" title="Align relative to ...">
+ <option id="selected_objects" value="selected">selected objects</option>
+ <option id="largest_object" value="largest">largest object</option>
+ <option id="smallest_object" value="smallest">smallest object</option>
+ <option id="page" value="page">page</option>
+ </select>
+ </label>
+ <div class="tool_sep"></div>
+
+ </div>
+
+ <div id="g_panel">
+ <div class="tool_sep"></div>
+ <div class="push_button" id="tool_ungroup" title="Ungroup Elements [G]"></div>
+ </div>
+
+ <div id="rect_panel">
+ <div class="toolset">
+ <label id="rect_width_tool" title="Change rectangle width">
+ <span id="rwidthLabel" class="icon_label"></span>
+ <input id="rect_width" class="attr_changer" size="3" data-attr="width"/>
+ </label>
+ <label id="rect_height_tool" title="Change rectangle height">
+ <span id="rheightLabel" class="icon_label"></span>
+ <input id="rect_height" class="attr_changer" size="3" data-attr="height"/>
+ </label>
+ </div>
+ <label id="cornerRadiusLabel" title="Change Rectangle Corner Radius">
+ <span class="icon_label"></span>
+ <input id="rect_rx" size="3" value="0" type="text" data-attr="Corner Radius"/>
+ </label>
+ </div>
+
+ <div id="image_panel">
+ <div class="toolset">
+ <label><span id="iwidthLabel" class="icon_label"></span>
+ <input id="image_width" class="attr_changer" title="Change image width" size="3" data-attr="width"/>
+ </label>
+ <label><span id="iheightLabel" class="icon_label"></span>
+ <input id="image_height" class="attr_changer" title="Change image height" size="3" data-attr="height"/>
+ </label>
+ </div>
+ <div class="toolset">
+ <label id="tool_image_url">url:
+ <input id="image_url" type="text" title="Change URL" size="35"/>
+ </label>
+ <label id="tool_change_image">
+ <button id="change_image_url" style="display:none;">Change Image</button>
+ <span id="url_notice" title="NOTE: This image cannot be embedded. It will depend on this path to be displayed"></span>
+ </label>
+ </div>
+ </div>
+
+ <div id="circle_panel">
+ <div class="toolset">
+ <label id="tool_circle_cx">cx:
+ <input id="circle_cx" class="attr_changer" title="Change circle's cx coordinate" size="3" data-attr="cx"/>
+ </label>
+ <label id="tool_circle_cy">cy:
+ <input id="circle_cy" class="attr_changer" title="Change circle's cy coordinate" size="3" data-attr="cy"/>
+ </label>
+ </div>
+ <div class="toolset">
+ <label id="tool_circle_r">r:
+ <input id="circle_r" class="attr_changer" title="Change circle's radius" size="3" data-attr="r"/>
+ </label>
+ </div>
+ </div>
+
+ <div id="ellipse_panel">
+ <div class="toolset">
+ <label id="tool_ellipse_cx">cx:
+ <input id="ellipse_cx" class="attr_changer" title="Change ellipse's cx coordinate" size="3" data-attr="cx"/>
+ </label>
+ <label id="tool_ellipse_cy">cy:
+ <input id="ellipse_cy" class="attr_changer" title="Change ellipse's cy coordinate" size="3" data-attr="cy"/>
+ </label>
+ </div>
+ <div class="toolset">
+ <label id="tool_ellipse_rx">rx:
+ <input id="ellipse_rx" class="attr_changer" title="Change ellipse's x radius" size="3" data-attr="rx"/>
+ </label>
+ <label id="tool_ellipse_ry">ry:
+ <input id="ellipse_ry" class="attr_changer" title="Change ellipse's y radius" size="3" data-attr="ry"/>
+ </label>
+ </div>
+ </div>
+
+ <div id="line_panel">
+ <div class="toolset">
+ <label id="tool_line_x1">x1:
+ <input id="line_x1" class="attr_changer" title="Change line's starting x coordinate" size="3" data-attr="x1"/>
+ </label>
+ <label id="tool_line_y1">y1:
+ <input id="line_y1" class="attr_changer" title="Change line's starting y coordinate" size="3" data-attr="y1"/>
+ </label>
+ </div>
+ <div class="toolset">
+ <label id="tool_line_x2">x2:
+ <input id="line_x2" class="attr_changer" title="Change line's ending x coordinate" size="3" data-attr="x2"/>
+ </label>
+ <label id="tool_line_y2">y2:
+ <input id="line_y2" class="attr_changer" title="Change line's ending y coordinate" size="3" data-attr="y2"/>
+ </label>
+ </div>
+ </div>
+
+ <div id="text_panel">
+ <div class="toolset">
+ <div class="tool_button" id="tool_bold" title="Bold Text [B]"><span></span>B</div>
+ <div class="tool_button" id="tool_italic" title="Italic Text [I]"><span></span>i</div>
+ </div>
+
+ <div class="toolset" id="tool_font_family">
+ <label>
+ <!-- Font family -->
+ <input id="font_family" type="text" title="Change Font Family" size="12"/>
+ </label>
+ <div id="font_family_dropdown" class="dropdown">
+ <button></button>
+ <ul>
+ <li style="font-family:serif">Serif</li>
+ <li style="font-family:sans-serif">Sans-serif</li>
+ <li style="font-family:cursive">Cursive</li>
+ <li style="font-family:fantasy">Fantasy</li>
+ <li style="font-family:monospace">Monospace</li>
+ </ul>
+ </div>
+ </div>
+
+ <label id="tool_font_size" title="Change Font Size">
+ <span id="font_sizeLabel" class="icon_label"></span>
+ <input id="font_size" size="3" value="0" type="text"/>
+ </label>
+
+ <!-- Not visible, but still used -->
+ <input id="text" type="text" size="35"/>
+ </div>
+
+ <div id="path_node_panel">
+ <div class="tool_sep"></div>
+ <div class="tool_button" id="tool_node_link" title="Link Control Points"></div>
+ <div class="tool_sep"></div>
+ <label id="tool_node_x">x:
+ <input id="path_node_x" class="attr_changer" title="Change node's x coordinate" size="3" data-attr="x"/>
+ </label>
+ <label id="tool_node_y">y:
+ <input id="path_node_y" class="attr_changer" title="Change node's y coordinate" size="3" data-attr="y"/>
+ </label>
+
+ <select id="seg_type" title="Change Segment type">
+ <option id="straight_segments" selected="selected" value="4">Straight</option>
+ <option id="curve_segments" value="6">Curve</option>
+ </select>
+ <div class="tool_button" id="tool_node_clone" title="Clone Node"></div>
+ <div class="tool_button" id="tool_node_delete" title="Delete Node"></div>
+ <div class="tool_button" id="tool_openclose_path" title="Open/close sub-path"></div>
+ <div class="tool_button" id="tool_add_subpath" title="Add sub-path"></div>
+ </div>
+
+</div> <!-- tools_top -->
+
+<div id="tools_left" class="tools_panel">
+ <div class="tool_button" id="tool_select" title="Select Tool [1]"></div>
+ <div class="tool_button" id="tool_fhpath" title="Pencil Tool [2]"></div>
+ <div class="tool_button" id="tool_line" title="Line Tool [3]"></div>
+ <div class="tool_button flyout_current" id="tools_rect_show" title="Square/Rect Tool [4/Shift+4]">
+ <div class="flyout_arrow_horiz"></div>
+ </div>
+ <div class="tool_button flyout_current" id="tools_ellipse_show" title="Ellipse/Circle Tool [5/Shift+5]">
+ <div class="flyout_arrow_horiz"></div>
+ </div>
+ <div class="tool_button" id="tool_path" title="Path Tool [7]"></div>
+ <div class="tool_button" id="tool_text" title="Text Tool [6]"></div>
+ <div class="tool_button" id="tool_image" title="Image Tool [8]"></div>
+ <div class="tool_button" id="tool_zoom" title="Zoom Tool [Ctrl+Up/Down]"></div>
+
+ <div style="display: none">
+ <div id="tool_rect" title="Rectangle"></div>
+ <div id="tool_square" title="Square"></div>
+ <div id="tool_fhrect" title="Free-Hand Rectangle"></div>
+ <div id="tool_ellipse" title="Ellipse"></div>
+ <div id="tool_circle" title="Circle"></div>
+ <div id="tool_fhellipse" title="Free-Hand Ellipse"></div>
+ </div>
+</div> <!-- tools_left -->
+
+<div id="tools_bottom" class="tools_panel">
+
+ <!-- Zoom buttons -->
+ <div id="zoom_panel" class="toolset" title="Change zoom level">
+ <label>
+ <span id="zoomLabel" class="zoom_tool icon_label"></span>
+ <input id="zoom" size="3" value="100" type="text" />
+ </label>
+ <div id="zoom_dropdown" class="dropdown">
+ <button></button>
+ <ul>
+ <li>1000%</li>
+ <li>400%</li>
+ <li>200%</li>
+ <li>100%</li>
+ <li>50%</li>
+ <li>25%</li>
+ <li id="fit_to_canvas" data-val="canvas">Fit to canvas</li>
+ <li id="fit_to_sel" data-val="selection">Fit to selection</li>
+ <li id="fit_to_layer_content" data-val="layer">Fit to layer content</li>
+ <li id="fit_to_all" data-val="content">Fit to all content</li>
+ <li>100%</li>
+ </ul>
+ </div>
+ <div class="tool_sep"></div>
+ </div>
+
+ <div id="tools_bottom_2">
+ <div id="color_tools">
+ <div class="color_tool" id="tool_fill">
+ <label class="icon_label" for="fill_color" title="Change fill color"></label>
+ <div class="color_block">
+ <div id="fill_bg"></div>
+ <div id="fill_color" class="color_block"></div>
+ </div>
+ </div>
+
+ <div class="color_tool" id="tool_stroke">
+ <div class="color_block">
+ <label class="icon_label" title="Change stroke color"></label>
+ </div>
+ <div class="color_block">
+ <div id="stroke_bg"></div>
+ <div id="stroke_color" class="color_block" title="Change stroke color"></div>
+ </div>
+
+ <label>
+ <input id="stroke_width" title="Change stroke width by 1, shift-click to change by 0.1" size="2" value="5" type="text" data-attr="Stroke Width"/>
+ </label>
+
+ <label class="stroke_tool">
+ <select id="stroke_style" title="Change stroke dash style">
+ <option selected="selected" value="none">&mdash;</option>
+ <option value="2,2">...</option>
+ <option value="5,5">- -</option>
+ <option value="5,2,2,2">- .</option>
+ <option value="5,2,2,2,2,2">- ..</option>
+ </select>
+ </label>
+
+ <div class="stroke_tool dropdown" id="stroke_linejoin">
+ <div>
+ <div id="cur_linejoin" title="Linejoin: Miter"></div>
+ <button></button>
+ </div>
+ </div>
+
+ <div class="stroke_tool dropdown" id="stroke_linecap">
+ <div>
+ <div id="cur_linecap" title="Linecap: Butt"></div>
+ <button></button>
+ </div>
+ </div>
+
+ <div id="toggle_stroke_tools" title="Show/hide more stroke tools">
+ &gt;&gt;
+ </div>
+
+ </div>
+ </div>
+
+ <div class="toolset" id="tool_opacity" title="Change selected item opacity">
+ <label>
+ <span id="group_opacityLabel" class="icon_label"></span>
+ <input id="group_opacity" size="3" value="100" type="text"/>
+ </label>
+ <div id="opacity_dropdown" class="dropdown">
+ <button></button>
+ <ul>
+ <li>0%</li>
+ <li>25%</li>
+ <li>50%</li>
+ <li>75%</li>
+ <li>100%</li>
+ <li class="special"><div id="opac_slider"></div></li>
+ </ul>
+ </div>
+ </div>
+
+ </div>
+
+ <div id="tools_bottom_3">
+ <div id="palette_holder"><div id="palette" title="Click to change fill color, shift-click to change stroke color"></div></div>
+ </div>
+ <div id="copyright"><span id="copyrightLabel">Powered by</span> <a href="http://svg-edit.googlecode.com/" target="_blank">SVG-edit v2.5.1</a></div>
+</div>
+
+<div id="option_lists">
+ <ul id="linejoin_opts">
+ <li class="tool_button current" id="linejoin_miter" title="Linejoin: Miter"></li>
+ <li class="tool_button" id="linejoin_round" title="Linejoin: Round"></li>
+ <li class="tool_button" id="linejoin_bevel" title="Linejoin: Bevel"></li>
+ </ul>
+
+ <ul id="linecap_opts">
+ <li class="tool_button current" id="linecap_butt" title="Linecap: Butt"></li>
+ <li class="tool_button" id="linecap_square" title="Linecap: Square"></li>
+ <li class="tool_button" id="linecap_round" title="Linecap: Round"></li>
+ </ul>
+
+ <ul id="position_opts" class="optcols3">
+ <li class="push_button" id="tool_posleft" title="Align Left"></li>
+ <li class="push_button" id="tool_poscenter" title="Align Center"></li>
+ <li class="push_button" id="tool_posright" title="Align Right"></li>
+ <li class="push_button" id="tool_postop" title="Align Top"></li>
+ <li class="push_button" id="tool_posmiddle" title="Align Middle"></li>
+ <li class="push_button" id="tool_posbottom" title="Align Bottom"></li>
+ </ul>
+</div>
+
+
+<!-- hidden divs -->
+<div id="color_picker"></div>
+
+</div> <!-- svg_editor -->
+
+<div id="svg_source_editor">
+ <div id="svg_source_overlay"></div>
+ <div id="svg_source_container">
+ <div id="tool_source_back" class="toolbar_button">
+ <button id="tool_source_save">Apply Changes</button>
+ <button id="tool_source_cancel">Cancel</button>
+ </div>
+ <form>
+ <textarea id="svg_source_textarea" spellcheck="false"></textarea>
+ </form>
+ </div>
+</div>
+
+<div id="svg_docprops">
+ <div id="svg_docprops_overlay"></div>
+ <div id="svg_docprops_container">
+ <div id="tool_docprops_back" class="toolbar_button">
+ <button id="tool_docprops_save">OK</button>
+ <button id="tool_docprops_cancel">Cancel</button>
+ </div>
+
+
+ <fieldset id="svg_docprops_docprops">
+ <legend id="svginfo_image_props">Image Properties</legend>
+ <label>
+ <span id="svginfo_title">Title:</span>
+ <input type="text" id="canvas_title" size="24"/>
+ </label>
+
+ <fieldset id="change_resolution">
+ <legend id="svginfo_dim">Canvas Dimensions</legend>
+
+ <label><span id="svginfo_width">width:</span> <input type="text" id="canvas_width" size="6"/></label>
+
+ <label><span id="svginfo_height">height:</span> <input type="text" id="canvas_height" size="6"/></label>
+
+ <label>
+ <select id="resolution">
+ <option id="selectedPredefined" selected="selected">Select predefined:</option>
+ <option>640x480</option>
+ <option>800x600</option>
+ <option>1024x768</option>
+ <option>1280x960</option>
+ <option>1600x1200</option>
+ <option id="fitToContent" value="content">Fit to Content</option>
+ </select>
+ </label>
+ </fieldset>
+
+ <fieldset id="image_save_opts">
+ <legend id="includedImages">Included Images</legend>
+ <label><input type="radio" name="image_opt" value="embed" checked="checked"/> <span id="image_opt_embed">Embed data (local files)</span> </label>
+ <label><input type="radio" name="image_opt" value="ref"/> <span id="image_opt_ref">Use file reference</span> </label>
+ </fieldset>
+
+
+ </fieldset>
+
+ <fieldset id="svg_docprops_prefs">
+ <legend id="svginfo_editor_prefs">Editor Preferences</legend>
+
+ <label><span id="svginfo_lang">Language:</span>
+ <!-- Source: http://en.wikipedia.org/wiki/Language_names -->
+ <select id="lang_select">
+ <option id="lang_ar" value="ar">العربية</option>
+ <option id="lang_cs" value="cs">Čeština</option>
+ <option id="lang_de" value="de">Deutsch</option>
+ <option id="lang_en" value="en" selected="selected">English</option>
+ <option id="lang_es" value="es">Español</option>
+ <option id="lang_fa" value="fa">فارسی</option>
+ <option id="lang_fr" value="fr">Français</option>
+ <option id="lang_fy" value="fy">Frysk</option>
+ <option id="lang_hi" value="hi">&#2361;&#2367;&#2344;&#2381;&#2342;&#2368;, &#2361;&#2367;&#2306;&#2342;&#2368;</option>
+ <option id="lang_ja" value="ja">日本語</option>
+ <option id="lang_nl" value="nl">Nederlands</option>
+ <option id="lang_pt-BR" value="pt-BR">Português (BR)</option>
+ <option id="lang_ro" value="ro">Româneşte</option>
+ <option id="lang_ru" value="ru">Русский</option>
+ <option id="lang_sk" value="sk">Slovenčina</option>
+ <option id="lang_zh-TW" value="zh-TW">繁體中文</option>
+ </select>
+ </label>
+
+ <label><span id="svginfo_icons">Icon size:</span>
+ <select id="iconsize">
+ <option id="icon_small" value="s">Small</option>
+ <option id="icon_medium" value="m" selected="selected">Medium</option>
+ <option id="icon_large" value="l">Large</option>
+ <option id="icon_xlarge" value="xl">Extra Large</option>
+ </select>
+ </label>
+
+ <fieldset id="change_background">
+ <legend id="svginfo_change_background">Editor Background</legend>
+ <div id="bg_blocks"></div>
+ <label><span id="svginfo_bg_url">URL:</span> <input type="text" id="canvas_bg_url" size="21"/></label>
+ <p id="svginfo_bg_note">Note: Background will not be saved with image.</p>
+ </fieldset>
+
+ </fieldset>
+
+ </div>
+</div>
+
+<div id="dialog_box">
+ <div id="dialog_box_overlay"></div>
+ <div id="dialog_container">
+ <div id="dialog_content"></div>
+ <div id="dialog_buttons"></div>
+ </div>
+</div>