| <ul class="dropdown-menu"> | <ul class="dropdown-menu"> | ||||
| <li><a id="btn-sidebar" tabindex="-1" href="#"><i class="icon-ok pull-right"></i><i class="icon-list-alt"></i> Sidebar</a></li> | <li><a id="btn-sidebar" tabindex="-1" href="#"><i class="icon-ok pull-right"></i><i class="icon-list-alt"></i> Sidebar</a></li> | ||||
| <li class="divider"></li> | <li class="divider"></li> | ||||
| <li><a id="btn-node-status" tabindex="-1" href="#"><i class="icon-ok pull-right"></i><i class="icon-info-sign"></i> Node Status</a></li> | |||||
| <li class="divider"></li> | |||||
| <li class="dropdown-submenu pull-left"><a tabindex="-1" href="#"><i class="icon-edit"></i> Import from...</a> | |||||
| <!-- <li><a id="btn-node-status" tabindex="-1" href="#"><i class="icon-ok pull-right"></i><i class="icon-info-sign"></i> Node Status</a></li> | |||||
| <li class="divider"></li> --> | |||||
| <!--<li class="dropdown-submenu pull-left"><a tabindex="-1" href="#"><i class="icon-edit"></i> Import from...</a> | |||||
| <ul class="dropdown-menu"> | <ul class="dropdown-menu"> | ||||
| <li><a id="btn-import" tabindex="-1" href="#"><i class="icon-edit"></i> Clipboard...</a></li> | <li><a id="btn-import" tabindex="-1" href="#"><i class="icon-edit"></i> Clipboard...</a></li> | ||||
| <li id="flow-menu-parent" class="dropdown-submenu pull-left"> | <li id="flow-menu-parent" class="dropdown-submenu pull-left"> | ||||
| <li id="li-menu-export-library" class="disabled"><a id="btn-export-library" tabindex="-1" href="#"><i class="icon-book"></i> Library...</a></li> | <li id="li-menu-export-library" class="disabled"><a id="btn-export-library" tabindex="-1" href="#"><i class="icon-book"></i> Library...</a></li> | ||||
| </ul> | </ul> | ||||
| </li> | </li> | ||||
| <li class="divider"></li> | |||||
| <li><a id="btn-config-nodes" tabindex="-1" href="#"><i class="icon-th-list"></i> Configuration nodes...</a></li> | |||||
| <li class="divider"></li> | |||||
| <li class="dropdown-submenu pull-left"><a tabindex="-1" href="#"><i class="icon-th-large"></i> Workspaces</a> | |||||
| <li class="divider"></li>--> | |||||
| <!-- <li><a id="btn-config-nodes" tabindex="-1" href="#"><i class="icon-th-list"></i> Configuration nodes...</a></li> | |||||
| <li class="divider"></li>--> | |||||
| <!--<li class="dropdown-submenu pull-left"><a tabindex="-1" href="#"><i class="icon-th-large"></i> Workspaces</a> | |||||
| <ul id="workspace-menu-list" class="dropdown-menu"> | <ul id="workspace-menu-list" class="dropdown-menu"> | ||||
| <li><a id="btn-workspace-add" tabindex="-1" href="#"><i class="icon-plus"></i> Add</a></li> | <li><a id="btn-workspace-add" tabindex="-1" href="#"><i class="icon-plus"></i> Add</a></li> | ||||
| <li><a id="btn-workspace-edit" tabindex="-1" href="#"><i class="icon-edit"></i> Rename</a></li> | <li><a id="btn-workspace-edit" tabindex="-1" href="#"><i class="icon-edit"></i> Rename</a></li> | ||||
| <li class="divider"></li> | <li class="divider"></li> | ||||
| </ul> | </ul> | ||||
| </li> | </li> | ||||
| <li class="divider"></li> | |||||
| <li class="divider"></li>--> | |||||
| <li><a id="btn-keyboard-shortcuts" tabindex="-1" href="#"><i class="icon-question-sign"></i> Keyboard Shortcuts</a></li> | <li><a id="btn-keyboard-shortcuts" tabindex="-1" href="#"><i class="icon-question-sign"></i> Keyboard Shortcuts</a></li> | ||||
| <li><a id="btn-help" tabindex="-1" href="http://node-red.github.io/docs" target="_blank"><i class="icon-question-sign"></i> Help...</a></li> | <li><a id="btn-help" tabindex="-1" href="http://node-red.github.io/docs" target="_blank"><i class="icon-question-sign"></i> Help...</a></li> | ||||
| </ul> | </ul> | ||||
| </div> | </div> | ||||
| <div class="btn-group pull-right"> | |||||
| <a id="btn-deploy" class="btn action-deploy disabled" href="#"><i id="btn-icn-deploy" class="icon-upload"></i> Deploy</a> | |||||
| <div class="btn-group pull-left"> | |||||
| <a id="btn-deploy" class="btn action-deploy disabled" href="#"><i id="btn-icn-deploy" class="icon-upload"></i>Export</a> | |||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| <div id="workspace"> | <div id="workspace"> | ||||
| <ul id="workspace-tabs"></ul> | <ul id="workspace-tabs"></ul> | ||||
| <div id="workspace-add-tab"><a id="btn-workspace-add-tab" href="#"><i class="icon-plus"></i></a></div> | |||||
| <!--<div id="workspace-add-tab"><a id="btn-workspace-add-tab" href="#"><i class="icon-plus"></i></a></div>--> | |||||
| <div id="chart"></div> | <div id="chart"></div> | ||||
| <div id="workspace-toolbar"> | <div id="workspace-toolbar"> | ||||
| <div class="btn-group"> | <div class="btn-group"> |
| // sort by horizontal position, plus slight vertical position, | // sort by horizontal position, plus slight vertical position, | ||||
| // for well defined update order that follows signal flow | // for well defined update order that follows signal flow | ||||
| nns.sort(function(a,b){ return (a.x + a.y/250) - (b.x + b.y/250); }); | nns.sort(function(a,b){ return (a.x + a.y/250) - (b.x + b.y/250); }); | ||||
| console.log(JSON.stringify(nns)); | |||||
| //console.log(JSON.stringify(nns)); | |||||
| var cpp = ""; | |||||
| var cpp = "// GUItool: begin automatically generated code\n"; | |||||
| // generate code for all audio processing nodes | // generate code for all audio processing nodes | ||||
| for (var i=0; i<nns.length; i++) { | for (var i=0; i<nns.length; i++) { | ||||
| var n = nns[i]; | var n = nns[i]; | ||||
| for (var j=n.id.length; j<14; j++) cpp += " "; | for (var j=n.id.length; j<14; j++) cpp += " "; | ||||
| cpp += "//xy=" + n.x + "," + n.y + "\n"; | cpp += "//xy=" + n.x + "," + n.y + "\n"; | ||||
| } | } | ||||
| //console.log("save: node " + n.id + " " + node.outputs); | |||||
| } | } | ||||
| // generate code for all connections (aka wires or links) | // generate code for all connections (aka wires or links) | ||||
| var cordcount = 1; | var cordcount = 1; | ||||
| if (wire) { | if (wire) { | ||||
| var parts = wire.split(":"); | var parts = wire.split(":"); | ||||
| if (parts.length == 2) { | if (parts.length == 2) { | ||||
| //console.log("save: wire " + n.id + ":" + j + " " + parts[0] + "-" + parts[1]); | |||||
| cpp += "AudioConnection patchCord" + cordcount + "("; | cpp += "AudioConnection patchCord" + cordcount + "("; | ||||
| var src = RED.nodes.node(n.id); | var src = RED.nodes.node(n.id); | ||||
| var dst = RED.nodes.node(parts[0]); | var dst = RED.nodes.node(parts[0]); | ||||
| //console.log("save: src.outputs=" + src.outputs + ", dst._def.inputs=" + dst._def.inputs); | |||||
| if (j == 0 && parts[1] == 0 && src && src.outputs == 1 && dst && dst._def.inputs == 1) { | if (j == 0 && parts[1] == 0 && src && src.outputs == 1 && dst && dst._def.inputs == 1) { | ||||
| cpp += n.id + ", " + parts[0]; | cpp += n.id + ", " + parts[0]; | ||||
| } else { | } else { | ||||
| cpp += "//xy=" + n.x + "," + n.y + "\n"; | cpp += "//xy=" + n.x + "," + n.y + "\n"; | ||||
| } | } | ||||
| } | } | ||||
| cpp += "// GUItool: end automatically generated code\n"; | |||||
| //console.log(cpp); | |||||
| console.log(cpp); | |||||
| RED.view.state(RED.state.EXPORT); | |||||
| //mouse_mode = RED.state.EXPORT; | |||||
| $("#dialog-form").html($("script[data-template-name='export-clipboard-dialog']").html()); | |||||
| $("#node-input-export").val(cpp); | |||||
| $("#node-input-export").focus(function() { | |||||
| var textarea = $(this); | |||||
| textarea.select(); | |||||
| textarea.mouseup(function() { | |||||
| textarea.unbind("mouseup"); | |||||
| return false; | |||||
| }); | |||||
| }); | |||||
| $( "#dialog" ).dialog("option","title","Export nodes to clipboard").dialog( "open" ); | |||||
| $("#node-input-export").focus(); | |||||
| /* | |||||
| $("#btn-icn-deploy").removeClass('icon-upload'); | $("#btn-icn-deploy").removeClass('icon-upload'); | ||||
| $("#btn-icn-deploy").addClass('spinner'); | $("#btn-icn-deploy").addClass('spinner'); | ||||
| RED.view.dirty(false); | RED.view.dirty(false); | ||||
| $("#btn-icn-deploy").removeClass('spinner'); | $("#btn-icn-deploy").removeClass('spinner'); | ||||
| $("#btn-icn-deploy").addClass('icon-upload'); | $("#btn-icn-deploy").addClass('icon-upload'); | ||||
| }); | }); | ||||
| */ | |||||
| } | } | ||||
| } | } | ||||