From 48205cb00f8d65c268aece77bc518591e07b3f86 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 3 Sep 2024 18:21:57 -0400 Subject: [PATCH] add persistence and defaults to cam animation settings --- src/kiri-mode/cam/animate.js | 16 ++++++++++------ src/kiri/api.js | 23 +++++++++++++++++++++++ src/kiri/conf.js | 6 +++++- src/kiri/export.js | 7 ++----- src/kiri/widget.js | 4 ++-- 5 files changed, 42 insertions(+), 14 deletions(-) diff --git a/src/kiri-mode/cam/animate.js b/src/kiri-mode/cam/animate.js index 14e42be1..2e32070d 100644 --- a/src/kiri-mode/cam/animate.js +++ b/src/kiri-mode/cam/animate.js @@ -47,7 +47,7 @@ kiri.load(() => { $('layer-animate').innerHTML = ''; $('layer-toolpos').innerHTML = ''; Object.keys(meshes).forEach(id => deleteMesh(id)); - toggleStock(undefined,true); + toggleStock(undefined,true,false); } function animate(api, delay) { @@ -72,6 +72,7 @@ kiri.load(() => { modelButton = UC.newButton(null,toggleModel,{icon:'',title:"show model",class:"padleft"}), shadeButton = UC.newButton(null,toggleStock,{icon:'',title:"stock box"}), ]); + speedIndex = api.local.getInt('cam.anim.speed') || 0; updateSpeed(); setTimeout(step, delay || 0); const toolpos = $('layer-toolpos'); @@ -82,8 +83,8 @@ kiri.load(() => { api.event.emit('animate', 'CAM'); api.alerts.hide(alert); moto.space.platform.showGridBelow(false); - toggleModel(); - toggleStock(); + toggleModel(0,api.local.getBoolean('cam.anim.model', false)); + toggleStock(0,api.local.getBoolean('cam.anim.stock', false)); }); } @@ -174,11 +175,13 @@ kiri.load(() => { delete meshes[id]; } - function toggleModel() { - api.widgets.all().forEach(w => w.toggleVisibility()); + function toggleModel(ev,bool) { + api.local.toggle('cam.anim.model', bool); + api.widgets.all().forEach(w => w.toggleVisibility(bool)); } - function toggleStock(ev,bool) { + function toggleStock(ev,bool,set) { + set !== false && api.local.toggle('cam.anim.stock', bool); return api.event.emit('cam.stock.toggle', bool ?? undefined); } @@ -232,6 +235,7 @@ kiri.load(() => { } else if (inc > 0) { speedIndex = (speedIndex + inc) % speedValues.length; } + api.local.set('cam.anim.speed', speedIndex); speed = speedValues[speedIndex]; speedLabel.innerText = speedNames[speedIndex]; } diff --git a/src/kiri/api.js b/src/kiri/api.js index b755aa9c..3d57ea45 100644 --- a/src/kiri/api.js +++ b/src/kiri/api.js @@ -60,6 +60,17 @@ const tweak = { gcode_decimals(v) { api.work.config({base:{gcode_decimals: v}}) } }; +function localGet(key) { + let sloc = api.conf.get().local; + return sloc[key] || api.sdb[key]; +} + +function localSet(key, val) { + let sloc = api.conf.get().local; + sloc[key] = api.sdb[key] = val; + return val; +} + const api = exports({ clip: (text) => { navigator.clipboard @@ -84,6 +95,18 @@ const api = exports({ feature, devel, tweak, + local: { + get: (key) => localGet(key), + getInt: (key) => parseInt(localGet(key)), + getFloat: (key) => parseFloat(localGet(key)), + getBoolean: (key, def = true) => { + let val = localGet(key); + return val === true || val === 'true' || val === def; + }, + toggle: (key, val, def) => localSet(key, val ?? !api.local.getBoolean(key, def)), + put: (key, val) => localSet(key, val), + set: (key, val) => localSet(key, val), + } }); }); diff --git a/src/kiri/conf.js b/src/kiri/conf.js index 06cc0289..30c8b7a1 100644 --- a/src/kiri/conf.js +++ b/src/kiri/conf.js @@ -955,7 +955,11 @@ const conf = exports({ // widget extra info for slicing (extruder mapping) widget: {}, // legacy localStorage settings (like octo print) - local: {}, + local: { + 'cam.anim.model': false, + 'cam.anim.stock': false, + 'cam.anim.speed': 3 + }, mode: 'FDM', id: genID(), ver: CVER diff --git a/src/kiri/export.js b/src/kiri/export.js index e53e76e5..793d7b36 100644 --- a/src/kiri/export.js +++ b/src/kiri/export.js @@ -21,14 +21,11 @@ kiri.export = exportFile; let printSeq = parseInt(local['kiri-print-seq'] || local['print-seq'] || "0") + 1; function localGet(key) { - let sloc = api.conf.get().local; - return sloc[key] || local[key]; + return api.local.get(key); } function localSet(key, val) { - let sloc = api.conf.get().local; - sloc[key] = local[key] = val; - return val; + return api.local.set(key, val); } function exportFile(options) { diff --git a/src/kiri/widget.js b/src/kiri/widget.js index 1aa96673..2829bb8d 100644 --- a/src/kiri/widget.js +++ b/src/kiri/widget.js @@ -371,9 +371,9 @@ class Widget { } } - toggleVisibility() { + toggleVisibility(bool) { const mat = this.getMaterial(); - mat.visible = !mat.visible; + mat.visible = bool ?? !mat.visible; } /**