cables_dev/cables_ui/src/ui/elements/splitpane.js
CABLES = CABLES || {};
CABLES.SPLITPANE = {};
CABLES.SPLITPANE.listeners = [];
export default initSplitPanes;
function initSplitPanes()
{
document.getElementById("splitterPatch").addEventListener("mousedown", function (ev)
{
gui.pauseProfiling();
ev.preventDefault();
CABLES.SPLITPANE.bound = true;
function mm(e)
{
gui.pauseInteractionSplitpanes();
gui.pauseProfiling();
e.preventDefault();
const pos = (window.innerWidth - e.clientX) * (1 / gui.corePatch().cgl.canvasScale);
if (gui.rendererWidth != -1) gui.rendererWidth = pos;
gui.splitpanePatchPos = pos;
gui.setLayout();
gui.emitEvent("resizecanvas");
gui.canvasManager.getCanvasUiBar().updateCanvasIconBar();
}
document.addEventListener("mousemove", mm);
CABLES.SPLITPANE.listeners.push(mm);
});
document.getElementById("splitterPatch").addEventListener("mouseup", function (e)
{
gui.resumeInteractionSplitpanes();
});
// ----------------
document.getElementById("splitterMaintabs").addEventListener("mouseup", function (e)
{
gui.resumeInteractionSplitpanes();
});
function resizeTabs(ev)
{
gui.pauseProfiling();
CABLES.SPLITPANE.bound = true;
function mm(e)
{
gui.pauseInteractionSplitpanes();
gui.editorWidth = e.clientX;
if (gui.editorWidth < 30)gui.editorWidth = 30;
CABLES.UI.userSettings.set("editorWidth", gui.editorWidth);
gui.setLayout();
gui.mainTabs.emitEvent("resize");
}
document.addEventListener("mousemove", mm, { "passive": false });
document.addEventListener("touchmove", mm, { "passive": false });
CABLES.SPLITPANE.listeners.push(mm);
}
document.getElementById("splitterMaintabs").addEventListener("mousedown", resizeTabs, { "passive": false });
document.getElementById("splitterMaintabs").addEventListener("touchstart", resizeTabs, { "passive": false });
document.getElementById("splitterRenderer").addEventListener("mousedown", function (ev)
{
ev.preventDefault();
CABLES.SPLITPANE.bound = true;
function mm(e)
{
e.preventDefault();
gui.rendererHeight = e.clientY * (1 / gui.corePatch().cgl.canvasScale);
gui.setLayout();
gui.canvasManager.getCanvasUiBar().updateCanvasIconBar();
}
document.addEventListener("mousemove", mm);
CABLES.SPLITPANE.listeners.push(mm);
});
document.getElementById("splitterTimeline").addEventListener("mousedown", function (ev)
{
ev.preventDefault();
CABLES.SPLITPANE.bound = true;
function mm(e)
{
gui.pauseInteractionSplitpanes();
e.preventDefault();
gui.setBottomPanelHeight(window.innerHeight - e.clientY);
gui.setLayout();
}
document.addEventListener("mousemove", mm);
CABLES.SPLITPANE.listeners.push(mm);
});
function resizeRenderer(ev)
{
if (gui.canvasManager.mode == gui.canvasManager.CANVASMODE_PATCHBG) return;
if (ev.shiftKey)
{
if (!CABLES.SPLITPANE.rendererAspect) CABLES.SPLITPANE.rendererAspect = gui.rendererWidth / gui.rendererHeight;
}
else CABLES.SPLITPANE.rendererAspect = 0.0;
ev.preventDefault();
CABLES.SPLITPANE.bound = true;
function mm(e)
{
gui.pauseInteractionSplitpanes();
let x = e.clientX;
let y = e.clientY;
if (x === undefined && e.touches && e.touches.length > 0)
{
x = e.touches[0].clientX;
y = e.touches[0].clientY;
}
gui.rendererWidth = (window.innerWidth - x) * (1 / gui.corePatch().cgl.canvasScale) + 3;
if (CABLES.SPLITPANE.rendererAspect) gui.rendererHeight = 1 / CABLES.SPLITPANE.rendererAspect * gui.rendererWidth;
else gui.rendererHeight = y * (1 / gui.corePatch().cgl.canvasScale) - 38;
gui.setLayout();
gui.canvasManager.getCanvasUiBar().updateCanvasIconBar();
gui.canvasManager.focus();
gui.emitEvent("resizecanvas");
e.preventDefault();
// gui.canvasManager.getCanvasUiBar().updateSizeDisplay();
}
document.addEventListener("mousemove", mm);
document.addEventListener("touchmove", mm);
CABLES.SPLITPANE.listeners.push(mm);
}
document.getElementById("splitterRendererWH").addEventListener("mousedown", resizeRenderer, { "passive": false });
document.getElementById("splitterRendererWH").addEventListener("touchstart", resizeRenderer, { "passive": false });
function stopSplit(e)
{
if (CABLES.SPLITPANE.listeners.length > 0)
{
for (let i = 0; i < CABLES.SPLITPANE.listeners.length; i++)
{
document.removeEventListener("mousemove", CABLES.SPLITPANE.listeners[i]);
document.removeEventListener("touchmove", CABLES.SPLITPANE.listeners[i]);
}
gui.resumeInteractionSplitpanes();
CABLES.SPLITPANE.listeners.length = 0;
CABLES.SPLITPANE.bound = false;
gui.setLayout();
}
}
document.addEventListener("mouseup", stopSplit);
document.addEventListener("touchend", stopSplit);
}