From: <ha...@us...> - 2009-06-13 03:46:02
|
Revision: 11015 http://jmol.svn.sourceforge.net/jmol/?rev=11015&view=rev Author: hansonr Date: 2009-06-13 03:46:00 +0000 (Sat, 13 Jun 2009) Log Message: ----------- version=11.7.42_dev # new feature: load ("filename", nBytesMax) --- and returns "java.io.FileNotFoundException" if file does not exist when nBytesMax == 0, so is a simple test for "Local File Exists" would be if (load("filename",0).length == 0)... Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/FileManager.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java trunk/Jmol/src/org/jmol/viewer/Token.java trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/viewer/FileManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/FileManager.java 2009-06-12 20:46:07 UTC (rev 11014) +++ trunk/Jmol/src/org/jmol/viewer/FileManager.java 2009-06-13 03:46:00 UTC (rev 11015) @@ -344,11 +344,12 @@ /** * - * @param data [0] initially path name, but returned as full path name; [1]file contents (directory listing for a ZIP/JAR file) or error string + * @param data [0] initially path name, but returned as full path name; [1]file contents (directory listing for a ZIP/JAR file) or error string + * @param nBytesMax * @return true if successful; false on error */ - boolean getFileDataOrErrorAsString(String[] data) { + boolean getFileDataOrErrorAsString(String[] data, int nBytesMax) { data[1] = ""; String name = data[0]; if (name == null) @@ -362,7 +363,10 @@ BufferedReader br = (BufferedReader) t; StringBuffer sb = new StringBuffer(8192); String line; - while ((line = br.readLine()) != null) { + int n; + while ((n = sb.length()) < nBytesMax && (line = br.readLine()) != null) { + if (nBytesMax < n - 1 + line.length()) + line = line.substring(0, nBytesMax - n - 1); sb.append(line); sb.append('\n'); } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-06-12 20:46:07 UTC (rev 11014) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2009-06-13 03:46:00 UTC (rev 11015) @@ -2,8 +2,12 @@ # add it on a line starting with # below the "version=..." line version=11.7.42_dev -# -# new feature: print {xxx}.label("",true) -- forces array even if only one atom (like "all") + +# new feature: load ("filename", nBytesMax) --- and returns "java.io.FileNotFoundException" if file +# does not exist when nBytesMax == 0, so is a simple test for "Local File Exists" +# would be if (load("filename",0).length == 0)... +# +# new feature: print {xxx}.label.all("xxxx") -- forces array even if only one atom (like "{xxx}.label.all") # bug fix: color.all not working properly # bug fix: xxx.all was not forcing array when only one value # Modified: trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java 2009-06-12 20:46:07 UTC (rev 11014) +++ trunk/Jmol/src/org/jmol/viewer/ScriptEvaluator.java 2009-06-13 03:46:00 UTC (rev 11015) @@ -534,7 +534,7 @@ debugScript); String[] data = new String[2]; data[0] = filename; - if (!viewer.getFileAsString(data)) { + if (!viewer.getFileAsString(data, Integer.MAX_VALUE)) { setErrorMessage("io error reading " + data[0] + ": " + data[1]); return false; } Modified: trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java 2009-06-12 20:46:07 UTC (rev 11014) +++ trunk/Jmol/src/org/jmol/viewer/ScriptMathProcessor.java 2009-06-13 03:46:00 UTC (rev 11015) @@ -1250,12 +1250,13 @@ } private boolean evaluateLoad(ScriptVariable[] args, int tok) { - if (args.length != 1) + if (args.length > 2 || args.length < 1) return false; if (isSyntaxCheck) return addX(""); String file = ScriptVariable.sValue(args[0]); - return addX(tok == Token.load ? viewer.getFileAsString(file) : viewer + int nBytesMax = (args.length == 2 ? ScriptVariable.iValue(args[1]) : Integer.MAX_VALUE); + return addX(tok == Token.load ? viewer.getFileAsString(file, nBytesMax) : viewer .getFullPath(file)); } Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2009-06-12 20:46:07 UTC (rev 11014) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2009-06-13 03:46:00 UTC (rev 11015) @@ -559,7 +559,6 @@ // xxx(a) - final static int load = 1 | 1 << 9 | mathfunc | command; final static int substructure = 2 | 1 << 9 | mathfunc; final static int javascript = 3 | 1 << 9 | mathfunc | implicitStringCommand; final static int sin = 4 | 1 << 9 | mathfunc; @@ -585,8 +584,9 @@ // xxx(a,b) final static int cross = 1 | 2 << 9 | mathfunc; - final static int random = 2 | 2 << 9 | mathfunc; - final static int script = 3 | 2 << 9 | mathfunc | command; + final static int load = 2 | 2 << 9 | mathfunc | command; + final static int random = 3 | 2 << 9 | mathfunc; + final static int script = 4 | 2 << 9 | mathfunc | command; // ___.xxx(a,b) Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2009-06-12 20:46:07 UTC (rev 11014) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2009-06-13 03:46:00 UTC (rev 11015) @@ -2000,12 +2000,16 @@ } public String getFileAsString(String name) { + return getFileAsString(name, Integer.MAX_VALUE); + } + + public String getFileAsString(String name, int nBytesMax) { if (name == null) return getCurrentFileAsString(); String[] data = new String[2]; data[0] = name; // ignore error completely - getFileAsString(data); + getFileAsString(data, nBytesMax); return data[1]; } @@ -2013,8 +2017,8 @@ return fileManager.getFullPath(name, false); } - boolean getFileAsString(String[] data) { - return fileManager.getFileDataOrErrorAsString(data); + boolean getFileAsString(String[] data, int nBytesMax) { + return fileManager.getFileDataOrErrorAsString(data, nBytesMax); } String[] getFileInfo() { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |