var buttonsarray = [] var macroCodeType = "gcode" function populateMacroButtons() { $("#macros").empty(); for (i = 0; i < buttonsarray.length; i++) { // Handle old created buttons that didnt have a tooltip if (!buttonsarray[i].tooltip) { buttonsarray[i].tooltip = "" }; if (buttonsarray[i].macrokeyboardshortcut && buttonsarray[i].macrokeyboardshortcut.length) { var keyboardAssignment = buttonsarray[i].macrokeyboardshortcut } else { var keyboardAssignment = "none" } if (buttonsarray[i].codetype && buttonsarray[i].codetype.length) { var codetype = buttonsarray[i].codetype } else { buttonsarray[i].codetype = "gcode" var codetype = "gcode" } if (codetype == "gcode") { var button = ` ` } else if (codetype == "javascript") { // Future JS Macros here var button = ` ` } $("#macros").append(button); } // append add button var button = ` ` $("#macros").append(button); localStorage.setItem('macroButtons', JSON.stringify(buttonsarray)); } function edit(i, evt) { evt.preventDefault(); evt.stopPropagation(); // console.log("Editing " + i) if (buttonsarray[i]) { var icon = buttonsarray[i].icon; var title = buttonsarray[i].title; var codetype = buttonsarray[i].codetype var gcode = buttonsarray[i].gcode; var javascript = buttonsarray[i].javascript var cls = buttonsarray[i].class; var tooltip = buttonsarray[i].tooltip; if (buttonsarray[i].macrokeyboardshortcut && buttonsarray[i].macrokeyboardshortcut.length > 0) { var macrokeyboardshortcut = buttonsarray[i].macrokeyboardshortcut; } else { var macrokeyboardshortcut = ""; } } else { var icon = "far fa-question-circle"; var title = ""; var codetype = "gcode" var gcode = ""; var javascript = ""; var cls = ""; var tooltip = ""; var macrokeyboardshortcut = ""; } var macroTemplate = `
` Metro.dialog.create({ title: "Edit Macro", width: 600, content: macroTemplate, actions: [{ caption: "Cancel", cls: "js-dialog-close", onclick: function() { // } }, { caption: "Delete Macro", cls: "js-dialog-close alert", onclick: function() { buttonsarray.splice(i, 1); populateMacroButtons(); } }, { caption: "Apply", cls: "js-dialog-close success", onclick: function() { var seq = $('#macroseq').val(); if (buttonsarray[seq]) { buttonsarray[seq].icon = $('#macroicon').val(); buttonsarray[seq].title = $('#macrotitle').val(); buttonsarray[seq].codetype = macroCodeType; // TODO might not be jquery val in final version buttonsarray[seq].gcode = $('#macrogcode').val(); buttonsarray[seq].javascript = $('#macrojs').val(); buttonsarray[seq].class = $('#macrocls').val(); buttonsarray[seq].tooltip = $('#macrotooltip').val(); buttonsarray[seq].macrokeyboardshortcut = $('#macrokeyboardshortcut').val(); populateMacroButtons(); bindKeys() } else { buttonsarray.push({ title: $('#macrotitle').val(), icon: $('#macroicon').val(), codetype: macroCodeType, // TODO might not be jquery val in final version gcode: $('#macrogcode').val(), javascript: $('#macrojs').val(), class: $('#macrocls').val(), tooltip: $('#macrotooltip').val(), macrokeyboardshortcut: $('#macrokeyboardshortcut').val(), }) populateMacroButtons(); bindKeys() } } } ] }); $('#macrokeyboardshortcut').bind('keydown', null, function(e) { console.log(e) e.preventDefault(); console.log(e) var newVal = ""; if (e.altKey) { newVal += 'alt+' } if (e.ctrlKey) { newVal += 'ctrl+' } if (e.shiftKey) { newVal += 'shift+' } if (e.key.toLowerCase() != 'alt' && e.key.toLowerCase() != 'control' && e.key.toLowerCase() != 'shift') { // Handle MetroUI naming non-standards of some keys if (e.keyCode == 32) { newVal += 'space'; } else if (e.key.toLowerCase() == 'escape') { newVal += 'esc'; } else if (e.key.toLowerCase() == 'arrowleft') { newVal += 'left'; } else if (e.key.toLowerCase() == 'arrowright') { newVal += 'right'; } else if (e.key.toLowerCase() == 'arrowup') { newVal += 'up'; } else if (e.key.toLowerCase() == 'arrowdown') { newVal += 'down'; } else { newVal += e.key.toLowerCase(); } // $('.newMacroKeyAssignment').val(newVal) var alreadyAssigned = false; var assignedMacro = ''; for (i = 0; i < buttonsarray.length; i++) { if (newVal == buttonsarray[i].macrokeyboardshortcut) { alreadyAssigned = true; assignedMacro = buttonsarray[i].title } } if (alreadyAssigned) { $('#alreadyAssignedWarn').show(); $('#alreadyAssignedWarn').html(newVal + " is already assigned to \"" + assignedMacro + "\"