diff options
34 files changed, 1197 insertions, 1385 deletions
@@ -25,13 +25,13 @@ If you're already familiar with using Git, GitHub, you can clone master branch o | |||
25 | - Browse to HKEY_CURRENT_USER/Software/Motorola Mobility/Ninja Local Cloud/Options. | 25 | - Browse to HKEY_CURRENT_USER/Software/Motorola Mobility/Ninja Local Cloud/Options. |
26 | - Right click and select New > String value. | 26 | - Right click and select New > String value. |
27 | - Type 'Local Ninja Origin' no quotes. | 27 | - Type 'Local Ninja Origin' no quotes. |
28 | - Double click on Local Ninja Origin and paste in the Ninja app ID copied in step 6 from the Chrome extensions page in the Value data field. | 28 | - Double click on Local Ninja Origin and paste in the Ninja app ID copied in step 6 from the Chrome extensions page in the Value data field. To have multiple builds of Ninja installed but not running simultaneously as this is not supported, multiple app IDs can be added separated by comma and no space. |
29 | - Close Registry Editor. | 29 | - Close Registry Editor. |
30 | 8. On Mac: | 30 | 8. On Mac: |
31 | - Launch Finder. | 31 | - Launch Finder. |
32 | - Double click on /Users/\<user\>/Library/Preferences/com.MotorolaMobility.Ninja-Local-Cloud.plist. Note: on Lion (10.7), user library folder is hidden by default. To browse to it, in Finder choose Go > Go to Folder and type ~/Library, or select Go menu with Alt (Option) key down to see Library listed in Go menu or make the user library folder permanently visible by running the following command in Terminal: chflags nohidden ~/Library | 32 | - Double click on /Users/\<user\>/Library/Preferences/com.MotorolaMobility.Ninja-Local-Cloud.plist. Note: on Lion (10.7), user library folder is hidden by default. To browse to it, in Finder choose Go > Go to Folder and type ~/Library, or select Go menu with Alt (Option) key down to see Library listed in Go menu or make the user library folder permanently visible by running the following command in Terminal: chflags nohidden ~/Library |
33 | - Click on Add Child Type 'Local Ninja Origin' no quotes. | 33 | - Click on Add Child Type 'Local Ninja Origin' no quotes. |
34 | - For value, paste in the Ninja app ID copied in step 6 from the Chrome extensions page. | 34 | - For value, paste in the Ninja app ID copied in step 6 from the Chrome extensions page. To have multiple builds of Ninja installed but not running simultaneously as this is not supported, multiple app IDs can be added separated by comma and no space. |
35 | - Save (File > Save or Cmd S). | 35 | - Save (File > Save or Cmd S). |
36 | - Close Property List Editor. | 36 | - Close Property List Editor. |
37 | 9. Quit Ninja Local Cloud | 37 | 9. Quit Ninja Local Cloud |
diff --git a/css/ninja.css b/css/ninja.css index 288156b6..bc82f50d 100755 --- a/css/ninja.css +++ b/css/ninja.css | |||
@@ -98,7 +98,7 @@ body { position: absolute; margin: 0px; width: 100%; height: 100%; background-co | |||
98 | 98 | ||
99 | #appWorkspace { display: -webkit-box; -webkit-box-orient: horizontal; -webkit-box-pack: center; -webkit-box-align: center; -webkit-box-sizing: stretch; position: relative; padding: 2px 0px; border: 1px solid #333; overflow: hidden; } | 99 | #appWorkspace { display: -webkit-box; -webkit-box-orient: horizontal; -webkit-box-pack: center; -webkit-box-align: center; -webkit-box-sizing: stretch; position: relative; padding: 2px 0px; border: 1px solid #333; overflow: hidden; } |
100 | 100 | ||
101 | #topMenu { background-color: #474747; position: absolute; height: 28px; width: 100%; top: 0px; left: 0px; z-index: 6995; } | 101 | #topMenu { background-color: #474747; position: absolute; height: 26px; width: 100%; top: 0px; left: 0px; z-index: 6995; } |
102 | 102 | ||
103 | #topPanelContainer, #leftPanelContainer, #rightPanelContainer, .timelinePanel { background-color: #282828; } | 103 | #topPanelContainer, #leftPanelContainer, #rightPanelContainer, .timelinePanel { background-color: #282828; } |
104 | 104 | ||
diff --git a/js/clipboard/external-apps-clipboard-agent.js b/js/clipboard/external-apps-clipboard-agent.js index 6b9d8090..65410543 100644 --- a/js/clipboard/external-apps-clipboard-agent.js +++ b/js/clipboard/external-apps-clipboard-agent.js | |||
@@ -38,40 +38,52 @@ var Montage = require("montage/core/core").Montage, | |||
38 | 38 | ||
39 | var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.create(Component, { | 39 | var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.create(Component, { |
40 | 40 | ||
41 | //count how many times pasted | ||
42 | //used to move multiple pastes of same copy | ||
43 | pasteCounter:{ | ||
44 | value: 0 | ||
45 | }, | ||
46 | |||
41 | paste:{ | 47 | paste:{ |
42 | value: function(clipboardEvent){ | 48 | value: function(clipboardEvent){ |
43 | var clipboardData = clipboardEvent.clipboardData, | 49 | var clipboardData = clipboardEvent.clipboardData, |
44 | htmlData = clipboardData.getData("text/html"), | 50 | htmlData = clipboardData.getData("text/html"), |
45 | textData = clipboardData.getData("text/plain"), | 51 | textData = clipboardData.getData("text/plain"), |
46 | i=0, | 52 | i=0, |
47 | imageMime, imageData, imageElement; | 53 | imageMime, imageData, imageElement, isImage = false, imageItem; |
48 | 54 | ||
49 | //handle image blobs | 55 | if(clipboardData.items && (clipboardData.items.length > 0)){//handle image blobs |
50 | if(clipboardData.items && (clipboardData.items.length > 0)){ | ||
51 | for(i=0; i < clipboardData.items.length; i++ ){ | 56 | for(i=0; i < clipboardData.items.length; i++ ){ |
52 | if((clipboardData.items[i].kind === "file") && (clipboardData.items[i].type.indexOf("image") === 0)){//example type -> "image/png" | 57 | if((clipboardData.items[i].kind === "file") && (clipboardData.items[i].type.indexOf("image") === 0)){//example type -> "image/png" |
53 | imageMime = clipboardData.items[i].type; | 58 | isImage = true; |
54 | imageData = clipboardData.items[i].getAsFile(); | 59 | if(clipboardData.items[i].type === "image/png"){ |
55 | try{ | 60 | imageItem = clipboardData.items[i];//grab the png image from clipboard |
56 | imageElement = this.pasteImageBinary(imageData); | 61 | } |
57 | }catch(e){ | 62 | else if(i===0){ |
58 | console.log(""+e.stack); | 63 | imageItem = clipboardData.items[i]; |
59 | } | 64 | } |
60 | this.application.ninja.selectionController.selectElements(imageElement); | ||
61 | this.application.ninja.currentDocument.model.needsSave = true; | ||
62 | |||
63 | } | 65 | } |
64 | } | 66 | } |
65 | } | 67 | } |
66 | 68 | ||
67 | try{ | 69 | if(isImage && imageItem){ |
68 | if(!!htmlData || !!textData){ | 70 | imageMime = imageItem.type; |
69 | this.pasteHtml(htmlData, textData); | 71 | imageData = imageItem.getAsFile(); |
72 | try{ | ||
73 | imageElement = this.pasteImageBinary(imageData); | ||
74 | }catch(e){ | ||
75 | console.log(""+e.stack); | ||
70 | } | 76 | } |
71 | }catch(e){ | 77 | this.application.ninja.currentDocument.model.needsSave = true; |
72 | console.log(""+e.stack); | ||
73 | } | 78 | } |
74 | 79 | ||
80 | if(!isImage && (!!htmlData || !!textData)){ | ||
81 | try{ | ||
82 | this.doPasteHtml(htmlData, textData); | ||
83 | }catch(e){ | ||
84 | console.log(""+e.stack); | ||
85 | } | ||
86 | } | ||
75 | } | 87 | } |
76 | }, | 88 | }, |
77 | 89 | ||
@@ -108,16 +120,16 @@ var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.cr | |||
108 | //Adding element once it is loaded | 120 | //Adding element once it is loaded |
109 | element.onload = function () { | 121 | element.onload = function () { |
110 | element.onload = null; | 122 | element.onload = null; |
111 | self.application.ninja.elementMediator.addElements(element, rules, true); | 123 | self.application.ninja.elementMediator.addElements(element, rules, true/*notify*/, false /*callAddDelegate*/); |
112 | }; | 124 | }; |
113 | //Setting rules of element | 125 | //Setting rules of element |
114 | rules = { | 126 | rules = { |
115 | 'position': 'absolute', | 127 | 'position': 'absolute', |
116 | 'top' : '100px', | 128 | 'top' : '0px', |
117 | 'left' : '100px' | 129 | 'left' : '0px' |
118 | }; | 130 | }; |
119 | // | 131 | // |
120 | self.application.ninja.elementMediator.addElements(element, rules, false); | 132 | self.application.ninja.elementMediator.addElements(element, rules, false/*notify*/, false /*callAddDelegate*/); |
121 | } else { | 133 | } else { |
122 | //HANDLE ERROR ON SAVING FILE TO BE ADDED AS ELEMENT | 134 | //HANDLE ERROR ON SAVING FILE TO BE ADDED AS ELEMENT |
123 | } | 135 | } |
@@ -126,119 +138,60 @@ var ExternalAppsClipboardAgent = exports.ExternalAppsClipboardAgent = Montage.cr | |||
126 | } | 138 | } |
127 | }, | 139 | }, |
128 | 140 | ||
129 | //paste from external applicaitons | 141 | doPasteHtml:{ |
130 | pasteHtml:{ | ||
131 | value: function(htmlData, textData){ | 142 | value: function(htmlData, textData){ |
132 | var i=0, j=0, | 143 | var divWrapper = null, data = null, theclass, height, width; |
133 | pasteDataObject=null, | ||
134 | pastedElements = [], | ||
135 | node = null, nodeList = null, | ||
136 | styles = null, | ||
137 | divWrapper = null, | ||
138 | spanWrapper = null, | ||
139 | metaEl = null, | ||
140 | self = this; | ||
141 | 144 | ||
142 | if(htmlData){ | 145 | htmlData = this.sanitize(htmlData); |
146 | textData = this.sanitize(textData); | ||
143 | 147 |