From: <ha...@us...> - 2011-12-23 05:17:32
|
Revision: 16631 http://jmol.svn.sourceforge.net/jmol/?rev=16631&view=rev Author: hansonr Date: 2011-12-23 05:17:25 +0000 (Fri, 23 Dec 2011) Log Message: ----------- version=12.2.11_dev # bug fix: parameters can be set to invalid values using xxx = ... instead of set xxx ... Modified Paths: -------------- branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties branches/v12_2/Jmol/src/org/jmol/viewer/Viewer.java Modified: branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java =================================================================== --- branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java 2011-12-22 21:36:53 UTC (rev 16630) +++ branches/v12_2/Jmol/src/org/jmol/script/ScriptEvaluator.java 2011-12-23 05:17:25 UTC (rev 16631) @@ -12227,6 +12227,7 @@ return; } int tok = getToken(1).tok; + int newTok = 0; String sval; int ival = Integer.MAX_VALUE; @@ -12350,9 +12351,6 @@ boolean justShow = true; switch (tok) { - case Token.axesscale: - setFloatProperty("axesScale", floatSetting(2, -100, 100)); - break; case Token.backgroundmodel: if (statementLength > 2) { String modelDotted = stringSetting(2, false); @@ -12418,18 +12416,13 @@ // allows unquoted "jmol" or "rasmol" if (statementLength > 2) { if ((theTok = tokAt(2)) == Token.jmol || theTok == Token.rasmol) { - sval = parameterAsString(checkLast(2)).toLowerCase(); + sval = parameterAsString(checkLast(2)); } else { - sval = stringSetting(2, false).toLowerCase(); + sval = stringSetting(2, false); } - if (!sval.equals("jmol") && !sval.equals("rasmol")) - error(ERROR_invalidArgument); setStringProperty(key, sval); } break; - case Token.dipolescale: - setFloatProperty("dipoleScale", floatSetting(2, -10, 10)); - break; case Token.formalcharge: ival = intSetting(2); if (ival == Integer.MIN_VALUE) @@ -12456,9 +12449,6 @@ if (statementLength > 2) setMeasurementUnits(stringSetting(2, isJmolSet)); break; - case Token.phongexponent: - setIntProperty(key, intSetting(2, Integer.MAX_VALUE, 0, 1000)); - break; case Token.picking: if (!isSyntaxCheck) viewer.setPicked(-1); @@ -12485,49 +12475,20 @@ setIntProperty(key, ival); } break; - case Token.solventproberadius: - setFloatProperty(key, floatSetting(2, 0, 10)); - break; case Token.specular: - case Token.specularpercent: - case Token.ambientpercent: - case Token.diffusepercent: ival = intSetting(2); - if (tok == Token.specular) { - if (ival == Integer.MIN_VALUE || ival == 0 || ival == 1) { - justShow = false; - break; - } - tok = Token.specularpercent; - key = "specularPercent"; + if (ival == Integer.MIN_VALUE || ival == 0 || ival == 1) { + justShow = false; + break; } - setIntProperty(key, intSetting(2, ival, 0, 100)); + tok = Token.specularpercent; + key = "specularPercent"; + setIntProperty(key, ival); break; - case Token.specularpower: - case Token.specularexponent: - ival = intSetting(2); - if (tok == Token.specularpower) { - if (ival >= 0) { - justShow = false; - break; - } - tok = Token.specularexponent; - key = "specularExponent"; - if (ival < -10 || ival > -1) - integerOutOfRange(-10, -1); - ival = -ival; - } - setIntProperty(key, intSetting(2, ival, 0, 10)); - break; case Token.strands: - case Token.strandcount: - case Token.strandcountformeshribbon: - case Token.strandcountforstrands: - if (tok == Token.strands) { - tok = Token.strandcount; - key = "strandCount"; - } - setIntProperty(key, intSetting(2, Integer.MAX_VALUE, 0, 20)); + tok = Token.strandcount; + key = "strandCount"; + setIntProperty(key, intSetting(2)); break; default: justShow = false; @@ -12559,7 +12520,7 @@ break; case Token.radius: newTok = Token.solventproberadius; - setFloatProperty("solventProbeRadius", floatSetting(2, 0, 10)); + setFloatProperty("solventProbeRadius", floatSetting(2)); justShow = true; break; case Token.scale3d: @@ -12863,29 +12824,16 @@ setShapeProperty(JmolConstants.SHAPE_ECHO, propertyName, propertyValue); } - private int intSetting(int pt, int val, int min, int max) - throws ScriptException { - if (val == Integer.MAX_VALUE) - val = intSetting(pt); - if (val != Integer.MIN_VALUE && val < min || val > max) - integerOutOfRange(min, max); - return val; - } - private int intSetting(int pt) throws ScriptException { if (pt == statementLength) return Integer.MIN_VALUE; return ScriptVariable.iValue(parameterExpressionToken(pt)); } - private float floatSetting(int pt, float min, float max) - throws ScriptException { + private float floatSetting(int pt) throws ScriptException { if (pt == statementLength) return Float.NaN; - float val = ScriptVariable.fValue(parameterExpressionToken(pt)); - if (val < min || val > max) - numberOutOfRange(min, max); - return val; + return ScriptVariable.fValue(parameterExpressionToken(pt)); } private String stringSetting(int pt, boolean isJmolSet) Modified: branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties 2011-12-22 21:36:53 UTC (rev 16630) +++ branches/v12_2/Jmol/src/org/jmol/viewer/Jmol.properties 2011-12-23 05:17:25 UTC (rev 16631) @@ -4,6 +4,7 @@ version=12.2.11_dev +# bug fix: parameters can be set to invalid values using xxx = ... instead of set xxx ... # bug fix: (Application) proper Edit...Preferences dialog action # ------------------------------------------------------------------------------ Modified: branches/v12_2/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- branches/v12_2/Jmol/src/org/jmol/viewer/Viewer.java 2011-12-22 21:36:53 UTC (rev 16630) +++ branches/v12_2/Jmol/src/org/jmol/viewer/Viewer.java 2011-12-23 05:17:25 UTC (rev 16631) @@ -1329,6 +1329,7 @@ private void setDefaultColors(boolean isRasmol) { colorManager.setDefaultColors(isRasmol); global.setParameterValue("colorRasmol", isRasmol); + global.setParameterValue("defaultColorScheme", (isRasmol ? "rasmol" : "jmol")); } public float getDefaultTranslucent() { @@ -5722,12 +5723,14 @@ global.helpPath = value; break; case Token.defaults: + if (!value.equalsIgnoreCase("RasMol")) + value = "Jmol"; setDefaults(value); - break; + return; case Token.defaultcolorscheme: // only two are possible: "jmol" and "rasmol" - setDefaultColors(value.equals("rasmol")); - break; + setDefaultColors(value.equalsIgnoreCase("rasmol")); + return; case Token.picking: setPickingMode(value, 0); return; @@ -5901,6 +5904,7 @@ global.sheetSmoothing = value; break; case Token.dipolescale: + value = checkFloatRange(value, -10, 10); global.dipoleScale = value; break; case Token.stereodegrees: @@ -5928,6 +5932,7 @@ transformManager.setScaleAngstromsPerInch(value); break; case Token.solventproberadius: + value = checkFloatRange(value, 0, 10); global.solventProbeRadius = value; break; default: @@ -5991,6 +5996,7 @@ break; case Token.phongexponent: // 11.9.13 + value = checkIntRange(value, 0, 1000); Graphics3D.setPhongExponent(value); break; case Token.helixstep: @@ -6047,10 +6053,15 @@ global.scriptDelay = value; break; case Token.specularpower: + if (value < 0) + value = checkIntRange(value, -10, -1); + else + value = checkIntRange(value, 0, 100); Graphics3D.setSpecularPower(value); break; case Token.specularexponent: - Graphics3D.setSpecularPower(-value); + value = checkIntRange(-value, -10, -1); + Graphics3D.setSpecularPower(value); break; case Token.bondradiusmilliangstroms: setMarBond((short) value); @@ -6060,12 +6071,15 @@ setBooleanProperty(key, tok, value == 1); return; case Token.specularpercent: + value = checkIntRange(value, 0, 100); Graphics3D.setSpecularPercent(value); break; case Token.diffusepercent: + value = checkIntRange(value, 0, 100); Graphics3D.setDiffusePercent(value); break; case Token.ambientpercent: + value = checkIntRange(value, 0, 100); Graphics3D.setAmbientPercent(value); break; case Token.zdepth: @@ -6116,6 +6130,14 @@ global.setParameterValue(key, value); } + private static int checkIntRange(int value, int min, int max) { + return (value < min ? min : value > max ? max : value); + } + + private static float checkFloatRange(float value, float min, float max) { + return (value < min ? min : value > max ? max : value); + } + @Override public void setBooleanProperty(String key, boolean value) { if (key.charAt(0) == '_') { @@ -6197,7 +6219,7 @@ global.disablePopupMenu = true; if (display != null) apiPlatform.setTransparentCursor(display); - } + } break; // 11.9.28 case Token.waitformoveto: @@ -6875,6 +6897,7 @@ } void setAxesScale(float scale) { + scale = checkFloatRange(scale, -100, 100); global.axesScale = scale; axesAreTainted = true; } @@ -6976,6 +6999,7 @@ } private void setStrandCount(int type, int value) { + value = checkIntRange(value, 0, 20); switch (type) { case JmolConstants.SHAPE_STRANDS: global.strandCountForStrands = value; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |