| @@ -10,21 +10,21 @@ | |||
| <head> | |||
| <style type="text/css"> | |||
| body | |||
| { | |||
| font:12px Consolas; | |||
| } | |||
| body | |||
| { | |||
| font:12px Consolas; | |||
| } | |||
| #status_field | |||
| { | |||
| font:12px Consolas; | |||
| font:12px Consolas; | |||
| } | |||
| button | |||
| { | |||
| font:14px Consolas; | |||
| font:14px Consolas; | |||
| } | |||
| textarea | |||
| { | |||
| font:14px Consolas; | |||
| font:14px Consolas; | |||
| } | |||
| progress | |||
| { | |||
| @@ -60,7 +60,7 @@ progress::-webkit-progress-value | |||
| left: 40%; | |||
| z-index: 3; | |||
| } | |||
| nacl_div | |||
| #DIV_nacl_div | |||
| { | |||
| position: absolute; | |||
| top: 2px; | |||
| @@ -81,9 +81,9 @@ nacl_div | |||
| <script src="./TypeDictionnary.js"></script> | |||
| <script type="text/javascript"> | |||
| var EasyMeshDict = new TypeDictionnary("EasyMesh"); | |||
| function GetCmdDictionnary() { return EasyMeshDict; } | |||
| </script> | |||
| var EasyMeshDict = new TypeDictionnary("EasyMesh"); | |||
| function GetCmdDictionnary() { return EasyMeshDict; } | |||
| </script> | |||
| <script src="./EasyMeshDictionnary.js"></script> | |||
| <script type="text/javascript"> | |||
| @@ -100,168 +100,168 @@ nacl_div | |||
| window.setTimeout("Tick()", 100); | |||
| window.setTimeout("Init()", 100); | |||
| function Init() | |||
| { | |||
| nacl_div = document.getElementById('DIV_nacl_div'); | |||
| mesh_code_module = document.getElementById('DIV_MeshCode'); | |||
| code_helper_cmd[0] = document.getElementById('DIV_command0'); | |||
| code_helper_cmd[1] = document.getElementById('DIV_command1'); | |||
| code_helper_arg = document.getElementById('DIV_args'); | |||
| code_helper_cmt = document.getElementById('DIV_comment'); | |||
| code_helper_var = document.getElementById('DIV_var_usage'); | |||
| code_helper_alpha = document.getElementById('DIV_alphabet'); | |||
| code_helper_alpha.innerHTML = ' ['; | |||
| for (var a = 'a'.charCodeAt(0); a <= 'z'.charCodeAt(0); a++) | |||
| { | |||
| var stop = false; | |||
| for (var i = 0; !stop && i < EasyMeshDict.m_cmds.length; i++) | |||
| { | |||
| for (var j = 0; j < EasyMeshDict.m_cmds[i].m_name.length; j++) | |||
| { | |||
| if (EasyMeshDict.m_cmds[i].m_name[j][0] == String.fromCharCode(a)) | |||
| { | |||
| code_helper_alpha.innerHTML += '<b>' + String.fromCharCode(a) + '</b>'; | |||
| stop = true; | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| if (!stop) | |||
| code_helper_alpha.innerHTML += '.'; | |||
| } | |||
| code_helper_alpha.innerHTML += '] <br> '; | |||
| } | |||
| function Tick() | |||
| { | |||
| window.setTimeout("Tick()", 100); | |||
| /* -- cmd lookup code. */ | |||
| if (mesh_code_module != undefined) | |||
| { | |||
| var cmd_size = 8; | |||
| var found = FindMatchingCommand(mesh_code_module); | |||
| if (found.match_list.length > 0) | |||
| { | |||
| var type_list = new Array(); | |||
| code_helper_cmd[0].innerHTML = ""; | |||
| code_helper_cmd[1].innerHTML = ""; | |||
| code_helper_arg.innerHTML = ""; | |||
| code_helper_cmt.innerHTML = ""; | |||
| //Go through the found matches and show them. | |||
| for (var i = 0; i < found.match_list.length; i++) | |||
| { | |||
| var cur_match = EasyMeshDict.m_cmds[found.match_list[i]]; | |||
| code_helper_cmd[0].innerHTML += '['; | |||
| var max = cur_match.m_name.length; | |||
| var word = 0; | |||
| for (var j = 0; j < max; j++) | |||
| { | |||
| var mth = found.match; | |||
| var cmd = cur_match.m_name[j]; | |||
| //Matching start caracters should be bold | |||
| if (mth == cmd.slice(0, mth.length)) | |||
| { | |||
| code_helper_cmd[word].innerHTML += ' '; | |||
| code_helper_cmd[word].innerHTML += '<b>' + mth + '</b>'; | |||
| code_helper_cmd[word].innerHTML += cmd.slice(mth.length, cmd.length); | |||
| word++; | |||
| } | |||
| } | |||
| //Complete empty command by <br> so commands in the two columns are on the same line | |||
| word = (word > 0)?(2):(0); | |||
| while (word-- > 0) | |||
| code_helper_cmd[word].innerHTML += "<br>"; | |||
| //Go through the arguments and show them | |||
| if (found.match_list.length < 4 && i == 0) | |||
| { | |||
| code_helper_arg.innerHTML += " > "; | |||
| if (cur_match.m_arg != undefined) | |||
| { | |||
| max = cur_match.m_arg.length; | |||
| var found_optional = false; | |||
| for (var j = 0; j < max; j++) | |||
| { | |||
| if (cur_match.m_arg[j].m_optional != undefined && found_optional == false) | |||
| { | |||
| var tab = '<br>'; for (var l = 0; l < 5; l++) tab += ' '; | |||
| code_helper_arg.innerHTML += tab + 'Opt: ['; | |||
| found_optional = true; | |||
| } | |||
| else if (j > 0) | |||
| code_helper_arg.innerHTML += ', '; | |||
| //Types are bold | |||
| code_helper_arg.innerHTML += '<b>' + cur_match.m_arg[j].m_type + '</b> '; | |||
| type_list[type_list.length] = cur_match.m_arg[j].m_type; | |||
| //Names are not | |||
| code_helper_arg.innerHTML += cur_match.m_arg[j].m_name; | |||
| if (cur_match.m_arg[j].m_optional != undefined) | |||
| code_helper_arg.innerHTML += ' = <b>' + cur_match.m_arg[j].m_optional + '</b>'; | |||
| } | |||
| if (found_optional == true) | |||
| code_helper_arg.innerHTML += '] '; | |||
| code_helper_arg.innerHTML += ' <br>'; | |||
| } | |||
| //Add the comment | |||
| if (cur_match.m_comment != undefined) | |||
| { | |||
| var tb_i = 16; var in_i = 8; | |||
| var tab = '<br>'; | |||
| if (cur_match.m_arg == undefined) { tb_i -= 8; in_i -= 8; } | |||
| for (var l = 0; l < in_i; l++) code_helper_arg.innerHTML += ' '; | |||
| for (var l = 0; l < tb_i; l++) tab += ' '; | |||
| code_helper_arg.innerHTML += cur_match.m_comment + ' '; | |||
| while (code_helper_arg.innerHTML.indexOf('\n') > -1) | |||
| code_helper_arg.innerHTML = code_helper_arg.innerHTML.replace('\n', tab); | |||
| } | |||
| } | |||
| } | |||
| //Go through the type list and bold the used ones. | |||
| if (EasyMeshDict.m_vars != undefined) | |||
| { | |||
| code_helper_var.innerHTML = ""; | |||
| var max = EasyMeshDict.m_vars.length; | |||
| for (var j = 0; j < max; j++) | |||
| { | |||
| var cur_var = EasyMeshDict.m_vars[j]; | |||
| code_helper_var.innerHTML += " > "; | |||
| var k = 0; | |||
| for (; k < type_list.length; k++) | |||
| if (cur_var.m_type == type_list[k]) | |||
| break; | |||
| //Bold the used variables | |||
| if (k < type_list.length) | |||
| code_helper_var.innerHTML += "<b>" + cur_var.m_type + "</b>"; | |||
| else | |||
| code_helper_var.innerHTML += cur_var.m_type; | |||
| if (cur_var.m_syntax != undefined) | |||
| { | |||
| var align_size = 9; | |||
| var cmd_size = cur_var.m_type.length + 3; | |||
| for (var m = 0; m < cur_var.m_syntax.length; m++) | |||
| { | |||
| for (var l = 0; l < align_size - cmd_size; l++) | |||
| code_helper_var.innerHTML += " "; | |||
| code_helper_var.innerHTML += cur_var.m_syntax[m] + "<br>"; | |||
| cmd_size = 0; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| else | |||
| { | |||
| code_helper_cmd[0].innerHTML = "[ ... "; | |||
| code_helper_cmd[1].innerHTML = ""; | |||
| code_helper_arg.innerHTML = ""; | |||
| code_helper_cmt.innerHTML = ""; | |||
| } | |||
| } | |||
| /* -- */ | |||
| function Init() | |||
| { | |||
| nacl_div = document.getElementById('DIV_nacl_div'); | |||
| mesh_code_module = document.getElementById('DIV_MeshCode'); | |||
| code_helper_cmd[0] = document.getElementById('DIV_command0'); | |||
| code_helper_cmd[1] = document.getElementById('DIV_command1'); | |||
| code_helper_arg = document.getElementById('DIV_args'); | |||
| code_helper_cmt = document.getElementById('DIV_comment'); | |||
| code_helper_var = document.getElementById('DIV_var_usage'); | |||
| code_helper_alpha = document.getElementById('DIV_alphabet'); | |||
| code_helper_alpha.innerHTML = ' ['; | |||
| for (var a = 'a'.charCodeAt(0); a <= 'z'.charCodeAt(0); a++) | |||
| { | |||
| var stop = false; | |||
| for (var i = 0; !stop && i < EasyMeshDict.m_cmds.length; i++) | |||
| { | |||
| for (var j = 0; j < EasyMeshDict.m_cmds[i].m_name.length; j++) | |||
| { | |||
| if (EasyMeshDict.m_cmds[i].m_name[j][0] == String.fromCharCode(a)) | |||
| { | |||
| code_helper_alpha.innerHTML += '<b>' + String.fromCharCode(a) + '</b>'; | |||
| stop = true; | |||
| break; | |||
| } | |||
| } | |||
| } | |||
| if (!stop) | |||
| code_helper_alpha.innerHTML += '.'; | |||
| } | |||
| code_helper_alpha.innerHTML += '] <br> '; | |||
| } | |||
| function Tick() | |||
| { | |||
| window.setTimeout("Tick()", 100); | |||
| /* -- cmd lookup code. */ | |||
| if (mesh_code_module != undefined) | |||
| { | |||
| var cmd_size = 8; | |||
| var found = FindMatchingCommand(mesh_code_module); | |||
| if (found.match_list.length > 0) | |||
| { | |||
| var type_list = new Array(); | |||
| code_helper_cmd[0].innerHTML = ""; | |||
| code_helper_cmd[1].innerHTML = ""; | |||
| code_helper_arg.innerHTML = ""; | |||
| code_helper_cmt.innerHTML = ""; | |||
| //Go through the found matches and show them. | |||
| for (var i = 0; i < found.match_list.length; i++) | |||
| { | |||
| var cur_match = EasyMeshDict.m_cmds[found.match_list[i]]; | |||
| code_helper_cmd[0].innerHTML += '['; | |||
| var max = cur_match.m_name.length; | |||
| var word = 0; | |||
| for (var j = 0; j < max; j++) | |||
| { | |||
| var mth = found.match; | |||
| var cmd = cur_match.m_name[j]; | |||
| //Matching start caracters should be bold | |||
| if (mth == cmd.slice(0, mth.length)) | |||
| { | |||
| code_helper_cmd[word].innerHTML += ' '; | |||
| code_helper_cmd[word].innerHTML += '<b>' + mth + '</b>'; | |||
| code_helper_cmd[word].innerHTML += cmd.slice(mth.length, cmd.length); | |||
| word++; | |||
| } | |||
| } | |||
| //Complete empty command by <br> so commands in the two columns are on the same line | |||
| word = (word > 0)?(2):(0); | |||
| while (word-- > 0) | |||
| code_helper_cmd[word].innerHTML += "<br>"; | |||
| //Go through the arguments and show them | |||
| if (found.match_list.length < 4 && i == 0) | |||
| { | |||
| code_helper_arg.innerHTML += " > "; | |||
| if (cur_match.m_arg != undefined) | |||
| { | |||
| max = cur_match.m_arg.length; | |||
| var found_optional = false; | |||
| for (var j = 0; j < max; j++) | |||
| { | |||
| if (cur_match.m_arg[j].m_optional != undefined && found_optional == false) | |||
| { | |||
| var tab = '<br>'; for (var l = 0; l < 5; l++) tab += ' '; | |||
| code_helper_arg.innerHTML += tab + 'Opt: ['; | |||
| found_optional = true; | |||
| } | |||
| else if (j > 0) | |||
| code_helper_arg.innerHTML += ', '; | |||
| //Types are bold | |||
| code_helper_arg.innerHTML += '<b>' + cur_match.m_arg[j].m_type + '</b> '; | |||
| type_list[type_list.length] = cur_match.m_arg[j].m_type; | |||
| //Names are not | |||
| code_helper_arg.innerHTML += cur_match.m_arg[j].m_name; | |||
| if (cur_match.m_arg[j].m_optional != undefined) | |||
| code_helper_arg.innerHTML += ' = <b>' + cur_match.m_arg[j].m_optional + '</b>'; | |||
| } | |||
| if (found_optional == true) | |||
| code_helper_arg.innerHTML += '] '; | |||
| code_helper_arg.innerHTML += ' <br>'; | |||
| } | |||
| //Add the comment | |||
| if (cur_match.m_comment != undefined) | |||
| { | |||
| var tb_i = 16; var in_i = 8; | |||
| var tab = '<br>'; | |||
| if (cur_match.m_arg == undefined) { tb_i -= 8; in_i -= 8; } | |||
| for (var l = 0; l < in_i; l++) code_helper_arg.innerHTML += ' '; | |||
| for (var l = 0; l < tb_i; l++) tab += ' '; | |||
| code_helper_arg.innerHTML += cur_match.m_comment + ' '; | |||
| while (code_helper_arg.innerHTML.indexOf('\n') > -1) | |||
| code_helper_arg.innerHTML = code_helper_arg.innerHTML.replace('\n', tab); | |||
| } | |||
| } | |||
| } | |||
| //Go through the type list and bold the used ones. | |||
| if (EasyMeshDict.m_vars != undefined) | |||
| { | |||
| code_helper_var.innerHTML = ""; | |||
| var max = EasyMeshDict.m_vars.length; | |||
| for (var j = 0; j < max; j++) | |||
| { | |||
| var cur_var = EasyMeshDict.m_vars[j]; | |||
| code_helper_var.innerHTML += " > "; | |||
| var k = 0; | |||
| for (; k < type_list.length; k++) | |||
| if (cur_var.m_type == type_list[k]) | |||
| break; | |||
| //Bold the used variables | |||
| if (k < type_list.length) | |||
| code_helper_var.innerHTML += "<b>" + cur_var.m_type + "</b>"; | |||
| else | |||
| code_helper_var.innerHTML += cur_var.m_type; | |||
| if (cur_var.m_syntax != undefined) | |||
| { | |||
| var align_size = 9; | |||
| var cmd_size = cur_var.m_type.length + 3; | |||
| for (var m = 0; m < cur_var.m_syntax.length; m++) | |||
| { | |||
| for (var l = 0; l < align_size - cmd_size; l++) | |||
| code_helper_var.innerHTML += " "; | |||
| code_helper_var.innerHTML += cur_var.m_syntax[m] + "<br>"; | |||
| cmd_size = 0; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| else | |||
| { | |||
| code_helper_cmd[0].innerHTML = "[ ... "; | |||
| code_helper_cmd[1].innerHTML = ""; | |||
| code_helper_arg.innerHTML = ""; | |||
| code_helper_cmt.innerHTML = ""; | |||
| } | |||
| } | |||
| /* -- */ | |||
| } | |||
| @@ -270,8 +270,8 @@ nacl_div | |||
| nacl_module = document.getElementById('ID_NaClModule'); | |||
| mesh_code_module = document.getElementById('DIV_MeshCode'); | |||
| updateStatus('Rock n\' Roll !!'); | |||
| var progress_bar = document.getElementById('progress_bar'); | |||
| progress_bar.style.visibility = "hidden"; | |||
| var progress_bar = document.getElementById('progress_bar'); | |||
| progress_bar.style.visibility = "hidden"; | |||
| } | |||
| // The 'message' event handler. This handler is fired when the NaCl module | |||
| @@ -325,9 +325,9 @@ nacl_div | |||
| { | |||
| progressBar.max = event.total; | |||
| progressBar.value = event.loaded; | |||
| var load_progress = ((event.loaded / event.total) * 100.0); | |||
| status_field.innerHTML = 'Please wait, loading [' + load_progress.toFixed(0) + '%]'; | |||
| var load_progress = ((event.loaded / event.total) * 100.0); | |||
| status_field.innerHTML = 'Please wait, loading [' + load_progress.toFixed(0) + '%]'; | |||
| } | |||
| else | |||
| { | |||
| @@ -359,14 +359,12 @@ nacl_div | |||
| <progress id="p" align="left" width="200"></progress> | |||
| </div> | |||
| <div id="DIV_nacl_div"> | |||
| <!-- | |||
| <param name="wmode" value="opaque"/> | |||
| <embed name="nacl_module" | |||
| id="ID_NaClModule" | |||
| width=770 height=200 | |||
| src="meshviewer_nacl.nmf" | |||
| type="application/x-nacl" /> | |||
| --> | |||
| </div> | |||
| <script type="text/javascript"> | |||
| var listener = document.getElementById('listener'); | |||