From: <ha...@us...> - 2008-06-09 22:59:24
|
Revision: 9473 http://jmol.svn.sourceforge.net/jmol/?rev=9473&view=rev Author: hansonr Date: 2008-06-09 15:59:22 -0700 (Mon, 09 Jun 2008) Log Message: ----------- version=11.5.40_dev # bug fix: missing echocallback, scriptcallback, measurecallback "set"able variables Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/StateManager.java trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-08 09:31:25 UTC (rev 9472) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-09 22:59:22 UTC (rev 9473) @@ -8236,7 +8236,7 @@ private void setPicking() throws ScriptException { if (statementLength == 2) { - setStringProperty("picking", "ident"); + setStringProperty("picking", "identify"); return; } if (statementLength > 4 || tokAt(2) == Token.string) { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-08 09:31:25 UTC (rev 9472) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-09 22:59:22 UTC (rev 9473) @@ -3,6 +3,8 @@ version=11.5.40_dev +# bug fix: missing echocallback, scriptcallback, measurecallback "set"able variables +# bug fix: "set picking identify" should be equivalent to "set picking ident" # bug fix: popup menu had stereo reversed # new feature: signed applet shows frank "Jmol-S" which is NOT removable. Modified: trunk/Jmol/src/org/jmol/viewer/StateManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-06-08 09:31:25 UTC (rev 9472) +++ trunk/Jmol/src/org/jmol/viewer/StateManager.java 2008-06-09 22:59:22 UTC (rev 9473) @@ -742,9 +742,11 @@ + ";picking;pickingstyle;propertycolorschemeoverload;radius;rgbblue;rgbgreen;rgbred" + ";scaleangstromsperinch;selectionhalos;showscript;showselections;solvent;strandcount" + ";spinx;spiny;spinz;spinfps" - + ";animframecallback;loadstructcallback;messagecallback;minimizationcallback;hovercallback" - + ";resizecallback;pickcallback;synccallback" + ";undo;"; + + ";animframecallback;echocallback;evalcallback;loadstructcallback" + + ";measurecallback;messagecallback;minimizationcallback;hovercallback" + + ";resizecallback;pickcallback;scriptcallback;synccallback;undo;"; + boolean isJmolVariable(String key) { return key.charAt(0) == '_' || htParameterValues.containsKey(key = key.toLowerCase()) Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2008-06-08 09:31:25 UTC (rev 9472) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2008-06-09 22:59:22 UTC (rev 9473) @@ -1263,7 +1263,8 @@ "hidden", new Token(hidden), "hydrogen", new Token(hydrogen), "hydrogens", null, - "ident", new Token(ident), + "identify", new Token(ident), + "ident", null, "info", new Token(info), "insertion", new Token(insertion), "insertions", null, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-06-13 14:35:25
|
Revision: 9481 http://jmol.svn.sourceforge.net/jmol/?rev=9481&view=rev Author: hansonr Date: 2008-06-13 07:34:50 -0700 (Fri, 13 Jun 2008) Log Message: ----------- version=11.5.40_dev selectX # new feature: new command: # # selectx {atomExpression} booleanEvaluation # # same as select() function, but simpler to implement # Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-06-13 12:08:23 UTC (rev 9480) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-06-13 14:34:50 UTC (rev 9481) @@ -1411,6 +1411,7 @@ boolean isImplicitExpression; boolean isSetOrDefine; + boolean isSelectX; Token tokenCommand; int tokCommand; @@ -1431,6 +1432,7 @@ tokCommand = tokenCommand.tok; isImplicitExpression = tokAttr(tokCommand, Token.implicitExpression); isSetOrDefine = (tokCommand == Token.set || tokCommand == Token.define); + isSelectX = (tokCommand == Token.selectx); isCommaAsOrAllowed = tokAttr(tokCommand, Token.expressionCommand); int size = ltoken.size(); if (size == 1 && !tokAttr(tokCommand, Token.flowCommand) @@ -1525,7 +1527,7 @@ if (!isImplicitExpression && !(isEmbeddedExpression && lastToken == Token.tokenCoordinateEnd)) addTokenToPostfix(Token.tokenExpressionEnd); - if (moreTokens() && !isEmbeddedExpression) + if (!isSelectX && moreTokens() && !isEmbeddedExpression) return error(ERROR_endOfExpressionExpected); } atokenInfix = new Token[ltokenPostfix.size()]; Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-13 12:08:23 UTC (rev 9480) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-13 14:34:50 UTC (rev 9481) @@ -987,6 +987,9 @@ case Token.select: select(); break; + case Token.selectx: + selectX(); + break; case Token.translate: translate(); break; @@ -5343,6 +5346,21 @@ } } + private void selectX() throws ScriptException { + // NOTE this is called by restrict() + if (statementLength == 1) { + viewer.select(null, tQuiet || scriptLevel > scriptReportingLevel); + return; + } + Object v = tokenSetting(0).value; + if (!(v instanceof BitSet)) + error(ERROR_invalidArgument); + checkStatementLength(++iToken); + if (isSyntaxCheck) + return; + viewer.select((BitSet)v, tQuiet || scriptLevel > scriptReportingLevel); + } + private void subset() throws ScriptException { BitSet bs = (statementLength == 1 ? null : expression(-1)); if (isSyntaxCheck) @@ -6925,7 +6943,7 @@ } private int intSetting(int pt) throws ScriptException { - Vector v = (Vector) parameterExpression(pt, 0, "XXX", true); + Vector v = (Vector) parameterExpression(pt, -1, "XXX", true); if (v == null || v.size() == 0) error(ERROR_invalidArgument); return Token.iValue((Token) v.elementAt(0)); @@ -6939,7 +6957,7 @@ } private float floatSetting(int pt) throws ScriptException { - Vector v = (Vector) parameterExpression(pt, 0, "XXX", true); + Vector v = (Vector) parameterExpression(pt, -1, "XXX", true); if (v == null || v.size() == 0) error(ERROR_invalidArgument); return Token.fValue((Token) v.elementAt(0)); @@ -6948,14 +6966,14 @@ private String stringSetting(int pt, boolean isJmolSet) throws ScriptException { if (isJmolSet && statementLength == pt + 1) return parameterAsString(pt); - Vector v = (Vector) parameterExpression(pt, 0, "XXX", true); + Vector v = (Vector) parameterExpression(pt, -1, "XXX", true); if (v == null || v.size() == 0) error(ERROR_invalidArgument); return Token.sValue((Token) v.elementAt(0)); } private Token tokenSetting(int pt) throws ScriptException { - Vector v = (Vector) parameterExpression(pt, 0, "XXX", true); + Vector v = (Vector) parameterExpression(pt, -1, "XXX", true); if (v == null || v.size() == 0) error(ERROR_invalidArgument); return (Token) v.elementAt(0); @@ -7157,6 +7175,9 @@ Hashtable localVars) throws ScriptException { Object v; + boolean isOneExpressionOnly = (pt < 0); + if (isOneExpressionOnly) + pt = -pt; boolean isSetCmd = (key != null && key.length() > 0); Rpn rpn = new Rpn(64, isSetCmd && tokAt(pt) == Token.leftsquare, asVector); if (ptMax < pt) @@ -7164,20 +7185,28 @@ out: for (int i = pt; i < ptMax; i++) { v = null; switch (getToken(i).tok) { + case Token.selectx: + if (i != 0) + error(ERROR_invalidArgument); + // fall through case Token.select: - if (getToken(++i).tok != Token.leftparen - || getToken(++i).tok != Token.identifier) - error(ERROR_invalidArgument); - String dummy = parameterAsString(i); - if (getToken(++i).tok != Token.semicolon) - error(ERROR_invalidArgument); - v = tokenSetting(++i).value; + String dummy = "x"; + boolean isSelectX = (theTok == Token.selectx); + if (!isSelectX) { + if (getToken(++i).tok != Token.leftparen + || getToken(++i).tok != Token.identifier) + error(ERROR_invalidArgument); + dummy = parameterAsString(i); + if (getToken(++i).tok != Token.semicolon) + error(ERROR_invalidArgument); + } + v = tokenSetting(-(++i)).value; if (!(v instanceof BitSet)) error(ERROR_invalidArgument); BitSet bsAtoms = (BitSet) v; - if (getToken(i = iToken).tok != Token.semicolon) + i = iToken; + if (!isSelectX && getToken(i++).tok != Token.semicolon) error(ERROR_invalidArgument); - ++i; //skip semicolon BitSet bsSelect = new BitSet(); BitSet bsX = new BitSet(); Token.Token2 t = null; @@ -7193,9 +7222,15 @@ if (((Boolean) parameterExpression(i, -1, null, false, j, localVars)) .booleanValue()) bsSelect.set(j); - if (tokAt(iToken) != Token.rightparen) + if (!isSelectX && tokAt(iToken) != Token.rightparen) error(ERROR_invalidArgument); } + if (isSelectX) { + Vector resx = new Vector(); + if (v instanceof BitSet) + resx.addElement(new Token(Token.bitset, v)); + return resx; + } i = iToken; v = bsSelect; break; @@ -7227,6 +7262,13 @@ case Token.expressionBegin: v = expression(statement, i, 0, true, true, true, true); i = iToken; + if (isOneExpressionOnly) { + iToken++; // skip end expression + Vector res = new Vector(); + if (v instanceof BitSet) + res.addElement(new Token(Token.bitset, v)); + return res; + } break; case Token.expressionEnd: i++; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-13 12:08:23 UTC (rev 9480) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-13 14:34:50 UTC (rev 9481) @@ -3,6 +3,12 @@ version=11.5.40_dev +# new feature: new command: +# +# selectx {atomExpression} booleanEvaluation +# +# same as select() function, but simpler to implement +# # new feature: full math on individual atom properties using # a new function: # Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2008-06-13 12:08:23 UTC (rev 9480) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2008-06-13 14:34:50 UTC (rev 9481) @@ -181,7 +181,7 @@ final static int rotate = command | 27 | numberOrExpression; final static int save = command | 28; // final static int script = command | 29; with mathfunc - // final static int select = command | 30 | expressionCommand; with mathfunc + final static int selectx = command | 30 | implicitExpression; final static int set = command | 31 | implicitExpression | colorparam; final static int show = command | 32; final static int slab = command | 33 | numberOrExpression; @@ -498,6 +498,7 @@ final static int point = 1 | 3 << 3 | mathfunc; final static int select = 2 | 3 << 3 | mathfunc | expressionCommand; + // xxx(a,b,c,d) final static int angle = 1 | 4 << 3 | mathfunc; @@ -1102,6 +1103,7 @@ "script", new Token(script, varArgCount), "source", null, "select", new Token(select, varArgCount), + "selectX", new Token(selectx, varArgCount), "selectionHalos", new Token(selectionHalo, onDefault1), "selectionHalo", null, "set", new Token(set, varArgCount), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-06-15 07:29:28
|
Revision: 9490 http://jmol.svn.sourceforge.net/jmol/?rev=9490&view=rev Author: hansonr Date: 2008-06-15 00:29:27 -0700 (Sun, 15 Jun 2008) Log Message: ----------- 11.5.41 VERSION bug fixes Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/JmolConstants.java Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-15 06:54:58 UTC (rev 9489) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-15 07:29:27 UTC (rev 9490) @@ -8998,7 +8998,7 @@ value = viewer.getColorSchemeList(name, true); } else if (str.equalsIgnoreCase("menu")) { if (!isSyntaxCheck) - value = viewer.getMenu(); + value = viewer.getMenu(""); } else if (str.equalsIgnoreCase("strandCount")) { msg = "set strandCountForStrands " + viewer.getStrandCount(JmolConstants.SHAPE_STRANDS) + "; set strandCountForMeshRibbon " + viewer.getStrandCount(JmolConstants.SHAPE_MESHRIBBON); Modified: trunk/Jmol/src/org/jmol/viewer/JmolConstants.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-06-15 06:54:58 UTC (rev 9489) +++ trunk/Jmol/src/org/jmol/viewer/JmolConstants.java 2008-06-15 07:29:27 UTC (rev 9490) @@ -2190,8 +2190,9 @@ "C7", // 49 - base methyl carbon, unique to DT "H1", // 50 - NOT backbone - "H3", // 51 - NOT backbone - null, null, null, //52 + "H2", // 51 - NOT backbone -- see 1jve + "H3", // 52 - NOT backbone + null, null, //53 null, null, null, null, null, //55 null, null, null, null, //60 - 63 @@ -2243,7 +2244,6 @@ "HA2", "HA3", "HA2", - "H2", "H5'", "H5''", "H2'", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-06-15 21:17:11
|
Revision: 9491 http://jmol.svn.sourceforge.net/jmol/?rev=9491&view=rev Author: hansonr Date: 2008-06-15 14:17:09 -0700 (Sun, 15 Jun 2008) Log Message: ----------- 11.5.41 VERSION Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-06-15 07:29:27 UTC (rev 9490) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-06-15 21:17:09 UTC (rev 9491) @@ -293,7 +293,7 @@ break; String scrap = script.substring(pt, pt1); if ((pt2 = scrap.indexOf(JmolConstants.EMBEDDED_SCRIPT_TAG)) >= 0) - return scrap.substring(pt2 + 30); + return cleanScriptComments(scrap.substring(pt2 + 30)); script = script.substring(0, pt) + script.substring(pt1 + 3); } while ((pt = script.indexOf("/*")) >= 0) { Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-15 07:29:27 UTC (rev 9490) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-15 21:17:09 UTC (rev 9491) @@ -1,8 +1,9 @@ # Developers: to add a description of changes you have made, # add it on line starting with # below the "version=..." line -version=11.5.41_dev +version=11.5.41 +# bug fix: Jmol Embedded scripts containing script comments /* */ # new feature: getproperty menu current # bug fix: 11.5.40 cannot read most state scripts. # ----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-06-23 01:03:10
|
Revision: 9513 http://jmol.svn.sourceforge.net/jmol/?rev=9513&view=rev Author: hansonr Date: 2008-06-22 18:03:03 -0700 (Sun, 22 Jun 2008) Log Message: ----------- 11.5.42 VERSION (b) # bug fix: color of NaN float values changed from "center of color scheme" to GRAY # bug fix: connect "_1" was inadvertently dropped in 11.5.26. # bug fix: state script fails to save data for atoms created using the quaternion command # bug fix: axes/boundbox/unitcell dotted not working since 11.5.6 # bug fix: spin thread not stopped for applet destroy() # bug fix: quaternion derivative for i/i+1 assigned to i+1 instead of i; now assigned to i # bug fix: quaternion calculation using published algorithms was giving inverted quaternions # # new feature: set PICKLABEL "xxx" -- allows customized pick reports # # for example: set pickLabel "%n x = %x, y = %y, z = %z" # # new feature: "quaternion derivative" --> "quaternion difference", which is more # appropriate, we think, with "absolute" and "relative" qualifiers: # # quaternion absolute difference # in the molecular frame # quaternion relative difference # in the (local) frame of first quaternion: # # dq_absolute = q2 * q1_inverse # dq_relative = q1_inverse * q2 # # absolute involves un-doing q1's rotation (making it the reference frame), then applying q2. # relative involves applying q2 (maintaining the original reference frame), then undoing q1. # # new feature: quaternion [w|x|y|z|a|r] [difference][2] [draw] # new feature: draw quaternion [w|x|y|z|a|r] [difference][2] # new feature: write quaternion [w|x|y|z|a|r] [difference][2] [draw] # and with that: write("quaternion" [,"w"|"x"|"y"|"z"|"a"|"r"][,"difference"|"difference2"][,"draw"]) # # new feature: set quaternionFrame "N" -- for solid state NMR PISEMA 15N chemical shift frame # using alpha = 0 and beta = 17 degrees. # # new feature: select whatever; quaternion draw # draws x,y,z and n vectors for a quaternion center # # new feature: straightness, defined as: # # straightness = 2*|n(dq1).dot(n(dq2))| - 1 # # where q1 and q2 are quaternions defined generally as: # # q = frame{ vA, (vC x vA), vC } # # using quaternionFrame "p", which I define as # # protein: # # vA = C--CA # vB = C--N[i+1] # # purine: # # vA = N9--C4 # vB = N9--C8 # # pyrimidine: # # vA = N1--C2 # vB = N1--C6 # # Differences dq1 and dq2 are absolute quaternion differences # on the two sides of a residue: # # dq1 === q[i] * q[i-1]_inverse # dq2 === q[i+1] * q[i]_inverse # # and n(dq) = the normal vector associated with this quaternion. # Range is from -1 to 1 # # applications (note that CALCULATE must be invoked first): # # calculate straightness # must be invoked first; # color straightness; # select straightness < 0.70; # rounds to nearest hundredth # selectX {*} x.straightness < 0.995 # does not round # # new feature: "%T" label format for straightness # # ----------------------------------------------------------------------------- Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-23 00:06:48 UTC (rev 9512) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-23 01:03:03 UTC (rev 9513) @@ -4463,7 +4463,8 @@ private void dataFrame(int datatype) throws ScriptException { String type = ""; boolean isQuaternion = false; - boolean isDraw = false; + boolean isDraw = (tokAt(0) == Token.draw); + int pt0 = (isDraw ? 1 : 0); boolean isDerivative = false; boolean isSecondDerivative = false; switch (datatype) { @@ -4483,7 +4484,7 @@ isSecondDerivative = (isDerivative && type.indexOf("2") > 0); if (isDerivative) pt--; - type = ((pt == 0 ? "" : optParameterAsString(pt))+"w").substring(0, 1); + type = ((pt <= pt0 ? "" : optParameterAsString(pt))+"w").substring(0, 1); if (type == "a" || type == "r") isDerivative = true; if (!Parser.isOneOf(type, "w;x;y;z;r;a")) // a absolute; r relative @@ -9514,6 +9515,10 @@ viewer.loadShape(JmolConstants.SHAPE_DRAW); if (tokAt(1) == Token.list && listIsosurface(JmolConstants.SHAPE_DRAW)) return; + if (tokAt(1) == Token.quaternion) { + dataFrame(JmolConstants.JMOL_DATA_QUATERNION); + return; + } boolean havePoints = false; boolean isInitialized = false; boolean isSavedState = false; Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-23 00:06:48 UTC (rev 9512) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-23 01:03:03 UTC (rev 9513) @@ -28,6 +28,7 @@ # relative involves applying q2 (maintaining the original reference frame), then undoing q1. # # new feature: quaternion [w|x|y|z|a|r] [difference][2] [draw] +# new feature: draw quaternion [w|x|y|z|a|r] [difference][2] # new feature: write quaternion [w|x|y|z|a|r] [difference][2] [draw] # and with that: write("quaternion" [,"w"|"x"|"y"|"z"|"a"|"r"][,"difference"|"difference2"][,"draw"]) # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-06-30 15:01:18
|
Revision: 9536 http://jmol.svn.sourceforge.net/jmol/?rev=9536&view=rev Author: hansonr Date: 2008-06-30 08:00:22 -0700 (Mon, 30 Jun 2008) Log Message: ----------- version=11.5.43 # new feature/feature change: # # selectX is no longer necessary. Simply use # # select {atomExpression} (property expression) # # with no "x." An implied variable "_x" can be used explicitly: # # select {*} (straightness < 0.995) # does not round # select {*.ca} (atomY < atomX) # select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi)) # Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/Token.java Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-06-30 05:09:59 UTC (rev 9535) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-06-30 15:00:22 UTC (rev 9536) @@ -1414,7 +1414,6 @@ boolean isImplicitExpression; boolean isSetOrDefine; - boolean isSelectX; Token tokenCommand; int tokCommand; @@ -1435,7 +1434,6 @@ tokCommand = tokenCommand.tok; isImplicitExpression = tokAttr(tokCommand, Token.implicitExpression); isSetOrDefine = (tokCommand == Token.set || tokCommand == Token.define); - isSelectX = (tokCommand == Token.selectx); isCommaAsOrAllowed = tokAttr(tokCommand, Token.expressionCommand); int size = ltoken.size(); if (size == 1 && !tokAttr(tokCommand, Token.flowCommand) @@ -1456,9 +1454,6 @@ //compile expressions -// isEmbeddedExpression = (tokAttr(tokCommand, Token.embeddedExpression)); -// boolean checkExpression = (tokAttrOr(tokCommand, Token.expressionCommand, - // Token.embeddedExpression)); isEmbeddedExpression = tokCommand != Token.function && (!tokAttrOr(tokCommand, Token.expressionCommand, Token.specialstring)); boolean checkExpression = isEmbeddedExpression || (tokAttr(tokCommand, Token.expressionCommand)); @@ -1508,6 +1503,7 @@ int firstToken = (isSetOrDefine && !isSetBrace ? 2 : 1); ltokenPostfix = new Vector(); itokenInfix = 0; + Token tokenBegin = null; for (int i = 0; i < firstToken && addNextToken(); i++) { } while (moreTokens()) { @@ -1523,15 +1519,27 @@ continue; } if (!isImplicitExpression) - addTokenToPostfix(Token.tokenExpressionBegin); + addTokenToPostfix(tokenBegin = new Token(Token.expressionBegin, "implicitExpressionBegin")); if (!clauseOr(isCommaAsOrAllowed || !isImplicitExpression && tokPeek(Token.leftparen))) return false; if (!isImplicitExpression - && !(isEmbeddedExpression && lastToken == Token.tokenCoordinateEnd)) + && !(isEmbeddedExpression && lastToken == Token.tokenCoordinateEnd)) { addTokenToPostfix(Token.tokenExpressionEnd); - if (!isSelectX && moreTokens() && !isEmbeddedExpression) - return error(ERROR_endOfExpressionExpected); + tokenBegin.intValue = ltokenPostfix.size(); + } + if (moreTokens()) { + if (tokCommand != Token.select && !isEmbeddedExpression) + return error(ERROR_endOfExpressionExpected); + if (tokCommand == Token.select) { + // advanced select, with two expressions, the first + // being an atom expression; the second being a property selector expression + tokCommand = Token.nada; + isEmbeddedExpression = true; + isImplicitExpression = true; + isCommaAsOrAllowed = false; + } + } } atokenInfix = new Token[ltokenPostfix.size()]; ltokenPostfix.copyInto(atokenInfix); Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-30 05:09:59 UTC (rev 9535) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-30 15:00:22 UTC (rev 9536) @@ -989,9 +989,6 @@ case Token.select: select(); break; - case Token.selectx: - selectX(); - break; case Token.translate: translate(); break; @@ -5376,7 +5373,16 @@ } error(ERROR_invalidArgument); } - BitSet bs = expression(1); + BitSet bs = null; + if (getToken(1).intValue != statementLength) { + Object v = tokenSetting(0).value; + if (!(v instanceof BitSet)) + error(ERROR_invalidArgument); + checkStatementLength(++iToken); + bs = (BitSet) v; + } else { + bs = expression(1); + } if (isSyntaxCheck) return; if (isBondSet) { @@ -5386,20 +5392,6 @@ } } - private void selectX() throws ScriptException { - if (statementLength == 1) { - viewer.select(null, tQuiet || scriptLevel > scriptReportingLevel); - return; - } - Object v = tokenSetting(0).value; - if (!(v instanceof BitSet)) - error(ERROR_invalidArgument); - checkStatementLength(++iToken); - if (isSyntaxCheck) - return; - viewer.select((BitSet)v, tQuiet || scriptLevel > scriptReportingLevel); - } - private void subset() throws ScriptException { BitSet bs = (statementLength == 1 ? null : expression(-1)); if (isSyntaxCheck) @@ -7034,7 +7026,9 @@ } int tokProperty = Token.nada; if (tokAt(pt) == Token.dot) { - Token token = getBitsetPropertySelector(pt++, true); + Token token = getBitsetPropertySelector(++pt, true); + if (token == null) + error(ERROR_invalidArgument); if (tokAt(++pt) != Token.opEQ) error(ERROR_invalidArgument); pt++; @@ -7212,15 +7206,17 @@ private Object parameterExpression(int pt, int ptMax, String key, boolean asVector) throws ScriptException { - return parameterExpression(pt, ptMax, key, asVector, -1, null); + return parameterExpression(pt, ptMax, key, asVector, -1, null, null); } private Object parameterExpression(int pt, int ptMax, String key, boolean asVector, int ptAtom, - Hashtable localVars) + Hashtable localVars, String localVar) throws ScriptException { Object v; + boolean isSelectX = (pt == 0); boolean isOneExpressionOnly = (pt < 0); + boolean isImplicitAtomProperty = (localVar != null); if (isOneExpressionOnly) pt = -pt; int nParen = 0; @@ -7230,14 +7226,18 @@ ptMax = statementLength; out: for (int i = pt; i < ptMax; i++) { v = null; - switch (getToken(i).tok) { - case Token.selectx: - if (i != 0) - error(ERROR_invalidArgument); - // fall through + int tok = getToken(i).tok; + if (isImplicitAtomProperty && tokAt(i + 1) != Token.dot) { + if (Compiler.tokAttr(tok, Token.atomproperty)) { + rpn.addX((Token) localVars.get(localVar)); + if (!rpn.addOp(new Token(Token.propselector, tok, parameterAsString(i).toLowerCase()))) + error(ERROR_invalidArgument); + continue; + } + } + switch (tok) { case Token.select: - String dummy = "x"; - boolean isSelectX = (theTok == Token.selectx); + String dummy = "_x"; if (!isSelectX) { if (getToken(++i).tok != Token.leftparen || getToken(++i).tok != Token.identifier) @@ -7265,8 +7265,8 @@ bsX.clear(); bsX.set(j); t.intValue2 = j; - if (((Boolean) parameterExpression(i, -1, null, false, j, localVars)) - .booleanValue()) + if (((Boolean) parameterExpression(i, -1, null, false, j, + localVars, isSelectX ? dummy : null)).booleanValue()) bsSelect.set(j); if (!isSelectX && tokAt(iToken) != Token.rightparen) error(ERROR_invalidArgument); @@ -7317,7 +7317,9 @@ error(ERROR_invalidArgument); break; case Token.dot: - Token token = getBitsetPropertySelector(i, false); + Token token = getBitsetPropertySelector(i + 1, false); + if (token == null) + error(ERROR_invalidArgument); //check for added min/max modifier if (tokAt(iToken + 1) == Token.dot) { if (tokAt(iToken + 2) == Token.all) { @@ -7565,16 +7567,17 @@ private Token getBitsetPropertySelector(int i, boolean mustBeSettable) throws ScriptException { - int tok = getToken(++i).tok; - String s = parameterAsString(i).toLowerCase(); + int tok = getToken(i).tok; + String s = null; switch (tok) { default: if (Compiler.tokAttrOr(tok, Token.atomproperty, Token.mathproperty)) break; - error(ERROR_invalidArgument); + return null; case Token.property: break; case Token.identifier: + s = parameterAsString(i).toLowerCase(); if (s.equals("x")) tok = Token.atomX; else if (s.equals("y")) @@ -7584,11 +7587,13 @@ else if (s.equals("w")) tok = Token.qw; else - error(ERROR_invalidArgument); + return null; break; } if (mustBeSettable && !Compiler.tokAttr(tok, Token.settable)) - error(ERROR_invalidArgument); + return null; + if (s == null) + s = parameterAsString(i).toLowerCase(); return new Token(Token.propselector, tok, s); } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-30 05:09:59 UTC (rev 9535) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-30 15:00:22 UTC (rev 9536) @@ -3,6 +3,18 @@ version=11.5.43 +# new feature/feature change: +# +# selectX is no longer necessary. Simply use +# +# select {atomExpression} (property expression) +# +# with no "x." An implied variable "_x" can be used explicitly: +# +# select {*} (straightness < 0.995) # does not round +# select {*.ca} (atomY < atomX) +# select {*.ca} (phi < select(y; {*.ca}; y.resno = _x.resno + 1).phi)) +# # new feature: quaterion % point4f --- "thetaDirected" -- # point4f is {x, y, z, w} (w ignored), where {x y z} is a # preferred direction. Modified: trunk/Jmol/src/org/jmol/viewer/Token.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Token.java 2008-06-30 05:09:59 UTC (rev 9535) +++ trunk/Jmol/src/org/jmol/viewer/Token.java 2008-06-30 15:00:22 UTC (rev 9536) @@ -181,7 +181,6 @@ final static int rotate = command | 27 | numberOrExpression; final static int save = command | 28; // final static int script = command | 29; with mathfunc - final static int selectx = command | 30 | implicitExpression; final static int set = command | 31 | implicitExpression | colorparam; final static int show = command | 32; final static int slab = command | 33 | numberOrExpression; @@ -463,7 +462,7 @@ // ___.xxx(a) - // a.distance(b) is in a different set -- x.distance(b,c) -- because it CAN take + // a.distance(b) is in a different set -- distance(b,c) -- because it CAN take // two parameters and it CAN be a dot-function (but not both together) final static int split = 0 | 1 << 3 | mathfunc | mathproperty; @@ -1108,7 +1107,6 @@ "script", new Token(script, varArgCount), "source", null, "select", new Token(select, varArgCount), - "selectX", new Token(selectx, varArgCount), "selectionHalos", new Token(selectionHalo, onDefault1), "selectionHalo", null, "set", new Token(set, varArgCount), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-01 04:29:14
|
Revision: 9539 http://jmol.svn.sourceforge.net/jmol/?rev=9539&view=rev Author: hansonr Date: 2008-06-30 21:29:07 -0700 (Mon, 30 Jun 2008) Log Message: ----------- 11.5.44 VERSION # bug fix: select @x broken in 11.5.43 Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Compiler.java trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Compiler.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-06-30 21:45:50 UTC (rev 9538) +++ trunk/Jmol/src/org/jmol/viewer/Compiler.java 2008-07-01 04:29:07 UTC (rev 9539) @@ -1526,7 +1526,6 @@ if (!isImplicitExpression && !(isEmbeddedExpression && lastToken == Token.tokenCoordinateEnd)) { addTokenToPostfix(Token.tokenExpressionEnd); - tokenBegin.intValue = ltokenPostfix.size(); } if (moreTokens()) { if (tokCommand != Token.select && !isEmbeddedExpression) @@ -1534,6 +1533,7 @@ if (tokCommand == Token.select) { // advanced select, with two expressions, the first // being an atom expression; the second being a property selector expression + tokenBegin.intValue = 0; tokCommand = Token.nada; isEmbeddedExpression = true; isImplicitExpression = true; Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-06-30 21:45:50 UTC (rev 9538) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-01 04:29:07 UTC (rev 9539) @@ -5374,7 +5374,7 @@ error(ERROR_invalidArgument); } BitSet bs = null; - if (getToken(1).intValue != statementLength) { + if (getToken(1).intValue == 0) { Object v = tokenSetting(0).value; if (!(v instanceof BitSet)) error(ERROR_invalidArgument); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-06-30 21:45:50 UTC (rev 9538) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-01 04:29:07 UTC (rev 9539) @@ -1,8 +1,11 @@ # Developers: to add a description of changes you have made, # add it on line starting with # below the "version=..." line -version=11.5.44_dev +version=11.5.44 +# bug fix: select @x broken in 11.5.43 +# + # ----------------------------------------------------------------------------- #version=11.5.43 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-01 12:21:29
|
Revision: 9540 http://jmol.svn.sourceforge.net/jmol/?rev=9540&view=rev Author: hansonr Date: 2008-07-01 05:20:45 -0700 (Tue, 01 Jul 2008) Log Message: ----------- version=11.5.44 # bug fix: select @x broken in 11.5.43 # bug fix: integer addition not remaining integer Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-01 04:29:07 UTC (rev 9539) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-01 12:20:45 UTC (rev 9540) @@ -12451,6 +12451,7 @@ private boolean evaluateWithin(Token[] args) throws ScriptException { if (args.length < 1) return false; + int i = args.length; Object withinSpec = args[0].value; int tok = args[0].tok; String withinStr = "" + withinSpec; @@ -12458,9 +12459,16 @@ float distance = 0; boolean isSequence = false; boolean isBoundbox = false; - int i = args.length; boolean isWithinModelSet = false; boolean isDistance = (tok == Token.decimal || tok == Token.integer); + if (withinStr.equals("branch")) { + if (i != 3 || !(args[1].value instanceof BitSet) + || !(args[2].value instanceof BitSet)) + return false; + return addX(viewer.getConnectedBitSet(BitSetUtil + .firstSetBit((BitSet) args[2].value), BitSetUtil + .firstSetBit((BitSet) args[1].value))); + } if (withinSpec instanceof String) { isSequence = !Parser.isOneOf(withinStr, "element;site;group;chain;structure;molecule;model;boundbox"); @@ -12499,8 +12507,9 @@ plane = (Point4f) args[i].value; else if (args[i].value instanceof Point3f) pt = (Point3f) args[i].value; - - if (i > 0 && plane == null && pt == null && !(args[i].value instanceof BitSet)) + + if (i > 0 && plane == null && pt == null + && !(args[i].value instanceof BitSet)) return false; if (isSyntaxCheck) return addX(bs); @@ -12750,6 +12759,14 @@ case Token.plus: if (x1.tok == Token.list || x2.tok == Token.list) return addX(Token.concatList(x1, x2)); + if (x1.tok == Token.integer) { + if (x2.tok == Token.string) { + if ((s = (Token.sValue(x2)).trim()).indexOf(".") < 0 + && s.indexOf("+") <= 0 && s.lastIndexOf("-") <= 0) + return addX(x1.intValue + Token.iValue(x2)); + } else if (x2.tok != Token.decimal) + return addX(x1.intValue + Token.iValue(x2)); + } switch (x1.tok) { default: return addX(Token.fValue(x1) + Token.fValue(x2)); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-01 04:29:07 UTC (rev 9539) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-01 12:20:45 UTC (rev 9540) @@ -4,7 +4,7 @@ version=11.5.44 # bug fix: select @x broken in 11.5.43 -# +# bug fix: integer addition not remaining integer # ----------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-01 16:26:30
|
Revision: 9544 http://jmol.svn.sourceforge.net/jmol/?rev=9544&view=rev Author: hansonr Date: 2008-07-01 09:26:14 -0700 (Tue, 01 Jul 2008) Log Message: ----------- version=11.5.44 bug fixes # bug fix: math calculation .xyz, .color averages broken in 11.5.42 # bug fix: select @x broken in 11.5.43 Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-01 12:57:03 UTC (rev 9543) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-01 16:26:14 UTC (rev 9544) @@ -7836,16 +7836,20 @@ break; case Token.xyz: pt.add(atom); + fv = 0; break; case Token.fracXyz: pt.add(atom.getFractionalCoord()); + fv = 0; break; case Token.vibXyz: pt.add(viewer.getVibrationVector(i)); + fv = 0; break; case Token.color: pt.add(Graphics3D.colorPointFromInt(viewer.getColixArgb(atom .getColix()), ptT)); + fv = 0; break; default: error(ERROR_unrecognizedAtomProperty, Token.nameOf(tok)); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-01 12:57:03 UTC (rev 9543) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-01 16:26:14 UTC (rev 9544) @@ -3,6 +3,7 @@ version=11.5.44 +# bug fix: math calculation .xyz, .color averages broken in 11.5.42 # bug fix: select @x broken in 11.5.43 # bug fix: integer addition not remaining integer This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-01 16:50:05
|
Revision: 9545 http://jmol.svn.sourceforge.net/jmol/?rev=9545&view=rev Author: hansonr Date: 2008-07-01 09:49:39 -0700 (Tue, 01 Jul 2008) Log Message: ----------- version=11.5.44 # bug fix: _applet variable not initializing properly Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/Viewer.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-01 16:26:14 UTC (rev 9544) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-01 16:49:39 UTC (rev 9545) @@ -3,6 +3,7 @@ version=11.5.44 +# bug fix: _applet variable not initializing properly # bug fix: math calculation .xyz, .color averages broken in 11.5.42 # bug fix: select @x broken in 11.5.43 # bug fix: integer addition not remaining integer Modified: trunk/Jmol/src/org/jmol/viewer/Viewer.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-07-01 16:26:14 UTC (rev 9544) +++ trunk/Jmol/src/org/jmol/viewer/Viewer.java 2008-07-01 16:49:39 UTC (rev 9545) @@ -268,6 +268,7 @@ this.syncId = (i < 0 ? "" : fullName .substring(i + 1, fullName.length() - 1)); isApplet = (documentBase != null); + String str = appletProxyOrCommandOptions; if (str == null) str = ""; @@ -283,6 +284,7 @@ if (useCommandThread) scriptManager.startCommandWatcher(true); isSignedApplet = (isApplet && str.indexOf("-signed") >= 0); + setBooleanProperty("_applet", isApplet); setBooleanProperty("_signedApplet", isSignedApplet); setBooleanProperty("_useCommandThread", useCommandThread); if (!isApplet) { @@ -3161,7 +3163,6 @@ } public void renderScreenImage(Graphics g, Dimension size, Rectangle clip) { - //System.out.println("renderScreenImage"); if (isTainted || getSlabEnabled()) setModelVisibility(); isTainted = false; @@ -3325,7 +3326,6 @@ // initiated WITHIN this applet (not sent to it) // we append #NOSYNC; here so that the receiving applet does not attempt // to pass it back to us or any other applet. - //System.out.println(getHtmlName() + " evalstringquiet " + strScript); if (allowSyncScript && syncingScripts && strScript.indexOf("#NOSYNC;") < 0 ) syncScript(strScript + " #NOSYNC;", null); boolean isInterrupt = (strScript.length() > 0 && strScript.charAt(0) == '!'); @@ -6565,7 +6565,6 @@ boolean allButMe = (">".equals(applet)); boolean disableSend = ("~".equals(applet)); boolean justMe = disableSend || (".".equals(applet)); - //System.out.println(getHtmlName() + " syncscript " + script + " --- applet " + applet); //null same as ">" -- "all others" if (!justMe) { statusManager.syncSend(script, (isAll || allButMe ? null : applet)); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-06 15:14:32
|
Revision: 9565 http://jmol.svn.sourceforge.net/jmol/?rev=9565&view=rev Author: hansonr Date: 2008-07-06 08:14:19 -0700 (Sun, 06 Jul 2008) Log Message: ----------- version=11.5.45 # code: mouse manager refactoring Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Jmol.properties trunk/Jmol/src/org/jmol/viewer/MouseManager.java trunk/Jmol/src/org/jmol/viewer/PickingManager.java Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-06 14:06:10 UTC (rev 9564) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-06 15:14:19 UTC (rev 9565) @@ -3,6 +3,8 @@ version=11.5.45 +# code: mouse manager refactoring + # bug fix: picking off structure did not clear picking for set picking spin # bug fix: jmolScriptWait() improperly reporting to applet console # bug fix: too many messages to applet console Modified: trunk/Jmol/src/org/jmol/viewer/MouseManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-07-06 14:06:10 UTC (rev 9564) +++ trunk/Jmol/src/org/jmol/viewer/MouseManager.java 2008-07-06 15:14:19 UTC (rev 9565) @@ -55,6 +55,8 @@ private static final boolean logMouseEvents = false; + abstract boolean handleOldJvm10Event(Event e); + MouseManager(Viewer viewer) { this.viewer = viewer; Component display = viewer.getAwtComponent(); @@ -323,17 +325,35 @@ Logger.debug("mouseClicked(" + x + "," + y + "," + modifiers + ",clickCount=" + clickCount + ",time=" + (time - previousClickTime) + ")"); - if (!viewer.haveModelSet()) - return; + if (viewer.haveModelSet()) + checkPointOrAtomClicked(x, y, modifiers, clickCount); + } + + private void checkPointOrAtomClicked(int x, int y, int modifiers, int clickCount) { + // points are always picked up first, then atoms + // so that atom picking can be superceded by draw picking Point3f ptClicked = (drawMode ? null : viewer.checkObjectClicked(x, y, modifiers)); - int nearestAtomIndex = (drawMode || ptClicked != null ? -1 : viewer.findNearestAtomIndex(x, y)); - if (nearestAtomIndex >= 0 && !viewer.isInSelectionSubset(nearestAtomIndex)) + int nearestAtomIndex = (drawMode || ptClicked != null ? -1 + : viewer.findNearestAtomIndex(x, y)); + if (nearestAtomIndex >= 0 + && (clickCount > 0 || !measurementMode) + && !viewer.isInSelectionSubset(nearestAtomIndex)) nearestAtomIndex = -1; - if (clickCount == 1) + switch(clickCount) { + case 0: + // mouse move + setAttractiveMeasurementTarget(nearestAtomIndex, ptClicked); + return; + case 1: + // mouse single click mouseSingleClick(x, y, modifiers, nearestAtomIndex, ptClicked); - else if (clickCount == 2) + return; + case 2: + // mouse double click mouseDoubleClick(x, y, modifiers, nearestAtomIndex, ptClicked); + return; + } } private void mouseSingleClick(int x, int y, int modifiers, int nearestAtomIndex, @@ -355,14 +375,15 @@ - 50f, y * 100f / viewer.getScreenHeight() - 50f); return; } - viewer.atomPicked(nearestAtomIndex, modifiers); + if (ptClicked == null) + viewer.atomPicked(nearestAtomIndex, modifiers); if (measurementMode) addToMeasurement(nearestAtomIndex, ptClicked, false); break; case ALT_LEFT: case SHIFT_LEFT: case ALT_SHIFT_LEFT: - if (!drawMode && viewer.checkObjectClicked(x, y, modifiers) == null) + if (!drawMode && ptClicked == null) viewer.atomPicked(nearestAtomIndex, modifiers); break; } @@ -503,14 +524,8 @@ timeCurrent = mouseMovedTime = time; mouseMovedX = xCurrent = x; mouseMovedY = yCurrent = y; - if (measurementMode || hoverActive) { - Point3f ptClicked = viewer.checkObjectClicked(x, y, 0); - int atomIndex = viewer.findNearestAtomIndex(x, y); - if (!measurementMode && atomIndex >= 0 - && viewer.isInSelectionSubset(atomIndex)) - atomIndex = -1; - setAttractiveMeasurementTarget(atomIndex, ptClicked); - } + if (measurementMode || hoverActive) + checkPointOrAtomClicked(x, y, 0, 0); } final static float wheelClickFractionUp = 1.15f; @@ -540,40 +555,40 @@ } } - abstract boolean handleOldJvm10Event(Event e); - - // note that these two may *not* be consistent - // this term refers to the count of what has actually been selected +/* + * Note that measurementCountPlusIndices[0] and measurementCount + * may not be the same. measurementCount refers to the count of what has + * actually been selected. + * measurementCountPlusIndices[0] may be one higher if there is + * an attractive measurement target (cursor is hovering near an atom) + * + * With the addition of draw point-measurements (set drawPicking TRUE), + * the attractive target may be -1 + * + */ + private int measurementCount = 0; - // measurementCountPlusIndices[0] may be one higher if there is - // an attractive measurement target - // ie. the cursor is hovering near an atom private int[] measurementCountPlusIndices = new int[5]; - // the attractive target may be -1 private void setAttractiveMeasurementTarget(int atomIndex, Point3f ptClicked) { - if (ptClicked == null) { - if (measurementCountPlusIndices[0] == measurementCount + 1 - && measurementCountPlusIndices[measurementCount + 1] == atomIndex) { - viewer.refresh(0, "MouseManager:setAttractiveMeasurementTarget(" - + atomIndex + ")"); - return; - } - for (int i = measurementCount; i > 0; --i) + if (ptClicked == null) + for (int i = Math.max(measurementCountPlusIndices[0], measurementCount); i > 0; --i) if (measurementCountPlusIndices[i] == atomIndex) { viewer.refresh(0, "MouseManager:setAttractiveMeasurementTarget(" + atomIndex + ")"); return; } - } - int attractiveCount = measurementCount + 1; - measurementCountPlusIndices[0] = attractiveCount; - measurementCountPlusIndices[attractiveCount] = atomIndex; + setMeasurement(measurementCount + 1, atomIndex); // note that if ptClicked is not valid, then measurementCountPlusIndices // will be updated, and if it is valid, then it will still be updated viewer.setPendingMeasurement(measurementCountPlusIndices, ptClicked); } + private void setMeasurement(int i, int atomIndex) { + measurementCountPlusIndices[i] = atomIndex; + measurementCountPlusIndices[0] = i; + } + boolean haveMeasurementPoints; private void addToMeasurement(int atomIndex, Point3f ptClicked, @@ -594,15 +609,11 @@ if (measurementCount == 3 && !dblClick) return; haveMeasurementPoints |= (ptClicked != null); - measurementCountPlusIndices[++measurementCount] = (ptClicked != null ? -1 - : atomIndex); - measurementCountPlusIndices[0] = measurementCount; - if (measurementCount == 4) { + setMeasurement(++measurementCount, ptClicked != null ? -1 : atomIndex); + if (measurementCount == 4) toggleMeasurement(); - } else { + else viewer.setPendingMeasurement(measurementCountPlusIndices, ptClicked); - measurementCount = measurementCountPlusIndices[0]; - } } private void exitMeasurementMode() { Modified: trunk/Jmol/src/org/jmol/viewer/PickingManager.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/PickingManager.java 2008-07-06 14:06:10 UTC (rev 9564) +++ trunk/Jmol/src/org/jmol/viewer/PickingManager.java 2008-07-06 15:14:19 UTC (rev 9565) @@ -103,7 +103,8 @@ //if (pickingMode == JmolConstants.PICKING_MEASURE // || pickingStyleMeasure == JmolConstants.PICKINGSTYLE_MEASURE_ON) queuedAtomCount = 0; - return; + if (pickingMode != JmolConstants.PICKING_SPIN) + return; } String value; @@ -206,10 +207,9 @@ queuedAtomCount = 0; if (queuedAtomCount == 1 && queuedAtomIndexes[0] == atomIndex) break; - queueAtom(atomIndex); + if (atomIndex >= 0) + queueAtom(atomIndex); if (queuedAtomCount < 2) { - if (viewer.getSpinOn()) - viewer.script("spin off"); viewer.scriptStatus(queuedAtomCount == 1 ? GT._("pick one more atom in order to spin the model around an axis") : GT._("pick two atoms in order to spin the model around an axis")); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-10 19:07:13
|
Revision: 9581 http://jmol.svn.sourceforge.net/jmol/?rev=9581&view=rev Author: hansonr Date: 2008-07-10 12:07:02 -0700 (Thu, 10 Jul 2008) Log Message: ----------- version=11.5.46_dev # bug fix: array size limited Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-10 18:17:08 UTC (rev 9580) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-10 19:07:02 UTC (rev 9581) @@ -11575,57 +11575,57 @@ return false; } - boolean addX(boolean x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(boolean x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = (x ? Token.tokenOn : Token.tokenOff); return true; } - boolean addX(int x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(int x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = Token.intToken(x); return wasX = true; } - boolean addX(float x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(float x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = new Token(Token.decimal, new Float(x)); return wasX = true; } - boolean addX(String x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(String x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = new Token(Token.string, x); return wasX = true; } - boolean addX(String[] x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(String[] x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = new Token(Token.list, x); return wasX = true; } - boolean addX(Point3f x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(Point3f x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = new Token(Token.point3f, x); return wasX = true; } - boolean addX(Point4f x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(Point4f x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = new Token(Token.point4f, x); return wasX = true; } - boolean addX(BitSet x) throws ScriptException { - if (++xPt == maxLevel) + boolean addX(BitSet x) { + if (++xPt >= maxLevel) stackOverflow(); xStack[xPt] = new Token(Token.bitset, x); return wasX = true; @@ -11794,7 +11794,7 @@ //add the operator if possible - if (++oPt == maxLevel) + if (++oPt >= maxLevel) stackOverflow(); oStack[oPt] = op; return true; @@ -12294,7 +12294,7 @@ return addX(sList3); } - private boolean evaluateArray(Token[] args) throws ScriptException { + private boolean evaluateArray(Token[] args) { if (isSyntaxCheck) return addX(""); int len = args.length; @@ -12307,7 +12307,7 @@ return addX(array); } - private boolean evaluateMath(Token[] args, int tok) throws ScriptException { + private boolean evaluateMath(Token[] args, int tok) { if (tok == Token.quaternion || tok == Token.axisangle) { // quaternion(vector, theta) // quaternion(q0, q1, q2, q3) @@ -12371,7 +12371,7 @@ return false; } - private boolean evaluateRandom(Token[] args) throws ScriptException { + private boolean evaluateRandom(Token[] args) { if (args.length > 2) return false; if (isSyntaxCheck) @@ -12382,7 +12382,7 @@ return addX((float)(Math.random() * range) + lower); } - private boolean evaluateCross(Token[] args) throws ScriptException { + private boolean evaluateCross(Token[] args) { if (args.length != 2) return false; Token x1 = args[0]; @@ -12397,7 +12397,7 @@ return addX(new Point3f(a)); } - private boolean evaluateLoad(Token[] args) throws ScriptException { + private boolean evaluateLoad(Token[] args) { if (args.length != 1) return false; if (isSyntaxCheck) @@ -12427,7 +12427,7 @@ return addX(sb.toString()); } - private boolean evaluateData(Token[] args) throws ScriptException { + private boolean evaluateData(Token[] args) { if (args.length == 0 || args.length > 2) return false; if (isSyntaxCheck) @@ -12485,7 +12485,7 @@ return addX(getBitsetIdent(Token.bsSelect(x1), format, x1.value, true)); } - private boolean evaluateWithin(Token[] args) throws ScriptException { + private boolean evaluateWithin(Token[] args) { if (args.length < 1) return false; int i = args.length; @@ -13072,7 +13072,7 @@ return true; } - private boolean evaluateBoundBox(Token x2) throws ScriptException { + private boolean evaluateBoundBox(Token x2) { if (x2.tok != Token.bitset) return false; if (isSyntaxCheck) @@ -13176,8 +13176,13 @@ return null; } - void stackOverflow() throws ScriptException { - evalError(GT._("too many parentheses")); + void stackOverflow() { + oStack = (Token[]) ArrayUtil.doubleLength(oStack); + xStack = (Token[]) ArrayUtil.doubleLength(xStack); + maxLevel *= 2; + return; + // + //evalError(GT._("too many parentheses")); } } Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-10 18:17:08 UTC (rev 9580) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-10 19:07:02 UTC (rev 9581) @@ -2,6 +2,7 @@ # add it on line starting with # below the "version=..." line version=11.5.46_dev +# bug fix: array size limited # new feature: quaternion({atom expression}) -- returns calculated # frame based on quaternionFrame setting. # bug fix: drawhover not in state This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-15 14:06:13
|
Revision: 9594 http://jmol.svn.sourceforge.net/jmol/?rev=9594&view=rev Author: hansonr Date: 2008-07-15 07:05:48 -0700 (Tue, 15 Jul 2008) Log Message: ----------- 11.5.47 VERSION # bug fix: 11.5.46 broke standard "spin x 30" # new feature: draw ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # new feature: draw ARROW ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # # draws a circular arc or arrow around an axis defined by {pt1} and {pt2} # using {ptref} as a starting point (looking down the axis, angles # are measured in a clockwise manner, starting with the projected position # of {ptref} in a plane perpendicular to the axis. This is similar (but opposite) # to the way dihedral angles are indicated. # theta0 is the the offset angle from 0 # nDegrees is the number of degrees of arc to draw # fractionalOffset is the fraction of the distance from {pt1} to {pt2} for the # plane containing the arc. # # new feature: draw RAMACHANDRAN # draws phi and psi angles in the form of draw ARROW ARC # new feature: write RAMACHANDRAN draw Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-15 13:33:46 UTC (rev 9593) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-15 14:05:48 UTC (rev 9594) @@ -4988,8 +4988,8 @@ // rotate axisangle {0 1 0} 10 // rotate x 10 (atoms) # point-centered // rotate x 10 $object # point-centered - viewer.rotateAxisAngleAtCenter(points[0], rotAxis, degrees, endDegrees, - isSpin, bsAtoms); + viewer.rotateAxisAngleAtCenter(nPoints == 1 ? new Point3f(points[0]) : null, + rotAxis, degrees, endDegrees, isSpin, bsAtoms); return; } // rotate MOLECULAR Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-15 13:33:46 UTC (rev 9593) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-15 14:05:48 UTC (rev 9594) @@ -1,8 +1,9 @@ # Developers: to add a description of changes you have made, # add it on line starting with # below the "version=..." line -version=11.5.47_dev +version=11.5.47 +# bug fix: 11.5.46 broke standard "spin x 30" # new feature: draw ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # new feature: draw ARROW ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ha...@us...> - 2008-07-15 17:48:40
|
Revision: 9596 http://jmol.svn.sourceforge.net/jmol/?rev=9596&view=rev Author: hansonr Date: 2008-07-15 10:48:35 -0700 (Tue, 15 Jul 2008) Log Message: ----------- 11.5.47 VERSION (b) # bug fix: 11.5.46 broke standard "spin x 30" (b) Modified Paths: -------------- trunk/Jmol/src/org/jmol/viewer/Eval.java trunk/Jmol/src/org/jmol/viewer/Jmol.properties Modified: trunk/Jmol/src/org/jmol/viewer/Eval.java =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-15 15:54:38 UTC (rev 9595) +++ trunk/Jmol/src/org/jmol/viewer/Eval.java 2008-07-15 17:48:35 UTC (rev 9596) @@ -4977,20 +4977,21 @@ return; if (degrees == Float.MIN_VALUE) degrees = 10; - if (nPoints == 0) - points[0] = new Point3f(); if (isSelected && bsAtoms == null) bsAtoms = viewer.getSelectionSet(); if (nPoints < 2) { + if (!isMolecular) { // fixed-frame rotation // rotate x 10 # Chime-like // rotate axisangle {0 1 0} 10 // rotate x 10 (atoms) # point-centered // rotate x 10 $object # point-centered - viewer.rotateAxisAngleAtCenter(nPoints == 1 ? new Point3f(points[0]) : null, + viewer.rotateAxisAngleAtCenter(points[0], rotAxis, degrees, endDegrees, isSpin, bsAtoms); return; + } else if (nPoints == 0) { + points[0] = new Point3f(); } // rotate MOLECULAR // rotate MOLECULAR (atom1) @@ -5001,7 +5002,7 @@ } if (points[0].distance(points[1]) == 0) { points[1] = new Point3f(points[0]); - points[1].y += 1.0; + points[1].y -= 1.0; } viewer.rotateAboutPointsInternal(points[0], points[1], degrees, endDegrees, isSpin, bsAtoms); Modified: trunk/Jmol/src/org/jmol/viewer/Jmol.properties =================================================================== --- trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-15 15:54:38 UTC (rev 9595) +++ trunk/Jmol/src/org/jmol/viewer/Jmol.properties 2008-07-15 17:48:35 UTC (rev 9596) @@ -5,7 +5,7 @@ # bug fix: Removed stray semicolons from header script comments in webexport templates. They # were causing WYSIWG web editors to corrupt the code scripts. -# bug fix: 11.5.46 broke standard "spin x 30" +# bug fix: 11.5.46 broke standard "spin x 30" (b) # new feature: draw ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # new feature: draw ARROW ARC {pt1} {pt2} {ptref} {theta0, nDegrees, fractionalOffset} # This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |