From: Bob H. <ha...@us...> - 2006-02-22 04:38:51
|
Update of /cvsroot/jmol/Jmol/src/org/jmol/viewer In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv2918/src/org/jmol/viewer Modified Files: Viewer.java ModelManager.java Eval.java StatusManager.java Sticks.java Log Message: (1) returns to void applet.script() (2) adds Script applet.scriptNoWait() for testing (3) adds Script applet.scriptCheck() for testing (4) all set if we want to go to frame/model difference, but this is left as is for now. (5) adding NEW keyword in connect, to complement EXISTS -- this allows either choice -- only bonds made where no bond is present; only bonds made where bonds already present (6) adding colix in atomInfo, just for testing purposes. Index: Viewer.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Viewer.java,v retrieving revision 1.82 retrieving revision 1.83 diff -u -r1.82 -r1.83 --- Viewer.java 20 Feb 2006 03:41:00 -0000 1.82 +++ Viewer.java 22 Feb 2006 04:38:44 -0000 1.83 @@ -1851,13 +1851,11 @@ public String evalStringWait(String strScript) { if (strScript == null) return null; - getProperty("String", "jmolStatus", "all"); - if (!getEval().loadScriptString(strScript, false)) - return eval.getErrorMessage(); - eval.run(); - String str = (String) getProperty("JSON", "jmolStatus", "all"); - getProperty("String", "jmolStatus", "none"); - return str; + String statusList = statusManager.statusList; + getProperty("String", "jmolStatus", statusList); + if (getEval().loadScriptString(strScript, false)) + eval.run(); + return (String) getProperty("JSON", "jmolStatus", statusList); } int iscript = 0; @@ -1869,6 +1867,12 @@ return strError; } + public String scriptCheck(String script) { + iscript++; + String strError = evalString(script); + return strError; + } + public String scriptWait(String script) { iscript++; String strInfo = evalStringWait(script); @@ -2012,7 +2016,7 @@ void setShapeSize(int shapeID, int size) { modelManager.setShapeSize(shapeID, size, selectionManager.bsSelection); - refresh(0, "Viewer:setShapeSize()"); + refresh(0, "Viewer:setShapeSize(" +shapeID + "," + size + ")"); } int getShapeSize(int shapeID) { Index: ModelManager.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/ModelManager.java,v retrieving revision 1.34 retrieving revision 1.35 diff -u -r1.34 -r1.35 --- ModelManager.java 20 Feb 2006 03:41:01 -0000 1.34 +++ ModelManager.java 22 Feb 2006 04:38:44 -0000 1.35 @@ -646,6 +646,7 @@ info.put("visible", new Boolean(getAtomVisibility(i))); info.put("spacefill", new Integer(atom.madAtom >> 3)); info.put("color", viewer.getHexColorFromIndex(atom.colixAtom)); + info.put("colix", new Integer(atom.colixAtom)); info.put("translucent", new Boolean(atom.isTranslucent())); info.put("formalCharge", new Integer(atom.getFormalCharge())); info.put("partialCharge", new Float(atom.getPartialCharge())); Index: Eval.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Eval.java,v retrieving revision 1.94 retrieving revision 1.95 diff -u -r1.94 -r1.95 --- Eval.java 19 Feb 2006 18:42:24 -0000 1.94 +++ Eval.java 22 Feb 2006 04:38:44 -0000 1.95 @@ -455,8 +455,10 @@ show(); break; case Token.frame: + frame(1, false); + break; case Token.model: - frame(); + frame(1, true); break; case Token.font: font(); @@ -2413,7 +2415,7 @@ showAnimation(); break; case Token.frame: - frame(2); + frame(2, false); break; case Token.mode: animationMode(); @@ -2429,11 +2431,8 @@ } } - void frame() throws ScriptException { - frame(1); - } - - void frame(int offset) throws ScriptException { + void frame(int offset, boolean useModelNumber) throws ScriptException { + useModelNumber = true; //for now -- as before -- remove to implement frame/model difference if (statementLength <= offset) badArgumentCount(); if (statement[offset].tok == Token.hyphen) { @@ -2445,8 +2444,8 @@ viewer.setAnimationPrevious(); return; } - int modelNumber = -1; - int modelNumber2 = -1; + int frameNumber = -1; + int frameNumber2 = -1; boolean isPlay = false; boolean isRange = false; while (offset < statementLength) { @@ -2458,18 +2457,16 @@ case Token.none: break; case Token.integer: - if(modelNumber == -1) { - modelNumber = statement[offset].intValue; + if(frameNumber == -1) { + frameNumber = statement[offset].intValue; } else { - modelNumber2 = statement[offset].intValue; + frameNumber2 = statement[offset].intValue; } break; case Token.play: - //System.out.println("play"); isPlay = true; break; case Token.range: - //System.out.println("play"); isRange = true; break; default: @@ -2478,19 +2475,19 @@ } if (offset == statementLength - 1) { - int modelIndex = viewer.getModelNumberIndex(modelNumber); + int modelIndex = (useModelNumber ? viewer.getModelNumberIndex(frameNumber) : frameNumber - 1); if(! isPlay && ! isRange || modelIndex >= 0) { viewer.setDisplayModelIndex(modelIndex); } if(isPlay || isRange) { - if (isRange || modelNumber2 >=0) { - int modelIndex2 = viewer.getModelNumberIndex(modelNumber2); + if (isRange || frameNumber2 >=0) { + int modelIndex2 = (useModelNumber ? viewer.getModelNumberIndex(frameNumber2) : frameNumber2 - 1); //System.out.println("isPlay " + modelIndex +" "+ modelIndex2); viewer.setAnimationDirection(1); viewer.setAnimationRange(modelIndex, modelIndex2); } - if (! isRange) + if (isPlay) viewer.resumeAnimation(); } } @@ -3617,9 +3614,9 @@ viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, "connectBondOrder", new Float(1.0)); viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, - "connectDynamic", new Float(1.0)); + "connectExistant", new Boolean(true)); viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, - "connectDynamic", new Float(1.0)); + "connectNew", new Boolean(true)); viewer.setShapeProperty(JmolConstants.SHAPE_STICKS, "sourceSet", null); @@ -3659,9 +3656,12 @@ cmd.equals("hbond")) { propertyName = "connectBondOrder"; propertyValue = cmd; - } else if (cmd.equals("static")) { - propertyName = "connectStatic"; - propertyValue = new Boolean(true); + } else if (cmd.equals("exists")) { + propertyName = "connectNew"; + propertyValue = new Boolean(false); + } else if (cmd.equals("new")) { + propertyName = "connectExistant"; + propertyValue = new Boolean(false); } else { unrecognizedSubcommand(); } Index: StatusManager.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/StatusManager.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- StatusManager.java 19 Feb 2006 19:40:31 -0000 1.10 +++ StatusManager.java 22 Feb 2006 04:38:44 -0000 1.11 @@ -51,6 +51,7 @@ Hashtable messageQueue = new Hashtable(); int statusPtr = 0; static int MAXIMUM_QUEUE_LENGTH = 16; + String compileError; StatusManager(Viewer viewer) { this.viewer = viewer; @@ -128,18 +129,18 @@ jmolStatusListener.notityNewDefaultModeMeasurement(count, status + ": " + strMeasure); } - synchronized void setStatusScriptStarted(int iscript, String script, String strError) { - if (strError == null) - strError = GT._("Jmol executing script ..."); + synchronized void setStatusScriptStarted(int iscript, String script, String compileError) { + this.compileError = compileError; + if (compileError == null) + compileError = GT._("Jmol executing script ..."); setStatusChanged("scriptStarted", iscript, script, false); - setStatusChanged("scriptMessage", 0, strError, false); + setStatusChanged("scriptMessage", 0, compileError, false); if (jmolStatusListener != null) - jmolStatusListener.notifyScriptStart(strError, script); + jmolStatusListener.notifyScriptStart(compileError, script); } synchronized void setStatusScriptTermination(String statusMessage, int msWalltime){ - if(statusMessage == null) - statusMessage = "Jmol script completed"; + statusMessage = "Jmol script completed" + (compileError == null ? "" : ": " + compileError); setStatusChanged("scriptTerminated", msWalltime, statusMessage, false); if (jmolStatusListener == null) return; Index: Sticks.java =================================================================== RCS file: /cvsroot/jmol/Jmol/src/org/jmol/viewer/Sticks.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- Sticks.java 18 Feb 2006 06:18:40 -0000 1.14 +++ Sticks.java 22 Feb 2006 04:38:44 -0000 1.15 @@ -35,7 +35,8 @@ float maxBondingDistance; float minBondingDistance; short order; - boolean isConnectStatic; + boolean iConnectNew; + boolean iConnectExistant; BitSet bsSource; void setSize(int size, BitSet bsSelected) { @@ -71,15 +72,13 @@ } return; } - - //sorry; I couldn't figure out the type-casting business! -BH - if ("connectStatic" == propertyName) { - isConnectStatic = true; + if ("connectNew" == propertyName) { + iConnectNew = ((Boolean)value).booleanValue(); return; } - if ("connectDynamic" == propertyName) { - isConnectStatic = false; + if ("connectExistant" == propertyName) { + iConnectExistant = ((Boolean)value).booleanValue(); return; } @@ -127,7 +126,7 @@ BitSet bsTarget = (BitSet)value; if(minBondingDistance < 0.0F) minBondingDistance = 0.0F; - makeConnections(minBondingDistance, maxBondingDistance, (bsSource != null ? bsSource : bsSelected), bsTarget, order, isConnectStatic); + makeConnections(minBondingDistance, maxBondingDistance, (bsSource != null ? bsSource : bsSelected), bsTarget, order, iConnectExistant, iConnectNew); return; } } @@ -151,7 +150,7 @@ void setTranslucencyBond(boolean isTranslucent, short bondTypeMask, BitSet bs) { - System.out.println("setTranslucencyBond " + isTranslucent); + //System.out.println("setTranslucencyBond " + isTranslucent); BondIterator iter = frame.getBondIterator(bondTypeMask, bs); while (iter.hasNext()) iter.next().setTranslucent(isTranslucent); @@ -173,13 +172,13 @@ frame.deleteBonds(bsDelete); } - void makeConnections(float minDistance, float maxDistance, BitSet bsA, BitSet bsB, short order, boolean isStatic) { + void makeConnections(float minDistance, float maxDistance, BitSet bsA, BitSet bsB, short order, boolean iConnectExistant, boolean iConnectNew) { int atomCount = frame.atomCount; Atom[] atoms = frame.atoms; int nbonds = 0; boolean bondmode = viewer.getBondSelectionModeOr(); viewer.setBondSelectionModeOr(false); - + //System.out.println(iConnectNew + "," + iConnectExistant); float minDistanceSquared = minDistance * minDistance; float maxDistanceSquared = maxDistance * maxDistance; //System.out.println("distances "+minDistance+" "+maxDistance); @@ -195,11 +194,15 @@ if ( iB == iA || (frame.getAtomAt(iA).getModelIndex() != frame.getAtomAt(iB).getModelIndex()) || (iB < iA && bsA.get(iB) && bsB.get(iA)) - || (isStatic && !atomA.isBonded(atoms[iB])) - ) + ) continue; - //System.out.println(iA+" "+iB+" continuing"); Atom atomB = atoms[iB]; + boolean isBonded = atomA.isBonded(atomB); + if (isBonded && !iConnectExistant + || !isBonded && !iConnectNew + ) + continue; + //System.out.println(iA+" "+iB+" continuing"); float distanceSquared = pointA.distanceSquared(atomB.point3f); if (distanceSquared > minDistanceSquared && distanceSquared <= maxDistanceSquared) { BitSet bsTwoAtoms=new BitSet(); @@ -216,7 +219,7 @@ } } } - System.out.println("Sticks.java::makeConnections: " + nbonds + " bonds " + (order == 0 ? " deleted":" formed or modified")); + viewer.scriptStatus(nbonds + " bonds " + (order == 0 ? " deleted":" formed or modified")); viewer.setBondSelectionModeOr(bondmode); } } |