move tab/support annotations into widget meta data / idb. fix support/lay flat conflict. fix support nozzle in slice.

This commit is contained in:
Stewart Allen 2021-10-18 23:36:19 -04:00
commit bf51d56bb5
12 changed files with 92 additions and 42 deletions

View file

@ -401,7 +401,7 @@
annotate: (id) => {
// add per widget annotation
// for things like extruder and supports
return settings.widget[id] = ( settings.widget[id] || {} );
return WIDGETS.filter(w => w.id === id)[0].anno;
}
},
work: KIRI.work
@ -1838,7 +1838,7 @@
if (!shift) platform.deselect();
selectedMeshes.push(mesh);
API.event.emit('widget.select', widget);
widget.setColor(color.selected, settings);
widget.setColor(color.selected);
updateSelectedInfo();
}
platformUpdateSelected();
@ -1892,10 +1892,11 @@
if (b) b.classList.remove('pop-sel');
}
forSelectedWidgets(w => {
w.setColor(color.selected, settings);
w.setColor(color.selected);
let ext = API.widgets.annotate(w.id).extruder || 0;
let b = $(`sel-ext-${ext}`);
if (b) b.classList.add('pop-sel');
w.saveState();
}, true);
}
}
@ -1926,7 +1927,7 @@
selectedMeshes.splice(si,1);
API.event.emit('widget.deselect', widget);
}
widget.setColor(color.deselected, settings);
widget.setColor(color.deselected);
platformUpdateSelected();
SPACE.update();
updateSelectedInfo();
@ -1999,9 +2000,7 @@
}
function platformAdd(widget, shift, nolayout) {
if (!settings.widget[widget.id]) {
settings.widget[widget.id] = {extruder: 0};
}
widget.anno.extruder = widget.anno.extruder || 0;
WIDGETS.push(widget);
SPACE.platform.add(widget.mesh);
platform.select(widget, shift);
@ -2066,7 +2065,6 @@
return;
}
KIRI.work.clear(widget);
delete settings.widget[widget.id];
WIDGETS.remove(widget);
Widget.Groups.remove(widget);
SPACE.platform.remove(widget.mesh);
@ -2744,6 +2742,21 @@
function restoreSettings(save) {
let newset = ls2o('ws-settings') || settings;
// extract legacy widget annotations into widgets
if (newset.widget) {
for (let id of Object.keys(newset.widget)) {
let anno = newset.widget[id];
let wid = WIDGETS.filter(w => w.id === id)[0];
if (wid && anno) {
wid.anno = anno;
console.log('transfer settings annotations to widget', id);
delete newset.widget[id];
wid.saveState();
} else {
console.log('missing widget for annotations', id);
}
}
}
settings = CONF.normalize(newset);
// override camera from settings
if (settings.controller.view) {
@ -2791,7 +2804,8 @@
platform.delete(widget);
});
// remove widget keys if they are not going to be restored
// remove widget keys if they are not going to be restored (TODO: remove in 3.1)
if (settings.widget)
Object.keys(settings.widget).filter(k => toload.indexOf(k) < 0).forEach(k => {
delete settings.widget[k];
});