Browse Source

5.7.0.9 release

David Benson 9 years ago
parent
commit
1a19dc914f
80 changed files with 2130 additions and 1654 deletions
  1. 7 1
      ChangeLog
  2. 1 1
      VERSION
  3. 1 1
      war/WEB-INF/appengine-web.xml
  4. 1 1
      war/cache.manifest
  5. BIN
      war/images/fullscreen.png
  6. BIN
      war/images/sidebar-veeam.png
  7. 1 1
      war/index.html
  8. 218 210
      war/js/app.min.js
  9. 335 326
      war/js/atlas-viewer.min.js
  10. 519 513
      war/js/atlas.min.js
  11. 63 13
      war/js/diagramly/App.js
  12. 36 8
      war/js/diagramly/Dialogs.js
  13. 1 1
      war/js/diagramly/DriveRealtime.js
  14. 26 11
      war/js/diagramly/EditorUi.js
  15. 128 92
      war/js/diagramly/GraphViewer.js
  16. 10 5
      war/js/diagramly/Menus.js
  17. 5 4
      war/js/diagramly/Pages.js
  18. 62 10
      war/js/diagramly/RealtimeMapping.js
  19. 1 1
      war/js/diagramly/sidebar/Sidebar.js
  20. 1 1
      war/js/embed-static.min.js
  21. 1 1
      war/js/mxgraph/Actions.js
  22. 30 2
      war/js/mxgraph/Editor.js
  23. 83 3
      war/js/mxgraph/EditorUi.js
  24. 10 23
      war/js/mxgraph/Sidebar.js
  25. 1 1
      war/js/reader.min.js
  26. 336 327
      war/js/viewer.min.js
  27. 103 0
      war/plugins/tags.js
  28. 3 2
      war/resources/dia.txt
  29. 3 2
      war/resources/dia_am.txt
  30. 3 2
      war/resources/dia_ar.txt
  31. 3 2
      war/resources/dia_bg.txt
  32. 3 2
      war/resources/dia_bn.txt
  33. 3 2
      war/resources/dia_bs.txt
  34. 3 2
      war/resources/dia_ca.txt
  35. 3 2
      war/resources/dia_cs.txt
  36. 3 2
      war/resources/dia_da.txt
  37. 1 0
      war/resources/dia_de.txt
  38. 3 2
      war/resources/dia_el.txt
  39. 3 2
      war/resources/dia_es.txt
  40. 3 2
      war/resources/dia_et.txt
  41. 3 2
      war/resources/dia_fa.txt
  42. 1 0
      war/resources/dia_fi.txt
  43. 3 2
      war/resources/dia_fil.txt
  44. 2 1
      war/resources/dia_fr.txt
  45. 3 2
      war/resources/dia_gu.txt
  46. 3 2
      war/resources/dia_he.txt
  47. 3 2
      war/resources/dia_hi.txt
  48. 3 2
      war/resources/dia_hr.txt
  49. 3 2
      war/resources/dia_hu.txt
  50. 1 0
      war/resources/dia_i18n.txt
  51. 3 2
      war/resources/dia_id.txt
  52. 3 2
      war/resources/dia_it.txt
  53. 3 2
      war/resources/dia_ja.txt
  54. 3 2
      war/resources/dia_kn.txt
  55. 3 2
      war/resources/dia_ko.txt
  56. 3 2
      war/resources/dia_lt.txt
  57. 3 2
      war/resources/dia_lv.txt
  58. 3 2
      war/resources/dia_ml.txt
  59. 3 2
      war/resources/dia_mr.txt
  60. 3 2
      war/resources/dia_ms.txt
  61. 3 2
      war/resources/dia_nl.txt
  62. 3 2
      war/resources/dia_no.txt
  63. 3 2
      war/resources/dia_pl.txt
  64. 3 2
      war/resources/dia_pt-br.txt
  65. 3 2
      war/resources/dia_pt.txt
  66. 3 2
      war/resources/dia_ro.txt
  67. 1 0
      war/resources/dia_ru.txt
  68. 3 2
      war/resources/dia_sk.txt
  69. 3 2
      war/resources/dia_sl.txt
  70. 3 2
      war/resources/dia_sr.txt
  71. 3 2
      war/resources/dia_sv.txt
  72. 3 2
      war/resources/dia_sw.txt
  73. 3 2
      war/resources/dia_ta.txt
  74. 3 2
      war/resources/dia_te.txt
  75. 3 2
      war/resources/dia_th.txt
  76. 3 2
      war/resources/dia_tr.txt
  77. 3 2
      war/resources/dia_uk.txt
  78. 3 2
      war/resources/dia_vi.txt
  79. 3 2
      war/resources/dia_zh-tw.txt
  80. 3 2
      war/resources/dia_zh.txt

+ 7 - 1
ChangeLog

@@ -1,4 +1,10 @@
-03-SEP-2016: 5.7.0.8.2
+04-OCT-2016: 5.7.0.9
+
+- Adds experimental tags plugin
+- Fixes page scale in print preview
+- Adds new colorset
+
+03-OCT-2016: 5.7.0.8.2
 
 - Adds tolerance, uses fewer cells in scissors tool
 

+ 1 - 1
VERSION

@@ -1 +1 @@
-5.7.0.8.2
+5.7.0.9

+ 1 - 1
war/WEB-INF/appengine-web.xml

@@ -2,7 +2,7 @@
 <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
 	<application>drawdotio</application>
 	<!-- IMPORTANT! DO NOT CHANGE THIS VALUE IN SOURCE CONTROL! -->
-	<version>5-7-0-8-2</version>
+	<version>test</version>
 	
 	<!-- Configure java.util.logging -->
 	<system-properties>

+ 1 - 1
war/cache.manifest

@@ -1,7 +1,7 @@
 CACHE MANIFEST
 
 # THIS FILE WAS GENERATED. DO NOT MODIFY!
-# 10/03/2016 03:57 PM
+# 10/04/2016 03:37 PM
 
 /app.html
 /index.html?offline=1

BIN
war/images/fullscreen.png


BIN
war/images/sidebar-veeam.png


+ 1 - 1
war/index.html

@@ -400,7 +400,7 @@ App.main();
 document.getElementById("geFooterLink1").onclick = function()
 {
 	var img = new Image();
-	img.src = 'log?msg=geFooterLink1:' + '&v=' + encodeURIComponent(EditorUi.VERSION);
+	img.src = 'https://log.draw.io/log?msg=geFooterLink1: location=' + encodeURIComponent(window.location) + '&v=' + encodeURIComponent(EditorUi.VERSION);
 }
 
 /**

File diff suppressed because it is too large
+ 218 - 210
war/js/app.min.js


File diff suppressed because it is too large
+ 335 - 326
war/js/atlas-viewer.min.js


File diff suppressed because it is too large
+ 519 - 513
war/js/atlas.min.js


+ 63 - 13
war/js/diagramly/App.js

@@ -73,7 +73,17 @@ App = function(editor, container, lightbox)
 	{
 		for (var i = 0; i < App.DrawPlugins.length; i++)
 		{
-			App.DrawPlugins[i](this);
+			try
+			{
+				App.DrawPlugins[i](this);
+			}
+			catch (e)
+			{
+				if (window.console != null)
+				{
+					console.log('Plugin Error:', e, App.DrawPlugins[i]);
+				}
+			}
 		}
 		
 		window.Draw.loadPlugin = function(callback)
@@ -137,7 +147,8 @@ App.pluginRegistry = {'4xAKTrabTpTzahoLthkwPNUn': '/plugins/explore.js',
 	'ex': '/plugins/explore.js', 'p1': '/plugins/p1.js', 'ac': '/plugins/connect.js',
 	'acj': '/plugins/connectJira.js', 'voice': '/plugins/voice.js',
 	'tips': '/plugins/tooltips.js', 'svgdata': '/plugins/svgdata.js',
-	'doors': '/plugins/doors.js', 'electron': 'plugins/electron.js'};
+	'doors': '/plugins/doors.js', 'electron': 'plugins/electron.js',
+	'tags': '/plugins/tags.js'};
 
 /**
  * Function: authorize
@@ -380,7 +391,7 @@ App.main = function(callback)
 				var severity = (message.indexOf('NetworkError') >= 0 || message.indexOf('SecurityError') >= 0 ||
 					message.indexOf('NS_ERROR_FAILURE') >= 0 || message.indexOf('out of memory') >= 0) ?
 					'CONFIG' : 'SEVERE';
-	    		img.src = 'log?severity=' + severity + '&v=' + encodeURIComponent(EditorUi.VERSION) +
+	    		img.src = 'https://log.draw.io/log?severity=' + severity + '&v=' + encodeURIComponent(EditorUi.VERSION) +
 	    			'&msg=clientError:' + encodeURIComponent(message) + ':url:' + encodeURIComponent(window.location.href) +
 	    			':lnum:' + encodeURIComponent(linenumber) + 
 	    			((colno != null) ? ':colno:' + encodeURIComponent(colno) : '') +
@@ -610,7 +621,7 @@ App.prototype.formatHideImage = (!mxClient.IS_SVG) ? IMAGE_PATH + '/format-hide.
 /**
  *
  */
-App.prototype.fullscreenImage = (!mxClient.IS_SVG) ? IMAGE_PATH + '/fullscreen.png' : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMAQMAAABsu86kAAAABlBMVEUAAABEREQ3UJNbAAAAAXRSTlMAQObYZgAAABxJREFUCNdj+PkBhA4YgNB5AwZ+BiACMiAiEFkA9QQNgW8IGoYAAAAASUVORK5CYII=';
+App.prototype.fullscreenImage = (!mxClient.IS_SVG) ? IMAGE_PATH + '/fullscreen.png' : 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAAAAAClZ7nPAAAAAXRSTlMAQObYZgAAABpJREFUCNdjgAAbGxAy4AEh5gNwBBGByoIBAIueBd12TUjqAAAAAElFTkSuQmCC';
 
 /**
  * 
@@ -1593,6 +1604,7 @@ App.prototype.getPublicUrl = function(file, fn)
  */
 App.prototype.createFileData = function(node, graph, file, url, forceXml, forceSvg, forceHtml, embeddedCallback, ignoreSelection)
 {
+	graph = (graph != null) ? graph : this.editor.graph;
 	forceXml = (forceXml != null) ? forceXml : false;
 	ignoreSelection = (ignoreSelection != null) ? ignoreSelection : true;
 	
@@ -1621,12 +1633,12 @@ App.prototype.createFileData = function(node, graph, file, url, forceXml, forceS
 		if (fileNode.nodeName.toLowerCase() != 'mxfile')
 		{
 			// Removes control chars in input for correct roundtrip check
-			var text = this.editor.graph.zapGremlins(mxUtils.getXml(node));
-			var data = this.editor.graph.compress(text);
+			var text = graph.zapGremlins(mxUtils.getXml(node));
+			var data = graph.compress(text);
 			
 			// Fallback to plain XML for invalid compression
 			// TODO: Remove this fallback with active pages
-			if (this.editor.graph.decompress(data) != text)
+			if (graph.decompress(data) != text)
 			{
 				return text;
 			}
@@ -1656,7 +1668,7 @@ App.prototype.createFileData = function(node, graph, file, url, forceXml, forceS
 		// Writes the file as an embedded HTML file
 		if (!forceSvg && !forceXml && (forceHtml || (file != null && /(\.html)$/i.test(file.getTitle()))))
 		{
-			xml = this.getHtml2(fileNode, graph, file.getTitle(), editLink, redirect, ignoreSelection);
+			xml = this.getHtml2(fileNode, graph, (file != null) ? file.getTitle() : null, editLink, redirect, ignoreSelection);
 		}
 		// Maps the XML data to the content attribute in the SVG node 
 		else if (forceSvg || (!forceXml && file != null && /(\.svg)$/i.test(file.getTitle())))
@@ -1724,8 +1736,46 @@ App.prototype.getFileData = function(forceXml, forceSvg, forceHtml, embeddedCall
 		}
 	}
 	
-	return this.createFileData(node, this.editor.graph, this.getCurrentFile(), window.location.href,
+	var graph = this.editor.graph;
+	var file = this.getCurrentFile();
+	
+	// Exports SVG for first page while other page is visible by creating a graph
+	// LATER: Add caching for the graph or SVG while not on first page
+	if (this.pages != null && this.currentPage != this.pages[0] && (forceSvg ||
+		(!forceXml && file != null && /(\.svg)$/i.test(file.getTitle()))))
+	{
+		graph = this.createTemporaryGraph(graph.getStylesheet());
+		var graphGetGlobalVariable = graph.getGlobalVariable;
+		var page = this.pages[0];
+
+		graph.getGlobalVariable = function(name)
+		{
+			if (name == 'page')
+			{
+				return page.getName();
+			}
+			else if (name == 'pagenumber')
+			{
+				return 1;
+			}
+			
+			return graphGetGlobalVariable.apply(this, arguments);
+		};
+
+		document.body.appendChild(graph.container);
+		graph.model.setRoot(page.root);
+	}
+	
+	var result = this.createFileData(node, graph, file, window.location.href,
 		forceXml, forceSvg, forceHtml, embeddedCallback, ignoreSelection);
+	
+	// Removes temporary graph from DOM
+	if (graph != this.editor.graph)
+	{
+		graph.container.parentNode.removeChild(graph.container);
+	}
+	
+	return result;
 };
 
 /**
@@ -2219,7 +2269,7 @@ App.prototype.start = function()
 			try
 			{
 				var img = new Image();
-	    		img.src = 'log?v=' + encodeURIComponent(EditorUi.VERSION) +
+	    		img.src = 'https://log.draw.io/log?v=' + encodeURIComponent(EditorUi.VERSION) +
 	    			'&msg=errorLoadingFile:url:' + encodeURIComponent(window.location.href) +
     				((e != null && e.message != null) ? ':err:' + encodeURIComponent(e.message) : '') +
     				((e != null && e.stack != null) ? '&stack=' + encodeURIComponent(e.stack) : '');
@@ -4163,7 +4213,7 @@ App.prototype.fileLoaded = function(file)
 //		        	if (!this.isOffline())
 //		        	{
 //	        			var img = new Image();
-//	        			img.src = 'log?msg=storageMode:' + encodeURIComponent(file.getMode()) +
+//	        			img.src = 'https://log.draw.io/log?msg=storageMode:' + encodeURIComponent(file.getMode()) +
 //        				'&v=' + encodeURIComponent(EditorUi.VERSION);
 //		        	}
 //	        	}
@@ -5319,7 +5369,7 @@ App.prototype.saveData = function(filename, format, data, mime)
  * @param {number} dx X-coordinate of the translation.
  * @param {number} dy Y-coordinate of the translation.
  */
-App.prototype.downloadFile = function(format, nonCompressed, addShadow, ignoreSelection)
+App.prototype.downloadFile = function(format, nonCompressed, addShadow, ignoreSelection, currentPage)
 {
 	try
 	{
@@ -5339,7 +5389,7 @@ App.prototype.downloadFile = function(format, nonCompressed, addShadow, ignoreSe
 		{
 	    	var data = '<?xml version="1.0" encoding="UTF-8"?>\n' +
 	    		((nonCompressed) ? mxUtils.getXml(this.editor.getGraphXml(ignoreSelection)) :
-	    			this.getFileData(true, null, null, null, ignoreSelection));
+	    			this.getFileData(true, null, null, null, ignoreSelection, currentPage));
 	    	
 	    	this.saveData(filename, format, data, 'text/xml');
 		}

+ 36 - 8
war/js/diagramly/Dialogs.js

@@ -857,15 +857,16 @@ var EmbedHtmlDialog = function(editorUi)
 	layersCheckBox.style.marginLeft = '10px';
 	
 	var model = editorUi.editor.graph.getModel();
-	
-	if (model.getChildCount(model.getRoot()) > 1)
+
+	if (editorUi.pages == null || editorUi.pages.length == 0 &&
+		(model.getChildCount(model.getRoot()) <= 1))
 	{
-		layersCheckBox.setAttribute('checked', 'checked');
-		layersCheckBox.defaultChecked = true;
+		layersCheckBox.setAttribute('disabled', 'disabled');
 	}
 	else
 	{
-		layersCheckBox.setAttribute('disabled', 'disabled');
+		layersCheckBox.setAttribute('checked', 'checked');
+		layersCheckBox.defaultChecked = true;
 	}
 	
 	options.appendChild(layersCheckBox);
@@ -876,7 +877,22 @@ var EmbedHtmlDialog = function(editorUi)
 	zoomCheckBox.style.marginLeft = '10px';
 	options.appendChild(zoomCheckBox);
 	mxUtils.write(options, mxResources.get('zoom'));
+	
+	zoomCheckBox.setAttribute('checked', 'checked');
+	zoomCheckBox.defaultChecked = true;
+	
+	var pagesCheckBox = document.createElement('input');
+	pagesCheckBox.setAttribute('type', 'checkbox');
+	pagesCheckBox.style.marginLeft = '10px';
 
+	if (editorUi.pages != null && editorUi.pages.length > 1)
+	{
+		pagesCheckBox.setAttribute('checked', 'checked');
+		pagesCheckBox.defaultChecked = true;
+		options.appendChild(pagesCheckBox);		
+	}
+
+	mxUtils.write(options, mxResources.get('allPages'));
 	div.appendChild(options);
 
 	function update(force)
@@ -942,6 +958,17 @@ var EmbedHtmlDialog = function(editorUi)
 		
 		var tb = [];
 		
+		if (pagesCheckBox.checked)
+		{
+			tb.push('pages');
+			data.resize = true;
+			
+			if (editorUi.pages != null && editorUi.currentPage != null)
+			{
+				data.page = mxUtils.indexOf(editorUi.pages, editorUi.currentPage);
+			}
+		}
+		
 		if (zoomCheckBox.checked)
 		{
 			tb.push('zoom');
@@ -962,7 +989,7 @@ var EmbedHtmlDialog = function(editorUi)
 			
 			data.toolbar = tb.join(' ');
 		}
-		
+
 		if (editCheckBox.checked)
 		{
 			if (urlInput.value != '')
@@ -981,7 +1008,7 @@ var EmbedHtmlDialog = function(editorUi)
 		}
 		else
 		{
-			data.xml = editorUi.getFileData(true);
+			data.xml = editorUi.getFileData(true, null, null, null, null, !pagesCheckBox.checked);
 		}
 	
 		textarea.value = '<div class="mxgraph" style="' +
@@ -1022,6 +1049,7 @@ var EmbedHtmlDialog = function(editorUi)
 	mxEvent.addListener(fitCheckBox, 'change', update);
 	mxEvent.addListener(lightboxCheckBox, 'change', update);
 	mxEvent.addListener(zoomCheckBox, 'change', update);
+	mxEvent.addListener(pagesCheckBox, 'change', update);
 	
 	var buttons = document.createElement('div');
 	buttons.style.paddingTop = '20px';
@@ -4571,7 +4599,7 @@ PrintDialog.prototype.create = function(editorUi)
 		}
 		else
 		{
-			scale = parseInt(zoomInput.value) / 100 * graph.pageScale;
+			scale = parseInt(zoomInput.value) / (100 * graph.pageScale);
 			
 			if (isNaN(scale))
 			{

+ 1 - 1
war/js/diagramly/DriveRealtime.js

@@ -205,7 +205,7 @@ DriveRealtime.prototype.start = function()
 				var img = new Image();
 				
 				// Timestamp is added to bypass client-side cache
-				img.src = 'log?severity=CONFIG&msg=converted-oldrt&v=' +
+				img.src = 'https://log.draw.io/log?severity=CONFIG&msg=converted-oldrt&v=' +
 					encodeURIComponent(EditorUi.VERSION) + '&ts=' + new Date().getTime();
 	    	}
 	    	catch (e)

+ 26 - 11
war/js/diagramly/EditorUi.js

@@ -177,7 +177,7 @@
 		
 		var filter = (svgDoc.createElementNS != null) ?
 			svgDoc.createElementNS(mxConstants.NS_SVG, 'filter') : svgDoc.createElement('filter');
-		filter.setAttribute('id', 'dropShadow');
+		filter.setAttribute('id', this.graph.shadowId);
 
 		var blur = (svgDoc.createElementNS != null) ?
 				svgDoc.createElementNS(mxConstants.NS_SVG, 'feGaussianBlur') : svgDoc.createElement('feGaussianBlur');
@@ -242,7 +242,7 @@
 		
 		if (!createOnly)
 		{
-			(group || svgRoot.getElementsByTagName('g')[0]).setAttribute('filter', 'url(#dropShadow)');
+			(group || svgRoot.getElementsByTagName('g')[0]).setAttribute('filter', 'url(#' + this.graph.shadowId + ')');
 			
 			if (!isNaN(parseInt(svgRoot.getAttribute('width'))))
 			{
@@ -1766,7 +1766,7 @@
 								var img = new Image();
 								
 								// Timestamp is added to bypass client-side cache
-								img.src = 'log?severity=CONFIG&msg=imgur-published:' + res.data.id + '&v=' +
+								img.src = 'https://log.draw.io/log?severity=CONFIG&msg=imgur-published:' + res.data.id + '&v=' +
 									encodeURIComponent(EditorUi.VERSION) + '&ts=' + new Date().getTime();
 					    	}
 					    	catch (e)
@@ -2078,8 +2078,12 @@
 
 		// Sets or disables alternate text for foreignObjects. Disabling is needed
 		// because PhantomJS seems to ignore switch statements and paint all text.
-		var svgRoot = this.editor.graph.getSvg(bg, null, null, null, null, ignoreSelection);	
-		svgRoot.setAttribute('content', encodeURIComponent(xml));
+		var svgRoot = graph.getSvg(bg, null, null, null, null, ignoreSelection);
+
+		if (xml != null)
+		{
+			svgRoot.setAttribute('content', encodeURIComponent(xml));
+		}
 		
 		if (url != null)
 		{
@@ -2115,11 +2119,13 @@
 	 *
 	 */
 	EditorUi.prototype.exportToCanvas = function(callback, width, imageCache, background, error, limitHeight,
-		ignoreSelection, scale, transparentBackground, addShadow, converter)
+		ignoreSelection, scale, transparentBackground, addShadow, converter, graph)
 	{
 		limitHeight = (limitHeight != null) ? limitHeight : true;
 		ignoreSelection = (ignoreSelection != null) ? ignoreSelection : true;
-		var bg = (transparentBackground) ? null : this.editor.graph.background;
+		graph = (graph != null) ? graph : this.editor.graph;
+		
+		var bg = (transparentBackground) ? null : graph.background;
 		
 		if (bg == mxConstants.NONE)
 		{
@@ -2137,7 +2143,7 @@
 			bg = '#ffffff';
 		}
 		
-		this.convertImages(this.editor.graph.getSvg(bg, null, null, null, null, ignoreSelection), mxUtils.bind(this, function(svgRoot)
+		this.convertImages(graph.getSvg(bg, null, null, null, null, ignoreSelection), mxUtils.bind(this, function(svgRoot)
 		{
 			var img = new Image();
 			
@@ -2178,7 +2184,7 @@
 					this.editor.addSvgShadow(svgRoot);
 				}
 				
-				this.convertMath(this.editor.graph, svgRoot, true, mxUtils.bind(this, function()
+				this.convertMath(graph, svgRoot, true, mxUtils.bind(this, function()
 				{
 					img.src = this.createSvgDataUri(mxUtils.getXml(svgRoot));
 				}));
@@ -4418,7 +4424,11 @@
 				{fill: '#ffcd28', stroke: '#d79b00', gradient: '#ffa500'},
 				{fill: '#fff2cc', stroke: '#d6b656', gradient: '#ffd966'},
 				{fill: '#f8cecc', stroke: '#b85450', gradient: '#ea6b66'},
-				{fill: '#e6d0de', stroke: '#996185', gradient: '#d5739d'}]];
+				{fill: '#e6d0de', stroke: '#996185', gradient: '#d5739d'}],
+				[null, {fill: '#eeeeee', stroke: '#36393d'},
+				{fill: '#f9f7ed', stroke: '#36393d'}, {fill: '#ffcc99', stroke: '#36393d'},
+				{fill: '#cce5ff', stroke: '#36393d'}, {fill: '#ffff88', stroke: '#36393d'},
+				{fill: '#cdeb8b', stroke: '#36393d'}, {fill: '#ffcccc', stroke: '#36393d'}]];
 			
 			var left = document.createElement('div');
 			left.style.cssText = 'position:absolute;left:10px;top:8px;bottom:8px;width:20px;margin:4px;opacity:0.5;' +
@@ -5679,6 +5689,11 @@
 	 */
 	Graph.prototype.defaultPageVisible = urlParams['pv'] != '0';
 
+	/**
+	 * Specifies if the page should be visible for new files. Default is true.
+	 */
+	Graph.prototype.shadowId = 'dropShadow';
+
 	/**
 	 * Loads the stylesheet for this graph.
 	 */
@@ -5691,7 +5706,7 @@
 			
 			if (this.shadowVisible)
 			{
-				this.view.getDrawPane().setAttribute('filter', 'url(#dropShadow)');
+				this.view.getDrawPane().setAttribute('filter', 'url(#' + this.shadowId + ')');
 			}
 			else
 			{

+ 128 - 92
war/js/diagramly/GraphViewer.js

@@ -71,7 +71,7 @@ GraphViewer = function(container, xmlNode, graphConfig)
 			}
 			
 			// Adds page placeholders
-			var pagenumber = this.graphConfig.page || 0;
+			this.currentPage = parseInt(this.graphConfig.page) || 0;
 			
 			if (xmlNode.nodeName == 'mxfile')
 			{
@@ -79,18 +79,20 @@ GraphViewer = function(container, xmlNode, graphConfig)
 				
 				if (diagrams.length > 0)
 				{
-					var diagram = diagrams[pagenumber];
 					var graphGetGlobalVariable = this.graph.getGlobalVariable;
+					var self = this;
 					
 					this.graph.getGlobalVariable = function(name)
 					{
+						var diagram = diagrams[self.currentPage];
+						
 						if (name == 'page')
 						{
-							return diagram.getAttribute('name') || 'Page-' + (pagenumber + 1);
+							return diagram.getAttribute('name') || 'Page-' + (self.currentPage + 1);
 						}
 						else if (name == 'pagenumber')
 						{
-							return pagenumber + 1;
+							return self.currentPage + 1;
 						}
 						
 						return graphGetGlobalVariable.apply(this, arguments);
@@ -100,7 +102,7 @@ GraphViewer = function(container, xmlNode, graphConfig)
 	
 			// Passes current page via urlParams global variable
 			// to let the parser know which page we're using
-			urlParams['page'] = pagenumber;
+			urlParams['page'] = self.currentPage;
 			
 			var render = mxUtils.bind(this, function()
 			{
@@ -262,9 +264,12 @@ GraphViewer.prototype.getImageUrl = function(url)
  */
 GraphViewer.prototype.updateGraphXml = function(xmlNode)
 {
-	this.xmlDocument = xmlNode.ownerDocument;
-	this.xml = mxUtils.getXml(xmlNode);
-	this.xmlNode = xmlNode;
+	if (this.xmlNode == null)
+	{
+		this.xmlDocument = xmlNode.ownerDocument;
+		this.xml = mxUtils.getXml(xmlNode);
+		this.xmlNode = xmlNode;
+	}
 	
 	if (this.graph != null)
 	{
@@ -278,8 +283,8 @@ GraphViewer.prototype.updateGraphXml = function(xmlNode)
 			this.graph.container.style.width = '';
 			this.graph.container.style.height = '';
 		}
-		
-		this.editor.setGraphXml(this.xmlNode);
+
+		this.editor.setGraphXml(xmlNode);
 		this.positionGraph();
 		
 		this.graph.initialViewState = {
@@ -763,15 +768,58 @@ GraphViewer.prototype.addToolbar = function()
 
 	var buttonCount = 0;
 	var tokens = this.toolbarItems;
-
+	var diagrams = [];
+	
+	// Adds page placeholders
+	if (this.xmlNode.nodeName == 'mxfile')
+	{
+		diagrams = this.xmlNode.getElementsByTagName('diagram');
+	}
+	
 	var layersDialog = null;
 	var layersDialogEntered = false;
-
+	var pageInfo = null;
+	
 	for (var i = 0; i < tokens.length; i++)
 	{
 		var token = tokens[i];
 		
-		if (token == 'zoom')
+		if (token == 'pages' && diagrams.length > 1)
+		{
+			pageInfo = container.ownerDocument.createElement('div');
+			pageInfo.style.cssText = 'display:inline-block;position:relative;padding:3px 4px 0 4px;' +
+				'vertical-align:top;font-family:Helvetica,Arial;font-size:12px;top:4px;cursor:default;'
+			mxUtils.write(pageInfo, (this.currentPage + 1) + ' / ' + diagrams.length);
+			mxUtils.setOpacity(pageInfo, 70);
+			
+			var prevButton = addButton(mxUtils.bind(this, function()
+			{
+				this.currentPage = mxUtils.mod(this.currentPage - 1, diagrams.length);
+				pageInfo.innerHTML = '';
+				mxUtils.write(pageInfo, (this.currentPage + 1) + ' / ' + diagrams.length);
+				this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(
+					diagrams[this.currentPage]))).documentElement);
+			}), Editor.previousImage, mxResources.get('previousPage') || 'Previous Page');
+
+			prevButton.style.borderRightStyle = 'none';
+			prevButton.style.paddingLeft = '0px';
+			prevButton.style.paddingRight = '0px';
+			
+			toolbar.appendChild(pageInfo);
+
+			var nextButton = addButton(mxUtils.bind(this, function()
+			{
+				this.currentPage = mxUtils.mod(this.currentPage + 1, diagrams.length);
+				pageInfo.innerHTML = '';
+				mxUtils.write(pageInfo, (this.currentPage + 1) + ' / ' + diagrams.length);
+				this.updateGraphXml(mxUtils.parseXml(this.graph.decompress(mxUtils.getTextContent(
+					diagrams[this.currentPage]))).documentElement);
+			}), Editor.nextImage, mxResources.get('nextPage') || 'Next Page');
+			
+			nextButton.style.paddingLeft = '0px';
+			nextButton.style.paddingRight = '0px';
+		}
+		else if (token == 'zoom')
 		{
 			if (this.zoomEnabled)
 			{
@@ -785,7 +833,7 @@ GraphViewer.prototype.addToolbar = function()
 					this.graph.zoomIn();
 				}), Editor.zoomInImage, mxResources.get('zoomIn') || 'Zoom In');
 
-				var a = addButton(mxUtils.bind(this, function()
+				addButton(mxUtils.bind(this, function()
 				{
 					this.graph.view.scaleAndTranslate(this.graph.initialViewState.scale,
 						this.graph.initialViewState.translate.x,
@@ -798,44 +846,47 @@ GraphViewer.prototype.addToolbar = function()
 			if (this.layersEnabled)
 			{
 				var model = this.graph.getModel();
-				var childCount = model.getChildCount(model.root);
-				
-				if (childCount > 1)
+
+				var layersButton = addButton(mxUtils.bind(this, function(evt)
 				{
-					var layersButton = addButton(mxUtils.bind(this, function(evt)
+					if (layersDialog != null)
+					{
+						layersDialog.parentNode.removeChild(layersDialog);
+						layersDialog = null;
+					}
+					else
 					{
-						if (layersDialog != null)
+						layersDialog = this.graph.createLayersDialog();
+						
+						mxEvent.addListener(layersDialog, 'mouseleave', function()
 						{
 							layersDialog.parentNode.removeChild(layersDialog);
 							layersDialog = null;
-						}
-						else
-						{
-							layersDialog = this.graph.createLayersDialog();
-							
-							mxEvent.addListener(layersDialog, 'mouseleave', function()
-							{
-								layersDialog.parentNode.removeChild(layersDialog);
-								layersDialog = null;
-							});
-							
-							var r = layersButton.getBoundingClientRect();
-
-							layersDialog.style.width = '140px';
-							layersDialog.style.padding = '2px 0px 2px 0px';
-							layersDialog.style.border = '1px solid #d0d0d0';
-							layersDialog.style.backgroundColor = '#eee';
-							layersDialog.style.fontFamily = 'Helvetica Neue,Helvetica,Arial Unicode MS,Arial';
-							layersDialog.style.fontSize = '11px';
-							mxUtils.setOpacity(layersDialog, 80);
-							var origin = mxUtils.getDocumentScrollOrigin(document);
-							layersDialog.style.left = origin.x + r.left + 'px';
-							layersDialog.style.top = origin.y + r.bottom + 'px';
-							
-							document.body.appendChild(layersDialog);
-						}
-					}), Editor.layersImage, mxResources.get('layers') || 'Layers');
-				}
+						});
+						
+						var r = layersButton.getBoundingClientRect();
+
+						layersDialog.style.width = '140px';
+						layersDialog.style.padding = '2px 0px 2px 0px';
+						layersDialog.style.border = '1px solid #d0d0d0';
+						layersDialog.style.backgroundColor = '#eee';
+						layersDialog.style.fontFamily = 'Helvetica Neue,Helvetica,Arial Unicode MS,Arial';
+						layersDialog.style.fontSize = '11px';
+						mxUtils.setOpacity(layersDialog, 80);
+						var origin = mxUtils.getDocumentScrollOrigin(document);
+						layersDialog.style.left = origin.x + r.left + 'px';
+						layersDialog.style.top = origin.y + r.bottom + 'px';
+						
+						document.body.appendChild(layersDialog);
+					}
+				}), Editor.layersImage, mxResources.get('layers') || 'Layers');
+				
+				model.addListener(mxEvent.CHANGE, function()
+				{
+					layersButton.style.display = (model.getChildCount(model.root) > 1) ? 'inline-block' : 'none';
+				});
+				
+				layersButton.style.display = (model.getChildCount(model.root) > 1) ? 'inline-block' : 'none';
 			}
 		}
 		else if (token == 'lightbox')
@@ -845,7 +896,7 @@ GraphViewer.prototype.addToolbar = function()
 				addButton(mxUtils.bind(this, function()
 				{
 					this.showLightbox();
-				}), Editor.maximizeImage, mxResources.get('show') || 'Show');
+				}), Editor.maximizeImage, (mxResources.get('show') || 'Show'));
 			}
 		}
 		else if (this.graphConfig['toolbar-buttons'] != null)
@@ -1083,7 +1134,8 @@ GraphViewer.prototype.showLocalLightbox = function()
 	});
 	
 	// LATER: Make possible to assign after instance was created
-	urlParams['page'] = this.graphConfig.page || 0;
+	urlParams['pages'] = '1';
+	urlParams['page'] = this.currentPage;
 	urlParams['nav'] = (this.graphConfig.nav != false) ? '1' : '0';
 	urlParams['layers'] = (this.layersEnabled) ? '1' : '0';
 	
@@ -1097,20 +1149,40 @@ GraphViewer.prototype.showLocalLightbox = function()
 	EditorUi.prototype.addBeforeUnloadListener = function() {};
 	EditorUi.prototype.addChromelessClickHandler = function() {};
 	
+	// Workaround for lost reference with same ID (cannot override after instance is created)
+	Graph.prototype.shadowId = 'lightboxDropShadow';
+	
 	var ui = new EditorUi(new Editor(true), document.createElement('div'), true);
 	
+	// Workaround for lost reference with same ID
+	Graph.prototype.shadowId = 'dropShadow';
+	
 	// Disables refresh
 	ui.refresh = function() {};
 	
-	var param = (this.graphConfig.page != null) ? '&page=' + this.graphConfig.page : '';
-	ui.editor.editBlankUrl = this.editBlankUrl + param;
-	ui.editor.editBlankFallbackUrl = this.editBlankFallbackUrl + param;
-
+	// Click on backdrop closes lightbox
 	mxEvent.addListener(backdrop, 'click', function()
 	{
 		ui.destroy();
 	});
 	
+	// Passes current page and local URLs to open in new window action
+	ui.editor.editBlankUrl = this.editBlankUrl;
+	ui.editor.editBlankFallbackUrl = this.editBlankFallbackUrl;
+	var editorGetEditBlankUrl = ui.editor.getEditBlankUrl;
+	
+	ui.editor.getEditBlankUrl = function(params, fallback)
+	{
+		var param = '';
+		
+		if (ui.pages != null && ui.currentPage != null)
+		{
+			param = '&page=' + mxUtils.indexOf(ui.pages, ui.currentPage);
+		}
+		
+		return editorGetEditBlankUrl.apply(this, arguments) + param;
+	}
+
 	// Handles escape keystroke
 	var keydownHandler = mxUtils.bind(this, function(evt)
 	{
@@ -1126,12 +1198,6 @@ GraphViewer.prototype.showLocalLightbox = function()
 		mxEvent.removeListener(document.documentElement, 'keydown', keydownHandler);
 		document.body.removeChild(backdrop);
 		document.body.removeChild(closeImg);
-		
-		if (tabContainer != null)
-		{
-			document.body.removeChild(tabContainer);
-		}
-		
 		document.body.style.overflow = 'auto';
 		GraphViewer.resizeSensorEnabled = true;
 		
@@ -1200,36 +1266,11 @@ GraphViewer.prototype.showLocalLightbox = function()
 		document.body.appendChild(lightbox);
 		document.body.appendChild(closeImg);
 		
+		console.log('xml', this.xml);
 		ui.setFileData(this.xml);
-		tabContainer = (ui.pages != null && ui.pages.length > 1) ? ui.tabContainer : null;
 
-		if (tabContainer != null)
-		{
-			if (mxClient.IS_QUIRKS)
-			{
-				tabContainer.style.position = 'absolute';
-				tabContainer.style.right = 32 + 'px';
-				tabContainer.style.top = origin.y + 32 + 'px';
-			}
-			else
-			{
-				// FIXME: Fix page menu CSS with sprite
-				// TODO: Update layers button after page change
-				tabContainer.style.fontFamily = 'Helvetica Neue,Helvetica,Arial Unicode MS,Arial';
-				tabContainer.style.position = 'fixed';
-				tabContainer.style.marginLeft = '40px';
-				tabContainer.style.marginRight = '40px';
-				tabContainer.style.bottom = '30px';
-				mxUtils.setPrefixedStyle(tabContainer.style, 'border-radius', '4px');
-			}
-			
-			tabContainer.style.zIndex = this.lightboxZIndex;
-			document.body.appendChild(tabContainer);
-			ui.updateTabContainer();
-		}
-		
 		mxUtils.setPrefixedStyle(lightbox.style, 'transform', 'rotateY(0deg)');
-		ui.chromelessToolbar.style.bottom = ((tabContainer != null) ? 80 : 60) + 'px';
+		ui.chromelessToolbar.style.bottom = 60 + 'px';
 		ui.chromelessToolbar.style.zIndex = this.lightboxZIndex;
 		
 		// Workaround for clipping in IE11-
@@ -1247,8 +1288,7 @@ GraphViewer.prototype.showLocalLightbox = function()
 			lightbox.style.left = origin.x + 'px';
 			lightbox.style.top = origin.y + 'px';
 			lightbox.style.width = document.body.clientWidth - 80 + 'px';
-			lightbox.style.height = document.body.clientHeight -
-				((tabContainer != null) ? 20 : 80) + 'px';
+			lightbox.style.height = document.body.clientHeight - 80 + 'px';
 			lightbox.style.backgroundColor = 'white';
 			
 			ui.chromelessToolbar.style.display = 'block';
@@ -1257,10 +1297,6 @@ GraphViewer.prototype.showLocalLightbox = function()
 			ui.chromelessToolbar.style.top = origin.y +
 				document.body.clientHeight - 100 + 'px';
 		}
-		else if (tabContainer != null)
-		{
-			lightbox.style.marginBottom = '60px';
-		}
 		
 		ui.lightboxFit();
 		ui.chromelessResize();

+ 10 - 5
war/js/diagramly/Menus.js

@@ -560,7 +560,7 @@
 						if (editorUi.enableLogging)
 						{
 							var img = new Image();
-							img.src = 'log?severity=CONFIG&msg=helpsearch:' + encodeURIComponent(input.value) + '&v=' + encodeURIComponent(EditorUi.VERSION);
+							img.src = 'https://log.draw.io/log?severity=CONFIG&msg=helpsearch:' + encodeURIComponent(input.value) + '&v=' + encodeURIComponent(EditorUi.VERSION);
 						}
 						
 						// Workaround for blocked submit on iOS/IE11
@@ -1074,19 +1074,24 @@
 				cb.defaultChecked = true;
 				cb.style.marginRight = '8px';
 				cb.style.marginTop = '16px';
+				mxUtils.br(content);
+				content.appendChild(cb);
 				
 				if (noPages)
 				{
-					mxUtils.br(content);
-					content.appendChild(cb);
 					mxUtils.write(content, mxResources.get('compressed'));
 				}
+				else
+				{
+					mxUtils.write(content, mxResources.get('allPages'));
+				}
 					
 				var dlg = new CustomDialog(editorUi, content, mxUtils.bind(this, function()
 				{
-					editorUi.downloadFile('xml', !cb.checked, null, !cb2.checked);
+					editorUi.downloadFile('xml', (noPages) ? !cb.checked : null, null, !cb2.checked,
+						(!noPages) ? !cb.checked : null);
 				}), null, mxResources.get('export'));
-				editorUi.showDialog(dlg.container, 300, (noPages) ? 120 : 80, true, true);
+				editorUi.showDialog(dlg.container, 300, 120, true, true);
 			}), parent);
 			
 			if (!editorUi.isOffline())

+ 5 - 4
war/js/diagramly/Pages.js

@@ -531,13 +531,13 @@ EditorUi.prototype.selectNextPage = function(forward)
 	{
 		var tmp = mxUtils.indexOf(this.pages, next);
 		
-		if (forward && tmp < this.pages.length - 1)
+		if (forward)
 		{
-			this.selectPage(this.pages[tmp + 1]);
+			this.selectPage(this.pages[mxUtils.mod(tmp + 1, this.pages.length)]);
 		}
-		else if (!forward && tmp > 0)
+		else if (!forward)
 		{
-			this.selectPage(this.pages[tmp - 1]);
+			this.selectPage(this.pages[mxUtils.mod(tmp - 1, this.pages.length)]);
 		}
 	}
 };
@@ -1065,6 +1065,7 @@ EditorUi.prototype.addTabListeners = function(page, tab)
 	
 	mxEvent.addGestureListeners(tab, mxUtils.bind(this, function(evt)
 	{
+		// Do not consume event here to allow for drag and drop of tabs
 		menuWasVisible = this.currentMenu != null;
 		pageWasActive = page == this.currentPage;
 		

+ 62 - 10
war/js/diagramly/RealtimeMapping.js

@@ -77,7 +77,7 @@ RealtimeMapping.prototype.init = function()
 				this.graph.model.execute(new RenamePage(this.ui, this.page, evt.newValue));
 				this.driveRealtime.ignoreChange = false;
 			}
-			else if (this.isActive() && evt.newValue != null)
+			else if (evt.newValue != null)
 			{
 				if (evt.property == 'pageFormat')
 				{
@@ -872,7 +872,14 @@ RealtimeMapping.prototype.realtimePageFormatChanged = function(value, quiet)
 		
 		if (values.length > 1)
 		{
-			if (quiet)
+			if (!this.isActive())
+			{
+				if (this.page.viewState != null)
+				{
+					this.page.viewState.pageFormat = new mxRectangle(0, 0, parseInt(values[0]), parseInt(values[1]));
+				}
+			}
+			else if (quiet)
 			{
 				this.graph.pageFormat = new mxRectangle(0, 0, parseInt(values[0]), parseInt(values[1]));
 			}
@@ -893,7 +900,14 @@ RealtimeMapping.prototype.realtimePageScaleChanged = function(value, quiet)
 {
 	if (value != null)
 	{
-		if (quiet)
+		if (!this.isActive())
+		{
+			if (this.page.viewState != null)
+			{
+				this.page.viewState.pageScale = parseFloat(value);
+			}
+		}
+		else if (quiet)
 		{
 			this.graph.pageScale = parseFloat(value);
 		}
@@ -911,7 +925,14 @@ RealtimeMapping.prototype.realtimePageScaleChanged = function(value, quiet)
  */
 RealtimeMapping.prototype.realtimeBackgroundColorChanged = function(value, quiet)
 {
-	if (quiet)
+	if (!this.isActive())
+	{
+		if (this.page.viewState != null)
+		{
+			this.page.viewState.background = (value == '') ? null : value;
+		}
+	}
+	else if (quiet)
 	{
 		this.graph.background = (value == '') ? null : value;
 	}
@@ -928,7 +949,14 @@ RealtimeMapping.prototype.realtimeBackgroundColorChanged = function(value, quiet
  */
 RealtimeMapping.prototype.realtimeFoldingEnabledChanged = function(value, quiet)
 {
-	if (quiet)
+	if (!this.isActive())
+	{
+		if (this.page.viewState != null)
+		{
+			this.page.viewState.foldingEnabled = value == '1';
+		}
+	}
+	else if (quiet)
 	{
 		this.graph.foldingEnabled = value == '1';
 	}
@@ -946,9 +974,19 @@ RealtimeMapping.prototype.realtimeFoldingEnabledChanged = function(value, quiet)
 RealtimeMapping.prototype.realtimeShadowVisibleChanged = function(value, quiet)
 {
 	// Does not need quiet mode as it's handled independently of refresh
-	this.driveRealtime.ignoreShadowVisibleChanged = true;
-	this.ui.editor.graph.setShadowVisible(value == '1');
-	this.driveRealtime.ignoreShadowVisibleChanged = false;
+	if (!this.isActive())
+	{
+		if (this.page.viewState != null)
+		{
+			this.page.viewState.shadowVisible = value == '1';
+		}
+	}
+	else
+	{
+		this.driveRealtime.ignoreShadowVisibleChanged = true;
+		this.ui.editor.graph.setShadowVisible(value == '1');
+		this.driveRealtime.ignoreShadowVisibleChanged = false;
+	}
 };
 
 /**
@@ -958,7 +996,14 @@ RealtimeMapping.prototype.realtimeBackgroundImageChanged = function(value, quiet
 {
 	var data = (value != null && value.length > 0) ? JSON.parse(value) : null;
 	
-	if (quiet)
+	if (!this.isActive())
+	{
+		if (this.page.viewState != null)
+		{
+			this.page.viewState.backgroundImage = (data != null) ? new mxImage(data.src, data.width, data.height) : null;
+		}
+	}
+	else if (quiet)
 	{
 		this.graph.setBackgroundImage((data != null) ? new mxImage(data.src, data.width, data.height) : null);
 	}
@@ -975,7 +1020,14 @@ RealtimeMapping.prototype.realtimeBackgroundImageChanged = function(value, quiet
  */
 RealtimeMapping.prototype.realtimeMathEnabledChanged = function(value, quiet)
 {
-	if (quiet)
+	if (!this.isActive())
+	{
+		if (this.page.viewState != null)
+		{
+			this.page.viewState.mathEnabled = urlParams['math'] == '1' || value == '1';
+		}
+	}
+	else if (quiet)
 	{
 		this.graph.mathEnabled = urlParams['math'] == '1' || value == '1';
 	}

+ 1 - 1
war/js/diagramly/sidebar/Sidebar.js

@@ -983,7 +983,7 @@
 		if (this.editorUi.enableLogging && !this.editorUi.isOffline() && page == 0)
 		{
 			var img = new Image();
-			img.src = 'log?severity=CONFIG&msg=shapesearch:' + encodeURIComponent(searchTerms) + '&v=' + encodeURIComponent(EditorUi.VERSION);
+			img.src = 'https://log.draw.io/log?severity=CONFIG&msg=shapesearch:' + encodeURIComponent(searchTerms) + '&v=' + encodeURIComponent(EditorUi.VERSION);
 		}
 		
 		success = mxUtils.bind(this, function(results, len, more, terms)

File diff suppressed because it is too large
+ 1 - 1
war/js/embed-static.min.js


+ 1 - 1
war/js/mxgraph/Actions.js

@@ -623,7 +623,7 @@ Actions.prototype.init = function()
 		this.editorUi.showDialog(dlg.container, 300, 80, true, true);
 		dlg.init();
 	}), null, null, 'Ctrl+0'));
-	this.addAction('pageScale', mxUtils.bind(this, function()
+	this.addAction('pageScale...', mxUtils.bind(this, function()
 	{
 		var dlg = new FilenameDialog(this.editorUi, parseInt(graph.pageScale * 100), mxResources.get('apply'), mxUtils.bind(this, function(newValue)
 		{

File diff suppressed because it is too large
+ 30 - 2
war/js/mxgraph/Editor.js


+ 83 - 3
war/js/mxgraph/EditorUi.js

@@ -208,13 +208,13 @@ EditorUi = function(editor, container, lightbox)
 			mxEvent.isMiddleMouseButton(me.getEvent())));
 	};
 
-	// Control-enter applies editing value
-	// FIXME: Fix for HTML editing
+	// Ctrl/Cmd+Enter applies editing value
 	var cellEditorIsStopEditingEvent = graph.cellEditor.isStopEditingEvent;
 	graph.cellEditor.isStopEditingEvent = function(evt)
 	{
 		return cellEditorIsStopEditingEvent.apply(this, arguments) ||
-			(evt.keyCode == 13 && mxEvent.isControlDown(evt));
+			(evt.keyCode == 13 && (mxEvent.isControlDown(evt) ||
+			(mxClient.IS_MAC && mxEvent.isMetaDown(evt))));
 	};
 	
 	// Switches toolbar for text editing
@@ -1474,6 +1474,62 @@ EditorUi.prototype.initCanvas = function()
 			
 			return a;
 		});
+		
+		var prevButton = addButton(mxUtils.bind(this, function(evt)
+		{
+			this.actions.get('previousPage').funct();
+			mxEvent.consume(evt);
+		}), Editor.previousLargeImage, mxResources.get('previousPage') || 'Previous Page');
+		
+		
+		var pageInfo = document.createElement('div');
+		pageInfo.style.display = 'inline-block';
+		pageInfo.style.verticalAlign = 'top';
+		pageInfo.style.fontFamily = 'Helvetica,Arial';
+		pageInfo.style.marginTop = '8px';
+		pageInfo.style.color = '#ffffff';
+		this.chromelessToolbar.appendChild(pageInfo);
+		
+		var nextButton = addButton(mxUtils.bind(this, function(evt)
+		{
+			this.actions.get('nextPage').funct();
+			mxEvent.consume(evt);
+		}), Editor.nextLargeImage, mxResources.get('nextPage') || 'Next Page');
+		
+		var updatePageInfo = mxUtils.bind(this, function()
+		{
+			if (this.pages != null && this.pages.length > 1 && this.currentPage != null)
+			{
+				pageInfo.innerHTML = '';
+				mxUtils.write(pageInfo, (mxUtils.indexOf(this.pages, this.currentPage) + 1) + ' / ' + this.pages.length);
+			}
+		});
+		
+		prevButton.style.paddingLeft = '0px';
+		prevButton.style.paddingRight = '4px';
+		nextButton.style.paddingLeft = '4px';
+		nextButton.style.paddingRight = '0px';
+		
+		var updatePageButtons = mxUtils.bind(this, function()
+		{
+			if (this.pages != null && this.pages.length > 1 && this.currentPage != null)
+			{
+				nextButton.style.display = '';
+				prevButton.style.display = '';
+				pageInfo.style.display = 'inline-block';
+			}
+			else
+			{
+				nextButton.style.display = 'none';
+				prevButton.style.display = 'none';
+				pageInfo.style.display = 'none';
+			}
+			
+			updatePageInfo();
+		});
+		
+		this.editor.addListener('resetGraphView', updatePageButtons);
+		this.editor.addListener('pageSelected', updatePageInfo);
 
 		addButton(mxUtils.bind(this, function(evt)
 		{
@@ -1584,6 +1640,7 @@ EditorUi.prototype.initCanvas = function()
 					
 					mxUtils.setPrefixedStyle(this.layersDialog.style, 'borderRadius', '5px');
 					this.layersDialog.style.position = 'fixed';
+					this.layersDialog.style.fontFamily = 'Helvetica,Arial';
 					this.layersDialog.style.backgroundColor = '#000000';
 					this.layersDialog.style.width = '160px';
 					this.layersDialog.style.padding = '4px 2px 4px 2px';
@@ -1922,6 +1979,29 @@ EditorUi.prototype.initCanvas = function()
 	}));
 };
 
+/**
+ * Creates a temporary graph instance for rendering off-screen content.
+ */
+EditorUi.prototype.createTemporaryGraph = function(stylesheet)
+{
+	var graph = new Graph(document.createElement('div'), null, null, stylesheet);
+	graph.resetViewOnRootChange = false;
+	graph.setConnectable(false);
+	graph.gridEnabled = false;
+	graph.autoScroll = false;
+	graph.setTooltips(false);
+	graph.setEnabled(false);
+
+	// Container must be in the DOM for correct HTML rendering
+	graph.container.style.visibility = 'hidden';
+	graph.container.style.position = 'absolute';
+	graph.container.style.overflow = 'hidden';
+	graph.container.style.height = '1px';
+	graph.container.style.width = '1px';
+	
+	return graph;
+};
+
 /**
  * 
  */

+ 10 - 23
war/js/mxgraph/Sidebar.js

@@ -11,23 +11,10 @@ function Sidebar(editorUi, container)
 	this.palettes = new Object();
 	this.taglist = new Object();
 	this.showTooltips = true;
-	this.graph = new Graph(document.createElement('div'), null, null, this.editorUi.editor.graph.getStylesheet());
+	this.graph = editorUi.createTemporaryGraph(this.editorUi.editor.graph.getStylesheet());
 	this.graph.cellRenderer.antiAlias = false;
-	this.graph.resetViewOnRootChange = false;
 	this.graph.foldingEnabled = false;
-	this.graph.setConnectable(false);
-	this.graph.gridEnabled = false;
-	this.graph.autoScroll = false;
-	this.graph.setTooltips(false);
-	this.graph.setEnabled(false);
-
-	// Container must be in the DOM for correct HTML rendering
-	this.graph.container.style.visibility = 'hidden';
-	this.graph.container.style.position = 'absolute';
-	this.graph.container.style.overflow = 'hidden';
-	this.graph.container.style.height = '1px';
-	this.graph.container.style.width = '1px';
-	
+
 	// Workaround for blank output in IE11-
 	if (!mxClient.IS_IE && !mxClient.IS_IE11)
 	{
@@ -974,10 +961,10 @@ Sidebar.prototype.addMiscPalette = function(expand)
 	 	})),
 	 	this.createVertexTemplateEntry('shape=umlActor;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;html=1;', 30, 60, 'Actor', 'Actor', false, null, 'user person human stickman'),
 		// Entries for top searches
-		this.createVertexTemplateEntry('whiteSpace=wrap;html=1;', 80, 80, '', 'Square', null, null, 'square'),
-		this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;', 80, 80, '', 'Circle', null, null, 'circle'),
-		this.createVertexTemplateEntry('shape=ext;double=1;whiteSpace=wrap;html=1;', 80, 80, '', 'Double Square', null, null, 'double square'),
-		this.createVertexTemplateEntry('ellipse;shape=doubleEllipse;whiteSpace=wrap;html=1;', 80, 80, '', 'Double Circle', null, null, 'double circle'),
+		this.createVertexTemplateEntry('whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Square', null, null, 'square'),
+		this.createVertexTemplateEntry('ellipse;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Circle', null, null, 'circle'),
+		this.createVertexTemplateEntry('shape=ext;double=1;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Double Square', null, null, 'double square'),
+		this.createVertexTemplateEntry('ellipse;shape=doubleEllipse;whiteSpace=wrap;html=1;aspect=fixed;', 80, 80, '', 'Double Circle', null, null, 'double circle'),
 		// End of entries for top searches
 	 	this.createVertexTemplateEntry('html=1;whiteSpace=wrap;comic=1;strokeWidth=2;fontFamily=Comic Sans MS;fontStyle=1;', 120, 60, 'RECTANGLE', 'Comic Rectangle', true, null, 'comic rectangle rect box text retro'),
 	 	this.createVertexTemplateEntry('rhombus;html=1;align=center;whiteSpace=wrap;comic=1;strokeWidth=2;fontFamily=Comic Sans MS;fontStyle=1;', 100, 100, 'DIAMOND', 'Comic Diamond', true, null, 'comic diamond rhombus if condition decision conditional question test retro'),
@@ -987,10 +974,10 @@ Sidebar.prototype.addMiscPalette = function(expand)
 	 	this.createVertexTemplateEntry('html=1;whiteSpace=wrap;aspect=fixed;shape=isoCube;', 90, 100, '', 'Isometric Cube', true, null, 'cube box iso isometric'),
 	 	this.createEdgeTemplateEntry('edgeStyle=isometricEdgeStyle;endArrow=none;html=1;', 50, 100, '', 'Isometric Edge 1'),
 	 	this.createEdgeTemplateEntry('edgeStyle=isometricEdgeStyle;endArrow=none;html=1;elbow=vertical;', 50, 100, '', 'Isometric Edge 2'),
-	 	this.createVertexTemplateEntry('line;html=1;', 160, 10, '', 'Horizontal Line'),
-	 	this.createVertexTemplateEntry('line;direction=south;html=1;', 10, 160, '', 'Vertical Line'),
-	 	this.createVertexTemplateEntry('line;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 160, 10, '', 'Horizontal Backbone', false, null, 'network'),
-	 	this.createVertexTemplateEntry('line;direction=south;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 10, 160, '', 'Vertical Backbone', false, null, 'network'),
+	 	this.createVertexTemplateEntry('line;strokeWidth=2;html=1;', 160, 10, '', 'Horizontal Line'),
+	 	this.createVertexTemplateEntry('line;strokeWidth=2;direction=south;html=1;', 10, 160, '', 'Vertical Line'),
+	 	this.createVertexTemplateEntry('line;strokeWidth=4;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 160, 10, '', 'Horizontal Backbone', false, null, 'network'),
+	 	this.createVertexTemplateEntry('line;strokeWidth=4;direction=south;html=1;perimeter=backbonePerimeter;points=[];outlineConnect=0;', 10, 160, '', 'Vertical Backbone', false, null, 'network'),
 	 	this.createVertexTemplateEntry('shape=curlyBracket;whiteSpace=wrap;html=1;rounded=1;', 20, 120, '', 'Curly Bracket'),
 	 	this.createVertexTemplateEntry('shape=image;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;imageAspect=1;aspect=fixed;image=' + this.gearImage, 52, 61, '', 'Image (Fixed Aspect)', false, null, 'fixed image icon symbol'),
 	 	this.createVertexTemplateEntry('shape=image;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;imageAspect=0;image=' + this.gearImage, 50, 60, '', 'Image (Variable Aspect)', false, null, 'strechted image icon symbol'),

File diff suppressed because it is too large
+ 1 - 1
war/js/reader.min.js


File diff suppressed because it is too large
+ 336 - 327
war/js/viewer.min.js


+ 103 - 0
war/plugins/tags.js

@@ -0,0 +1,103 @@
+/**
+ * Explore plugin.
+ */
+Draw.loadPlugin(function(ui)
+{
+	var div = document.createElement('div');
+	div.style.userSelect = 'none';
+	div.style.background = 'whiteSmoke';
+	div.style.border = '1px solid whiteSmoke';
+	div.style.padding = '10px';
+	div.style.height = '100%';
+	div.style.marginBottom = '10px';
+	div.style.overflow = 'auto';
+
+	var graph = ui.editor.graph;
+
+	var verbSelect = document.createElement('select');
+	verbSelect.style.width = '170px';
+	
+	var showOption = document.createElement('option');
+	mxUtils.write(showOption, 'Show all but...');
+	showOption.setAttribute('value', 'show');
+	showOption.setAttribute('selected', 'selected');
+	verbSelect.appendChild(showOption);
+	
+	var hideOption = document.createElement('option');
+	mxUtils.write(hideOption, 'Hide all but...');
+	hideOption.setAttribute('value', 'hide');
+	verbSelect.appendChild(hideOption);
+	
+	div.appendChild(verbSelect);
+
+	var tagInput = document.createElement('input');
+	tagInput.setAttribute('type', 'text');
+	tagInput.style.marginTop = '4px';
+	tagInput.style.width = '170px';
+	mxUtils.br(div);
+	div.appendChild(tagInput);
+
+	var tagList = [];
+	var graphIsCellVisible = graph.isCellVisible;
+	
+	graph.isCellVisible = function(cell)
+	{
+		if (graphIsCellVisible.apply(this, arguments))
+		{
+			if (!this.model.isVertex(cell) && !this.model.isEdge(cell))
+			{
+				return true;
+			}
+			else if (cell.value != null && typeof(cell.value) == 'object')
+			{
+				var tags = cell.value.getAttribute('tags');
+				
+				if (tags != null)
+				{
+					var tmp = tags.split(' ');
+					
+					for (var i = 0; i < tagList.length; i++)
+					{
+						if (mxUtils.indexOf(tmp, tagList[i]) >= 0)
+						{
+							return verbSelect.value != 'show';
+						}
+					}
+				}
+			}
+			
+			return verbSelect.value == 'show'
+		}
+		
+		return false;
+	};
+
+	mxUtils.br(div);
+
+	var resetBtn = mxUtils.button(mxResources.get('reset'), function()
+	{
+		tagInput.value = '';
+		tagList = [];
+		verbSelect.value = 'show';
+		graph.refresh();	
+	});
+	resetBtn.style.marginTop = '4px';
+	resetBtn.style.padding = '4px';
+	div.appendChild(resetBtn);
+
+	var btn = mxUtils.button(mxResources.get('apply'), function()
+	{
+		tagList = tagInput.value.split(' ');
+		graph.refresh();	
+	});
+	btn.style.marginTop = '4px';
+	btn.style.padding = '4px';
+	div.appendChild(btn);
+	
+	var wnd = new mxWindow('Tags', div, 0, 0, 200, 120, true, true);
+	wnd.destroyOnClose = false;
+	wnd.setMaximizable(false);
+	wnd.setResizable(true);
+	wnd.setClosable(false);
+	wnd.setVisible(true);
+});

+ 3 - 2
war/resources/dia.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_am.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_ar.txt

@@ -15,6 +15,7 @@ advanced=‫متقدم‬
 align=‫صُف‬
 alignment=‫محاذاة‬
 allChangesLost=‫سيتم فقد جميع التغييرات‬
+allPages=All Pages
 android=Android
 angle=‫زاوية‬
 areYouSure=‫هل أنت متأكد؟‬
@@ -523,7 +524,7 @@ scrollbars=‫أشرطة التمرير‬
 search=‫بحث‬
 searchShapes=Search Shapes
 selectAll=‫تحديد الكل‬
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=‫تحديد الحواف‬
 selectFont=‫تحديد الخط‬
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=‫محاذاة إلى الأعلى‬
 topLeft=Top Left
 topRight=Top Right
 transparent=‫شفاف‬
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=‫إعادة المحاولة‬
 tryOpeningViaThisPage=Try opening via this page.
 turn=‫تدوير‬

+ 3 - 2
war/resources/dia_bg.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_bn.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_bs.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Poravnaj
 alignment=Poravnanje
 allChangesLost=Sve promjene će biti izgubljene!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Skrolbarovi
 search=Pretraga
 searchShapes=Search Shapes
 selectAll=Izaberi sve
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Izaberi grane
 selectFont=Izaberi font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Gornje poravnanje
 topLeft=Top Left
 topRight=Top Right
 transparent=Proziran
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_ca.txt

@@ -15,6 +15,7 @@ advanced=Avançat
 align=Alinea
 alignment=Alineació
 allChangesLost=Es perderan tots els canvis!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=N'esteu segurs?
@@ -523,7 +524,7 @@ scrollbars=Barres de desplaçament
 search=Buscador
 searchShapes=Search Shapes
 selectAll=Selecciona-ho tot
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Selecciona les vores
 selectFont=Selecciona una font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Alinea a dalt
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Intenta-ho novament
 tryOpeningViaThisPage=Try opening via this page.
 turn=Gira

+ 3 - 2
war/resources/dia_cs.txt

@@ -15,6 +15,7 @@ advanced=Pokročilé
 align=Zarovnat
 alignment=Zarovnání
 allChangesLost=Všechny změny budou ztraceny!
+allPages=All Pages
 android=Android
 angle=Úhel
 areYouSure=Jste si jisti?
@@ -523,7 +524,7 @@ scrollbars=Rolovací lišty
 search=Hledat
 searchShapes=Search Shapes
 selectAll=Vybrat vše
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Vybrat hrany
 selectFont=Vybrat písmo
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Zarovnání shora
 topLeft=Top Left
 topRight=Top Right
 transparent=Průhledný
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Zkusit znovu
 tryOpeningViaThisPage=Try opening via this page.
 turn=Otočit

+ 3 - 2
war/resources/dia_da.txt

@@ -15,6 +15,7 @@ advanced=Avanceret
 align=Juster
 alignment=Justering
 allChangesLost=Alle ændringer vil gå tabt!
+allPages=All Pages
 android=Android
 angle=Vinkel
 areYouSure=Er du sikker?
@@ -523,7 +524,7 @@ scrollbars=Rullebjælker
 search=Søg
 searchShapes=Search Shapes
 selectAll=Vælg Alt
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Vælg Kanter
 selectFont=Vælg en skrifttype
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top
 topLeft=Top Left
 topRight=Top Right
 transparent=Gennemsigtig
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Forsøg igen
 tryOpeningViaThisPage=Try opening via this page.
 turn=Drej

+ 1 - 0
war/resources/dia_de.txt

@@ -15,6 +15,7 @@ advanced=Erweitert
 align=Ausrichten
 alignment=Ausrichtung
 allChangesLost=Alle Änderungen gehen verloren!
+allPages=Alle Seiten
 android=Android
 angle=Winkel
 areYouSure=Sind Sie sicher?

+ 3 - 2
war/resources/dia_el.txt

@@ -15,6 +15,7 @@ advanced=Προχωρημένο
 align=Στοίχισε
 alignment=Στοίχιση
 allChangesLost=Όλες οι αλλαγές θα χαθούν!
+allPages=All Pages
 android=Android
 angle=Γωνία
 areYouSure=Είστε βέβαιοι;
@@ -523,7 +524,7 @@ scrollbars=Μπάρες κύλισης
 search=Αναζήτηση
 searchShapes=Search Shapes
 selectAll=Επιλογή Όλων
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Επιλογή άκρων
 selectFont=Επιλογή γραμματοσειράς
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Στοίχιση στην Κορυφή
 topLeft=Top Left
 topRight=Top Right
 transparent=Διαφανές
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Δοκιμάστε ξανά
 tryOpeningViaThisPage=Try opening via this page.
 turn=Στροφή

+ 3 - 2
war/resources/dia_es.txt

@@ -15,6 +15,7 @@ advanced=Avanzado
 align=Alinear
 alignment=Alineación
 allChangesLost=¡Se perderán todos los cambios!
+allPages=All Pages
 android=Android
 angle=Ángulo
 areYouSure=¿Estás seguro?
@@ -523,7 +524,7 @@ scrollbars=Barras de desplazamiento
 search=Búsqueda
 searchShapes=Search Shapes
 selectAll=Seleccionar todo
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Seleccionar bordes
 selectFont=Seleccionar una fuente
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Alinear arriba
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparente
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Reintentar
 tryOpeningViaThisPage=Try opening via this page.
 turn=Girar

+ 3 - 2
war/resources/dia_et.txt

@@ -15,6 +15,7 @@ advanced=Detailne
 align=Joonda
 alignment=Joondamine
 allChangesLost=Kõik muudatused kaovad!
+allPages=All Pages
 android=Android
 angle=Nurk
 areYouSure=Oled kindel?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_fa.txt

@@ -15,6 +15,7 @@ advanced=‫پیشرفته‬
 align=‫تراز‬
 alignment=‫هم‌ترازی‬
 allChangesLost=‫تمامی تغییرات از دست خواهند رفت!‬
+allPages=All Pages
 android=‫اندروید‬
 angle=‫زاویه‬
 areYouSure=‫آیا مطمئن هستید؟‬
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=‫دوباره سعی نمایید‬
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 1 - 0
war/resources/dia_fi.txt

@@ -15,6 +15,7 @@ advanced=Edistynyt
 align=Kohdista
 alignment=Kohdistus
 allChangesLost=Kaikki muutokset menetään!
+allPages=All Pages
 android=Android
 angle=Kulma
 areYouSure=Oletko varma?

+ 3 - 2
war/resources/dia_fil.txt

@@ -15,6 +15,7 @@ advanced=Mas una
 align=Ihanay
 alignment=Paghahanay
 allChangesLost=Lahat ng pagbabago ay mawawala
+allPages=All Pages
 android=Android
 angle=Anggulo
 areYouSure=Sigurado ka ba?
@@ -523,7 +524,7 @@ scrollbars=Iskrolbars
 search=Hanap
 searchShapes=Search Shapes
 selectAll=Piliin lahat
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Piliin ang mga kanto
 selectFont=Pumili ng pont
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Ihanay ang taas
 topLeft=Top Left
 topRight=Top Right
 transparent=Kita ng tagusan
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Subukan muli
 tryOpeningViaThisPage=Try opening via this page.
 turn=Iikot

+ 2 - 1
war/resources/dia_fr.txt

@@ -15,6 +15,7 @@ advanced=Avancé
 align=Aligner
 alignment=Alignement
 allChangesLost=Toutes les modifications seront perdues!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Êtes-vous sûr?
@@ -523,7 +524,7 @@ scrollbars=Barres de défilement
 search=Chercher
 searchShapes=Search Shapes
 selectAll=Tout sélectionner
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Selectionner les bordures
 selectFont=Sélectionner une police
 selectNone=Tout désélectionner

+ 3 - 2
war/resources/dia_gu.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_he.txt

@@ -15,6 +15,7 @@ advanced=‫מתקדם‬
 align=‫ישר‬
 alignment=‫יישור ‬
 allChangesLost=‫כל השינויים יאבדו!‬
+allPages=All Pages
 android=Android
 angle=‫זווית‬
 areYouSure=‫האם אתה בטוח?‬
@@ -523,7 +524,7 @@ scrollbars=‫סרגלי גלילה‬
 search=‫חפש‬
 searchShapes=Search Shapes
 selectAll=‫בחר הכל‬
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=‫בחר קצוות‬
 selectFont=‫בחר גופן‬
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=‫יישור למעלה‬
 topLeft=Top Left
 topRight=Top Right
 transparent=‫שקוף‬
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=‫נסה שוב‬
 tryOpeningViaThisPage=Try opening via this page.
 turn=‫הפוך‬

+ 3 - 2
war/resources/dia_hi.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_hr.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_hu.txt

@@ -15,6 +15,7 @@ advanced=Haladó
 align=Igazít
 alignment=Igazítás
 allChangesLost=Elvesz minden változtatás!
+allPages=All Pages
 android=Android
 angle=Szög
 areYouSure=Biztos benne?
@@ -523,7 +524,7 @@ scrollbars=Gördítősávok
 search=Keresés
 searchShapes=Search Shapes
 selectAll=Mindent kijelöl
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Éleket kijelöl
 selectFont=Betűkészlet választás
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Felső igazítás
 topLeft=Top Left
 topRight=Top Right
 transparent=Átlátszó
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Újra próbál
 tryOpeningViaThisPage=Try opening via this page.
 turn=Fordít

+ 1 - 0
war/resources/dia_i18n.txt

@@ -15,6 +15,7 @@ advanced=advanced
 align=align
 alignment=alignment
 allChangesLost=allChangesLost
+allPages=allPages
 android=android
 angle=angle
 areYouSure=areYouSure

+ 3 - 2
war/resources/dia_id.txt

@@ -15,6 +15,7 @@ advanced=Tingkat lanjutan
 align=Rata
 alignment=Perataan
 allChangesLost=Semua perubahan akan hilang!
+allPages=All Pages
 android=Android
 angle=Sudut
 areYouSure=Apakah kamu yakin?
@@ -523,7 +524,7 @@ scrollbars=Baris Gulung
 search=Cari
 searchShapes=Search Shapes
 selectAll=Pilih Semua
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Pilih Tepi
 selectFont=Pilih font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Rata Atas
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparan
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Coba lagi
 tryOpeningViaThisPage=Try opening via this page.
 turn=Mengubah

+ 3 - 2
war/resources/dia_it.txt

@@ -15,6 +15,7 @@ advanced=Avanzate
 align=Allinea
 alignment=Allineamento
 allChangesLost=Tutte le modifiche saranno perse!
+allPages=All Pages
 android=Android
 angle=Angolo
 areYouSure=Sei sicuro?
@@ -523,7 +524,7 @@ scrollbars=Barre di scorrimento
 search=Cerca
 searchShapes=Search Shapes
 selectAll=Seleziona tutto
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Seleziona bordi
 selectFont=Scegli un font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Allinea in alto
 topLeft=Top Left
 topRight=Top Right
 transparent=Trasparente
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Prova di nuovo
 tryOpeningViaThisPage=Try opening via this page.
 turn=Ruota

+ 3 - 2
war/resources/dia_ja.txt

@@ -15,6 +15,7 @@ advanced=アドバンスド
 align=整列
 alignment=文字配置
 allChangesLost=すべての変更が失われます!
+allPages=All Pages
 android=アンドロイド
 angle=角度
 areYouSure=ほんとにいいですか?
@@ -523,7 +524,7 @@ scrollbars=スクロールバー
 search=検索
 searchShapes=Search Shapes
 selectAll=全ての選択
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=エッジを選択
 selectFont=フォントの選択
 selectNone=選択解除
@@ -582,7 +583,7 @@ topAlign=上端揃え
 topLeft=上端左
 topRight=上端右
 transparent=透明
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=もう一度お試しください
 tryOpeningViaThisPage=Try opening via this page.
 turn=回転

+ 3 - 2
war/resources/dia_kn.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_ko.txt

@@ -15,6 +15,7 @@ advanced=고급
 align=정렬
 alignment=정렬
 allChangesLost=모든 변경내용이 손실됩니다!
+allPages=All Pages
 android=Android
 angle=각
 areYouSure=계속 진행하시겠습니까?
@@ -523,7 +524,7 @@ scrollbars=스크롤바
 search=검색
 searchShapes=Search Shapes
 selectAll=모두 선택
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=선 선택
 selectFont=글꼴 선택
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=위로 정렬
 topLeft=Top Left
 topRight=Top Right
 transparent=투명
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=다시 시도하십시오
 tryOpeningViaThisPage=Try opening via this page.
 turn=회전

+ 3 - 2
war/resources/dia_lt.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_lv.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_ml.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_mr.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_ms.txt

@@ -15,6 +15,7 @@ advanced=Lanjutan
 align=Menjajar
 alignment=Penjajaran
 allChangesLost=Semua perubahan akan hilang!
+allPages=All Pages
 android=Android
 angle=Sudut
 areYouSure=Pastikah anda?
@@ -523,7 +524,7 @@ scrollbars=Baris gulung
 search=Cari
 searchShapes=Search Shapes
 selectAll=Pilih semua
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Pilih tepi
 selectFont=Pilih satu font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Jajaran atas
 topLeft=Top Left
 topRight=Top Right
 transparent=Lutsinar
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Cuba lagi
 tryOpeningViaThisPage=Try opening via this page.
 turn=Pusing

+ 3 - 2
war/resources/dia_nl.txt

@@ -15,6 +15,7 @@ advanced=Geavanceerd
 align=In lijn brengen
 alignment=Uitlijnen
 allChangesLost=Alle veranderingen zullen verloren gaan!
+allPages=All Pages
 android=Android
 angle=Hoek
 areYouSure=Zeker weten?
@@ -523,7 +524,7 @@ scrollbars=Schuifbalken
 search=Zoeken
 searchShapes=Search Shapes
 selectAll=Alles Selecteren
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Selecteer Randen
 selectFont=Selecteer Lettertype
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Boven uitlijnen
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparant
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Opnieuw proberen
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_no.txt

@@ -15,6 +15,7 @@ advanced=Avansert
 align=Juster
 alignment=Justering
 allChangesLost=Alle endringer vil gå tapt
+allPages=All Pages
 android=Android
 angle=Vinkel
 areYouSure=Er du sikker?
@@ -523,7 +524,7 @@ scrollbars=Rullefelt
 search=Søk
 searchShapes=Search Shapes
 selectAll=Velg alt
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Velg kanter
 selectFont=Velg en skrifttype
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Toppjustering
 topLeft=Top Left
 topRight=Top Right
 transparent=Gjennomsiktig
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Prøv på nytt
 tryOpeningViaThisPage=Try opening via this page.
 turn=Vend

+ 3 - 2
war/resources/dia_pl.txt

@@ -15,6 +15,7 @@ advanced=Zaawansowane
 align=Wyrównaj
 alignment=Wyrównywanie
 allChangesLost=Wszystkie zmiany zostaną utracone!
+allPages=All Pages
 android=Android
 angle=Kąt
 areYouSure=Czy jesteś pewny?
@@ -523,7 +524,7 @@ scrollbars=Paski przewijania
 search=Szukaj
 searchShapes=Szukaj kształtów
 selectAll=Zaznacz wszystko
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Zaznacz brzegi
 selectFont=Wybierz czcionkę
 selectNone=Odznacz wszystko
@@ -582,7 +583,7 @@ topAlign=Wyrównaj do góry
 topLeft=Lewy górny
 topRight=Prawy górny
 transparent=Przezroczysty
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Spróbuj ponownie
 tryOpeningViaThisPage=Spróbuj otworzyć poprzez tę stronę.
 turn=Obróć

+ 3 - 2
war/resources/dia_pt-br.txt

@@ -15,6 +15,7 @@ advanced=Avançado
 align=Alinhar 
 alignment=Alinhamento
 allChangesLost=Todas as modificações serão perdidas! 
+allPages=All Pages
 android=Android
 angle=Ângulo
 areYouSure=Tem certeza?
@@ -523,7 +524,7 @@ scrollbars=Barras de rolagem
 search=Buscar
 searchShapes=Search Shapes
 selectAll=Selecionar tudo 
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Selecione bordas 
 selectFont=Selecione uma fonte 
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Alinhar ao topo
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparente
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Tentar novamente
 tryOpeningViaThisPage=Try opening via this page.
 turn=Virar

+ 3 - 2
war/resources/dia_pt.txt

@@ -15,6 +15,7 @@ advanced=Avançado
 align=Alinhar 
 alignment=Alinhamento
 allChangesLost=Todas as alterações serão perdidas! 
+allPages=All Pages
 android=Android
 angle=Ângulo
 areYouSure=Tem a certeza?
@@ -523,7 +524,7 @@ scrollbars=Barras de rolagem
 search=Pesquisar
 searchShapes=Search Shapes
 selectAll=Selecionar tudo 
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Selecionar margens
 selectFont=Selecionar uma fonte 
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Alinhar ao topo
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparente
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Tentar novamente
 tryOpeningViaThisPage=Try opening via this page.
 turn=Virar

+ 3 - 2
war/resources/dia_ro.txt

@@ -15,6 +15,7 @@ advanced=Avansat
 align=Aliniază
 alignment=Aliniere
 allChangesLost=Toate modificările vor fi pierdute!
+allPages=All Pages
 android=Android
 angle=Unghi
 areYouSure=Eşti sigur?
@@ -523,7 +524,7 @@ scrollbars=Bare de rulare
 search=Căutare
 searchShapes=Search Shapes
 selectAll=Selectează totul
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Selectează marginile
 selectFont=Selectează fontul
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Aliniere lsus
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Încearcă din nou
 tryOpeningViaThisPage=Try opening via this page.
 turn=Încearcă

+ 1 - 0
war/resources/dia_ru.txt

@@ -15,6 +15,7 @@ advanced=Расширенные
 align=Выровнять
 alignment=Выравнивание
 allChangesLost=Все изменения будут потеряны!
+allPages=All Pages
 android=Android
 angle=Угол
 areYouSure=Вы уверены?

+ 3 - 2
war/resources/dia_sk.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_sl.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_sr.txt

@@ -15,6 +15,7 @@ advanced=Napredan
 align=Poravnaj
 alignment=Poravnanje
 allChangesLost=Sve promene će biti izgubljene!
+allPages=All Pages
 android=Android
 angle=Ugao
 areYouSure=Da li ste sigurni?
@@ -523,7 +524,7 @@ scrollbars=Skrol trake
 search=Pretraga
 searchShapes=Search Shapes
 selectAll=Izaberi sve
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Izaberi grane
 selectFont=Izaberi font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Gornje poravnanje
 topLeft=Top Left
 topRight=Top Right
 transparent=Proziran
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Pokušajte ponovo
 tryOpeningViaThisPage=Try opening via this page.
 turn=Okreni

+ 3 - 2
war/resources/dia_sv.txt

@@ -15,6 +15,7 @@ advanced=Avancerat
 align=Justera
 alignment=Justering
 allChangesLost=Alla ändringar kommer gå förlorade!
+allPages=All Pages
 android=Android
 angle=Vinkel
 areYouSure=Är du säker?
@@ -523,7 +524,7 @@ scrollbars=Rullningslister
 search=Sök
 searchShapes=Search Shapes
 selectAll=Markera allt
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Markera kanter
 selectFont=Välj typsnitt
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Justera upptill
 topLeft=Top Left
 topRight=Top Right
 transparent=Genomskinlig
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Försök igen
 tryOpeningViaThisPage=Try opening via this page.
 turn=Vänd

+ 3 - 2
war/resources/dia_sw.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_ta.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_te.txt

@@ -15,6 +15,7 @@ advanced=Advanced
 align=Align
 alignment=Alignment
 allChangesLost=All changes will be lost!
+allPages=All Pages
 android=Android
 angle=Angle
 areYouSure=Are you sure?
@@ -523,7 +524,7 @@ scrollbars=Scrollbars
 search=Search
 searchShapes=Search Shapes
 selectAll=Select All
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Select Edges
 selectFont=Select Font
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Top Align
 topLeft=Top Left
 topRight=Top Right
 transparent=Transparent
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Try again
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_th.txt

@@ -15,6 +15,7 @@ advanced=การตั้งค่าขั้นสูง
 align=จัดเรียงแนวเดียวกัน
 alignment=การจัดเรียงแนวเดียวกัน
 allChangesLost=การเปลี่ยนแปลงทั้งหมดจะสูญหาย
+allPages=All Pages
 android=Android
 angle=มุม
 areYouSure=คุณแน่ใจหรือไม่
@@ -523,7 +524,7 @@ scrollbars=แถบเลื่อน
 search=ค้นหา
 searchShapes=Search Shapes
 selectAll=เลือกทั้งหมด
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=เลือกขอบ
 selectFont=เลือกตัวอักษร
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=จัดเรียงแนวบนสุด
 topLeft=Top Left
 topRight=Top Right
 transparent=ความโปร่งแสง
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=ลองอีกครั้ง
 tryOpeningViaThisPage=Try opening via this page.
 turn=หมุน

+ 3 - 2
war/resources/dia_tr.txt

@@ -15,6 +15,7 @@ advanced=Gelişmiş
 align=Hizala
 alignment=Hizalama
 allChangesLost=Tüm değişiklikler kaybolacaktır!
+allPages=All Pages
 android=Android
 angle=Açı
 areYouSure=Emin misiniz?
@@ -523,7 +524,7 @@ scrollbars=Kaydırma çubuğu
 search=Ara
 searchShapes=Search Shapes
 selectAll=Tümünü seç
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Kenarları seç
 selectFont=Bir yazı tipi seç
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Üst hizala
 topLeft=Top Left
 topRight=Top Right
 transparent=Saydam
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Tekrar deneyin
 tryOpeningViaThisPage=Try opening via this page.
 turn=Döndür

+ 3 - 2
war/resources/dia_uk.txt

@@ -15,6 +15,7 @@ advanced=Розширені
 align=Вирівняти
 alignment=Вирівнювання
 allChangesLost=Всі зміни будуть втрачені!
+allPages=All Pages
 android=Android
 angle=Кут
 areYouSure=Ви впевнені?
@@ -523,7 +524,7 @@ scrollbars=Смуга прокрутки
 search=Пошук
 searchShapes=Search Shapes
 selectAll=Вибрати все
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Вибрати краї
 selectFont=Вибрати шрифт
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=По верхньому краю
 topLeft=Top Left
 topRight=Top Right
 transparent=Прозорий
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Спробуйте ще раз
 tryOpeningViaThisPage=Try opening via this page.
 turn=Повернути

+ 3 - 2
war/resources/dia_vi.txt

@@ -15,6 +15,7 @@ advanced=Nâng cao
 align=Căn lề
 alignment=Sự căn lề
 allChangesLost=Tất cả thay đổi sẽ mất!
+allPages=All Pages
 android=Android
 angle=Góc
 areYouSure=Bạn chắc chắn?
@@ -523,7 +524,7 @@ scrollbars=Thanh cuộn
 search=Tìm kiếm
 searchShapes=Search Shapes
 selectAll=Chọn tất cả
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=Chọn cạnh
 selectFont=Chọn phông
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=Căn lề trên cùng
 topLeft=Top Left
 topRight=Top Right
 transparent=Độ trong suốt
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=Thử lại
 tryOpeningViaThisPage=Try opening via this page.
 turn=Quay

+ 3 - 2
war/resources/dia_zh-tw.txt

@@ -15,6 +15,7 @@ advanced=進階
 align=對齊
 alignment=對齊
 allChangesLost=所有的修改將不會被儲存!
+allPages=All Pages
 android=Android
 angle=角度
 areYouSure=是否確定?
@@ -523,7 +524,7 @@ scrollbars=頁面捲動
 search=搜尋
 searchShapes=搜尋圖形
 selectAll=全選
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=選擇邊
 selectFont=選擇字型
 selectNone=全不選
@@ -582,7 +583,7 @@ topAlign=向上對齊
 topLeft=左上
 topRight=右上
 transparent=透明
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=再試一次
 tryOpeningViaThisPage=Try opening via this page.
 turn=Turn

+ 3 - 2
war/resources/dia_zh.txt

@@ -15,6 +15,7 @@ advanced=高级
 align=对齐
 alignment=对齐
 allChangesLost=所有修改都不会被保存!
+allPages=All Pages
 android=Android
 angle=角度
 areYouSure=你确定吗?
@@ -523,7 +524,7 @@ scrollbars=滚动条
 search=搜索
 searchShapes=Search Shapes
 selectAll=选择全部
-selectionOnly=Selection only
+selectionOnly=Selection Only
 selectEdges=选择连接
 selectFont=选择一种字体
 selectNone=Select None
@@ -582,7 +583,7 @@ topAlign=上对齐
 topLeft=Top Left
 topRight=Top Right
 transparent=透明
-transparentBackground=Transparent background
+transparentBackground=Transparent Background
 tryAgain=重试
 tryOpeningViaThisPage=Try opening via this page.
 turn=改变方向