//NOT FINISHED function Editor(container_id, options) { //fill container var html = "
"; html += "
"; html += ""; var root = document.createElement("div"); this.root = root; root.className = "litegraph-editor"; root.innerHTML = html; var canvas = root.querySelector(".graphcanvas"); //create graph var graph = this.graph = new LGraph(); var graphcanvas = this.graphcanvas = new LGraphCanvas(canvas,graph); graphcanvas.background_image = "imgs/grid.png"; graph.onAfterExecute = function() { graphcanvas.draw(true) }; //add stuff this.addToolsButton("loadsession_button","Load","imgs/icon-load.png", this.onLoadButton.bind(this), ".tools-left" ); this.addToolsButton("savesession_button","Save","imgs/icon-save.png", this.onSaveButton.bind(this), ".tools-left" ); this.addLoadCounter(); this.addToolsButton("playnode_button","Play","imgs/icon-play.png", this.onPlayButton.bind(this), ".tools-right" ); this.addToolsButton("playstepnode_button","Step","imgs/icon-playstep.png", this.onPlayStepButton.bind(this), ".tools-right" ); this.addToolsButton("livemode_button","Live","imgs/icon-record.png", this.onLiveButton.bind(this), ".tools-right" ); this.addToolsButton("maximize_button","","imgs/icon-maximize.png", this.onFullscreenButton.bind(this), ".tools-right" ); this.addMiniWindow(300,200); //append to DOM var parent = document.getElementById(container_id); if(parent) parent.appendChild(root); graphcanvas.resize(); //graphcanvas.draw(true,true); } Editor.prototype.addLoadCounter = function() { var meter = document.createElement("div"); meter.className = 'headerpanel loadmeter toolbar-widget'; var html = "
CPU
"; html += "
GFX
"; meter.innerHTML = html; this.root.querySelector(".header .tools-left").appendChild(meter); var self = this; setInterval(function() { meter.querySelector(".cpuload .fgload").style.width = ((2*self.graph.elapsed_time) * 90) + "px"; if(self.graph.status == LGraph.STATUS_RUNNING) meter.querySelector(".gpuload .fgload").style.width = ((self.graphcanvas.render_time*10) * 90) + "px"; else meter.querySelector(".gpuload .fgload").style.width = 4 + "px"; },200); } Editor.prototype.addToolsButton = function(id,name,icon_url, callback, container) { if(!container) container = ".tools"; var button = this.createButton(name, icon_url); button.id = id; button.addEventListener("click", callback); this.root.querySelector(container).appendChild(button); } Editor.prototype.createPanel = function(title, options) { var root = document.createElement("div"); root.className = "dialog"; root.innerHTML = "
"+title+"
"; root.header = root.querySelector(".dialog-header"); root.content = root.querySelector(".dialog-content"); root.footer = root.querySelector(".dialog-footer"); return root; } Editor.prototype.createButton = function(name, icon_url) { var button = document.createElement("button"); if(icon_url) button.innerHTML = " "; button.innerHTML += name; return button; } Editor.prototype.onLoadButton = function() { var panel = this.createPanel("Load session"); var close = this.createButton("Close"); close.style.float = "right"; close.addEventListener("click", function() { panel.parentNode.removeChild( panel ); }); panel.header.appendChild(close); panel.content.innerHTML = "test"; this.root.appendChild(panel); } Editor.prototype.onSaveButton = function() { } Editor.prototype.onPlayButton = function() { var graph = this.graph; var button = this.root.querySelector("#playnode_button"); if(graph.status == LGraph.STATUS_STOPPED) { button.innerHTML = " Stop"; graph.start(1); } else { button.innerHTML = " Play"; graph.stop(); } } Editor.prototype.onPlayStepButton = function() { var graph = this.graph; graph.runStep(1); this.graphcanvas.draw(true,true); } Editor.prototype.onLiveButton = function() { var is_live_mode = !this.graphcanvas.live_mode; this.graphcanvas.switchLiveMode(true); this.graphcanvas.draw(); var url = this.graphcanvas.live_mode ? "imgs/gauss_bg_medium.jpg" : "imgs/gauss_bg.jpg"; var button = this.root.querySelector("#livemode_button"); button.innerHTML = !is_live_mode ? " Live" : " Edit" ; } Editor.prototype.goFullscreen = function() { if(this.root.requestFullscreen) this.root.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT); else if(this.root.mozRequestFullscreen) this.root.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT); else if(this.root.webkitRequestFullscreen) this.root.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); else throw("Fullscreen not supported"); var self = this; setTimeout(function() { self.graphcanvas.resize(); },100); } Editor.prototype.onFullscreenButton = function() { this.goFullscreen(); } Editor.prototype.onMaximizeButton = function() { this.maximize(); } Editor.prototype.addMiniWindow = function(w,h) { var miniwindow = document.createElement("div"); miniwindow.className = "litegraph miniwindow"; miniwindow.innerHTML = ""; var canvas = miniwindow.querySelector("canvas"); var graphcanvas = new LGraphCanvas(canvas, this.graph); graphcanvas.background_image = "imgs/grid.png"; graphcanvas.scale = 0.5; miniwindow.style.position = "absolute"; miniwindow.style.top = "4px"; miniwindow.style.right = "4px"; var close_button = document.createElement("div"); close_button.className = "corner-button"; close_button.innerHTML = "X"; close_button.addEventListener("click",function(e) { graphcanvas.setGraph(null); miniwindow.parentNode.removeChild(miniwindow); }); miniwindow.appendChild(close_button); this.root.querySelector(".content").appendChild(miniwindow); } LiteGraph.Editor = Editor;