X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=inline;f=matitaB%2Fmatita%2Fmatitaweb.js;h=cd25cd15a68b2e349647378de40deb9551c338df;hb=100184e7920cc3c70b50b694a17fa40ecde45e77;hp=23bf4d396c62acba6d861c1d96485fa381e7109f;hpb=eb553660052f5853a7baeb6905dccd59abc0f8e4;p=helm.git diff --git a/matitaB/matita/matitaweb.js b/matitaB/matita/matitaweb.js index 23bf4d396..cd25cd15a 100644 --- a/matitaB/matita/matitaweb.js +++ b/matitaB/matita/matitaweb.js @@ -220,7 +220,7 @@ function strip_tags(tagname,classname) tags[i].parentNode.insertBefore(children[j],tags[i]); } } - while (tags.length > 0) { + for (var i = 0;tags.length > i;i++) { tags[0].parentNode.removeChild(tags[0]); } } @@ -564,109 +564,125 @@ function callServer(servicename,processResponse,reqbody) } -function advanceForm1() -{ - processor = function(xml) { - if (is_defined(xml)) { - var parsed = xml.getElementsByTagName("parsed")[0]; - var ambiguity = xml.getElementsByTagName("ambiguity")[0]; - var disamberr = xml.getElementsByTagName("disamberror")[0]; - if (is_defined(parsed)) { - // debug("advance: received response\nBEGIN\n" + req.responseText + "\nEND"); - var len = parseInt(parsed.getAttribute("length")); - // len0 = unlocked.innerHTML.length; - var unescaped = unlocked.innerHTML.html_to_matita(); - var parsedtxt = parsed.childNodes[0].wholeText; - //parsedtxt = unescaped.substr(0,len); - var unparsedtxt = unescaped.substr(len); - lockedbackup += parsedtxt; - locked.innerHTML = lockedbackup; - unlocked.innerHTML = unparsedtxt.matita_to_html(); - // len1 = unlocked.innerHTML.length; - // len2 = len0 - len1; - var len2 = parsedtxt.length; - var metasenv = xml.getElementsByTagName("meta"); - populate_goalarray(metasenv); - init_autotraces(); - statements = listcons(len2,statements); - unlocked.scrollIntoView(true); - } - else if (is_defined(ambiguity)) { - var start = parseInt(ambiguity.getAttribute("start")); - var stop = parseInt(ambiguity.getAttribute("stop")); - var choices = xml.getElementsByTagName("choice"); - - matita.ambiguityStart = start; - matita.ambiguityStop = stop; - matita.unlockedbackup = unlocked.innerHTML.html_to_matita(); - matita.interpretations = []; - - var unlockedtxt = unlocked.innerHTML.html_to_matita(); - var pre = unlockedtxt.substring(0,start).matita_to_html(); - var mid = unlockedtxt.substring(start,stop).matita_to_html(); - var post = unlockedtxt.substring(stop).matita_to_html(); - unlocked.innerHTML = pre + - "" + - mid + "" + post; - - var title = "
Errors at node " + cpno + " = " + choicedesc + "
"; + var title = "Errors at node " + cpno + " = " + choicedesc + "
"; + } else { + subtitle = "Global errors:
"; + } disambcell.innerHTML = title + subtitle; var failures = get_failure_opts(cpno,choiceno); @@ -821,7 +846,7 @@ function show_failures() { cancelbutton.setAttribute("onclick","cancel_disambiguate()"); var backbutton = document.createElement("input"); backbutton.setAttribute("type","button"); - backbutton.setAttribute("value","<< Back"); + backbutton.setAttribute("value","<< Go back"); backbutton.setAttribute("onclick","next_cp(" + cpno + ")"); disambcell.appendChild(backbutton); @@ -858,6 +883,7 @@ function gotoBottom() var localized = xml.getElementsByTagName("localized")[0]; var ambiguity = xml.getElementsByTagName("ambiguity")[0]; var generic_err = xml.getElementsByTagName("error")[0]; + var disamberr = xml.getElementsByTagName("disamberror")[0]; for (var i = 0;i < parsed.length; i++) { var len = parsed[i].getAttribute("length"); // len0 = unlocked.innerHTML.length; @@ -933,16 +959,25 @@ function gotoBottom() disambcell.appendChild(okbutton); disambcell.appendChild(cancelbutton); - disable_toparea(); - matita.disambMode = true; updateSide(); } - if (is_defined(localized)) { - unlocked.innerHTML = localized.wholeText; + else if (is_defined(disamberr)) { + // must be fixed in a daemon: it makes sense to return a + // disambiguation error with no choices + if (disamberr.childNodes.length > 0) { + set_cps(disamberr.childNodes); + matita.unlockedbackup = unlocked.innerHTML.html_to_matita(); + matita.disambMode = true; + next_cp(0); + } + throw "Stop"; + } + else if (is_defined(localized)) { + unlocked.innerHTML = localized.childNodes[0].wholeText; } - if (is_defined(generic_err)) { - debug("Unmanaged error:\n" ^ generic_err.wholeText); + else if (is_defined(generic_err)) { + debug("Unmanaged error:\n" ^ generic_err.childNodes[0].wholeText); } } else { debug("goto bottom failed"); @@ -984,6 +1019,7 @@ function gotoTop() callServer("top",processor,"body=" + (unlocked.innerHTML.html_to_matita()).sescape()); } + function gotoPos(offset) { if (!is_defined(offset)) { @@ -991,6 +1027,8 @@ function gotoPos(offset) } processor = function(xml) { if (is_defined(xml)) { + try { + /* parsed = xml.getElementsByTagName("parsed")[0]; len = parseInt(parsed.getAttribute("length")); // len0 = unlocked.innerHTML.length; @@ -1008,6 +1046,8 @@ function gotoPos(offset) statements = listcons(len2,statements); unlocked.scrollIntoView(true); // la populate non andrebbe fatta a ogni passo + */ + var len = advOneStep(xml); if (offset <= len) { init_autotraces(); populate_goalarray(metasenv); @@ -1015,6 +1055,15 @@ function gotoPos(offset) } else { gotoPos(offset - len); } + } catch (er) { + init_autotraces(); + populate_goalarray(metasenv); + if (er == "Stop") + resume(); + else + pause(); + + } } else { init_autotraces(); unlocked.scrollIntoView(true); @@ -1053,10 +1102,8 @@ function retract() } resume(); }; - debug("retract 1"); pause(); callServer("retract",processor); - debug("retract 2"); } function openFile() @@ -1080,6 +1127,9 @@ function retrieveFile(thefile) { if (is_defined(xml)) { changeFile(thefile); + matita.disambMode = false; + matita.proofMode = false; + updateSide(); lockedbackup = "" locked.innerHTML = lockedbackup; // code originally used in google chrome (problems with mozilla) @@ -1097,7 +1147,7 @@ function retrieveFile(thefile) debug("file open failed"); } }; - abortDialog(); + abortDialog("dialogBox"); callServer("open",processor,"file=" + escape(thefile)); } @@ -1151,26 +1201,28 @@ function uploadDialog() function uploadOK() { var file = document.getElementById("uploadFilename").files[0]; - if (file) { - var filecontent = file.getAsText("UTF-8"); - locked.innerHTML = lockedbackup; - unlocked.innerHTML = filecontent; - uploadBox.style.display = "none"; - } // if (file) { -// var reader = new FileReader(); -// reader.readAsText(file, "UTF-8"); -// reader.onloadend = function (evt) { -// lockedbackup = ""; -// locked.innerHTML = lockedbackup -// unlocked.innerHTML = evt.target.result; -// uploadBox.style.display = "none"; -// } -// reader.onerror = function (evt) { -// debug("file open failed"); -// uploadBox.style.display = "none"; -// } +// var filecontent = file.getAsText("UTF-8"); +// locked.innerHTML = lockedbackup; +// unlocked.innerHTML = filecontent; +// uploadBox.style.display = "none"; // } + if (file) { + var reader = new FileReader(); + reader.onerror = function (evt) { + debug("file open failed"); + } + reader.onload = function (evt) { + lockedbackup = ""; + locked.innerHTML = lockedbackup; + unlocked.innerHTML = ""; + unlocked.appendChild(document.createTextNode(evt.target.result)); + uploadBox.style.display = "none"; + } + try { reader.readAsText(file, "UTF-8"); } + catch (err) { /* nothing to do */ }; + uploadBox.style.display = "none"; + } } function openDialog() @@ -1182,7 +1234,7 @@ function openDialog() function saveDialog() { callback = function (fname) { - abortDialog(); + abortDialog("dialogBox"); saveFile(fname, (locked.innerHTML.html_to_matita()).sescape(), (unlocked.innerHTML.html_to_matita()).sescape(), @@ -1194,7 +1246,7 @@ function saveDialog() function newDialog() { callback = function (fname) { - abortDialog(); + abortDialog("dialogBox"); saveFile(fname,"","",false,newDialog,true); }; showLibrary("Create new file", callback, newDialog); @@ -1240,7 +1292,7 @@ function saveFile(fname,lockedtxt,unlockedtxt,force,reloadDialog,reloadFile) } function createDir() { - abortDialog(); + abortDialog("dialogBox"); dirname = prompt("New directory name:\ncic:/matita/","newdir"); if (dirname != null) { processor = function(xml) { @@ -1269,7 +1321,7 @@ function commitAll() alert("Commit executed: see details in the log.\n\n" + "NOTICE: this message does NOT imply (yet) that the commit was successful."); } else { - alert("Commit failed!"); + alert("Commit failed!\n(maybe you don't have permissionis to commit?)"); } resume(); }; @@ -1285,7 +1337,7 @@ function updateAll() "Details:\n" + xml.getElementsByTagName("details")[0].textContent); } else { - alert("Update failed!"); + alert("Update failed!\n(maybe you don't have permissions to update?)"); } resume(); }; @@ -1336,8 +1388,8 @@ function showDialog(title,content,callback) { } function abortDialog(dialog) { + document.getElementById(dialog).style.display = "none"; $('#mask').hide(); - dialogBox.style.display = "none"; } function removeElement(id) { @@ -1408,8 +1460,10 @@ function get_checked_index(name) { function cancel_disambiguate() { matita.disambMode = false; - enable_toparea(); - enable_editing(); + resume(); + // enable_toparea(); + // enable_editing(); + strip_tags("span","error"); updateSide(); } @@ -1527,7 +1581,9 @@ function resume() // retractButton.disabled = false; // cursorButton.disabled = false; // bottomButton.disabled = false; - enable_toparea(); - enable_editing(); + if (!matita.disambMode) { + enable_toparea(); + enable_editing(); + } }