/** Copyright Stewart Allen -- All Rights Reserved */ import { api } from '../../core/api.js'; import { originReset, originSelect } from './cl-origin.js'; import { updateTool } from './tools.js'; let LANG = api.language.current; let { CAM } = api.const.MODES, { $ } = api.web, { uc, ui } = api, { bound, toInt, toFloat } = uc, { newBlank, newButton, newBoolean, newGroup, newInput } = uc, { newSelect, newLabel, newValue, newRow, newDiv } = uc, driven = true, separator = true, trigger = true, units = true ; function onBooleanClick(el) { api.event.emit('click.boolean', el); } function onButtonClick(el) { api.event.emit('click.button', el); } function zAnchorSave() { api.conf.update(); api.platform.update_top_z(); } export function menu() { let anim = ui.anim = {}; uc.setGroup($('tool-details')); return { /** Tool Editor Menu */ _____: uc.setGroup($('tool-details')), toolName: newInput('name', { title:'tool name', id: 'tool-name', size: 0, text: true }), toolType: newSelect('type', { title: 'tool type', id: 'tool-type', action:updateTool }, "camtool"), toolNum: newInput('tool #', { title:'tool number', id: 'tool-num', convert: toInt }), toolMetric: newBoolean('metric', updateTool, { title: 'metric', id: 'tool-metric' }), _____: newGroup(LANG.td_shft), toolShaftDiam: newInput('diameter', { convert: toFloat }), toolShaftLen: newInput('length', { convert: toFloat }), _____: newGroup(LANG.td_flut), toolFluteDiam: newInput('diameter', { convert: toFloat }), toolFluteLen: newInput('length', { convert: toFloat }), _____: newGroup(LANG.td_tapr), toolTaperAngle: newInput('angle', { convert: toFloat }), toolTaperTip: newInput('tip', { convert: toFloat }), // toolTaperAngle: $('tool-tangle'), toolsSave: $('tools-save'), toolsClose: $('tools-close'), toolsImport: $('tools-import'), toolsExport: $('tools-export'), toolSelect: $('tool-select'), toolAdd: $('tool-add'), toolCopy: $('tool-dup'), toolDelete: $('tool-del'), /** Animation Bar */ _____: { _____: newDiv({ addto: $('layer-animate'), set:true, group:false }), row: newRow([ anim.replay = newButton(null,"anim.replay",{icon:'',title:"restart"}), anim.play = newButton(null,"anim.play",{icon:'',title:"play"}), anim.pause = newButton(null,"anim.pause",{icon:'',title:"pause"}), anim.step = newButton(null,"anim.step",{icon:'',title:"single step"}), anim.speed = newButton(null,"anim.fast",{icon:'',title:"toggle speed"}), anim.labspd = newValue(3, {class:"center padleft"}), anim.labx = newLabel("X", {class:"padleft"}), anim.valx = newValue(7, {class:"center"}), anim.laby = newLabel("Y", {class:"padleft"}), anim.valy = newValue(7, {class:"center"}), anim.labz = newLabel("Z", {class:"padleft"}), anim.valz = newValue(6, {class:"center"}), anim.laba = newLabel("A", {class:"padleft hide"}), anim.vala = newValue(6, {class:"center hide"}), anim.labpro = newLabel("%", {class:"padleft"}), anim.progress = newValue(5, {class:"center"}), anim.trans = newButton(null,null,{icon:'',title:"transparency",class:"padleft"}), anim.model = newButton(null,null,{icon:'',title:"show model"}), anim.shade = newButton(null,null,{icon:'',title:"stock box"}), anim.path = newButton(null,null,{icon:'',title:"path"}), ]) }, /** Left Side Menu */ _____: newGroup(LANG.ct_menu, $('cam-tabs'), { modes:CAM, marker:true, driven, separator }), camTabsWidth: newInput(LANG.ct_wdth_s, {title:LANG.ct_wdth_l, convert:toFloat, bound:bound(0.005,100), units}), camTabsHeight: newInput(LANG.ct_hght_s, {title:LANG.ct_hght_l, convert:toFloat, bound:bound(0.005,100), units}), camTabsDepth: newInput(LANG.ct_dpth_s, {title:LANG.ct_dpth_l, convert:toFloat, bound:bound(0.005,100), units}), separator: newBlank({ class:"set-sep", driven }), camTabsMidline: newBoolean(LANG.ct_midl_s, onBooleanClick, {title:LANG.ct_midl_l}), separator: newBlank({ class:"set-sep", driven }), camTabsManual: newRow([ (ui.tabAdd = newButton(undefined, onButtonClick, {icon:''})), (ui.tabDun = newButton(undefined, onButtonClick, {icon:''})), (ui.tabClr = newButton(undefined, onButtonClick, {icon:''})) ], {class:"ext-buttons f-row"}), _____: newGroup(LANG.cs_menu, $('cam-stock'), { modes:CAM, driven, separator }), camStockX: newInput(LANG.cs_wdth_s, {title:LANG.cs_wdth_l, convert:toFloat, bound:bound(0,9999), units}), camStockY: newInput(LANG.cs_dpth_s, {title:LANG.cs_dpth_l, convert:toFloat, bound:bound(0,9999), units}), camStockZ: newInput(LANG.cs_hght_s, {title:LANG.cs_hght_l, convert:toFloat, bound:bound(0,9999), units}), separator: newBlank({ class:"set-sep", driven }), camStockOffset: newBoolean(LANG.cs_offs_s, onBooleanClick, {title:LANG.cs_offs_l}), camStockClipTo: newBoolean(LANG.cs_clip_s, onBooleanClick, {title:LANG.cs_clip_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}), _____: newGroup(LANG.cc_menu, $('cam-limits'), { modes:CAM, driven, separator }), camZAnchor: newSelect(LANG.ou_zanc_s, {title: LANG.ou_zanc_l, action:zAnchorSave, show:() => !ui.camStockIndexed.checked}, "zanchor"), camZOffset: newInput(LANG.ou_ztof_s, {title:LANG.ou_ztof_l, convert:toFloat, units}), camZTop: newInput(LANG.ou_ztop_s, {title:LANG.ou_ztop_l, convert:toFloat, units, trigger}), camZBottom: newInput(LANG.ou_zbot_s, {title:LANG.ou_zbot_l, convert:toFloat, units, trigger}), // camZThru: newInput(LANG.ou_ztru_s, {title:LANG.ou_ztru_l, convert:toFloat, bound:bound(0.0,100), units }), camZClearance: newInput(LANG.ou_zclr_s, {title:LANG.ou_zclr_l, convert:toFloat, bound:bound(0.01,100), units }), separator: newBlank({ class:"set-sep", driven }), camFastFeed: newInput(LANG.cc_rapd_s, {title:LANG.cc_rapd_l, convert:toFloat, units}), camFastFeedZ: newInput(LANG.cc_rzpd_s, {title:LANG.cc_rzpd_l, convert:toFloat, units}), _____: newGroup(LANG.ou_menu, $('cam-output'), { modes:CAM, driven, separator, group:"cam-output" }), camEaseDown: newBoolean(LANG.cr_ease_s, onBooleanClick, {title:LANG.cr_ease_l}), camDepthFirst: newBoolean(LANG.ou_depf_s, onBooleanClick, {title:LANG.ou_depf_l}), camInnerFirst: newBoolean(LANG.ou_inrf_s, onBooleanClick, {title:LANG.ou_inrf_l}), camToolInit: newBoolean(LANG.ou_toin_s, onBooleanClick, {title:LANG.ou_toin_l}), separator: newBlank({ class:"set-sep", driven }), camFirstZMax: newBoolean(LANG.ou_z1st_s, onBooleanClick, {title:LANG.ou_z1st_l}), camForceZMax: newBoolean(LANG.ou_forz_s, onBooleanClick, {title:LANG.ou_forz_l}), separator: newBlank({ class:"set-sep", driven }), camEaseAngle: newInput(LANG.ou_eang_s, {title:LANG.ou_eang_l, convert:toFloat, bound:bound(0.1,85), show:() => ui.camEaseDown.checked}), camFullEngage: newInput(LANG.ou_feng_s, {title:LANG.ou_feng_l, convert:toFloat, bound:bound(0.1,1.0)}), _____: newGroup(LANG.or_menu, $('cam-origin'), { modes:CAM, driven, separator }), camOriginTop: newBoolean(LANG.or_topp_s, onBooleanClick, {title:LANG.or_topp_l}), camOriginCenter: newBoolean(LANG.or_cntr_s, onBooleanClick, {title:LANG.or_cntr_l}), separator: newBlank({ class:"set-sep", driven }), camOriginOffX: newInput(LANG.co_offx_s, {title:LANG.co_offx_l, convert:toFloat, units}), camOriginOffY: newInput(LANG.co_offy_s, {title:LANG.co_offy_l, convert:toFloat, units}), camOriginOffZ: newInput(LANG.co_offz_s, {title:LANG.co_offz_l, convert:toFloat, units}), separator: newBlank({ class:"set-sep", driven }), camOriginSelect: newRow([ newButton("select", originSelect), newButton("reset", originReset), ], { class: "ext-buttons f-row" }), _____: newGroup(LANG.op_xprt_s, $('cam-expert'), { group:"cam_expert", modes:CAM, marker: false, driven, separator }), camArcEnabled: newBoolean(LANG.cx_arce_s, onBooleanClick, { title:LANG.cx_arce_l }), camArcTolerance: newInput(LANG.cx_arct_s, {title:LANG.cx_arct_l, convert:toFloat, bound:bound(0,100), units, trigger, show:() => ui.camArcEnabled.checked}), camArcResolution: newInput(LANG.cx_arcr_s, {title:LANG.cx_arcr_l, convert:toFloat, bound:bound(0,180), trigger, show:() => ui.camArcEnabled.checked}), camExpertFast: newBoolean(LANG.cx_fast_s, onBooleanClick, { title:LANG.cx_fast_l }), camRoundCorners: newBoolean(LANG.cx_smof_s, onBooleanClick, { title:LANG.cx_smof_l }), }; };