From: <ha...@us...> - 2011-10-17 04:10:04
|
Revision: 16367 http://jmol.svn.sourceforge.net/jmol/?rev=16367&view=rev Author: hansonr Date: 2011-10-17 04:09:57 +0000 (Mon, 17 Oct 2011) Log Message: ----------- version=12.2.3_dev # bug fix: load append twice can cause zap to be in wrong place in state file Modified Paths: -------------- branches/v12_2/Jmol/src/org/jmol/modelset/ModelCollection.java branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_2/Jmol/src/org/jmol/viewer/DataManager.java branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties Modified: branches/v12_2/Jmol/src/org/jmol/modelset/ModelCollection.java =================================================================== --- branches/v12_2/Jmol/src/org/jmol/modelset/ModelCollection.java 2011-10-17 04:09:07 UTC (rev 16366) +++ branches/v12_2/Jmol/src/org/jmol/modelset/ModelCollection.java 2011-10-17 04:09:57 UTC (rev 16367) @@ -4087,8 +4087,8 @@ deleteBonds(bsBonds, false); } - public void appendLoadStates(StringBuffer commands) { - boolean isFirst = true; + public void appendLoadStates(StringBuffer cmds) { + StringBuffer commands = new StringBuffer(); for (int i = 0; i < modelCount; i++) { if (isJmolDataFrame(i) || isTrajectorySubFrame(i)) continue; @@ -4106,12 +4106,18 @@ models[i].loadScript = new StringBuffer(); Viewer.getInlineData(commands, getModelExtract(bs, false, true, "MOL"), i > 0); } else { - if (models[i].loadScript.indexOf("append") >= 0 && isFirst) - commands.append("\n zap;\n"); commands.append(models[i].loadScript); } - isFirst = false; } + String s = commands.toString(); + // add a zap command before the first load command. + int i = s.indexOf("load /*data*/"); + int j = s.indexOf("load /*file*/"); + if (j >= 0 && j < i) + i = j; + if (i >= 0) + s = s.substring(0, i) + "zap;" + s.substring(i); + cmds.append(s); } /* Modified: branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java 2011-10-17 04:09:07 UTC (rev 16366) +++ branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java 2011-10-17 04:09:57 UTC (rev 16367) @@ -8396,7 +8396,7 @@ return; case Token.data: isData = true; - loadScript.append(" data"); + loadScript.append(" /*data*/ data"); String key = stringParameter(++i).toLowerCase(); loadScript.append(" ").append(Escape.escape(key)); isAppend = key.startsWith("append"); Modified: branches/v12_2/Jmol/src/org/jmol/viewer/DataManager.java =================================================================== --- branches/v12_2/Jmol/src/org/jmol/viewer/DataManager.java 2011-10-17 04:09:07 UTC (rev 16366) +++ branches/v12_2/Jmol/src/org/jmol/viewer/DataManager.java 2011-10-17 04:09:57 UTC (rev 16367) @@ -359,7 +359,7 @@ static void getInlineData(StringBuffer loadScript, String strModel, boolean isAppend, String loadFilter) { String tag = (isAppend ? "append" : "model") + " inline"; - loadScript.append("load data \"").append(tag).append("\"\n") + loadScript.append("load /*data*/ data \"").append(tag).append("\"\n") .append(strModel).append("end \"").append(tag) .append(loadFilter == null || loadFilter.length() == 0 ? "" : " filter" + Escape.escape(loadFilter)) .append("\";"); Modified: branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties 2011-10-17 04:09:07 UTC (rev 16366) +++ branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties 2011-10-17 04:09:57 UTC (rev 16367) @@ -4,6 +4,7 @@ version=12.2.3_dev +# bug fix: load append twice can cause zap to be in wrong place in state file # bug fix: for (x IN {*}) ... makes x a bitset and leads to array[1] for x.atomName # bug fix: for (x IN {*}.bonds) does not work # ------------------------------------------------------------------------------ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |