mark current mode, move remainder of mesh tool icons, cleanup colors

This commit is contained in:
Stewart Allen 2024-05-29 20:08:37 -04:00
commit c10af8126b
8 changed files with 95 additions and 160 deletions

View file

@ -123,7 +123,7 @@ CAM.init = function(kiri, api) {
// wire up animate button in ui // wire up animate button in ui
api.event.on("function.animate", (mode) => { api.event.on("function.animate", (mode) => {
if (isAnimate) { if (isAnimate || !isCamMode) {
return; return;
} }
api.function.prepare(() => { api.function.prepare(() => {
@ -1809,6 +1809,7 @@ function animate() {
API.hide.slider(); API.hide.slider();
STACKS.clear(); STACKS.clear();
animFn().animate(API); animFn().animate(API);
API.view.set_animate();
} }
function updateStock() { function updateStock() {

View file

@ -133,7 +133,8 @@ const MODES = {
const VIEWS = { const VIEWS = {
ARRANGE: 1, ARRANGE: 1,
SLICE: 2, SLICE: 2,
PREVIEW: 3 PREVIEW: 3,
ANIMATE: 4
}; };
// preview modes // preview modes

View file

@ -380,8 +380,7 @@ function prepareAnimation() {
api.alerts.show("window prevents animations"); api.alerts.show("window prevents animations");
return; return;
} }
const settings = api.conf.get(); api.event.emit("function.animate", {mode: api.conf.get().mode});
api.event.emit("function.animate", {mode: settings.mode});
} }
function prepareExport() { function prepareExport() {

View file

@ -1633,7 +1633,7 @@ gapp.register("kiri.init", [], (root, exports) => {
ltact: $('lt-start'), ltact: $('lt-start'),
edit: $('lt-tools'), edit: $('lt-tools'),
nozzle: $('menu-nozzle'), nozzle: $('menu-nozzle'),
render: $('menu-render'), // render: $('menu-render'),
modal: $('modal'), modal: $('modal'),
modalBox: $('modal-box'), modalBox: $('modal-box'),
@ -1794,7 +1794,7 @@ gapp.register("kiri.init", [], (root, exports) => {
shiny: newBoolean(LANG.op_shny_s, booleanSave, {title:LANG.op_shny_l, modes:FDM}), shiny: newBoolean(LANG.op_shny_s, booleanSave, {title:LANG.op_shny_l, modes:FDM}),
lineType: newSelect(LANG.op_line_s, {title: LANG.op_line_l, action: lineTypeSave, modes:FDM}, "linetype"), lineType: newSelect(LANG.op_line_s, {title: LANG.op_line_l, action: lineTypeSave, modes:FDM}, "linetype"),
animesh: newSelect(LANG.op_anim_s, {title: LANG.op_anim_l, action: aniMeshSave, modes:CAM}, "animesh"), animesh: newSelect(LANG.op_anim_s, {title: LANG.op_anim_l, action: aniMeshSave, modes:CAM}, "animesh"),
units: newSelect(LANG.op_unit_s, {title: LANG.op_unit_l, action: unitsSave, modes:CAM, trace:true}, "units"), units: newSelect(LANG.op_unit_s, {title: LANG.op_unit_l, action: unitsSave, modes:CAM, trace:false}, "units"),
layout: newGroup(LANG.lo_menu, $('prefs-lay'), {inline: true}), layout: newGroup(LANG.lo_menu, $('prefs-lay'), {inline: true}),
autoSave: newBoolean(LANG.op_save_s, booleanSave, {title:LANG.op_save_l}), autoSave: newBoolean(LANG.op_save_s, booleanSave, {title:LANG.op_save_l}),
autoLayout: newBoolean(LANG.op_auto_s, booleanSave, {title:LANG.op_auto_l}), autoLayout: newBoolean(LANG.op_auto_s, booleanSave, {title:LANG.op_auto_l}),
@ -1819,7 +1819,7 @@ gapp.register("kiri.init", [], (root, exports) => {
_____: newGroup(LANG.sl_menu, $('fdm-layers'), { modes:FDM, driven, separator }), _____: newGroup(LANG.sl_menu, $('fdm-layers'), { modes:FDM, driven, separator }),
sliceHeight: newInput(LANG.sl_lahi_s, { title:LANG.sl_lahi_l, convert:toFloat }), sliceHeight: newInput(LANG.sl_lahi_s, { title:LANG.sl_lahi_l, convert:toFloat }),
sliceMinHeight: newInput(LANG.ad_minl_s, { title:LANG.ad_minl_l, convert:toFloat, bound:bound(0,3.0), show:() => ui.sliceAdaptive.checked, trace2:true }), sliceMinHeight: newInput(LANG.ad_minl_s, { title:LANG.ad_minl_l, convert:toFloat, bound:bound(0,3.0), show:() => ui.sliceAdaptive.checked }),
sliceTopLayers: newInput(LANG.sl_ltop_s, { title:LANG.sl_ltop_l, convert:toInt }), sliceTopLayers: newInput(LANG.sl_ltop_s, { title:LANG.sl_ltop_l, convert:toInt }),
sliceBottomLayers: newInput(LANG.sl_lbot_s, { title:LANG.sl_lbot_l, convert:toInt }), sliceBottomLayers: newInput(LANG.sl_lbot_s, { title:LANG.sl_lbot_l, convert:toInt }),
separator: newBlank({ class:"set-sep", driven }), separator: newBlank({ class:"set-sep", driven }),
@ -1858,7 +1858,7 @@ gapp.register("kiri.init", [], (root, exports) => {
sliceSupportExtra: newInput(LANG.sp_xpnd_s, {title:LANG.sp_xpnd_l, convert:toFloat, bound:bound(0.0,10.0)}), sliceSupportExtra: newInput(LANG.sp_xpnd_s, {title:LANG.sp_xpnd_l, convert:toFloat, bound:bound(0.0,10.0)}),
sliceSupportGrow: newInput(LANG.sp_grow_s, {title:LANG.sp_grow_l, convert:toFloat, bound:bound(0.0,10.0)}), sliceSupportGrow: newInput(LANG.sp_grow_s, {title:LANG.sp_grow_l, convert:toFloat, bound:bound(0.0,10.0)}),
sliceSupportAngle: newInput(LANG.sp_angl_s, {title:LANG.sp_angl_l, convert:toFloat, bound:bound(0.0,90.0)}), sliceSupportAngle: newInput(LANG.sp_angl_s, {title:LANG.sp_angl_l, convert:toFloat, bound:bound(0.0,90.0)}),
sliceSupportSpan: newInput(LANG.sp_span_s, {title:LANG.sp_span_l, convert:toFloat, bound:bound(0.0,200.0), show:() => ui.sliceSupportEnable.checked, trace2:false }), sliceSupportSpan: newInput(LANG.sp_span_s, {title:LANG.sp_span_l, convert:toFloat, bound:bound(0.0,200.0), show:() => ui.sliceSupportEnable.checked }),
separator: newBlank({ class:"set-sep", driven }), separator: newBlank({ class:"set-sep", driven }),
sliceSupportEnable: newBoolean(LANG.sp_auto_s, onBooleanClick, {title:LANG.sp_auto_l, show:isNotBelt}), sliceSupportEnable: newBoolean(LANG.sp_auto_s, onBooleanClick, {title:LANG.sp_auto_l, show:isNotBelt}),
sliceSupportOutline: newBoolean(LANG.sp_outl_s, onBooleanClick, {title:LANG.sp_outl_l}), sliceSupportOutline: newBoolean(LANG.sp_outl_s, onBooleanClick, {title:LANG.sp_outl_l}),
@ -1955,7 +1955,7 @@ gapp.register("kiri.init", [], (root, exports) => {
camStockIndexed: newBoolean(LANG.cs_indx_s, onBooleanClick, {title:LANG.cs_indx_l}), camStockIndexed: newBoolean(LANG.cs_indx_s, onBooleanClick, {title:LANG.cs_indx_l}),
camStockIndexGrid: newBoolean(LANG.cs_ishg_s, onBooleanClick, {title:LANG.cs_ishg_l, show:() => ui.camStockIndexed.checked}), camStockIndexGrid: newBoolean(LANG.cs_ishg_s, onBooleanClick, {title:LANG.cs_ishg_l, show:() => ui.camStockIndexed.checked}),
camLimits: newGroup(LANG.cc_menu, $('cam-limits'), { modes:CAM, driven, separator }), camLimits: newGroup(LANG.cc_menu, $('cam-limits'), { modes:CAM, driven, separator }),
camZAnchor: newSelect(LANG.ou_zanc_s, {title: LANG.ou_zanc_l, action:zAnchorSave, trace:true, show:() => !ui.camStockIndexed.checked}, "zanchor"), camZAnchor: newSelect(LANG.ou_zanc_s, {title: LANG.ou_zanc_l, action:zAnchorSave, trace:false, show:() => !ui.camStockIndexed.checked}, "zanchor"),
camZOffset: newInput(LANG.ou_ztof_s, {title:LANG.ou_ztof_l, convert:toFloat, units:true}), camZOffset: newInput(LANG.ou_ztof_s, {title:LANG.ou_ztof_l, convert:toFloat, units:true}),
camZBottom: newInput(LANG.ou_zbot_s, {title:LANG.ou_zbot_l, convert:toFloat, units:true, trigger: true}), camZBottom: newInput(LANG.ou_zbot_s, {title:LANG.ou_zbot_l, convert:toFloat, units:true, trigger: true}),
camZThru: newInput(LANG.ou_ztru_s, {title:LANG.ou_ztru_l, convert:toFloat, bound:bound(0.0,100), units:true, show:() => { return ui.camZBottom.value == 0 }}), camZThru: newInput(LANG.ou_ztru_s, {title:LANG.ou_ztru_l, convert:toFloat, bound:bound(0.0,100), units:true, show:() => { return ui.camZBottom.value == 0 }}),
@ -2769,7 +2769,7 @@ gapp.register("kiri.init", [], (root, exports) => {
$('view-back').onclick = space.view.back; $('view-back').onclick = space.view.back;
$('view-left').onclick = space.view.left; $('view-left').onclick = space.view.left;
$('view-right').onclick = space.view.right; $('view-right').onclick = space.view.right;
$('view-clear').onclick = api.platform.clear; // $('view-clear').onclick = api.platform.clear;
$('unrotate').onclick = () => { $('unrotate').onclick = () => {
api.widgets.for(w => w.unrotate()); api.widgets.for(w => w.unrotate());
api.selection.update_info(); api.selection.update_info();
@ -2784,7 +2784,7 @@ gapp.register("kiri.init", [], (root, exports) => {
$('rot_z_lt').onclick = () => { api.selection.rotate(0,0, d) }; $('rot_z_lt').onclick = () => { api.selection.rotate(0,0, d) };
$('rot_z_gt').onclick = () => { api.selection.rotate(0,0,-d) }; $('rot_z_gt').onclick = () => { api.selection.rotate(0,0,-d) };
// rendering options // rendering options
$('render-hide').onclick = () => { api.view.wireframe(false, 0, 0); }; // $('render-hide').onclick = () => { api.view.wireframe(false, 0, 0); };
$('render-ghost').onclick = () => { api.view.wireframe(false, 0, api.view.is_arrange() ? 0.4 : 0.25); }; $('render-ghost').onclick = () => { api.view.wireframe(false, 0, api.view.is_arrange() ? 0.4 : 0.25); };
$('render-wire').onclick = () => { api.view.wireframe(true, 0, api.space.is_dark() ? 0.25 : 0.5); }; $('render-wire').onclick = () => { api.view.wireframe(true, 0, api.space.is_dark() ? 0.25 : 0.5); };
$('render-solid').onclick = () => { api.view.wireframe(false, 0, 1); }; $('render-solid').onclick = () => { api.view.wireframe(false, 0, 1); };

View file

@ -186,9 +186,11 @@ gapp.register("kiri.main", [], (root, exports) => {
set_arrange() { api.view.set(VIEWS.ARRANGE) }, set_arrange() { api.view.set(VIEWS.ARRANGE) },
set_slice() { api.view.set(VIEWS.SLICE) }, set_slice() { api.view.set(VIEWS.SLICE) },
set_preview() { api.view.set(VIEWS.PREVIEW) }, set_preview() { api.view.set(VIEWS.PREVIEW) },
set_animate() { api.view.set(VIEWS.ANIMATE) },
is_arrange() { return viewMode === VIEWS.ARRANGE }, is_arrange() { return viewMode === VIEWS.ARRANGE },
is_slice() { return viewMode === VIEWS.SLICE }, is_slice() { return viewMode === VIEWS.SLICE },
is_preview() { return viewMode === VIEWS.PREVIEW }, is_preview() { return viewMode === VIEWS.PREVIEW },
is_animate() { return viewMode === VIEWS.ANIMATE },
update_stack_labels: updateStackLabelState, update_stack_labels: updateStackLabelState,
update_slider_max: updateSliderMax, update_slider_max: updateSliderMax,
update_slider: updateSlider, update_slider: updateSlider,
@ -840,12 +842,13 @@ gapp.register("kiri.main", [], (root, exports) => {
platform.deselect(); platform.deselect();
selection.update_info(); selection.update_info();
// disable clear in non-arrange modes // disable clear in non-arrange modes
$('view-clear').style.display = mode === VIEWS.ARRANGE ? '' : 'none'; ['view-arrange','act-slice','act-preview','act-animate'].forEach(el => {
$(el).classList.remove('selected')
});
switch (mode) { switch (mode) {
case VIEWS.ARRANGE: case VIEWS.ARRANGE:
$('view-arrange').classList.add('selected');
api.function.clear_progress(); api.function.clear_progress();
// UI.back.style.display = '';
UI.render.style.display = '';
kiri.client.clear(); kiri.client.clear();
STACKS.clear(); STACKS.clear();
hideSlider(); hideSlider();
@ -855,17 +858,18 @@ gapp.register("kiri.main", [], (root, exports) => {
api.widgets.opacity(1); api.widgets.opacity(1);
break; break;
case VIEWS.SLICE: case VIEWS.SLICE:
if (isCAM) UI.render.classList.add('hide'); $('act-slice').classList.add('selected');
else UI.render.classList.remove('hide');
updateSpeeds(); updateSpeeds();
updateSliderMax(); updateSliderMax();
setWidgetVisibility(true); setWidgetVisibility(true);
break; break;
case VIEWS.PREVIEW: case VIEWS.PREVIEW:
if (isCAM) UI.render.classList.add('hide'); $('act-preview').classList.add('selected');
else UI.render.classList.remove('hide');
setWidgetVisibility(true); setWidgetVisibility(true);
break; break;
case VIEWS.ANIMATE:
$('act-animate').classList.add('selected');
break;
default: default:
console.log("invalid view mode: "+mode); console.log("invalid view mode: "+mode);
return; return;

View file

@ -15,7 +15,6 @@ gapp.register("kiri.ui", [], (root, exports) => {
addTo = null, addTo = null,
bindTo = null, bindTo = null,
groups = {}, groups = {},
groupShow = {},
groupSticky = false, groupSticky = false,
groupName = undefined, groupName = undefined,
hasModes = [], hasModes = [],
@ -24,10 +23,7 @@ gapp.register("kiri.ui", [], (root, exports) => {
lastMode = null, lastMode = null,
lastExpert = true, lastExpert = true,
letHoverPop = true, letHoverPop = true,
exitimer = undefined,
NOMODE = "nomode",
prefix = "tab", prefix = "tab",
state = {},
units = 1, units = 1,
lastChange = null, lastChange = null,
lastBtn = null, lastBtn = null,
@ -167,8 +163,8 @@ gapp.register("kiri.ui", [], (root, exports) => {
}); });
} }
function refresh(all) { function refresh() {
setMode(lastMode, all ? false : true); setMode(lastMode);
setters.forEach(input => { setters.forEach(input => {
if (input.setv) { if (input.setv) {
input.setv(input.real); input.setv(input.real);
@ -176,21 +172,9 @@ gapp.register("kiri.ui", [], (root, exports) => {
}); });
} }
function setMode(mode, nohide) { function setMode(mode) {
console.log({ gs: groupShow });
Object.keys(groupShow).forEach(group => {
updateGroupShow(group);
});
lastMode = mode; lastMode = mode;
if (nohide) { hasModes.forEach(div => div.setMode(mode));
for (let div of hasModes.filter(d => d.isBlank)) {
div.setMode(div._group && !groupShow[div._group] ? NOMODE : mode);
}
return;
}
hasModes.forEach(function(div) {
div.setMode(div._group && !groupShow[div._group] ? NOMODE : mode);
});
hidePoppers(); hidePoppers();
} }
@ -200,7 +184,7 @@ console.log({ gs: groupShow });
} }
function setHoverPop(bool) { function setHoverPop(bool) {
letHoverPop = bool; // letHoverPop = bool;
} }
function checkpoint(at) { function checkpoint(at) {
@ -274,14 +258,6 @@ console.log({ gs: groupShow });
lastGroup = groups[group] = []; lastGroup = groups[group] = [];
lastGroup.key = dbkey; lastGroup.key = dbkey;
groupName = group; groupName = group;
groupShow[group] = state[dbkey] !== 'false';
row.onclick = function(ev) {
if (ev.target !== link && ev.target !== row) {
return;
}
console.log({ toggleGroup: group, dbkey });
toggleGroup(group, dbkey);
};
return row; return row;
} }
@ -294,33 +270,7 @@ console.log({ gs: groupShow });
} }
function hidePoppers() { function hidePoppers() {
showGroup(undefined); // showGroup(undefined);
}
function showGroup(groupname) {
Object.keys(groups).forEach(name => {
let group = groups[name];
groupShow[name] = true;//state[group.key] = (groupname === name);
updateGroupShow(name);
});
groupSticky = false;
}
function toggleGroup(groupname, dbkey) {
let show = state[dbkey] === 'true' || state[dbkey] === true;
groupShow[groupname] = state[dbkey] = !show;
// console.log({ state, show });
updateGroupShow(groupname);
}
function updateGroupShow(groupname) {
let show = groupShow[groupname] ?? true;
// console.log({ updateGroupShow: groupname, show: groupShow[groupname] });
let group = groups[groupname];
group.forEach(div => {
if (show) div.setMode(lastMode);
else div.setMode(NOMODE);
});
} }
function bound(low,high) { function bound(low,high) {
@ -344,10 +294,8 @@ console.log({ gs: groupShow });
function toFloat() { function toFloat() {
let nv = this.value !== '' ? parseFloat(this.value) : null; let nv = this.value !== '' ? parseFloat(this.value) : null;
if (nv !== null && this.bound) nv = this.bound(nv); if (nv !== null && this.bound) nv = this.bound(nv);
// this.value = nv;
if (this.setv) { if (this.setv) {
return this.setv(nv * units); return this.setv(nv * units);
// return this.real = (nv * units);
} else { } else {
this.value = nv; this.value = nv;
} }
@ -381,6 +329,14 @@ console.log({ gs: groupShow });
} }
} }
function safecall(fn) {
try {
return fn();
} catch (e) {
return true;
}
}
function addModeControls(el, opt = {}) { function addModeControls(el, opt = {}) {
if (opt.trace2) { if (opt.trace2) {
console.log({ AMC: el, opt, groupName }); console.log({ AMC: el, opt, groupName });
@ -399,21 +355,17 @@ console.log({ gs: groupShow });
}; };
el.setMode = function(mode) { el.setMode = function(mode) {
let xprt = opt.expert === undefined || (opt.expert === lastExpert); let xprt = opt.expert === undefined || (opt.expert === lastExpert);
let show = opt.show ? opt.show() : true; let show = opt.show ? safecall(opt.show) : true;
let disp = opt.visible ? opt.visible() : true; let disp = opt.visible ? opt.visible() : true;
if (opt.trace2) console.log({ setMode: el, xprt, show, disp, fn: el.__opt.show }); if (opt.trace2) console.log({ setMode: el, mode, modes: el.modes, xprt, show, disp, fn: el.__opt.show });
el.setVisible(el.hasMode(mode) && show && xprt && disp); el.setVisible(el.hasMode(mode) && show && xprt && disp);
} }
el.hasMode = function(mode) { el.hasMode = function(mode) {
if (mode === NOMODE) return false; return el.modes.length === 0 || el.modes.contains(mode);
if (!el.modes) return true;
return el.modes.contains(mode);
} }
if (opt.modes) { el.modes = opt.modes || [];
el.modes = opt.modes;
hasModes.push(el); hasModes.push(el);
} }
}
function newDiv(opt = {}) { function newDiv(opt = {}) {
let div = DOC.createElement('div'); let div = DOC.createElement('div');
@ -449,7 +401,6 @@ console.log({ gs: groupShow });
function newGCode(label, options) { function newGCode(label, options) {
let opt = options || {}, let opt = options || {},
// row = lastDiv,
btn = DOC.createElement("button"), btn = DOC.createElement("button"),
txt = DOC.createElement("textarea"), txt = DOC.createElement("textarea"),
area = opt.area; area = opt.area;

View file

@ -19,6 +19,12 @@
--menu-border: #555; --menu-border: #555;
--dark-menu-text: #111; --dark-menu-text: #111;
--menu-hover: #ddd; --menu-hover: #ddd;
--blue-1: rgb(96,127,164);
--blue-2: rgb(126,153,183);
--blue-3: rgb(190, 204, 219);
--blue-4: rgb(221, 228, 234);
--blue-5: rgb(240, 243, 245);
--blue-6: rgb(247, 249, 250);
} }
/* surface size configuration and font import */ /* surface size configuration and font import */
@ -241,9 +247,12 @@ th, tr, td, label {
color: black; color: black;
} }
.top-menu > span:hover { .top-menu > span:hover {
background-color: var(--row-hover); background-color: var(--blue-4);
border-left: 1px solid var(--menu-border); border-left: 1px solid var(--blue-2);
border-right: 1px solid var(--menu-border); border-right: 1px solid var(--blue-2);
}
.top-menu > span.selected {
background-color: var(--blue-3);
} }
.top-menu > span:hover .top-menu-drop { .top-menu > span:hover .top-menu-drop {
display: flex; display: flex;
@ -278,11 +287,11 @@ th, tr, td, label {
display: flex; display: flex;
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
background-color: var(--menu); background-color: #fff;
border-top: 1px dashed var(--menu-border); border-top: 1px dashed var(--blue-2);
border-left: 1px solid var(--menu-border); border-left: 1px solid var(--blue-2);
border-right: 1px solid var(--menu-border); border-right: 1px solid var(--blue-2);
border-bottom: 1px solid var(--menu-border); border-bottom: 1px solid var(--blue-2);
border-bottom-right-radius: 4px; border-bottom-right-radius: 4px;
border-bottom-left-radius: 4px; border-bottom-left-radius: 4px;
} }
@ -315,7 +324,7 @@ th, tr, td, label {
border-radius: 3px; border-radius: 3px;
} }
#top .content > div:hover { #top .content > div:hover {
background-color: var(--menu-hover); background-color: var(--blue-4);
} }
#app-name { #app-name {
@ -648,8 +657,8 @@ th, tr, td, label {
text-align: right; text-align: right;
align-items: stretch; align-items: stretch;
white-space: nowrap; white-space: nowrap;
background-color: var(--menu); background-color: #fff;
border: 1px solid var(--menu-border); border: 1px solid var(--blue-2);
border-radius: 4px; border-radius: 4px;
flex-direction: column; flex-direction: column;
} }
@ -657,7 +666,7 @@ th, tr, td, label {
padding: 2px 7px 2px 7px; padding: 2px 7px 2px 7px;
} }
#lang-pop > div:hover { #lang-pop > div:hover {
background-color: var(--menu-hover); background-color: var(--blue-4);
} }
#mid { #mid {
@ -857,25 +866,32 @@ th, tr, td, label {
#ft-mesh { #ft-mesh {
min-width: 200px; min-width: 200px;
} }
#menu-render { .render-tools {
display: grid;
margin: 4px 0 0 0; margin: 4px 0 0 0;
gap: 3px; /* gap: 3px; */
flex-direction: row;; grid-template-columns: 1fr 1fr 1fr;
} }
#menu-render > span { .render-tools > span {
width: 20px; justify-self: center;
height: 20px; width: 25px;
height: 25px;
display: flex; display: flex;
flex-shrink: 0; flex-shrink: 0;
flex-direction: column; flex-direction: column;
} }
#menu-render > span > * { .render-tools > span > * {
padding: 0; padding: 0;
margin: 0; margin: 0;
width: 20px; }
height: 20px; .render-tools svg {
align-items: stretch; border: 1px solid transparent;
justify-content: stretch; border-radius: 3px;
padding: 3px;
}
.render-tools svg:hover {
border: 1px solid blue;
background-color: var(--blue-4);
} }
#render-hide > a { #render-hide > a {
border: 0.5px dashed black; border: 0.5px dashed black;
@ -1927,10 +1943,8 @@ th, tr, td, label {
border-right: 3px solid transparent; border-right: 3px solid transparent;
} }
.set2-group .var-row:hover { .set2-group .var-row:hover {
/* border-left: 3px solid var(--main-color-hover); */ border-right: 3px solid var(--blue-1);
border-right: 3px solid var(--main-color-hover); background-color: var(--blue-4) !important;
/* background-color: #f8f8f8 !important; */
background-color: var(--row-hover) !important;
} }
.set2-group .var-row label { .set2-group .var-row label {
margin-right: 25px; margin-right: 25px;
@ -1953,8 +1967,7 @@ th, tr, td, label {
white-space: nowrap; white-space: nowrap;
border-radius: 2px; border-radius: 2px;
justify-content: left; justify-content: left;
background-color: var(--header); background-color: var(--blue-3);
/* /* border-top: 0.5px solid #888; */
border-left: 3px solid transparent; border-left: 3px solid transparent;
border-right: 3px solid var(--main-color-hover); border-right: 3px solid var(--main-color-hover);
border-bottom: 0.5px solid var(--main-color-hover); border-bottom: 0.5px solid var(--main-color-hover);

View file

@ -99,31 +99,6 @@
</div> </div>
</div> </div>
</span> </span>
<span>
<i class="fas fa-dice-d20"></i>
<label>mesh</label>
<div class="top-menu-drop top-menu-right">
<div class="content">
<div id="tool-rotate">
<label lk="rotate">rotate</label>
<span><i class="fas fa-sync-alt"></i></span>
</div>
<div id="tool-scale">
<label lk="scale">scale</label>
<span><i class="fas fa-expand"></i></span>
</div>
<div id="tool-mesh">
<label lk="mesh">mesh</label>
<span><i class="fas fa-dice-d20"></i></span>
</div>
<hr>
<div id="view-clear">
<label lk="clear">clear</label>
<span><i class="far fa-square"></i></span>
</div>
</div>
</div>
</span>
<span> <span>
<i class="fas fa-eye"></i> <i class="fas fa-eye"></i>
<label>view</label> <label>view</label>
@ -295,36 +270,27 @@
<div class="mid-sep"></div> <div class="mid-sep"></div>
<div id="panel-right" class="f-col j-start settings"> <div id="panel-right" class="f-col j-start settings">
<div class="set2-group f-col"> <div class="set2-group f-col">
<div class="set-header"> <div class="set-header"><a>workspace</a></div>
<a>workspace</a>
</div>
<div id="ws-widgets" class="f-col"></div> <div id="ws-widgets" class="f-col"></div>
<div id="menu-render" class="j-center"> <div class="set-header"><a>mesh tools</a></div>
<span id="render-solid" class="j-center" title="solid"> <div class="render-tools">
<i class="fas fa-square"></i> <span id="tool-rotate"><i class="fas fa-sync-alt"></i></span></span>
</span> <span id="tool-scale"><i class="fas fa-expand"></i></span></span>
<span id="render-wire" class="j-center" title="wireframe"> <span id="tool-mesh"><i class="fas fa-dice-d20"></i></span></span>
<i class="fas fa-border-all"></i> <span id="render-solid" class="j-center" title="solid"><i class="fas fa-square"></i></span>
</span> <span id="render-wire" class="j-center" title="wireframe"><i class="fas fa-border-all"></i></span>
<span id="render-ghost" class="a-center" title="ghost"> <span id="render-ghost" class="a-center" title="ghost"><i class="fas fa-border-none"></i></span>
<i class="fas fa-border-none"></i>
</span>
<span id="render-hide" class="a-center j-center" title="hide"><a></a></span>
</div> </div>
</div> </div>
<div class="set2-group f-col mode-fdm"> <div class="set2-group f-col mode-fdm">
<div class="set-header"> <div class="set-header"><a>ranges</a></div>
<a>ranges</a>
</div>
<div id="fdm-ranges" class="f-col"></div> <div id="fdm-ranges" class="f-col"></div>
</div> </div>
<div class="set2-group f-col"> <div class="set2-group f-col">
<div id="workspace-tool"></div> <div id="workspace-tool"></div>
</div> </div>
<div class="set2-group f-col mode-cam"> <div class="set2-group f-col mode-cam">
<div class="set-header mode-cam"> <div class="set-header mode-cam"><a>operation list</a></div>
<a>operation list</a>
</div>
<div id="camops" class="f-col a-stretch grow"> <div id="camops" class="f-col a-stretch grow">
<div id="oplist" class="f-col j-center"></div> <div id="oplist" class="f-col j-center"></div>
<div id="op-add" class="opdiv"> <div id="op-add" class="opdiv">