Revision: 18637 http://sourceforge.net/p/jmol/code/18637 Author: hansonr Date: 2013-09-02 05:40:40 +0000 (Mon, 02 Sep 2013) Log Message: ----------- ___JmolVersion="13.3.5_dev_2013.09.01"
new feature: strutureModifiedCallback bug fix: ID @id vector fails new feature: show NMR taps into NMRDB directly -- for now, application only Modified Paths: -------------- trunk/Jmol/examples/basic/org/jmol/Export.java trunk/Jmol/jars/JSpecView.jar trunk/Jmol/src/org/jmol/adapter/readers/quantum/MoldenReader.java trunk/Jmol/src/org/jmol/api/JmolAdapter.java trunk/Jmol/src/org/jmol/script/ScriptCompiler.java trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java trunk/Jmol/src/org/jmol/util/Escape.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/examples/basic/org/jmol/Export.java =================================================================== --- trunk/Jmol/examples/basic/org/jmol/Export.java 2013-09-02 00:07:26 UTC (rev 18636) +++ trunk/Jmol/examples/basic/org/jmol/Export.java 2013-09-02 05:40:40 UTC (rev 18637) @@ -86,6 +86,7 @@ case MINIMIZATION: case RESIZE: case SYNC: + case STRUCTUREMODIFIED: case SCRIPT: case CLICK: case EVAL: Modified: trunk/Jmol/jars/JSpecView.jar =================================================================== (Binary files differ) Modified: trunk/Jmol/src/org/jmol/adapter/readers/quantum/MoldenReader.java =================================================================== --- trunk/Jmol/src/org/jmol/adapter/readers/quantum/MoldenReader.java 2013-09-02 00:07:26 UTC (rev 18636) +++ trunk/Jmol/src/org/jmol/adapter/readers/quantum/MoldenReader.java 2013-09-02 05:40:40 UTC (rev 18637) @@ -213,7 +213,9 @@ slater[1] = type; slater[2] = gaussianPtr; slater[3] = nPrimitives; - nCoef += getDfCoefMaps()[type].length; + int n = getDfCoefMaps()[type].length; + System.out.println("adding " + n + " coefficients type " + JmolAdapter.getQuantumShellTag(type) + " for atom " + atomIndex); + nCoef += n; for (int ip = nPrimitives; --ip >= 0;) { // Read ip primitives, each containing an exponent and one (s,p,d,f) // or two (sp) contraction coefficient(s) @@ -355,7 +357,7 @@ } private boolean checkOrbitalType(String line) { - if (line.length() > 3 && "5D 6D 7F 10 9G 15".indexOf(line.substring(1,3)) >= 0) { + if (line.length() > 3 && "5D 6D 7F 10 9G 15 11 21".indexOf(line.substring(1,3)) >= 0) { if (orbitalType.indexOf(line) >= 0) return true; orbitalType += line; @@ -371,13 +373,16 @@ fixSlaterTypes(JmolAdapter.SHELL_D_CARTESIAN, JmolAdapter.SHELL_D_SPHERICAL); fixSlaterTypes(JmolAdapter.SHELL_F_CARTESIAN, JmolAdapter.SHELL_F_SPHERICAL); fixSlaterTypes(JmolAdapter.SHELL_G_CARTESIAN, JmolAdapter.SHELL_G_SPHERICAL); + fixSlaterTypes(JmolAdapter.SHELL_H_CARTESIAN, JmolAdapter.SHELL_H_SPHERICAL); } if (orbitalType.contains("10F")) { fixSlaterTypes(JmolAdapter.SHELL_F_SPHERICAL, JmolAdapter.SHELL_F_CARTESIAN); fixSlaterTypes(JmolAdapter.SHELL_G_SPHERICAL, JmolAdapter.SHELL_G_CARTESIAN); + fixSlaterTypes(JmolAdapter.SHELL_H_SPHERICAL, JmolAdapter.SHELL_H_CARTESIAN); } if (orbitalType.contains("15G")) { fixSlaterTypes(JmolAdapter.SHELL_G_SPHERICAL, JmolAdapter.SHELL_G_CARTESIAN); + fixSlaterTypes(JmolAdapter.SHELL_H_SPHERICAL, JmolAdapter.SHELL_H_CARTESIAN); } } @@ -456,7 +461,7 @@ boolean haveModel = false; if (desiredModelNumber == 0 || desiredModelNumber == nGeom) desiredModelNumber = nGeom; - else + else if (atomSetCollection.getAtomSetCount() > 0) finalizeMOData(null); for (int i = 0; i < nGeom; i++) { readLines(2); Modified: trunk/Jmol/src/org/jmol/api/JmolAdapter.java =================================================================== --- trunk/Jmol/src/org/jmol/api/JmolAdapter.java 2013-09-02 00:07:26 UTC (rev 18636) +++ trunk/Jmol/src/org/jmol/api/JmolAdapter.java 2013-09-02 05:40:40 UTC (rev 18637) @@ -85,6 +85,8 @@ public final static int SHELL_F_CARTESIAN = EnumQuantumShell.F_CARTESIAN.id; public final static int SHELL_G_SPHERICAL = EnumQuantumShell.G_SPHERICAL.id; public final static int SHELL_G_CARTESIAN = EnumQuantumShell.G_CARTESIAN.id; + public final static int SHELL_H_SPHERICAL = EnumQuantumShell.H_SPHERICAL.id; + public final static int SHELL_H_CARTESIAN = EnumQuantumShell.H_CARTESIAN.id; public static final String SUPPORTED_BASIS_FUNCTIONS = EnumQuantumShell.SUPPORTED_BASIS_FUNCTIONS; public static final String NOTE_SCRIPT_FILE = JC.NOTE_SCRIPT_FILE; @@ -104,6 +106,10 @@ return JC.isHetero(group3); } + public static String getQuantumShellTag(int id) { + return EnumQuantumShell.getQuantumShellTag(id); + } + public static int getQuantumShellTagID(String tag) { return EnumQuantumShell.getQuantumShellTagID(tag); } Modified: trunk/Jmol/src/org/jmol/script/ScriptCompiler.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2013-09-02 00:07:26 UTC (rev 18636) +++ trunk/Jmol/src/org/jmol/script/ScriptCompiler.java 2013-09-02 05:40:40 UTC (rev 18637) @@ -1209,6 +1209,10 @@ && flowContext.var != null && theTok != T.casecmd && theTok != T.defaultcmd && lastToken.tok != T.switchcmd) return ERROR(ERROR_badContext, ident); + if (lastToken.tok == T.define && theTok != T.leftbrace && nTokens != 1) { + addTokenToPrefix(T.o(T.string, ident)); + return CONTINUE; + } switch (theTok) { case T.identifier: if (nTokens == 0 && !checkImpliedScriptCmd) { @@ -2331,12 +2335,6 @@ } break; } - if (Character.isWhitespace(ch)) { - if (ptSpace < 0) - ptSpace = ichT; - } else { - ptLastChar = ichT; - } ++ichT; } // message/echo/label @x Modified: trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2013-09-02 00:07:26 UTC (rev 18636) +++ trunk/Jmol/src/org/jmol/script/ScriptEvaluator.java 2013-09-02 05:40:40 UTC (rev 18637) @@ -8878,8 +8878,19 @@ switch (tok) { case T.file: + i++; + loadScript.append(" " + modelName); + if (tokAt(i) == T.varray) { + filenames = stringParameterSet(i); + i = iToken; + if (i + 1 != slen) + invArg(); + if (filenames != null) + nFiles = filenames.length; + } + break; case T.inline: - isInline = (tok == T.inline); + isInline = true; i++; loadScript.append(" " + modelName); break; @@ -8918,7 +8929,7 @@ default: modelName = "fileset"; } - if (getToken(i).tok != T.string) + if (filenames == null && getToken(i).tok != T.string) error(ERROR_filenameExpected); } // long timeBegin = System.currentTimeMillis(); @@ -8947,31 +8958,33 @@ // end-of-command options: // LOAD SMILES "xxxx" --> load "$xxxx" - // LOAD "['xxxxx','yyyyy','zzzzz']" - if (i == 0 || (filename = parameterAsString(filePt)).length() == 0) + if (i == 0 || filenames == null + && (filename = parameterAsString(filePt)).length() == 0) filename = viewer.getFullPathName(); - if (filename == null) { + if (filename == null && filenames == null) { zap(false); return; } - if (isSmiles) { - filename = "$" + filename; - } else if (!isInline) { - if (filename.indexOf("[]") >= 0) - return; - if (filename.indexOf("[") == 0) { - filenames = Escape.unescapeStringArray(filename); - if (filenames != null) { - if (i == 1) - loadScript.append(" files"); - if (loadScript.indexOf(" files") < 0) - invArg(); - for (int j = 0; j < filenames.length; j++) - loadScript.append(" /*file*/").append(Escape.eS(filenames[j])); + if (filenames == null) + if (isSmiles) { + filename = "$" + filename; + } else if (!isInline) { + if (filename.indexOf("[]") >= 0) + return; + if (filename.indexOf("[") == 0) { + filenames = Escape.unescapeStringArray(filename); + if (filenames != null) { + if (i == 1) + loadScript.append(" files"); + nFiles = filenames.length; + } } } - } + if (filenames != null) + for (int j = 0; j < filenames.length; j++) + loadScript.append(" /*file*/").append(Escape.eS(filenames[j])); + } else if (getToken(i + 1).tok == T.manifest // model/vibration index or list of model indices || theTok == T.integer || theTok == T.varray || theTok == T.leftsquare @@ -9316,7 +9329,6 @@ filenames = new String[nFiles]; for (int j = 0; j < nFiles; j++) filenames[j] = fNames.get(j); - filename = "fileSet"; } // end of parsing @@ -9324,6 +9336,9 @@ if (!doLoadFiles) return; + if (filenames != null) + filename = "fileSet"; + // get default filter if necessary if (appendedData != null) { @@ -9338,9 +9353,9 @@ // If this is a state script, it may have been created using // the DOCACHE flag, but we never want that here, because then // this is a file being loaded from the state script itself. -// if (isStateScript) -// filter = TextFormat -// .simpleReplace(filter.toUpperCase(), "DOCACHE", ""); + // if (isStateScript) + // filter = TextFormat + // .simpleReplace(filter.toUpperCase(), "DOCACHE", ""); if (!isStateScript && !isAppend) viewer.cacheClear(); } Modified: trunk/Jmol/src/org/jmol/util/Escape.java =================================================================== --- trunk/Jmol/src/org/jmol/util/Escape.java 2013-09-02 00:07:26 UTC (rev 18636) +++ trunk/Jmol/src/org/jmol/util/Escape.java 2013-09-02 05:40:40 UTC (rev 18637) @@ -1025,6 +1025,9 @@ } public static String[] unescapeStringArray(String data) { + // was only used for very strange LOAD "[\"...\",\"....\",...]" + // now also used for simulation peaks array from JSpecView, + // which double-escapes strings, I guess //TODO -- should recognize '..' as well as "..." ? if (data == null || !data.startsWith("[") || !data.endsWith("]")) return null; @@ -1035,7 +1038,7 @@ String s = Parser.getQuotedStringNext(data, next); if (s == null) return null; - v.addLast(TextFormat.simpleReplace(s, "\\\"", "\"")); + v.addLast(s); while (next[0] < data.length() && data.charAt(next[0]) != '"') next[0]++; } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-09-02 00:07:26 UTC (rev 18636) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2013-09-02 05:40:40 UTC (rev 18637) @@ -11,8 +11,12 @@ # The quotes above look odd for a parameter file, but they are # important for the JavaScript version of Jmol. -___JmolVersion="13.3.5_dev_2013.08.29" +___JmolVersion="13.3.5_dev_2013.09.01" +new feature: strutureModifiedCallback + +bug fix: ID @id vector fails + new feature: show NMR taps into NMRDB directly -- for now, application only This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more! Discover the easy way to master current and previous Microsoft technologies and advance your career. Get an incredible 1,500+ hours of step-by-step tutorial videos with LearnDevNow. Subscribe today and save! http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk _______________________________________________ Jmol-commits mailing list Jmol-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jmol-commits